Skip to content

v0.4.0

Choose a tag to compare

@amemiya02 amemiya02 released this 06 Jun 08:56
· 128 commits to main since this release

Changelog

  • 95a765d Create CNAME
  • 0e063be Delete CNAME
  • e536a10 Merge pull request #4 from amemiya02/feat/cache-savings-demo
  • bdab6e5 Merge pull request #5 from amemiya02/feat/routing-clarify-exposure
  • 8520a25 Merge pull request #6 from amemiya02/feat/reasonix-competitive-proof
  • 61082b7 Merge pull request #7 from amemiya02/feat/industrial-plans-execution
  • e66b6bf Merge remote-tracking branch 'origin/main'
  • 20e4b1b Revert "feat(agent): fire cost-driven body compaction in maybeCompact"
  • ad39e99 Revert "feat(compact): ShouldCompactBody cost-driven trigger + tests"
  • 86da8c5 Revert "feat(compact): add cost-driven BodyTokenBudget config (disabled until wired)"
  • f24d88f add cname
  • f591992 build(desktop): self-contained macOS .app packaging for make desktop
  • 3ee5f84 build(web): React 18 + Vitest jsdom + jest-dom toolchain (wave 3)
  • d0c9279 build(web): add React 18 + react-markdown/katex/monaco/lucide + testing-library deps for Wave 2
  • 5411436 build(web): convert toolchain Svelte->React (vite-plugin-react, tsx, RTL+jest-dom); drop svelte SPA
  • 69232ba build: add build-web/install-web targets; embed SPA in desktop build (-tags withwebapp)
  • 42c2cd1 build: add ci target combining web-test and go test
  • 7708e6d build: add make web and web-test targets
  • 91ab174 chore(bench): remove stray doubled-path bench/bench/ trace
  • 7b7cd2d chore(demo): address low-severity review nits
  • 251e305 chore(demo): gitignore live results.json
  • 38d0de6 chore(desktop): Phase 1 verification fixups
  • dd2001f chore(gitignore): collapse dated competitive-doc entries into directory glob
  • 75d9c20 chore(llm): all provider tests green
  • 60580ef chore(llm): untrack scope-creep artifacts from Task H commit
  • 9053d89 chore(release): prune internal docs, refresh bilingual README, bump to v0.4.0
  • 295eab3 chore(web): remove unused empty-convo chips + polish SessionRail/Transcript
  • 59945f6 chore(web/p3.2b): drop stale cycle-theme e2e tests + truthful Duet deny copy
  • 2f7cf78 docs(cache): document §3.4/§3.6 status and correct §3.7 (done)
  • 3c65a12 docs(cache): wire-body-diff capture + diff usage
  • 14a2eb6 docs(competitive): add 3-arm cache A/B benchmark runbook
  • 9f28689 docs(competitive): add Lever D (code-mode) head-to-head result
  • 2a2c1f4 docs(competitive): detailed controlled-experiments compendium (raw per-run data)
  • 588fb4c docs(competitive): drop run-1; keep clean code-mode run as sole figure
  • f640159 docs(competitive): honest cache-cost head-to-head findings vs Reasonix
  • 509c2d7 docs(competitive): record read-only dsc-vs-reasonix head-to-head
  • 9818245 docs(desktop): checkpoint/rewind disclaimer (bash/external edits untracked; git is source of truth)
  • dfca8a0 docs(readme): add measured cache-savings numbers (86.8% / 3.8x)
  • 24a80b4 docs(readme): refresh cache number (94.7% / 4.5x, reproducible) + --auto-route + honest tau-bench parity note
  • 2f623aa feat(acp): SessionManager.Steer — forward mid-turn steering to the live agent
  • 7ca8553 feat(acp): add AgentAdapter bridging internal/agent to AgentRunner
  • 212d966 feat(acp): add Content-Length framed transport
  • 2772f68 feat(acp): add HTTP+SSE gateway
  • eeae378 feat(acp): add RealAgentFactory wiring config+permissions+agent
  • 4567a87 feat(acp): add SessionManager with AgentRunner interface
  • abbd99c feat(acp): add dsc serve --acp/--http subcommand
  • a2817bc feat(acp): add stdio JSON-RPC ACPServer dispatcher
  • c8c3504 feat(acp): define ACP JSON-RPC types
  • e8352e3 feat(acp): widen AgentEvent vocabulary for interactive gateway events
  • 2be2fe2 feat(agent): add BranchAt / resolveBranchBoundary for checkpoint forking
  • e42167e feat(agent): add CheckpointIndex for named checkpoint tracking
  • 7ff1cfa feat(agent): add Compact(ctx) method, RunCompact helper, and --compact subcommand
  • b1ddf13 feat(agent): add StopVerifiedDone stop reason
  • 5f6ede7 feat(agent): add VerifyHook post-step verification command runner
  • cd01b4d feat(agent): add WarmthNotice formatter for cross-session cache-warmth hint
  • 520394d feat(agent): cross-session cache-warmth predicate
  • 0ce76d6 feat(agent): fire cost-driven body compaction in maybeCompact
  • 2d63821 feat(agent): intent-clarify gate predicate (off by default)
  • 58c9930 feat(agent): mid-turn Steer — inject user instruction at next step boundary
  • 8821c0c feat(agent): routeTurn helper mapping routing.Decision to request fields
  • 0cafabf feat(agent): selectable ThinkingMode (on/off/adaptive) for cost A/B
  • 59e45a4 feat(agent): wire CheckpointIndex into Agent.RecordCheckpoint
  • e07ba32 feat(agent): wire VerifyHook into agent loop post-step and stop promotion
  • 37f3f46 feat(agent): wire cost-aware routeTurn into request construction (off by default)
  • 2cf7520 feat(agent): wire cost-aware routeTurn into request construction (off by default)
  • bc1174b feat(agent): wire intent-clarify gate into the run loop (off by default)
  • b10b858 feat(agent,cli): wire cross-session cache-warmth notice at session start
  • 9b9c2a0 feat(bench): add drift arm to cachedemo (mid-session tool append busts prefix)
  • 06a87dd feat(bench): per-run nonce in cachedemo busting arms for reproducible A/B
  • e31eeae feat(bench): production-scale prefix option for cache-drift demo
  • 0e48038 feat(cache): §3.4 cache-unit prefix padding inside the frozen epoch (gated on measured unit)
  • 9f27b44 feat(cache): §3.6 boundary-aligned compaction + frozen-prefix guard test
  • e573d4b feat(cacheprobe): measure DeepSeek effective cache-unit granularity
  • b7632da feat(cacheunit): prefix alignment math for V4 compression-block boundaries
  • a1a4376 feat(cli): add --auto-route/--auto-clarify/--escalation-model flags
  • c19fca3 feat(cli): add dsc trace diff-body subcommand
  • b485a4b feat(cli): wire AutoRoute/AutoClarify onto the agent in both run paths
  • 8ddd53e feat(cmd): add --resume-at flag for checkpoint-based session resume
  • c93c566 feat(cmd): add --verify-cmd flag for in-loop verification
  • 8462c14 feat(cmd): register spawn_batch tool in main tool registry
  • 612935d feat(cmd): wire dsc init and dsc doctor subcommands + first-run onboarding gate
  • 8ab044c feat(cmd/dsc): add cache explain subcommand
  • 1a9e6dd feat(cmd/dsc): wire NewClientWithEnv and i18n.ReloadLocale at startup
  • 0c4451a feat(codegraph): add Index with Rebuild, Search, Callers, Callees, Impact
  • 21ce975 feat(codegraph): add LatentInjector with boundary-position safety test
  • be27f95 feat(codegraph): add Node/Edge/Store types
  • 8c122e7 feat(codegraph): add PageRank centrality ranking over CALLS edges
  • 52aa0a0 feat(codegraph): add go/ast parser producing nodes and CALLS edges
  • 447f902 feat(codegraph): add integration smoke test and document agent startup wiring
  • 3ad7105 feat(commands): add /checkpoint and /branch argument parsers
  • 80c6b9a feat(compact): ShouldCompactBody cost-driven trigger + tests
  • 9d5bd96 feat(compact): add cost-driven BodyTokenBudget config (disabled until wired)
  • 41ccc5e feat(config): add MCPServerConfig.Disabled + ActiveMCPServers()
  • f2de198 feat(config): add [routing]/[clarify] sections (opt-in, default off)
  • a5f7177 feat(demo): aggregate arm usage into ¥ cost/savings via pricing table
  • 08690d9 feat(demo): cache A/B scenario builder (stable vs naive prefix)
  • 5d3f5df feat(demo): cachedemo main with -live / offline orchestration
  • 6315115 feat(demo): live arm runner + offline usage fixture loader
  • 50e4967 feat(demo): make demo-cache targets, methodology, committed sample
  • d7c08ad feat(desktop): migrate Wails v2 -> v3 (alpha.96) shell
  • 4b7f83c feat(doctor): add CheckBaseURLReachable and CheckProxyConfigured
  • 507dabd feat(doctor): add CheckCacheFieldsInProbe with httptest coverage
  • 85c234c feat(doctor): add CheckKeyPresent and CheckKeyValid checks
  • 0f8ce1e feat(doctor): add CheckResult, Checker type, RunChecks orchestrator
  • 8b2ed1d feat(doctor): add CheckSandboxAvailable for OS-level sandbox detection
  • baaafc3 feat(gateway): /v1 web API + serve SPA + wire desktop in-process gateway
  • 1c3c9ea feat(gateway): /v1/cancel, /v1/permission, /v1/answer turn control
  • a8fd50c feat(gateway): DefaultHandler wires Store+snapshots+workspace root into Start
  • 288f103 feat(gateway): GET /v1/cache/ledger per-turn eviction drill-down
  • c463f67 feat(gateway): GET /v1/doctor (runs CLI checker set as JSON)
  • 021efa5 feat(gateway): GET /v1/files, /v1/file, /v1/changed with resolveInRoot path guard
  • 0683d3c feat(gateway): GET /v1/models, POST /v1/model, /v1/effort, GET /v1/balance
  • cde8a97 feat(gateway): GET /v1/onboarding + POST /v1/connect-key (validate→persist)
  • 4964691 feat(gateway): GET /v1/sessions/{id}/timeline epochs/turns drill-down
  • b6ddac5 feat(gateway): GET /v1/update (release check, graceful offline)
  • 4d2e39b feat(gateway): GET/PUT /v1/config with editable settings DTO (accent+density round-trip)
  • f965123 feat(gateway): MCP CRUD endpoints (GET/POST /v1/mcp, POST/DELETE /v1/mcp/{name})
  • d5635b5 feat(gateway): POST /v1/add-to-chat (file/folder/contents/selection, root-confined)
  • 211feff feat(gateway): POST /v1/branch + /v1/fork over Store.NewBranch (no-copy replay)
  • 94d7a0c feat(gateway): POST /v1/output-style (validated style selection)
  • 86e435f feat(gateway): POST /v1/rewind (conversation/code/both) over Store+snapshots
  • 03d704c feat(gateway): POST /v1/summarize (from/upto) via ReplaceWithCompaction
  • f2f7697 feat(gateway): POST /v1/switch returns replayed transcript + touches last_used
  • fb765ce feat(gateway): WithMCPRegistry live-status overlay for /v1/mcp
  • e2410f8 feat(gateway): emit live cache/cost/routing/jobs/retry/plan/thinking/tool SSE (Contract 2)
  • 14f43a0 feat(gateway): functional options for Store/snapshots/workspace + Wave-5 route stubs
  • 3df5e8a feat(gateway): implement shared gateway handler for webview and loopback requests
  • 4c9730c feat(gateway): map acp events to spec SSE names with JSON payloads
  • 55aca7a feat(gateway): pending-interaction map + permission_request/ask_request SSE
  • f5cc61c feat(gateway): sessions CRUD (list/create/get/rename/delete)
  • e9de96f feat(gateway): surgical raw-map MCP server writer (preserves env placeholders)
  • bf69d75 feat(gateway/p3.2b): surface Duet pro-validation as a duet SSE event
  • f8bb45a feat(gateway/p3.4): /v1/models capability descriptor + accept max effort
  • fc6130f feat(gateway/sp5): read-only GET /v1/diff?path= (git diff vs HEAD, fail-soft)
  • 69dca57 feat(hooks): wire auto-capture to EventPostToolUse + EventSessionEnd
  • 742b0ec feat(i18n): add message catalog with T() and zh-CN translations
  • 2ddf7ba feat(i18n): no-emoji guard + de-glyph approval/steer hints (icon audit)
  • 71ef0ba feat(icons): add settings-section + back icons to the curated set
  • a0feebf feat(llm): Anthropic Messages API provider with SSE stream
  • e111c88 feat(llm): OpenAI native Chat Completions provider with SSE stream
  • e3d1cef feat(llm): OpenAI native wire marshaler (no reasoning/cache fields)
  • 6b67d03 feat(llm): add ReasoningPolicy type and ReadPolicy env parser
  • 0a20b33 feat(llm): add dumpWireBody capture helper
  • 8ead991 feat(llm): add proxy-aware transport and mirror-retry for China deployments
  • 11a64b0 feat(llm): anthropic wire marshaler with cache_control breakpoints
  • 53b51ff feat(llm): capture per-turn wire body when DEEPSEEKCODE_WIRE_DUMP set
  • 6c133a1 feat(llm): implement applyPolicy pure transformer for reasoning retention
  • d20bd76 feat(llm): wire anthropic and openai arms in NewProvider
  • 6cc5339 feat(llm): wire applyPolicy into MarshalCacheStable
  • 9280f44 feat(mcp): Streamable HTTP transport (spec 2025-03-26)
  • 9b2f867 feat(mcp): skip Disabled servers in the runtime bridge and doctor
  • b8276ff feat(mcp): wire streamable-http transport via registry + config
  • cae99fd feat(memory): add JSONL store with BM25 index and SHA dedup
  • 8d15196 feat(memory): add privacy filter; wire into Remember
  • 5679f09 feat(memory): cache-safety test + InjectRecalled boundary enforcement
  • 9ca73ff feat(onboarding): add NeedsOnboarding seam with unit tests
  • 264dc10 feat(onboarding): add PersistConfig writing config.toml + secrets.toml at 0600
  • c352fb5 feat(onboarding): add ValidateKey seam tested via httptest
  • e066eaf feat(onboarding): implement Run() with interactive + --non-interactive paths
  • 4e57ba6 feat(review): loading skeleton for the changed-files list
  • 2889318 feat(routing): intent-clarify gate for vague prompts
  • c505f82 feat(routing): sticky per-turn model+effort classifier
  • a25c590 feat(settings): Budget on control kit
  • 6ac3d2a feat(settings): Duet on control kit
  • 2f81f8a feat(settings): Editor owns verbosity (store) + transparent-bg Switch
  • 7c36f9f feat(settings): Keybindings on control kit
  • d3f92f3 feat(settings): Models dropdowns from /v1/models; autoReasoning sole home
  • 8dfe8a7 feat(settings): Network proxy selects on control kit
  • bc4494f feat(settings): Permissions on control kit; autoClarify sole home
  • d7d15a9 feat(settings): Sandbox on control kit (switches)
  • 524661a feat(settings): Sessions on control kit
  • 725310c feat(settings): accessible Switch component for the control kit
  • 3371071 feat(settings): add group + icon to the section model
  • c01ffad feat(settings): card/row/inline-error layout primitives
  • 9517661 feat(settings): consolidate IA to 15 sections; drop general/language/context/updates
  • de1717b feat(settings): editable McpSection (own section) + drop the MCP extensions tab
  • 053a9da feat(settings): full-page SettingsView with grouped nav + search + back
  • fc14da0 feat(settings): language control moves into Appearance
  • 09b0af5 feat(settings): language control moves into Appearance
  • 2fca3df feat(settings): real About section (version + update check + links)
  • 0e812aa feat(settings): redesign Extensions list — card rows, pill tabs, status badges
  • 9d8961c feat(settings): render SettingsView as a full-window swap (no overlay)
  • d23de7b feat(settings): shared useConfig hook (single fetch, optimistic patch, inline error)
  • 39afd32 feat(shell): AppShell reads layout from store; remove floating collapse tabs
  • 330c8ca feat(shell): layoutStore — lift shell Layout state to a zustand store
  • 6b76574 feat(shell): title-bar segmented pane-toggle pair (theme · settings │ rail ┃ panel)
  • 56e9f66 feat(statusbar): ctx-pressure ring
  • 082dbb6 feat(taubench): 6 retail tools as Go Tool impls (schemas byte-equal to TS)
  • ba572f6 feat(taubench): 8 tau-bench tasks + check predicates ported from tasks.ts
  • 101326c feat(taubench): Go user-simulator pinned to Reasonix params (deepseek-chat, 0.1)
  • 05d5178 feat(taubench): WorldState + retailSeed ported from Reasonix db.ts
  • 0c835b9 feat(taubench): dsc arm — in-process agent loop with AutoRoute, usage capture
  • 67f61f0 feat(taubench): dsc arm — in-process agent loop with AutoRoute, usage capture
  • 8cfc4d2 feat(taubench): implement live arm dispatch (dsc + reasonix-*) with per-run timeout
  • 4664eed feat(taubench): reasonix arm — shell to their runner + parse results JSON
  • ff4a30e feat(taubench): reasonix arm — shell to their runner + parse results JSON
  • 1b604ba feat(taubench): report + CLI (cost-per-solved-task, -dry offline)
  • 7afd914 feat(theme): client-persisted transcriptVerbosity
  • 2749f5a feat(tools): add CheckpointTool with CheckpointRecorder interface
  • ffa205c feat(tools): add SpawnBatchTool for concurrent fan-out
  • b3c95cc feat(tools): add codegraph_callees tool
  • c10984b feat(tools): add codegraph_callers tool
  • 4e02f17 feat(tools): add codegraph_impact tool
  • 57db409 feat(tools): add codegraph_node tool with review-compliant implementation
  • 94896fb feat(tools): add codegraph_search tool
  • 4680f38 feat(tools): add remember/recall/forget tools; register in registry
  • ab032d8 feat(tools): cap whole-file read_file at 500 lines, nudge ranged reads
  • 225eb80 feat(tools): wire RegisterCodegraphTools into registry
  • 278438a feat(trace): stamp usage records with wall-clock ts_unix_nano
  • 34428c1 feat(traceinspect): add DiffBodyFiles + RenderBodyDiff verdicts
  • 5091361 feat(traceinspect): add ExplainFile per-turn cache ledger
  • efb320d feat(traceinspect): add wire-body byte-diff core
  • 7aa43da feat(tui): add CacheDoctorPanel per-turn cache ledger view
  • 866b3be feat(tui): wire i18n.T() for all 15 user-facing string keys
  • 92c4115 feat(web): 'Mission Console' visual redesign — depth, distinctive type, instrument cockpit
  • b5fb4e7 feat(web): /review + /btw read-only side-chat prompt helpers
  • 7b90978 feat(web): AppShell 3-zone resizable+collapsible grid (ReactNode zones, splits persisted)
  • bdb0614 feat(web): AppearanceSection — theme/accent/density (setThemeSettings live + persist)
  • 74c33d9 feat(web): AskCard — choice cards + free-text + just-chat escape
  • 6724db2 feat(web): AttachmentDrop drag-drop + file picker
  • 58cfc4e feat(web): AutonomyToggle 4-mode cycle (ask/auto-edit/plan/yolo)
  • c766c47 feat(web): ChangedFiles (git status, deleted marker, refreshKey auto-refresh)
  • 0c16b3e feat(web): Cockpit composition (Cache/Cost/Routing/Ledger) (wave 3)
  • f2dd174 feat(web): CodeViewer (lazy Monaco seam + pre fallback, binary/truncation/empty states)
  • a22f236 feat(web): Codex-grade resizable shell (hit-area, keyboard, auto-fit, presets, motion)
  • 0f023e7 feat(web): CommandPalette (cmdk) + TitleBar (branch, theme, mode)
  • 964224a feat(web): Composer (slash/at menus, pills, autonomy, send/stop, attachments); adapted from reasonix
  • c683693 feat(web): ContextPills @-mention chips with remove
  • 52fef95 feat(web): DiffView per-hunk accept/reject (PlainCode fallback + lazy Monaco seam); adapted from reasonix
  • 879c435 feat(web): DoctorView — diagnostics with pass/fail rows + re-run
  • 0053f30 feat(web): EffortSwitcher level dropdown; adapted from reasonix
  • ff9a40f feat(web): ErrorBoundary (React class) with reset fallback
  • c16f824 feat(web): ExtensionsSection — MCP/Skills/Hooks/Memory tabbed panels
  • b11ef6e feat(web): FileMenu @-file autocomplete dropdown; adapted from reasonix
  • 426b4a7 feat(web): FileTree (filter + open + add-to-chat)
  • 3febe3d feat(web): GatewayClient wires permission_request/ask_request/plan_update SSE + Wave 4 types
  • 7fa4897 feat(web): GeneralSection — language + transcript verbosity + auto toggles
  • 74eb9e4 feat(web): HistoryDrawer (search + grouping + resume/delete) (wave 3)
  • b70cba6 feat(web): MCP server data layer (fetch/save/delete/toggle)
  • 88477ca feat(web): Markdown (react-markdown + GFM + KaTeX + highlight.js); adapted from reasonix
  • 330ad9b feat(web): ModelSwitcher dropdown from fetchModels; adapted from reasonix
  • 749be7f feat(web): Monaco editor seam (lazy MonacoMount + PlainCode fallback + loadMonaco) — Waves 2/5 dep
  • 2b6a935 feat(web): NetworkSection — proxy modes + CJK/non-UTF-8 note
  • 94b2a8c feat(web): OKLCH semantic token generator (3 themes, 8 accents, density, HC)
  • ed74d16 feat(web): OnboardingWizard — key validate → theme → permission default
  • 28ac514 feat(web): PastedTextFold collapses large pasted blocks
  • 407c828 feat(web): PermissionCard — four-tier approval (deny/once/session/always)
  • 0a3ff9e feat(web): PermissionModal — blocking wrapper (Esc/backdrop = deny, keys 1-4)
  • 10c766c feat(web): Phase 2 — core surfaces brand-true recolor (spec §5 Phase 2)
  • c160611 feat(web): PlanTodoPanel — pinned live-ticking plan w/ auto-clear, collapse, dismiss
  • 941bfc2 feat(web): ProvidersSection — API key validate/connect
  • e19373f feat(web): RewindMenu (code/convo/both, fork, summarize from/upto) + checkpoint disclaimer
  • e3dc28c feat(web): RoutingActivity chip (Flash to Pro visibility)
  • 89a9611 feat(web): SandboxSection — confinement + Seatbelt jail + egress gate
  • 0a5584b feat(web): SendStopButton (Contract 4: streaming/disabled/onSend/onCancel)
  • 3052f59 feat(web): SessionItem row with select/delete (wave 3)
  • d3747ab feat(web): SessionList with day grouping (wave 3)
  • d0b10ad feat(web): SessionRail (new/search/list/history) (wave 3)
  • 6cab46c feat(web): SettingsWindow shell + 18-section nav router + shared section styles
  • 1f2bea6 feat(web): SlashMenu autocomplete dropdown; adapted from reasonix
  • e16416f feat(web): StatusBarLive wires hero bar to live cockpit store (wave 3)
  • 7a3c401 feat(web): ThemeProvider applies tokens to :root and reacts to settings
  • 669d532 feat(web): ThinkingBlock collapsible reasoning panel
  • a718642 feat(web): Transcript maps reducer items to components; adapted from reasonix
  • 1d2f668 feat(web): UpdateBanner — Wails-native download open + dismiss
  • 558f43b feat(web): UpdatesSection — version check + UpdateBanner host + About
  • 38acdbd feat(web): UserMessage (pills + paste-fold) + AssistantMessage (markdown + streaming caret); adapted from reasonix
  • cc606e4 feat(web): WorkspacePanel (Files/Changed tabs hosting FileTree+ChangedFiles+CodeViewer)
  • fb2dae9 feat(web): Zustand theme settings store with localStorage persistence
  • 7b67384 feat(web): Zustand toast store + renderer
  • c0ca224 feat(web): adaptive ToolCard (quiet read-only vs expanded writer, truncation, error); adapted from reasonix
  • 4946302 feat(web): add desktopBridge adapter for the Wails v3 shell
  • 80ced09 feat(web): browser-dev SSE mock replaying a canned turn (Contract-2 snake_case)
  • d5a3af1 feat(web): cockpit CacheCard (turn/avg + prefix stability proof) (wave 3)
  • ba7bcea feat(web): cockpit CostCard (¥ turn/session, output, balance) (wave 3)
  • 8cef28f feat(web): cockpit LedgerDrillDown (per-turn eviction ledger) (wave 3)
  • fc27a8d feat(web): cockpit RoutingCard (flash→pro hops + reason) (wave 3)
  • 0a44f43 feat(web): cockpitStore Zustand module (SSE-fed live cache/cost/routing) (wave 3)
  • 2b47bad feat(web): compose React App shell (ThemeProvider/AppShell/TitleBar/CommandPalette/Toasts) + Cmd+K
  • 76f1dda feat(web): curated lucide-react icon module (no emoji)
  • ef83e03 feat(web): extend single GatewayClient to Contract-2 SSE schema + REST control (session_id, cancel/model/effort/output-style/models)
  • 35fb886 feat(web): formatPct/formatCNY/formatTokens helpers (wave 3)
  • f6db92e feat(web): hairline+panel-pad tokens and shared Panel/PanelHeader primitive
  • afffaa3 feat(web): hero StatusBar (cache/cost/ctx/jobs/retry/eviction) (wave 3)
  • 9fe98ed feat(web): i18n (Contract 3) — t()+LocaleProvider+useLocale, en + zh-CN, runtime parity
  • c2cf2bd feat(web): i18n keys for Wave 4 permissions/ask/plan (en + zh-CN)
  • 6289009 feat(web): install browser-dev mock at startup + cross-webview QA checklist
  • 6d8b665 feat(web): integrate all shell surfaces into App.tsx (SessionRail, hero StatusBar, Cockpit tab, Settings, Onboarding, UpdateBanner)
  • d91f322 feat(web): keyboard shortcut helpers (Cmd/Ctrl+K)
  • 93c66e7 feat(web): mid-turn steering — steerTurn + composer Enter-to-steer while streaming
  • 422b252 feat(web): minimal workspace.ts (fetchFiles/fetchFile/fetchChanged/addToChat + FileEntry) — Wave 5 extends (C-3)
  • b232796 feat(web): mount WorkspacePanel into workspace zone + RewindMenu on user messages (Contract 4)
  • a56f6af feat(web): phase 4 — session inline rename + recursive FileTree expansion
  • 490e46f feat(web): phase 5 — offline fonts + staggered reveal + micro-interactions
  • 0a4b274 feat(web): pure transcript reducer (delta coalescing, tool lifecycle by id, routing)
  • 3b501f2 feat(web): pure unified-diff hunk parser + side reconstruction (DiffView + PlainCode fallback)
  • 4af2a2c feat(web): re-anchor design system to the brand-true light palette (Phase 1)
  • a2e9404 feat(web): relativeDay + groupSessionsByDay grouping (wave 3)
  • dde33e8 feat(web): reusable designed loading/empty/error StateView
  • e65b744 feat(web): session CRUD + cockpit REST client + types (wave 3)
  • 9c4df0e feat(web): sessionStore Zustand module (load/create/rename/remove) (wave 3)
  • ead4d8e feat(web): shared Markdown renderer (react-markdown+gfm+math+katex+highlight) — Wave 2 dep
  • ac5f000 feat(web): shell CSS module + global base stylesheet (tokens, CJK font stack)
  • ed17dff feat(web): shell layout model + persistence (presets, collapse, migration)
  • 63cffb5 feat(web): typed checkpoint client (rewind/fork/branch/switch/summarize)
  • ecffd5d feat(web): typed system client for config/onboarding/doctor/update
  • 2168af6 feat(web): typed workspace client (files/file/changed/add-to-chat)
  • 365e900 feat(web): wire PermissionModal/AskCard/PlanTodoPanel + Stop into App conversation zone
  • 624f48d feat(web): wire cache/cost/routing/job/retry SSE events (wave 3)
  • fbc1f39 feat(web+gateway): Phase 3 settings — implement all 8 placeholder sections
  • 606b88c feat(web/p3.1): CodeIsland shell + .island obsidian scope
  • 8efaae9 feat(web/p3.1): diffs render as obsidian islands with +N −M brand header
  • 17ffb3a feat(web/p3.1): fixed obsidian island token set (material rule)
  • 1ca1867 feat(web/p3.1): transcript code blocks render as obsidian islands
  • f047086 feat(web/p3.2): ApprovalGate — inline obsidian diff gate with 4-level decision + keyboard
  • cc9ae00 feat(web/p3.2): approval helpers — classify edit tools + synthesize diff
  • a88f136 feat(web/p3.2): route edit approvals to the inline gate, modal for the rest
  • 78bd6ab feat(web/p3.2b): DuetBadge — inline pro-validation result in the transcript
  • dda58eb feat(web/p3.2b): duet SSE handler + DuetItem transcript reducer
  • 374fc7f feat(web/p3.3): adaptive review companion — auto-reveal on changes, pin/close, slide-in
  • 5985aa1 feat(web/p3.3): lift working-tree change count to drive review auto-reveal
  • 9ad526f feat(web/p3.3): reviewPin layout state + isReviewOpen helper
  • cd69674 feat(web/p3.4): ModelInfo capability descriptor + parse + max effort level
  • 5bf0b66 feat(web/p3.4): capability-rich model picker (caps glyphs + context, uses App models)
  • 0070357 feat(web/p3.4): composer effort is capability-driven (hide on none, reset on model switch)
  • 985ea1f feat(web/p3.5): BrandedSelect — reusable branded listbox (from ModeMenu pattern)
  • a58bedf feat(web/p3.5): live accent (brand-indigo default) + font tokens in buildTokens
  • 2801967 feat(web/p3.5): status line — context-pressure color + ±lines segment
  • 8281edf feat(web/sp2): ThinkingBlock shows live label + 'Thought for Ns'
  • 72a06ea feat(web/sp2): add chat-lane layout tokens (measure/avatar/turn)
  • c8e1fe0 feat(web/sp2): centered lane, turn rhythm, code cards, brand highlight theme, thinking pill, prose polish
  • 50cd1a8 feat(web/sp2): client-side thinking timing (injected clock keeps reducer pure)
  • e896efe feat(web/sp2): code cards with language label + copy; drop dark hljs import
  • 563fcb5 feat(web/sp2): per-turn brand avatars + heads; contained user bubble
  • 505e158 feat(web/sp3): ModeMenu approval-mode dropdown
  • a639d06 feat(web/sp3): composer bar CSS — consistent control chips, mode menu
  • 19eb098 feat(web/sp3): fetchModelState + EFFORT_LEVELS in api
  • 41c00f3 feat(web/sp3): shared autonomy mode type + metadata in lib/autonomy
  • e73ba6e feat(web/sp3): single composer action bar with model/effort/mode + attach
  • 8436ae1 feat(web/sp3): wire model/effort state + setModel/setEffort from App
  • 80c7bb7 feat(web/sp4): SessionItem relative-time meta + calmer states
  • 6ce350b feat(web/sp4): SessionList five-bucket labels + spacing
  • 4bfa2f7 feat(web/sp4): fine-grained day buckets + formatRelativeTime
  • 6b911eb feat(web/sp4): rail is canonical history — loading/empty/count, polish, drop All-history
  • 80cf822 feat(web/sp5): Codex-grade changed-file rows (status badge, dir/name, selected)
  • d0cf42d feat(web/sp5): DiffView readOnly mode (hide per-hunk actions)
  • 655d6ec feat(web/sp5): ReviewPanel — changed list ‖ diff hero with full-file fallback
  • 81e00c2 feat(web/sp5): TelemetryStrip — compact telemetry with expand to Cockpit cards
  • ac942f4 feat(web/sp5): fetchDiff client for /v1/diff
  • 9ec7d58 feat: add CacheDoctorDashboard component with cache report UI
  • 357c714 feat: add SPA scaffold and typed gateway client
  • a9cca2f feat: add SessionTimeline component
  • 66e3b0f feat: add Wails desktop wrapper with embedded SPA
  • f960bd8 feat: add fixture files for parser tests
  • 1d6e6fd feat: embed compiled SPA into dsc binary via go:embed
  • b27d19a fix(C-1): wire VerifyHook into agent loop and fix review issues
  • 136d866 fix(C-2): resolve VerifyHook dual-mechanism and wiring review issues
  • 924827b fix(acp): address transport review issues — header parsing, WriteFrame rename, new test
  • f17bf63 fix(acp): forward permission/ask/tool events instead of hard-deny
  • da14628 fix(acp): harden session lifecycle, event streaming, broadcast safety, and test validity
  • d5de353 fix(acp): resolve build/vet warnings
  • fd74ff8 fix(acp): secure HTTP gateway — loopback-default bind + bearer-token auth
  • c3df078 fix(agent): address BranchAt review issues — compactionFloor guard, eliminate re-scan, sanitize slash, test coverage
  • 1497069 fix(agent): address CheckpointIndex review issues
  • 788db92 fix(agent): don't force thinking on trivial greetings/acks
  • 550f51d fix(agent): gofmt steerTool + concurrent-goroutine steer race test
  • add751c fix(agent): persist stop-time verify-failure feedback via Persister
  • 2705325 fix(anthropic): address all review issues in HTTP transport & SSE stream
  • ab58c63 fix(anthropic): address marshaler review issues — temperature=0, idioms, and type dedup
  • ccfaf60 fix(anthropic): correct four review issues in SSE stream handler
  • 876cb53 fix(centrality): fix mass-leak, redundant lookup, and weak dangling test
  • fd98975 fix(chat): align conversation surface to spec §5
  • aebe55b fix(ci): add replace_existing_assets to goreleaser config
  • f83143b fix(ci): exclude desktop/ from vet/build/test — needs GTK4/WebKit not in CI
  • 90c78f4 fix(ci): pin LF via .gitattributes so go:embed golden conformance passes on Windows
  • e8023bc fix(ci): use correct field replace_existing_artifacts in goreleaser config
  • 2c1908d fix(cmd/dsc): apply proxy transport in-place on provider client; fix test port flakiness
  • e68e668 fix(cmd/dsc): wire NewClientWithEnv() with flag overrides and strengthen proxy test
  • 2647598 fix(codegraph): address graph.go review issues
  • 568d02f fix(codegraph): address latent injector review issues
  • e4eaf5c fix(codegraph): correct latent test assertions flagged in review
  • e7932f9 fix(codegraph): eliminate data race in codegraph_node Execute
  • 605002f fix(codegraph): fix hash-before-parse and deletion bugs; harden tests
  • d3296f2 fix(codegraph): guard non-positive topN and add Lookup tests
  • 6677c97 fix(codegraph/centrality): fix mass leak, vacuous test, dangling-node gap, doc
  • d8a771b fix(codegraph_callers): add output cap and strengthen tests
  • c667378 fix(codegraph_impact): address review issues — Errf, capping, Truncate, nil-index tests, stronger assertions
  • 9d45898 fix(commands): address review issues in /checkpoint and /branch parsers
  • 1d7c60e fix(composer): wrap control chips so a narrow lane never overflows
  • 39f9024 fix(config): default accent/density/language/proxy/permission baselines
  • 3261df2 fix(doctor): stabilize reachability test, strengthen proxy check (NO_PROXY-aware)
  • e8bce95 fix(gateway): loopback + bearer-token middleware on the served handler
  • d5793c1 fix(gateway): per-turn SSE replay buffer so late subscribers get turn_done
  • a44e3a3 fix(gateway): register read-only /v1/{mcp,hooks,skills,memory} so Settings > Extensions stops 404-ing
  • a69b54c fix(gateway): register session metadata on prompt so the rail isn't empty after chatting
  • 071ba1b fix(gateway): session JSON matches SPA Session contract (turns + epoch-ms timestamps)
  • f2ce07c fix(gitignore): replace directory glob with explicit exclusions to preserve tracked files
  • 15f5275 fix(hooks): address Task 7 review issues for auto-capture hook wiring
  • e0c8277 fix(hooks): wire MemoryCapture into runner and add to KnownBuiltinNames
  • e44a6b2 fix(i18n): move test sentinel key out of production catalog
  • c6d274f fix(i18n): strengthen TestT_Fallback_MissingKey to exercise English fallback
  • b354e2e fix(llm): address transport review issues — race, failover, proxy, API
  • 2f31dec fix(llm): drop dead net.OpError branch and restore proxy late-binding
  • 50b15cb fix(memory): address cache-safety boundary test review issues
  • 5f143db fix(memory): address correctness and robustness review issues
  • 3790ac7 fix(memory): address privacy-filter review issues
  • 866c2e4 fix(memory): resolve import/vet issues after integration sweep
  • feb4839 fix(memory/test): address reconcile test review issues
  • 7e576f4 fix(openai-native): address Task D review issues
  • 707b6bd fix(openai-native): address all 5 reviewer issues in Task E provider
  • b588dea fix(openai-native): address review issues in HTTP transport & stream
  • 537319d fix(p3.3b): address code-review issues — gateway /v1/steer, drainSteer ctx, concurrent race test
  • 2d5c4ec fix(p3.4): address three code-review issues from Task 3
  • fbfd690 fix(resume-at): address code-review issues — deferred cleanup, TUI guard, test coverage
  • d006be3 fix(review): file-type icons + clean path rows in ChangedFiles
  • a8c4295 fix(review): type iconFor as LucideIcon so tsc is clean
  • 9901f81 fix(serve): wire workspace root + store + snapshots into dsc serve
  • d84be0c fix(settings): Providers loads existing config; valid model default; stays editable
  • d061390 fix(settings): mount BrandedSelect portal only once positioned
  • 7e74a09 fix(settings): portal BrandedSelect menu so it can't be clipped or stuck open
  • b28813c fix(settings): style BrandedSelect, limit panel width, card-wrap Appearance
  • d9e1105 fix(settings/McpSection): s.command ?? '' for TS2322; !s.enabled for semantic-correct disabled param
  • b2ad96f fix(spawn_batch): address B-2 review issues — depth guard, whitelist strip, test integrity
  • 52cb216 fix(spawn_batch): address code-review issues in SpawnBatchTool
  • aa648f2 fix(spawn_batch): address follow-up review issues — ctx cancellation, dead idx field, test assertion
  • 9934ac8 fix(stream): answer renders in the message bubble, not the thinking block
  • c93201e fix(taubench): reasonix arm reads --out report file + pins model per arm
  • 2796788 fix(test): Windows CI — skip Unix perm check, add .exe suffix for proxy test
  • 34951f5 fix(test): eliminate data races and non-deterministic sleep in steering tests
  • bcc0415 fix(test): set USERPROFILE on Windows tests + propagate SYSTEMROOT/TEMP for proxy binary
  • 3bced8a fix(tools): CheckpointTool.IsReadOnly returns false; fake recorder increments step
  • 4e1c1ec fix(tools): address codegraph_search review issues
  • 1c01a5b fix(tools): address review issues for memory tool implementations
  • 7b89273 fix(tools): register codegraph_node, use TierLazy, fix test error handling
  • d66948c fix(tui): wire i18n.T() into status_hud, permission, question, and app
  • 91ff083 fix(wave 0 task 12): address review findings
  • 9daafcc fix(wave 0 task 14): address review findings
  • f2f5309 fix(wave 1 task 3): address review findings
  • 10e3e99 fix(wave 1 task 5): address review findings
  • b5c54f2 fix(wave 1 task 8): address review findings
  • 501b433 fix(wave 2 task 0): address review findings
  • ab5caa0 fix(wave 2 task 0): address review findings
  • d3d7bbd fix(wave 2 task 16): address review findings
  • c301ba5 fix(wave 2 task 7): address review findings
  • 759d660 fix(wave 3 task 20): address review findings
  • 371f6fb fix(wave 3 task 4): address review findings
  • 4665130 fix(wave 3 task 6): address review findings
  • 0ac4606 fix(wave 4 task 6): address review findings
  • de5dd4f fix(wave 4 task 6): address review findings
  • 14e8e84 fix(wave 5 task 15): address review findings
  • 4e58967 fix(wave 5 task 15): address review findings
  • c02fd04 fix(wave 5 task 9): address review findings
  • f68d8e4 fix(wave 5 task 9): address review findings
  • b82b13a fix(wave 6 task 1): address review findings
  • ee10f7f fix(wave 6 task 10): address review findings
  • 8120eaa fix(wave 6 task 12): address review findings
  • 7a748c1 fix(wave 6 task 18): address review findings
  • ae4be12 fix(wave 6 task 18): address review findings
  • c53d452 fix(wave 6): go vet (check err before resp) + settings fixtures get required ConfigDTO fields
  • 796cdc5 fix(web): Settings>Language flips the live i18n locale, not just config
  • 44a3382 fix(web): add JetBrains Mono 700 import and Playwright visual-QA gate (Phase 5)
  • cd0b7ab fix(web): appearance patch applies only changed keys (no theme/density wipe)
  • dcef042 fix(web): clean tsc — add vite-env.d.ts (css-module + global types); commit jsdom url shim
  • a131539 fix(web): cockpitStore test passes required TurnDoneEvent arg (tsc green)
  • 99e0020 fix(web): drop Workspace Files tab, consume real Extensions endpoints, map /v1/models shape
  • 150dfa1 fix(web): drop titlebar palette pill for a Settings gear; fold mode toggle inline
  • d9ad727 fix(web): make AppearanceSection labels reactive to locale (useT)
  • 61cb01c fix(web): make McpServer.command optional for http/sse transports
  • 46bf991 fix(web): pin composer to the bottom of the conversation zone
  • 77240b2 fix(web): refcount shared cockpit SSE stream; harden new-session create()
  • b44eb6a fix(web): remove no-op theme-cycle controls; keep working light/dark toggle
  • 883a77e fix(web): render history drawer as a root overlay so it can't collapse the grid
  • 9cf9a4b fix(web): restore App shell composition + ConversationView (recovered lost T2 work)
  • 8fbd6f0 fix(web): robust composer send + live history reload + settings entry wiring
  • 206552a fix(web): subscribe to /v1/events before POSTing the prompt (no lost turn frames)
  • 5e56256 fix(web): wire Phase 5 reveal/hover animations to shell components
  • d72825c fix(web): wire onRename into SessionRail and HistoryDrawer in App.tsx
  • abafb7b fix(web/p3.4): import canonical EFFORT_LEVELS in ModelsSection; narrow ModelEffortDesc.kind
  • d30735d fix(web/p3.5): BrandedSelect — focus listbox on open, un-trap Tab key, real-flow keyboard tests
  • 119bf6b fix(web/p3.5): address Task 3 code-review issues — ARIA listbox, keyboard nav, toFixed parity, BrandedSelect wired
  • fa33ffc fix(web/review): list|diff seam is a real draggable splitter, not a static border
  • 26a5003 fix(web/settings): translucent scrim backdrop instead of an opaque white overlay
  • d5ce448 fix(web/shell): remove floating layout presets that overlapped the transcript
  • 99f1e7f fix(web/shell): splitter is a visible 6px grab handle (hover seam + grip), not a 1px hairline
  • e149a12 fix(web/sp3): address review — ModeMenu trigger ARIA, mount-only model fetch, live-dots comment
  • a0244c0 fix(web/sp3): suppress unhandled rejection on steerTurn fire-and-forget
  • 413d77b fix(workspace): stop build artifacts leaking into the review surface
  • a97e7bf fix: address Store() data-race doc, add deletion regression test, fix misleading comment
  • 2e812fb fix: address i18n review issues — correct permission button key, restore question nav hint, wire StatusLabel, and add regression tests
  • 5d9dd79 fix: cancel in-flight reconnect dial on Shutdown
  • 8af0c8f fix: cancel in-flight reconnect dial on Shutdown
  • 8f9a471 fix: parser error propagation and method NodeID collision
  • f1bee7c fix: wire codegraph index into agent startup (task 12b)
  • 7d64075 i18n(settings): add nav-group, back, and search keys (en+zh)
  • 862dc79 i18n(settings): en+zh parity for new settings keys + fix removed theme refs
  • b99be6a polish(web/p3.1): color diff +N/−M counts (add/del tokens) + Copy button a11y
  • 7d39147 polish(web/p3.2): aria-haspopup on split caret + drop apply_patch envelope markers
  • 9014c21 refactor(codegraph): fix review issues in graph.go — type safety, encapsulation, tests
  • 863ff6f refactor(gateway): drop dead theme + transcriptVerbosity from config DTO
  • 3b092be refactor(traceinspect): drop dead lastPrefixHash field; assert ExplainFile errors in tests
  • 5b23d23 refactor(web/sp3): AttachmentDrop is a pure drop zone (button moves to bar)
  • 1bf0560 refactor(web/sp3): remove orphaned AutonomyToggle (replaced by ModeMenu)
  • 5f56ba6 refactor(web/sp4): integrate history into rail, delete HistoryDrawer modal
  • 4413a9d refactor(web/sp5): review cleanup — ReviewPanel race guard, i18n keys, drop dead tab CSS
  • 0125c4f refactor(web/sp5): right pane = Review hero + TelemetryStrip, drop tabs + WorkspacePanel
  • a23c50b remove cname
  • 66396ac style(chat): asymmetric top-right corner on the user bubble
  • 1e1c6a0 style(chat): reasoning disclosure is a quiet inline line, not a centered pill
  • cf18d6f style(chat): roomier turn gap + assistant prose line-height 1.7
  • c7e4e37 style(composer): circular accent send button
  • 6952833 style(shell): segmented pane-toggle styles; drop floating collapse-tab CSS
  • a474c34 style(web/sp4): restore OnboardingWizard indentation after drawer removal
  • 5bfa2ec test(acp): add full stdio round-trip integration test
  • 5d18285 test(agent): assert Persister receives stop-time verify failure feedback
  • 68f9dba test(agent): extend stop-condition table tests for MaxSteps and LoopDetection
  • dafc226 test(agent): guard against re-introducing sub-1M cost compaction
  • c85989c test(agent): guard that compaction never mutates the cached system prefix
  • 4f04bb2 test(bench): add neutral hard-bug coding fixtures for routing experiment
  • 9f1e78a test(bench): add routing-experiment arm configs
  • 870b637 test(bench): pre-register routing escalation experiment
  • 4f5665a test(chat): visual verification of the refined chat surface (light+dark)
  • 3f1c9ee test(chat): visual verification of the refined chat surface (light+dark)
  • a43252e test(gateway): Wave 1 acceptance — full suite + vet + build green
  • 18d0e4c test(gateway): Wave 1 acceptance — full suite + vet + build green
  • 540b66f test(gateway): ask_request round-trip via POST /v1/answer
  • 1294444 test(llm): Task 6 verification gate — existing property and e2e cache tests green
  • 052190f test(llm): add golden-bytes lock for MarshalCacheStable default policy
  • 1742ca9 test(llm): assert openai-compat BaseURL and DefaultModel thread-through
  • 899a297 test(llm): golden regression guard for DeepSeek wire bytes
  • d33925e test(llm): property test — cache-stable bytes + fingerprint are tool-order invariant
  • 766a1cf test(llm): strengthen TestOpenAICompatDefaultModel to catch valModel drop
  • 2e78601 test(mcp): verify editable MCP manager end-to-end
  • c93021b test(memory): add SHA dedup regression tests
  • fdd4526 test(memory): add reconcile update-in-place regression tests
  • b1121ea test(p4.1): route-mock /v1/changed to harden the workspace-zone visual spec
  • 6fc9af2 test(shell): verify title-bar toggle cluster (light+dark)
  • 7a24595 test(shell): verify title-bar toggle cluster (light+dark)
  • 4e2ed91 test(states): verify empty/loading + no-emoji icon audit (light+dark)
  • f93434b test(surfaces): verify rail/composer/status polish (light+dark)
  • 56954bf test(surfaces): verify rail/composer/status polish (light+dark)
  • eeac51a test(taubench): byte-match conformance gate vs Reasonix TS (prompt+schemas+usersim)
  • affd916 test(traceinspect): add CI cache-regression gate with fixture
  • 5231cff test(traceinspect): tighten cache-hit-rate regression bound to 0.95
  • be02186 test(web): SP1 shell Playwright visual QA + rubric
  • 20070d6 test(web): wave 3 sessions/statusbar/cockpit suite green + typecheck + build (wave 3)
  • 109b90a test(web/p3.1): Playwright island material QA — obsidian in light+dark
  • c895113 test(web/p3.2): Playwright — inline edit gate vs command modal (light+dark)
  • b2f97f9 test(web/p3.2b): Playwright — duet badge ok+warn (light+dark)
  • 966e498 test(web/p3.3): Playwright — adaptive review reveal/hide/pin (light+dark)
  • a0f6549 test(web/p3.3b): Playwright mid-turn steering (steer vs new turn) light+dark
  • 70a15e7 test(web/p3.3b): failing tests — steerTurn, App steer branch, Composer steer hint
  • a6bb6ec test(web/p3.4): Playwright capability-driven model+effort picker (light+dark)
  • 0cb3daf test(web/p3.4): failing tests — ModelInfo descriptor fields + max in EFFORT_LEVELS
  • 254a400 test(web/p3.4): failing tests — capability-driven effort levels in App
  • 6c8a400 test(web/p3.4): failing tests — capability-rich ModelSwitcher (models prop, caps glyphs, context badge)
  • 5f54ef2 test(web/p3.5): Playwright live accent/font/mode switch + status pressure (light+dark)
  • 72a5d19 test(web/sp2): DEV-only ?fixture=chat transcript seed for visual QA
  • a60c42f test(web/sp2): Playwright chat-surface visual QA (light+dark × widths + states)
  • b091959 test(web/sp3): DEV seam seeds demo commands + models for composer QA
  • 6e63744 test(web/sp3): Playwright composer visual QA
  • c6a6077 test(web/sp4): DEV seam seeds demo sessions across day buckets
  • a5e2527 test(web/sp4): Playwright session-rail visual QA (light+dark)
  • 1f1134b test(web/sp5): Playwright review-hero + telemetry-strip visual QA (light+dark)