v0.1.31
What's Changed
- Release v0.1.31 (91f6db7)
- Prove format_code/lint_code's invoke-symbol-wrapper respects draft cwd (80a31e2)
- Prove native-handler workspace-root fix covers repl/repl_connect/repl_eval (3c7620a)
- Coerce the fold ledger's own anchor grammar in session_fold (52d4e4c)
- Draw the proposal in the app's own chrome (d3187b8)
- Bind workspace context for native handler-tool dispatch (6afd4bf)
- Add opencode-go provider with per-model wire routing (a6dc502)
- Draw the path pencil as ink, not a box (9a13e8a)
- Photograph the chosen session flow: machine menu, path pencil, one switch (3c94a6d)
- Refuse an unparseable session_fold scope id instead of acking a fold of nothing (6cc9081)
- Show per-file +/- line counts in the /draft apply report (3695a2a)
- Keep an icon's size when a caller only styles it (a16f467)
- Fix non-deterministic model picker title in the add-provider band (996e842)
- Show draft workspace name in session header status row (d1eaf59)
- Check home for dotfiles where the filesystem root has none (0be3bca)
- Refresh the audit snapshot for imaging 0.1.9 (80df2e0)
- Refuse a misplaced shell options map by name (92e01d7)
- Spec the TUI transient and compute its layout once (a1235b3)
- Compose every band on one embed-transient! seam (aa009da)
- Revert "Rename bar identifiers to baz" (8105572)
- feat(tui): answer every /draft slash with the draft band (4dcfef4)
- fix(gateway,hitl): one sid spelling in the registry, lock-free hydrate, OTP as a secret (fd15257)
- Serve ls of an unindexable directory from fff itself (23d49aa)
- Split the draft band into create, switch and abandon commands (35adceb)
- Merge the draft transient's Create and Danger groups into Actions (2f39daf)
- Make drafts a magit transient band (d1cef69)
- Make environment refresh! a host-only /reload hook (c2cc945)
- Make environment refresh host-only, off the Python sandbox (cea4269)
- Convey caller thread bindings into the structural scan pool (e045954)
- Enforce the provider auth cooldown vis already logged (b1c1c50)
- Fall back to a filesystem walk when ls cannot use fff (16b25bc)
- Track agent skills under .agents/ (6ace873)
- Rename bar identifiers to baz (d921da7)
- Remove /draft blank (45f5ff1)
- Replay every parked human-input request on attach (03e86ba)
- Surface daemon-side human input in the terminal (537da36)
- Run bang turns in the session workspace root (4b49891)
- Separate the artifacts band from the dark chrome above it (14a251b)
- Find search hits the session list has not paged in, and date the rows (f79fba1)
- Draw every companion icon at one optical size (770e51c)
- Stream empty-reply resends live and name why each provider call exists (8569d0f)
- Pretty-print nested status_fn maps in provider status text (27beac7)
- Draw every control mark in the companion as a real icon (5345456)
- Size the artifacts chip to the session id beside it and give it a paperclip (01d4a9e)
- Make the favorite star icon truly yellow (674b790)
- Keep the caller's session inside a bounded provider probe (1e08f32)
- Make failed-turn error cards selectable in the TUI transcript (1f9ab4f)
- Give the artifacts sheet the dialog band's own height (702eb43)
- Keep Python provider limits rows valid (92a9400)
- Open text artifacts and give the artifacts sheet canonical chrome (51005c0)
- Name the provider and model a stalled turn died on (c4482e9)
- Bound provider probes off the UI thread (5e86383)
- Pin the strings-only Python boundary across the whole tool surface (da43f33)
- Refuse human input requests without a session (9eb733c)
- Cross the Python boundary string-clean from every environment symbol (2ab1690)
- Cache companion artifacts on the device and page a gallery by size (4ab23fa)
- List attachments without their bytes and filter history like the byte endpoint (f1d3de0)
- Move the desktop header tabs to the right, beside the cog (c659e46)
- Split extension jail policy modes (27a7da8)
- Automate iOS crash collection (25fd7f4)
- Anchor the desktop header tabs to the left edge (edb5c06)
- Serve attachment bytes from the list the descriptors number (e64b354)
- Treat a blank rg include glob as no filter (bb617c3)
- Release iOS keyboard before backgrounding (376ca3b)
- Ship the artifacts sheet: one index of everything a session produced (d62ac00)
- Keep trusted extension shell outside the jail (a6aecf9)
- Guard collapsed tool result memory (38f630b)
- Unify filesystem tool input schema (f62d39a)
- Allow trusted extensions to spawn subprocesses (cf6498c)
- Extract the annotation stack into reusable single-purpose modules (d88225c)
- Give the TUI error card a margin row and bottom padding (3a83645)
- Make the artifacts gallery proposals operable and touch-sized (66166db)
- Paint a failed turn as a card in the TUI (a188255)
- Stop advertising strict tools on every wire (6d60bf8)
- Log the tool-call transport wreckage the door drops (b6a5630)
- Gate advertised :strict on the request's own wire (0276623)
- Refuse a tool-call arguments payload that is not an object (2422504)
- Decode drifted escapes in one linear allocation-free pass (34fdf9f)
- Propose three Artifacts gallery designs for the session header (44aac9a)
- Drop leaked tool-call close tags from tool arguments (a7fd20b)
- Describe a failed turn in its own terminal event (5dc4e2a)
- Decode drifted \uXXXX escapes only into visible assigned characters (3bfb863)
- Let the app annotate a PDF page or an HTML artifact and attach it (66f6d90)
- fix(gateway/bus): mirror sibling events under the sid the process registered (64d0e8d)
- Decode drifted unicode escapes in patch and struct_patch text (90b79ba)
- Name the voice job SSE stream so clients cannot confuse it with the session log (6237baa)
- Cross-validate every anydoc example against the engine (380d8f0)
Package changes
com.blockether/vis
- Release v0.1.31 (91f6db7)
- Prove format_code/lint_code's invoke-symbol-wrapper respects draft cwd (80a31e2)
- Prove native-handler workspace-root fix covers repl/repl_connect/repl_eval (3c7620a)
- Coerce the fold ledger's own anchor grammar in session_fold (52d4e4c)
- Draw the proposal in the app's own chrome (d3187b8)
- Bind workspace context for native handler-tool dispatch (6afd4bf)
- Add opencode-go provider with per-model wire routing (a6dc502)
- Draw the path pencil as ink, not a box (9a13e8a)
- Photograph the chosen session flow: machine menu, path pencil, one switch (3c94a6d)
- Refuse an unparseable session_fold scope id instead of acking a fold of nothing (6cc9081)
- Show per-file +/- line counts in the /draft apply report (3695a2a)
- Keep an icon's size when a caller only styles it (a16f467)
- Show draft workspace name in session header status row (d1eaf59)
- Check home for dotfiles where the filesystem root has none (0be3bca)
- Refresh the audit snapshot for imaging 0.1.9 (80df2e0)
- Refuse a misplaced shell options map by name (92e01d7)
- Revert "Rename bar identifiers to baz" (8105572)
- fix(gateway,hitl): one sid spelling in the registry, lock-free hydrate, OTP as a secret (fd15257)
- Serve ls of an unindexable directory from fff itself (23d49aa)
- Make environment refresh! a host-only /reload hook (c2cc945)
- Make environment refresh host-only, off the Python sandbox (cea4269)
- Convey caller thread bindings into the structural scan pool (e045954)
- Enforce the provider auth cooldown vis already logged (b1c1c50)
- Fall back to a filesystem walk when ls cannot use fff (16b25bc)
- Track agent skills under .agents/ (6ace873)
- Rename bar identifiers to baz (d921da7)
- Remove /draft blank (45f5ff1)
- Surface daemon-side human input in the terminal (537da36)
- Run bang turns in the session workspace root (4b49891)
- Separate the artifacts band from the dark chrome above it (14a251b)
- Find search hits the session list has not paged in, and date the rows (f79fba1)
- Draw every companion icon at one optical size (770e51c)
- Stream empty-reply resends live and name why each provider call exists (8569d0f)
- Pretty-print nested status_fn maps in provider status text (27beac7)
- Draw every control mark in the companion as a real icon (5345456)
- Size the artifacts chip to the session id beside it and give it a paperclip (01d4a9e)
- Make the favorite star icon truly yellow (674b790)
- Keep the caller's session inside a bounded provider probe (1e08f32)
- Give the artifacts sheet the dialog band's own height (702eb43)
- Keep Python provider limits rows valid (92a9400)
- Open text artifacts and give the artifacts sheet canonical chrome (51005c0)
- Name the provider and model a stalled turn died on (c4482e9)
- Bound provider probes off the UI thread (5e86383)
- Pin the strings-only Python boundary across the whole tool surface (da43f33)
- Refuse human input requests without a session (9eb733c)
- Cross the Python boundary string-clean from every environment symbol (2ab1690)
- Cache companion artifacts on the device and page a gallery by size (4ab23fa)
- List attachments without their bytes and filter history like the byte endpoint (f1d3de0)
- Move the desktop header tabs to the right, beside the cog (c659e46)
- Split extension jail policy modes (27a7da8)
- Automate iOS crash collection (25fd7f4)
- Anchor the desktop header tabs to the left edge (edb5c06)
- Serve attachment bytes from the list the descriptors number (e64b354)
- Treat a blank rg include glob as no filter (bb617c3)
- Release iOS keyboard before backgrounding (376ca3b)
- Ship the artifacts sheet: one index of everything a session produced (d62ac00)
- Keep trusted extension shell outside the jail (a6aecf9)
- Guard collapsed tool result memory (38f630b)
- Unify filesystem tool input schema (f62d39a)
- Allow trusted extensions to spawn subprocesses (cf6498c)
- Extract the annotation stack into reusable single-purpose modules (d88225c)
- Make the artifacts gallery proposals operable and touch-sized (66166db)
- Stop advertising strict tools on every wire (6d60bf8)
- Log the tool-call transport wreckage the door drops (b6a5630)
- Gate advertised :strict on the request's own wire (0276623)
- Refuse a tool-call arguments payload that is not an object (2422504)
- Decode drifted escapes in one linear allocation-free pass (34fdf9f)
- Propose three Artifacts gallery designs for the session header (44aac9a)
- Drop leaked tool-call close tags from tool arguments (a7fd20b)
- Describe a failed turn in its own terminal event (5dc4e2a)
- Decode drifted \uXXXX escapes only into visible assigned characters (3bfb863)
- Let the app annotate a PDF page or an HTML artifact and attach it (66f6d90)
- fix(gateway/bus): mirror sibling events under the sid the process registered (64d0e8d)
- Decode drifted unicode escapes in patch and struct_patch text (90b79ba)
- Name the voice job SSE stream so clients cannot confuse it with the session log (6237baa)
- Cross-validate every anydoc example against the engine (380d8f0)
com.blockether/vis-channel-tui
- Fix non-deterministic model picker title in the add-provider band (996e842)
- Spec the TUI transient and compute its layout once (a1235b3)
- Compose every band on one embed-transient! seam (aa009da)
- Revert "Rename bar identifiers to baz" (8105572)
- feat(tui): answer every /draft slash with the draft band (4dcfef4)
- fix(gateway,hitl): one sid spelling in the registry, lock-free hydrate, OTP as a secret (fd15257)
- Split the draft band into create, switch and abandon commands (35adceb)
- Merge the draft transient's Create and Danger groups into Actions (2f39daf)
- Make drafts a magit transient band (d1cef69)
- Rename bar identifiers to baz (d921da7)
- Remove /draft blank (45f5ff1)
- Replay every parked human-input request on attach (03e86ba)
- Surface daemon-side human input in the terminal (537da36)
- Stream empty-reply resends live and name why each provider call exists (8569d0f)
- Make failed-turn error cards selectable in the TUI transcript (1f9ab4f)
- Bound provider probes off the UI thread (5e86383)
- Give the TUI error card a margin row and bottom padding (3a83645)
- Paint a failed turn as a card in the TUI (a188255)
com.blockether/vis-persistance-sqlite
- List attachments without their bytes and filter history like the byte endpoint (f1d3de0)
com.blockether/vis-provider-opencode-go
- Add opencode-go provider with per-model wire routing (a6dc502)
Full Changelog: v0.1.30...v0.1.31