Skip to content

v0.1.28

Choose a tag to compare

@github-actions github-actions released this 04 Aug 07:42

What's Changed

  • Release v0.1.28 (95469bf)
  • Serve the installer and the vis-agent command as release assets (e1f1062)
  • Crown the start menu with the Blockether yellow (49ccf1b)
  • Keep the start menu reading parked drafts when the menu is re-anchored (18eadb0)
  • Ship a dark-theme vis logo and un-matte the transparent marks (ec83439)
  • Fix numpy and PIL sandbox shim gaps for image work (5d1944e)
  • Take the keyboard down before the attachment sheet (8f2a0f3)
  • Delete a session without waiting on its live teardown (7d90486)
  • Point the design-shots section at cap/shot! (d45ddf0)
  • Make TUI screenshots one call and paint italic and underline like a terminal (367bbe1)
  • Build the OAuth file refresher lazily so its lock path is the user's (0ff2630)
  • Re-anchor the start menu on resize instead of closing it (a859de2)
  • Fix disclosure copy targets landing one row above the painted body (c2cd40d)
  • Photograph where the Blockether yellow goes on the start menu (19416e9)
  • Read the environment at runtime, not at native-image build time (0d980d9)
  • Give every machine its own coloured rail in the sessions list (e8b2b56)
  • Give every commit on main its own CI run (e819e86)
  • Rasterize a bold run as bold, not as the mono face's only weight (46590f6)
  • Never cancel a CI run for the commit already on main (451fa1e)
  • Select the runtime an update names (a09ee8b)
  • Invert the vis-table card header onto its own dark band (52c059f)
  • Clone the dev checkout on main when there is none (3f0f266)
  • Separate machines in the sessions list with air and a banner (ed538a7)
  • Keep the vis-table card's row bands inside the frame (0e3fafe)
  • Dress the vis-table card as a sheet: muted rules, banded head, zebra rows (e5e3827)
  • Prove the canvas flush beats reflection, not a stopwatch (0bf4e7d)
  • Float sessions holding unsent work and keep their attachments (563738c)
  • Offer none authentication in the paramiko shim SSH server (ca2d8e1)
  • Make the urllib3 shim a package, not one flat module (297543c)
  • Lighten the live badge to a green FILL, not the green ink (86575fd)
  • Rasterize captured TUI frames in Clojure, in the theme's own colours (7d62afb)
  • Report the inspected session's turn and form-level failures (9f70095)
  • Ignore Wrangler local dev state (d05b62c)
  • Give the live count the unread badge's filled block, in green (6480d32)
  • Refresh the companion incremental build info (0cdb59d)
  • Record svar 0.7.100 in the dependency audit (6b7b4cb)
  • Judge the PIL pixel-read budget by canvas ratio, not wall clock (9641dff)
  • Report the real cause when a lazy Python shim fails to import (a60ade9)
  • Render a vis-table preview as one stretched card (7d21dbd)
  • Pin ruff at 0.3.4, whose reported version is the released one (36d8e80)
  • Cross-validate the vis-table pipeline on the TUI (a53af23)
  • Cap a turn whose provider never answered at a tight first-output ceiling (6060ebd)
  • Stop cancel from settling a live turn's durable row (0a92426)
  • Keep attached CSV rows out of model context and rebuild the grid (0e4242f)
  • Fail a Python lint/format target that holds no Python (6dc17be)
  • Bracket the live count in a scope chip (afa1480)
  • Name the publisher's relay by default on the gateway too (774e9b9)
  • Let the scope strip own the fleet's live and unread counts (31c4bb4)
  • Let a device name the relay that sealed its grant (7a87cbf)
  • Add ruled-grid and cell-inspector table design proposals (8781c07)
  • Reformat the bs4 shim with ruff (1614301)
  • Count the files a Python lint read, not the ones with findings (09383af)
  • Show unread as the filled badge, not a bare number (3abd1b8)
  • Report rows changed from sqlite3 executemany (de25ca3)
  • Make the urllib3 shim match urllib3 2.x behaviour (6c0f573)
  • Render tables through a vendored python-tabulate (943f7b7)
  • Page the CSV table viewer instead of filtering it (faf5f94)
  • Show a chip's live count as a coloured (N) (5086b22)
  • Drop unresolvable fault locations from Clojure test results (bfb63ad)
  • Keep an Android device Google only disliked one message from (9c803ef)
  • Decide a notification's size before a provider does (4a3d96c)
  • Add a vis-table design gallery variant (6500d3d)
  • Name the relay a machine chose, and say so when it refuses one (1e938b3)
  • Make the requests and httpx shims behave like the real clients (fe5175e)
  • Ask a stumbling relay twice and never hand a grant to cleartext (63b849b)
  • Fetch the relay healthcheck URL the workflow was given (300444b)
  • Register through the relay when a machine holds no push key (8f0d4a2)
  • Expose httpx.Response.elapsed in the sandbox shim (ea0f30b)
  • Price strict tools by the provider's real grammar slots (b6e7249)
  • Render attached CSV as an interactive table in TUI and companion (6ea932a)
  • Grant the relay workflow only what a deploy needs (f39021e)
  • Bound the relay's request body and never leak a stack trace (84bd31f)
  • Stream iterable request bodies instead of form-encoding them (94970f5)
  • Correct the APNs environment-retry comment for a stateless relay (e19c030)
  • Seal the relay's grants and delete its database (1bdd8f5)
  • Meter the relay's public routes before they can cost anything (a821eed)
  • Deploy the relay from CI on every commit that touches it (56fe513)
  • Relay push through a grant so a gateway needs no signing key (e2b8afa)
  • Size the fleet scope chips to the app control scale (3347936)
  • Keep sessions with unsent messages in the companion list as dirty rows (052ac30)
  • Accept a label caption on vis_attach and vis_attach_bytes (063e9fa)
  • Constrain sampling of the tools whose payload can be mis-serialized (b0b8699)
  • Document red-then-green regression discipline and link regression tests to their issues (28c3efb)
  • Document that APNs and FCM credentials bind to the app build (21d1e8b)
  • Report companion search as a fleet question (ab5bc6b)
  • Make struct_patch match a sub-expression selector under every locator (6d78ec1)
  • Organize companion sessions by machine (ea200ee)
  • Keep a timed-out Python block's output and budget HTTP evals (7bc2c93)
  • Derive per-tool strict sampling from the wire schema (14d11f6)
  • Add companion design gallery for screenshotted UI proposals (8412114)
  • Keep enforceable schema constraints on the model-facing wire (4b82fb4)
  • Detect awaitables by type so BeautifulSoup survives auto-settle (4d21cb7)
  • Name the sending gateway in every push alert (db80d9a)
  • Accept a scheme-less gateway address in the connect form (a298199)
  • Paint authored line breaks in the companion thinking card (25988a4)
  • Correct the tool-schema docstring: nothing re-validates inbound input (2537cc5)
  • Run the container gateway on the JVM instead of the native binary (bc473e2)
  • Keep a shell command's own line structure in the COMMAND card (9663526)
  • Coerce a stringified patch edits batch instead of refusing it (8173058)
  • Keep tool-authored blank lines inside op-card sections (f020753)
  • Enforce queue retraction at the single queued-turn writer (62941ef)
  • Run settings MCP and provider verbs as magit transients (da6cf30)
  • Render a pending git call with the finished card's renderers (436cc17)
  • Coerce reversed and non-positive cat windows instead of failing the read (d4e1c0c)
  • Make the TUI queue mirror survive repeats, cancels and acks (d7f582c)
  • Pin the Character/codePointAt registration every YAML read needs (39acd84)
  • Render a running native call with the finished card's own renderer (42dec7b)
  • Name the offending cat range window in the rejection message (bd36a7b)
  • Correct the queue-mirror identity docstring for optimistic rows (6fb6376)
  • Show a queued TUI submission the instant it is sent (a9324f3)
  • Extract the magit transient into an embeddable component (cf9327a)
  • Key the live render cache on a running call's display fields (15ef8f4)
  • Render a running native call as its own op-card (d39ddf8)
  • Guard TUI submissions in flight against double queueing (67ee89f)
  • Move providers into TUI Settings (b789941)
  • Carry native input on every pending tool-call block (f4aafdc)
  • Pin svar 0.7.99 so provider responses are never interned (cf3e00b)
  • Default TUI frame renders to the bundled JetBrains Mono (8b379d1)
  • Pass the requested font family through the PIL shim bridge (c591fd6)
  • Detect a dead GraalPy context by asking it, not by matching error text (15df749)
  • Cap rendered TUI frame PNGs at 1024px per side (396c009)
  • Heal Python extension symbols whose context was torn down (a165416)
  • Pin svar 0.7.98 so tool arguments are never interned (6400859)
  • Narrow the tool-call door to model drift and extension EDN (7a5b765)
  • Bind the session environment for Python hook callbacks (133de48)
  • Record the measured cost of dropping builder swap and heap limits (c13bb7f)
  • Measure the wire image cap on the base64 payload (0dfa763)
  • Render TUI capture frames legibly and under a 2000px cap (7a9eb30)
  • Stamp every Python sandbox shim with file and version (a176541)
  • Pin svar 0.7.97 for strings-only tool arguments (a8443d0)
  • Drop launcher-owned runtime and update commands from the binary (555a52d)
  • Guarantee every wire image is measured under the pixel ceiling (9782a13)
  • Normalize svar tool calls to strings at one engine door (583c359)
  • Cap wire image dimensions so many-image requests survive (5b8d5df)
  • Pin the owned source checkout instead of cloning it (bf42529)
  • Cross the PIL draw bridge once per run and convert rasters without reflection (75f894a)
  • Glue the magit transient band to the dialog's bottom chrome (b12b18a)
  • Pin that a tapped notification lands on its session screen (dab9632)
  • Batch PIL draw ops into one cdylib call (ea08bab)
  • Open the session a tapped notification is about after a cold start (71ecc2a)
  • Stringify keyword tool-argument values at the svar edge (8b2363d)
  • Pin the status-bar padding of the chrome-less session screen (dc86aa5)
  • Batch PIL shim drawing through one live imaging image (9715dde)
  • Keep companion chrome when a notification opens a session (bc36b82)
  • Anchor magit transient band to its own hint bar (dcc6d81)
  • Fall back to any healthy container engine in release-native (27d4e9b)
  • Carry the vis-agent command through a source update (69f2c71)
  • Accept bare runtime words in vis-agent update (271f5f9)
  • Document Python layout-read warnings and venv interpreter resolution (031d08c)
  • Never prompt for a credential the machine mints itself (543df09)
  • release: update release notes for v0.1.27 (14db65e)

