fix(presentatie): editor volgt de presenter naar de eind-dia (#1111) #1116

Merged
brenno merged 1 commit from fix/present-exit-restore-slide-1111 into main 2026-08-02 08:43:54 +00:00
Owner

Wat

Na het verlaten van een presentatie (Escape) sprong de editor terug naar de dia
waar de presentatie startte, niet naar de dia die op dat moment in beeld was.
Wie tijdens het presenteren op een bepaalde dia stopt, doet dat meestal met een
reden (daar iets nakijken of aanpassen) en wil op díe dia verder. De editor
selecteert nu de dia waar je stopte.

Closes #1111.

Hoe

  • lib/widgets/presentation/fullscreen_presenter.dartpresent / show /
    showDualScreen geven nu Future<String?> terug: het bron-dia-id van de
    dia die bij het afsluiten in beeld was. _exit() popt de route met dat id.
    Via het id en niet de rauwe render-index, want een lange bevinding klapt uit
    tot meerdere render-pagina's met hetzelfde id (expandFindingsForRender) —
    render-index ≠ bron-dia-index.
  • lib/widgets/presentation/parts/presenter_navigation.dart — de eind-id-
    berekening staat top-level (_exitSlideId) i.p.v. in de state-klasse, zodat
    _FullscreenPresenterState niet onder zijn klasseplafond (3311) uit groeit.
  • lib/widgets/shell/shell_actions_present.dart — de launcher leest het id uit
    presenting.then(...) en mapt het terug op de bron-dia (select). Een leeg
    deck of een tijdens het presenteren verwijderde dia (id niet meer te vinden)
    laat de selectie ongemoeid.

Toetsen

Drie regressietests in test/shell_present_and_close_test.dart, alle drie eerst
rood tegen de ónherstelde code (+0 -3), daarna groen:

  1. basis — presenteer vanaf dia 1, blader naar dia 3, Escape → editor op dia 3.
  2. render ≠ bron — een overgeslagen dia zit wél in het deck maar niet in de
    presentatie, dus render-index 1 = bron-index 2; de id-mapping hoort naar de
    bron-dia te wijzen, niet naar de overgeslagen dia.
  3. findings-uitklap — een lange bevinding presenteert als meerdere render-
    pagina's; stoppen op pagina twee mapt terug op de éne bron-bevinding.

Bewaker

Bewust overgeslagen: deze wijziging raakt het bestandsformaat, de opslag, een
afhankelijkheid, uitgaand verkeer noch een sleutel. De eindpositie is een
vluchtige UI-selectie — er komt niets extra in de .md. De docs-aanpassing
beschrijft alleen het herstelde gedrag, geen nieuwe belofte die de gebruiker
vastzet.

Poort

make check-full groen op de rebasede tak (op verse origin/main): format,
analyze (--fatal-infos), conventies (bestands- en klasseplafonds binnen de
ceilings), 8000+ tests met coverage boven de vloer, gitleaks + trufflehog
(secrets) en semgrep (SAST). DAST/ZAP niet gedraaid (niet ingericht in deze
repo; de wijziging raakt geen geserveerd oppervlak).

## Wat Na het verlaten van een presentatie (Escape) sprong de editor terug naar de dia waar de presentatie *startte*, niet naar de dia die op dat moment in beeld was. Wie tijdens het presenteren op een bepaalde dia stopt, doet dat meestal met een reden (daar iets nakijken of aanpassen) en wil op díe dia verder. De editor selecteert nu de dia waar je stopte. Closes #1111. ## Hoe - `lib/widgets/presentation/fullscreen_presenter.dart` — `present` / `show` / `showDualScreen` geven nu `Future<String?>` terug: het **bron-dia-id** van de dia die bij het afsluiten in beeld was. `_exit()` popt de route met dat id. Via het id en niet de rauwe render-index, want een lange bevinding klapt uit tot meerdere render-pagina's met hetzelfde id (`expandFindingsForRender`) — render-index ≠ bron-dia-index. - `lib/widgets/presentation/parts/presenter_navigation.dart` — de eind-id- berekening staat top-level (`_exitSlideId`) i.p.v. in de state-klasse, zodat `_FullscreenPresenterState` niet onder zijn klasseplafond (3311) uit groeit. - `lib/widgets/shell/shell_actions_present.dart` — de launcher leest het id uit `presenting.then(...)` en mapt het terug op de bron-dia (`select`). Een leeg deck of een tijdens het presenteren verwijderde dia (id niet meer te vinden) laat de selectie ongemoeid. ## Toetsen Drie regressietests in `test/shell_present_and_close_test.dart`, alle drie eerst rood tegen de ónherstelde code (`+0 -3`), daarna groen: 1. **basis** — presenteer vanaf dia 1, blader naar dia 3, Escape → editor op dia 3. 2. **render ≠ bron** — een overgeslagen dia zit wél in het deck maar niet in de presentatie, dus render-index 1 = bron-index 2; de id-mapping hoort naar de bron-dia te wijzen, niet naar de overgeslagen dia. 3. **findings-uitklap** — een lange bevinding presenteert als meerdere render- pagina's; stoppen op pagina twee mapt terug op de éne bron-bevinding. ## Bewaker Bewust overgeslagen: deze wijziging raakt het bestandsformaat, de opslag, een afhankelijkheid, uitgaand verkeer noch een sleutel. De eindpositie is een vluchtige UI-selectie — er komt niets extra in de `.md`. De docs-aanpassing beschrijft alleen het herstelde gedrag, geen nieuwe belofte die de gebruiker vastzet. ## Poort `make check-full` groen op de rebasede tak (op verse `origin/main`): format, analyze (`--fatal-infos`), conventies (bestands- en klasseplafonds binnen de ceilings), 8000+ tests met coverage boven de vloer, gitleaks + trufflehog (secrets) en semgrep (SAST). DAST/ZAP niet gedraaid (niet ingericht in deze repo; de wijziging raakt geen geserveerd oppervlak).
fix(presentatie): editor volgt de presenter naar de eind-dia (#1111)
All checks were successful
scans / scans (pull_request) Successful in 3m45s
f5c199d796
Na Escape sprong de editor terug naar de dia waar de presentatie startte in
plaats van naar de dia die op dat moment in beeld was. De presenter geeft nu
zijn eindpositie terug via het bron-dia-id (niet de render-index — findings
klappen uit tot meerdere render-pagina's met hetzelfde id), en de launcher
selecteert die bron-dia. Een leeg deck of een tijdens het presenteren
verwijderde dia laat de selectie ongemoeid.

Route-resultaat doorgetrokken door present/show/showDualScreen; de eind-id-
berekening staat top-level (_exitSlideId) zodat _FullscreenPresenterState niet
onder het klasseplafond uit groeit. Regressietests dekken de basis, de
render≠bron-offset (overgeslagen dia) en de findings-uitklap.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno merged commit 103389140f into main 2026-08-02 08:43:54 +00:00
Sign in to join this conversation.
No description provided.