Files
bbs-md/.planning/REQUIREMENTS.md
T
ruohki 8ea4545c9b docs(03-01): complete link record extraction and wiki-link resolution plan
- 03-01-SUMMARY.md: documents LinkRecord struct, render_markdown signature change,
  resolve_wiki_link algorithm, is_within_vault guard, and all decisions
- STATE.md: advance to Phase 3 Plan 2, update progress to 75%, add 3 decisions,
  mark NAV path traversal blocker resolved
- ROADMAP.md: update phase 3 plan progress (1 of 2 summaries)
- REQUIREMENTS.md: mark NAV-01, NAV-02, NAV-10 complete
2026-02-28 23:06:30 +01:00

142 lines
5.0 KiB
Markdown

# Requirements: BBS-MD
**Defined:** 2026-02-28
**Core Value:** Users can connect via SSH and seamlessly browse a vault of linked markdown documents with retro BBS aesthetics
## v1 Requirements
Requirements for initial release. Each maps to roadmap phases.
### Process Lifecycle
- [x] **LIFE-01**: App installs panic hook that restores terminal state before printing error
- [x] **LIFE-02**: App handles SIGHUP/SIGTERM for clean shutdown on SSH disconnect
- [x] **LIFE-03**: App logs to file only, never writes to stderr/stdout after TUI init
- [x] **LIFE-04**: App handles broken pipe without crashing
### Markdown Rendering
- [ ] **REND-01**: User sees H1-H6 headers with visual hierarchy and styling
- [ ] **REND-02**: User sees bold, italic, and inline code rendered with terminal styling
- [x] **REND-03**: User sees fenced code blocks with syntax highlighting
- [ ] **REND-04**: User sees ordered and unordered lists with proper indentation
- [ ] **REND-05**: User sees blockquotes with visual distinction
- [ ] **REND-06**: User sees horizontal rules as visual separators
- [ ] **REND-07**: User sees `[IMAGE: alt text]` placeholders for images
- [ ] **REND-08**: User sees GFM tables rendered with aligned columns
- [ ] **REND-09**: User sees box-drawing borders on content panels
- [x] **REND-10**: User sees CGA-era retro color theme (cyan/magenta/green on dark)
### Navigation
- [x] **NAV-01**: User can follow `[[wiki-links]]` to other vault documents
- [x] **NAV-02**: User can follow standard `[text](path.md)` links to other documents
- [ ] **NAV-03**: User can navigate back through history stack
- [ ] **NAV-04**: User can navigate forward after going back
- [x] **NAV-05**: User can scroll content with j/k, arrows, PgUp/PgDn
- [x] **NAV-06**: User lands on index.md as the entry point
- [x] **NAV-07**: User sees graceful error page when a linked file is not found
- [x] **NAV-08**: User sees keyboard hints in status bar
- [x] **NAV-09**: App handles terminal resize without breaking layout
- [x] **NAV-10**: User sees links highlighted inline and can Tab-cycle between them
- [ ] **NAV-11**: User sees breadcrumb / current location in status bar
### BBS Aesthetic
- [ ] **BBS-01**: User sees ANSI art splash screen on index.md
- [ ] **BBS-02**: User sees "last updated" file mtime on pages
### Live Content
- [ ] **LIVE-01**: App watches filesystem for changes and auto-refreshes current page
- [ ] **LIVE-02**: User can browse a vault-wide directory listing
### Configuration
- [x] **CONF-01**: App reads bbs.toml for vault path and theme configuration
### Shell Integration
- [x] **SHEL-01**: App exits cleanly with q or Ctrl+C, restoring terminal state
- [x] **SHEL-02**: App handles being launched as a login shell gracefully
## v2 Requirements
Deferred to future release. Tracked but not in current roadmap.
### Search
- **SRCH-01**: User can search across vault content
- **SRCH-02**: User sees search results with context snippets
### Advanced Rendering
- **ADVR-01**: User sees Mermaid/PlantUML diagrams rendered as ASCII art
### History
- **HIST-01**: User can view full navigation history overlay
### Interaction
- **INTR-01**: User can click links with mouse in supported terminals
## Out of Scope
| Feature | Reason |
|---------|--------|
| Embedded SSH/telnet server | App is a login shell — SSH daemon handles connections |
| Write/edit capabilities | Read-only viewer, hard guarantee |
| User authentication/identity | SSH daemon handles auth |
| Mobile or web frontend | Terminal only |
| Image rendering (sixel/kitty) | Standard terminals can't render images |
| Async runtime (tokio) | No async I/O needed — synchronous event loop is sufficient |
## Traceability
Which phases cover which requirements. Updated during roadmap creation.
| Requirement | Phase | Status |
|-------------|-------|--------|
| LIFE-01 | Phase 1 | Complete |
| LIFE-02 | Phase 1 | Complete |
| LIFE-03 | Phase 1 | Complete |
| LIFE-04 | Phase 1 | Complete |
| CONF-01 | Phase 1 | Complete (01-01) |
| SHEL-01 | Phase 1 | Complete |
| SHEL-02 | Phase 1 | Complete (01-01) |
| REND-01 | Phase 2 | Pending |
| REND-02 | Phase 2 | Pending |
| REND-03 | Phase 2 | Complete |
| REND-04 | Phase 2 | Pending |
| REND-05 | Phase 2 | Pending |
| REND-06 | Phase 2 | Pending |
| REND-07 | Phase 2 | Pending |
| REND-08 | Phase 2 | Pending |
| REND-09 | Phase 2 | Pending |
| REND-10 | Phase 2 | Complete |
| NAV-05 | Phase 2 | Complete |
| NAV-06 | Phase 2 | Complete |
| NAV-07 | Phase 2 | Complete |
| NAV-08 | Phase 2 | Complete |
| NAV-09 | Phase 2 | Complete |
| NAV-01 | Phase 3 | Complete |
| NAV-02 | Phase 3 | Complete |
| NAV-03 | Phase 3 | Pending |
| NAV-04 | Phase 3 | Pending |
| NAV-10 | Phase 3 | Complete |
| NAV-11 | Phase 3 | Pending |
| BBS-01 | Phase 4 | Pending |
| BBS-02 | Phase 4 | Pending |
| LIVE-01 | Phase 4 | Pending |
| LIVE-02 | Phase 4 | Pending |
**Coverage:**
- v1 requirements: 32 total
- Mapped to phases: 32
- Unmapped: 0
---
*Requirements defined: 2026-02-28*
*Last updated: 2026-02-28 after 01-01 execution (CONF-01, SHEL-02 complete)*