Skip to content

v2.3.1 — Browser GUI fully wired, streaming fix, brand-neutral themes

Choose a tag to compare

@ilyaosovskoi ilyaosovskoi released this 15 Aug 20:08
· 30 commits to main since this release

v2.3.1 — Browser GUI fully wired, streaming fix, brand-neutral themes

🐛 Fixed

  • TUI streaming duplication — every streamed token chunk wrote a new log line (RichLog._children doesn't exist in Textual 8.x); a stream of N chunks produced N duplicate entries and the final answer was never rendered as Markdown. Streaming now updates one live entry in place and renders the final Markdown answer.
  • Browser GUI dead endpoints — ~30 controls called HTTP routes that had no backend handler and silently failed with {"error": "not found"}: the /context, /clear, /compact, /pin, /unpin, /reload-context slash commands, the Collective Memory (memory file) editor, Apply/Copy file buttons, the file tree panel, Settings save, Stop generation, diff-review responses, snippets, pricing, and more are now implemented and reach the shared agent runtime.
  • Stop could kill the server — the chat stream shared the server-shutdown event; pressing Stop in the GUI previously set the shutdown flag. Chat streaming now has its own cancel event.
  • Checkpoint path escaperewind() now validates manifest paths against the workspace before restoring/deleting files (defense-in-depth against hand-edited manifests with absolute paths or ..).
  • Version label sync — all surfaces now report v2.3.1.

✨ Improved

  • Brand-neutral themes — SpaceX/Cursor/Apple styling renamed to Noir and Flat; saved themes migrate automatically; third-party brand wording removed from the UI.
  • Minimal motion — TUI modals fade in with a gentle rise, chat scrolls smoothly, the input glows while the agent works; the GUI got press feedback, step glide-in, message hover lift, and a generating glow on the status dot (all respecting prefers-reduced-motion).
  • README and architecture docs updated.

🧪 Tests

246 passing (added regression suites for streaming, checkpoint path escape, and the extended API endpoints).