feat: fleet presentation redesign P1 — transcript run-cards, findings entries, colorized widget + panel (#104) - #109
Merged
Conversation
Transcript run-cards (renderCall/renderResult + onPartial forwarding, verified against pi source), orchestration/findings entries (TUI-only), component widget, panel P1 velocity bundle; P2 lineage tree + width fix; P3 glyph presets. oh-my-pi structure x CC restraint; pi-theme tokens only; usage-honesty rule; additive keys only. Spec only — implementation follows plan approval.
…ks strict typecheck (getpipher/vision#25) vision 0.5.2 (resolved by ^0.5 after v1.2.0's green CI) ships ProviderHeaders with string|null values passed to Record<string,string> params in two callVisionModel/callWithRetryAndFallback call sites. Patch sanitizes nulls at both sites. Drop the patch when 0.5.3 lands.
…oded main-checkout path
Worktree-safe: the old endsWith('armory-fleet/src') fails in any other
checkout dir (linked worktrees). Assert on the '/' + src suffix instead.
…nnel (#104) Emission is best-effort end-to-end (registry read + onUpdate call both guarded); live lookup = newest running record for agent+cwd while the dispatch is in flight (fg single-slot lock disambiguates), exact runId after return. Plan erratum: fleet.ts has no spawn site — the forward lives only in subagent.ts (lifecycle phases share the foreground call).
…ssion (#104 review) let-hoist restores mid-run emissions (const put res in its TDZ at first event time). Adds the review-demanded regression pair: never-break (list()-throwing registry + throwing onUpdate) and live-path (cards stream during the run with real fl-* runId). Lifecycle deferral now stated plainly: params.lifecycle returns before the wired call — cards for lifecycle runs arrive via the orchestration entry, P1.
…review) The approved mockups use ● / ✎ but glyphs.ts never carried them — run-card.ts hardcoded literals against the single-source rule. Added to the vocabulary + ascii preset + glyph sweep test.
…eport prior bursts (#104 review) The registry is cumulative for the process lifetime, so re-adding every record on every fire made burst N's findings re-report all prior bursts. Baseline = terminal records at burst open; capture skips them; bg rows always join. Opening run stays in the burst (running at baseline time).
…tions, themed rows (#104)
…ls spinner via glyphs (#104 review)
…} crashed the real TUI (#104 smoke) pi's ToolExecutionComponent.updateDisplay reads result.content unconditionally (image-block pass) on every tool_execution_update; a partialResult without a content array escaped as uncaughtException and killed the session (caught by the T10 real-pi smoke, not by unit tests — the mock-vs-real trap again). Emissions now carry { content: [], details: { card } } and renderResult reads details.card. Shape pinned by test.
Retire the superseded vision 0.5.2 pnpm patch (0.5.3 shipped with the lib-types fix; drops pnpm-workspace.yaml + patches/ riding the branch). Take main's @earendil-works/* ^0.84.4 alignment and the armory-gateway dev file: link from the governance adapter work.
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fleet presentation redesign — P1 (velocity increment)
Spec:
docs/superpowers/specs/2026-09-03-spec-fleet-presentation-redesign.md· Plan:docs/superpowers/plans/2026-09-03-fleet-presentation-p1.md(10 tasks, SDD-executed, per-task review gates + final whole-branch review: Ship)What lands
subagentdispatches render as live cards (spinner · state line: last event · turn · elapsed · tok · ctx%) driven by child-run events through pi's partial-result channel; finalize to a collapsed honest line (╰─ ✓ reviewer · 4m12s · 598K tok · $0.30 · ✎3 — Ship); expand shows the full envelope. Render lifecycle verified against pi source before implementation.appendEntry, zero LLM tokens): live waiting-on tree + fleet TODO projection + gate state during bursts; findings block at burst end withusage —honesty and degradation flags (fallback / zero-tool / language-drift get a face).footerForstate machine replacing the hint if-chain, capability-aware actions (aborted → re-run; running-only stop; paused-only resume). No key remaps.src/present/(status token map, glyph vocabulary + ascii preset, ANSI-aware width) + emoji purge (gate-line ✅⛔ → ✓✗ via GLYPHS).Design language
oh-my-pi structure × Claude Code restraint: pi theme tokens only (no hardcoded hex), single glyph source, escalation via intensity not hue. Spec §2 locked with RECTOR.
Evidence
pnpm typecheckclean — both gates standalone at head.{card}partials — pi readsresult.contentunconditionally); fixed by emitting pi's result envelope (150f6b7), regression test added.Environment fixes riding this branch (separate concerns, committed separately)
48b47b6→a770be9: pnpm patch for@getpipher/vision@0.5.2lib types breaking strict typecheck (0.5.2 lib types break strict consumers (ProviderHeaders string|null vs Record<string,string>) vision#25) — drop when 0.5.3 ships.Follow-ups (not in this PR)
.superpowers/sdd/progress.md).