nexus/ui/src
Nexus Dev 428f033690 refactor(nexus): wave 2.5 follow-ups (presentations + proj derivatives)
Three coordinated changes after reviewing the wave 2 subagent reports:

1. Restore Presentations as the 9th Studio workshop.

Phase 10's subagent dropped Presentations from the workshop grid
because the spec's eight-workshop list didn't include it. But
.planning/PROJECT.md explicitly lists "Presentations & video
generation via Remotion" as an Active v1.7 requirement and the
existing PresentationPanel.tsx is already a real working Remotion
generator. Dropping it was silent feature regression.

  - workshops.ts: add "presentations" slug + Presentation Lucide
    icon, placed between social and convert in canonical order
  - classifyIntent.ts: add pitch-deck / slide-deck / demo-video /
    keynote intent routing (before social so "pitch deck" wins)
  - StudioWorkshopDetail.tsx: import PresentationPanel and add a
    "presentation" case in WorkshopBody
  - workshops.test.ts: expected canonical order updated to 9 slugs
  - classifyIntent.test.ts: 4 new parameterized rows for presentations
  - WorkshopCard.test.tsx: index 7 is now PRESENTATIONS, 8 is CONVERT
  - WorkshopGrid.test.tsx: expected card count 9, canonical order

2. ProjectCard hero-stat derivatives instead of em-dash city.

The shared Project record has none of the fields the spec §7.1 card
depends on: milestoneProgress, nextGate, costBurned, per-project
agent count, phase/milestone array. Wave 2 shipped every card with
"—%" and blank hero numbers — visually underwhelming for a layout
whose whole point is the 72px volt performance stat.

Compute best-effort proxies on the client from data that exists:

  - progress: closed_issues / total_issues × 100, from a single
    issuesApi.list(companyId) query grouped by projectId
  - nextGateName: first pending approval whose payload.projectId
    matches, from a single approvalsApi.list(companyId, "pending")
    query
  - lastActivity: max(project.updatedAt, newest issue.updatedAt in
    the project), rendered as "8m ago"-style diff

Each proxy is annotated with // TODO(phase-11.5) for replacement
when real backend aggregates land. phase, costBurnedCents, and
per-project agent count remain hard gaps — rendered as null which
the card surfaces as em-dashes. These three are explicitly queued
for Phase 11.5.

No backend changes; everything derives from existing endpoints.
Two new useQuery calls in Projects.tsx (issues + pending approvals)
both fire per-company, not per-project, so they stay cheap for the
~dozens-of-projects scale the list targets.

3. Spec updated 8 → 9 workshops everywhere it referred to the count.

docs/specs/2026-04-11-nexus-layout-overhaul.md:
  - §2 IA table: 8 → 9 workshops
  - §6 ASCII header: Eight → Nine
  - §6.3 section title: Eight workshops → Nine workshops
  - §11 decisions log #16: amendment note explaining the 8→9 bump
  - §13 phase 10 description: 8-card → 9-card, with Presentations
    explicitly called out
  - "Folds into Studio as the 8th workshop" → "Folds into Studio
    as a workshop (the legacy /convert route is preserved for
    backwards compat)"

Verification: 75/75 studio tests passing; 52/52 projects tests
passing; tsc clean on studio/ + projects/ + Projects.tsx +
ProjectDetail.tsx + StudioWorkshopDetail.tsx.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 13:04:36 +00:00
..
adapters feat(nexus): design system phase 3 raw utility sweep 2026-04-10 17:40:32 +00:00
api fix(nexus): auto-bootstrap invite and vite onnxruntime middleware 2026-04-10 16:50:28 +00:00
components refactor(nexus): wave 2.5 follow-ups (presentations + proj derivatives) 2026-04-11 13:04:36 +00:00
context feat(nexus): design system phase 1 tokens and inter font 2026-04-10 17:19:56 +00:00
fixtures Add a run transcript UX fixture lab 2026-03-11 10:47:22 -05:00
hooks refactor(nexus): rewire PersonalAssistant to use new frame pieces (phase 9) 2026-04-11 12:22:55 +00:00
lib refactor(nexus): remove redundant MemoryRouter re-export in router wrapper 2026-04-11 10:56:22 +00:00
pages refactor(nexus): wave 2.5 follow-ups (presentations + proj derivatives) 2026-04-11 13:04:36 +00:00
plugins Enhance plugin loading and toolbar integration 2026-03-14 15:27:45 -07:00
types feat: Phase 41 — Diagrams, Icons & Theme Engine (Mermaid, SVG icons, OKLCH palettes) 2026-04-05 09:56:37 +00:00
App.tsx refactor(nexus): wire wave 2 routing and icon rail gate indicator 2026-04-11 12:32:56 +00:00
index.css feat(nexus): design system phase 2 status and role color dictionaries 2026-04-10 17:25:21 +00:00
main.tsx feat(21-04): create ChatPanel shell and wire into Layout and main.tsx 2026-04-04 03:55:47 +00:00
vite-env.d.ts Add feedback voting and thumbs capture flow 2026-04-02 09:11:49 -05:00