Skip to content

v0.1.41

Choose a tag to compare

@github-actions github-actions released this 21 Aug 01:49
· 823 commits to main since this release

What's Changed

  • chore(release): v0.1.41 (845c396)
  • feat(companion): tighten composer footer spacing (8e61800)
  • feat(tui): clarify response footer controls (e9a90f4)
  • feat(live): return optimized model results (ec9864e)
  • fix(cli): merge Ubuntu and Windows trust in WSL (aeceaa0)
  • fix(companion): keep keyboard open after send (cc88261)
  • chore(docs): regenerate spel agents for 0.9.31 (b500dcb)
  • fix(companion): retain finished job details (4bed954)
  • fix(companion): keep fenced code ragged (4a67ac7)
  • fix(companion): keep markdown code spans ragged (eaee188)
  • refactor(extensions): remove duplicate CI activity (28e9aaa)
  • fix(companion): resume Android beta publishing (c724b13)
  • chore(cli): bump svar to 0.7.126 (994c7ff)
  • refactor(extensions): share live view test harness (b16203e)
  • fix(companion): rename quick reasoning effort to low (19cc394)
  • fix(companion): restore the verbosity composer control (6787fe8)
  • style(companion): preserve live artifact formatting (0e34d4c)
  • fix(companion): settle superseded CI states (57d22fc)
  • fix(cli): find parent tests for nested sources (a2d6ae3)
  • fix(companion): scope tester notes to app changes (4485e3c)
  • docs(companion): record TestFlight build 4618 (27a5ffb)
  • docs(cli): record parinferish 0.1.1 in audit (0260298)
  • fix(companion): sync selected GitHub job (73bce25)
  • docs(companion): record TestFlight build 4615 (7b847c0)
  • fix(cli): consume parinferish closer relocation (e2cd4f7)
  • feat(cli): carry Windows trust through WSL (485363e)
  • feat(cli): discover system certificate stores (52677f5)
  • fix(tui): anchor finished live runs (a614c90)
  • chore(cli): add clj-parinferish workspace root (93d5fdc)
  • fix(extensions): isolate live views from test runs (3c64395)
  • fix(companion): keep short responses beside composer (992185d)
  • fix(extensions): show GitHub run start time (fd24cd3)
  • fix(companion): load session totals with list (58c8a38)
  • fix(live): harden GitHub watches and name NDJSON (0895470)
  • fix(companion): keep composer pinned during keyboard dismissal (8b07ee5)
  • fix(companion): collapse repeated live run cuts (f0500d7)
  • fix(tui): stop watching superseded CI runs (8094319)
  • fix(companion): preserve interrupted live records (ef73c02)
  • fix(tui): show live CI job activity (c15bcc1)
  • ci(release): use GitHub-hosted macOS runners (4ad2f02)
  • docs(gateway): refresh dependency audit (183f726)
  • build(gateway): bump svar to 0.7.125 (18173bb)
  • feat(tui): minimize active live views (a94cc82)
  • fix(tui): expand and focus live CI jobs (6f5d678)
  • chore(release): merge concurrent main update (90b9d3c)
  • fix(release): install macOS native test dependency (9e0c63d)
  • fix(shell): slice log pages as output text (5ff3caa)
  • fix(release): install macOS native test dependency (057078e)
  • fix(shell): slice log pages as output text (d6e4dfa)
  • fix(gateway): scale folding budget for small contexts (e33c08a)
  • feat(shell): page log windows on the handle (4484638)
  • ci(release): run macOS native image on Blacksmith (fb934f4)
  • feat(companion): focus live CI jobs (47cc50a)
  • chore(gateway): merge concurrent main update (e5b4aac)
  • fix(gateway): count every successful session fold (71e3b73)
  • fix(gateway): skip auto-title after cancelled turns (851f419)
  • fix(gateway): keep a session pinned to the provider it named (0e5fdf5)
  • fix(engine): unwedge a turn queued behind a leaked Python GIL (b3c78e4)
  • fix(editing): gate-check grep paths as given, not their parent dir (b9af259)
  • fix(loop): keep the record of a view a stopped block abandoned (df1280b)
  • build(ci): run every macOS job on our own Apple-silicon runner (d19f663)
  • fix(ci): close the test sandboxes that were exhausting the heap (a91da27)
  • ci(gateway): give the Linux test suite the heap it needs (dab6dfb)
  • fix(ci): resolve the lint and test failures blocking the pipeline (a6b0918)
  • fix(companion): settle Settings on the machine a session came from (ef54e23)
  • docs(docs): state the boundary, do not prescribe the call site (4e77cf5)
  • docs(docs): a Path crosses a tool boundary as itself (73f906e)
  • fix(docs): let a lower-case ask reach a camelCase name (3ea6c27)
  • fix(companion): save the machine this device found dark (010d8cd)
  • refactor(cli): drop the duplicate by-cwd view from tool results (86a3537)
  • docs(python): a capped grep names next(r), not a retyped call (28cfaeb)
  • refactor(python): walk grep pages with next(), not more() (aadf51d)
  • fix(tui): copy short thinking blocks independently (27bf4de)
  • fix(tui): apply settings through gateway (0d4114f)
  • feat(python): page a capped grep from the result itself (133fd9c)
  • docs(changelog): record the shell out rename and the daemon live view (5c352fe)
  • refactor(shell): name the merged pty stream out (879c79c)
  • fix(tui): paint live views raised in the serve daemon (c0ceb78)
  • fix(python): give the PIL shim Pillow's whole helper-module surface (e87af58)
  • fix(loop): stop create-environment abandoning its sandbox when a later step fails (0a80cc7)
  • feat(sandbox): one canonical teardown, so no site has to remember the order (ef71d02)
  • fix(python): close the Engine with contexts built outside python-extensions (251f5d7)
  • docs(cli): say the pty merges stderr into stdout (0942564)
  • fix(companion): shorten the composer's queued placeholder (ab87a9e)
  • fix(cli): close the PIL shim's remaining Pillow gaps (4dd507f)
  • fix(companion): let the human, not the mounted screen, take a share (3f97a49)
  • fix(sandbox): give PIL the CSS colours, hsl wheels and a real mode filter (76fbe23)
  • feat(companion): accept shared files and let the share pick its session (86d3fac)
  • fix(companion): hold the fleet scope through one dropped read (e7d184d)
  • fix(python): own the condition lock across gather children (e68c119)
  • feat(config): declare a non-secret literal in environment: (a50b09c)
  • docs(release): record companion TestFlight build 4546 (bd90845)
  • feat(shell): scroll the log line window back up with a negative count (a46b910)
  • fix(tui): paint a recording's transcript as a quotation, not code (ac9e2bd)
  • fix(companion): quote a memo's transcript instead of icing it (1c2dc41)
  • fix(loop): dispose the env a cache insert displaces (22210bd)
  • fix(cli): fold near-miss tool keywords instead of refusing the call (2351576)
  • fix(tui): wrap a recording's transcript on words, not columns (2132830)
  • feat(companion): open a recording's transcription under its player (1fc0f9f)
  • feat(tui): fold a recording's transcript under the turn that carried it (e8b8c9e)
  • feat(gateway): transcribe an attached recording into the model's manifest (898ca2e)
  • feat(config): let an issued credential name its wire dialect (fcf08a7)
  • docs(docs): break the walls of text into lists, tables and steps (09fe391)
  • fix(tui): let the wheel own every row the live band paints (8ae7c40)
  • feat(config): one forgiving, validated wire-dialect vocabulary (845d807)
  • fix(companion): say which live view the running row is showing (3830f09)
  • fix(tui): say which live view the running row is showing (f03c362)
  • docs(cli): one shape for a tool's doc page, cross-validated against the handlers (9ebe5f5)
  • feat(extensions): keep a gh watch moving and settle it into one picture (ede8099)
  • fix(cli): keep project-scoped blocks out of the machine store (4fa5ecc)
  • fix(companion): name an Android octet-stream pick by its extension (8a972d1)
  • fix(tui): isolate a dropped recording path like a dropped picture (6587b6a)
  • feat(gateway): sniff every recorder format, not only the m4a (f59a117)
  • docs(docs): one canonical page shape, and a gate that keeps it (fca795d)
  • feat(cli): run_tests takes deps.edn aliases for the clean-JVM run (a92be52)
  • feat(companion): reach any file from + and play what it cannot show (c4c0914)
  • feat(gateway): accept voice recordings as attachments (1fc0d28)
  • docs(cli): the language verbs state the requiredness they enforce (1534fd7)
  • chore(deps): bump imaging to 0.1.10 so an empty deck opens (2e9aa9c)
  • chore(deps): bump svar to 0.7.124 (6ed5893)
  • test(providers): prove MANAGED crosses the Python extension boundary (c79a567)
  • docs(cli): run_tests and repl_eval state requiredness and the project spelling (a91d72e)
  • feat(providers): let an extension declare a MANAGED provider (95a29c1)
  • fix(language-surface): read project as cwd on every language verb (8f35760)
  • fix(tui): read an OPTION in the band, and wrap over-wide headings (c57466f)
  • docs(release): record the TestFlight builds 4488 and 4508 (20065ed)
  • fix(tui): measure dialog widths in lanterna columns, not chars (dfa9196)
  • fix(human-input): file a late close onto its iteration, not a dead block (682665b)
  • docs(docs): drop sub-agent vocabulary and the drifting host-op count (2d71f83)
  • fix(tui): file a finished run as a transcript row, not band furniture (e379b3b)
  • fix(python): one spelling, runner, for the test backend on every surface (4719ef9)
  • perf(companion): ask each machine once for its notifications state (057697b)
  • fix(python): take a pathlib.Path wherever a shim takes a path (020727b)
  • fix(companion): answer every machine's notifications row before it is opened (281c28d)
  • test(python): dispose three more single-test sandboxes (95037c6)
  • fix(extensions): let a gh watch run as long as the run does (1921620)
  • style(repo): format every namespace with the canonical formatter (211f498)
  • fix(build): keep the formatter alive on a binding form inside #() (2575e9a)
  • fix(gateway): retire a client lease that stopped talking (8670f3a)
  • refactor(gateway): identify a source build by its commit alone (62ff92d)
  • fix(human-input): stop billing a watched run any deadline at all (2a24b9e)
  • feat(cli): say which build the gateway is running, and what replaces it (659a7e4)
  • fix(human-input): let a live view own the wall of the block watching it (1316180)
  • fix(languages): read a failed REPL start the same way in every language (2b2ed34)
  • fix(gateway): refuse a status this build cannot read (9687d8f)
  • feat(gateway): identify a dev build by its commit, not by "dev" (c93567d)
  • feat(gateway): pick up a new build when nobody is using the old daemon (bcc0c82)
  • fix(languages): one REPL lifecycle contract for every language (8d3849c)
  • fix(gateway): let a managed daemon die when nothing is watching it (7b1c56d)
  • test(languages): read pack test counts by their contract names (aae6e50)
  • fix(language-surface): refuse a bare string where repl options belong (1510475)
  • fix(language-surface): keep repl_stop(id) an id, whatever trails it (3bf0134)
  • docs(config): point whole-store writers at update-machine-config! (5d3859c)
  • test(posix-shim): dispose the sandboxes this suite builds for itself (526305a)
  • fix(companion): paint the stored palette on the first frame (9da688d)
  • test(network-guard): close the Engine with the sandbox it belongs to (7d8173d)
  • test(config): cover removed_providers in the exhaustive config fixture (89ac152)
  • feat(providers): make deleting a provider actually delete it (e058c89)
  • test(python): give a sandbox the lifetime of the test that needs it (b79dee1)
  • fix(gateway): say why a provider cannot be deleted instead of silently refusing (b839b72)
  • docs(language-surface): name the four repl lifecycle verbs (413640b)
  • docs(cli): describe ls's tree string where the sandbox reads it (831eeb4)
  • fix(gateway): count folds from the turn ctx ledger (2afd2a9)
  • fix(gateway): let /projects/overview and /projects/:pid coexist (525f69c)
  • feat(companion): paint project counts from the gateway's own overview (2137564)
  • feat(cli): render ls as one compact tree string (e192628)
  • fix(companion): inset every panel verb instead of running it full bleed (6f15c5e)
  • chore(python): format _outside.py the way ruff 0.16.3 does (d8b5815)
  • fix(companion): match the notification verb to the panel action box (12ba1ba)
  • fix(companion): show a just-created session without tapping the pill (a6746f2)
  • docs(gateway): correct the remote-target claims to what the code does (f5c63b4)
  • feat(companion): fork a session from its own slide, whole or at a turn (f6c4265)
  • fix(gateway): store settings without folding the config tiers (8aba1aa)
  • fix(python): cross a live view's first op on a freshly booted machine (a075a41)
  • feat(extensions): watch a GitHub Actions run in one live view (c682f13)
  • fix(companion): open the projects mark on the inventory, not the browser (c2e5d41)
  • fix(loop): keep a failed block's printed output on the wire (f1e8792)
  • docs(cli): name the remote gateway flags in help, not only in the docs (f10f059)
  • fix(gateway): unbox the log page window and drop two dead test bindings (4821af9)
  • fix(sandbox): repair the PIL envelope arity, and stop repeating the scope (10aeef0)
  • feat(sandbox): a shim declares what it lends the guest, and gets the lifetime free (fb58b8f)
  • fix(sandbox): tie a guest's host objects to the session that opened them (1a7ba8f)
  • docs(test): name the double-registration trap in the shared sandbox (b4dee14)
  • refactor(loop): delete the child-env plumbing sub_loop was the only user of (bb918bd)
  • fix(python): one GraalPy Engine per session, not one per process (66bff4f)
  • refactor(harness): drop the agent() verb and every sub_loop caller (2bafa1d)
  • docs(release): record the TestFlight build testers now have (4f59e0d)
  • refactor(human-input): stop publishing what only the sink itself calls (f03e0dd)
  • fix(human-input): serve a settled view's record, and file it on a stop (3fc614c)
  • feat(human-input): settle a finished live view into an artifact (b943593)
  • fix(contract): freeze the live materializer the TUI channel reads (cb1cd22)
  • refactor(gateway): serve on Jetty 12 core, drop the ee9 servlet layer (d122fd9)
  • docs(gateway): name the commands a remote target does not redirect (556fc22)
  • feat(gateway): drive a remote gateway from the command line (8574bea)
  • test(gateway): pin that a leaving gateway publishes held patches (fa732df)
  • refactor(gateway): delete unread live surface, flush patches on stop (e4010ff)
  • feat(human-input): arrange a live view with the form's own groups (4269ec1)
  • fix(companion): read the armed pull-to-search band (1d9620d)
  • fix(companion): load the session list behind an open transcript (687b121)
  • fix(companion): keep the turn either side of the reader laid out (5b21f1c)
  • test(tui): show the aside band whole and pin is_aside outside Vis (f36b60e)
  • feat(tui): fill the band, paint inline markdown, and stand a node aside (2dc4e63)
  • feat(human-input): let a human stop any live view, with a note (898b43f)
  • feat(companion): watch and stop a live view from the phone (10ca1f3)
  • feat(cli): open live views from a Python extension (d591117)

