Skip to content

Commit 6331162

Browse files
mariuspruvotclaude
andcommitted
chore: prune dead frontend components and stale doc refs
- delete unused components: StatusBadge, ThinkingBlock, ToolUseBlock (knip-confirmed, not imported anywhere outside themselves) - remove unused Topbar re-export from shared/components barrel (Topbar is still imported directly by AppShell — component kept) - drop unused @testing-library/jest-dom devDep (no imports anywhere) - declare @shikijs/langs + @shikijs/themes as explicit dependencies (used directly by shiki.ts via deep imports — were only transitive) - CLAUDE.md: drop ToolUseBlock/ThinkingBlock from the Conversation UI component chain now that the files are gone make lint ✓, web tests 65/65 ✓, tsc clean. API-side tests need Postgres up (unchanged, not touched by this cleanup). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent a6b6dab commit 6331162

7 files changed

Lines changed: 45 additions & 298 deletions

File tree

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ infra/
4949
- **Container orchestration**: `container` module manages ephemeral Docker lifecycle, credential injection, result relay
5050
- **Skills as agents**: each skill is a self-contained folder with workflow definitions, mounted into containers
5151
- **SSE passthrough**: backend relays container output to frontend (no AI response generation in backend)
52-
- **Conversation UI**: frontend renders session output as a structured conversation with markdown (react-markdown + remark-gfm), syntax highlighting (shiki with JS regex engine), diff coloring, and collapsible tool_use/thinking blocks. Components: `ConversationOutput` (scroll container) -> `MessageBlock` (role dispatch) -> `MarkdownContent` / `CodeBlock` / `ToolUseBlock` / `ThinkingBlock`. Data flows as `StreamMessage[]` (structured content blocks) instead of flat text lines.
52+
- **Conversation UI**: frontend renders session output as a structured conversation with markdown (react-markdown + remark-gfm), syntax highlighting (shiki with JS regex engine), and diff coloring. Components: `ConversationOutput` (scroll container) -> `MessageBlock` (role dispatch) -> `MarkdownContent` / `CodeBlock`. Data flows as `StreamMessage[]` (structured content blocks) instead of flat text lines.
5353
- **Session persistence**: stream-json events are batch-persisted to `session_events` table (JSONB) during SSE streaming via `stream_and_persist()`. Completed sessions can be replayed from `GET /sessions/{id}/events`. The streaming pipeline is layered: `stream_events()` (raw tuples) -> `stream_and_persist()` (SSE + DB writes) or `stream_output()` (SSE only, for tests).
5454
- **Multi-turn via per-turn invocations**: `--input-format stream-json` exits after each turn (by design). The entrypoint runs `claude -p` for the first turn, then loops reading user messages from a FIFO and calling `claude -c -p` (--continue) for each subsequent turn. Each invocation emits its own `system` init + `result` events — frontend should expect multiple `system`/`result` events per session.
5555
- **Stream-json protocol**: containers emit NDJSON with 5 event types: `system` (init/retry), `assistant` (one event per content block — thinking/text/tool_use), `user` (tool_result), `result` (turn end + metadata), `rate_limit_event`. The `result.result` field duplicates the last assistant text — only display assistant events, use result for status only. No `--include-partial-messages` flag, so no `stream_event` deltas. A 6th type `error` (`{"type":"error","error":{"message":"..."}}`) is emitted by the entrypoint when setup fails (clone/checkout errors). The SSE `done` event includes both `message` and `status` fields — frontend uses `status` to distinguish `completed` vs `failed`.

0 commit comments

Comments
 (0)