codeflash-internal/.claude/handoffs/2026-04-01-handoff.md
Kevin Turcios e8561b9485
feat: add internal team-only roadmap page (#2590)
## Summary

- Adds `/roadmap` page with visual flowchart showing codeflash-python
and codeflash-agent planned work
- Gated behind `isTeamMemberCheck` (same auth pattern as
`/observability`)
- Sidebar link visible only to team members
- Status tracking with distinct visual treatments: compact left-accent
for shipped, hero cards with glow for in-progress, dashed wireframe for
planned

## Test plan

- [ ] Visit `/roadmap` as a team member — page renders with status cards
- [ ] Visit `/roadmap` as a non-team member — redirects to `/`
- [ ] Sidebar shows roadmap link only for team members
- [ ] Build passes (`npm run build`)
- [ ] All tests pass (`npm test` — 39/39)
2026-04-09 15:54:43 -05:00

3 KiB

date branch
2026-04-01 main

Accomplished

  • Created an internal employee-only /roadmap page in cf-webapp (Next.js)
  • Gated behind existing isTeamMemberCheck in middleware + server-side isTeamMember() check
  • Added /roadmap to ConditionalLayout exclusion list so it renders as a standalone page (no sidebar)
  • Added "Roadmap" link with Map icon to the sidebar, visible only to team members (same block as Observability)
  • Built a visual flowchart UI with amber-themed nodes, dot-grid background, numbered badges linking to detail cards below
  • Merged codeflash-python and codeflash-agent planned items into a single unified flow (3 branching nodes feed into 1 node below)
  • Wrote a rationale section explaining: original CLI's single-language design + fragile multi-lang bolt-on, the codeflash-python + codeflash-core rewrite, the OptimizationSession API gap (building blocks done, experiment loop stubbed), and the goal of making codeflash-python the autonomous orchestrator
  • Added a two-track strategy section: Consumer (codeflash --file / --all unchanged) vs B2B/Enterprise (agentic capabilities)
  • Applied avoid-ai-writing skill to clean up language: killed em dash overuse, hollow intensifiers, compulsive triads, indirect phrasing, vague B2B copy

Current State

  • Branch: main (behind origin/main by 7 commits)
  • Uncommitted changes:
    • js/cf-webapp/src/app/roadmap/page.tsx (new file - the roadmap page)
    • js/cf-webapp/src/middleware.ts (added /roadmap to team gate + matcher)
    • js/cf-webapp/src/components/conditional-layout.tsx (added /roadmap to standalone page list)
    • js/cf-webapp/src/components/dashboard/sidebar.tsx (added Roadmap link + Map icon import)
    • .tessl/RULES.md (modified by tessl, not related to our work)
  • Tests: not run (TypeScript type-check passes clean via npx tsc --noEmit)

Key Decisions

  • Used the same auth pattern as /observability (middleware redirect + server-side check) rather than inventing a new gate
  • Page renders standalone (no sidebar) via ConditionalLayout exclusion, same as observability
  • Roadmap data is hardcoded in the component as a TypeScript array, easy to edit manually
  • Used amber/gold accent color (not blue) to differentiate planned items and give a forward-looking feel
  • Unified all planned items (codeflash-python + codeflash-agent) into one flow rather than separate sections, per user preference
  • Rationale text explains the rewrite motivation: original CLI was Python-only, multi-language was bolted on, architecture doesn't support autonomous operation

Blockers

  • None

Next Steps

  1. Create a feature branch and commit all changes (currently on main, user hasn't asked to commit yet)
  2. Pull latest from origin/main (7 commits behind) and resolve any conflicts
  3. Run the dev server (npm run dev in js/cf-webapp) and visually verify the page
  4. Consider adding more planned items to the roadmap as they're defined
  5. The roadmap data structure supports FlowRow with "single" and "branch" types, so new items can be added as rows that connect vertically