Skip to content

Releases: soldforaloss/paramux

v0.1.19

v0.1.19 Pre-release
Pre-release

Choose a tag to compare

@soldforaloss soldforaloss released this 21 Jul 14:18

Prerelease for testing. Windows x64 + ARM64 portable builds — verify the ZIP hash against SHA256SUMS-windows-<arch>.txt before extracting; see README "Verifying a build".

The completeness release: the last composed labels localize, the German smoke joins the permanent verification fleet, and the locale policy is written down.

i18n — composition complete

  • Layout-slot submenu labels (Slot word, saved/empty suffixes, the rename prefix, the renamed banner) compose from table pieces.
  • The activity timeline localizes: relative time composes prefix+value+suffix so German can lead with "vor" where English trails with "ago"; the now/WORKING/WAITING/DONE/ERROR display words come from the table (wire tags never localize). The non-empty table tests learned about deliberately empty composition pieces, with a both-sides guard.
  • scripts/smoke-de.ps1: the runtime German smoke is a permanent script (XDG_CONFIG_HOME override — the real config is never touched) and joins the pre-train sweep, now a quintet.
  • Locale policy decided and documented: a locale is one struct literal plus one setLocale arm, compiled in. Parsed-file locales rejected while every call site reads statics.

Full verification: every commit gated by zig build test -Dtest-filter=win32; full suite green at the release SHA; the regression quintet (restore E2E, 10-check serve E2E, layout round-trip, de-DE runtime smoke, probe-gated soak) green at HEAD; both arch ZIPs hash-verified via smoke-zip.

v0.1.18

v0.1.18 Pre-release
Pre-release

Choose a tag to compare

@soldforaloss soldforaloss released this 21 Jul 13:30

Prerelease for testing. Windows x64 + ARM64 portable builds — verify the ZIP hash against SHA256SUMS-windows-<arch>.txt before extracting; see README "Verifying a build".

The resilience release: the train hardens against the internet, and the chrome's German goes wall to wall.

CI + train hardening

  • Both Windows workflows fetch dependencies with bounded retries (zig build --fetch, three attempts, 30s backoff) before any build touches the network — a deps.files.ghostty.org outage failed a release gate once; transient CDN faults are now absorbed.

i18n — wall to wall

  • Slice 12: all 26 remaining inline banners (plain and conditional setBanner sites — layout errors, broadcast toggles, topmost pin, install tip, profile errors, worktree flow, clipboard) move to the strings table.
  • Slice 13: the settings window — buttons, all five checkboxes, both search cue banners, focus-follows, background blur — with proper German quotes on the Explorer checkbox.
  • Composed labels: "Workspace N" (sidebar headers, the window-title segment) and the untitled-pane "shell" fallback compose from table pieces; wire titles untouched.
  • Runtime-proven: a de-DE smoke boots the GUI under XDG_CONFIG_HOME with ui-language = de, renders, and answers IPC — the whole German table exercised live, not just at comptime.

UI

  • Pane rows inherit the workspace accent: the focused stripe takes the workspace color over the theme accent, and other rows in an accented workspace carry a half-width tick (blended when parked) — grouping reads down the whole tree. High contrast keeps the fixed palette out.
  • Hover on an accented row keeps the tick visible.

Decisions

  • No attention --csv: the palette export owns CSV; scripted consumers shape the JSON from paramux attention.

Full verification: every commit gated by zig build test -Dtest-filter=win32; full suite green at the release SHA; the regression quartet green at HEAD; de-DE runtime smoke; both arch ZIPs hash-verified via smoke-zip.

v0.1.17

v0.1.17 Pre-release
Pre-release

Choose a tag to compare

@soldforaloss soldforaloss released this 21 Jul 12:32

Prerelease for testing. Windows x64 + ARM64 portable builds — verify the ZIP hash against SHA256SUMS-windows-<arch>.txt before extracting; see README "Verifying a build".

The fluency release: the chrome finishes learning German, and the fleet watches itself in place.

i18n — the menu table is complete

  • Slices 10 and 11 close out every static menu and dialog string: workspace-close, the empty-state rows, Quick Terminal, Toggle Inspector, the help menu, the toggle pairs (broadcast include/exclude, pin/unpin, mute/unmute), the accent Default entry, dialog titles (Health, Watch, the help boxes), and the update banner's Install / Open Release buttons. Under ui-language = de the whole menu system speaks German; ratio numbers and runtime-composed labels stay verbatim by design. The ledger in docs/paramux/i18n-notes.md records the sweep-grep lesson: match every menu handle, not just the main one.