Package changes

com.blockether/vis

  • chore(release): v0.1.41 (845c396)
  • feat(companion): tighten composer footer spacing (8e61800)
  • feat(tui): clarify response footer controls (e9a90f4)
  • feat(live): return optimized model results (ec9864e)
  • fix(cli): merge Ubuntu and Windows trust in WSL (aeceaa0)
  • fix(companion): keep keyboard open after send (cc88261)
  • chore(docs): regenerate spel agents for 0.9.31 (b500dcb)
  • fix(companion): retain finished job details (4bed954)
  • fix(companion): keep fenced code ragged (4a67ac7)
  • fix(companion): keep markdown code spans ragged (eaee188)
  • refactor(extensions): remove duplicate CI activity (28e9aaa)
  • fix(companion): resume Android beta publishing (c724b13)
  • chore(cli): bump svar to 0.7.126 (994c7ff)
  • refactor(extensions): share live view test harness (b16203e)
  • fix(companion): rename quick reasoning effort to low (19cc394)
  • fix(companion): restore the verbosity composer control (6787fe8)
  • style(companion): preserve live artifact formatting (0e34d4c)
  • fix(companion): settle superseded CI states (57d22fc)
  • fix(companion): scope tester notes to app changes (4485e3c)
  • docs(companion): record TestFlight build 4618 (27a5ffb)
  • docs(cli): record parinferish 0.1.1 in audit (0260298)
  • fix(companion): sync selected GitHub job (73bce25)
  • docs(companion): record TestFlight build 4615 (7b847c0)
  • fix(cli): consume parinferish closer relocation (e2cd4f7)
  • feat(cli): carry Windows trust through WSL (485363e)
  • feat(cli): discover system certificate stores (52677f5)
  • fix(tui): anchor finished live runs (a614c90)
  • chore(cli): add clj-parinferish workspace root (93d5fdc)
  • fix(extensions): isolate live views from test runs (3c64395)
  • fix(companion): keep short responses beside composer (992185d)
  • fix(extensions): show GitHub run start time (fd24cd3)
  • fix(companion): load session totals with list (58c8a38)
  • fix(live): harden GitHub watches and name NDJSON (0895470)
  • fix(companion): keep composer pinned during keyboard dismissal (8b07ee5)
  • fix(companion): collapse repeated live run cuts (f0500d7)
  • fix(tui): stop watching superseded CI runs (8094319)
  • fix(companion): preserve interrupted live records (ef73c02)
  • fix(tui): show live CI job activity (c15bcc1)
  • ci(release): use GitHub-hosted macOS runners (4ad2f02)
  • docs(gateway): refresh dependency audit (183f726)
  • build(gateway): bump svar to 0.7.125 (18173bb)
  • feat(tui): minimize active live views (a94cc82)
  • fix(tui): expand and focus live CI jobs (6f5d678)
  • fix(release): install macOS native test dependency (9e0c63d)
  • fix(shell): slice log pages as output text (5ff3caa)
  • fix(gateway): scale folding budget for small contexts (e33c08a)
  • feat(shell): page log windows on the handle (4484638)
  • ci(release): run macOS native image on Blacksmith (fb934f4)
  • feat(companion): focus live CI jobs (47cc50a)
  • fix(gateway): skip auto-title after cancelled turns (851f419)
  • fix(gateway): keep a session pinned to the provider it named (0e5fdf5)
  • fix(engine): unwedge a turn queued behind a leaked Python GIL (b3c78e4)
  • fix(editing): gate-check grep paths as given, not their parent dir (b9af259)
  • fix(loop): keep the record of a view a stopped block abandoned (df1280b)
  • build(ci): run every macOS job on our own Apple-silicon runner (d19f663)
  • fix(ci): close the test sandboxes that were exhausting the heap (a91da27)
  • ci(gateway): give the Linux test suite the heap it needs (dab6dfb)
  • fix(ci): resolve the lint and test failures blocking the pipeline (a6b0918)
  • fix(companion): settle Settings on the machine a session came from (ef54e23)
  • docs(docs): state the boundary, do not prescribe the call site (4e77cf5)
  • docs(docs): a Path crosses a tool boundary as itself (73f906e)
  • fix(docs): let a lower-case ask reach a camelCase name (3ea6c27)
  • fix(companion): save the machine this device found dark (010d8cd)
  • refactor(cli): drop the duplicate by-cwd view from tool results (86a3537)
  • docs(python): a capped grep names next(r), not a retyped call (28cfaeb)
  • refactor(python): walk grep pages with next(), not more() (aadf51d)
  • fix(tui): apply settings through gateway (0d4114f)
  • feat(python): page a capped grep from the result itself (133fd9c)
  • docs(changelog): record the shell out rename and the daemon live view (5c352fe)
  • refactor(shell): name the merged pty stream out (879c79c)
  • fix(tui): paint live views raised in the serve daemon (c0ceb78)
  • fix(python): give the PIL shim Pillow's whole helper-module surface (e87af58)
  • fix(loop): stop create-environment abandoning its sandbox when a later step fails (0a80cc7)
  • feat(sandbox): one canonical teardown, so no site has to remember the order (ef71d02)
  • fix(python): close the Engine with contexts built outside python-extensions (251f5d7)
  • docs(cli): say the pty merges stderr into stdout (0942564)
  • fix(companion): shorten the composer's queued placeholder (ab87a9e)
  • fix(cli): close the PIL shim's remaining Pillow gaps (4dd507f)
  • fix(companion): let the human, not the mounted screen, take a share (3f97a49)
  • fix(sandbox): give PIL the CSS colours, hsl wheels and a real mode filter (76fbe23)
  • feat(companion): accept shared files and let the share pick its session (86d3fac)
  • fix(companion): hold the fleet scope through one dropped read (e7d184d)
  • fix(python): own the condition lock across gather children (e68c119)
  • feat(config): declare a non-secret literal in environment: (a50b09c)
  • docs(release): record companion TestFlight build 4546 (bd90845)
  • feat(shell): scroll the log line window back up with a negative count (a46b910)
  • fix(companion): quote a memo's transcript instead of icing it (1c2dc41)
  • fix(loop): dispose the env a cache insert displaces (22210bd)
  • fix(cli): fold near-miss tool keywords instead of refusing the call (2351576)
  • feat(companion): open a recording's transcription under its player (1fc0f9f)
  • feat(gateway): transcribe an attached recording into the model's manifest (898ca2e)
  • feat(config): let an issued credential name its wire dialect (fcf08a7)
  • docs(docs): break the walls of text into lists, tables and steps (09fe391)
  • fix(tui): let the wheel own every row the live band paints (8ae7c40)
  • feat(config): one forgiving, validated wire-dialect vocabulary (845d807)
  • fix(companion): say which live view the running row is showing (3830f09)
  • docs(cli): one shape for a tool's doc page, cross-validated against the handlers (9ebe5f5)
  • feat(extensions): keep a gh watch moving and settle it into one picture (ede8099)
  • fix(cli): keep project-scoped blocks out of the machine store (4fa5ecc)
  • fix(companion): name an Android octet-stream pick by its extension (8a972d1)
  • feat(gateway): sniff every recorder format, not only the m4a (f59a117)
  • docs(docs): one canonical page shape, and a gate that keeps it (fca795d)
  • feat(cli): run_tests takes deps.edn aliases for the clean-JVM run (a92be52)
  • feat(companion): reach any file from + and play what it cannot show (c4c0914)
  • feat(gateway): accept voice recordings as attachments (1fc0d28)
  • docs(cli): the language verbs state the requiredness they enforce (1534fd7)
  • chore(deps): bump imaging to 0.1.10 so an empty deck opens (2e9aa9c)
  • chore(deps): bump svar to 0.7.124 (6ed5893)
  • test(providers): prove MANAGED crosses the Python extension boundary (c79a567)
  • docs(cli): run_tests and repl_eval state requiredness and the project spelling (a91d72e)
  • feat(providers): let an extension declare a MANAGED provider (95a29c1)
  • fix(language-surface): read project as cwd on every language verb (8f35760)
  • docs(release): record the TestFlight builds 4488 and 4508 (20065ed)
  • fix(human-input): file a late close onto its iteration, not a dead block (682665b)
  • docs(docs): drop sub-agent vocabulary and the drifting host-op count (2d71f83)
  • fix(tui): file a finished run as a transcript row, not band furniture (e379b3b)
  • fix(python): one spelling, runner, for the test backend on every surface (4719ef9)
  • perf(companion): ask each machine once for its notifications state (057697b)
  • fix(python): take a pathlib.Path wherever a shim takes a path (020727b)
  • fix(companion): answer every machine's notifications row before it is opened (281c28d)
  • test(python): dispose three more single-test sandboxes (95037c6)
  • fix(extensions): let a gh watch run as long as the run does (1921620)
  • style(repo): format every namespace with the canonical formatter (211f498)
  • fix(build): keep the formatter alive on a binding form inside #() (2575e9a)
  • fix(gateway): retire a client lease that stopped talking (8670f3a)
  • refactor(gateway): identify a source build by its commit alone (62ff92d)
  • fix(human-input): stop billing a watched run any deadline at all (2a24b9e)
  • feat(cli): say which build the gateway is running, and what replaces it (659a7e4)
  • fix(human-input): let a live view own the wall of the block watching it (1316180)
  • fix(languages): read a failed REPL start the same way in every language (2b2ed34)
  • fix(gateway): refuse a status this build cannot read (9687d8f)
  • feat(gateway): identify a dev build by its commit, not by "dev" (c93567d)
  • feat(gateway): pick up a new build when nobody is using the old daemon (bcc0c82)
  • fix(languages): one REPL lifecycle contract for every language (8d3849c)
  • fix(gateway): let a managed daemon die when nothing is watching it (7b1c56d)
  • fix(language-surface): refuse a bare string where repl options belong (1510475)
  • fix(language-surface): keep repl_stop(id) an id, whatever trails it (3bf0134)
  • docs(config): point whole-store writers at update-machine-config! (5d3859c)
  • test(posix-shim): dispose the sandboxes this suite builds for itself (526305a)
  • fix(companion): paint the stored palette on the first frame (9da688d)
  • test(network-guard): close the Engine with the sandbox it belongs to (7d8173d)
  • test(config): cover removed_providers in the exhaustive config fixture (89ac152)
  • feat(providers): make deleting a provider actually delete it (e058c89)
  • test(python): give a sandbox the lifetime of the test that needs it (b79dee1)
  • fix(gateway): say why a provider cannot be deleted instead of silently refusing (b839b72)
  • docs(language-surface): name the four repl lifecycle verbs (413640b)
  • docs(cli): describe ls's tree string where the sandbox reads it (831eeb4)
  • fix(gateway): let /projects/overview and /projects/:pid coexist (525f69c)
  • feat(companion): paint project counts from the gateway's own overview (2137564)
  • feat(cli): render ls as one compact tree string (e192628)
  • fix(companion): inset every panel verb instead of running it full bleed (6f15c5e)
  • chore(python): format _outside.py the way ruff 0.16.3 does (d8b5815)
  • fix(companion): match the notification verb to the panel action box (12ba1ba)
  • fix(companion): show a just-created session without tapping the pill (a6746f2)
  • docs(gateway): correct the remote-target claims to what the code does (f5c63b4)
  • feat(companion): fork a session from its own slide, whole or at a turn (f6c4265)
  • fix(gateway): store settings without folding the config tiers (8aba1aa)
  • fix(python): cross a live view's first op on a freshly booted machine (a075a41)
  • feat(extensions): watch a GitHub Actions run in one live view (c682f13)
  • fix(companion): open the projects mark on the inventory, not the browser (c2e5d41)
  • fix(loop): keep a failed block's printed output on the wire (f1e8792)
  • docs(cli): name the remote gateway flags in help, not only in the docs (f10f059)
  • fix(gateway): unbox the log page window and drop two dead test bindings (4821af9)
  • fix(sandbox): repair the PIL envelope arity, and stop repeating the scope (10aeef0)
  • feat(sandbox): a shim declares what it lends the guest, and gets the lifetime free (fb58b8f)
  • fix(sandbox): tie a guest's host objects to the session that opened them (1a7ba8f)
  • docs(test): name the double-registration trap in the shared sandbox (b4dee14)
  • refactor(loop): delete the child-env plumbing sub_loop was the only user of (bb918bd)
  • fix(python): one GraalPy Engine per session, not one per process (66bff4f)
  • refactor(harness): drop the agent() verb and every sub_loop caller (2bafa1d)
  • docs(release): record the TestFlight build testers now have (4f59e0d)
  • refactor(human-input): stop publishing what only the sink itself calls (f03e0dd)
  • fix(human-input): serve a settled view's record, and file it on a stop (3fc614c)
  • feat(human-input): settle a finished live view into an artifact (b943593)
  • fix(contract): freeze the live materializer the TUI channel reads (cb1cd22)
  • refactor(gateway): serve on Jetty 12 core, drop the ee9 servlet layer (d122fd9)
  • docs(gateway): name the commands a remote target does not redirect (556fc22)
  • feat(gateway): drive a remote gateway from the command line (8574bea)
  • test(gateway): pin that a leaving gateway publishes held patches (fa732df)
  • refactor(gateway): delete unread live surface, flush patches on stop (e4010ff)
  • feat(human-input): arrange a live view with the form's own groups (4269ec1)
  • fix(companion): read the armed pull-to-search band (1d9620d)
  • fix(companion): load the session list behind an open transcript (687b121)
  • fix(companion): keep the turn either side of the reader laid out (5b21f1c)
  • test(tui): show the aside band whole and pin is_aside outside Vis (f36b60e)
  • feat(tui): fill the band, paint inline markdown, and stand a node aside (2dc4e63)
  • feat(human-input): let a human stop any live view, with a note (898b43f)
  • feat(companion): watch and stop a live view from the phone (10ca1f3)
  • feat(cli): open live views from a Python extension (d591117)

