spike: cc-chat as a Scala.js custom element — core split, ADR 0002, measured bundles #60
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
iterative-works/claude-code-query!60
Loading…
Reference in a new issue
No description provided.
Delete branch "spike/cc-chat-scalajs"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Validates the agent-chat UI direction decided with ADR 0002: the durable asset is a versioned session-over-HTTP contract, and its reference client is a self-contained Scala.js custom element (
<cc-chat>) sharing the SDK's model and fold logic through a cross-built core. This branch carries the enabling core split, the ADR, the spike that proved the approach, and the bundle-size CI gate.What lands
CLIError, conversation-log model/parser) move tocore/shared/src, compiled by both the JVMcoreand the newcore.jsScala.js module (claude-code-query-core_sjs1_3). JVM-bound code stays incore/src.Moment(releasediw-support-time:0.2.0, resolved from the forge registry): removesscala-java-timeat the root —java.timeis unreachable from cross-built sources, cutting ~158 KB gzip from browser bundles.ConversationLogEntry.timestamp: Option[Moment], parsed withMoment.parseIsoOption(timestamps stay best-effort on vendor JSONL).uispike/*, throwaway by declaration): bare/rawdom/laminar element variants and a toy host proving hashed classpath-resource delivery, history + SSE wiring with shared circe decoders, and correct fold semantics (verified in Chrome, incl. a real 1,128-line transcript → 122 rows).Measured (fullLinkJS, gzip; ceiling 400 KB)
Not in scope
The real
uimodule (transcript viewer + Tapir endpoints, built test-first) is the next slice per ADR 0002 and supersedesuispike/*. The spike deliberately skipped TDD, as recorded in the ADR.🤖 Generated with Claude Code
a381de915de86bc729b6