Fleet CLI

  • attention --watch --interval=N re-prints the timeline in place (ANSI clear + home), mirroring status --watch.
  • Hovering a workspace header now peeks its note — the same hover card pane rows use, showing the workspace note when one is set.

Train + docs

  • scripts/smoke-zip.ps1: the release ZIP smoke is a permanent parameterized script (hash, VERSIONINFO, version --json, capability probes — 7 checks), first used on this release.
  • Sidebar rows as UIA elements recorded as a deliberate deferral in the accessibility checklist (the inbox and fleet-summary property carry the same information); capability-parity gains localized-chrome and sidebar-UIA rows; windows.md points at the fleet CLI map.

Full verification: every commit gated by zig build test -Dtest-filter=win32; full suite green at the release SHA; the regression quartet (restore E2E, 10-check serve E2E, layout round-trip, probe-gated soak) green at HEAD; both arch ZIPs hash-verified via smoke-zip.

v0.1.16

v0.1.16 Pre-release
Pre-release

Choose a tag to compare

@soldforaloss soldforaloss released this 21 Jul 11:25

Prerelease for testing. Windows x64 + ARM64 portable builds — verify the ZIP hash against SHA256SUMS-windows-<arch>.txt before extracting; see README "Verifying a build".

The reachability release: things that existed but hid — restart from the keyboard, the timeline without a server, three more menu blocks in de-DE.

Fleet CLI

  • paramux attention prints every pane's timeline JSON — the CLI twin of GET /attention, same token-gated IPC method, no serve process needed. Covered by the serve E2E (now 10 checks).
  • restart_pane is a real action: Command Palette ("Restart Pane") and IPC (perform-action restart_pane), sharing the context menu's body — fresh shell in the pane's directory, old pane closes (dead panes skip the confirm). Fleet users restarting crashed agents no longer need the mouse.
  • serve --quiet suppresses the per-request log line (the soak uses it).

i18n

  • Slices 9 in total: this release adds slice 8 (navigation/workspace menu block) and slice 9 (splits + window/workspace ops) plus the watch-window fallback title — under ui-language = de, the pane context menu is now almost entirely German. setLocale swap and unknown-tag fallback are test-locked; the ledger in docs/paramux/i18n-notes.md tracks the 11 literals that remain.

Docs + receipts

  • Attention timelines documented as bounded (8 transitions per pane) with the accumulate-by-polling guidance; serve-api cross-links the CLI twin.
  • HACKING's verification-scripts table lists the serve and layout-roundtrip E2Es; the README control-surface bullet links the fleet CLI map; CI's 250 ms cold-start gate and doctor --json's gallery line verified in place.
  • New scripts/e2e-layout-roundtrip.ps1: gallery → slot → file → slot → file, byte-identical, against any binary (-Com).

Full verification: every commit gated by zig build test -Dtest-filter=win32; full suite green at the release SHA; pre-train quartet at HEAD (4-phase restore E2E, 10-check serve E2E, layout round-trip, probe-gated soak); both arch ZIPs hash-verified.

v0.1.15

v0.1.15 Pre-release
Pre-release

Choose a tag to compare

@soldforaloss soldforaloss released this 21 Jul 10:28

Prerelease for testing. Windows x64 + ARM64 portable builds — verify the ZIP hash against SHA256SUMS-windows-<arch>.txt before extracting; see README "Verifying a build".

The courtesy release: the fleet CLI gets softer edges (slot-less imports, solo panes respected by fan-out sends, a one-page reference) and the harness keeps promoting its own findings into gates.

Fleet CLI

  • import-layout <file-or-gallery-name> with no slot number lands in the first empty slot; when all five are occupied it errors with a pointer at open --list instead of clobbering anything.
  • send --all-panes now honors the broadcast opt-out ("solo") flag, matching GUI broadcast typing. The additive opt_out field rides the v2 wire; target a solo pane explicitly with --surface-id. Fixture-tested including a beyond-i64 id.
  • doctor validates the four embedded gallery templates in the running binary (a release with a rotten gallery now fails loudly) — and update --check's release-notes URL on the newer path plus status --watch --notes were verified as already shipped.
  • docs/paramux/fleet-cli.md: every automation verb on one page, linked from getting-started.

Attention

  • The read_attention snapshot, GET /attention, and the JSON/CSV exports carry each pane's workspace note — triage tooling can group a wave by what each workspace is for (additive field).

