Releases: guitaripod/CodingAgentKit
Release list
0.10.0
0.10.0
The release that lets more than one window watch one conversation, and one socket carry a whole
server.
Added
- Many observers on one conversation.
states()no longer tears down whatever came before it:
every caller gets its own stream over one shared connection, refcounted so the run loop starts
with the first observer and stops with the last. A chat window, a second window and a session
list can watch the same session at once.reconnect()re-dials underneath the observers without
ending anyone's stream — the forced reconnect that callingstates()twice used to provide. permissionResolved.pendingPermissionswas the one field inConversationStatethat
could not converge; an approval answered on the phone stayed live on the desktop forever.
Decoded from opencode's replied/rejected/updated shapes, with answered ids remembered so a late
re-ask cannot resurrect a settled card.BridgeStream: one socket per server. Multiplexes the bridge's proto-2/streamwith
replay, gap detection and a heartbeat watchdog, instead of a connection per session.SubagentSummarycarries live progress, so a fan-out can be rendered while it runs.- A spend gauge carries its money.
usedUSD/limitUSDpass through the bridge quota. - Per-model effort on opencode. Effort variants ride the catalog, the send, and the
transcript, rather than being one setting for every model. - Every account the machine holds. Extra quotas are fetched for all of them, not just the
first. - Ultracode joins the effort menu, Opus 1M joins the catalog. Ultracode is a mode more than a
level — the server reads it as xhigh plus standing multi-agent orchestration — so it belongs in
the same list clients already render. AuthenticatingBackend+ServerAuth. Whether the agent behind a server is signed in, and
the three-step browser sign-in that fixes it when it isn't:beginSignIn()returns the URL the
server printed,submitSignInCode(_:)hands back the code it produced.ClaudeCodeBackend
conforms; a bridge without the routes throwsAgentError.unsupported.SelfUpdatingBackend. A server that can install its own updates:updateStatus(checkingRemote:)
reports the running version, whether the remote is ahead and by which commits, and whether this
install can move at all;startUpdate()asks it to.ClaudeCodeBackendconforms — a bridge too
old to know the route throwsAgentError.unsupported.ServerUpdate.phasefollows a run through
the server's own restart, so a client can keep watching something that stops answering.health()reports the bridge's version. It reads/status, which costs the same round trip
as/healthand carries what the server is actually running, instead of the constant"claude".
Fixed
- Attachment URLs may carry a query string.
ClaudeCodeBackend.attachmentDatanow splits a
relative bridge URL into path and query items instead of handing the whole string to
appendingPathComponent, which percent-encoded the?and 404'd. Lets the bridge address
attachment bytes by file path (/files/raw?path=…) — the shape it uses for a picture the agent
read — not only by stored attachment name. - A bridge upgraded mid-flight reaches running apps. The proto is re-probed and list streams
wait for it, instead of a live app staying on the old protocol until relaunch. - A person never reads
Error Domain=NSURLErrorDomain. Transport failures are turned into
situations a banner can state. - A streaming turn reaches the cache every few seconds, not only when it goes idle.
Performance
- A freshly opened chat pays for its three fetches at once. Transcript, questions and goal now
race rather than running in single file; the chat paints when the slowest lands.
0.9.0
Everything a coding-agent session contains that isn't a message.
Compaction as a first-class event. A context compaction arrives as a Compaction part — tokens before and after, how long it took, how many messages carried over, and the CLI's own summary — instead of dumping tens of thousands of words of machine-facing prose into the transcript.
Structured questions, commands and goals. QuestionRequest models multi-question, multi-option asks with free-text "Other", and QuestionRequest.awaitingAnswer derives what is still open from the transcript. AgentCommand lists the slash commands a machine will actually resolve (built-in, user, project, plugin). GoalStatus reports a /goal in flight, whether it was met, and what it cost.
Attachments, subagents, worktrees. Prompts carry files and images to claude-bridge and the bytes come back through the backend. subagents(for:) and subagentMessages(sessionID:agentID:) fetch a spawned agent's own transcript, keyed to the tool call that spawned it. Session listing reaches every worktree, not just the server's own directory.
Semantic tool-call summaries. ToolCallSummary turns raw tool JSON into the line a human wants to read, so every client stops writing its own.
Localized engine. Errors, fallbacks and summaries resolve through AgentText against the Kit's own catalogue, so a localized app doesn't leak English out of its engine.
Fixes. A finished turn no longer inherits a stale running status, and a session counts as live when its agents are working, not only during its own turn.
191 tests, Linux and Apple, GPL-3.0.