main
feat(artifacts): Save-As dialog + in-progress wiring + failed-card retry (#3162) (#4127)
fix(chat): decouple provider webviews from thread routes (#3896)
feat(ui): add taskbar agent profile switcher (#3456)
feat(announcements): show latest announcement once on harness init (#4125)
feat(chat): Files in this chat — persistent per-chat artifact panel (#3024) (#3026)
feat(backend_meet): integrate with backend gmeet bot via Socket.IO (#3182)
fix(meet): block join modal until backend admits + hide wake-phrase field (#3597)
feat(channels/yuanbao): add Yuanbao channel provider (#2600)
feat(agent): track session token costs (#4136)
feat(app): desktop companion UI — Tauri bridge, overlay, settings (#1909) (#2246)
fix(app): split connectivity into internet/core/backend channels (#1527) (#1727)
fix: clear stale backend errors while reconnecting (#2616)
fix(app): preserve local runtime choice on rehydrate (#2529)
fix(auth): offer "clear app data" recovery when login decryption fails (#1652)
IA revamp: restructure app navigation and settings for everyday users (phased) (#3518)
Feat/refactor UI code (#52)
feat(theme): runtime theming — semantic tokens, Theme Studio, presets (#4130)
feat(ui): TwoPanelLayout shell for Settings, Brain, Connections, Chat (#3643)
Add German locale support (#2378)
feat(i18n): add Polish (pl) locale at ~91% coverage (#2731)
feat(mascot): replace SVG animations with Rive renderer (#2659)
feat(meetings): calendar-triggered auto-join prompt + Meeting Assistant settings UI (#3721)
feat(settings): add Persona Pack v1 (closes #2345) (#2558)
fix(auth): close cross-user state + CEF cookie leak (#900) (#1007)
feat(voice): global push-to-talk hotkey (#3090) (#3349)
feat(e2e): complete E2E v2 suite — 66 specs, orchestrator, bug fixes (#2353)
feat(app): user-actionable runtime error panel (minimal slice) (#3983)
fix: harden token handling and key rotation logs (#1999)