main
feat(app): user-actionable runtime error panel (minimal slice) (#3983)
feat(theme): runtime theming — semantic tokens, Theme Studio, presets (#4130)
feat(voice): global push-to-talk hotkey (#3090) (#3349)
feat(chat): add image attachment support to composer (#2676)
fix(embeddings): auto-detect custom OpenAI-compatible endpoint dimension at verification (#4056) (#4160)
feat: move feedback to sidebar footer, rename World card, fix Clear App Data scoping (#3945)
fix(agent): remove welcome agent flow (#2517)
feat(mascot): render dynamic backend Rive mascots with version cache (#4131)
fix(channels): repair Discord & Telegram messaging end-to-end (#3712, #3763) (#3794)
feat(mascot): replace SVG animations with Rive renderer (#2659)
fix(app): guard CEF IPC fallback sync throw via safeInvoke wrapper (Sentry TAURI-REACT-7 + 6) (#2619)
Render agent thoughts as markdown and fix tool-arg chip alignment in the process timeline (#4156)
feat(agent): track session token costs (#4136)
feat(chat): human-language agent processing — server tool labels + persisted thoughts (#4054)
feat(tokenjuice): Headroom-inspired content router, compressors, CCR + savings (#4123)
Feat/refactor UI code (#52)
feat(announcements): show latest announcement once on harness init (#4125)
fix(auth): handle legacy /auth web callback route (#3800)
feat(settings): present desktop Settings as a full-app modal overlay (#4002)
feat(ios): iOS client with QR pairing, E2E-encrypted tunnel, and push-to-talk (#1420)
fix(chat): decouple provider webviews from thread routes (#3896)
fix(chat): hide image attachment button until backend supports it (#3205) (#3212)