Hardening

  • IPC clients retry a busy pipe under a 3-second deadline instead of a single wait round — fleet scripts running serve + status + notify concurrently no longer flake (batch-14 soak evidence).
  • serve prints one operability line per request (elapsed ms + path).
  • The soak gate fails if the /attention probe misses a single sample, and its workspaces column counts real distinct workspaces.
  • The serve E2E grew to nine checks (/panes/<id>/text both sides of auth); pane ids are regex-extracted because ConvertFrom-Json corrupts ids above 2^53.
  • Long-poll on /attention is a documented non-goal: serve is a single-threaded loop, and If-None-Match polling costs one bodyless 304.

UI + i18n

  • i18n slice 7: the first pane context-menu block (Copy/Paste/Select All/Find/Find in All Panes/Scrollback/Watch/Restart/Worktree) speaks de-DE under ui-language = de.

Receipts + docs

  • Perf receipts at packaged 0.1.14 (ReleaseFast x64): CLI cold start 12.4 ms best / 14.5 ms avg vs Windows Terminal 49.6 ms; GUI idle 118.3 MB — inside the PRD budgets.
  • CONTRIBUTING records the ipc.jsonU64 rule for u64 wire ids (and its PowerShell twin); session-schema documents the layouts.json shape and names array.

Full verification: every commit gated by zig build test -Dtest-filter=win32; full suite green at the release SHA; 4-phase restore E2E + 9-check serve E2E + soak self-tests re-run at HEAD; both arch ZIPs hash-verified.

v0.1.14

v0.1.14 Pre-release
Pre-release

Choose a tag to compare

@soldforaloss soldforaloss released this 21 Jul 09:20

Prerelease for testing. Windows x64 + ARM64 portable builds — verify the ZIP hash against SHA256SUMS-windows-<arch>.txt before extracting; see README "Verifying a build".

The trustworthiness release: the new soak probe caught a shipped CLI crash the same hour it landed, and the serve E2E proved (then fixed) a revalidation contract that could never trigger.

Reliability

  • status panicked on half of all pane ids — any surface id above i64 max parses as .number_string in std.json, and the readers accessed .integer (run silently dropped those panes). All CLI JSON id reads now go through a tolerant u64 reader (ipc.jsonU64) with a maxInt(u64) regression test. Found live by the soak's new /attention probe.
  • /attention's ETag could never 304: it hashed the whole body including the per-call exported_at_ms stamp. The hash now starts at the panes key, so unchanged timelines revalidate (proved by the new E2E).
  • A second paramux serve on a busy port fails fast instead of double-binding and silently stealing traffic (Windows SO_REUSEADDR semantics). Quick restarts are unaffected.

Layouts

  • The template gallery ships inside the binary: paramux import-layout 2 grid-2x2 works from a bare install — a bare name that isn't a readable file resolves against the four bundled templates (kept byte-identical to docs/paramux/layouts/ by a drift test), and a miss lists the names.
  • Slots answer to their names everywhere: paramux open --name=api-fleet, export-layout --name=..., and import-layout --name=... all address slots by saved name, case-insensitively.
  • open --list (and the new name resolver) tolerate a UTF-8 BOM on layouts.json — the one reader the earlier BOM sweep missed.

