docs: update docs for .svelte.ts rune store fix and Phase 3 status
- progress.md: add bug fix section for rune file extension issue - phases.md: update store file names to .svelte.ts in file structure - task_plan.md: add error entry and .svelte.ts decision to decisions log - .claude/CLAUDE.md: add .svelte.ts constraint, update Phase 3 status - CHANGELOG.md: add Fixed entries for rune store rename
This commit is contained in:
parent
af1516ed2b
commit
da6d7272ee
5 changed files with 20 additions and 6 deletions
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
- v1 is a single-file Python app (`bterminal.py`). Changes are localized.
|
- v1 is a single-file Python app (`bterminal.py`). Changes are localized.
|
||||||
- v2 docs are in `docs/`. Architecture decisions are in `docs/task_plan.md`.
|
- v2 docs are in `docs/`. Architecture decisions are in `docs/task_plan.md`.
|
||||||
- Phase 3 (Agent SDK Integration) is in progress. Core implementation done, needs testing and polish.
|
- Phase 3 (Agent SDK Integration) core is complete. Needs testing and polish (markdown rendering, sidecar crash detection, auto-scroll lock).
|
||||||
- Consult Memora (tag: `bterminal`) before making architectural changes.
|
- Consult Memora (tag: `bterminal`) before making architectural changes.
|
||||||
|
|
||||||
## Documentation References
|
## Documentation References
|
||||||
|
|
@ -29,6 +29,7 @@
|
||||||
- Node.js sidecar (`sidecar/agent-runner.ts`) spawns claude subprocesses, communicates with Rust via stdio NDJSON.
|
- Node.js sidecar (`sidecar/agent-runner.ts`) spawns claude subprocesses, communicates with Rust via stdio NDJSON.
|
||||||
- Agent dispatcher (`src/lib/agent-dispatcher.ts`) is a singleton that routes sidecar events to the agent store.
|
- Agent dispatcher (`src/lib/agent-dispatcher.ts`) is a singleton that routes sidecar events to the agent store.
|
||||||
- Maximum 4 active xterm.js instances to avoid WebKit2GTK memory issues.
|
- Maximum 4 active xterm.js instances to avoid WebKit2GTK memory issues.
|
||||||
|
- Store files using Svelte 5 runes (`$state`, `$derived`) MUST have `.svelte.ts` extension (not `.ts`). Import with `.svelte` suffix. Plain `.ts` compiles but fails at runtime with "rune_outside_svelte".
|
||||||
|
|
||||||
## Memora Tags
|
## Memora Tags
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Svelte 5 rune stores (layout, agents, sessions) renamed from `.ts` to `.svelte.ts` — runes only work in `.svelte` and `.svelte.ts` files, plain `.ts` caused "rune_outside_svelte" runtime error (blank screen)
|
||||||
|
- Updated all import paths to use `.svelte` suffix for store modules
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
- Agent pane with prompt input, structured message rendering, stop button, and cost display (Phase 3)
|
- Agent pane with prompt input, structured message rendering, stop button, and cost display (Phase 3)
|
||||||
- Node.js sidecar manager (Rust) for spawning and communicating with agent-runner via stdio NDJSON (Phase 3)
|
- Node.js sidecar manager (Rust) for spawning and communicating with agent-runner via stdio NDJSON (Phase 3)
|
||||||
|
|
|
||||||
|
|
@ -43,9 +43,9 @@ bterminal-v2/
|
||||||
Sidebar/
|
Sidebar/
|
||||||
SessionList.svelte # Session browser
|
SessionList.svelte # Session browser
|
||||||
stores/
|
stores/
|
||||||
sessions.ts # Session state ($state runes)
|
sessions.svelte.ts # Session state ($state runes)
|
||||||
agents.ts # Active agent tracking
|
agents.svelte.ts # Active agent tracking
|
||||||
layout.ts # Pane layout state
|
layout.svelte.ts # Pane layout state
|
||||||
adapters/
|
adapters/
|
||||||
sdk-messages.ts # SDK message abstraction layer
|
sdk-messages.ts # SDK message abstraction layer
|
||||||
pty-bridge.ts # PTY IPC wrapper
|
pty-bridge.ts # PTY IPC wrapper
|
||||||
|
|
|
||||||
|
|
@ -68,12 +68,18 @@
|
||||||
- [x] SDK message adapter: full stream-json parser with 9 typed message types (sdk-messages.ts, 234 lines)
|
- [x] SDK message adapter: full stream-json parser with 9 typed message types (sdk-messages.ts, 234 lines)
|
||||||
- [x] Agent bridge: Tauri IPC adapter for sidecar communication (agent-bridge.ts, 53 lines)
|
- [x] Agent bridge: Tauri IPC adapter for sidecar communication (agent-bridge.ts, 53 lines)
|
||||||
- [x] Agent dispatcher: routes sidecar events to agent store (agent-dispatcher.ts, 87 lines)
|
- [x] Agent dispatcher: routes sidecar events to agent store (agent-dispatcher.ts, 87 lines)
|
||||||
- [x] Agent store: session state with messages, cost tracking (agents.ts, 91 lines)
|
- [x] Agent store: session state with messages, cost tracking (agents.svelte.ts, 91 lines)
|
||||||
- [x] AgentPane component: prompt input, message rendering, stop button, cost display (AgentPane.svelte, 420 lines)
|
- [x] AgentPane component: prompt input, message rendering, stop button, cost display (AgentPane.svelte, 420 lines)
|
||||||
- [x] UI integration: Ctrl+Shift+N for new agent, sidebar agent button, TilingGrid routing
|
- [x] UI integration: Ctrl+Shift+N for new agent, sidebar agent button, TilingGrid routing
|
||||||
|
|
||||||
Architecture decision: Uses `claude` CLI with `--output-format stream-json` instead of Agent SDK `query()` API. Avoids SDK npm dependency and version churn while getting identical structured output.
|
Architecture decision: Uses `claude` CLI with `--output-format stream-json` instead of Agent SDK `query()` API. Avoids SDK npm dependency and version churn while getting identical structured output.
|
||||||
|
|
||||||
|
### Bug Fix: Svelte 5 Rune File Extensions (2026-03-06)
|
||||||
|
- [x] Diagnosed blank screen / "rune_outside_svelte" runtime error
|
||||||
|
- [x] Root cause: store files used `.ts` extension but contain Svelte 5 `$state`/`$derived` runes, which only work in `.svelte` and `.svelte.ts` files
|
||||||
|
- [x] Renamed: `layout.ts` -> `layout.svelte.ts`, `agents.ts` -> `agents.svelte.ts`, `sessions.ts` -> `sessions.svelte.ts`
|
||||||
|
- [x] Updated all import paths in 5 files to use `.svelte` suffix (e.g., `from './stores/layout.svelte'`)
|
||||||
|
|
||||||
### Next Steps
|
### Next Steps
|
||||||
- [ ] Markdown rendering in agent text messages
|
- [ ] Markdown rendering in agent text messages
|
||||||
- [ ] Sidecar crash detection and restart UI
|
- [ ] Sidecar crash detection and restart UI
|
||||||
|
|
|
||||||
|
|
@ -124,6 +124,7 @@ See [phases.md](phases.md) for the full phased implementation plan (Phases 1-6).
|
||||||
| MVP = Phases 1-4 | Ship usable tool before tackling tree viz, packaging, polish | 2026-03-05 |
|
| MVP = Phases 1-4 | Ship usable tool before tackling tree viz, packaging, polish | 2026-03-05 |
|
||||||
| Canvas addon (not WebGL) | WebKit2GTK has no WebGL. Explicit Canvas addon avoids silent fallback | 2026-03-05 |
|
| Canvas addon (not WebGL) | WebKit2GTK has no WebGL. Explicit Canvas addon avoids silent fallback | 2026-03-05 |
|
||||||
| claude CLI over Agent SDK query() | Use `claude -p --output-format stream-json` instead of SDK npm package. Avoids dependency + version churn, identical structured output | 2026-03-06 |
|
| claude CLI over Agent SDK query() | Use `claude -p --output-format stream-json` instead of SDK npm package. Avoids dependency + version churn, identical structured output | 2026-03-06 |
|
||||||
|
| `.svelte.ts` for rune stores | Svelte 5 `$state`/`$derived` runes require `.svelte.ts` extension (not `.ts`). Compiler silently passes `.ts` but runes fail at runtime. All store files must use `.svelte.ts`. | 2026-03-06 |
|
||||||
|
|
||||||
## Open Questions
|
## Open Questions
|
||||||
|
|
||||||
|
|
@ -156,4 +157,6 @@ See [phases.md](phases.md) for the full phased implementation plan (Phases 1-6).
|
||||||
|
|
||||||
## Errors Encountered
|
## Errors Encountered
|
||||||
|
|
||||||
(none yet)
|
| Error | Cause | Fix | Date |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Blank screen, "rune_outside_svelte" runtime error | Store files used `.ts` extension but contain Svelte 5 `$state`/`$derived` runes. Runes only work in `.svelte` and `.svelte.ts` files. Compiler silently passes but fails at runtime. | Renamed stores to `.svelte.ts`, updated all import paths to use `.svelte` suffix | 2026-03-06 |
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue