v0.1.39
What's Changed
- fix(shell): keep the output a pty child printed just before it exited (c162148)
- fix(shell): stop a pty child inheriting the parent's descriptors (da26caf)
- docs(docs): regenerate the spel skill from spel 0.9.28 (7aac609)
- fix(ci): track the clj-kondo configs imported from dependencies (5685929)
- chore(release): v0.1.39 (fea04e0)
- fix(companion): read the artifact overlay after its bytes arrive (3f3288f)
- build(ci): build the macOS asset on a hosted runner, never a self-hosted one (12775d5)
- feat(build): let native-image size its own builder heap, and measure it (4314130)
- fix(companion): give the image viewer one Save, in the band beside the close (6c07f93)
- fix(companion): strip settings band sentences and close a column's last group (7c7eebf)
- fix(ci): make the hosted macOS fallback fit the free runner (fb7927c)
- fix(companion): raise the annotator composer above the keyboard (2141a57)
- feat(build): ship a beta track on free runners, not the mac builder (4430c74)
- fix(companion): reconnect a dark machine off All, in the background (1273b10)
- feat(build): stamp every native runtime with the commit that built it (c2abf4c)
- fix(cli): resolve sandbox PIL colours per mode and replace drawn ink (52a215b)
- fix(sandbox): answer two bands for an 'LA' image, as Pillow does (29fb1d4)
- docs(companion): record TestFlight build 4319 in the app changelog (3808060)
- fix(companion): brand the launch screen and name the Android channel (8088f81)
- fix(companion): reopen a session where the reader stopped reading (b5eb54d)
- fix(sandbox): read a paste mask's alpha band, not its blue channel (1187947)
- fix(companion): redraw the Android launcher and notification icons from the iOS master (a30ceb8)
- fix(companion): ask the sessions list for one page when nothing moved (1a9f510)
- fix(companion): tag Android alerts so the badge can clear (fe18740)
- fix(sandbox): address a fresh attachment in the block that made it (ed87779)
- docs(skills): regenerate the spel skill from spel 0.9.27 (13c6f6f)
- feat(companion): badge the icon with the alerts still waiting (666fa4b)
- fix(companion): put an opened note's Save in its header band (cd2ba07)
- fix(companion): wear the name's step on a status dot (0ff682b)
- fix(companion): frame the destructive confirm around its own cost (0aa7d76)
- feat(tui): hold a spoken conversation instead of a speech toggle (3338a1d)
- fix(companion): keep a project folded once you have folded it (581ed57)
- fix(companion): unbox the voice bands and drop the Off route (55cb6ff)
- docs(docs): plan making every capability an extension of one contract (6ac932d)
- refactor(contract): make the Python host an object, not a dict (137d006)
- fix(companion): strip the MCP band and land its verb as the list's last row (b71ab6b)
- feat(contract): give the host contract its own package (4cdcae1)
- fix(companion): make the providers action amber and unpin the blocked banner (41e8c3a)
- fix(companion): make lone settings verbs full width and align status dots (db90933)
- fix(companion): anchor the sessions list across every fleet arrival (012df17)
- fix(companion): keep a live session following once the reader arrives (1e79fb4)
- fix(companion): one verb in notifications, and demote nested panel bands (94024bc)
- feat(extensions): gate the Clojure host surface with a contract (82a3220)
- fix(companion): restore the machines verb and quiet the providers one (705a520)
- fix(companion): strip the providers band to its title and a short verb (6f0a5c0)
- refactor(loop): drop the native-tool leftovers from the one-tool wire (4647db9)
- fix(companion): rule the machine panel stack and cut its band prose (4cd3594)
- feat(run-tests): give a test run ten minutes in every pack (f01b6e9)
- feat(sandbox): give a Python block five minutes before the backstop (04be7c8)
- docs(python): write the package README example in the formatter's own shape (2d96a8b)
- feat(gateway): flag a session parked on a human across the fleet (ec56d83)
- ci(python): verify the package on the floor the engine's GraalPy sets (d85c63f)
- fix(python): dispatch the outside shell from the contract's own vocabulary (67d8ffc)
- feat(gateway): fold every window a fold_session key names (a9cf4de)
- perf(companion): fill pulled-in history sixteen segments a frame, not two (19ecbe5)
- docs(companion): record TestFlight build 4280 in the app changelog (bad2fb1)
- fix(companion): drop the trace a command turn never wrote (ce5caf1)
- fix(companion): disclose each machine's settings under its own row (936e3be)
- fix(companion): keep a reader's place when the keyboard comes and goes (6b8787d)
- fix(tui): repoint the table card test at the display's new home (dc0cc78)
- fix(shell): confirm an exited child's silence before reporting it (20f56cc)
- feat(gateway): reclaim the SQLite freelist once a fortnight (9e2d5c2)
- perf(companion): paint only the turns a session is showing (e5ec156)
- fix(gateway): drop a retired column SQLite was refusing to drop (2c4e59e)
- feat(shell): raise the wait budget and cap to thirty minutes (04225ae)
- perf(gateway): stop storing what a reader can re-derive (77587a1)
- feat(python): ship the extension API as the vis-agent package (93e379f)
- chore(repo): drop the TODO whose every item shipped (81bc8f9)
- docs(cli): close item 1 and record the residues nothing schedules (155bb80)
- test(bench): make the redaction test independent of the caller's environment (8b83864)
- docs(cli): record the TODO state after the doc and ranker work (27af056)
- chore(repo): reformat every Clojure and Python source in place (2770d1c)
- test(ci): pin the two loaded-runner flakes without a stopwatch (65b83f9)
- test(ci): own the espeak and pty-log preconditions the runners lack (886b34b)
- docs(docs): regenerate the spel agent skill for 0.9.26 (0f7446c)
- docs(cli): name the keys a test run answers with (98cda90)
- fix(ci): make the test suite green on both runners (0403732)
- feat(companion): give providers the machine row and its slide (21ec0d4)
- feat(cli): give a helper's docstring a gist, a page and a search hit (851ac83)
- docs(repo): delete banner rules and labels that repeat the code (39eeb17)
- docs(voice): trim manifest and JNI notes, drop the finished plan (6ff7b06)
- perf(companion): make a long live session scroll without stalling (e43f74c)
- feat(voice): carry every Piper voice at the highest level published (6183aff)
- docs(docs): show how a tool page renders and how apropos previews it (ebf0441)
- docs(cli): give every code verb in the core prompt its call shape (b2a63f6)
- fix(cli): answer the ask a model types, not the one the page assumes (84140ba)
- fix(persistance): bound the SQLite -wal sidecar with journal_size_limit (e0aa375)
- fix(cli): saturate the three ranked fields together, not one by one (ae1f3f4)
- fix(voice): hand sherpa a map the shipped binary can walk (24ea302)
- chore(docs): drop the session-id marker from the commit trailer (898dc0e)
- fix(companion): rank a machine only where there is a fleet (f55919e)
- fix(companion): release a pin the app itself had to break (7670b69)
- docs(voice): say why the progress callback is a deftype (297b36c)
- docs(cli): record what the tool pages answer today (e39420f)
- test(cli): follow the auto-title order to the Alibaba plan (191551d)
- fix(cli): stamp the call proto for a tool that takes no arguments (4192065)
- chore(tui): reformat the command suggestion namespace (1029649)
- chore(cli): reformat three namespaces the formatter had drifted from (63cac8c)
- feat(gateway): keep the human's star on the gateway, not the device (da626a2)
- feat(voice): recover from a failed engine without restarting Vis (736fcb8)
- feat(cli): teach every tool page its call line and required keys (4eb4926)
- perf(companion): stop the hidden sessions list polling the fleet (110112c)
- fix(cli): sweep every unbounded ~/.vis directory, not just the logs (4f611f7)
- feat(companion): swipe the image gallery instead of pressing arrows (d9956d0)
- perf(companion): stop a keystroke re-rendering the hidden sessions list (7dfd4e9)
- feat(companion): choose where a reply is spoken, and in which voice (13e72b9)
- fix(cli): reclaim the sandbox's sockets, the third door onto a descriptor (ca68b23)
- chore(lint): clear every ruff and reflection warning in the tree (f5ed3ed)
- refactor(cli): reclaim every shim's host handles in one runtime registry (d483ce2)
- feat(voice): render THIRD_PARTY_MODELS.md from the model manifest (12608da)
- fix(cli): answer a bare apropos() with the listing's own shape (0e63625)
- chore(commits): minimal conventional commits that name their session (4841cc9)
- feat(grep): exclude globs drop files from the content sweep (9004114)
- A dropped PIL image gives its raster back (49d20b6)
- The ASR archive names its direction (b584a7f)
- The voice assets are named for what they are (b1f1599)
- A voice belongs to the machine, and the app can bring one (ee7adde)
- Fix iOS keyboard-safe companion modals (46ed794)
- Namespace skill slash commands (c947be7)
- Keep the inherited trace whole when the handover lands late (ef344cc)
- Give pocket-tts a voice: three clips we make, and any clip anyone brings (faaad44)
- apropos: answer a row per hit, not a bare first line (5e3ad66)
- Own the pocket-tts ONNX export: vendor the MIT layer, drop the clone (9be9db4)
- Export pocket-tts ourselves and publish it in the assets pack (dce9af6)
- A message keeps its ticker while its own POST is still on the wire (6d9db56)
- A parked run's push asks the question, not which session (e5d640d)
- A parked run's push says Action needed, and the body is the question (d05986a)
- Rank documents on a stamped corpus instead of rebuilding it per call (d12f581)
- The session heading keeps its row when the notch pushes it down (ba1c325)
- Ship only what we make: assets-only pack, espeak from the system (2f9e2c1)
- Companion: a machine row is one line, and its address is a swipe verb (957f370)
- bm25: extract the ranker and make it fast and shareable (1d36ba9)
- Re-judge the live-to-persisted handover on every reconcile tick (bcf95fc)
- Probe the router fleet in parallel so the phone's Providers screen paints (7193aa3)
- apropos: rank with BM25F instead of ANDing terms (84b53c5)
- Ship the voice assets pack and add Ryan as the first opt-in voice (a939800)
- Speak locally: a licence-carrying asset manifest, Piper voices, pocket-tts opt-in (19c5655)
- Speak over HTTP: /v1/sessions/:sid/speech, its job stream and features.speech (a586424)
- voice: one registry for both directions, keyed by transcribe or synthesize (40c9d24)
- Primitive math in the balancer's hot loops, and no boxed math left in the tree (7c40a20)
- Fetch only this platform's sherpa-onnx native, and plan speech into voice.clj (4442a2d)
- balance: seat a repaired delimiter where the replaced text had it (08142bd)
- voice: take upstream sherpa-onnx v1.13.5 and delete the ONNX Runtime pin (f99eaee)
- providers: add the Alibaba Coding Plan and Token Plan endpoints (25f540f)
- Settle the pocket-tts gate and the shipped voice list in PLAN.md (4e98cbd)
- Plan speech output as an engine registry on upstream sherpa-onnx (54a0353)
- vis-agent: run the checkout it sits in when nothing is installed (d7af0c8)
- format: the delimiter repair is add-only there too (5edf444)
- cli: finish the vis -> vis-agent rename in text that tells you what to run (ec7ce29)
- Delimiter repair adds only: never delete a closer the edit wrote (28636b4)
- Run what is installed, never the checkout the command sits in (b92a16d)
- Re-read a swiped row's offset every frame it claims to be open (6bea3d6)
- Remove the runtime selector: what is installed is what runs (cf3ffd7)
- Refuse a delimiter repair that moves or retypes what the caller wrote (53ca5ef)
- Land every TUI duration and id badge on one right edge (7a8be54)
- Remove the dev runtime: vis-agent installs and runs under ~/.vis (b7c4b29)
- Paint the call duration on every TUI result, not just carded ones (7ac776b)
- Record Companion TestFlight build 4179 in the app changelog (f324ec5)
- Repair an edit's delimiters from the file, never from the fragment (1c55f10)
- Ask which address a machine uses on the machine's own line (258f80c)
- Close the gap the removed duration marker left in the marker tables (f4636de)
- The TUI tells how long each tool call took, as the companion always has (4c98c74)
- A warm-up owns the failure of a load nobody is waiting for (3deb6f0)
- Keep the direct push in the magit push transient (issue #144) (ec6eaaa)
- Companion: the model picker's verbs stand in its band, and the sheet stops at its content (d6e9309)
- Fix #145 in the app's last carrier: an answer promoted out of a content-less row (fa2a29c)
- Fix #145: paint a settled answer exactly once, in the TUI and the companion (c70b464)
- Every editor write is atomic, and a refused struct_patch batch is rolled back (12d2ad3)
- A helper's
returnsettles its tool calls, so the caller never gets a thunk (2be4b07) - The gateway keeps "no AI provider" typed, so the TUI opens the dialog (eefc71c)
- release: update release notes for v0.1.38 (6b2f66d)
Package changes
com.blockether/vis
- fix(shell): keep the output a pty child printed just before it exited (c162148)
- fix(shell): stop a pty child inheriting the parent's descriptors (da26caf)
- docs(docs): regenerate the spel skill from spel 0.9.28 (7aac609)
- fix(ci): track the clj-kondo configs imported from dependencies (5685929)
- chore(release): v0.1.39 (fea04e0)
- fix(companion): read the artifact overlay after its bytes arrive (3f3288f)
- build(ci): build the macOS asset on a hosted runner, never a self-hosted one (12775d5)
- feat(build): let native-image size its own builder heap, and measure it (4314130)
- fix(companion): give the image viewer one Save, in the band beside the close (6c07f93)
- fix(companion): strip settings band sentences and close a column's last group (7c7eebf)
- fix(ci): make the hosted macOS fallback fit the free runner (fb7927c)
- fix(companion): raise the annotator composer above the keyboard (2141a57)
- feat(build): ship a beta track on free runners, not the mac builder (4430c74)
- fix(companion): reconnect a dark machine off All, in the background (1273b10)
- feat(build): stamp every native runtime with the commit that built it (c2abf4c)
- fix(cli): resolve sandbox PIL colours per mode and replace drawn ink (52a215b)
- fix(sandbox): answer two bands for an 'LA' image, as Pillow does (29fb1d4)
- docs(companion): record TestFlight build 4319 in the app changelog (3808060)
- fix(companion): brand the launch screen and name the Android channel (8088f81)
- fix(companion): reopen a session where the reader stopped reading (b5eb54d)
- fix(sandbox): read a paste mask's alpha band, not its blue channel (1187947)
- fix(companion): redraw the Android launcher and notification icons from the iOS master (a30ceb8)
- fix(companion): ask the sessions list for one page when nothing moved (1a9f510)
- fix(companion): tag Android alerts so the badge can clear (fe18740)
- fix(sandbox): address a fresh attachment in the block that made it (ed87779)
- docs(skills): regenerate the spel skill from spel 0.9.27 (13c6f6f)
- feat(companion): badge the icon with the alerts still waiting (666fa4b)
- fix(companion): put an opened note's Save in its header band (cd2ba07)
- fix(companion): wear the name's step on a status dot (0ff682b)
- fix(companion): frame the destructive confirm around its own cost (0aa7d76)
- feat(tui): hold a spoken conversation instead of a speech toggle (3338a1d)
- fix(companion): keep a project folded once you have folded it (581ed57)
- fix(companion): unbox the voice bands and drop the Off route (55cb6ff)
- docs(docs): plan making every capability an extension of one contract (6ac932d)
- refactor(contract): make the Python host an object, not a dict (137d006)
- fix(companion): strip the MCP band and land its verb as the list's last row (b71ab6b)
- feat(contract): give the host contract its own package (4cdcae1)
- fix(companion): make the providers action amber and unpin the blocked banner (41e8c3a)
- fix(companion): make lone settings verbs full width and align status dots (db90933)
- fix(companion): anchor the sessions list across every fleet arrival (012df17)
- fix(companion): keep a live session following once the reader arrives (1e79fb4)
- fix(companion): one verb in notifications, and demote nested panel bands (94024bc)
- feat(extensions): gate the Clojure host surface with a contract (82a3220)
- fix(companion): restore the machines verb and quiet the providers one (705a520)
- fix(companion): strip the providers band to its title and a short verb (6f0a5c0)
- refactor(loop): drop the native-tool leftovers from the one-tool wire (4647db9)
- fix(companion): rule the machine panel stack and cut its band prose (4cd3594)
- feat(run-tests): give a test run ten minutes in every pack (f01b6e9)
- feat(sandbox): give a Python block five minutes before the backstop (04be7c8)
- docs(python): write the package README example in the formatter's own shape (2d96a8b)
- feat(gateway): flag a session parked on a human across the fleet (ec56d83)
- ci(python): verify the package on the floor the engine's GraalPy sets (d85c63f)
- fix(python): dispatch the outside shell from the contract's own vocabulary (67d8ffc)
- feat(gateway): fold every window a fold_session key names (a9cf4de)
- perf(companion): fill pulled-in history sixteen segments a frame, not two (19ecbe5)
- docs(companion): record TestFlight build 4280 in the app changelog (bad2fb1)
- fix(companion): drop the trace a command turn never wrote (ce5caf1)
- fix(companion): disclose each machine's settings under its own row (936e3be)
- fix(companion): keep a reader's place when the keyboard comes and goes (6b8787d)
- fix(tui): repoint the table card test at the display's new home (dc0cc78)
- fix(shell): confirm an exited child's silence before reporting it (20f56cc)
- perf(companion): paint only the turns a session is showing (e5ec156)
- feat(shell): raise the wait budget and cap to thirty minutes (04225ae)
- perf(gateway): stop storing what a reader can re-derive (77587a1)
- feat(python): ship the extension API as the vis-agent package (93e379f)
- chore(repo): drop the TODO whose every item shipped (81bc8f9)
- docs(cli): close item 1 and record the residues nothing schedules (155bb80)
- test(bench): make the redaction test independent of the caller's environment (8b83864)
- docs(cli): record the TODO state after the doc and ranker work (27af056)
- chore(repo): reformat every Clojure and Python source in place (2770d1c)
- test(ci): pin the two loaded-runner flakes without a stopwatch (65b83f9)
- test(ci): own the espeak and pty-log preconditions the runners lack (886b34b)
- docs(docs): regenerate the spel agent skill for 0.9.26 (0f7446c)
- docs(cli): name the keys a test run answers with (98cda90)
- fix(ci): make the test suite green on both runners (0403732)
- feat(companion): give providers the machine row and its slide (21ec0d4)
- feat(cli): give a helper's docstring a gist, a page and a search hit (851ac83)
- docs(repo): delete banner rules and labels that repeat the code (39eeb17)
- docs(voice): trim manifest and JNI notes, drop the finished plan (6ff7b06)
- perf(companion): make a long live session scroll without stalling (e43f74c)
- feat(voice): carry every Piper voice at the highest level published (6183aff)
- docs(docs): show how a tool page renders and how apropos previews it (ebf0441)
- docs(cli): give every code verb in the core prompt its call shape (b2a63f6)
- fix(cli): answer the ask a model types, not the one the page assumes (84140ba)
- fix(cli): saturate the three ranked fields together, not one by one (ae1f3f4)
- fix(voice): hand sherpa a map the shipped binary can walk (24ea302)
- chore(docs): drop the session-id marker from the commit trailer (898dc0e)
- fix(companion): rank a machine only where there is a fleet (f55919e)
- fix(companion): release a pin the app itself had to break (7670b69)
- docs(voice): say why the progress callback is a deftype (297b36c)
- docs(cli): record what the tool pages answer today (e39420f)
- test(cli): follow the auto-title order to the Alibaba plan (191551d)
- fix(cli): stamp the call proto for a tool that takes no arguments (4192065)
- chore(cli): reformat three namespaces the formatter had drifted from (63cac8c)
- feat(gateway): keep the human's star on the gateway, not the device (da626a2)
- feat(voice): recover from a failed engine without restarting Vis (736fcb8)
- feat(cli): teach every tool page its call line and required keys (4eb4926)
- perf(companion): stop the hidden sessions list polling the fleet (110112c)
- fix(cli): sweep every unbounded ~/.vis directory, not just the logs (4f611f7)
- feat(companion): swipe the image gallery instead of pressing arrows (d9956d0)
- perf(companion): stop a keystroke re-rendering the hidden sessions list (7dfd4e9)
- feat(companion): choose where a reply is spoken, and in which voice (13e72b9)
- fix(cli): reclaim the sandbox's sockets, the third door onto a descriptor (ca68b23)
- chore(lint): clear every ruff and reflection warning in the tree (f5ed3ed)
- refactor(cli): reclaim every shim's host handles in one runtime registry (d483ce2)
- feat(voice): render THIRD_PARTY_MODELS.md from the model manifest (12608da)
- fix(cli): answer a bare apropos() with the listing's own shape (0e63625)
- chore(commits): minimal conventional commits that name their session (4841cc9)
- feat(grep): exclude globs drop files from the content sweep (9004114)
- A dropped PIL image gives its raster back (49d20b6)
- The ASR archive names its direction (b584a7f)
- The voice assets are named for what they are (b1f1599)
- A voice belongs to the machine, and the app can bring one (ee7adde)
- Fix iOS keyboard-safe companion modals (46ed794)
- Namespace skill slash commands (c947be7)
- Keep the inherited trace whole when the handover lands late (ef344cc)
- Give pocket-tts a voice: three clips we make, and any clip anyone brings (faaad44)
- apropos: answer a row per hit, not a bare first line (5e3ad66)
- Own the pocket-tts ONNX export: vendor the MIT layer, drop the clone (9be9db4)
- Export pocket-tts ourselves and publish it in the assets pack (dce9af6)
- A message keeps its ticker while its own POST is still on the wire (6d9db56)
- A parked run's push asks the question, not which session (e5d640d)
- A parked run's push says Action needed, and the body is the question (d05986a)
- Rank documents on a stamped corpus instead of rebuilding it per call (d12f581)
- The session heading keeps its row when the notch pushes it down (ba1c325)
- Ship only what we make: assets-only pack, espeak from the system (2f9e2c1)
- Companion: a machine row is one line, and its address is a swipe verb (957f370)
- bm25: extract the ranker and make it fast and shareable (1d36ba9)
- Re-judge the live-to-persisted handover on every reconcile tick (bcf95fc)
- Probe the router fleet in parallel so the phone's Providers screen paints (7193aa3)
- apropos: rank with BM25F instead of ANDing terms (84b53c5)
- Ship the voice assets pack and add Ryan as the first opt-in voice (a939800)
- Speak locally: a licence-carrying asset manifest, Piper voices, pocket-tts opt-in (19c5655)
- Speak over HTTP: /v1/sessions/:sid/speech, its job stream and features.speech (a586424)
- voice: one registry for both directions, keyed by transcribe or synthesize (40c9d24)
- Primitive math in the balancer's hot loops, and no boxed math left in the tree (7c40a20)
- Fetch only this platform's sherpa-onnx native, and plan speech into voice.clj (4442a2d)
- balance: seat a repaired delimiter where the replaced text had it (08142bd)
- voice: take upstream sherpa-onnx v1.13.5 and delete the ONNX Runtime pin (f99eaee)
- providers: add the Alibaba Coding Plan and Token Plan endpoints (25f540f)
- Settle the pocket-tts gate and the shipped voice list in PLAN.md (4e98cbd)
- Plan speech output as an engine registry on upstream sherpa-onnx (54a0353)
- vis-agent: run the checkout it sits in when nothing is installed (d7af0c8)
- format: the delimiter repair is add-only there too (5edf444)
- cli: finish the vis -> vis-agent rename in text that tells you what to run (ec7ce29)
- Delimiter repair adds only: never delete a closer the edit wrote (28636b4)
- Run what is installed, never the checkout the command sits in (b92a16d)
- Re-read a swiped row's offset every frame it claims to be open (6bea3d6)
- Remove the runtime selector: what is installed is what runs (cf3ffd7)
- Refuse a delimiter repair that moves or retypes what the caller wrote (53ca5ef)
- Remove the dev runtime: vis-agent installs and runs under ~/.vis (b7c4b29)
- Record Companion TestFlight build 4179 in the app changelog (f324ec5)
- Repair an edit's delimiters from the file, never from the fragment (1c55f10)
- Ask which address a machine uses on the machine's own line (258f80c)
- A warm-up owns the failure of a load nobody is waiting for (3deb6f0)
- Companion: the model picker's verbs stand in its band, and the sheet stops at its content (d6e9309)
- Fix #145 in the app's last carrier: an answer promoted out of a content-less row (fa2a29c)
- Fix #145: paint a settled answer exactly once, in the TUI and the companion (c70b464)
- Every editor write is atomic, and a refused struct_patch batch is rolled back (12d2ad3)
- A helper's
returnsettles its tool calls, so the caller never gets a thunk (2be4b07) - The gateway keeps "no AI provider" typed, so the TUI opens the dialog (eefc71c)
- release: update release notes for v0.1.38 (6b2f66d)
com.blockether/vis-channel-tui
- feat(tui): hold a spoken conversation instead of a speech toggle (3338a1d)
- feat(gateway): flag a session parked on a human across the fleet (ec56d83)
- fix(tui): repoint the table card test at the display's new home (dc0cc78)
- perf(gateway): stop storing what a reader can re-derive (77587a1)
- test(ci): pin the two loaded-runner flakes without a stopwatch (65b83f9)
- fix(ci): make the test suite green on both runners (0403732)
- docs(repo): delete banner rules and labels that repeat the code (39eeb17)
- chore(tui): reformat the command suggestion namespace (1029649)
- Namespace skill slash commands (c947be7)
- Primitive math in the balancer's hot loops, and no boxed math left in the tree (7c40a20)
- cli: finish the vis -> vis-agent rename in text that tells you what to run (ec7ce29)
- Land every TUI duration and id badge on one right edge (7a8be54)
- Paint the call duration on every TUI result, not just carded ones (7ac776b)
- Close the gap the removed duration marker left in the marker tables (f4636de)
- The TUI tells how long each tool call took, as the companion always has (4c98c74)
- Keep the direct push in the magit push transient (issue #144) (ec6eaaa)
- Fix #145: paint a settled answer exactly once, in the TUI and the companion (c70b464)
- The gateway keeps "no AI provider" typed, so the TUI opens the dialog (eefc71c)
com.blockether/vis-foundation-bridge
- fix(ci): make the test suite green on both runners (0403732)
- docs(repo): delete banner rules and labels that repeat the code (39eeb17)
- feat(cli): teach every tool page its call line and required keys (4eb4926)
com.blockether/vis-foundation-search
- refactor(loop): drop the native-tool leftovers from the one-tool wire (4647db9)
- fix(ci): make the test suite green on both runners (0403732)
- docs(repo): delete banner rules and labels that repeat the code (39eeb17)
- feat(cli): teach every tool page its call line and required keys (4eb4926)
com.blockether/vis-foundation-voice
- feat(tui): hold a spoken conversation instead of a speech toggle (3338a1d)
- test(ci): own the espeak and pty-log preconditions the runners lack (886b34b)
- docs(repo): delete banner rules and labels that repeat the code (39eeb17)
- docs(voice): trim manifest and JNI notes, drop the finished plan (6ff7b06)
- feat(voice): carry every Piper voice at the highest level published (6183aff)
- fix(voice): hand sherpa a map the shipped binary can walk (24ea302)
- feat(voice): recover from a failed engine without restarting Vis (736fcb8)
- chore(lint): clear every ruff and reflection warning in the tree (f5ed3ed)
- feat(voice): render THIRD_PARTY_MODELS.md from the model manifest (12608da)
- The ASR archive names its direction (b584a7f)
- The voice assets are named for what they are (b1f1599)
- Give pocket-tts a voice: three clips we make, and any clip anyone brings (faaad44)
- Own the pocket-tts ONNX export: vendor the MIT layer, drop the clone (9be9db4)
- Export pocket-tts ourselves and publish it in the assets pack (dce9af6)
- Ship only what we make: assets-only pack, espeak from the system (2f9e2c1)
- Ship the voice assets pack and add Ryan as the first opt-in voice (a939800)
- Speak locally: a licence-carrying asset manifest, Piper voices, pocket-tts opt-in (19c5655)
- voice: one registry for both directions, keyed by transcribe or synthesize (40c9d24)
- Fetch only this platform's sherpa-onnx native, and plan speech into voice.clj (4442a2d)
- voice: take upstream sherpa-onnx v1.13.5 and delete the ONNX Runtime pin (f99eaee)
com.blockether/vis-language-clojure
- refactor(loop): drop the native-tool leftovers from the one-tool wire (4647db9)
- feat(run-tests): give a test run ten minutes in every pack (f01b6e9)
- feat(shell): raise the wait budget and cap to thirty minutes (04225ae)
- fix(ci): make the test suite green on both runners (0403732)
- docs(repo): delete banner rules and labels that repeat the code (39eeb17)
- balance: seat a repaired delimiter where the replaced text had it (08142bd)
- format: the delimiter repair is add-only there too (5edf444)
- Delimiter repair adds only: never delete a closer the edit wrote (28636b4)
- Refuse a delimiter repair that moves or retypes what the caller wrote (53ca5ef)
- Repair an edit's delimiters from the file, never from the fragment (1c55f10)
com.blockether/vis-language-python
- feat(run-tests): give a test run ten minutes in every pack (f01b6e9)
- fix(ci): make the test suite green on both runners (0403732)
- docs(repo): delete banner rules and labels that repeat the code (39eeb17)
com.blockether/vis-language-typescript-bun
- fix(ci): make the test suite green on both runners (0403732)
- docs(repo): delete banner rules and labels that repeat the code (39eeb17)
com.blockether/vis-persistance-sqlite
- fix(sandbox): address a fresh attachment in the block that made it (ed87779)
- feat(gateway): reclaim the SQLite freelist once a fortnight (9e2d5c2)
- fix(gateway): drop a retired column SQLite was refusing to drop (2c4e59e)
- perf(gateway): stop storing what a reader can re-derive (77587a1)
- fix(ci): make the test suite green on both runners (0403732)
- docs(repo): delete banner rules and labels that repeat the code (39eeb17)
- fix(persistance): bound the SQLite -wal sidecar with journal_size_limit (e0aa375)
- feat(gateway): keep the human's star on the gateway, not the device (da626a2)
- Primitive math in the balancer's hot loops, and no boxed math left in the tree (7c40a20)
- cli: finish the vis -> vis-agent rename in text that tells you what to run (ec7ce29)
com.blockether/vis-provider-alibaba
- fix(ci): make the test suite green on both runners (0403732)
- docs(repo): delete banner rules and labels that repeat the code (39eeb17)
- providers: add the Alibaba Coding Plan and Token Plan endpoints (25f540f)
com.blockether/vis-provider-anthropic
- fix(ci): make the test suite green on both runners (0403732)
- Primitive math in the balancer's hot loops, and no boxed math left in the tree (7c40a20)
com.blockether/vis-provider-github-copilot
- fix(ci): make the test suite green on both runners (0403732)
- docs(repo): delete banner rules and labels that repeat the code (39eeb17)
- Primitive math in the balancer's hot loops, and no boxed math left in the tree (7c40a20)
com.blockether/vis-provider-openai-codex
- fix(ci): make the test suite green on both runners (0403732)
- docs(repo): delete banner rules and labels that repeat the code (39eeb17)
- Primitive math in the balancer's hot loops, and no boxed math left in the tree (7c40a20)
- cli: finish the vis -> vis-agent rename in text that tells you what to run (ec7ce29)
com.blockether/vis-provider-opencode-go
- fix(ci): make the test suite green on both runners (0403732)
- docs(repo): delete banner rules and labels that repeat the code (39eeb17)
com.blockether/vis-provider-openrouter
- fix(ci): make the test suite green on both runners (0403732)
- docs(repo): delete banner rules and labels that repeat the code (39eeb17)
com.blockether/vis-provider-standard
- fix(ci): make the test suite green on both runners (0403732)
com.blockether/vis-provider-zai
- fix(ci): make the test suite green on both runners (0403732)
- docs(repo): delete banner rules and labels that repeat the code (39eeb17)
Full Changelog: v0.1.38...v0.1.39