Repository navigation
Reado v1.11.0
Added
- The agent tells Reado when it's done, instead of Reado guessing. A new
session_doneMCP tool: the agent calls it as the last thing in a turn —
finished, blocked or failed — and Reado raises the notification and the
completion chime then. Agents launched from Reado are told to do this in
their system prompt (where the CLI has a flag for it; Claude Code today), and
every MCP client also gets the rule through the server's own instructions.
Fixed
- The window no longer grinds to a halt while an agent works. Two causes, both
measured on a live session: the terminal repainted a decoration (and a marker)
for every clickablepath:linein the viewport on every xterm render — 210 of
them for 20 streamed lines — which retained about 7KB of web-process memory per
line of agent output; it now paints once the output settles. And re-indexing one
changed file for semantic search ran on the UI thread with an fsync per indexed
line, plus a symbol walk of the whole project per file, so every file the agent
wrote froze the window for a second or more; it is now one transaction, this
file's symbols only, and off the main thread. - A dev server in the project no longer locks the window up. The watcher read
the root.gitignoreonly, while the file tree walks with theignorecrate
and honours one at any depth — so in a monorepo that keeps its rules in
app/.gitignore, Vite rewritingapp/node_modules/.vite/depsreached the UI as
a thousandfile-changedevents (95% of every event in a two-hour session),
each one a re-anchor, a re-index and agit statuson the main thread. Nested
ignore files are now honoured,node_modulesis ignored outright, and
collecting the ignore rules moved off the UI thread with the rest of the watcher
setup. git statusand the repo info no longer run on the UI thread, where they
were 40 of the 130 seconds a locked-up session spent inside blocking commands —
the Source Control panel polls both every 4 seconds. Reado's git reads also pass
--no-optional-locksnow, so a background poll can't takeindex.lockout from
under the git you are running in the terminal.- Language servers now start in a project whose path contains a dot. The
connection id doubles as a Tauri event name, which accepts only
[A-Za-z0-9-/:_]: under a path like~/code/pi.frontend-appthe subscription
threw after the server had spawned, so every language server was started,
never listened to, and respawned every few seconds — no diagnostics, no hovers,
and an unhandled rejection each round. - Reado no longer edits
.mcp.jsonevery time you open the project. Wiring
the MCP server in is meant to be idempotent, but the "already correct" check
compared the file's text against a fresh re-serialisation: a config a
formatter had written as"args": ["mcp"]never matched, so every open
rewrote it — a modified file ingit statusand a failing format check.
It now compares the parsed config and hands an unchanged file back untouched. - A missing file no longer shows up in the log as an error. Half the app
probes for optional.reado/*sidecars a project may not have, and each probe
was traced aterrornaming no file (the IPC trace logs argument keys, never
values) — pages of alarms nobody could act on, hiding the real ones. Those
traces moved todebug, andread_filenow records which path was missing. - "Play a sound when the agent finishes" now does that. It was wired to the
open-task count dropping, so running the agent in the terminal — the ordinary
case — never made a sound. It now fires on the agent's own end-of-turn
handoff. The chime also resumes its audio context, which a browser starts
suspended when no user gesture preceded it.
See the assets below to download and install Reado for your platform.
Reado updates itself automatically from signed releases.