agent-ecosystem/.planning/REQUIREMENTS.md
matt ae4833e310 feat(planning): add project planning documents and configuration for SSH multi-context workspaces
- 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.
2026-02-12 09:37:58 +09:00

114 lines
4.9 KiB
Markdown

# 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)*