~bigbes/lethe: b100feee

web: home route with real session list, filters, keyboard cursor

- api/client.ts: apiFetch with AuthError/APIError, 401 and problem+json handling
- api/adapters.ts: SessionDTO→Session adapter with composite id and epoch conversion
- api/adapters.test.ts: 6 TDD tests covering all specified edge cases
- features/home/useSessions.ts: TanStack Query hook with since/tool/host params
- features/home/FilterChips.tsx: chip-bar with popovers, Esc/outside-click dismiss
- features/home/SessionsTable.tsx: grid table with cursor row highlight, formatStarted/formatTok
- features/home/useHomeCursor.ts: cursor hook with move/activate/jumpTo
- routes/index.tsx: Home route wired to real data, URL-driven filters, keyboard cursor
- routes/__root.tsx: cursorRef + KeyboardCursorContext for route-local cursor registration
- routes/session.$tool.$host.$id.tsx: stub for Phase 6
- styles/home.css: .home-table/.home-thead/.home-row/.home-row.cursor grid rules
- primitives/ToolDot.tsx: widened tool prop to string (Tool type is open-ended)

Eugene Blikh <bigbes@gmail.com> — 2026-04-26 04:04:18 UTC

Commit b100feee542aaacd159d90f8c35b2c68a26e8893view raw patch

Parent(s): 0b51b8ee

14 changed file(s)

FileStatus+
internal/server/web/dist/index.html M +2 -2
web/src/api/adapters.test.ts A +59
web/src/api/adapters.ts A +51
web/src/api/client.ts A +45
web/src/features/home/FilterChips.tsx A +209
web/src/features/home/SessionsTable.tsx A +82
web/src/features/home/useHomeCursor.ts A +37
web/src/features/home/useSessions.ts A +54
web/src/primitives/ToolDot.tsx M +1 -1
web/src/routeTree.gen.ts M +35 -2
web/src/routes/__root.tsx M +32 -8
web/src/routes/index.tsx M +110 -8
web/src/routes/session.$tool.$host.$id.tsx A +25
web/src/styles/home.css A +48