com.blockether/vis-channel-tui

  • feat(tui): clarify response footer controls (e9a90f4)
  • fix(tui): anchor finished live runs (a614c90)
  • feat(tui): minimize active live views (a94cc82)
  • fix(tui): expand and focus live CI jobs (6f5d678)
  • fix(tui): copy short thinking blocks independently (27bf4de)
  • fix(tui): apply settings through gateway (0d4114f)
  • refactor(shell): name the merged pty stream out (879c79c)
  • fix(tui): paint live views raised in the serve daemon (c0ceb78)
  • feat(config): declare a non-secret literal in environment: (a50b09c)
  • fix(tui): paint a recording's transcript as a quotation, not code (ac9e2bd)
  • fix(tui): wrap a recording's transcript on words, not columns (2132830)
  • feat(tui): fold a recording's transcript under the turn that carried it (e8b8c9e)
  • fix(tui): let the wheel own every row the live band paints (8ae7c40)
  • fix(tui): say which live view the running row is showing (f03c362)
  • fix(tui): isolate a dropped recording path like a dropped picture (6587b6a)
  • feat(providers): let an extension declare a MANAGED provider (95a29c1)
  • fix(tui): read an OPTION in the band, and wrap over-wide headings (c57466f)
  • fix(tui): measure dialog widths in lanterna columns, not chars (dfa9196)
  • fix(tui): file a finished run as a transcript row, not band furniture (e379b3b)
  • style(repo): format every namespace with the canonical formatter (211f498)
  • fix(companion): show a just-created session without tapping the pill (a6746f2)
  • fix(gateway): store settings without folding the config tiers (8aba1aa)
  • docs(cli): name the remote gateway flags in help, not only in the docs (f10f059)
  • feat(human-input): settle a finished live view into an artifact (b943593)
  • refactor(gateway): delete unread live surface, flush patches on stop (e4010ff)
  • feat(human-input): arrange a live view with the form's own groups (4269ec1)
  • test(tui): show the aside band whole and pin is_aside outside Vis (f36b60e)
  • feat(tui): fill the band, paint inline markdown, and stand a node aside (2dc4e63)
  • feat(human-input): let a human stop any live view, with a note (898b43f)
  • feat(companion): watch and stop a live view from the phone (10ca1f3)
  • feat(cli): open live views from a Python extension (d591117)