Package changes

com.blockether/vis

  • Release v0.1.28 (95469bf)
  • Serve the installer and the vis-agent command as release assets (e1f1062)
  • Crown the start menu with the Blockether yellow (49ccf1b)
  • Keep the start menu reading parked drafts when the menu is re-anchored (18eadb0)
  • Ship a dark-theme vis logo and un-matte the transparent marks (ec83439)
  • Fix numpy and PIL sandbox shim gaps for image work (5d1944e)
  • Take the keyboard down before the attachment sheet (8f2a0f3)
  • Delete a session without waiting on its live teardown (7d90486)
  • Point the design-shots section at cap/shot! (d45ddf0)
  • Make TUI screenshots one call and paint italic and underline like a terminal (367bbe1)
  • Build the OAuth file refresher lazily so its lock path is the user's (0ff2630)
  • Re-anchor the start menu on resize instead of closing it (a859de2)
  • Photograph where the Blockether yellow goes on the start menu (19416e9)
  • Read the environment at runtime, not at native-image build time (0d980d9)
  • Give every machine its own coloured rail in the sessions list (e8b2b56)
  • Give every commit on main its own CI run (e819e86)
  • Never cancel a CI run for the commit already on main (451fa1e)
  • Select the runtime an update names (a09ee8b)
  • Clone the dev checkout on main when there is none (3f0f266)
  • Separate machines in the sessions list with air and a banner (ed538a7)
  • Prove the canvas flush beats reflection, not a stopwatch (0bf4e7d)
  • Float sessions holding unsent work and keep their attachments (563738c)
  • Offer none authentication in the paramiko shim SSH server (ca2d8e1)
  • Make the urllib3 shim a package, not one flat module (297543c)
  • Lighten the live badge to a green FILL, not the green ink (86575fd)
  • Rasterize captured TUI frames in Clojure, in the theme's own colours (7d62afb)
  • Report the inspected session's turn and form-level failures (9f70095)
  • Ignore Wrangler local dev state (d05b62c)
  • Give the live count the unread badge's filled block, in green (6480d32)
  • Refresh the companion incremental build info (0cdb59d)
  • Record svar 0.7.100 in the dependency audit (6b7b4cb)
  • Judge the PIL pixel-read budget by canvas ratio, not wall clock (9641dff)
  • Report the real cause when a lazy Python shim fails to import (a60ade9)
  • Pin ruff at 0.3.4, whose reported version is the released one (36d8e80)
  • Cap a turn whose provider never answered at a tight first-output ceiling (6060ebd)
  • Stop cancel from settling a live turn's durable row (0a92426)
  • Keep attached CSV rows out of model context and rebuild the grid (0e4242f)
  • Bracket the live count in a scope chip (afa1480)
  • Name the publisher's relay by default on the gateway too (774e9b9)
  • Let the scope strip own the fleet's live and unread counts (31c4bb4)
  • Let a device name the relay that sealed its grant (7a87cbf)
  • Add ruled-grid and cell-inspector table design proposals (8781c07)
  • Reformat the bs4 shim with ruff (1614301)
  • Show unread as the filled badge, not a bare number (3abd1b8)
  • Report rows changed from sqlite3 executemany (de25ca3)
  • Make the urllib3 shim match urllib3 2.x behaviour (6c0f573)
  • Render tables through a vendored python-tabulate (943f7b7)
  • Page the CSV table viewer instead of filtering it (faf5f94)
  • Show a chip's live count as a coloured (N) (5086b22)
  • Keep an Android device Google only disliked one message from (9c803ef)
  • Decide a notification's size before a provider does (4a3d96c)
  • Add a vis-table design gallery variant (6500d3d)
  • Name the relay a machine chose, and say so when it refuses one (1e938b3)
  • Make the requests and httpx shims behave like the real clients (fe5175e)
  • Ask a stumbling relay twice and never hand a grant to cleartext (63b849b)
  • Fetch the relay healthcheck URL the workflow was given (300444b)
  • Register through the relay when a machine holds no push key (8f0d4a2)
  • Expose httpx.Response.elapsed in the sandbox shim (ea0f30b)
  • Price strict tools by the provider's real grammar slots (b6e7249)
  • Render attached CSV as an interactive table in TUI and companion (6ea932a)
  • Grant the relay workflow only what a deploy needs (f39021e)
  • Bound the relay's request body and never leak a stack trace (84bd31f)
  • Stream iterable request bodies instead of form-encoding them (94970f5)
  • Correct the APNs environment-retry comment for a stateless relay (e19c030)
  • Seal the relay's grants and delete its database (1bdd8f5)
  • Meter the relay's public routes before they can cost anything (a821eed)
  • Deploy the relay from CI on every commit that touches it (56fe513)
  • Relay push through a grant so a gateway needs no signing key (e2b8afa)
  • Size the fleet scope chips to the app control scale (3347936)
  • Keep sessions with unsent messages in the companion list as dirty rows (052ac30)
  • Accept a label caption on vis_attach and vis_attach_bytes (063e9fa)
  • Constrain sampling of the tools whose payload can be mis-serialized (b0b8699)
  • Document red-then-green regression discipline and link regression tests to their issues (28c3efb)
  • Document that APNs and FCM credentials bind to the app build (21d1e8b)
  • Report companion search as a fleet question (ab5bc6b)
  • Make struct_patch match a sub-expression selector under every locator (6d78ec1)
  • Organize companion sessions by machine (ea200ee)
  • Keep a timed-out Python block's output and budget HTTP evals (7bc2c93)
  • Derive per-tool strict sampling from the wire schema (14d11f6)
  • Add companion design gallery for screenshotted UI proposals (8412114)
  • Keep enforceable schema constraints on the model-facing wire (4b82fb4)
  • Detect awaitables by type so BeautifulSoup survives auto-settle (4d21cb7)
  • Name the sending gateway in every push alert (db80d9a)
  • Accept a scheme-less gateway address in the connect form (a298199)
  • Paint authored line breaks in the companion thinking card (25988a4)
  • Correct the tool-schema docstring: nothing re-validates inbound input (2537cc5)
  • Run the container gateway on the JVM instead of the native binary (bc473e2)
  • Keep a shell command's own line structure in the COMMAND card (9663526)
  • Coerce a stringified patch edits batch instead of refusing it (8173058)
  • Render a pending git call with the finished card's renderers (436cc17)
  • Coerce reversed and non-positive cat windows instead of failing the read (d4e1c0c)
  • Pin the Character/codePointAt registration every YAML read needs (39acd84)
  • Render a running native call with the finished card's own renderer (42dec7b)
  • Name the offending cat range window in the rejection message (bd36a7b)
  • Render a running native call as its own op-card (d39ddf8)
  • Carry native input on every pending tool-call block (f4aafdc)
  • Pin svar 0.7.99 so provider responses are never interned (cf3e00b)
  • Default TUI frame renders to the bundled JetBrains Mono (8b379d1)
  • Pass the requested font family through the PIL shim bridge (c591fd6)
  • Detect a dead GraalPy context by asking it, not by matching error text (15df749)
  • Heal Python extension symbols whose context was torn down (a165416)
  • Pin svar 0.7.98 so tool arguments are never interned (6400859)
  • Narrow the tool-call door to model drift and extension EDN (7a5b765)
  • Bind the session environment for Python hook callbacks (133de48)
  • Record the measured cost of dropping builder swap and heap limits (c13bb7f)
  • Measure the wire image cap on the base64 payload (0dfa763)
  • Stamp every Python sandbox shim with file and version (a176541)
  • Pin svar 0.7.97 for strings-only tool arguments (a8443d0)
  • Drop launcher-owned runtime and update commands from the binary (555a52d)
  • Guarantee every wire image is measured under the pixel ceiling (9782a13)
  • Normalize svar tool calls to strings at one engine door (583c359)
  • Cap wire image dimensions so many-image requests survive (5b8d5df)
  • Pin the owned source checkout instead of cloning it (bf42529)
  • Cross the PIL draw bridge once per run and convert rasters without reflection (75f894a)
  • Glue the magit transient band to the dialog's bottom chrome (b12b18a)
  • Pin that a tapped notification lands on its session screen (dab9632)
  • Batch PIL draw ops into one cdylib call (ea08bab)
  • Open the session a tapped notification is about after a cold start (71ecc2a)
  • Stringify keyword tool-argument values at the svar edge (8b2363d)
  • Pin the status-bar padding of the chrome-less session screen (dc86aa5)
  • Batch PIL shim drawing through one live imaging image (9715dde)
  • Keep companion chrome when a notification opens a session (bc36b82)
  • Fall back to any healthy container engine in release-native (27d4e9b)
  • Carry the vis-agent command through a source update (69f2c71)
  • Accept bare runtime words in vis-agent update (271f5f9)
  • Document Python layout-read warnings and venv interpreter resolution (031d08c)
  • Never prompt for a credential the machine mints itself (543df09)
  • release: update release notes for v0.1.27 (14db65e)

