Skip to content

Asides in fleet tree, Wispr dictation, logging, SuperGrok cost off - #60

Merged
marcelocantos merged 75 commits into
masterfrom
release/v0.9.0
Aug 3, 2026
Merged

Asides in fleet tree, Wispr dictation, logging, SuperGrok cost off#60
marcelocantos merged 75 commits into
masterfrom
release/v0.9.0

Conversation

@marcelocantos

Copy link
Copy Markdown
Owner

Summary

Week-of-use batch on local master since v0.8.0: fleet asides in the RHS tree, Wispr document-mode dictation, logging/telemetry, chat UX (routing, composer, history windowing), and SuperGrok-safe cost clamp off.

Added

  • T21/T133 Wispr Flow document-mode context + invisible empty-composer seed
  • T136 Asides live in RHS fleet tree (POST /api/asides); no top chip wall
  • T124/T115/T118 RHS agent transcript pane, 💡 aside chrome, progress secondary
  • T120/T128 Decision logs, durable events.jsonl, dual-write logging path
  • T119 Shell+content transcript windowing + hydrate
  • T113/T126/T127 Send queue, Home/End caret, / focuses composer
  • T111 Fleet ops friction (event push, parent lineage, agent_list purpose)
  • T83 Mermaid durable graph chrome

Changed / Fixed

  • T135 Auto-match is suggestion-only; no silent steal into asides
  • T134 Attention bar hygiene helpers (route candidates, overflow)
  • Hold /ws/chat when overseer is down (no reconnect flicker storm)
  • Hoist selectedAgent (boot TDZ → empty chat + stuck dark theme)
  • SuperGrok: budget.json disabled=true — no clamp pause, no $ ticker UI
  • Markdown smushed-fence normalize (T145)
  • Grok cost/transcript parsing residuals

Deferred (filed, not shipping as done)

  • T137–T144 resilience / SuperGrok cost redesign targets

Test plan

  • go test -tags "sqlite_preupdate_hook sqlite_fts5" ./... (CI-identical)
  • make test-web green locally
  • CI green on this PR
  • Note: hermetic batch-t109-test (T88 rewind Enter) still fails locally; not in CI go test path — residual

Release

Cuts v0.9.0 after squash-merge + gh release create.

marcelocantos and others added 30 commits August 2, 2026 21:40
Extract pure ToolSummary.summariseInput preferring query/path/command
and nested tool_input over Object.keys joins; hermetic tests in make test-web.
…exit

SIGHUP (or JEVONS_UPGRADE_EXIT=1) exits without registry.StopAll and
writes ~/.jevons/upgrade-handles.json (session_id handoff). Hermetic
tests pin ModeUpgrade does not stop agents. Process survival remains
residual until claudia connect-mode; drill exits 2; T40 stays converging.
Add toolbar on rendered .mermaid-diagram: Open (bottom-right panel
distinct from chat scroll; New tab popout), Copy source (text/plain),
and Copy image (PNG via canvas; multi-MIME image/png+text/plain when
ClipboardItem is available). Pure helpers in mermaid_actions.js with
hermetic unit + Playwright smoke coverage. Bubble scaling unchanged.

Co-Authored-By: Grok jv-t83 <noreply@x.ai>
…path

Root overseer RHS rows no longer show ~/.jevons/<name>. Aside-purpose
agents (and attention chips) get a 💡 title and no path column so
descriptions cannot bleed into path chrome; work agents keep T84 paths.

Hermetic coverage: web/scripts/fleet_row_test.js and fleet-tree-test UI.
Productize the 2026-08-02 multi-agent failure modes (🎯T111 + children):

