chore: sync local working copy as of 2026-08-15
The Gitea repo was initialised from an earlier snapshot, so main and the machine this runs on had drifted apart in 153 files before any UI work started. This commit brings the branch up to the local tree as it stood on 2026-08-15 21:31 (from cowork_local.7z), so the redesign that follows shows up as its own reviewable diff instead of being mixed in with the pre-existing divergence. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -18,7 +18,7 @@ from . import APP_NAME, DISPLAY_NAME, __version__
|
||||
from .config import PROVIDER_LABELS, AppConfig
|
||||
from .i18n import LANGUAGE_SHORT, LANGUAGES, get_language, on_language_changed, set_language, tr
|
||||
from .state import AppContext
|
||||
from .theme import ACCENT, stylesheet
|
||||
from .theme import current_palette, set_active_theme, stylesheet
|
||||
from .core.task_scheduler import TaskScheduler
|
||||
from .ui.cowork_tab import CoworkTab
|
||||
from .ui.dashboard_tab import DashboardTab
|
||||
@@ -64,10 +64,12 @@ class _Toast(QLabel):
|
||||
self._timer.timeout.connect(self.hide)
|
||||
|
||||
def show_message(self, text: str, ok: bool = True, ms: int = 4500) -> None:
|
||||
bg = "#1f9d63" if ok else "#e5484d"
|
||||
p = current_palette()
|
||||
bg = p.success_soft if ok else p.danger_soft
|
||||
fg = p.success if ok else p.danger
|
||||
self.setStyleSheet(
|
||||
f"#toast {{ background:{bg}; color:white; border-radius:12px;"
|
||||
f" padding:10px 16px; font-weight:600; }}")
|
||||
f"#toast {{ background:{bg}; color:{fg}; border:1px solid {fg};"
|
||||
f" border-radius:{p.radius}px; padding:10px 16px; font-weight:600; }}")
|
||||
self.setText(text)
|
||||
self.adjustSize()
|
||||
self.move(14, 14) # top-left of the window
|
||||
@@ -253,8 +255,8 @@ class MainWindow(QMainWindow):
|
||||
# widget sits at the right end and is never cleared by showMessage (which
|
||||
# writes on the left).
|
||||
self._credit = QLabel(tr("app.credit"))
|
||||
self._credit.setObjectName("hint")
|
||||
self._credit.setStyleSheet("color: rgba(140,146,152,0.85); padding: 0 10px;")
|
||||
self._credit.setObjectName("faint")
|
||||
self._credit.setStyleSheet("padding: 0 10px;")
|
||||
self.statusBar().addPermanentWidget(self._credit)
|
||||
self._restore_sessions()
|
||||
self._setup_tray()
|
||||
@@ -531,9 +533,8 @@ class MainWindow(QMainWindow):
|
||||
def _build_topbar(self) -> QWidget:
|
||||
bar = QWidget()
|
||||
bar.setObjectName("topbar")
|
||||
# Transparent: the logo/provider/language text sits directly on the
|
||||
# window background, no separate card box behind it.
|
||||
bar.setStyleSheet("#topbar { background: transparent; border: none; }")
|
||||
# Styled centrally (see theme._TEMPLATE): flat, with a single hairline
|
||||
# separating it from the content below — no card box behind it.
|
||||
h = QHBoxLayout(bar)
|
||||
h.setContentsMargins(16, 10, 12, 10)
|
||||
h.setSpacing(10)
|
||||
@@ -548,7 +549,7 @@ class MainWindow(QMainWindow):
|
||||
self.logo_img.setVisible(False)
|
||||
h.addWidget(self.logo_img)
|
||||
self.logo_lbl = QLabel(tr("app.logo"))
|
||||
self.logo_lbl.setStyleSheet(f"font-weight:800; font-size:16px; color:{ACCENT};")
|
||||
self.logo_lbl.setObjectName("brand") # styled centrally — see theme._TEMPLATE
|
||||
h.addWidget(self.logo_lbl)
|
||||
h.addStretch(1)
|
||||
|
||||
@@ -738,6 +739,7 @@ class MainWindow(QMainWindow):
|
||||
def _apply_theme(self) -> None:
|
||||
app = QApplication.instance()
|
||||
if app:
|
||||
set_active_theme(self.ctx.config.theme)
|
||||
app.setStyleSheet(stylesheet(self.ctx.config.theme))
|
||||
# Re-apply theme styles to chat bubbles so they adapt to the new theme.
|
||||
self.cowork.apply_theme()
|
||||
@@ -843,6 +845,7 @@ def run(argv: List[str] | None = None) -> int:
|
||||
ctx.config.save()
|
||||
except Exception: # noqa: BLE001 - seeding must never block startup
|
||||
pass
|
||||
set_active_theme(ctx.config.theme)
|
||||
app.setStyleSheet(stylesheet(ctx.config.theme))
|
||||
|
||||
# Follow the OS light/dark scheme live when theme is "Auto (System)".
|
||||
@@ -858,6 +861,7 @@ def run(argv: List[str] | None = None) -> int:
|
||||
|
||||
def _reapply_system_theme(*_a):
|
||||
if ctx.config.theme == "system":
|
||||
set_active_theme("system")
|
||||
app.setStyleSheet(stylesheet("system"))
|
||||
win.cowork.apply_theme()
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user