Skip to content

feat: design system and component sticker sheet#14

Open
gmackie wants to merge 164 commits into
streed:mainfrom
gmackie:feat/design-system
Open

feat: design system and component sticker sheet#14
gmackie wants to merge 164 commits into
streed:mainfrom
gmackie:feat/design-system

Conversation

@gmackie

@gmackie gmackie commented Mar 17, 2026

Copy link
Copy Markdown

Summary

  • Add DESIGN.md — complete design system with warm amber primary, Satoshi/DM Sans/JetBrains Mono typography, warm gray neutrals, and full token spec for colors, spacing, layout, and motion
  • Add design/sticker-sheet.html — standalone HTML reference covering all UI primitives (buttons, badges, inputs, cards, alerts, tables, dialogs, dropdowns, tooltips, toasts, separators), app-specific components (sidebar nav, kanban board, graph nodes, project cards, notifications, dispatch bar, ForgeGraph gates, terminal, inline editable, command palette), and composite screen examples (dashboard overview, work item detail, settings form, full app shell)
  • Add CLAUDE.md with design system enforcement rules
  • Add CHANGELOG.md tracking changes from v0.0.4

Pre-Landing Review

No issues found. Documentation-only change — no app code modified.

Test plan

  • Typecheck passes (38/38 tasks)
  • Sticker sheet renders correctly in light and dark modes
  • All fonts load from CDN (Fontshare + Google Fonts)

🤖 Generated with Claude Code

gmackie and others added 30 commits October 11, 2025 13:02
Implement comprehensive multi-agent architecture supporting Claude, Amazon Q, Codex, Cursor Agent, Gemini, and OpenCode through a unified adapter interface.

Features:
- Agent factory with dynamic adapter loading
- Base adapter interface with standardized agent lifecycle
- Individual adapters for each AI agent platform
- Session caching for persistent connections
- Agent configuration via JSON
- Database migration for agent support
- Comprehensive test coverage

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Add flexible configuration system supporting multiple build modes (Bob/Jeff/Custom) with environment-based product naming and optional GitHub authentication.

Features:
- JEFF_MODE: Renames app to "Jeff" and restricts to Amazon Q agent only
- APP_NAME: Custom product naming via environment variable
- ENABLE_GITHUB_AUTH: Toggle GitHub OAuth (disabled for Electron builds)
- GitHub OAuth integration for web deployments
- Auth contexts and protected routes
- Configuration API endpoint for frontend

Environment Variables:
- JEFF_MODE=true: Activates Jeff mode (name: Jeff, agent: Amazon Q only)
- APP_NAME="CustomName": Sets custom product name
- ENABLE_GITHUB_AUTH=false: Disables GitHub auth (for Electron/local use)

Authentication is automatically disabled when running via Electron, ensuring local-first usage without requiring GitHub credentials.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Implement comprehensive dashboard system with persistent terminal sessions and repository-level views.

Features:
- Repository Dashboard: Overview of worktrees, branches, and git status
- AgentPanel: Unified terminal interface (renamed from TerminalPanel)
- Persistent WebSocket connections with automatic reconnection
- Session persistence across page reloads
- Settings menu with configuration options
- WebSocket debug panel for development
- Multi-tab interface: Dashboard, Claude, Directory, Git, Notes
- Worktree deletion with confirmation modals
- Direct worktree links for collaboration

Terminal Persistence:
- Sessions survive page reloads via SessionCache
- Automatic instance warmup to keep sessions alive
- Connection state tracking and recovery
- Background instance polling

UI Improvements:
- Collapsible repository panel
- Status indicators for instances
- Copy-to-clipboard worktree links
- Force delete with git cleanup
- Enhanced directory browser integration

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add Dockerfile, docker-compose.yml, and nginx config for containerized deployment
- Add VPS setup script and deployment documentation
- Add AgentConfigPanel component for managing agent config files
- Add GitHubRepoSelector for cloning repos from GitHub
- Add agentPaths utility for resolving agent CLI commands
- Add system terminal endpoint for non-instance terminals
- Add API routes for agent config CRUD and GitHub repo operations
- Improve database initialization with waitForInit() for async safety
- Update server to support Docker networking (0.0.0.0 binding)
- Add OpenCode and Cursor Agent to supported agents list
- Update documentation for multi-agent setup and VPS deployment
Major architectural changes:
- Migrate from single-app to turborepo monorepo structure
- Add packages/: api, db, auth, config, bob, mcp-server, legacy adapters
- Add apps/: nextjs (web), expo (mobile), gateway (session management)
- Add tooling/: eslint, prettier, typescript, tailwind configs