com.blockether/vis-foundation-bridge

  • docs(cli): one shape for a tool's doc page, cross-validated against the handlers (9ebe5f5)
  • style(repo): format every namespace with the canonical formatter (211f498)
  • feat(cli): open live views from a Python extension (d591117)

com.blockether/vis-foundation-search

  • style(repo): format every namespace with the canonical formatter (211f498)
  • feat(cli): open live views from a Python extension (d591117)

com.blockether/vis-foundation-voice

  • feat(gateway): transcribe an attached recording into the model's manifest (898ca2e)
  • style(repo): format every namespace with the canonical formatter (211f498)
  • feat(cli): open live views from a Python extension (d591117)

com.blockether/vis-language-clojure

  • fix(cli): find parent tests for nested sources (a2d6ae3)
  • fix(cli): consume parinferish closer relocation (e2cd4f7)
  • refactor(cli): drop the duplicate by-cwd view from tool results (86a3537)
  • feat(cli): run_tests takes deps.edn aliases for the clean-JVM run (a92be52)
  • style(repo): format every namespace with the canonical formatter (211f498)
  • fix(languages): one REPL lifecycle contract for every language (8d3849c)
  • fix(language-surface): refuse a bare string where repl options belong (1510475)
  • fix(language-surface): keep repl_stop(id) an id, whatever trails it (3bf0134)
  • docs(language-surface): name the four repl lifecycle verbs (413640b)
  • fix(companion): show a just-created session without tapping the pill (a6746f2)
  • feat(cli): open live views from a Python extension (d591117)