Fleet CLI + serve

  • scripts/e2e-serve.ps1: a six-check scripted E2E for the HTTP contract (/status 200+body, /attention 200/401/ETag/304).
  • status --notes shows the workspace accent from the v2 wire (# workspace 2 accent: 5 note: api fleet), with a fixture test.
  • doctor --fire now round-trips read_attention after the signal cycle, proving the timeline snapshot sees the fired signals.
  • notify --surface-id=<id> (explicit pane targeting) verified as already shipped; malformed values hard-error instead of misrouting.

UI

  • Palette "recent" chips follow MRU commands into ranked (typed) views, and the right-edge slot resolves chip-vs-keybind overlap explicitly (the keybind hint wins).
  • i18n slice 6: all eleven hint-strip texts (first-run tips, broadcast, zoomed, wave, git segment, defaults) come from the strings table with de-DE entries under ui-language = de.

Soak + docs

  • The soak harness probes GET /attention over HTTP every minute (att_http CSV column) and reports the real distinct-workspace count instead of a hardcoded 1.
  • docs/paramux/layouts/README.md covers the gallery and name addressing; CONTRIBUTING records the PowerShell 5.1 double-quote-in-native-args hazard.

Full verification: every commit gated by zig build test -Dtest-filter=win32; full suite green at the release SHA; serve E2E, gallery/name smokes, and three soak self-tests run against the built binaries; both arch ZIPs hash-verified.

v0.1.13

v0.1.13 Pre-release
Pre-release

Choose a tag to compare

@soldforaloss soldforaloss released this 21 Jul 07:46

Paramux v0.1.13 — the precision release: pixel-true screen-reader geometry, layouts that travel as files, and one action to acknowledge the whole fleet.

Screen readers, fourth pass

  • True wide-glyph geometry — bounding rectangles and point hit-testing now use each character's real terminal columns (from the snapshot pin map): a CJK glyph measures its two cells and its second cell hit-tests to the glyph. The one remaining case (a wide glyph at line END reads one cell short) is documented in the checklist.
  • The README and capability-parity docs finally say all this — accessibility is a listed feature with a comparison row against web-view muxes and Windows Terminal.

Layouts that travel

  • export-layout <slot> [file] (or --all=<dir>) and import-layout <slot> <file> [--name=...] — slots round-trip as standalone .layout.json templates with session-restore-grade validation on import.
  • Rename Slot N... in the context menu — built on a new generic prompt overlay (the reusable text-input the overlay system lacked; more prompts can now be one purpose-enum entry away).
  • All three CLI layout readers tolerate UTF-8 BOMs (hand-edited and PowerShell-written files carry them; the restore E2E's own writeback was quietly re-BOMing layouts.json — fixed, on-disk file repaired).

Fleet conducting

  • Clear All Attention — one palette/IPC action acknowledges every pane (with a count banner); the hint strip teaches it automatically when 2+ panes alert; interaction with attention-jump verified end-to-end.
  • GET /attention on serve — every pane's timeline over HTTP behind the bearer token, powered by a dedicated token-gated IPC method (read_attention, UI-thread marshaled). E2E: 200 with the token, 401 without.
  • The palette marks its MRU head with a quiet "recent" chip; workspace accent colors ride the v2 payload; status --json; Enter in the settings search hands focus onward.
  • i18n slice 4 (settings section labels, full de-DE); record --width/--height; doctor reports session-autosave freshness; perf receipts regenerated (13.2 ms CLI cold start vs Windows Terminal's 47.6 ms; 133.5 MB idle — inside the PRD targets as a debug build).

Install

Pick your architecture's ZIP + SHA256SUMS, verify, extract, run — or paramux update. Unsigned test build; see the README.

v0.1.12

v0.1.12 Pre-release
Pre-release

Choose a tag to compare

@soldforaloss soldforaloss released this 21 Jul 06:19

Paramux v0.1.12 — the polish release: the fleet's plumbing answers faster, its states read at a glance, and the recent past ranks first.

Faster plumbing

  • ETags everywhere on serve/status joins the pane-text route with content-hash ETags and 304 Not Modified; pollers stop re-downloading identical payloads.
  • Attention webhooks retry once after a 2s backoff (cold functions and waking dashboards get their second chance; nothing reorders).
  • update --version=X pin-installs any published release — the tested sideways/downgrade path, same checksum verification.
  • doctor --json for CI and dashboards; record --quiet for scripts.

States you can see

  • Sidebar markers for invisible states — muted panes show a speaker-off glyph, broadcast-opt-out panes a circled slash.
  • status --notes prints workspace scratch notes (the automation payload gained an additive note field per workspace).
  • The palette's MRU finally ranks — the five most recently executed actions lead the empty-query list (the MRU was recorded but never consumed until now).
  • Quick-terminal frames clamp into the work area after resolution changes; attention exports gain window/workspace attribution and a CSV sibling with tested quoting.
  • Localized control type follows ui-language; i18n slice 3 converts the chord-free context-menu titles.

Receipts

  • The restore E2E grew phase D: paramux open provably preserves layout slot names (and two harness lessons are in HACKING — absolute tool paths, BOM-less JSON writes for PS 5.1).
  • CI smokes the release-notes generator; the perf-budget line names the measured binary version; three scope decisions are documented in the repo (no HTTP /attention yet, slot renames are hand-editable JSON for now, the BOM gotcha).

Install

Pick your architecture's ZIP + SHA256SUMS, verify, extract, run — or paramux update. Unsigned test build; see the README.

v0.1.11

v0.1.11 Pre-release
Pre-release

Choose a tag to compare

@soldforaloss soldforaloss released this 21 Jul 05:02

Paramux v0.1.11 — the responsiveness release: screen readers react the moment agents do, layouts get names, and a dozen sharp edges come off the CLI.

Screen readers, third pass

  • TextChanged fires on attention transitions — the active pane's done/waiting/error raises the event immediately (the 3s heartbeat stays for plain output), so Narrator re-reads at the moment that matters.
  • Page unit = the viewport — "read current page" covers the visible screen instead of all scrollback.
  • docs/paramux/accessibility-testing.md — the per-release Narrator hardware checklist, with the known approximations listed so they aren't re-filed.

Layouts and fleets

  • Layout slots have names — saving names the slot after the workspace; menus read "Slot 2 — api server", open --list shows them, and paramux open no longer drops names on its slot-5 rewrite.
  • open --slot=N applies any saved slot; workspace-level env has a gallery example (agents-with-env.layout.json).
  • Attention export carries window id + workspace ordinal per pane for multi-window fleets.

CLI sharp edges

  • notify --focused targets the focused pane from outside any pane — and without a pane id, notify now says the console escape won't reach paramux instead of silently no-opping.
  • record defaults to a timestamped paramux-<unix>.cast (no more silent overwrites); status --watch --interval=N; version --json for tooling.
  • serve /panes/<id>/text answers 304 Not Modified via content-hash ETags — pollers stop re-downloading scrollback.
  • doctor counts leftover crash dumps; a banner on launch says when dumps from a previous run exist; Reset Quick Terminal Frame rescues off-screen frames.
  • Settings search got a cue banner; i18n slice 2 moves the banner texts into the string table with full de-DE coverage (and a test that a locale can't ship half-translated).

Receipts

  • Soak CSV rows now carry the binary version; the restore E2E refuses to run against a busy instance; HACKING lists the three scripted verifications beyond the unit suites.

Install

Pick your architecture's ZIP + SHA256SUMS, verify, extract, run — or paramux update. Unsigned test build; see the README.

v0.1.10

v0.1.10 Pre-release
Pre-release

Choose a tag to compare

@soldforaloss soldforaloss released this 21 Jul 03:48

Paramux v0.1.10 — the follow-through release: the screen-reader story gets real navigation, restore gets receipts (and two latent memory bugs die), and the fleet grows conductor conveniences.

Screen readers, second pass

  • Real Word unit — word navigation is ink-runs-plus-trailing-blanks (skips blank lines in one step); Format/Paragraph still track lines.
  • GetVisibleRanges reports the true viewport (pin-accurate byte mapping), bounding rectangles are line-granular screen rects, and RangeFromPoint hit-tests the real cell grid — Narrator's highlight now lands where the text is.
  • TextChanged heartbeat — with a screen-reader attached, content changes raise UIA TextChanged (3s cadence) so live-follow re-reads without polling blind.
  • doctor now reports UI Automation health and whether a screen-reader client is listening.

Restore you can trust

  • Two latent restore bugs fixed — session-state strings were parsed as slices into a freed buffer, and spawn argv could reference a freed command string. ReleaseFast masked both; the new scripts/e2e-restore-commands.ps1 (three phases: opt-in gate, capture, relaunch) caught them and now passes end to end. Restored fleets actually relaunch their commands.
  • Save Session Now — new save_session action (palette + perform-action) writes the session immediately instead of waiting for the ~60s autosave.
  • Workspace-level env in layout templates applies to every pane (pane entries win); open --list shows the five layout slots and the project-layout status.

Conductor conveniences

  • Quick terminal remembers its frame across hides and restarts.
  • Cross-workspace pane drags show the drop preview over the target header.
  • Export Attention Log — every pane's attention timeline (states, timestamps, messages — never pane text) to attention-log.json on demand.
  • record --idle-limit caps quiet stretches on playback; settings search flags misses in place and matches many more keywords; de-DE proof locale behind the new ui-language option (chrome slice only, chords never translate).
  • Opt-in local crash minidumps (crash-minidumps) — written to the state dir, never uploaded, off by default.
  • New receipts tooling: scripts/start-soak.ps1 (detached 72h gate launcher with PASS/FAIL marker) and scripts/generate-release-notes.ps1; docs/paramux/serve-api.md documents the HTTP bridge.

Install

Pick your architecture's ZIP + SHA256SUMS, verify, extract, run — or paramux update. Unsigned test build; see the README.