GitHub Integration (Phase 1-6):
- Database schema: git_provider_connections, pull_requests, git_commits,
  webhook_deliveries, task_runs, device_push_tokens
- Token vault with AES-256-GCM encryption (HKDF per-row derivation)
- Provider clients: GitHub, GitLab, Gitea with unified interface
- Webhooks: GitHub/GitLab/Gitea/Kanbanger endpoints with signature verification
- PR service: create, update, merge, sync commits
- Kanbanger integration: task executor, blocked task handling
- Mobile: push token schema, deep linking, offline queue utilities

Additional features:
- Session management with workflow states (awaiting_input, blocked, etc.)
- tRPC routers for git providers, pull requests, sessions
- MCP server tools for PR, task, status, and context reporting
- Legacy agent adapters (claude, kiro, codex, gemini, opencode, cursor)
- Fix TS2871 in workflowStatusService.test.ts (undefined ?? fallback)
- Wrap ChatPage useSearchParams in Suspense boundary for Next.js 16
Add a System Status panel to the dashboard and a minimal UI smoke test. Also make Playwright e2e choose an open port locally when 3000 is occupied.
Replace the empty right-panel welcome state with the System Status panel so host/agent diagnostics are visible before selecting a worktree.
Add a dedicated dashboard page that reuses /api/system-status via SystemStatusPanel.
gmackie and others added 30 commits March 16, 2026 06:00
4-batch plan covering dispatch_batches schema, executeTask agent
selection, dispatch tRPC router with dependency-aware scheduling,
agent heuristics, dispatch plan UI, and live monitoring.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ype param

Add schema for batch dispatch execution: dispatch_batches tracks batch
status/concurrency/counters, dispatch_items tracks individual tasks with
agent type, blocked-by dependencies, and task run links. Make executeTask
accept an optional agentType parameter (defaults to "opencode").

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add dispatch router with 6 procedures (createBatch, getBatch,
updateItemAgent, updateConcurrency, dispatch, checkProgress) for
dependency-aware batch execution of planning tasks. Add suggestAgent
heuristic that assigns agent types based on task kind and content.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Create DispatchPlan component with agent selection table, concurrency
control, dispatch button, and progress tracking. Add dispatch page at
/planning/dispatch/[batchId]. Wire commitPlan to automatically create
a dispatch batch and redirect to the dispatch page.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add dispatch status dots on board cards, an active dispatch status bar
on the planning page, a listBatches query, and a useDispatchProgress
hook that auto-polls checkProgress for dependency-aware task scheduling.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2-batch plan covering JSON-RPC stdio agent process manager with
per-agent adapters (claude, codex, opencode), gateway integration,
and auto-completion lifecycle (PR creation, status transitions,
notifications on task/batch completion).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add AgentProcessManager that spawns agent CLIs as child processes
communicating via JSON-RPC over stdin/stdout, with adapters for
Claude, Codex, and OpenCode. Integrated into gateway as an
alternative to the existing Docker/PTY path.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…sync

When checkProgress detects a completed task, update the planning API
status to "in_review" and insert a task_completed notification. When the
entire batch completes, insert a batch_completed notification. Extends
the workItemNotificationType enum with the two new values.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
4-batch plan: schema extensions (forgegraphRepoId, revision/build
tracking on taskRuns, pipelineState on dispatchItems), event reporter
service, pipeline orchestrator state machine (build → dev → staging →
prod), and UI visibility.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Corrected architecture: ForgeGraph tables in Bob's DB (forge_revisions,
forge_builds, forge_deployments, forge_run_events), direct DB operations
replacing the incorrect HTTP client, pipeline orchestrator state machine,
event reporter service wired into task lifecycle.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace the ForgeGraph HTTP client with native Drizzle tables
(forge_revisions, forge_builds, forge_deployments, forge_run_events)
and rewrite the tRPC router to use direct DB operations. Update UI
components to consume DB record shapes instead of the old
`{ available, data }` wrapper.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…cycle

Create event reporter service that records lifecycle events (created,
approved, failed, patch_applied, tests) as direct DB operations against
forge_revisions and forge_run_events tables. Wire into taskExecutor for
task creation events and dispatch router for completion/failure events.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…rodDeploy

