What's Changed
- test: remove timing races from native integration tests (#1747)
- fix(pi): preserve completed turns after hidden triggers (#1733)
- fix(codex): preserve prototype-named model aliases (#1736)
- fix(process): preserve explicit proto environment entries (#1744)
- test(chat): use shared clock for timestamp fixtures (#1743)
- docs: correct model discovery instructions (#1742)
- fix(settings): declare snippet actions as non-submit buttons (#1740)
- test(chat): colocate integration suites with their owners (#1739)
- fix(chat): refresh refined tool header names (#1738)
- fix(storage): retain POSIX backslashes in history paths (#1737)
- test: register Codex history fixture consumers for affected runs (#1730)
- fix: report unsupported image batches only once (#1729)
- docs: match source checkout directory to plugin ID (#1728)
- fix: preserve surrogate pairs in fallback conversation titles (#1727)
- feat(chat): allow /side while the main turn is running (#1735)
- test: stub login-shell PATH probe in plugin integration tests (#1734)
- fix: apply per-session system prompts in OpenCode and DeepSeek (#1731)
Full Changelog: 2.3.27...2.3.28