- T111.2: PushEvent uses Deliver so fleet agents by name work (no "no
  thread" when agents.json has the target); Participants wired on butler
- T111.1: jevons_agent_send queues when prompt in flight; interrupt=true
  cancels then sends; drain on terminal stop (no kill-only dead-end)
- T111.3: thread_spawn / fleet.Launch record Parent for /api/agents tree
- T111.4: persona, agents-guide, fleet brief multi-slice fan-out doctrine;
  agent_list surfaces zero-children PO/boss hint

Hermetic oracles: butler push agent/thread, agent_send busy/queue,
fan-out hints, parent dual-write, persona/guide greps.
Show purpose on agent_list rows (T114 dual-write visibility) and retire
T111.2 with Deliver/Participants attestation (SHA 0cc5720).
Wire the jwork observability surface in the activity pane: style
worker rows, poll GET /api/workers, and reconnect via
EventSource /api/workers/events so active/completed status, tokens,
outcomes, and policy decisions show without a full page reload.
…rred successor

Owner reopened T8.3 because silent doit absorption was not a backend choice.
Record writ-vs-doit decision: product goal stands; doit gates jwork spawn +
audit today; writ is preferred OS-level successor when integrated.
Full durable transcript progressively resident in the browser; content
windowed by shell+content (size cache, lazy measure, recent-first).
Jump-to-bottom FAB/hotkey; no jump-to-top. Hermetic oracles cover
acceptance; progressive hydrate supersedes scroll-as-data-throttle.

Co-Authored-By: Grok <noreply@x.ai>
Inventory material Grok Build/CLI capabilities and classify each for
Jevons as absorb / light ceremony / leave / reject under a voice-first
constraint (no slash-command zoo). Maps goals, loops, workflows,
subagents, sessions, skills, MCP, progress, cancel, and high-use intents
onto persona, fleet, bullseye, chat chrome, and journeys; calls out
impatience/multi-agent gaps (T90, T118, T31, T98).
Reuse #mermaid-viz-panel as always-available project graph surface:
Agents "Open viz", empty state, pin last (localStorage), Load last,
and Paste/Render for bullseye Mermaid exports. Chat Open still pins.
Manual refresh only; no fleet/T29 rewrite. Hermetic unit + Playwright
coverage for open/persist/paste paths.
… (🎯T117)

Collector only understood Claude Code message.usage lines, so after the
Grok migration the ticker stayed at $0/hr while the fleet spent tokens.
Parse turn_completed usage from updates.jsonl (costUsdTicks → USD),
prefer provider cost over the rate table, skip non-usage session
sidecars, and hermetically assert synthetic Grok burn yields non-zero
global+fleet rates.

Co-Authored-By: Grok <noreply@x.ai>
…nt path

Same-workdir fan-out workers use glanceable status/progress (ACP tool
steps, phase, running/stopped) as the secondary line; path stays for
roots, POs with children, and agents whose workdir differs from parent.
Server tracks progress from agent events and exposes phase/step/progress
on GET /api/agents. Hermetic: fleet_row_test + fleet-tree-test + Go hub/API.

Co-Authored-By: Grok <noreply@x.ai>
As-is map of jLog/slog/chatlog/usage/workers/agents; gaps ranked by
decision-opacity (T99 route first); target architecture with correlation
IDs; proposed T120 children oracles; privacy rules. Instrumentation
owned by jv-log-impl.

Co-Authored-By: Grok <noreply@x.ai>
…120)

Client: DecisionLog formatters (route/composer/send/focus) with ~120-char
draft truncation and secret-key redaction; jLog preserves component/
decision/corr; send() always logs ThreadRoute hits (T99 opacity),
composer outcomes, SendQueue actions, and focus transitions. Cost/fleet
poll failures jLog warn.

Server: handleBrowserLog structured slog (component default browser) +
append to state_dir/logs events.jsonl; agent_send slog name/status/
queued/rehydrated; GET /api/logs + MCP tail for introspection.

Oracles: decision_log_test.js, TestHandleBrowserLog*, agent_send slog
fields, eventlog Append/Tail, make test-web green.

Co-Authored-By: Grok <noreply@x.ai>
marcelocantos and others added 28 commits August 2, 2026 23:10
Greenfield re-audit of slog/jLog/eventlog coverage for long-tail
production debugging. Verdict: not aggressive enough; T120 residual
deferred fleet lifecycle and browser-only journal. Files program under
T128–T128.4. Audit only — no instrumentation.

Co-Authored-By: Grok <noreply@x.ai>
Hard doctrine: same-turn bullseye file on product gaps / standing rules
(triggers: standing rule, going forward, from now on, we should always…);
ceremony jevons_target_file / bullseye_commit. Overseer routes Build to
jevons-po only (parent≠jevons). Surfaces: persona, AGENTS, agents-guide,
FleetStandingBrief. Hermetic greps in config + fleet_brief tests.
Raise busy-defer from Debug to Info; log enqueue/drain/defer with
component=notify_queue, depth, deferred/drained, and err_class.
Hermetic slog capture covers the drain re-queue path.

