docs: update meta files for teardown race fix and px-to-rem session
This commit is contained in:
parent
9738776bae
commit
7fc87a9567
3 changed files with 27 additions and 4 deletions
|
|
@ -11,6 +11,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
- `claude_read_skill` path traversal: added `canonicalize()` + `starts_with()` validation to prevent reading arbitrary files via crafted skill paths (lib.rs)
|
||||
|
||||
### Fixed
|
||||
- Workspace teardown race: `switchGroup()` now awaits `waitForPendingPersistence()` before clearing agent state, preventing data loss when agents complete during group switch (agent-dispatcher.ts, workspace.svelte.ts)
|
||||
- SettingsTab switchGroup click handler made async with await to properly handle the async switchGroup() flow (SettingsTab.svelte)
|
||||
- Re-entrant sidecar exit handler race condition: added `restarting` guard flag preventing double-restart on rapid disconnect/reconnect (agent-dispatcher.ts)
|
||||
- Memory leak: `toolUseToChildPane` and `sessionProjectMap` maps now cleared in `stopAgentDispatcher()` (agent-dispatcher.ts)
|
||||
- Listener leak: 5 Tauri event listeners in machines store now tracked via `UnlistenFn[]` array with `destroyMachineListeners()` cleanup function (machines.svelte.ts)
|
||||
|
|
@ -32,7 +34,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
- Agent bridge payload validated before cast to SidecarMessage (agent-bridge.ts)
|
||||
- Profile.toml and resource_dir failures now log::warn instead of silent empty fallback (lib.rs)
|
||||
|
||||
### Changed
|
||||
- All ~100 px layout values converted to rem across 10 components per rule 18: AgentPane, ToastContainer, CommandPalette, SettingsTab, TeamAgentsPanel, AgentCard, StatusBar, AgentTree, TerminalPane, AgentPreviewPane (1rem = 16px base, icon/dot dimensions kept as px)
|
||||
|
||||
### Added
|
||||
- `waitForPendingPersistence()` export in agent-dispatcher.ts: counter-based fence that resolves when all in-flight `persistSessionForProject()` calls complete
|
||||
- OpenTelemetry instrumentation: `telemetry.rs` module with TelemetryGuard (Drop-based shutdown), tracing + optional OTLP/HTTP export to Tempo, controlled by `BTERMINAL_OTLP_ENDPOINT` env var (absent = console-only fallback)
|
||||
- `#[tracing::instrument]` on 10 key Tauri commands: pty_spawn, pty_kill, agent_query, agent_stop, agent_restart, remote_connect, remote_disconnect, remote_agent_query, remote_agent_stop, remote_pty_spawn
|
||||
- `frontend_log` Tauri command: routes frontend telemetry events (level + message + context JSON) to Rust tracing layer with `source="frontend"` field
|
||||
|
|
|
|||
6
TODO.md
6
TODO.md
|
|
@ -7,11 +7,11 @@
|
|||
- [ ] **Multi-machine real-world testing** -- Test bterminal-relay with 2 machines.
|
||||
- [ ] **Multi-machine TLS/certificate pinning** -- TLS support for bterminal-relay + certificate pinning in RemoteManager.
|
||||
- [ ] **Agent Teams real-world testing** -- Test with CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1.
|
||||
- [ ] **Convert remaining components to rem** -- Apply rule 18 (relative-units.md) to all remaining px-based layout CSS across v3 components.
|
||||
- [ ] **Workspace teardown race** -- clearAllAgentSessions in workspace.svelte.ts:69 races with in-flight persistence (1 remaining HIGH audit finding).
|
||||
|
||||
## Completed
|
||||
|
||||
- [x] **px→rem conversion** -- All ~100 px layout violations converted to rem across 10 components (AgentPane, ToastContainer, CommandPalette, SettingsTab, TeamAgentsPanel, AgentCard, StatusBar, AgentTree, TerminalPane, AgentPreviewPane). Rule 18 fully enforced. | Done: 2026-03-08
|
||||
- [x] **Workspace teardown race fix** -- Added pendingPersistCount counter + waitForPendingPersistence() fence in agent-dispatcher.ts. switchGroup() awaits persistence before clearing state. Last open HIGH audit finding resolved. | Done: 2026-03-08
|
||||
- [x] **OTEL telemetry** -- Full-scope OpenTelemetry: telemetry.rs (TelemetryGuard, tracing + OTLP layers), telemetry-bridge.ts (frontend→Rust), #[tracing::instrument] on 10 commands, agent dispatcher lifecycle logging, Docker Tempo+Grafana stack (port 9715). BTERMINAL_OTLP_ENDPOINT env var controls export. | Done: 2026-03-08
|
||||
- [x] **Medium/Low audit fixes** -- All 6 MEDIUM + 8 LOW findings fixed: runtime type guards in sdk-messages.ts, ANTHROPIC_* env stripping, timestamp mismatch, async lock, error propagation, input validation, mutex poisoning, log warnings, payload validation. 172/172 tests pass. | Done: 2026-03-08
|
||||
- [x] **Security & correctness audit fixes** -- 5 CRITICAL + 4 HIGH findings fixed: path traversal, race conditions, memory leaks, listener leaks, transaction safety. 3 false positives dismissed. | Done: 2026-03-08
|
||||
|
|
@ -20,5 +20,3 @@
|
|||
- [x] **ctx init fix + UI init button** -- Fixed ctx CLI, added Initialize Database button in ContextPane. | Done: 2026-03-08
|
||||
- [x] **Premium markdown typography** -- MarkdownPane CSS overhaul with Inter font, prose spacing, gradient HR. | Done: 2026-03-08
|
||||
- [x] **Collapsible terminal panel** -- Terminal section collapses to status bar. Default collapsed. | Done: 2026-03-08
|
||||
- [x] **Sidebar simplification + markdown fixes** -- Sidebar stripped to Settings-only. MarkdownPane file switching fixed. | Done: 2026-03-08
|
||||
- [x] **Agent preview terminal** -- AgentPreviewPane.svelte: read-only xterm.js terminal for agent activity. | Done: 2026-03-08
|
||||
|
|
|
|||
|
|
@ -396,3 +396,22 @@ All editor themes map to the same `--ctp-*` CSS custom property names (26 vars).
|
|||
- [x] Created `v2/src/lib/adapters/telemetry-bridge.ts` — `tel.info/warn/error/debug/trace()` convenience API
|
||||
- [x] Wired agent dispatcher lifecycle events: agent_started, agent_stopped, agent_error, sidecar_crashed, cost metrics
|
||||
- [x] Created Docker compose stack: `docker/tempo/` — Tempo (4317/4318/3200) + Grafana (port 9715)
|
||||
|
||||
### Session: 2026-03-08 — Teardown Race Fix + px→rem Conversion
|
||||
|
||||
#### Workspace Teardown Race Fix
|
||||
- [x] Added `pendingPersistCount` counter + `waitForPendingPersistence()` export in agent-dispatcher.ts
|
||||
- [x] `persistSessionForProject()` increments/decrements counter in try/finally
|
||||
- [x] `switchGroup()` in workspace.svelte.ts now awaits `waitForPendingPersistence()` before clearing state
|
||||
- [x] SettingsTab.svelte switchGroup onclick handler made async with await
|
||||
- [x] Added test for `waitForPendingPersistence` in agent-dispatcher.test.ts
|
||||
- [x] Added mock for `waitForPendingPersistence` in workspace.test.ts
|
||||
- [x] Last open HIGH audit finding resolved (workspace teardown race)
|
||||
|
||||
#### px→rem Conversion (Rule 18 Compliance)
|
||||
- [x] Converted ~100 px layout violations to rem across 10 components
|
||||
- [x] AgentPane.svelte (~35 violations: font-size, padding, gap, margin, max-height, border-radius)
|
||||
- [x] ToastContainer.svelte, CommandPalette.svelte, TeamAgentsPanel.svelte, AgentCard.svelte
|
||||
- [x] StatusBar.svelte, AgentTree.svelte, TerminalPane.svelte, AgentPreviewPane.svelte, SettingsTab.svelte
|
||||
- [x] Icon/decorative dot dimensions kept as px per rule 18
|
||||
- [x] 139 vitest + 34 cargo tests pass, vite build succeeds
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue