Skip to main content

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

BadgeMeaning
DoneFully implemented and integrated
Built, not shippedCode exists (often substantial) but milestone shows 0% -- likely batch-generated, not integrated into the live app flow, or missing acceptance-criteria validation
PartialSome code exists but key pieces are missing
Not startedSpec exists, no implementation
UndocumentedCode exists with no milestone or spec coverage
Spec onlyDescribed 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):

FeatureRoadmap refNotes
core.liveshare (real-time collaborative study)M31Yjs infrastructure exists for CRDT; no liveshare UI
Dark Mode & ThemingM32colors.ts has dark-mode color maps; no theme switcher UI
Sentence Focus (Cmd+Shift+F)M33No code
Full Delight Polish (14 moments)M34Partial (whispers exist, most moments don't)
Internationalization / RTLM35Hebrew 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:

  1. Wiring -- connecting hover cards to toolbar collision, pin actions to Pinboard, comparison entry points to ComparisonContainer
  2. Data hooks -- validating that TanStack Query hooks return real data from the content service
  3. Milestone ACs -- running through each acceptance criterion and verifying it works end-to-end
  4. Layout integration -- mounting these components in the actual reader layout (AppShell, MainCanvas, sidebars)

Recommended reading order for action planning:

  1. docs/milestones/PHASE-MAP.md -- the execution plan with batch assignments
  2. docs/milestones/AUDIT-AND-ROADMAP-2026-06-10.md -- the strategic audit
  3. docs/specs/NEW-GUI-SPEC.md -- the A1 amendment (the authoritative spec)
  4. 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.

FeatureCode locationLinesWhat's needed to ship
Three-Layer Hover Cardscomponents/HoverCard/1,070Mount trigger zones in ScripturePage; wire pin action to Pinboard event bus; validate data hooks return real content service data
Context Card Widgetcomponents/ContextCard/354Mount in right sidebar dock zone; wire to hover card store so it mirrors floating card content
Vertical Verse-Aligned Toolbarcomponents/VerticalToolbar/311Mount in reader layout; wire collision avoidance with hover cards; connect Compare/Study Map buttons to their targets
Horizontal Bottom Toolbarcomponents/HorizontalToolbar/226Mount in reader layout; wire chapter nav prev/next; verify FloatingToolbar is fully replaced
Pinboard Widgetcomponents/Pinboard/1,141Mount in right sidebar; wire pin events from hover card Layer 3; connect to Study Map sync
Compound Tab Comparisoncomponents/ComparisonContainer/1,050Wire entry points (hover card action, toolbar button, gutter indicators, command palette)
Verse Mapcomponents/VerseMap/350Mount as fixed left-edge strip in reader layout; feed annotation data from stores
Three-Column Minimapcomponents/Minimap/427Mount as fixed right-edge strip; feed chapter/book/volume data
Breadcrumb Minimap Panelcomponents/BreadcrumbMinimap/664Wire as flyout from TopBar breadcrumb click; feed corpus data
Page Gutterscomponents/PageGutters/332Mount flanking scripture column; feed verse-position annotation markers
Infinite Scrollhooks/useInfiniteScroll.ts346Wire into ScripturePage; validate chapter boundary loading with real content service
Branching History Treecomponents/HistoryTree/545Wire Cmd+Shift+K shortcut; mount as full-viewport overlay; feed navigation history
Command Palette (upgraded)components/CommandPalette/966Validate all three tiers work (fuzzy, FalkorDB, AI); wire prefix modes; validate Cmd+K
Pane Quick Pickercomponents/PaneQuickPicker/412Mount "+" button in pane group tab bar; wire to dockview pane creation
Widget Dock Zonescomponents/WidgetDockZone.tsx517Validate drag-and-drop reordering works in both sidebars
Focus Modestores/focusMode.ts + hook157+Implement the CSS/layout changes for each focus level; wire Shift+\ and F shortcuts
Workspace Presetslib/workspaces/493Wire save/reset UI; validate session-level overrides
Undo Modellib/undo.ts278Wire Cmd+Z dispatch by focused pane; connect to annotation and Study Map stores
Help Modalcomponents/HelpModal/400Mount behind TopBar Help button; make context-aware
Onboarding Tourcomponents/OnboardingTour/ + ProductTour/730Wire tier-1 first-visit trigger; wire tier-2 action-triggered coaching
Offline Storagecomponents/OfflineStorage/232Validate service worker caching; mount indicator in UI
Corpus Filter Integrationstores/corpusFilter.ts + lib/73+Validate all surfaces (reader, nav, Study Map, search) consume the filter
core.interlinearplugins/core.interlinear/297Wire row toggle hotkeys; validate data from useChapter; mount toolbar toggle
core.ai (A1 version)plugins/core.ai/545Wire as sidebar widget + pane; connect Cmd+Enter shortcut
core.commentaryplugins/core.commentary/388Wire TanStack Query hooks to content service; determine where Resource Browser lives post-A1
core.journalplugins/core.journal/502Wire activity event logging; validate calendar heatmap with real data
Study Map Undolib/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.

FeatureWhat existsWhat's missing
Comparison Entry PointsComparisonContainer worksFive entry points (hover card action, toolbar button, gutter indicators, command palette, whisper suggestions) -- none are wired
Pane-Local ToolbarsStudy Map toolbar, Tiptap barNo unified pane-local toolbar abstraction; each pane does its own thing
core.notesPlugin registration + templatesNo dedicated NoteEditorPane or NoteSidebarWidget; relies on core.annotations
Study Map Core4/9 milestone issues doneNavigation-graph edge ingestion (M23-009) and 4 other issues still open
Command Palette to History TreeBoth components existCmd+K Cmd+K escalation wiring between them unknown
Workspace ChoreographyCSS cross-fade likely existsNever validated; per-workspace choreography was eliminated in A1 but universal cross-fade unconfirmed
Delight MomentsWhisperCard, welcome-back whisper, some empty states10+ of the 14 spec'd moments don't exist (highlight wash, connection discovery, first-annotation glow, session fork animation, etc.)
Action RingDeletedComponent removed from codebase; functionality absorbed by Floating Toolbar
core.witnesses UIManuscriptViewerPane, WitnessHoverTabELIMINATED. Witness concept removed; manuscripts are editions handled by the Translation pipeline. All code deleted.
Dark Modecolors.ts has dark-mode mapsNo theme switcher UI, no system-preference detection

C. Not started

No code exists. These are spec'd and milestoned but untouched.

FeatureMilestoneBlocked by
Study Map to Reader IntegrationM24-001M23 completion, M17 (hover card/toolbar)
Pinboard to Study Map SyncM24-002Pinboard integration, Study Map integration
Study Map Tools (minimap, search, clustering, export)M24-005M23 completion
Study Map Accessibility (Map Outline, keyboard nav, ARIA)M24-006M23 completion
Toolbar Customization (drag-reorder, overflow, reset)M26-005Plugin ecosystem
Plugin Sandbox (QuickJS/WASM)M26-001Core UX complete
Plugin MarketplaceM26-002Plugin sandbox
Subscription Gating for PluginsM26-003Plugin manifest
Desktop / Electron ShellM27-001All web tracks complete
Multi-Window SupportM27-002Electron shell
Mobile Foundation (Expo)M28@gospelib/core package (M16-015)
Mobile Scripture ReaderM28-003Mobile foundation
Mobile Annotations & NotesM29-001Mobile reader
Mobile Study MapM29-003Mobile foundation
Tablet AdaptationM29-005Mobile foundation
Sentence Focus (Cmd+Shift+F)M33Focus mode integration

D. Deferred or questionable

These have unclear ownership, unresolved scope decisions, or are explicitly punted to "future" with no timeline.

FeatureIssueWhy it's stuck
M08 ConstellationView vs Study MapSD-1Unresolved 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 pluginsSD-2Unresolved 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)M31No code. Yjs CRDT infra exists but liveshare is a major new capability. Post-v2.0.
Internationalization / RTLM35Hebrew RTL exists in interlinear plugin only. No i18n framework. Post-v2.0.
Full Delight Polish (14 moments)M34Most moments are cosmetic polish. Reasonable to defer until core integration is done.
M24-003 (Study Map to Link Sets)ObsoleteLink Sets were deleted in A1. This issue should be closed.
M24-004 (Transient Study Map in Inspector)ObsoleteInspector was eliminated in A1. This issue should be closed.
Witness Data AcquisitionM30 prerequisiteELIMINATED. 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.