What's Changed
- test: simplify non-collab coverage and remove obsolete seams (#1422)
- fix: keep OpenCode v2 credentials for title generation (#1423)
- refactor: move Collab into a standalone plugin (#1421)
- fix: align provider model and reasoning settings (#1417)
- chore: speed up production builds (#1419)
- refactor: preserve acronym casing in filenames and identifiers (#1416)
- fix: disable ticket suggestions when collab mode is off (#1415)
- test: derive Collab fixture dates from the current run (#1414)
- fix(grok): keep token-streamed replies in one live message (#1413)
- test: run tests on one clock instead of the real date and tight time limits (#1411)
- refactor: move ClaudianProviderHost into src/composition (#1408)
- refactor: keep the shared FeatureHost contract free of chat types (#1410)
- refactor: move Collab lifecycle wiring into src/composition (#1406)
- test: pin the clock in authority-transfer tests with hard-coded expiries (#1409)
- docs: correct stale and duplicated agent guide rules (#1407)
- fix: wait for OpenCode activation before reading models (#1405)
- refactor: move session metadata loading out of main.ts (#1403)
- refactor: share one execution event queue across providers (#1402)
- test: pin the clock in an authority-transfer recovery test (#1404)
- fix: share OpenCode V2 server for discovery and chat (#1401)
- feat: use reported context windows and Claude effort levels (#1399)
- feat(chat): quote selected message text into the composer (#1400)
- feat: unify provider model catalog behavior and ownership (#1396)
- fix: re-enable spellcheck in the chat composer (#1394)
- feat: discover Claude models through the SDK (#1391)
- feat: show reload-safe main-agent response throughput (#1389)
- fix: discover Grok reasoning efforts before chat starts (#1388)
- docs: clarify and streamline repository agent instructions (#1387)
Full Changelog: 2.3.3...2.3.4