com.blockether/vis-language-python

  • fix(extensions): isolate live views from test runs (3c64395)
  • refactor(cli): drop the duplicate by-cwd view from tool results (86a3537)
  • fix(python): one spelling, runner, for the test backend on every surface (4719ef9)
  • style(repo): format every namespace with the canonical formatter (211f498)
  • fix(languages): read a failed REPL start the same way in every language (2b2ed34)
  • fix(languages): one REPL lifecycle contract for every language (8d3849c)
  • test(languages): read pack test counts by their contract names (aae6e50)
  • fix(language-surface): refuse a bare string where repl options belong (1510475)
  • fix(language-surface): keep repl_stop(id) an id, whatever trails it (3bf0134)
  • docs(language-surface): name the four repl lifecycle verbs (413640b)
  • fix(companion): show a just-created session without tapping the pill (a6746f2)
  • feat(cli): open live views from a Python extension (d591117)

com.blockether/vis-language-typescript-bun

  • style(repo): format every namespace with the canonical formatter (211f498)
  • fix(languages): read a failed REPL start the same way in every language (2b2ed34)
  • fix(languages): one REPL lifecycle contract for every language (8d3849c)
  • test(languages): read pack test counts by their contract names (aae6e50)
  • fix(language-surface): refuse a bare string where repl options belong (1510475)
  • fix(language-surface): keep repl_stop(id) an id, whatever trails it (3bf0134)
  • docs(language-surface): name the four repl lifecycle verbs (413640b)
  • fix(companion): show a just-created session without tapping the pill (a6746f2)
  • feat(cli): open live views from a Python extension (d591117)

