Skip to content

feat(app): the Campaign tab — the Work Column's full-ledger drill-down (#694) - #696

Merged
aarontrowbridge merged 3 commits into
mainfrom
694-feat-app-the-campaign-tab
Aug 31, 2026
Merged

feat(app): the Campaign tab — the Work Column's full-ledger drill-down (#694)#696
aarontrowbridge merged 3 commits into
mainfrom
694-feat-app-the-campaign-tab

Conversation

@aarontrowbridge

Copy link
Copy Markdown
Member

Closes #694.

The digest tile's drill-down sibling — the Work Column's Campaign tab: the full campaign ledger (objective, verdict table, blocked queue, loop log) rendered from the existing campaign routes (#662), with the digest tile's deep link landing here.

What (3 commits)

  • Tab grammar: campaign registered as a named Work Column surface (closable/reopenable, never a file tab).
  • The render model: campaign-tab-model.ts — route payload → verdict table / objective / blocked lines / loop-log tail, + the campaignPromptSlug deep-link recognizer.
  • The surface: CampaignTabContent + tab triggers + panel-menu entries in both strip branches; the digest tile deep-links from both widget hosts (the tile's amico.prompt composition stays).

Evidence (director-gated independently)

  • Zero extension diffsgit diff 58a5cc9..HEAD is 8 files, all app-bundle; the detail route already carried every field the table needs. No new server surface, no golden re-record (built-in set unchanged; the only manifest work is per-file sha256 updates for edited overlay files, per the 10c3779 precedent — drift gate PASS, 562 files).
  • Model tests 19/19 + 9 component/integration pins (the 4 ledger sections + 3 empty-state levels: no campaigns → how-one-starts; fetch failure; content-less ledger).
  • Escaping pin (no innerHTML/dangerouslySetInnerHTML), Solid auto-escape, theme tokens only.
  • Overlay suite in the materialized base: 1020 passed / 0 failed (29 new); root typecheck exit 0; extension suite 1829 passed / 3 environmental (reproduced on pristine 58a5cc9).

Director-cast in the harness-agnostic campaign, loop 23 (AFK execution per the standing directive).

… grammar (#694)

createSessionTabs treats 'campaign' exactly like pulseInspector: a named
surface (campaignOpen memo, excluded from panelTabs, activeTab fallback
after pulseInspector, closable). The tab itself is the next slice; the
grammar lands first so the deep link and the panel menu have something
to open.
… the deep-link recognizer (#694)

campaign-tab-model.ts projects GET /amicode/campaigns + the per-campaign
detail route into the tab's render model: verdict table (header detection
by marker-free row 0; unit → first cell, status token + verbatim evidence
→ last cell per the §2 grammar), objective/blocked marker-stripped lines,
§8 loop-log tail as table rows or text lines, frontmatter identity. Plus
campaignPromptSlug (the digest tile's exact 'Open the campaign <slug>'
composition) and pickCampaign (the digest's newest-ACTIVE rule).
… deep link (#694)

CampaignTabContent renders the active campaign's complete ledger from the
existing routes (#662): objective lines, the full verdict table (unit →
status token → verbatim evidence), the blocked queue with reasons, and
the §8 loop log (table or text). Empty state at every level — no
campaigns explains how one starts (run a research loop; ledgers land in
the personal vault's sessions/ dir), fetch failures are readable, a
content-less ledger says so. Solid JSX only; theme-token classes.

Integration: the campaign named surface gets its trigger in both
tab-strip branches (legacy + v2), its Tabs.Content, and a panel-menu
entry beside the quantum surfaces. The digest tile's click path
deep-links in from both hosts: the Work Column's Home tab widget host
recognizes 'Open the campaign <slug>' and opens the tab (prompt still
prefills the composer), and the home page's draft handoff opens it once
per prompt text via the session prompt watch.
@coderabbitai

coderabbitai Bot commented Aug 31, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Team

Run ID: d3bf3f85-dd7a-4a0a-a813-21ed28236e39


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@aarontrowbridge
aarontrowbridge merged commit 9d2141a into main Aug 31, 2026
9 checks passed
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.

feat(app): the Campaign tab — the Work Column's full-ledger drill-down

1 participant