What's Changed
- fix(api): resolve project MCPs in external proxy by @chocobar in #2947
- feat(frontend): enhance project chat sidebar workflows by @nessie993 in #2948
- fix(api): recover missing Claude ACP threads by @chocobar in #2949
- feat: add persistent spec task terminal drawer by @nessie993 in #2951
- feat(frontend): add workspace inspector and review diffs by @nessie993 in #2952
- fix(spec-task): reconcile a task whose agent resumed work outside orchestration by @nessie993 in #2955
- feat(workspace): add inline task editing and chat renaming by @nessie993 in #2957
- fix(api): drop duplicate spec-task reconcile file left by a merge by @lukemarsden in #2958
- feat(frontend): improve agent chat and task detail workspaces by @nessie993 in #2960
- fix(frontend): show GitHub topic events by @chocobar in #2962
- refactor(api): remove unused external agent endpoints by @nessie993 in #2963
- Let scheduled runs reach implementation, and explain blocked pushes honestly by @lukemarsden in #2964
- Fix black/frozen desktop video stream and make render failures visible by @lukemarsden in #2929
- fix(agent): always set type:object on MCP tool parameters by @binocarlos in #2751
- fix(api): resolve rate limiter deadlock on provider 429 by @nessie993 in #2967
- fix(api): surface agent inference errors instead of returning empty 200 by @nessie993 in #2968
- fix(api): stop duplicate chat_message forking a second Zed thread by @nessie993 in #2969
- feat: unify agent management and sandbox previews by @nessie993 in #2970
- fix(frontend): refine new agent dialog layout by @nessie993 in #2971
- feat(frontend): add collapsible chat sidebar by @nessie993 in #2972
- fix(frontend): restore spec task agent selector by @nessie993 in #2973
- ci: gate zed --headless on every push with a cheap smoke test by @nessie993 in #2975
- feat(specs): add task execution controls by @nessie993 in #2976
- feat(usage): polish organization usage overview by @nessie993 in #2974
- fix(org): refresh stale MCP service credentials by @chocobar in #2979
- fix(org): avoid bootstrap MCP validation deadlock by @chocobar in #2981
- fix(gc): honour Keep Alive, widen grace to 30d, pin Zed missing-thread auto-repair by @lukemarsden in #2980
- feat(billing): meter spec-task desktops as sandbox rows by @nessie993 in #2978
- feat(frontend): add project chat focus filter by @nessie993 in #2984
- refactor: remove question sets feature by @nessie993 in #2986
- fix(org): route worker MCP through embedded API by @chocobar in #2985
- Remove prompt library by @nessie993 in #2987
- fix(docker): run controlplane under tini so orphaned git processes get reaped by @nessie993 in #2988
- fix(frontend): make spec task toolbar fit narrow panels by @nessie993 in #2989
- fix(store): return org-scoped provider endpoints in ListProviderEndpoints by @nessie993 in #2990
- fix(api): reject empty desktop session IDs by @chocobar in #2992
- fix(cli): honour spectask --name and show real agent names by @lukemarsden in #2994
- fix(cli): stop spectask send re-posting the message on timeout by @lukemarsden in #2995
- Authorize MCP app access via RBAC, and add browser-safe embed API keys by @binocarlos in #2983
- Serve empty data to embed keys instead of breaking the embed page by @binocarlos in #2996
- Don't redirect out of an embed to onboarding or /orgs by @binocarlos in #2997
- feat(onboarding): streamline project setup and provider configuration by @nessie993 in #2993
- feat(projects): add repositories settings tab by @nessie993 in #2998
- feat(org): add durable agent activation delivery by @chocobar in #2965
- feat(chat): add workspace references and agent plans by @nessie993 in #3001
- fix(frontend): isolate plans between agent turns by @nessie993 in #3002
- fix(billing): avoid summing streaming usage snapshots by @nessie993 in #3005
- fix(usage): preserve managed provider attribution by @nessie993 in #3006
- fix(zed): use provider-advertised context limits by @nessie993 in #3007
- Pass the acting session through the external MCP proxy by @binocarlos in #3008
- Let an embedder pin the theme with ?theme= by @binocarlos in #3010
- fix(preview): preserve sandbox browser paths by @nessie993 in #3011
- chore(sandbox): pin Zed E2E fixture fix by @chocobar in #3012
- fix(frontend): show only agents in fresh org charts by @chocobar in #3013
- feat(workspace): edit and comment on workspace files by @nessie993 in #3015
- Propagate inference session header by @nessie993 in #3017
- Let embed keys send messages and watch the desktop, bounded by the key rather than the handler by @binocarlos in #3016
- feat(agents): add opencode as a code agent runtime by @nessie993 in #3018
- feat(usage): add task filtering and attribution by @nessie993 in #3019
- feat(git): show repository entry timestamps by @chocobar in #3020
- feat(session): add execution controls and interrupt to chat composer by @nessie993 in #3021
- fix(frontend): persist manual color scheme by @chocobar in #3014
- fix(org): recover failed GitHub webhook deliveries by @chocobar in #3023
- test(e2e): gate lifecycle with scripted ACP agent by @chocobar in #3022
- fix(frontend): group tools across hidden reasoning by @nessie993 in #3024
- fix(org): preserve repositories on agent deletion by @chocobar in #3025
Full Changelog: 2.12.2...2.12.3