Files
ProjectE/apps/web
Hermes d4c02a3de2 T14/Bug #4 #5 #6 #8 #10: commit in-flight worker fixes (agents _all sentinel, settings useThemeStore, 5 detail route registrations)
Continuation of the T10 test report fixes (45d0810). The prior workers
for these bugs wrote the code but died before committing. This commit
captures their work and additionally restores a GET /:id/permissions
route that the prior helper-script accidentally deleted.

- Bug #4 HIGH: GET /api/agents/_all/activity now skips the WHERE clause
  when the SPA passes '_all' as the id.
- Bug #5 MED: Settings > Appearance tab now reads/writes useThemeStore
  (Zustand) so theme changes are consistent with the command palette.
- Bug #6 HIGH: /projects/:id detail page now exists. Plus 4 sibling
  detail pages (tasks/:id, habits/:id, notes/:id, canvas/:id) wired
  into the route tree.
- Bug #8 MED: GET /api/agents/activity (bare path) now returns the
  last 100 activity items instead of falling into /:id/activity with
  id='activity' (which failed the UUID cast).
- Bug #10 LOW: tasks/:id, habits/:id, notes/:id, canvas/:id detail
  pages are now committed (the worker that wrote them never committed).
- graph.tsx and index.tsx overlap with earlier committed fixes
  (t_cc5d9887 and t_296f0121); changes are additive and don't regress.

Also restores GET /api/agents/:id/permissions which the prior helper
script accidentally removed when reformatting agents.ts.

Parent: t_e1cbd87d
2026-08-01 04:13:25 +00:00
..

Project E — Web SPA

The frontend SPA for Project E, built with React 19, TanStack Router, and Vite.

Architecture

apps/web/
├── src/
│   ├── components/
│   │   ├── shell/          # App shell: Sidebar, Topbar, CommandPalette, ShortcutsHelp, ThemeProvider
│   │   ├── ui/             # shadcn/ui primitives (button, dialog, input, etc.)
│   │   └── entities/       # Entity-specific components (detail panels, forms)
│   ├── hooks/              # Custom hooks (use-keyboard-shortcuts, use-realtime)
│   ├── lib/
│   │   ├── api.ts          # Typed API client + React Query hooks
│   │   ├── stores/         # Zustand stores (theme, sidebar, keyboard-shortcuts, create-dialog)
│   │   ├── types/          # Shared TypeScript types
│   │   └── utils.ts        # cn() utility
│   ├── routes/             # TanStack Router file-based routes
│   │   ├── __root.tsx      # Root layout
│   │   ├── _app.tsx        # Authenticated app layout (sidebar + topbar + palette)
│   │   ├── login.tsx       # Login page
│   │   └── _app/           # All app pages
│   ├── main.tsx            # Entry point
│   ├── routeTree.ts        # Auto-generated route tree
│   └── index.css           # Tailwind + CSS variables
└── dist/                   # Production build output

Pages (14 routes)

Route Page Description
/ Dashboard Configurable widget grid (8 widget types)
/tasks Tasks Full CRUD with filters, sort, kanban view
/habits Habits Track habits with streaks, completions
/projects Projects Project management with sections
/notes Notes Rich text notes with backlinks
/calendar Calendar react-big-calendar with DnD, date-fns localizer
/graph Graph react-force-graph-2d with custom renderers
/search Search Full-text search across entities
/analytics Analytics 6 chart types (recharts)
/agents/activity Agent Activity SSE live activity feed
/canvas Canvas Block-based editor
/daily Daily Notes Journal with calendar sidebar
/settings Settings 9 tabs (profile, domains, agents, webhooks, etc.)
/login Login Authentication

OSS Components

  • Calendar: react-big-calendar v1.20 with withDragAndDrop HOC, date-fns localizer, custom event renderer with color tokens, custom toolbar, responsive (agenda on mobile)
  • Graph: react-force-graph-2d v1.29 with custom node/link canvas renderers, hover highlighting, search-to-fly, filter panel (entity + relationship types), ResizeObserver, 500-node cap
  • Command Palette: cmdk v1.1 with recent items, @mention agent search, theme/settings actions, mobile full-screen
  • Shortcuts: @github/hotkey v3.1 for global keyboard shortcuts (g+letter nav, n+letter create, ?, /, c)

Keyboard Shortcuts

Shortcut Action
⌘K / Ctrl+K Open command palette
g then d Go to Dashboard
g then t Go to Tasks
g then h Go to Habits
g then p Go to Projects
g then n Go to Notes
g then c Go to Calendar
g then g Go to Graph
g then s Go to Settings
n then t New task
n then h New habit
n then p New project
n then n New note
c Focus create in palette
/ Focus search
? Show shortcuts help

Development

# Install dependencies
bun install

# Start dev server (port 3000)
bun run dev

# Production build
bun run build

# Preview production build
bun run preview

# Type check
bun run typecheck

API

All API calls go through /api/* and are proxied to the Hono backend. The API client in src/lib/api.ts provides typed get/post/put/patch/delete methods plus React Query hooks (useApiQuery, useApiMutation).

Bundle Size

  • Total JS: ~1.2 MB (369 KB gzipped)
  • CSS: ~53 KB (10 KB gzipped)
  • Budget: < 1.5 MB gzipped