[Image references 5/6] Stepwise reveal #1828

Closed
opened 2026-08-28 09:44:31 +00:00 by brenno · 0 comments
Owner

Parent: #1801
Depends on: #1826; planned after #1827 to avoid overlapping editor work
Contract: docs/design/IMAGE_CALLOUTS.md, frozen revision 4 (§5, §7, §9 and §12.2)

Outcome

Reveal a bullet and all of its image-reference targets atomically during a presentation, using one generic step plan rather than another slide-type-specific presenter state.

Scope

  • Introduce a headless PresentationStepPlan and migrate the existing timeline stepping to it without changing timeline behaviour.
  • Implement reveal: steps for image references; absent or all continues to show every group.
  • Open the slide with title and image visible, then reveal one bullet plus all targets in its reference group per next action.
  • Back hides the last revealed group before leaving the slide; re-entry resets to the documented initial state.
  • Route keyboard navigation, presenter controls, audience window, remote control, jumps and auto-advance through the same plan.
  • Flatten reveal in static PDF, PPTX, ODP, LaTeX and other non-interactive exports.
  • Keep unrevealed groups and their hidden descriptions out of the accessibility tree.
  • Announce the newly visible bullet and target count through one polite live region in HTML and the existing Flutter announcement path.
  • Preserve only reveal: as the durable fact; do not write a derived Marp fragment marker.

Acceptance evidence

  • Forward, backward, re-entry, direct jump, remote and auto-advance tests use the same expected step sequence.
  • Timeline regression tests prove the generalisation did not change existing behaviour.
  • Multiple targets reveal atomically with their bullet.
  • Static exports contain every bullet and target exactly once.
  • DOM and Flutter semantics prove unrevealed groups are absent, then become reachable and are announced at the correct step.
  • Two-client collaboration and reconnect keep reveal configuration, but presentation progress remains session-local unless the existing presenter contract explicitly synchronises it.
  • The user guide, architecture/source map, localisation and changelog are updated in this slice.

Boundaries

  • Do not persist presentation progress.
  • Do not write both reveal: and Marp */1) markers.
  • Do not create a second timeline-style step counter alongside PresentationStepPlan.
  • Arrow rendering remains the final slice; this issue works with every image-reference presentation already available.

Use small commits for the generic plan, timeline migration, image-reference integration, accessibility, tests/localisation and documentation.

Parent: #1801 Depends on: #1826; planned after #1827 to avoid overlapping editor work Contract: `docs/design/IMAGE_CALLOUTS.md`, frozen revision 4 (§5, §7, §9 and §12.2) ## Outcome Reveal a bullet and all of its image-reference targets atomically during a presentation, using one generic step plan rather than another slide-type-specific presenter state. ## Scope - Introduce a headless `PresentationStepPlan` and migrate the existing timeline stepping to it without changing timeline behaviour. - Implement `reveal: steps` for image references; absent or `all` continues to show every group. - Open the slide with title and image visible, then reveal one bullet plus all targets in its reference group per next action. - Back hides the last revealed group before leaving the slide; re-entry resets to the documented initial state. - Route keyboard navigation, presenter controls, audience window, remote control, jumps and auto-advance through the same plan. - Flatten reveal in static PDF, PPTX, ODP, LaTeX and other non-interactive exports. - Keep unrevealed groups and their hidden descriptions out of the accessibility tree. - Announce the newly visible bullet and target count through one polite live region in HTML and the existing Flutter announcement path. - Preserve only `reveal:` as the durable fact; do not write a derived Marp fragment marker. ## Acceptance evidence - Forward, backward, re-entry, direct jump, remote and auto-advance tests use the same expected step sequence. - Timeline regression tests prove the generalisation did not change existing behaviour. - Multiple targets reveal atomically with their bullet. - Static exports contain every bullet and target exactly once. - DOM and Flutter semantics prove unrevealed groups are absent, then become reachable and are announced at the correct step. - Two-client collaboration and reconnect keep reveal configuration, but presentation progress remains session-local unless the existing presenter contract explicitly synchronises it. - The user guide, architecture/source map, localisation and changelog are updated in this slice. ## Boundaries - Do not persist presentation progress. - Do not write both `reveal:` and Marp `*`/`1)` markers. - Do not create a second timeline-style step counter alongside `PresentationStepPlan`. - Arrow rendering remains the final slice; this issue works with every image-reference presentation already available. Use small commits for the generic plan, timeline migration, image-reference integration, accessibility, tests/localisation and documentation.
brenno 2026-08-29 06:11:05 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#1828
No description provided.