-
v1.17.0
StableAll checks were successfulChecks / Functional checks (push) Successful in 14sreleased this
2026-09-25 12:41:41 +00:00 | 104 commits to main since this releaseSteer-console geometry round O. The vertical Send tower now spans UPWARD into the target line's free right side (right of the expand control, never into the status/response row below), so the console geometry is state-invariant: identical button position and width whether the last-steer answer block is open, minimized to its chip, or absent (CDP-verified: constant 24x138 px, x10 toggle loop 0.00 px delta, at 1920/950/500 px widths). The label is the single word Send; the accessible context (Send to - queues as the next sequential turn) lives on aria-label/tooltip. The response modal is bottom-anchored flush-ish ~14 px above the favorites dock and horizontally centered in every console state. Family edges follow a declared precedence (native parent_id > bell-ledger/live-spawn > delivered doorbell; children derived from parent_of - a conflicting edge never counts toward both parents), covered by the new unit-test suite that also joins CI.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v1.16.0
StableAll checks were successfulChecks / Functional checks (push) Successful in 14sreleased this
2026-09-25 11:24:10 +00:00 | 106 commits to main since this releaseTrust package: running children resolve their parent from the live dispatcher spawn (--notify-parent on the command line — the bell ledger only records the link at completion), running first turns show an honest mint "live" instead of 0/0 tokens, and an open response modal never freezes again (the parked poll resumes on any new activity, typed drafts/focus/scroll position untouched).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v1.15.0
StableAll checks were successfulChecks / Functional checks (push) Successful in 15sreleased this
2026-09-25 10:40:11 +00:00 | 108 commits to main since this releaseTrust package: turn-end triggered steer fast lane (delivery ~3-5 s after turn end instead of ~45 s), echo honesty (confirmation only on real transcript/delivery visibility), dismiss/edit chips (text recall into the prompt), presumed-dead session hints, ESC contract (minimize only — never unfavorite).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v1.14.0
StableAll checks were successfulChecks / Functional checks (push) Successful in 14sreleased this
2026-09-25 09:44:45 +00:00 | 109 commits to main since this releaseRound L of the pinky series: the repo finally tells its true story, and the steer target line learns to read the session's context.
README rewrite (content, not words) — the observatory is what it always was: an interactive cockpit for ALL ZCode sessions, not a read-only dispatcher dashboard. Steering with queue semantics and optimistic echo, question answering, native archive/pin/hide, favorites dock, lineage colors, hydration prediction, bell visibility — plus an honest-limits section. Cross-leverage: powered by zcode-dispatch, independently useful without it, together the dreamteam (the mirror section ships in zcode-dispatch's README).
Orchestration graphic — a Mermaid diagram with five lanes (Brains / Pinkies / Bells+MQTT / Cockpit / Release-return): dispatch, doorbell digests, sweeper and watchdog safety nets, the MQTT broker with its
zcode/session/<id>/turn-*topics andstream.py listen, the cockpit's steer/answer paths, and releases installing back onto the station. Every arrow is a real, verifiable mechanism.Glamour shots — three fixture-data screenshots embedded (dashboard with lineage colors and all row hints, steer console, question modal); social preview tagline and chips refreshed (still ≤ 1 MiB, still reproducible via
make social-preview).Steer target line: context % + cache hit rate —
⟶ steer target: … · GLM-5.3 · max · 64% ctx · cache ~96% · …, mirroring the desktop client's own math: the latest model request'stokens.total(step-finish parts; input there includes cached tokens) over the provider-config context window (modelConfigRules cascade — live file, embedded z.ai snapshot fallback,ZDO_PROVIDER_CONFIGoverride), and the session-average cache hit rate (Σ cache.read ÷ Σ input). The per-turn sums inturn_usageare deliberately not used — they overstate multi-request turns. Raw numbers in the tooltips; formula documented in the README.Owner UI findings fixed (all verified by DOM geometry against a fixture DB, at full and short viewport heights):
- the response modal's title no longer clips above the viewport when the dock reserves bottom padding;
- the vertical send button's word columns read left→right ("Send to" LEFT, "session" right);
- the send strip row-spans the prompt AND the status line — one tall column, zero dead air.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.13.0
StableAll checks were successfulChecks / Functional checks (push) Successful in 15sreleased this
2026-09-25 08:12:05 +00:00 | 110 commits to main since this releaseRound K of the pinky series: twelve owner morning-coffee refinements that make the cockpit shine — subtle-but-visible, dark-native, no dead controls.
Header & timing — the residency line is renamed to what it is (
⏳ ZCode chat residency cycle: 10 min · next sweep ≤ 60 s) and lives in the header's right cluster beneath the notification controls; the update stamp grows a live relative age (· 12s ago) ticking every second off the poll clock; the RUNNING section's top gap is halved (42px → 18px).Rows — hovering a row GLOWS in its root-lineage family color (tint plus radiance from the left accent bar; default cyan for family-less sessions); column widths are redistributed so the Turns header no longer merges into Tokens and the action column is tight at max window; at 390px every row keeps a one-line icon-only action cluster (👁 show, 📥 archive, 🙈 hide — labels in the tooltips; hidden header slivers stop phantom columns from stealing the name column).
Steer console — completed steers render a green ✅ whatever carried the news (exit 0 or a restart-era status file; red ❌ is reserved for genuine failures); the prompt-expand button sits flush with the textarea's right edge; Send to session renders vertically (upright stacked letters, two slim columns) as a strip stretching the prompt's full height — the reclaimed dead air becomes prompt space (min-height 112px); Enter still sends.
Follow output — default ON, the checkbox moved next to “hide harness noise” on both surfaces (drawer meta line, modal footer), one shared switch persisted across browser sessions (localStorage zdo-follow) with both checkboxes mirroring each other.
Parent column — shows the parent session's TITLE in the family hue with a 📋 copy-id button (full parent id), falling back to the short id when unresolvable.
Dock — clicking anywhere in the bar (not only a card) minimizes the currently expanded panel, beside the card-toggle and backdrop paths.
Round-J validation findings — F1: queueDepth.inFlight and the row steerQueue now count superseded in-flight steers (every live spawned dispatcher, not just the newest record — “2 in flight” no longer reads as “1 queued”); F2: the README describes the bg-active hint as the breathing mint CSS dot it is.
Validated by a 21-check fixture + headless-Chrome CDP gate (per-item checks incl. a 390px and a max-width pass, screenshots per item; superseded-steer API proof 2 → 0), super-linter pylint 10.00/10, forge functional checks green.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
1 download
-
Source code (ZIP)
-
v1.12.0
StableAll checks were successfulChecks / Functional checks (push) Successful in 14sreleased this
2026-09-25 00:12:10 +00:00 | 111 commits to main since this releaseRound J of the pinky series: the busy verdict becomes transparent, the send button keeps the queue promise, and the owner never loses his words.
Busy-state transparency — desktop invisibility ≠ idleness:
bg active · Nsrow hints for background turns (pulsing dot, never on running rows), a state-aware busy line in the steer dialog (idle / bg active with live age), and a queued steer explains WHY it waits and WHEN it lands: queued · waiting for idle — background turn active — last transcript activity Ns ago · delivers ~≤45 s after it goes idle (30 s grace + sweeper cadence).Send-button queue semantics — the button stays ENABLED while earlier steers are queued or in flight; each send becomes the next sequential turn (dispatcher self-queue, never interleaving). Live queue depth (1 in flight · 2 queued) in dialog and row, soft cap of 3 waiting steers per session (friendly inline note, drafted text kept — never a dead button), and the ⤢ prompt-expand control moved onto the target line above the input row.
Optimistic echo — Enter shows the message instantly as a pending entry (dashed accent, ⏳ chip); the DB poll reconciles it seamlessly (content+timestamp, no duplicate); a failed delivery (dispatcher error, drop/dead-letter, POST failure) flips it to ⚠ not delivered with the full text preserved plus Retry and copy. The buffer survives panel close/reopen for the page session.
Poll resilience — shared-DB reads run behind a 5 s busy timeout with one retry-on-busy; a failed poll never blanks an open panel (last good content kept under a reconnecting… hint, hard error + Retry only after 3 consecutive failures, automatic recovery); running→completed section moves never invalidate an open panel; dock items toggle (expanded favorite minimizes on click).
Hidden section — deliberate view-state hiding (observatory-state.json) between History and Archived, collapsed by default, full row toolkit plus Unhide and Archive — distinct from the native ZCode archive (view concern vs ZCode concern, README documents both).
Bell ledger (dispatcher v0.3.1+) — parent/family edges also derive from stream-bells.json spawn records, so lineage survives bells stuck in flight; 🔔 pending · Nm / 🔔 stuck row hints; tolerant parser, graceful degradation on older dispatchers.
Expandable tool parts — ▸ ⚙ name affordances unfold pretty-printed input/output (monospace, capped height, … N more lines + copy full); expansion state survives re-polls.
Polish — row-leading title removed (the spanning line is THE title), section-header helper texts stripped and moved into the README.
Validated by a 57-check API+CDP gate (fixture DB + stub dispatcher: real steer round-trips incl. queue/fail paths, live DB-lock resilience with content preservation and automatic recovery) — all green; super-linter pylint 10.00/10.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v1.11.0
StableAll checks were successfulChecks / Functional checks (push) Successful in 13sreleased this
2026-09-24 21:50:49 +00:00 | 112 commits to main since this releaseOwner redefinition shipped: root-lineage family colors replace the v1.9.0 project colors.
Every session's ROOT — resolved transitively over both parent-edge sources (native
session.parent_id+ doorbell edges), cycle-guarded (canonical smallest-member break, entry-point independent), 16-hop emergency cap, memoized linear build — is hashed into the fixed 12-hue palette. The root and ALL its descendants wear that one color on the left accent bar, row tint and spanning line: work/mission trees read as coherent blocks.- Legend, clickable project filter and the v1.7.0 family dot removed — no legend by design (the color IS the family identity; one clear signal beats two mushy ones).
- Parent column: family tooltip ("family of ⟨root title⟩ · N sessions"), clickable parent ids and ◉ root glyphs pin a whole-family highlight across sections.
- Gates: 24-assertion fixture gate (transitive inheritance over doorbell AND native chains, cycle determinism, restart-stable hues, read-only DB proof), headless-Chrome DOM evidence, Super-Linter v8.7.0 slim all lanes green, forge CI green.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.10.0
StableAll checks were successfulChecks / Functional checks (push) Successful in 15sreleased this
2026-09-24 21:23:47 +00:00 | 113 commits to main since this releaseSteer dialog round H — UX refinement from owner findings after live steering.
Response tail: unread-driven
- Full scrollable block only while unread (own scroll area, explicit truncation hint via the new tailTruncated flag)
- Auto-collapses to a slim one-line summary chip once seen (~1.5 s in-view dwell or collapse click)
- Manual expand toggle on the chip; new content re-expands with a '● new' badge
- Read state shared between the drawer and modal surfaces
Exit codes: reference, not status
- Status lines explain only the steer's current state (friendly meaning first, 'exit N' in parens)
- Full exit-code table behind a '?' popover explicitly labeled static reference — not the live status of this steer, built from the same STEER_EXIT map as the status line
Also: README updated; pre-existing MD013 line-length violation repaired.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.9.0
StableAll checks were successfulChecks / Functional checks (push) Successful in 14sreleased this
2026-09-24 20:36:54 +00:00 | 115 commits to main since this releaseOwner review round G — all 13 items, plus the native-archive rework.
The mechanism change: native task-index archive
The Archived section and the archive/unarchive buttons now drive the desktop's OWN store —
tasks.archivedin~/.zcode/v2/tasks-index.sqlite, byte-for-byte the store the ZCode sidebar's archive reads and writes (verified against the installed desktop bundle: the manual archive patches only the flag, noupdated_atbump; the auto-archive runs the same single-column UPDATE mirrored here). The oldsession.time_archivedmechanism is gone; a one-shot startup migration clears leftover values. Refresh honesty: a running ZCode reflects observatory archives after its sidebar re-queries; the observatory picks up desktop archives live.Project identity
Colors now key on the PROJECT (repository identity) derived from the session directory (worktree
.gitpointer → main repo; path fallbacks) — one repository, one color, across every worktree. Legend chips are clickable and filter the tables to a project for the page session.The 13 review items
- Prompt expand control (⤢/⤡) for the steer textarea
- Dock foreground above panels; one-click session switch from the dock
- Session title right-aligned on the spanning line
- ID column slimmed to the Parent width
- Models column dark bar removed (single-line cell, muted overflow)
- Reasoning level next to the model chip (· max/low/…)
- "Last activity" → "Activity" (slimmer column)
- Primary button calibrated (Archive height, narrower, mint kept)
- Project colors by derived repository identity
- Clickable legend filter (persisted per page session)
- History collapsible, default open
- Archived = native task-index membership
- Archive confirm ask (Enter/Esc)
Gates: pinned Super-Linter slim v8.7.0 (project lane scope) EXIT 0, py_compile, forge functional checks green; 21/21 CDP e2e checks over a fixture (session DB + task index + worktree pointers).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.8.0
StableAll checks were successfulChecks / Functional checks (push) Successful in 13sreleased this
2026-09-24 19:27:35 +00:00 | 116 commits to main since this releaseFavorites dock at the page bottom: every response modal and transcript panel minimizes (–) into a live task bar — status dot, unread badge counting messages since minimizing, doorbell glow, expand ⤢, remove ✕. Favorited sessions (row ★ + in-panel ★, observatory-local state like pinning) stay docked across closes and reloads: X/Esc on a favorite minimizes it back instead of closing, X on anything else closes fully and removes its dock-only item. Dock items reopen the last-shown view (response vs full transcript), are keyboard-focusable (Enter/Space), and the bar hides itself when empty and scrolls horizontally at narrow widths. API: /api/favorite + /api/unfavorite (same local-state pattern as pin/unpin), "favorite" per row in /api/sessions; README documents pinned (table ordering) vs favorited (dock presence) as two independent flags. Validation: 17/17 CDP checks on a fixture DB (minimize/expand, favorite persistence across reload, unread badge, doorbell glow, keyboard, narrow widths), pinned Super-Linter slim-v8.7.0 EXIT 0, py_compile.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)