3.7 KiB
id, type, title, domain, repo, repo_id, topic_slug, topic_id, status, owner, created, updated, depends_on_workplan, planning_order, planning_priority, spec_refs, state_hub_workstream_id
| id | type | title | domain | repo | repo_id | topic_slug | topic_id | status | owner | created | updated | depends_on_workplan | planning_order | planning_priority | spec_refs | state_hub_workstream_id | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CE-WP-0008 | workplan | Capture content editing & viewport scroll reliability | citation_evidence | citation-evidence | a677c189-b4e2-4f2a-9e48-faa482c277e6 | citation_evidence_mvp | 96fa8e80-9f74-40f2-84cd-644e9747b9ec | done | Bernd | 2026-06-08 | 2026-06-08 | CE-WP-0007 | 8 | high |
|
864e4661-f6d8-482e-8a44-bebc69e6b9df |
CE-WP-0008 — Capture Content Editing & Viewport Scroll
Follow-on fixes from manual Capture-mode demo use after CE-WP-0007.
User requirements (locked)
- Field values persist while typing — text, textarea, and date inputs must keep user-entered content; re-renders must not reset controlled inputs.
- Date fields hold their value — picking a date must not snap back to empty or a stale display value on blur or parent re-render.
- Viewport scroll reaches off-page evidence — selecting evidence whose
passage is not on page 1 must scroll the PDF viewer to that passage (not leave
the viewport at the document top). CE-WP-0007 T01 regressed or was incomplete
when
PdfHighlighterutils or highlight DOM were not ready on the first scroll request.
Dependency order
T01 (field value state) ── T02 (viewport scroll retry)
└─ T03 (integration tests)
T01 — Wire form field value state in FormsApp
id: CE-WP-0008-T01
priority: critical
status: done
state_hub_task_id: "b48bd06d-3ba0-4589-b6d3-5ff4a8474fb5"
Problem: FormRenderer renders controlled inputs (value={… ?? ""}) but
FormsApp never passes values / onValueChange. Every React re-render resets
typed content; date inputs snap back immediately.
Fix:
- Hold
fieldValues: Record<string, string>inFormsApp. - Pass
valuesandonValueChangethroughFormPane→FormRenderer. - Preserve values when field label/type is edited (stable field
id).
Acceptance: type in Summary, switch focus to another field, return — text remains. Set a date — value persists after blur.
T02 — Retry scroll until viewer utils and highlight are ready
id: CE-WP-0008-T02
priority: critical
status: done
depends_on: [T01]
state_hub_task_id: "68b73689-27ff-45c4-bd9f-2e0817e97b1f"
Problem: PdfSpikeViewer's scroll useEffect bails when utilsRef or the
target highlight is missing, and never retries because effect deps do not change.
Evidence on page 2+ appears to leave the viewport at the document top.
Fix:
- Extract
runScrollToHighlightJobwith rAF retries (same pattern ascenterHighlightInViewer). - Re-run pending scroll when
highlightsupdates (annotations rendered after PDF load). - Keep
lastScrollKeyRefguard so successful scrolls are not duplicated.
Acceptance: click strip evidence tied to a page-2+ passage — viewer receives
scrollToAnnotationId and scroll completes once utils are available.
T03 — Integration tests
id: CE-WP-0008-T03
priority: high
status: done
depends_on: [T01, T02]
state_hub_task_id: "fdf259a1-1789-42ca-a95f-d98ae6422509"
Happy-dom tests:
- Type text and date in capture fields; refocus; values persist.
- Unit test for scroll job retry when utils arrive late.
Acceptance: npm run test green.
Acceptance for the workplan
After CE-WP-0008:
- Capture form fields retain typed values across re-renders and focus changes.
- Date inputs keep the selected date after blur.
- Evidence selection scrolls to off-page passages instead of staying at the top.