- Introduced new planning files including PROJECT.md, REQUIREMENTS.md, ROADMAP.md, and STATE.md to outline the vision and requirements for SSH multi-context workspaces. - Added ARCHITECTURE.md and CONCERNS.md to detail the codebase structure and address technical debt, known bugs, and security considerations. - Created CONVENTIONS.md to establish coding standards and practices for the project. - Updated .gitignore to exclude demo files and added configuration for planning tools. This commit lays the groundwork for enhancing SSH functionality and user experience in managing multiple workspaces.
4.9 KiB
4.9 KiB
Requirements: SSH Multi-Context Workspaces
Defined: 2026-02-12 Core Value: Users can seamlessly switch between local and SSH workspaces without losing state, and SSH sessions actually load their conversation history.
v1 Requirements
Requirements for initial release. Each maps to roadmap phases.
Provider Plumbing
- PROV-01: SSH sessions display full conversation history (fix FileSystemProvider plumbing through SessionParser)
- PROV-02: SSH subagent drill-down loads correctly over SFTP (fix SubagentResolver and SubagentDetailBuilder provider plumbing)
Service Context Management
- SCTX-01: ServiceContextRegistry manages local + N SSH service contexts with getActive/switch/create/destroy lifecycle
- SCTX-02: Local service context is always alive and never destroyed on SSH connect/disconnect
- SCTX-03: Each SSH context has independent services (ProjectScanner, SessionParser, SubagentResolver, ChunkBuilder, DataCache, FileWatcher)
- SCTX-04: All services implement dispose() for proper cleanup (EventEmitter listeners, timers, SSH connections)
- SCTX-05: IPC requests are stamped with context ID to prevent race conditions during rapid switching
IPC Context API
- IPC-01: Context management IPC channels exist (context:list, context:switch, context:connect-ssh, context:disconnect-ssh, context:destroy)
- IPC-02: Preload exposes context API to renderer (window.electronAPI.context)
- IPC-03: File watcher events are scoped to active context only
State Snapshot/Restore
- SNAP-01: Full Zustand state snapshot captured on context switch (projects, sessions, tabs, pane layout, selections, notifications)
- SNAP-02: Switching to a previously visited context restores exact state instantly (no refetch)
- SNAP-03: Switching to a never-visited context shows empty/skeleton state (not stale local data)
- SNAP-04: Loading overlay displayed during context switch to prevent stale data flash
- SNAP-05: Context snapshots persist to IndexedDB (survive app restart)
Workspace UI
- WSUI-01: Context switcher dropdown in sidebar lists Local + connected SSH workspaces
- WSUI-02: Status bar indicator shows active workspace name and connection status
- WSUI-03: Connection status indicators display connected/connecting/disconnected/error states
- WSUI-04: SSH connection profiles can be saved, edited, and deleted in settings
- WSUI-05: Keyboard shortcuts available for switching between workspaces
v2 Requirements
Deferred to future release. Tracked but not in current roadmap.
Enhanced UX
- WSUI-06: Color-coded workspace indicators per SSH connection
- WSUI-07: Fuzzy search in workspace switcher for quick filtering
- WSUI-08: Auto-reconnect with exponential backoff on SSH disconnect
- WSUI-09: Workspace health metrics (latency, connection uptime)
Advanced Capabilities
- ADV-01: Parallel workspace windows (view two workspaces simultaneously)
- ADV-02: Cross-context session comparison (local vs remote side-by-side)
- ADV-03: Workspace groups (organize related SSH connections)
Out of Scope
| Feature | Reason |
|---|---|
| SFTP performance optimization | Investigating separately after workspace switching works |
| SSH key management UI | Use system SSH keys, not app-managed |
| Multi-window side-by-side workspaces | v2+ complexity; current model is one-at-a-time switching |
| Mobile/responsive layout | Desktop-only app |
| BroadcastChannel multi-window sync | Single window for v1; multi-window is v2+ |
| Offline-first workspace caching | Would require conflict resolution strategy; defer |
Traceability
Which phases cover which requirements. Updated during roadmap creation.
| Requirement | Phase | Status |
|---|---|---|
| PROV-01 | Phase 1 | Pending |
| PROV-02 | Phase 1 | Pending |
| SCTX-01 | Phase 2 | Pending |
| SCTX-02 | Phase 2 | Pending |
| SCTX-03 | Phase 2 | Pending |
| SCTX-04 | Phase 2 | Pending |
| SCTX-05 | Phase 2 | Pending |
| IPC-01 | Phase 2 | Pending |
| IPC-02 | Phase 2 | Pending |
| IPC-03 | Phase 2 | Pending |
| SNAP-01 | Phase 3 | Pending |
| SNAP-02 | Phase 3 | Pending |
| SNAP-03 | Phase 3 | Pending |
| SNAP-04 | Phase 3 | Pending |
| SNAP-05 | Phase 3 | Pending |
| WSUI-01 | Phase 4 | Pending |
| WSUI-02 | Phase 4 | Pending |
| WSUI-03 | Phase 4 | Pending |
| WSUI-04 | Phase 4 | Pending |
| WSUI-05 | Phase 4 | Pending |
Coverage:
- v1 requirements: 20 total
- Mapped to phases: 20
- Unmapped: 0
Validation:
- Phase 1: 2 requirements (PROV-01, PROV-02)
- Phase 2: 8 requirements (SCTX-01 through SCTX-05, IPC-01 through IPC-03)
- Phase 3: 5 requirements (SNAP-01 through SNAP-05)
- Phase 4: 5 requirements (WSUI-01 through WSUI-05)
- Total: 20 requirements mapped
Requirements defined: 2026-02-12 Last updated: 2026-02-12 after roadmap creation (traceability complete)