com.blockether/vis-channel-tui

  • Make TUI screenshots one call and paint italic and underline like a terminal (367bbe1)
  • Fix disclosure copy targets landing one row above the painted body (c2cd40d)
  • Read the environment at runtime, not at native-image build time (0d980d9)
  • Rasterize a bold run as bold, not as the mono face's only weight (46590f6)
  • Invert the vis-table card header onto its own dark band (52c059f)
  • Keep the vis-table card's row bands inside the frame (0e3fafe)
  • Dress the vis-table card as a sheet: muted rules, banded head, zebra rows (e5e3827)
  • Rasterize captured TUI frames in Clojure, in the theme's own colours (7d62afb)
  • Render a vis-table preview as one stretched card (7d21dbd)
  • Cross-validate the vis-table pipeline on the TUI (a53af23)
  • Page the CSV table viewer instead of filtering it (faf5f94)
  • Render attached CSV as an interactive table in TUI and companion (6ea932a)
  • Keep tool-authored blank lines inside op-card sections (f020753)
  • Enforce queue retraction at the single queued-turn writer (62941ef)
  • Run settings MCP and provider verbs as magit transients (da6cf30)
  • Make the TUI queue mirror survive repeats, cancels and acks (d7f582c)
  • Render a running native call with the finished card's own renderer (42dec7b)
  • Correct the queue-mirror identity docstring for optimistic rows (6fb6376)
  • Show a queued TUI submission the instant it is sent (a9324f3)
  • Extract the magit transient into an embeddable component (cf9327a)
  • Key the live render cache on a running call's display fields (15ef8f4)
  • Render a running native call as its own op-card (d39ddf8)
  • Guard TUI submissions in flight against double queueing (67ee89f)
  • Move providers into TUI Settings (b789941)
  • Default TUI frame renders to the bundled JetBrains Mono (8b379d1)
  • Pass the requested font family through the PIL shim bridge (c591fd6)
  • Cap rendered TUI frame PNGs at 1024px per side (396c009)
  • Render TUI capture frames legibly and under a 2000px cap (7a9eb30)
  • Glue the magit transient band to the dialog's bottom chrome (b12b18a)
  • Anchor magit transient band to its own hint bar (dcc6d81)
  • Never prompt for a credential the machine mints itself (543df09)

com.blockether/vis-foundation-voice

  • Read the environment at runtime, not at native-image build time (0d980d9)

com.blockether/vis-language-clojure

  • Read the environment at runtime, not at native-image build time (0d980d9)
  • Drop unresolvable fault locations from Clojure test results (bfb63ad)

com.blockether/vis-language-python

  • Fail a Python lint/format target that holds no Python (6dc17be)
  • Count the files a Python lint read, not the ones with findings (09383af)

com.blockether/vis-provider-anthropic

  • Build the OAuth file refresher lazily so its lock path is the user's (0ff2630)
  • Read the environment at runtime, not at native-image build time (0d980d9)

com.blockether/vis-provider-github-copilot

  • Read the environment at runtime, not at native-image build time (0d980d9)

com.blockether/vis-provider-openai-codex

  • Build the OAuth file refresher lazily so its lock path is the user's (0ff2630)
  • Read the environment at runtime, not at native-image build time (0d980d9)

com.blockether/vis-provider-openrouter

  • Read the environment at runtime, not at native-image build time (0d980d9)

com.blockether/vis-provider-zai

  • Read the environment at runtime, not at native-image build time (0d980d9)

Full Changelog: v0.1.27...v0.1.28