diff --git a/.planning/MILESTONES.md b/.planning/MILESTONES.md index e04dcae6..a2f4d8ad 100644 --- a/.planning/MILESTONES.md +++ b/.planning/MILESTONES.md @@ -1,5 +1,20 @@ # Milestones: PaperForge Lite Release Hardening +## v1.7 Context-Aware Dashboard (Shipped: 2026-05-04) + +**Phases completed:** 4 phases, 6 plans, 14 tasks + +**Key accomplishments:** + +- Pure CSS dashboard components for the PaperForge plugin -- loading skeleton, metric card, lifecycle stepper, health matrix, maturity gauge, and bar chart -- all themed via Obsidian CSS variables +- 5 new DOM render methods on PaperForgeStatusView: loading skeleton utilities, enhanced metric cards, 6-stage lifecycle stepper, 2x2 health matrix, 6-segment maturity gauge, and lifecycle-proportional bar chart -- all using createEl() DOM API with CSS classes from Plan 27-01 +- Index loading utilities (_loadIndex, _getCachedIndex, _findEntry, _filterByDomain) on PaperForgeStatusView + CSS Sections 13-14 for mode-aware dashboard content area and header context +- Mode-aware dashboard routing with _detectAndSwitch, _switchMode, debounced event subscriptions, mode header rendering, and lifecycle cleanup in PaperForgeStatusView +- Full per-paper dashboard rendering pipeline: lifecycle stepper, health matrix, maturity gauge, next-step recommendation card, contextual actions, and paper metadata header +- Domain-level aggregated dashboard: metric cards (papers/fulltext-ready/deep-read), lifecycle bar chart, and health overview grid with healthy/unhealthy counts for PDF/OCR/Note/Asset dimensions + +--- + ## v1.6 AI-Ready Literature Asset Foundation (Shipped: 2026-05-04) **Phases completed:** 6 phases, 15 plans, 40 tasks diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index b0445564..d9cf94bb 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -1,7 +1,7 @@ # Roadmap: PaperForge -**Current milestone:** v1.7 — Planned -**Phase numbering:** Continuous. v1.6 ended at Phase 26. +**Current milestone:** v1.8 — Planned +**Phase numbering:** Continuous. v1.7 ended at Phase 30. --- @@ -16,7 +16,7 @@ - ✅ **v1.6 AI-Ready Literature Asset Foundation** — Phases 22-26 (shipped 2026-05-04) - ✅ **v1.7 Context-Aware Dashboard** — Phases 27-30 (shipped 2026-05-04) -*Archive: `.planning/milestones/v1.6-ROADMAP.md`* +*Archive: `.planning/milestones/`* --- @@ -25,102 +25,33 @@
✅ v1.6 AI-Ready Literature Asset Foundation (Phases 22-26) — SHIPPED 2026-05-04 -- [x] Phase 22: Configuration Truth & Compatibility (3/3 plans) — completed 2026-05-03 -- [x] Phase 23: Canonical Asset Index & Safe Rebuilds (3/3 plans) — completed 2026-05-03 -- [x] Phase 24: Derived Lifecycle, Health & Maturity (2/2 plans) — completed 2026-05-04 -- [x] Phase 25: Surface Convergence, Doctor & Repair (3/3 plans) — completed 2026-05-04 -- [x] Phase 26: Traceable AI Context Packs (3/3 plans) — completed 2026-05-04 +- [x] Phase 22: Configuration Truth & Compatibility (3/3) +- [x] Phase 23: Canonical Asset Index & Safe Rebuilds (3/3) +- [x] Phase 24: Derived Lifecycle, Health & Maturity (2/2) +- [x] Phase 25: Surface Convergence, Doctor & Repair (3/3) +- [x] Phase 26: Traceable AI Context Packs (3/3)
-### 📋 v1.7 Context-Aware Dashboard (Planned) +
+✅ v1.7 Context-Aware Dashboard (Phases 27-30) — SHIPPED 2026-05-04 -**Milestone Goal:** Make PaperForge's plugin dashboard context-aware—showing different views based on the active file (Base, paper card, or global). Uses pure CSS/DOM components: metric cards, lifecycle stepper, health matrix, maturity gauge, bar charts. +- [x] Phase 27: Component Library (2/2) +- [x] Phase 28: Dashboard Shell & Context Detection (2/2) +- [x] Phase 29: Per-Paper View (1/1) +- [x] Phase 30: Collection View (1/1) -- [x] **Phase 27: Component Library** — Pure CSS/DOM visualization building blocks using Obsidian design tokens (2 plans planned) -- [x] **Phase 28: Dashboard Shell & Context Detection** — Auto-detect active file type and switch to correct dashboard mode (completed 2026-05-04) -- [x] **Phase 29: Per-Paper View** — Lifecycle stepper, health matrix, maturity gauge, and next-step guidance for individual papers (completed 2026-05-04) -- [x] **Phase 30: Collection View** — Domain-level lifecycle/health aggregation for Base files - ---- - -## Phase Details - -### Phase 27: Component Library -**Goal**: All dashboard visualizations render as pure CSS/DOM components using Obsidian CSS variables, with no npm dependencies. -**Depends on**: Phase 26 (canonical index exists, dashboard ItemView exists) -**Requirements**: COMP-01, COMP-02, COMP-03 -**Success Criteria** (what must be TRUE): - 1. Metric card component renders key counts (papers, domains, formal notes) using Obsidian CSS variables, adapts to light/dark theme, and shows a loading skeleton while data is pending. - 2. Lifecycle stepper component renders stage markers (imported → fulltext_ready → deep_read_done → ai_context_ready) with the current stage highlighted and completed stages visually marked, responsive across sidebar and full-width breakpoints. - 3. Health matrix component renders a 4-dimension grid (PDF, OCR, Note, Asset) with color-coded cells (green/yellow/red) and dimension labels visible at all breakpoint sizes. - 4. Maturity gauge renders as a segmented progress bar (levels 1-6) with level labels on hover/tap and blocking checks listed when level is below 6. - 5. Bar chart component renders lifecycle distribution from numeric category data as horizontal CSS bars with proportional widths, category labels, and smooth CSS transitions on data change. -**Plans**: 2 plans -Plans: -- [x] 27-01-PLAN.md — Component CSS: all 5 components' styling in styles.css (loading skeleton, enhanced metric card, lifecycle stepper, health matrix, maturity gauge, bar chart) -- [x] 27-02-PLAN.md — Component JS: all 5 render methods on PaperForgeStatusView (skeleton utility, enhanced _renderStats, lifecycle stepper, health matrix, maturity gauge, bar chart) -**UI hint**: yes - -### Phase 28: Dashboard Shell & Context Detection -**Goal**: Dashboard auto-detects the active file type and switches to the correct view mode (per-paper, collection, or global) without manual intervention, and auto-refreshes when the canonical index or active file changes. -**Depends on**: Phase 27 (components must exist to render into each mode) -**Requirements**: DASH-01, DASH-02, DASH-03, DASH-04, REFR-01, REFR-02 -**Success Criteria** (what must be TRUE): - 1. User opens a `.base` file → dashboard header shows the domain name and the view switches to collection mode, without any manual button click. - 2. User opens a paper card (`.md` with `zotero_key` in frontmatter) → dashboard header shows the paper title and the view switches to per-paper mode, without any manual button click. - 3. User opens any other file or no file → dashboard shows the existing global library overview (metric cards, OCR pipeline, Quick Actions). - 4. User switches active file via tab click or Ctrl+Tab → dashboard transitions to the correct mode within observable time (< 500ms), with the previous mode's data released from memory. - 5. When `formal-library.json` is modified externally (by sync/ocr/repair workers) → dashboard detects the change within 2 seconds and refreshes the current view with updated data, preserving the current mode. -**Plans**: 2 plans -Plans: -- [x] 28-01-PLAN.md — Index utilities (load/cache/lookup) + CSS for mode-aware shell -- [x] 28-02-PLAN.md — Context detection, mode switching, event subscriptions, auto-refresh, mode-aware header -**UI hint**: yes - -### Phase 29: Per-Paper View -**Goal**: User can see the full lifecycle, health, maturity, and next-step guidance for any individual paper by opening its note and viewing the PaperForge dashboard. -**Depends on**: Phase 28 (context detection must route to per-paper mode) -**Requirements**: PAPER-01, PAPER-02, PAPER-03, PAPER-04 -**Success Criteria** (what must be TRUE): - 1. Lifecycle stepper shows the paper's current lifecycle stage highlighted (e.g., `fulltext_ready`), all earlier stages marked as completed, and later stages dimmed as pending — stage names use human-readable labels (e.g., "Fulltext Ready" not "fulltext_ready"). - 2. Health matrix shows four color-coded cells for this paper: PDF health (present/missing), OCR health (done/pending/failed), Note health (formal note exists/absent), and Asset health (all paths valid/drift detected) — hovering any cell shows the specific check that determined its color. - 3. Maturity gauge shows the current level (1-6) as filled segments with the numeric level displayed, and below the gauge lists which checks are currently blocking advancement to the next level. - 4. Next-step panel recommends exactly one concrete action with a one-line explanation of why (e.g., "Run OCR — fulltext is missing but PDF is present"). If the paper is already ai_context_ready, the panel shows "Ready" with no action needed. - 5. Next-step panel includes a clickable action trigger that either executes the recommended CLI command (sync/ocr) via the existing action runner, or copies the zotero_key for `/pf-deep`, or confirms readiness with a "Copy Context" shortcut. -**Plans**: 1 plan -**UI hint**: yes -Plans: -- [x] 29-01-PLAN.md — Per-paper view wiring: metadata header, lifecycle stepper, health matrix, maturity gauge, next-step card, contextual actions - -### Phase 30: Collection View -**Goal**: User can see aggregated domain-level lifecycle and health statistics when viewing any Base file in the PaperForge dashboard. -**Depends on**: Phase 28 (context detection must route to collection mode) -**Requirements**: COLL-01, COLL-02, COLL-03 -**Success Criteria** (what must be TRUE): - 1. User opens a domain Base file (e.g., "骨科" or "运动医学") → dashboard shows that domain's paper count and lifecycle distribution numbers sourced from the canonical index. - 2. Aggregated health summary shows four dimension counts (PDF healthy/broken, OCR done/pending/failed, Note present/absent, Asset valid/drifted) aggregated across all papers in the domain, with counts visibly updating when switching to a different domain Base. - 3. Lifecycle distribution bar chart renders the domain's papers across lifecycle stages (imported, indexed, pdf_ready, fulltext_ready, figure_ready, deep_read_done, ai_context_ready) as proportional horizontal bars with count labels, using the bar chart component from Phase 27. - 4. Collection view updates automatically when the canonical index changes and when the user switches between different domain `.base` files, preserving the collection mode throughout. -**Plans**: TBD -**UI hint**: yes - ---- +
## Progress -| Phase | Milestone | Plans Complete | Status | Completed | -|-------|-----------|----------------|--------|-----------| -| 22. Configuration Truth & Compatibility | v1.6 | 3/3 | Complete | 2026-05-03 | -| 23. Canonical Asset Index & Safe Rebuilds | v1.6 | 3/3 | Complete | 2026-05-03 | -| 24. Derived Lifecycle, Health & Maturity | v1.6 | 2/2 | Complete | 2026-05-04 | -| 25. Surface Convergence, Doctor & Repair | v1.6 | 3/3 | Complete | 2026-05-04 | -| 26. Traceable AI Context Packs | v1.6 | 3/3 | Complete | 2026-05-04 | -| 27. Component Library | v1.7 | 2/2 | Complete | 2026-05-04 | -| 28. Dashboard Shell & Context Detection | v1.7 | 2/2 | Complete | 2026-05-04 | -| 29. Per-Paper View | v1.7 | 1/1 | Complete | 2026-05-04 | -| 30. Collection View | v1.7 | 1/1 | Complete | 2026-05-04 | +| Phase | Plans | Status | Completed | +|-------|-------|--------|-----------| +| 27. Component Library | 2/2 | Complete | 2026-05-04 | +| 28. Dashboard Shell & Context Detection | 2/2 | Complete | 2026-05-04 | +| 29. Per-Paper View | 1/1 | Complete | 2026-05-04 | +| 30. Collection View | 1/1 | Complete | 2026-05-04 | --- -*Roadmap updated: 2026-05-04 — v1.7 Context-Aware Dashboard initialized* +*Roadmap updated: 2026-05-04 — v1.7 milestone completed* diff --git a/.planning/STATE.md b/.planning/STATE.md index 79aae732..5b8d7bf1 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -2,9 +2,9 @@ gsd_state_version: 1.0 milestone: v1.7 milestone_name: Context-Aware Dashboard -status: Complete +status: v1.7 milestone complete stopped_at: Completed 30-01-PLAN.md -last_updated: "2026-05-04T14:02:52.377Z" +last_updated: "2026-05-04T14:22:05.370Z" progress: total_phases: 4 completed_phases: 4 diff --git a/.planning/milestones/v1.7-REQUIREMENTS.md b/.planning/milestones/v1.7-REQUIREMENTS.md new file mode 100644 index 00000000..0baa312d --- /dev/null +++ b/.planning/milestones/v1.7-REQUIREMENTS.md @@ -0,0 +1,95 @@ +# Requirements Archive: v1.7 Context-Aware Dashboard + +**Archived:** 2026-05-04 +**Status:** SHIPPED + +For current requirements, see `.planning/REQUIREMENTS.md`. + +--- + +# Requirements: PaperForge + +**Defined:** 2026-05-04 +**Core Value:** Researchers always know what papers they have, what state those papers are in, and whether each paper is reliably usable by AI with traceable fulltext, figures, notes, and source links. + +## v1 Requirements + +Requirements for milestone v1.7: Context-Aware Dashboard. + +### Context Detection + +- [x] **DASH-01**: User opens a `.base` file — plugin dashboard shows collection-level domain statistics. +- [x] **DASH-02**: User opens a paper card (`.md` with `zotero_key` in frontmatter) — plugin dashboard shows per-paper lifecycle, health, maturity, and next-step. +- [x] **DASH-03**: User opens any other file or no file — plugin dashboard shows the existing global library overview. +- [x] **DASH-04**: User switches active file — dashboard auto-refreshes to the correct mode without manual intervention. + +### Per-Paper Dashboard + +- [x] **PAPER-01**: User sees a lifecycle stepper showing the current state and which stages are complete. +- [x] **PAPER-02**: User sees a health matrix (PDF/OCR/Note/Asset dimensions) with color-coded status. +- [x] **PAPER-03**: User sees maturity level (1-6) as a segmented progress bar with blocking checks listed. +- [x] **PAPER-04**: User sees a recommended next step (sync/ocr/pf-deep/ready) with an action trigger. + +### Collection Dashboard + +- [x] **COLL-01**: User sees domain-level paper count and lifecycle distribution from canonical index. +- [x] **COLL-02**: User sees aggregated health overview for the domain (PDF/OCR/Note/Asset counts). +- [x] **COLL-03**: User sees a lifecycle distribution bar chart for the domain. + +### Component Library + +- [x] **COMP-01**: All dashboard visualizations use pure CSS/DOM (metric cards, lifecycle stepper, health matrix, maturity gauge, bar charts). No npm dependencies. +- [x] **COMP-02**: Components use Obsidian CSS variables for consistent theming. +- [x] **COMP-03**: Components have loading states, CSS transitions, and responsive breakpoints. + +### Auto-Refresh + +- [x] **REFR-01**: Dashboard refreshes when the canonical index file changes. +- [x] **REFR-02**: Dashboard refreshes when the active file changes. + +## v2 Requirements + +Deferred to future milestone. + +### LLMWiki + +- **LLM-01**: User can explore a cross-paper concept network built from AI atoms and canonical index entries. +- **LLM-02**: User can navigate concept pages with source traceability back to originating papers. + +## Out of Scope + +| Feature | Reason | +|---------|--------| +| LLMWiki concept network | v1.8 — depends on dashboard being stable first | +| External chart libraries (Chart.js, D3) | Pure CSS/DOM keeps plugin self-contained | +| Plugin auto-update | Deferred to Obsidian Community Plugins listing | + +## Traceability + +| Requirement | Phase | Status | +|-------------|-------|--------| +| COMP-01 | Phase 27 | Complete | +| COMP-02 | Phase 27 | Complete | +| COMP-03 | Phase 27 | Complete | +| DASH-01 | Phase 28 | Complete | +| DASH-02 | Phase 28 | Complete | +| DASH-03 | Phase 28 | Complete | +| DASH-04 | Phase 28 | Complete | +| REFR-01 | Phase 28 | Complete | +| REFR-02 | Phase 28 | Complete | +| PAPER-01 | Phase 29 | Complete | +| PAPER-02 | Phase 29 | Complete | +| PAPER-03 | Phase 29 | Complete | +| PAPER-04 | Phase 29 | Complete | +| COLL-01 | Phase 30 | Complete | +| COLL-02 | Phase 30 | Complete | +| COLL-03 | Phase 30 | Complete | + +**Coverage:** +- v1 requirements: 16 total +- Completed: 16 +- Pending: 0 ✓ + +--- +*Requirements defined: 2026-05-04* +*Last updated: 2026-05-04 after v1.7 requirements definition* diff --git a/.planning/milestones/v1.7-ROADMAP.md b/.planning/milestones/v1.7-ROADMAP.md new file mode 100644 index 00000000..b0445564 --- /dev/null +++ b/.planning/milestones/v1.7-ROADMAP.md @@ -0,0 +1,126 @@ +# Roadmap: PaperForge + +**Current milestone:** v1.7 — Planned +**Phase numbering:** Continuous. v1.6 ended at Phase 26. + +--- + +## Milestones + +- ✅ **v1.0 MVP** — Phases 1-5 (shipped 2026-04-23) +- ✅ **v1.1 Sandbox Onboarding** — Phases 6-8 (shipped 2026-04-24) +- ✅ **v1.2 Systematization & Cohesion** — Phases 9-10 (shipped 2026-04-24) +- ✅ **v1.3 Path Normalization & Architecture Hardening** — Phases 11-12 (shipped 2026-04-24) +- ✅ **v1.4 Code Health & UX Hardening** — Phases 13-19 (shipped 2026-04-28) +- ✅ **v1.5 Obsidian Plugin Setup Integration** — Phases 20-21 (shipped 2026-04-29) +- ✅ **v1.6 AI-Ready Literature Asset Foundation** — Phases 22-26 (shipped 2026-05-04) +- ✅ **v1.7 Context-Aware Dashboard** — Phases 27-30 (shipped 2026-05-04) + +*Archive: `.planning/milestones/v1.6-ROADMAP.md`* + +--- + +## Phases + +
+✅ v1.6 AI-Ready Literature Asset Foundation (Phases 22-26) — SHIPPED 2026-05-04 + +- [x] Phase 22: Configuration Truth & Compatibility (3/3 plans) — completed 2026-05-03 +- [x] Phase 23: Canonical Asset Index & Safe Rebuilds (3/3 plans) — completed 2026-05-03 +- [x] Phase 24: Derived Lifecycle, Health & Maturity (2/2 plans) — completed 2026-05-04 +- [x] Phase 25: Surface Convergence, Doctor & Repair (3/3 plans) — completed 2026-05-04 +- [x] Phase 26: Traceable AI Context Packs (3/3 plans) — completed 2026-05-04 + +
+ +### 📋 v1.7 Context-Aware Dashboard (Planned) + +**Milestone Goal:** Make PaperForge's plugin dashboard context-aware—showing different views based on the active file (Base, paper card, or global). Uses pure CSS/DOM components: metric cards, lifecycle stepper, health matrix, maturity gauge, bar charts. + +- [x] **Phase 27: Component Library** — Pure CSS/DOM visualization building blocks using Obsidian design tokens (2 plans planned) +- [x] **Phase 28: Dashboard Shell & Context Detection** — Auto-detect active file type and switch to correct dashboard mode (completed 2026-05-04) +- [x] **Phase 29: Per-Paper View** — Lifecycle stepper, health matrix, maturity gauge, and next-step guidance for individual papers (completed 2026-05-04) +- [x] **Phase 30: Collection View** — Domain-level lifecycle/health aggregation for Base files + +--- + +## Phase Details + +### Phase 27: Component Library +**Goal**: All dashboard visualizations render as pure CSS/DOM components using Obsidian CSS variables, with no npm dependencies. +**Depends on**: Phase 26 (canonical index exists, dashboard ItemView exists) +**Requirements**: COMP-01, COMP-02, COMP-03 +**Success Criteria** (what must be TRUE): + 1. Metric card component renders key counts (papers, domains, formal notes) using Obsidian CSS variables, adapts to light/dark theme, and shows a loading skeleton while data is pending. + 2. Lifecycle stepper component renders stage markers (imported → fulltext_ready → deep_read_done → ai_context_ready) with the current stage highlighted and completed stages visually marked, responsive across sidebar and full-width breakpoints. + 3. Health matrix component renders a 4-dimension grid (PDF, OCR, Note, Asset) with color-coded cells (green/yellow/red) and dimension labels visible at all breakpoint sizes. + 4. Maturity gauge renders as a segmented progress bar (levels 1-6) with level labels on hover/tap and blocking checks listed when level is below 6. + 5. Bar chart component renders lifecycle distribution from numeric category data as horizontal CSS bars with proportional widths, category labels, and smooth CSS transitions on data change. +**Plans**: 2 plans +Plans: +- [x] 27-01-PLAN.md — Component CSS: all 5 components' styling in styles.css (loading skeleton, enhanced metric card, lifecycle stepper, health matrix, maturity gauge, bar chart) +- [x] 27-02-PLAN.md — Component JS: all 5 render methods on PaperForgeStatusView (skeleton utility, enhanced _renderStats, lifecycle stepper, health matrix, maturity gauge, bar chart) +**UI hint**: yes + +### Phase 28: Dashboard Shell & Context Detection +**Goal**: Dashboard auto-detects the active file type and switches to the correct view mode (per-paper, collection, or global) without manual intervention, and auto-refreshes when the canonical index or active file changes. +**Depends on**: Phase 27 (components must exist to render into each mode) +**Requirements**: DASH-01, DASH-02, DASH-03, DASH-04, REFR-01, REFR-02 +**Success Criteria** (what must be TRUE): + 1. User opens a `.base` file → dashboard header shows the domain name and the view switches to collection mode, without any manual button click. + 2. User opens a paper card (`.md` with `zotero_key` in frontmatter) → dashboard header shows the paper title and the view switches to per-paper mode, without any manual button click. + 3. User opens any other file or no file → dashboard shows the existing global library overview (metric cards, OCR pipeline, Quick Actions). + 4. User switches active file via tab click or Ctrl+Tab → dashboard transitions to the correct mode within observable time (< 500ms), with the previous mode's data released from memory. + 5. When `formal-library.json` is modified externally (by sync/ocr/repair workers) → dashboard detects the change within 2 seconds and refreshes the current view with updated data, preserving the current mode. +**Plans**: 2 plans +Plans: +- [x] 28-01-PLAN.md — Index utilities (load/cache/lookup) + CSS for mode-aware shell +- [x] 28-02-PLAN.md — Context detection, mode switching, event subscriptions, auto-refresh, mode-aware header +**UI hint**: yes + +### Phase 29: Per-Paper View +**Goal**: User can see the full lifecycle, health, maturity, and next-step guidance for any individual paper by opening its note and viewing the PaperForge dashboard. +**Depends on**: Phase 28 (context detection must route to per-paper mode) +**Requirements**: PAPER-01, PAPER-02, PAPER-03, PAPER-04 +**Success Criteria** (what must be TRUE): + 1. Lifecycle stepper shows the paper's current lifecycle stage highlighted (e.g., `fulltext_ready`), all earlier stages marked as completed, and later stages dimmed as pending — stage names use human-readable labels (e.g., "Fulltext Ready" not "fulltext_ready"). + 2. Health matrix shows four color-coded cells for this paper: PDF health (present/missing), OCR health (done/pending/failed), Note health (formal note exists/absent), and Asset health (all paths valid/drift detected) — hovering any cell shows the specific check that determined its color. + 3. Maturity gauge shows the current level (1-6) as filled segments with the numeric level displayed, and below the gauge lists which checks are currently blocking advancement to the next level. + 4. Next-step panel recommends exactly one concrete action with a one-line explanation of why (e.g., "Run OCR — fulltext is missing but PDF is present"). If the paper is already ai_context_ready, the panel shows "Ready" with no action needed. + 5. Next-step panel includes a clickable action trigger that either executes the recommended CLI command (sync/ocr) via the existing action runner, or copies the zotero_key for `/pf-deep`, or confirms readiness with a "Copy Context" shortcut. +**Plans**: 1 plan +**UI hint**: yes +Plans: +- [x] 29-01-PLAN.md — Per-paper view wiring: metadata header, lifecycle stepper, health matrix, maturity gauge, next-step card, contextual actions + +### Phase 30: Collection View +**Goal**: User can see aggregated domain-level lifecycle and health statistics when viewing any Base file in the PaperForge dashboard. +**Depends on**: Phase 28 (context detection must route to collection mode) +**Requirements**: COLL-01, COLL-02, COLL-03 +**Success Criteria** (what must be TRUE): + 1. User opens a domain Base file (e.g., "骨科" or "运动医学") → dashboard shows that domain's paper count and lifecycle distribution numbers sourced from the canonical index. + 2. Aggregated health summary shows four dimension counts (PDF healthy/broken, OCR done/pending/failed, Note present/absent, Asset valid/drifted) aggregated across all papers in the domain, with counts visibly updating when switching to a different domain Base. + 3. Lifecycle distribution bar chart renders the domain's papers across lifecycle stages (imported, indexed, pdf_ready, fulltext_ready, figure_ready, deep_read_done, ai_context_ready) as proportional horizontal bars with count labels, using the bar chart component from Phase 27. + 4. Collection view updates automatically when the canonical index changes and when the user switches between different domain `.base` files, preserving the collection mode throughout. +**Plans**: TBD +**UI hint**: yes + +--- + +## Progress + +| Phase | Milestone | Plans Complete | Status | Completed | +|-------|-----------|----------------|--------|-----------| +| 22. Configuration Truth & Compatibility | v1.6 | 3/3 | Complete | 2026-05-03 | +| 23. Canonical Asset Index & Safe Rebuilds | v1.6 | 3/3 | Complete | 2026-05-03 | +| 24. Derived Lifecycle, Health & Maturity | v1.6 | 2/2 | Complete | 2026-05-04 | +| 25. Surface Convergence, Doctor & Repair | v1.6 | 3/3 | Complete | 2026-05-04 | +| 26. Traceable AI Context Packs | v1.6 | 3/3 | Complete | 2026-05-04 | +| 27. Component Library | v1.7 | 2/2 | Complete | 2026-05-04 | +| 28. Dashboard Shell & Context Detection | v1.7 | 2/2 | Complete | 2026-05-04 | +| 29. Per-Paper View | v1.7 | 1/1 | Complete | 2026-05-04 | +| 30. Collection View | v1.7 | 1/1 | Complete | 2026-05-04 | + +--- + +*Roadmap updated: 2026-05-04 — v1.7 Context-Aware Dashboard initialized*