Co-Authored-By: Grok <noreply@x.ai>
Log no_session, read_error, and zero_turns on GET /api/agents/{name}/transcript
with structured slog empty_reason (component=agent_transcript) and best-effort
event journal dual-write so operators can rg empty_reason after an empty RHS pane.

Hermetic TestHandleAgentTranscriptEmptyReasons covers all three reasons.
Add eventlog.Log/LogEvent helper that slog-mirrors and Appends
source=server rows to state_dir/logs/events.jsonl when a journal is open.
Wire Server.LogEvent, mcpserver SetEventLogger/SetEventJournal, and
jevonsd so fleet MCP lifecycle (agent_start/stop/kill, thread_spawn,
event_push) and soft-empty transcript fingerprints share GET /api/logs
and jevons_logs_tail with browser decisions.

Hermetic tests: journal + GET /api/logs?component=agent_lifecycle&source=server.
Bridge a11y context so dictation into #input gets capitalised, punctuated
sentences (incl. ?). Live #wispr-context region (aria-describedby with
input-hint) exposes recent transcript excerpts; empty-composer seed
flips document mode and is stripped before wire. Pure helper + hermetic
Node tests; no post-hoc grammar fixers on send.
Keep sentence-shaped seed for Wispr document mode; apply
.composer-seed-only (transparent text, visible caret) when seed-only.
Toggle class on input/seed refresh; Backspace clears whole seed once.
prepareWireText strip path unchanged. Hermetic class/state + key policy.
Default send() always keeps main draft on main. ThreadRoute still runs
and DecisionLog still records the hit, but auto-match never calls pursue
or formatAsideWire. Opt-in "Continue in: «title»" on the user bubble
interrupts main and delivers to the suggested thread only when clicked.

Hermetic RouteSuggest.planAutoRouteAction always returns steal:false;
route_suggest_test.js is wired into make test-web.
Pure helpers for chrome cap/overflow, bulk clearChromeNoise, capture
dedupe, and open-only routeCandidates. ThreadRoute.isRouteable skips
done/archive ghosts. Hermetics cover stack bound, filing auto-close,
and route honesty. index.html chrome wiring already on master (T135).
Close T114/T124 residual: top #attention-bar no longer hosts open/parked
aside chips. aside:/capture:/target: dual-writes purpose=aside via
POST /api/asides (register-only), RHS auto-select + T124 inspect.

- chromeStack() always empty; renderAttention never shows bar
- AgentDef.Description surfaces as 💡 title in fleet tree
- Vocabulary: aside (not thread) in owner-visible chrome labels
- Hermetic: attention_threads/agent_transcript + Go asides tests
T136 path called renderAttention()/updateComposerPlaceholder before
`let selectedAgent`, which threw TDZ and aborted the main script so
applyTheme and connect never ran. CSS default is dark; chat never
attached. Declare selectedAgent with fleet tree state; hermetic order
oracle in agent_transcript_test.
…cker)

When budget pause (or any overseer death) left proc !Alive, handleChat
still replayed history then Closed the socket. The resilient UI
reconnected every ~50–400ms, wiping #messages and replaying ~10k stream
frames each time — uncontrollable flicker.

After history replay, hold the connection: serve pings, nack turns with
the T54 error, poll until CurrentProcess is alive again, then attach
the live stream. Do not close on "overseer not running".
Owner: API-equivalent $/hr paused the overseer despite SuperGrok (no
marginal $). budget.json disabled=true skips cost guard entirely;
/api/cost stays unset; cost ticker and worker $ rows off. File 🎯T137
to redesign clamp/reporting for subscription reality later.
Insert a blank line before ``` / ```lang when glued to preceding prose so
marked always opens a real code block. Hermetic Node fixture + paintBody /
measureCollapse / voice paths use parseAssistantMarkdown.
Drop local replace ../claudia so CI can resolve the module. Requires
claudia 3f9daa5 (AgentDef.Description/Purpose) on origin/master.
@marcelocantos
marcelocantos merged commit 61d7513 into master Aug 3, 2026
1 check passed
@marcelocantos
marcelocantos deleted the release/v0.9.0 branch August 3, 2026 01:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant