Commit graph

6 commits

Author SHA1 Message Date
Nexus Dev
4623c8aea0 feat(nexus): add mobile tab bar and sheet variants (phase 15)
Replace legacy MobileBottomNav with the new 4-destination MobileTabBar
that mirrors the desktop IconRail (Assistant, Studio, Projects,
Settings). Adds volt active states with a 2px bar above the icon,
safe-area bottom padding, and scroll-hide wiring via the existing
mobileNavVisible handler in Layout.

Adapts Phase 9 HistorySheet and MemorySheet to a full-screen variant
below 768px via useMediaQuery, and makes Phase 11 BuilderTabStrip
horizontally scrollable with scroll-snap and edge fade on mobile.
Light TopStrip polish (tighter padding, truncating breadcrumb)
completes the mobile frame.

PromoteTransition mobile variant is deferred — Phase 12 had not yet
landed when Phase 15 started; the controller can add the mobile
branch when merging.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 13:21:28 +00:00
Nexus Dev
c3689f11b1 refactor(nexus): rewrite Projects list with hero-stat cards (phase 11)
Replaces the EntityRow table with the spec §7.1 hero-stat card grid:
full-width cards on <1024px, 2-up on lg+, 16px gap. Each card uses
the new ProjectCard component (72px Inter Black volt hero, status
dot, progress bar, sub-line, footer).

Adds the spec's empty state — full-bleed 96px Inter Black volt
"NO PROJECTS YET" with a forest-green "⊕ START YOUR FIRST PROJECT"
CTA. The regular top-right "⊕ NEW PROJECT" CTA is also forest-green.
Both CTAs wire to the existing openNewProject dialog.

Data gaps: the card passes progress=null, phase=null, nextGateName=
null, costBurnedCents=null because the shared Project type doesn't
carry those fields yet. ProjectCard renders em-dash placeholders
gracefully. Status is mapped from the existing ProjectStatus enum
(paused → waiting, active/running → working, else idle).

Also fixes an unrelated test fixture that used the stale "active"
ProjectStatus literal which tsc rejects.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 12:23:14 +00:00
Nexus Dev
d10c5b991e feat(nexus): add thin wrappers for per-project tabs (phase 11)
Wires the 6 Builder tab content components:

• IssuesTab — thin wrapper around IssuesList (which already accepts a
  projectId prop, so this is a full wiring).
• GatesTab / AgentsTab / CostsTab / ActivityTab / OrgTab — render a
  shared TabPlaceholder marking the Phase 11 data gap. None of the
  underlying list components accept a projectId filter today, and the
  Phase 11 plan forbids modifying them unilaterally. The placeholders
  are explicit (never fabricate per-project data) and carry the
  follow-up description the controller will turn into a ticket.

GatesTab is named "Gates" everywhere visible (display-only rename per
spec §7.2.4 / plan §5); approvalsApi / Approval type / /api/approvals
endpoints are all untouched.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 12:21:33 +00:00
Nexus Dev
f20fd0ec8d feat(nexus): add OverviewTab with hero stat + milestones (phase 11)
Implements the default Builder tab per spec §7.2.1:
• 72px Inter Black volt hero percentage + "N AGENTS ACTIVE" counter
• Milestone checklist card with [✓]/[○]/[ ] bullets and pale yellow
  next-gate marker + "← NEXT GATE" label
• Optional origin chat card (hidden when project has no origin)
• 24h activity rollup card (commits, issues closed, gates awaiting,
  burned)

All data inputs are typed with nullable fields so callers can pass
null for any missing slice and the tab renders explicit em-dash or
"No milestones defined" placeholders without fabricating values.
The Project type doesn't currently carry milestones, origin chat, or
24h rollups — see Phase 11 report for the backend gap list.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 12:19:53 +00:00
Nexus Dev
2c3f4ff623 feat(nexus): add BuilderTabStrip component (phase 11)
Introduces the 7-tab Builder strip rendered under TopStrip on Project
Detail: OVERVIEW · ISSUES · AGENTS · GATES · COSTS · ACTIVITY · ORG.
Inter 600 14px uppercase, 0.1em tracking, silver default, volt text
+ 2px volt underline on active. ORG is hidden for single-agent
projects (spec §7.2.7).

Also exports resolveBuilderTab() and useActiveBuilderTab() for the
ProjectDetail integration. The link targets for agents/gates/costs/
activity/org route back to ProjectDetail via path matching until the
controller adds the new App.tsx routes post-Wave (see report).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 12:18:35 +00:00
Nexus Dev
a2dab5b4f6 feat(nexus): add ProjectCard hero-stat component (phase 11)
New Projects list card: 72px Inter Black volt hero percentage, pale
yellow/volt/forest status dot, 8px progress bar, sub-line with phase
and next-gate counter, footer with burn + last activity. Graceful
em-dash placeholders when milestone/cost/activity fields are missing
(the shared Project type has no milestoneProgress etc. yet — see
Phase 11 data-gap report).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 12:17:12 +00:00