com.blockether/vis-persistance-sqlite

  • fix(live): harden GitHub watches and name NDJSON (0895470)
  • fix(gateway): count every successful session fold (71e3b73)
  • feat(gateway): transcribe an attached recording into the model's manifest (898ca2e)
  • fix(human-input): file a late close onto its iteration, not a dead block (682665b)
  • style(repo): format every namespace with the canonical formatter (211f498)
  • fix(gateway): count folds from the turn ctx ledger (2afd2a9)
  • refactor(harness): drop the agent() verb and every sub_loop caller (2bafa1d)
  • feat(cli): open live views from a Python extension (d591117)

com.blockether/vis-provider-alibaba

  • style(repo): format every namespace with the canonical formatter (211f498)
  • feat(cli): open live views from a Python extension (d591117)

com.blockether/vis-provider-anthropic

  • style(repo): format every namespace with the canonical formatter (211f498)
  • feat(cli): open live views from a Python extension (d591117)

com.blockether/vis-provider-github-copilot

  • style(repo): format every namespace with the canonical formatter (211f498)
  • feat(cli): open live views from a Python extension (d591117)

com.blockether/vis-provider-openai-codex

  • style(repo): format every namespace with the canonical formatter (211f498)
  • feat(cli): open live views from a Python extension (d591117)

com.blockether/vis-provider-opencode-go

  • style(repo): format every namespace with the canonical formatter (211f498)
  • feat(cli): open live views from a Python extension (d591117)

com.blockether/vis-provider-openrouter

  • style(repo): format every namespace with the canonical formatter (211f498)
  • feat(cli): open live views from a Python extension (d591117)

com.blockether/vis-provider-standard

  • style(repo): format every namespace with the canonical formatter (211f498)
  • feat(cli): open live views from a Python extension (d591117)

com.blockether/vis-provider-zai

  • style(repo): format every namespace with the canonical formatter (211f498)
  • feat(cli): open live views from a Python extension (d591117)

Full Changelog: v0.1.40...v0.1.41