release/v0.0.283 — #702 #704 #700 #706 #405 #537 #524 #701 #707 + doctor live + GLM vision - #703
Merged
Conversation
Deleting a staged image chip now drops that queue slot and remaps remaining [Image #N] markers so the next paste reuses #1. Successful clipboard_paste receipts omit MIME and bytes until the image is sent (ADR 0056). Failures may still carry a size. Co-authored-by: yxlyx <85774423+yxlyx@users.noreply.github.com>
Zig requires every non-void return to be used.
[Image #1] plus its separator is 14 cells, not 13.
The parent timed out at 180s on a loaded GHA runner while the four primary evaluators can wait 120s at rendezvous. Same SHA was already green on a quieter runner. Raise the parent to 300s and default an unset barrier to 45s so scoring still has budget.
Tuiguard probes now have an explicit deadline that kills the process group, and the parent fails with still-running names instead of hanging pre-push for hours. Presence records carry the visible title and saved-session base. peer_message resolves those before opaque id or goal fragments; duplicate titles are ambiguous. Older records without the fields still parse. Co-authored-by: yxlyx <yxlyx@users.noreply.github.com>
resize-anchor just ran in 58s on a 60s cap. Overlay is in the same tens-of-seconds band. Keep the default at 60s; only the known long probes get 90s.
This was referenced Aug 31, 2026
Atomic credential replacement synced file contents but not the containing directory, so a hard power loss could lose the rename. Sync the exact destination directory retained by createFileAtomic after replacement, avoiding a path-reopen race if a symlinked parent changes concurrently. Exercise the real Linux/Windows file-backed key-store path through repeated merge/load cycles, and describe its platform security accurately: POSIX files use mode 0600, while Windows inherits the home directory ACL. The separately merged symlink policy remains item 1 of #405; this commit completes items 2–3 without duplicating it. Co-Authored-By: Codegraff <blackfloofie@codegraff.com>
A long current tool turn can pin the cut at one boundary while the live suffix grows. After two same-boundary attempts that do not shrink by 2k tokens, stop further summarization spends, announce once, and take the existing recover/trim path. Co-authored-by: yxlyx <yxlyx@users.noreply.github.com>
Dropped and delayed terminal sequences could cancel live work, execute pasted control bytes, retain stale modifiers, or leak protocol tails into the composer. Preserve bounded framing evidence across reads, fail closed on ambiguous debris, keep paste dispatch ahead of controls, and make turn/background spawn failures non-blocking across the fullscreen TUI runtime.\n\nAdd reached simulation, parser, batching, and offline PTY regressions for every affected idle, live-turn, compact, bash, and file trajectory.\n\nCo-Authored-By: Codegraff <blackfloofie@codegraff.com>
Rebasing the input-recovery fix onto v0.0.282 pushed two touched modules over the source ceiling. Move their existing test blocks into reached siblings and set the suite floor to the deterministic macOS pass count, where the remaining platform test is reported as a skip rather than a pass.\n\nCo-Authored-By: Codegraff <blackfloofie@codegraff.com>
The new PTY probe is sequential ESC/paste gaps plus a live `!sleep 2`. Keep it on the same long-probe list as click/hover so #704 deadlines do not false-fail a correct run.
This was referenced Aug 31, 2026
16 tasks
…aging gate visionModel(), the allowlist that /image and paste consult before staging an image block, treated every glm family as text-only, so glm-5v (glm-5v-turbo, the explicit vision variant) and glm-5.3 / glm-5.3-flash (which accept image blocks through the codegraff backend) were refused with "this model can't see images" even though the models accept images. Add the glm-5v and glm-5.3 prefixes to the allowlist and cover them in the visionCapable and visionModel tests. Co-Authored-By: Codegraff <blackfloofie@codegraff.com>
/doctor now reads the in-process job table and RunBudget (JOB_STATE, JOB_SHARES_ROOT_PGID, BUDGET_STATE, BUDGET_NEAR_LIMIT, BUDGET_EXCEEDED). The TUI slash no longer prints a chrome-only "ok · model=" line. Lease, listener, and orphan findings stay absent: those need a durable registry that does not exist, and doctor still refuses to invent them.
Windows Child.id is a HANDLE. The JOB_SHARES_ROOT_PGID probe is POSIX-only, same comptime gate jobs.zig uses for group kill.
Fresh registry installs launch without credentials, but startup previously exited before reading initialize, making Terminal Auth unreachable. Add a bounded pre-auth ACP loop that shares the normal initialize response, rejects authenticated methods with ACP AuthRequired, restores early TUI claims before missing-key diagnostics, and reuses per-record parsing memory.\n\nThe credentialed ACP/TUI runtime remains unchanged; the registry listing must be repinned to the first release containing this commit.\n\nCo-Authored-By: Codegraff <blackfloofie@codegraff.com>
The pre-auth integration test sent its exact 65,535-byte boundary record through text-mode subprocess stdin. Windows newline translation could add a carriage return, making the accepted boundary appear oversized and dropping the first initialize response even though ACP behavior was correct. Send explicit UTF-8 bytes so record lengths and delimiters are identical on every platform while retaining the real-binary EOF, oversize, ordering, and response assertions. Co-Authored-By: Codegraff <blackfloofie@codegraff.com>
Legacy terminals encode Alt+Arrow as ESC ESC followed by CSI. Treating the first Escape as a standalone key cancelled live turns and background operations before the navigation event arrived, especially when reads split or stalled. Keep complete legacy CSI navigation framed as one event through the parser, bounded stall policy, and dropped-head recovery. Genuine double Escape still resolves after the ambiguity window, while narrow evidence preserves bracketed prose instead of guessing it is navigation. Cover idle, live-turn, compact, bash, files, overlay, and paste trajectories without duplicating the broader #537 recovery work this branch builds on. Co-Authored-By: Codegraff <blackfloofie@codegraff.com>
This was referenced Sep 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Next cut after v0.0.282 landed on main. No GitHub tag until asked.
Closes #702, #704, #700, #706, #405, #537, #524.
On this cut
peer_messageresolves visible title / saved-session base.compact_cutpin that does not shrink stops after two tries..dropclears latched modifiers; turn/background spawn failures are non-blocking. Folded yxlyx's PR. Offline PTY probescripts/test-tui-escape-split.pyis the 18th tuiguard case.ESC ESC [Alt+arrow stays one navigation event across splits, delayed delivery, and recovery. BareESC ESC(not followed by[) is still Escape; SS3ESC ESC OAis Escape, not Up; a delivered lone ESC does not rejoin a laterESC [ D. Replaces the smaller leftover on this branch. Folded yxlyx's PR.graff acpanswersinitializeand advertisesgraff-loginbefore provider credential resolution; session/model ops return ACPAuthRequireduntil login + restart. Folded yxlyx's PR. Does not close Distribute graff via the ACP Registry (agentclientprotocol/registry) #613 — the registry listing still needs a tagged release and a pin bump on Add graff (Codegraff harness) as an ACP agent agentclientprotocol/registry#558, plus a maintainer workflow approval.visionModel()allowsglm-5vandglm-5.3(covers flash). Landed on this branch asc34adbd; TUI/imageand paste will stage instead of "this model can't see images"./doctornow reports the in-process job table andRunBudget(JOB_STATE,JOB_SHARES_ROOT_PGID,BUDGET_STATE,BUDGET_NEAR_LIMIT,BUDGET_EXCEEDED). TUI/doctoruses that report (no chrome-onlyok · model=line). Driven withsim.Term. WindowsChild.idis a HANDLE — the PGID probe is POSIX-only (045081d). Does not close Add /doctor and automatic health checks for stale goals, leaked processes, shared worktrees, and runaway turns #321 — lease / listener / orphan findings stay absent until a durable registry exists.Left open on purpose
Epics and unfinished design (#613 registry listing, #553 widget layer, #551 leftover tracker —
/plan//strictalready travel with the turn; Normal vs Always-approve is still the same yolo because there is no approval overlay, ADR 0041, #422/#420 detachment, iOS, governed-runs backlog,/doctordurable-registry slice, …). Closing those would be fake.#699, #705, #701, and #707 stay open for yxlyx to close as superseded. They were folded here, not GitHub-merged to main.
Hygiene