v0.1.25
What's Changed
- release: v0.1.25 (158cc2d)
- Stop the audit-doc gate failing on its own date stamp (cccd0fe)
- perf(drafts): clone gitignore-aware trees by bumping rift to 0.0.10-8 (3015f6c)
- Cover nested edits and deletions in the draft apply! round-trip (9990742)
- Let a provider timeout drain the queue instead of wedging it (346f09b)
- Pin the wrapped-401 cooldown with a test (3ed40ce)
- Spot the 401s a wrapped fleet failure hides on :attempts (086d0c1)
- Name cat's own key when a batch entry is malformed (dd2b1d8)
- Trust a corporate CA without patching the JDK (ca46cc9)
- Prune build directories at any depth, not just the tree root (04f8f9e)
- Drop the OPEN pill from session list rows (479635c)
- Regenerate the audit inventory for svar 0.7.96 (eee6051)
- Stop op hooks from killing the call they only observe (14a594d)
- Name the draft that carries my uncommitted changes (a883c1d)
- Read the credential verdict off the attempts, not the wrapper (be3daff)
- Open the app from the share extension with the modern selector (4e28768)
- Speak of stopping and starting a REPL, never restarting it (866b981)
- Name the container in the git tool's raw-result contract (44b2b4c)
- Renumber provider priority whenever the router is reordered (b778185)
- Read the routing attempts off the live throwable (4bcf775)
- Let a provider fetch its key from a command instead of an env var (2fd49ce)
- Stop calling a dropped connection a rejection (4ff5d0f)
- Revert "Retry a connect timeout that arrives wearing a status code" (c349c70)
- Bind skill as a Python verb beside its native tool (dfbb1e3)
- Retire the restart op from REPL and resource lifecycle (5921c47)
- Stop the environment running code before the jail exists (a7c0648)
- Format the pack-owned scan the way zprint wants it (3ae016e)
- Retry a connect timeout that arrives wearing a status code (712ee9f)
- Let the language pack own the parallel scan (dfc7ed1)
- Stop a child's Ctrl-C from killing the gateway (56ae911)
- Name what killed the gateway (0e6df31)
- Compile the lint target without ever running it (47cd489)
- Find the needle in a 20 MB file, and stop sweeping forever (4930232)
- Never let the audit record downgrade a license it already vetted (5995096)
- Retry every App Store Connect call, not only the two that failed (b097a6d)
- One attachment control in the composer, not two (a5a2c2c)
- Do not lose a release to one 401 from Apple (64c6f56)
- Sign with the distribution identity the keychain actually has (87cb8f2)
- Sign the archive by hand, so CI stops minting certificates (b5ad3c9)
- Name a profile for every bundle, or export automatically (87dae36)
- Export the archive even when only the app has a pinned profile (4fc4a21)
- audit: read imaging 0.1.7 license and size from the published artifact (34333c5)
- Move the imaging pin to 0.1.7 and lock the pptx shim against it (70435b2)
- Floor the eval watchdog above the LONGEST legal shell budget (7c4fb70)
- Offer "Start the session in" when the TUI opens a new session (e902804)
- Test the companion share intake, and pin its dependencies exactly (0d88054)
- test(pptx): lock the imaging 0.1.6 chart part, picture crop and read-back (2922d5d)
- Close the last descriptor doors: raw io.FileIO and host sqlite3 handles (bd08a40)
- Say what
nanduntilactually bound in shell wait (a0680bb) - Accept system shares into the companion composer (1b572e7)
- test(mcp): assert the kill brake by pool state, not by an exact connect log (95a0720)
- test(sandbox): make the fd hardening cases actually discriminate (7a5daf3)
- test(sandbox): pin fd reclamation against every open door (746804d)
- test: prove parallel OAuth refresh by overlap, not wall-clock (bcaf6d8)
- Reclaim and cap sandbox Python file descriptors (61505ab)
- chore: com.blockether/imaging 0.1.6 — pptx shim round-trip asserted unconditionally (e71d6dc)
- fix(shell): recover from descriptor exhaustion instead of blaming the JDK (43e23a5)
- test(editing): pin struct_index/cat ranges parity for absent, empty and bad shapes (9fd9d01)
- refactor(prompt): keep the sleep/poll prohibition only in the tool description (1a48581)
- feat(editing): accept [-1, -1] as cat/struct_index whole-file sentinel (464dc6c)
- refactor(python): read pyproject table headers with the tree-sitter TOML grammar (0e78932)
- fix(python): detect uv by TOML table header, not substring (a6eb925)
- feat(python): name the undeclared src import root when pytest collection fails (194487f)
- fix(test): gate the pptx re-open assertion on the resolved imaging reader (cdfaaf2)
- fix(audit): keep the generator's prose in sync and refresh the inventory (be1c2b9)
- test(python): lock pytest node-id selection and --collect-only (2c8aa3d)
- feat(prompt): make reproduction REPL-first and keep it as a test (e5809ae)
- fix(test): lock the fold card on bin/vis-agent (e22406e)
- fix(python): support pytest node-id selection and --collect-only (1be741e)
- fix(shell): capture streams whole and clip only the card (e31fc62)
- fix(python): honor explicit run_tests targets and never green an empty run (66d90e4)
- fix(python): re-expand folded kwargs for Python-backed tool symbols (0fdf52d)
- fix(shell): require
untilfor wait and never report a dead process as running (4d01e8d) - chore(deps): bump tree-sitter-language-pack to 1.12.3-blockether.38 (7d7e0d6)
- fix(companion): one owner for transcript scroll anchoring (14c0e51)
- fix(mcp,acp): string-keyed session-server results, like every MCP surface (82aba80)
- feat(shell): wait for a background job's condition, not a guessed clock (574cdc5)
- fix(routing): keep both halves of a session model pin canonical (dcfede3)
- fix(mcp): refuse an unauthorized OAuth server instead of blocking on a browser (0ccba71)
- fix(config,cli): render a vis.yml provider id verbatim, never capitalized (a838d9e)
- fix(companion): follow the gateway's session.model_updated broadcast (f8177e8)
- fix(mcp,routing): total JSON-RPC encoding, headless MCP OAuth, pin fixes (a10ba61)
- docs(site): tagline and sub say the mechanism, not the metaphor (8cfd793)
- fix(companion): keep the reader's line by anchoring an element, not a height (4c4c4b1)
- test(loop): pin the auth cooldown and the pinned-model router (aa386b0)
- fix(providers): log out a key-only provider by clearing its key, keeping its entry (1a3a9c3)
- chore(cli,structural): formatter reflow and reflection hints (fa5a4f0)
- docs(readme): lead with Clojars and license, drop build and allowlist sections (4718fc6)
- test(loop): mcp exposes one mcp__call verb, server-only lists schemas (54f90c3)
- feat(companion,install): camera capture, install script as a release asset, documented Clojars (7618336)
- fix(loop): request-bound provider credentials so a rotated OAuth token never strands a turn (9147f73)
- release: update release notes for v0.1.24 (bed4669)
Package changes
com.blockether/vis
- release: v0.1.25 (158cc2d)
- Stop the audit-doc gate failing on its own date stamp (cccd0fe)
- perf(drafts): clone gitignore-aware trees by bumping rift to 0.0.10-8 (3015f6c)
- Cover nested edits and deletions in the draft apply! round-trip (9990742)
- Let a provider timeout drain the queue instead of wedging it (346f09b)
- Pin the wrapped-401 cooldown with a test (3ed40ce)
- Spot the 401s a wrapped fleet failure hides on :attempts (086d0c1)
- Name cat's own key when a batch entry is malformed (dd2b1d8)
- Trust a corporate CA without patching the JDK (ca46cc9)
- Prune build directories at any depth, not just the tree root (04f8f9e)
- Drop the OPEN pill from session list rows (479635c)
- Regenerate the audit inventory for svar 0.7.96 (eee6051)
- Stop op hooks from killing the call they only observe (14a594d)
- Name the draft that carries my uncommitted changes (a883c1d)
- Read the credential verdict off the attempts, not the wrapper (be3daff)
- Open the app from the share extension with the modern selector (4e28768)
- Speak of stopping and starting a REPL, never restarting it (866b981)
- Name the container in the git tool's raw-result contract (44b2b4c)
- Renumber provider priority whenever the router is reordered (b778185)
- Read the routing attempts off the live throwable (4bcf775)
- Let a provider fetch its key from a command instead of an env var (2fd49ce)
- Stop calling a dropped connection a rejection (4ff5d0f)
- Revert "Retry a connect timeout that arrives wearing a status code" (c349c70)
- Bind skill as a Python verb beside its native tool (dfbb1e3)
- Retire the restart op from REPL and resource lifecycle (5921c47)
- Stop the environment running code before the jail exists (a7c0648)
- Format the pack-owned scan the way zprint wants it (3ae016e)
- Retry a connect timeout that arrives wearing a status code (712ee9f)
- Let the language pack own the parallel scan (dfc7ed1)
- Stop a child's Ctrl-C from killing the gateway (56ae911)
- Name what killed the gateway (0e6df31)
- Find the needle in a 20 MB file, and stop sweeping forever (4930232)
- Never let the audit record downgrade a license it already vetted (5995096)
- Retry every App Store Connect call, not only the two that failed (b097a6d)
- One attachment control in the composer, not two (a5a2c2c)
- Do not lose a release to one 401 from Apple (64c6f56)
- Sign with the distribution identity the keychain actually has (87cb8f2)
- Sign the archive by hand, so CI stops minting certificates (b5ad3c9)
- Name a profile for every bundle, or export automatically (87dae36)
- Export the archive even when only the app has a pinned profile (4fc4a21)
- audit: read imaging 0.1.7 license and size from the published artifact (34333c5)
- Move the imaging pin to 0.1.7 and lock the pptx shim against it (70435b2)
- Floor the eval watchdog above the LONGEST legal shell budget (7c4fb70)
- Test the companion share intake, and pin its dependencies exactly (0d88054)
- test(pptx): lock the imaging 0.1.6 chart part, picture crop and read-back (2922d5d)
- Close the last descriptor doors: raw io.FileIO and host sqlite3 handles (bd08a40)
- Say what
nanduntilactually bound in shell wait (a0680bb) - Accept system shares into the companion composer (1b572e7)
- test(mcp): assert the kill brake by pool state, not by an exact connect log (95a0720)
- test(sandbox): make the fd hardening cases actually discriminate (7a5daf3)
- test(sandbox): pin fd reclamation against every open door (746804d)
- test: prove parallel OAuth refresh by overlap, not wall-clock (bcaf6d8)
- Reclaim and cap sandbox Python file descriptors (61505ab)
- chore: com.blockether/imaging 0.1.6 — pptx shim round-trip asserted unconditionally (e71d6dc)
- fix(shell): recover from descriptor exhaustion instead of blaming the JDK (43e23a5)
- test(editing): pin struct_index/cat ranges parity for absent, empty and bad shapes (9fd9d01)
- refactor(prompt): keep the sleep/poll prohibition only in the tool description (1a48581)
- feat(editing): accept [-1, -1] as cat/struct_index whole-file sentinel (464dc6c)
- feat(python): name the undeclared src import root when pytest collection fails (194487f)
- fix(test): gate the pptx re-open assertion on the resolved imaging reader (cdfaaf2)
- fix(audit): keep the generator's prose in sync and refresh the inventory (be1c2b9)
- test(python): lock pytest node-id selection and --collect-only (2c8aa3d)
- feat(prompt): make reproduction REPL-first and keep it as a test (e5809ae)
- fix(test): lock the fold card on bin/vis-agent (e22406e)
- fix(python): support pytest node-id selection and --collect-only (1be741e)
- fix(shell): capture streams whole and clip only the card (e31fc62)
- fix(python): honor explicit run_tests targets and never green an empty run (66d90e4)
- fix(python): re-expand folded kwargs for Python-backed tool symbols (0fdf52d)
- fix(shell): require
untilfor wait and never report a dead process as running (4d01e8d) - chore(deps): bump tree-sitter-language-pack to 1.12.3-blockether.38 (7d7e0d6)
- fix(companion): one owner for transcript scroll anchoring (14c0e51)
- fix(mcp,acp): string-keyed session-server results, like every MCP surface (82aba80)
- feat(shell): wait for a background job's condition, not a guessed clock (574cdc5)
- fix(routing): keep both halves of a session model pin canonical (dcfede3)
- fix(mcp): refuse an unauthorized OAuth server instead of blocking on a browser (0ccba71)
- fix(config,cli): render a vis.yml provider id verbatim, never capitalized (a838d9e)
- fix(companion): follow the gateway's session.model_updated broadcast (f8177e8)
- fix(mcp,routing): total JSON-RPC encoding, headless MCP OAuth, pin fixes (a10ba61)
- docs(site): tagline and sub say the mechanism, not the metaphor (8cfd793)
- fix(companion): keep the reader's line by anchoring an element, not a height (4c4c4b1)
- test(loop): pin the auth cooldown and the pinned-model router (aa386b0)
- fix(providers): log out a key-only provider by clearing its key, keeping its entry (1a3a9c3)
- chore(cli,structural): formatter reflow and reflection hints (fa5a4f0)
- docs(readme): lead with Clojars and license, drop build and allowlist sections (4718fc6)
- test(loop): mcp exposes one mcp__call verb, server-only lists schemas (54f90c3)
- feat(companion,install): camera capture, install script as a release asset, documented Clojars (7618336)
- fix(loop): request-bound provider credentials so a rotated OAuth token never strands a turn (9147f73)
- release: update release notes for v0.1.24 (bed4669)
com.blockether/vis-channel-tui
- Retire the restart op from REPL and resource lifecycle (5921c47)
- Offer "Start the session in" when the TUI opens a new session (e902804)
- fix(routing): keep both halves of a session model pin canonical (dcfede3)
- fix(providers): log out a key-only provider by clearing its key, keeping its entry (1a3a9c3)
- feat(companion,install): camera capture, install script as a release asset, documented Clojars (7618336)
com.blockether/vis-language-clojure
- Speak of stopping and starting a REPL, never restarting it (866b981)
- Retire the restart op from REPL and resource lifecycle (5921c47)
- Compile the lint target without ever running it (47cd489)
com.blockether/vis-language-python
- Retire the restart op from REPL and resource lifecycle (5921c47)
- refactor(python): read pyproject table headers with the tree-sitter TOML grammar (0e78932)
- fix(python): detect uv by TOML table header, not substring (a6eb925)
- fix(python): honor explicit run_tests targets and never green an empty run (66d90e4)
com.blockether/vis-language-typescript-bun
- Retire the restart op from REPL and resource lifecycle (5921c47)
com.blockether/vis-persistance-sqlite
- feat(companion,install): camera capture, install script as a release asset, documented Clojars (7618336)
com.blockether/vis-workspace-rift
- perf(drafts): clone gitignore-aware trees by bumping rift to 0.0.10-8 (3015f6c)
- Prune build directories at any depth, not just the tree root (04f8f9e)
Full Changelog: v0.1.24...v0.1.25