Highlights
Conversation Header & Mobile Polish
- Refreshed the conversation header on desktop: model selector moved to the right, agent logo sits next to the title editor, and team chats now show a Peoples icon. Model selectors (ACP & Aion CLI) gained a dropdown chevron so they look and feel consistent.
- Mobile experience is now noticeably more compact: tighter message bubbles (14px), shorter sendbox, ellipsis instead of marquee on the model pill, slimmer titlebar (no + button), and sidebar/history actions are always visible — no hover required.
- WebUI users now see the "Work in project" footnote on the new conversation page and can attach a workspace to fresh conversations, just like the desktop app.
Reliability & Crash Fixes
- The desktop and WebUI boot flow now stops cleanly when the aioncore backend fails to start, instead of cascading into confusing
__backendPort unseterrors. A startup failure dialog with an optional diagnostic report is shown so problems are easier to triage. - Packaged builds no longer crash from
EPIPEerrors when console output is piped to closed stdout/stderr. File logging stays on so local diagnostics are unaffected. - Backend launch failures are now captured as dedicated Sentry events with stage, port, paths, and stdout/stderr tails so we can actually see what went wrong.
Bug Fixes
- Fixed English text rendering with thin, hard-to-read weight on systems that have Inter installed — Arco's font stack is now overridden to use system fonts.
- Fixed the bottom ~8px of the Base URL input in the "Add Custom Platform" modal not accepting clicks because the toggle below was overlapping it.
- Switching conversations mid-upload now properly aborts the previous conversation's in-flight uploads, so you no longer see stray progress bars or thumbnails in the new conversation.
- Fixed a renderer crash when filtering workspace
@mentions against malformed file entries. - ACP conversation hydration no longer surfaces backend
Failed to fetchas an unhandled rejection; running/processing state resets cleanly when the local backend is temporarily unavailable. - Opening a stale (deleted) conversation no longer triggers an unhandled 404 promise rejection — the renderer treats it as a missing conversation while still surfacing real backend errors.
What's Changed
- chore(docs): update WeChat group QR code to wx-9 by @IceyLiu in #3006
- fix(guid): show workspace footnote in WebUI by @kaizhou-lab in #3005
- fix(conversation): handle stale conversation lookups by @piorpua in #3009
- fix(chat): handle backend fetch failures in acp hydration by @piorpua in #3015
- fix(chat): guard workspace mention search fields by @piorpua in #3014
- fix(startup): report backend launch failures by @piorpua in #3020
- fix(styles): override Arco font-family to prevent Inter from rendering thin text by @ringringlin in #3013
- fix(settings): unblock the bottom of the Base URL input in AddPlatformModal (ELECTRON-1K4) by @TCP404 in #3017
- Handle backend startup failures by @piorpua in #3022
- feat: conversation header polish (desktop & mobile) by @IceyLiu in #3021
- Fix packaged console logging EPIPE crashes by @piorpua in #3023
- fix(upload): abort in-flight uploads when switching conversations (ELECTRON-1K2) by @TCP404 in #3019
- chore: bump version to 2.1.2 and aioncore to v0.1.11 by @piorpua in #3025
Full Changelog: v2.1.1...v2.1.2