Implements the build/deploy pipeline for dispatch items:
- PipelineOrchestrator advances items through agent_complete → building →
  gates_passed → deploying_dev → dev_healthy → deploying_staging →
  staging_healthy → awaiting_prod_approval → deploying_prod → prod_healthy → complete
- Wired into checkProgress polling to advance pipeline each cycle
- Items entering "completed" status now kick off pipeline with agent_complete
- approveProdDeploy endpoint on forgegraph router for prod gate approval
- Failure states (build_failed, deploy_failed) are terminal with notifications

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add Pipeline column to dispatch table showing pipeline state badges with
color coding, live time-in-stage counters for active states, Approve Prod
button for awaiting_prod_approval, and Retry button for failed states.
Extend ForgeGraphSection to show build history and deployment status.
Add resetPipelineState mutation to dispatch router.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Python 3.14 removed distutils, breaking node-gyp v8. Override to v10
which doesn't depend on distutils. Also add node-pty and @swc/core to
pnpm onlyBuiltDependencies for pnpm 10 build script approval.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3-batch plan: VCS adapter abstraction (auto-detect git/jj), comprehensive
tests for planning/dispatch/pipeline/event reporter, and T3 Code protocol
bridge validation with event type mapping.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Introduce a VcsAdapter interface with Git and JJ implementations so
the gateway can auto-detect .jj repos and dispatch the correct VCS
commands. The /git/checkout handler now returns a changeId (commit SHA
or jj change ID) which taskExecutor stores as forgegraphRevisionId on
the task run for ForgeGraph tracking.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… VCS

Add 28 new tests across 5 test files:
- planSession router: get, list, updateDraft, setDependency, removeDependency, commitPlan
- dispatch router: createBatch, getBatch, updateItemAgent, updateConcurrency, checkProgress
- pipelineOrchestrator: state transitions (agent_complete, building, gates_passed, terminal)
- eventReporter: reportCreated, reportApproved, reportFailed, null repositoryId handling
- VCS adapter: detectVcs and getVcsAdapter for git/jj detection

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add bidirectional event mapping between Bob SessionEvent and T3 Code
domain events, mock agent for stdio bridge validation, and integration
tests for AgentProcessManager.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Deploy script at scripts/deploy-labnuc.sh: pulls code, installs deps,
pushes schema, builds web, restarts services, health checks.

Systemd user services configured on labnuc:
- bob-web.service: Next.js on :3100 with schema push on start
- bob-gateway.service: Gateway via tsx on :3002 with .env sourcing
- Caddy reverse proxy on :9443 (web + gateway WebSocket)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add workspace switching via Select dropdown on planning page, recent
planning sessions list component, and align settings page with the
dashboard header style used across the app.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Next.js couldn't resolve .js extension imports in the legacy package
source. Adding it to transpilePackages lets Next.js handle the TS→JS
transform. Also updated deploy script to build legacy before web.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Switch @bob/legacy tsconfig from NodeNext to ESNext/bundler module
  resolution, removing all .js extensions from imports (32 occurrences
  across 11 files). This fixes Next.js Turbopack resolution failures.
- Remove .js extensions from @bob/execution imports (same issue).
- Fix styles.css import path for chat.css after route move to (dashboard).
- Add @bob/legacy and @bob/execution to serverExternalPackages in
  next.config.js.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Three-view switcher on the planning page: Board (existing kanban),
Graph (xyflow-based DAG showing parent/child + dependency edges with
dagre auto-layout, dark-themed custom nodes with status/priority/
pipeline badges), and Timeline (7-column pipeline stages from backlog
through deployment to done).

Custom WorkItemNode renders identifier, title, status, kind, priority,
pipeline state, and dispatch agent. Nodes are clickable (link to detail).
Edges show hierarchy (solid) and dependencies (dashed/animated).

Dependencies: @xyflow/react, dagre, @types/dagre.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace broken PATH substring check in system-status API with actual
`which` + `--version` command execution. Now properly detects git, gh,
docker, and agent CLIs regardless of PATH string format.

Add breadcrumbs to system page, remove duplicate wrapper div.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Establish Bob's visual identity with DESIGN.md (warm amber primary,
Satoshi/DM Sans/JetBrains Mono typography, warm gray neutrals) and a
comprehensive HTML sticker sheet covering all UI primitives, app-specific
components, and composite screen examples (dashboard, work item detail,
settings form, app shell).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.

1 participant