UI Feature Index
Date: 2026-06-13 -- Purpose: Catalog every UI feature discussed or documented in the project, its current implementation status, and what remains. Written to support action-item creation for the remaining product build.
How to read this doc: Each feature has a status badge, a brief description of what was designed, what exists in code today, what's missing, and where to find the relevant specs. Features are grouped by functional area, not milestone order.
Status Key
| Badge | Meaning |
|---|---|
| Done | Fully implemented and integrated |
| Built, not shipped | Code exists (often substantial) but milestone shows 0% -- likely batch-generated, not integrated into the live app flow, or missing acceptance-criteria validation |
| Partial | Some code exists but key pieces are missing |
| Not started | Spec exists, no implementation |
| Undocumented | Code exists with no milestone or spec coverage |
| Spec only | Described in spec/roadmap but no milestone issue exists |
1. Hover Card System
1a. Three-Layer Hover Cards -- Built, not shipped
Milestone: M17-001 (0%) -- Spec: A1 S8.1-8.3 -- Code: apps/web/components/HoverCard/ (1,070 lines)
What was designed: Progressive disclosure -- Layer 1 (peek, 200ms delay, 300ms grace), Layer 2 (tabbed detail panel, persistent, ~560x600px max, keyboard nav), Layer 3 (pin/open actions). Six trigger types: word hover, phrase selection, verse number hover, verse range, annotation marker, cross-ref link. Safe triangle collision avoidance with the vertical toolbar. Workspace-adaptive tab defaults (Study->Lexicon, Notes->Notes, Study Map->Graph).
What exists: HoverCardDetail.tsx (553 lines), HoverCardPeek.tsx (89 lines), HoverCardPortal.tsx (213 lines), store, types, and tests. The three-layer system appears structurally complete.
What's missing:
- Pin action wiring to Pinboard (
TODO: emit pin event to event bus, line 180 of HoverCardPortal) - "Open in pane" action (
TODO(B3.2+), line 175 of HoverCardDetail) - M17-002 (data hooks -- TanStack Query hooks for passage preview, lexicon, cross-refs, commentary, translations) not validated
- M17-003 (trigger zones in ScripturePage -- TokenSpan, VerseNumber, VerseBlock zones) not validated
- Milestone acceptance criteria never formally checked
Why it stalled: M17 depends on M16 (GUI infrastructure) which itself is listed at 0% in the index despite having partial implementations. The dependency chain prevented formal milestone completion.
1b. Context Card Widget -- Built, not shipped
Milestone: M17-004 -- Spec: A1 S8.4 -- Code: apps/web/components/ContextCard/ContextCardWidget.tsx (354 lines + tests)
What was designed: Persistent right-sidebar widget that mirrors hover card content for accessibility. Optional hover-mode toggle that suppresses floating hover cards entirely.
What exists: Full component with tests.
What's missing: Formal integration testing against hover card system. Milestone ACs not validated.
2. Toolbar System
2a. Vertical Verse-Aligned Toolbar -- Built, not shipped
Milestone: M17-005 -- Spec: A1 S7.2 -- Code: apps/web/components/VerticalToolbar/VerticalToolbar.tsx (311 lines)
What was designed: Always-visible paper-edge strip with two modes: resting (centered, context-free actions -- highlight, bookmark, note) and active (slides to align with hovered/selected verse -- compare, study map, cross-refs, share). Per-pane scoping. Plugin toolbar contributions via right-click customization.
What exists: Full component implementation.
What's missing: Integration with hover card collision avoidance. Plugin contribution points. Milestone ACs not validated.
2b. Horizontal Bottom Toolbar -- Built, not shipped
Milestone: M17-006 -- Spec: A1 S7.1 -- Code: apps/web/components/HorizontalToolbar/HorizontalToolbar.tsx (226 lines)
What was designed: 48px pill-shaped bar with chapter navigation (prev/next), reading settings flyout. Replaces the original floating toolbar.
What exists: Full component. The spec called for deleting the deprecated FloatingToolbar/ directory as part of this work.
What's missing: Milestone ACs not validated. Unclear if FloatingToolbar was fully replaced.
2c. Pane-Local Toolbars -- Partial
Milestone: M17 (implicit) -- Spec: A1 S7.3
What was designed: Per-pane-type toolbars -- Tiptap formatting bar for editors, graph controls for Study Map, plugin-defined toolbars.
What exists: Study Map has its own toolbar. Tiptap integration exists in notes. Not unified under a single pane-local toolbar abstraction.
2d. Toolbar Customization -- Not started
Milestone: M26-005 -- Spec: A1 S7.5
What was designed: Drag-reorder, hide, right-click "Customize toolbar...", overflow menu, "Reset to defaults." Persisted per-user in Dexie.js.
Where it was left: Deferred to M26 (Plugin Ecosystem). No code exists beyond a toolbar-customization.ts store file.
3. Pinboard
3a. Pinboard Widget -- Built, not shipped
Milestone: M17-007 -- Spec: A1 S21 -- Code: apps/web/components/Pinboard/ (1,141 lines + store + sync + tests)
What was designed: Photoshop Layers-inspired right-sidebar panel. Session-scoped pinned items. Pinnable types: verses, verse ranges, phrases, lexicon/dictionary entries, cross-ref chains, notes, AI responses. Folders, color-coded labels, sort/group, drag-and-drop reorder. Bidirectional Study Map sync. Auto-opens on first pin.
What exists: PinboardWidget.tsx (26K), PinboardPanel.tsx (7.9K), store (pinboard.ts, 13K), sync tests. This is one of the most substantial unshipped components.
What's missing: Pin action from hover card (the TODO in HoverCardPortal). Study Map bidirectional sync. Formal milestone validation.
Note: This component is not referenced in any milestone README -- it's an orphaned implementation despite being fully spec'd.
3b. Pinboard to Study Map Sync -- Not started
Milestone: M24-002 -- Spec: A1 S21
What was designed: Pin from hover card -> both Pinboard and Study Map. Unpin from either side removes from both. Pane-local undo.
What exists: Pinboard store exists, Study Map store exists. No bidirectional sync layer.
4. Comparison System
4a. Compound Tab Comparison -- Built, not shipped
Milestone: M17-009 -- Spec: A1 S11 -- Code: apps/web/components/ComparisonContainer/ (1,050 lines)
What was designed: 2-4 column scripture comparison within a single tab. Scroll sync via IntersectionObserver (100ms debounce). Amber diff highlighting. Collapsible columns to 40px strips. Tab identity shows compared translations (e.g., "Alma 32 -- KJV | JST").
What exists: ComparisonContainer.tsx, ComparisonColumn.tsx, useComparisonStore.ts, useScrollSync.ts, diff.ts -- full implementation with diff logic, scroll sync, and tests.
What's missing: Formal milestone validation.
Note: Like Pinboard, this is not referenced in any milestone README despite being fully implemented.
4b. Comparison Entry Points -- Partial
Milestone: M17-009 (bundled) -- Spec: A1 S11.4
What was designed: Five entry points -- hover card "Compare translations" action, vertical toolbar Compare button, gutter indicators on verses with textual variants, command palette "compare" queries, whisper card suggestions on passages with significant translation differences.
What exists: The comparison container itself. Entry point wiring is incomplete -- hover card has a TODO for this, toolbar Compare button status unclear.
5. Navigation Surfaces
5a. Verse Map -- Built, not shipped
Milestone: M18-001 -- Spec: A1 S20.2 -- Code: apps/web/components/VerseMap/VerseMap.tsx (350 lines)
What was designed: Fixed left-edge vertical strip (8px default, expands 20-24px on hover). HTML5 canvas. Eight marker types: verse ticks, viewport indicator, current verse, highlights (colored bars), notes (dots), bookmarks (flags), cross-ref density (diamonds), search matches (orange ticks). Click/drag/hover interactions. Three scaling strategies for different chapter lengths.
What exists: Full component with imports from shared navigation utilities (markers.ts, colors.ts, density.ts, viewport.ts). Uses the unified visual language.
What's missing: Formal milestone validation. Integration into reader layout.
5b. Three-Column Minimap -- Built, not shipped
Milestone: M18-002 -- Spec: A1 S20.4 -- Code: apps/web/components/Minimap/Minimap.tsx (427 lines)
What was designed: Fixed right-edge strip with three proportional columns (~24-36px total). Left column: chapters in book, middle: books in volume, right: all volumes. Minimal/rich state toggle. Clickable for navigation.
What exists: Full component.
What's missing: Formal milestone validation. Not documented in milestone README despite being fully built.
5c. Breadcrumb Minimap Navigation Panel -- Built, not shipped
Milestone: M18-003 -- Spec: A1 S20.5, S13.6 -- Code: apps/web/components/BreadcrumbMinimap/BreadcrumbMinimap.tsx (664 lines)
What was designed: Interactive flyout below TopBar breadcrumb. Horizontal book silhouette bars with proportional chapter segments. Three zoom levels (corpus, volume/book, chapter). Annotation overlays (progress tinting, density dots, cross-ref glow). Drag-to-scrub with verse preview. Type-to-filter. 10+ keyboard shortcuts.
What exists: Full component (664 lines -- the most substantial navigation surface).
What's missing: Formal milestone validation.
5d. Unified Navigation Visual Language -- Built, not shipped
Milestone: M18-004 -- Spec: A1 S20.6 -- Code: apps/web/lib/navigation/ (markers.ts, colors.ts, density.ts, viewport.ts)
What was designed: Shared utility modules consumed by all five navigation surfaces. Consistent marker encoding: proportional sizing, study progress tinting, highlight bars, notes, bookmarks, cross-ref diamonds, verse ticks, viewport indicator.
What exists: The shared modules exist and are imported by VerseMap and likely others.
What's missing: Formal validation that all surfaces actually consume these modules consistently.
5e. Infinite Scroll Across Chapter Boundaries -- Built, not shipped
Milestone: M18-005 -- Spec: A1 S15.4 -- Code: apps/web/hooks/useInfiniteScroll.ts (346 lines)
What was designed: Bidirectional IntersectionObserver loading. TanStack Query prefetching (1 chapter ahead/behind). Dwell-time gating (5-second threshold before committing navigation). Whisper on return to previously annotated passage. Per-chapter scroll position persistence.
What exists: Full hook implementation.
What's missing: Integration validation with reader. Whisper-on-return behavior unclear.
5f. Page Gutters -- Built, not shipped
Milestone: M18-006 -- Spec: A1 S20.3 -- Code: apps/web/components/PageGutters/PageGutters.tsx (332 lines)
What was designed: Scrolling margins flanking the scripture column. Annotation markers at exact verse vertical positions. Click opens hover card or navigates.
What exists: Full component. Distinct from the existing "study gutter" (which is a simpler annotation gutter from M15).
What's missing: Formal milestone validation. Relationship to study gutter needs clarification.
5g. Branching History Tree -- Built, not shipped
Milestone: M18-007 -- Spec: A1 S15.3 -- Code: apps/web/components/HistoryTree/HistoryTree.tsx (545 lines)
What was designed: Full-viewport overlay (Cmd+Shift+K or Cmd+K Cmd+K). Dagre left-to-right temporal layout. Five node types (Chapter, Dictionary/Lexicon, Note, AI Response, Study Map). Three edge types (sequential, cross-book jump, return visit). Verse annotation chips with range merging. Distance-based fading. Collapsible satellite clusters. Staleness gradient with four-stage demotion. Up to 5 pinnable nodes. Convergence with Study Map shared node set + "navigation-only" mode toggle.
What exists: Full component (545 lines).
What's missing: Formal milestone validation. Not documented in milestone README despite being fully built.
5h. Command Palette Upgrade -- Built, not shipped
Milestone: M18-008 -- Spec: A1 S13 -- Code: apps/web/components/CommandPalette/CommandPalette.tsx (796 lines + ShortcutsCheatsheet 170 lines)
What was designed: Three-tier ranked results: Tier 1 (<80ms fuzzy search), Tier 2 (50-200ms FalkorDB context suggestions), Tier 3 (200-1000ms AI suggestions). Five prefix modes: > commands, @ symbols, # topics, ? AI, / plugins. Raycast-style Up-key history navigation. Result tabs (All/Passages/Topics/Notes/Commands). Single-keypress 1-9 selection. No-empty-state with recent passages + pinned sessions.
What exists: Full component with shortcuts cheatsheet.
What's missing: Unclear if all three tiers are functional or if FalkorDB/AI tiers are stubbed. Milestone validation.
5i. Command Palette to History Tree Escalation -- Partial
Milestone: M18-009 -- Spec: A1 S13.1
What was designed: Cmd+K Cmd+K transitions palette to history tree with text carry-over.
What exists: Both components exist independently. Escalation wiring status unknown.
6. Study Map
6a. Study Map Core -- Partial (milestone says ~50%)
Milestone: M23-001 through M23-009 -- Spec: A1 S12 -- Code: apps/web/ (stores, components, plugins)
What was designed: Sigma.js + Graphology WebGL canvas. ForceAtlas2 Web Worker layout. Eight node types, seven edge types. Three-level semantic zoom (Constellation/Working/Reading). Loose/pinned node duality. Dexie persistence. Staleness gradient. Navigation graph convergence.
What exists: Core rendering, layout engine, and persistence are implemented. The milestone index shows 4/9 issues done.
What's missing: 5 issues still open per milestone tracking. Navigation-graph edge ingestion (M23-009). Full integration testing.
6b. Study Map to Reader Integration -- Not started
Milestone: M24-001 -- Spec: A1 S12
What was designed: Map node click navigates reader. Staleness interaction tracking. Vertical toolbar active-mode integration. Hover card "Open in Map" action.
6c. Study Map Tools -- Not started
Milestone: M24-005 -- Spec: Roadmap E24.5
What was designed: Minimap (120x80px, bottom-right, draggable viewport). In-canvas search (Cmd+F). Clustering labels. Export (PNG 2x, PDF, CSV).
6d. Study Map Accessibility -- Not started
Milestone: M24-006 -- Spec: Roadmap E24.6
What was designed: Map Outline with role="tree" mirroring graph. Keyboard navigation (Tab, arrows, Enter, P, Delete). ARIA live announcements. List View fallback for >30 nodes.
6e. Study Map Undo -- Built, not shipped
Milestone: M24-007 -- Code: apps/web/lib/undo.ts (278 lines + tests)
What was designed: 50-entry pane-local undo stack. Cmd+Z/Cmd+Shift+Z. Pin/unpin, edge create, node add/remove = single entries.
What exists: Full undo library with tests. Study Map undo tests exist.
7. Plugins (core.*)
7a. core.interlinear -- Built, not shipped
Milestone: M25-001 (also overlaps M06) -- Spec: Roadmap E25.1 -- Code: apps/web/plugins/core.interlinear/ (297 lines)
What was designed: Inline interlinear rows: original script, transliteration, gloss, morphology. Flexbox word-unit blocks. Hebrew RTL + SBL Hebrew. Greek + Gentium Plus. Row toggles (I, T, Shift+G, M). Toolbar toggle integration.
What exists: InterlinearPane.tsx, InterlinearCell.tsx, manifest. Uses useChapter hook for real data. The code appears functional, not stubbed.
What's missing: Row toggle hotkeys. Toolbar integration. Formal milestone validation. Scope decision SD-2 unresolved -- are interlinear UIs delivered as M06/M07 reader components or M25 plugins?
7b. core.witnesses -- ELIMINATED
Eliminated: The Witness concept was removed from the codebase. Manuscripts are editions handled by the Translation pipeline. The core.witnesses plugin, ManuscriptViewerPane, WitnessHoverTab, and all related pipeline code have been deleted. M30 (Witness Apparatus) milestone is obsolete.
7c. core.ai -- Built, not shipped
Milestone: M25-003 -- Spec: Roadmap E25.3 -- Code: apps/web/plugins/core.ai/ (545 lines) + AIStudyPanelContainer (405 lines)
What was designed: AI assistant in sidebar + pane. Context-aware responses based on current passage. Study Map integration with AI-inferred gray edges. Cmd+Enter shortcut. "Study This Verse" from Verse Action Sheet.
What exists: AiStudyPane.tsx (275 lines), AiSidebarWidget.tsx (189 lines), manifest. The M09 AI Study Assistant milestone is 100% complete -- this plugin is likely the refactored A1 version.
What's missing: Study Map AI-inferred edges. Formal plugin integration. AIStudyPanelContainer is not documented in any milestone.
7d. core.commentary -- Built, not shipped
Milestone: M25-004 -- Spec: Roadmap E25.4 -- Code: apps/web/plugins/core.commentary/ (388 lines)
What was designed: Commentary data via TanStack Query. Right side panel sections contextual to passage (originally called "Inspector sections" -- the Inspector is now the right side panel widget dock zone). Research workspace Resource Browser panel.
What exists: CommentaryBrowserPanel.tsx (223 lines), CommentaryHoverTab.tsx (111 lines), manifest. CommentaryBrowserPanel uses useQuery.
What's missing: Research workspace doesn't exist (eliminated in A1). Resource Browser needs a new home.
7e. core.journal -- Built, not shipped
Milestone: M25-005 -- Spec: Roadmap E25.5 -- Code: apps/web/plugins/core.journal/ (502 lines)
What was designed: Chronological activity log (passages read, annotations created, searches performed). Calendar heatmap visualization. Dexie.js activity logging.
What exists: JournalPanel.tsx (252 lines), CalendarHeatmap.tsx (175 lines), manifest.
What's missing: Activity logging pipeline (does it actually record events?). Formal milestone validation.
7f. core.notes -- Partial
Milestone: M18-010 -- Spec: A1 -- Code: apps/web/plugins/core.notes/ (3 files: index.ts, manifest.ts, templates.ts)
What was designed: Rich-text notes capability (Tiptap-based editor) with dual form (sidebar widget + pane type). Dexie-backed. Cross-ref auto-registration. Full-text indexed.
What exists: Plugin registration and templates. No dedicated UI component -- relies on core.annotations and Tiptap integration.
What's missing: Dedicated NoteEditorPane or NoteSidebarWidget components. Full-text indexing.
7g. core.teach -- Spec only (minimal stub)
Milestone: None (listed as M30+ "Future") -- Spec: Roadmap M30 -- Code: apps/web/plugins/core.teach/index.ts (40 lines)
What was designed: Lesson Outline workspace. Drag-reorder. Export to PDF/text. Resource Browser panel.
What exists: A 40-line plugin registration stub. No UI components.
8. Focus Modes
8a. Focus Mode / Minimize UI -- Built, not shipped
Milestone: M19-004 (listed as M33 in roadmap "Future") -- Spec: A1 S16 -- Code: apps/web/stores/focusMode.ts (157 lines) + apps/web/hooks/useFocusMode.ts + tests
What was designed: Three levels -- Minimize UI (Shift+\: collapse sidebars + TopBar, 30% opacity toolbar), Focus Mode (F: full-bleed per-pane-type, 680px max-width scripture), Full Focus (F again: maximum immersion). Per-pane-type behavior (Scripture 600px, Editor prose width, Study Map full-bleed). Escape steps back one level.
What exists: Store and hook with tests.
What's missing: Visual implementation (CSS, layout changes). Unclear if keyboard shortcuts are wired.
Confusion: The roadmap lists this as M33 (post-v2.0 "Future"), but M19-004 assigns it to Integration & Polish. The spec (A1 S16) treats it as core. It was implemented as infrastructure but may never have been prioritized for visual integration.
8b. Sentence Focus -- Spec only
Milestone: M33 (Future) -- Spec: A1 S16
What was designed: Cmd+Shift+F highlights the current sentence and dims surrounding text.
What exists: Nothing.
9. Session & Workspace Features
9a. Session Color Ambient Accent -- Done
Code: apps/web/hooks/useSessionAccent.ts (39 lines + tests)
The --session-accent CSS variable system is implemented and used throughout the chrome.
9b. Workspace Presets -- Built, not shipped
Milestone: M16 -- Code: apps/web/lib/workspaces/ (493 lines + tests)
What was designed: Three default workspaces (Study, Notes, Study Map) + custom presets. Save/reset. Modified indicator. Per-session overrides.
What exists: Full preset library with per-workspace modules (study.ts, notes.ts, study-map.ts).
9c. Workspace Choreography -- Partial
Spec: A1 S18
What was designed: Originally per-workspace arrival choreography (Reading quiets, Study tools slide, Research panels spread). Simplified in A1 to universal 220ms cross-fade.
What exists: Cross-fade likely exists as CSS. No complex choreography (which was explicitly eliminated).
10. Pane & Widget Infrastructure
10a. Pane Discovery / PaneQuickPicker -- Built, not shipped
Milestone: None documented -- Spec: A1 S3.6 -- Code: apps/web/components/PaneQuickPicker/PaneQuickPicker.tsx (412 lines + tests)
What was designed: "+" button in pane group tab bar. Categorized pane type picker. Context menu "Add Pane." Command palette support.
What exists: Full component with tests.
Note: Orphaned -- no milestone references this component despite it being fully spec'd and implemented.
10b. Widget Dock Zones -- Built, not shipped
Milestone: M16-008 -- Code: apps/web/components/WidgetDockZone.tsx (517 lines + tests)
What was designed: Drag-and-drop sidebar widgets. Per-widget configuration. Left/right sidebar dock zones architecturally identical.
What exists: Full component at 517 lines. Tests exist (widget-dock-zone.test.ts, dock-zone-visuals.test.ts).
Note: File is a loose .tsx in the components directory rather than in its own subdirectory (inconsistent with project conventions).
10c. Corpus Filtering Across Surfaces -- Built, not shipped
Milestone: M19-001 -- Code: apps/web/stores/corpusFilter.ts (73 lines) + apps/web/lib/corpus-filter-integration.ts + tests
What was designed: Multi-tradition corpus filtering applied consistently to reader, navigation surfaces, Study Map, and search.
What exists: Store and integration layer with tests.
What's missing: Validation that all surfaces actually consume the filter. Not documented in milestone README.
11. Help, Onboarding & Polish
11a. Help System -- Built, not shipped
Milestone: M19-003 -- Code: apps/web/components/HelpModal/HelpModal.tsx (400 lines)
What was designed: Context-aware Help modal. "Help" button in TopBar.
What exists: Full component. Not documented in any milestone.
11b. Three-Tier Onboarding -- Built, not shipped
Milestone: M19-003 -- Spec: A1 S22 -- Code: apps/web/components/OnboardingTour/OnboardingTour.tsx (396 lines) + OnboardingGate.tsx (24 lines) + ProductTour/ (310 lines)
What was designed: Tier 1 (immediate basics on first visit), Tier 2 (action-triggered coaching -- Pinboard auto-opens on first pin, whisper card introduces Study Map on first rich passage), Tier 3 (opt-in power features, replayable walkthroughs).
What exists: OnboardingTour, OnboardingGate, and ProductTour components. Multiple tour types.
What's missing: Not documented in any milestone despite ~730 lines of code.
11c. Delightful Moments -- Partial
Milestone: M34 (Future) -- Spec: A1 S18
What was designed: 14 delight moments: workspace cross-fade, cross-ref chain via pin, Study Map discovery whispers, highlight wash, connection discovery, history whisper, silent save, empty-state invitations, auto-link, first-annotation glow, session switch, session fork, plugin enable, Study Map constellation "aha."
What exists: WhisperCard component exists and is used in MainCanvas (auto-dismisses after 3s). TrialExpiredWhisper exists. Welcome-back whisper on home page (7-day gap detection). Some empty states exist.
What's missing: Most of the 14 moments are not implemented. Highlight wash, connection discovery, first-annotation glow, session fork animation, plugin enable materialize -- all absent.
11d. Cloud Sync & Offline-First -- Built, not shipped
Milestone: M19-002 -- Code: apps/web/components/OfflineStorage/OfflineStorage.tsx (232 lines) + OfflineIndicator.tsx + SwUpdateToast.tsx
What was designed: Offline-first with service worker caching. Cloud sync.
What exists: Offline storage component, indicator, and SW update toast.
What's missing: Cloud sync (server-side). Not documented in any milestone.
11e. Undo Model -- Built, not shipped
Milestone: M19-005 -- Code: apps/web/lib/undo.ts (278 lines + tests)
What was designed: Session-level undo (annotations, 100 entries) + pane-local undo (Study Map 50 entries, editor via Tiptap). Cmd+Z dispatches by focused pane.
What exists: Full undo library with both session and pane-local contexts. Study Map undo tests exist.
12. Action Ring
12a. ReaderActionRing -- Deleted -- functionality absorbed by Floating Toolbar
Milestone: Pre-A1 -- Spec: A1 S6.4 (modified)
What was designed: Originally a 180-degree arc above text selection with context-dependent actions. A1 spec said it was "being replaced by vertical toolbar."
What happened: The ActionRing component has been deleted from the codebase. All contextual actions (Highlight, Note, Look Up, Share) are now provided by the Floating Toolbar.
13. Future / Post-v2.0 Features (No Implementation)
These are documented in the roadmap but have no milestones and no code (except where noted):
| Feature | Roadmap ref | Notes |
|---|---|---|
| core.liveshare (real-time collaborative study) | M31 | Yjs infrastructure exists for CRDT; no liveshare UI |
| Dark Mode & Theming | M32 | colors.ts has dark-mode color maps; no theme switcher UI |
Sentence Focus (Cmd+Shift+F) | M33 | No code |
| Full Delight Polish (14 moments) | M34 | Partial (whispers exist, most moments don't) |
| Internationalization / RTL | M35 | Hebrew RTL exists in interlinear; no i18n framework |
14. Desktop & Mobile
14a. Desktop (Electron) -- Not started
Milestone: M27 -- Spec: Roadmap E27.1-E27.3
PWA already ships via M11-003 (service worker, manifest). Electron shell, multi-window, system tray -- no code.
14b. Mobile Foundation -- Not started (scaffold only)
Milestone: M28 -- Spec: Roadmap E28.1-E28.4
What exists: Bare apps/mobile Expo scaffold. No components, no navigation, no reader.
14c. Mobile Features -- Not started
Milestone: M29 -- Spec: Roadmap E29.1-E29.5
Bottom tab bar, mobile annotations, mobile Study Map, tablet adaptation -- nothing built.
15. Unresolved Scope Decisions
These two decisions from the AUDIT-AND-ROADMAP block multiple tracks:
SD-1 -- M08 vs M23/M24 (Graph Renderer)
Does M08's ConstellationView collapse into the Sigma.js Study Map? Gates Track C (scholarly features) and Track D (Study Map) scope.
SD-2 -- M06/M07 vs M25-001/002 (Interlinear Delivery)
Are interlinear/JST UIs delivered as reader components (M06/M07) or A1 plugins (M25)? Gates Track C UI and Track E (plugins). Code already exists as plugins (core.interlinear), which suggests the plugin path is the de facto answer -- but this was never formally decided. Note: core.witnesses eliminated -- witness concept removed; manuscripts are editions.
Summary: The Big Picture
What's striking: A large number of features (15+) have substantial implementations (300-1,000+ lines each) but are tracked at 0% in milestone docs. This appears to be the result of batch code generation that produced components but never ran them through formal milestone acceptance criteria or integrated them into the live app.
The gap is not code -- it's integration and validation. Most of the A1 GUI features exist as isolated components. What's missing:
- Wiring -- connecting hover cards to toolbar collision, pin actions to Pinboard, comparison entry points to ComparisonContainer
- Data hooks -- validating that TanStack Query hooks return real data from the content service
- Milestone ACs -- running through each acceptance criterion and verifying it works end-to-end
- Layout integration -- mounting these components in the actual reader layout (AppShell, MainCanvas, sidebars)
Recommended reading order for action planning:
docs/milestones/PHASE-MAP.md-- the execution plan with batch assignmentsdocs/milestones/AUDIT-AND-ROADMAP-2026-06-10.md-- the strategic auditdocs/specs/NEW-GUI-SPEC.md-- the A1 amendment (the authoritative spec)docs/specs/NEW-GUI-ROADMAP.md-- milestone-by-milestone epic breakdowns
Appendix: Action Item Triage
A. Built but not integrated
These components were fully built by batch agent sessions (to avoid merge conflicts via disjoint file ownership) but the follow-up integration PR never happened. The code exists, passes its own tests, but is not mounted in the live app or wired to the features it depends on. Each of these needs an integration PR, not more component code.
| Feature | Code location | Lines | What's needed to ship |
|---|---|---|---|
| Three-Layer Hover Cards | components/HoverCard/ | 1,070 | Mount trigger zones in ScripturePage; wire pin action to Pinboard event bus; validate data hooks return real content service data |
| Context Card Widget | components/ContextCard/ | 354 | Mount in right sidebar dock zone; wire to hover card store so it mirrors floating card content |
| Vertical Verse-Aligned Toolbar | components/VerticalToolbar/ | 311 | Mount in reader layout; wire collision avoidance with hover cards; connect Compare/Study Map buttons to their targets |
| Horizontal Bottom Toolbar | components/HorizontalToolbar/ | 226 | Mount in reader layout; wire chapter nav prev/next; verify FloatingToolbar is fully replaced |
| Pinboard Widget | components/Pinboard/ | 1,141 | Mount in right sidebar; wire pin events from hover card Layer 3; connect to Study Map sync |
| Compound Tab Comparison | components/ComparisonContainer/ | 1,050 | Wire entry points (hover card action, toolbar button, gutter indicators, command palette) |
| Verse Map | components/VerseMap/ | 350 | Mount as fixed left-edge strip in reader layout; feed annotation data from stores |
| Three-Column Minimap | components/Minimap/ | 427 | Mount as fixed right-edge strip; feed chapter/book/volume data |
| Breadcrumb Minimap Panel | components/BreadcrumbMinimap/ | 664 | Wire as flyout from TopBar breadcrumb click; feed corpus data |
| Page Gutters | components/PageGutters/ | 332 | Mount flanking scripture column; feed verse-position annotation markers |
| Infinite Scroll | hooks/useInfiniteScroll.ts | 346 | Wire into ScripturePage; validate chapter boundary loading with real content service |
| Branching History Tree | components/HistoryTree/ | 545 | Wire Cmd+Shift+K shortcut; mount as full-viewport overlay; feed navigation history |
| Command Palette (upgraded) | components/CommandPalette/ | 966 | Validate all three tiers work (fuzzy, FalkorDB, AI); wire prefix modes; validate Cmd+K |
| Pane Quick Picker | components/PaneQuickPicker/ | 412 | Mount "+" button in pane group tab bar; wire to dockview pane creation |
| Widget Dock Zones | components/WidgetDockZone.tsx | 517 | Validate drag-and-drop reordering works in both sidebars |
| Focus Mode | stores/focusMode.ts + hook | 157+ | Implement the CSS/layout changes for each focus level; wire Shift+\ and F shortcuts |
| Workspace Presets | lib/workspaces/ | 493 | Wire save/reset UI; validate session-level overrides |
| Undo Model | lib/undo.ts | 278 | Wire Cmd+Z dispatch by focused pane; connect to annotation and Study Map stores |
| Help Modal | components/HelpModal/ | 400 | Mount behind TopBar Help button; make context-aware |
| Onboarding Tour | components/OnboardingTour/ + ProductTour/ | 730 | Wire tier-1 first-visit trigger; wire tier-2 action-triggered coaching |
| Offline Storage | components/OfflineStorage/ | 232 | Validate service worker caching; mount indicator in UI |
| Corpus Filter Integration | stores/corpusFilter.ts + lib/ | 73+ | Validate all surfaces (reader, nav, Study Map, search) consume the filter |
| core.interlinear | plugins/core.interlinear/ | 297 | Wire row toggle hotkeys; validate data from useChapter; mount toolbar toggle |
| core.ai (A1 version) | plugins/core.ai/ | 545 | Wire as sidebar widget + pane; connect Cmd+Enter shortcut |
| core.commentary | plugins/core.commentary/ | 388 | Wire TanStack Query hooks to content service; determine where Resource Browser lives post-A1 |
| core.journal | plugins/core.journal/ | 502 | Wire activity event logging; validate calendar heatmap with real data |
| Study Map Undo | lib/undo.ts (shared) | -- | Connect 50-entry stack to Study Map store; wire Cmd+Z/Cmd+Shift+Z in map pane |
B. Partially built or partially implemented
These have some code but are missing significant pieces -- either key sub-features, data layers, or dependent components that were never built.
| Feature | What exists | What's missing |
|---|---|---|
| Comparison Entry Points | ComparisonContainer works | Five entry points (hover card action, toolbar button, gutter indicators, command palette, whisper suggestions) -- none are wired |
| Pane-Local Toolbars | Study Map toolbar, Tiptap bar | No unified pane-local toolbar abstraction; each pane does its own thing |
| core.notes | Plugin registration + templates | No dedicated NoteEditorPane or NoteSidebarWidget; relies on core.annotations |
| Study Map Core | 4/9 milestone issues done | Navigation-graph edge ingestion (M23-009) and 4 other issues still open |
| Command Palette to History Tree | Both components exist | Cmd+K Cmd+K escalation wiring between them unknown |
| Workspace Choreography | CSS cross-fade likely exists | Never validated; per-workspace choreography was eliminated in A1 but universal cross-fade unconfirmed |
| Delight Moments | WhisperCard, welcome-back whisper, some empty states | 10+ of the 14 spec'd moments don't exist (highlight wash, connection discovery, first-annotation glow, session fork animation, etc.) |
| Action Ring | Deleted | Component removed from codebase; functionality absorbed by Floating Toolbar |
| ELIMINATED. Witness concept removed; manuscripts are editions handled by the Translation pipeline. All code deleted. | ||
| Dark Mode | colors.ts has dark-mode maps | No theme switcher UI, no system-preference detection |
C. Not started
No code exists. These are spec'd and milestoned but untouched.
| Feature | Milestone | Blocked by |
|---|---|---|
| Study Map to Reader Integration | M24-001 | M23 completion, M17 (hover card/toolbar) |
| Pinboard to Study Map Sync | M24-002 | Pinboard integration, Study Map integration |
| Study Map Tools (minimap, search, clustering, export) | M24-005 | M23 completion |
| Study Map Accessibility (Map Outline, keyboard nav, ARIA) | M24-006 | M23 completion |
| Toolbar Customization (drag-reorder, overflow, reset) | M26-005 | Plugin ecosystem |
| Plugin Sandbox (QuickJS/WASM) | M26-001 | Core UX complete |
| Plugin Marketplace | M26-002 | Plugin sandbox |
| Subscription Gating for Plugins | M26-003 | Plugin manifest |
| Desktop / Electron Shell | M27-001 | All web tracks complete |
| Multi-Window Support | M27-002 | Electron shell |
| Mobile Foundation (Expo) | M28 | @gospelib/core package (M16-015) |
| Mobile Scripture Reader | M28-003 | Mobile foundation |
| Mobile Annotations & Notes | M29-001 | Mobile reader |
| Mobile Study Map | M29-003 | Mobile foundation |
| Tablet Adaptation | M29-005 | Mobile foundation |
Sentence Focus (Cmd+Shift+F) | M33 | Focus mode integration |
D. Deferred or questionable
These have unclear ownership, unresolved scope decisions, or are explicitly punted to "future" with no timeline.
| Feature | Issue | Why it's stuck |
|---|---|---|
| M08 ConstellationView vs Study Map | SD-1 | Unresolved scope decision. Does M08's graph UI collapse into Sigma.js Study Map? Both exist in different forms. Blocks Track C and Track D. Recommend: collapse into Study Map (the code already went that direction). |
| M06/M07 Interlinear as reader components vs M25 plugins | SD-2 | Unresolved scope decision. Code already exists as plugins (core.interlinear). Recommend: ratify the plugin path and close M06/M07 reader-component issues as superseded. Note: core.witnesses eliminated. |
| core.teach (Lesson Outline workspace) | M30+ | 40-line stub. No UI. Listed as post-v2.0. Not blocking anything. |
| core.liveshare (real-time collaboration) | M31 | No code. Yjs CRDT infra exists but liveshare is a major new capability. Post-v2.0. |
| Internationalization / RTL | M35 | Hebrew RTL exists in interlinear plugin only. No i18n framework. Post-v2.0. |
| Full Delight Polish (14 moments) | M34 | Most moments are cosmetic polish. Reasonable to defer until core integration is done. |
| M24-003 (Study Map to Link Sets) | Obsolete | Link Sets were deleted in A1. This issue should be closed. |
| M24-004 (Transient Study Map in Inspector) | Obsolete | Inspector was eliminated in A1. This issue should be closed. |
| ELIMINATED. Witness concept removed from the codebase. Manuscripts are editions handled by the Translation pipeline. M30 milestone, core.witnesses plugin, and all witness pipeline code deleted. |