-
v1.7.0
StableAll checks were successfulChecks / Functional checks (push) Successful in 14sreleased this
2026-09-24 18:56:52 +00:00 | 117 commits to main since this releaseHydration prediction per session (residency cycle, lower bound, on-demand recipes), project accent colors + legend, family dots + sortable Parent column (native parent_id + doorbell edges), muted collapsed todo-update/system transcript classes with hide switch, primary Show-response button, SVG pin states with aria-pressed, steer target reasoning level, workspace-sized modal (~88vw) and drawer. Validation: 26/26 CDP checks on fixture DB, 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)
-
v1.6.0
StableAll checks were successfulChecks / Functional checks (push) Successful in 14sreleased this
2026-09-24 18:25:33 +00:00 | 118 commits to main since this releasev1.6.0 — Pending questions: glow + question cards + answering; steers queue-until-idle ❓
Any session paused on an AskUserQuestion glows amber (row badge, section-header count, new-question toast) — both driving modes, detected from the persisted running tool part. The response modal and transcript drawer render the question card (question, header, options with descriptions, multiSelect hint; answer line once resolved). Dispatch-driven questions are ANSWERED from here (POST /api/session//answer → the dispatcher side-channel, needs zcode-dispatch v0.3.0): option buttons, free text, Decline — forwarded within ~1 s, the turn continues. Steers spawn with the answer channel armed, so questions raised by steered turns wait instead of auto-resolving empty. Desktop-driven questions stay read-only with an honest hint (no external channel into the desktop app private app-server).
Steering is now race-free by construction: a steer sent to a busy session self-queues (dispatcher notify markers + sweeper) and delivers the prompt VERBATIM as the next sequential turn when idle — the dialog reports busy up front and walks queued (position) → delivered. Verified live on scratch sessions (park → observatory answer → completed turn; queued steer delivered and acknowledged).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v1.5.0
StableAll checks were successfulChecks / Functional checks (push) Successful in 14sreleased this
2026-09-24 17:38:34 +00:00 | 119 commits to main since this releasev1.5.0 — Archived section, session pinning, hidden-machinery removal 🗄️📌
A third dashboard section Archived (collapsed by default) lists sessions with a native
session.time_archived— with the observatory's first, deliberately narrow DB-write exception: the Archive/Unarchive buttons open a read-write connection for exactly two parameterizedUPDATE session SET time_archivedstatements, nothing else. Pinning: a per-row 📌 toggle in every section floats sessions to the top of their section (observatory-local state, survives restarts; both blocks honor the selected sort, pinned rows stay on page 1). The long-dead hide/unhide machinery is fully removed.POST /api/archive/POST /api/unarchive— native ZCode archive semantics (store list queries hide archived sessions unlessincludeArchived); 409 while a turn is running, friendly 503 on a locked DBPOST /api/pin/POST /api/unpin— local view state inobservatory-state.json;pinned+archivedAtin/api/sessions- Hidden section,
/api/unhide,/api/restoreremoved; a legacyhiddenstate key is dropped on first write - README: native-semantics forensics (CLI store vs desktop task-index), pin/archive docs, refreshed screenshot
Upgrade note: restart
zcode-observatoryafter installing —observatory.pychanged.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.4.0
StableAll checks were successfulChecks / Functional checks (push) Successful in 14sreleased this
2026-09-24 17:10:55 +00:00 | 120 commits to main since this releasev1.4.0 — steering console + scroll-stable follow output 🎛️
The observatory's first WRITE-capable action: a prompt dialog in the response modal AND the full transcript drawer runs a follow-up turn through the installed
zcode-dispatch— the observatory still never writes the ZCode DB. Plus the scroll fix: both surfaces are now strictly position-stable with a follow-output toggle.POST /api/session/<id>/steer— auto-detects cwd/model like the dispatcher'snotify_parent(never guessed), writes the prompt to~/.config/zcode-dispatch/observatory-steers/, spawns the INSTALLED dispatcher detached (--resume, no--timeout— long turns legal). 400 empty text · 404 unknown session · 409 steer already in flight (one driver per session) · 503 dispatcher missing.GET /api/session/<id>/steer/latest— incremental result JSON + process liveness + exit code + response tail; survives an observatory restart via the newest result file on disk.- Prompt dialog (both surfaces) — multi-line (Enter sends, Shift+Enter newline), target line (title · model · cwd basename), send disabled only while steering, status walks sending → turn-running → terminal with the exit-code legend (
0 ok · 3 busy/lock/mismatch — session has a running turn · 5 timeout, session intact), response tail (~500 chars) on completion. - Scroll stability — refresh cycles without new content never touch
scrollTop(content-keyed render skip); follow output toggle top-right of the body in both surfaces: ON auto-scrolls new content, OFF never moves your position. Default ON for running sessions, OFF for terminal ones (persisted per page session); scrolling up pauses follow and shows a ↓ jump-to-latest pill.
Verified: 22/22 CDP checks (scroll stability, follow semantics, steer lifecycle, busy exit-3, Shift+Enter), fixture API smoke, and a REAL end-to-end steer against a scratch session driven from the drawer UI (
turn-running → completed exit 0, tailE2E-STEERED-OK 43). Gates: py_compile + --help, social-preview freshness, Super-Linter slim v8.7.0 EXIT 0.⚠️ Owner action after station update: restart the observatory (
zcode-observatory) — this release changesobservatory.py, which the running process keeps in memory.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.3.1
StableAll checks were successfulChecks / Functional checks (push) Successful in 14sreleased this
2026-09-24 16:37:15 +00:00 | 121 commits to main since this releasev1.3.1 — UI bugfix round: copy payload, activity time, spanning project line, modal scroll 🐛
Four narrow-window defects fixed in the dashboard, each reproduced and verified with a CDP-driven fixture harness (headless Chrome, trusted input events, granted clipboard) at 1280/900/400 px:
- Copy title — the payload was
JSON.stringify'd into a double-quotedonclickattribute, which the HTML parser truncated at the first quote (onclick="copyText(") — the handler never compiled and clicks copied nothing. Payloads now ride indata-copyattributes served by one delegated listener (immune to quotes/entities, survives the 3 s re-renders), with anexecCommandfallback; clicking 📋 puts exactly that row's displayed title on the clipboard. - Last activity — full datetimes ellipsized to "HH:…" on narrow windows. Now compact and never truncated: relative (
8m,2h 05m) when fresh,Wed 16:10within the week,Aug 10 18:10beyond, full timestamp on hover. Pixel-based column widths keep the time readable at any width; model chips abbreviate to the bare model name (full id on hover). - Project/worktree line — was squeezed into the name column (wrapping to many lines). Each session renders as a two-row group whose second line spans the full table width via
colspan— one clean line down to ~400 px. Below 560 px the models column and the show-button label drop out so everything stays readable. - Modal/drawer scroll — dialogs now take focus on open (
tabindex="-1"+focus()), their bodies contain overscroll, and the page scroll locks while a dialog is open: the wheel always scrolls the conversation, never the dashboard behind.
Also fixes a latent layout bug (
.models { display:flex }hit the header cell and broke fixed-layout column mapping) and regenerates the README screenshot with the new row layout.curl -L -o zcode-dispatch-observatory.tar.gz \ https://oss-oo.io/OSS-Singularity/zcode-dispatch-observatory/releases/download/v1.3.1/zcode-dispatch-observatory.tar.gz tar xzf zcode-dispatch-observatory.tar.gz cd zcode-dispatch-observatory ./install.sh --target ~/tools/zcode-dispatch-observatory zcode-observatory # http://127.0.0.1:8767MIT licensed.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Copy title — the payload was
-
v1.3.0
StableAll checks were successfulChecks / Functional checks (push) Successful in 15sreleased this
2026-09-24 15:41:15 +00:00 | 122 commits to main since this releasev1.3.0 — response modal: last-messages quick view per session 📝
Desktop notifications from zcode-dispatch show only a ~100-char excerpt, and the ZCode desktop chat needs a full app restart to display externally appended turns. v1.3.0 adds the fast reading path: a per-row button opens a modal with the session's recent conversation — the full tail, not just the final response.
- Every session row in all sections (Running / History / Hidden) carries a button: “Show last output” while running, “Show response” once terminal (completed/failed/timeout)
- The modal shows the last 15 messages (user + assistant interleaved, oldest → newest, auto-scrolled to bottom) via the existing transcript API (
?limit=15) — no server changes - Same visual language as the transcript drawer: role labels + timestamps, user/assistant accent cards, reasoning collapsed behind a toggle, tool parts as one subdued
⚙line, soft blue glow on 🔔stream doorbellmessages - Title with status dot; close via ✕, ESC, or backdrop click; footer with message-count context (
showing the last 15 of 197 messages) - Copy button exports the visible conversation as plain
[role] textlines; “Open full transcript” hands over to the full-history drawer - While open on a running session the modal re-polls every 5 s and appends new messages; a session with no assistant answer yet opens on a friendly “no output yet” state (the button never dead-ends)
- Strictly read-only on the ZCode database, stdlib only, localhost-bound
curl -L -o zcode-dispatch-observatory.tar.gz \ https://oss-oo.io/OSS-Singularity/zcode-dispatch-observatory/releases/download/v1.3.0/zcode-dispatch-observatory.tar.gz tar xzf zcode-dispatch-observatory.tar.gz cd zcode-dispatch-observatory ./install.sh --target ~/tools/zcode-dispatch-observatory zcode-observatory # http://127.0.0.1:8767MIT licensed.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.0.8
StableAll checks were successfulChecks / Functional checks (push) Successful in 15sreleased this
2026-09-24 14:58:29 +00:00 | 123 commits to main since this releaseFix: driven-detection only marks the newest session per cwd (notification steers were mass-flagging 30+ sessions as running).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v1.2.0
StableAll checks were successfulChecks / Functional checks (push) Successful in 15sreleased this
2026-09-24 14:52:29 +00:00 | 124 commits to main since this releasev1.2.0 — session transcript view: no-restart doorbell visibility 🔔
The ZCode desktop app keeps an open conversation in memory — a 🔔 doorbell rung into an idle-but-open session only shows there after a full app restart (which kills running turns). v1.2.0 closes that gap: the observatory reads the shared session DB live.
GET /api/session/<id>/transcript— one session's messages, oldest first: sequence, role, timestamp, joined text parts, part-type hints; step/timeline noise skipped server-side; last 200 messages by default (?limit=N, max 1000)- Clicking a session row opens an inline transcript panel that re-polls every 5 s — a freshly arrived doorbell and the wake turn's answer appear without any restart
- User/assistant accent cards, reasoning collapsed behind a toggle, tool parts as one subdued
⚙line; doorbell messages get the soft blue glow treatment - Strictly read-only on the ZCode database, stdlib only, localhost-bound
curl -L -o zcode-dispatch-observatory.tar.gz \ https://oss-oo.io/OSS-Singularity/zcode-dispatch-observatory/releases/download/v1.2.0/zcode-dispatch-observatory.tar.gz tar xzf zcode-dispatch-observatory.tar.gz cd zcode-dispatch-observatory ./install.sh --target ~/tools/zcode-dispatch-observatory zcode-observatory # http://127.0.0.1:8767MIT licensed.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.1.0
StableSome checks failedChecks / Functional checks (push) Has been cancelledChecks / Super-Linter (push) Has been cancelledreleased this
2026-09-24 12:36:20 +00:00 | 126 commits to main since this releasev1.1.0 — event webhooks: push instead of poll 🔔
The observatory now pushes session status changes to registered webhooks:
POST /api/webhooks/register— register a callback URL + eventsGET /api/webhooks/DELETE /api/webhooks/<id>- Events:
session.completed,session.failed - Delivery: background threads, 3 retries, 5s timeout
Built by the first production Narf-doorbell pinky (dispatched with
--notify-parent).curl -L -o zcode-dispatch-observatory.tar.gz \ https://oss-oo.io/OSS-Singularity/zcode-dispatch-observatory/releases/download/v1.1.0/zcode-dispatch-observatory.tar.gz tar xzf zcode-dispatch-observatory.tar.gz cd zcode-dispatch-observatory ./install.sh --target ~/tools/zcode-dispatch-observatory zcode-observatory # http://127.0.0.1:8767MIT licensed.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.0.7
StableSome checks failedChecks / Functional checks (push) Has been cancelledChecks / Super-Linter (push) Has been cancelledreleased this
2026-09-24 08:11:02 +00:00 | 127 commits to main since this releasev1.0.7 — repository icon asset
.github/icon.png(the live repo avatar) +.github/generate-icon.py(byte-exact regeneration, PIL, fixed seed).curl -L -o dl.tar.gz https://oss-oo.io/OSS-Singularity/zcode-dispatch-observatory/releases/download/v1.0.7/zcode-dispatch-observatory.tar.gzMIT licensed.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)