fix(import): opslaan na import laat deck niet onterecht vuil #1473

Merged
brenno merged 1 commit from fix/import-save-dirty-flag into main 2026-08-12 19:00:58 +00:00
Owner

Samenvatting

Na een import bleef de "niet opgeslagen"-indicator aan staan, zelfs na opslaan via Ctrl+S. Pas een tweede Ctrl+S ruimde hem op.

Oorzaak: saveAs en _saveToPath gebruikten identical(state.deck, deck) om te detecteren of de gebruiker tijdens de async opslag typte. Die check is te streng — elke state-vervanging die geen inhoudswijziging is (bv. een copyWith voor themeProfile, applyProvenance, of een sidecar-update) maakt hem false, waarna het deck onterecht vuil blijft.

Fix: naast de identity-check wordt nu ook de undo-stapel-lengte vergeleken. Is die niet gegroeid, dan was er geen echte bewerking en mag het deck schoon worden gemarkeerd.

Testplan

  • make check groen (8250 tests)
  • Nieuwe test: een state-vervanging zonder user-edit (geen undo-stap) laat het deck schoon na save
  • Bestaande race-tests nog groen (typen tijdens save blijft vuil)
  • Gebruiker herimporteert een .key-bestand, slaat op, en controleert dat de indicator direct verdwijnt

Generated with Devin

## Samenvatting Na een import bleef de "niet opgeslagen"-indicator aan staan, zelfs na opslaan via Ctrl+S. Pas een tweede Ctrl+S ruimde hem op. Oorzaak: `saveAs` en `_saveToPath` gebruikten `identical(state.deck, deck)` om te detecteren of de gebruiker tijdens de async opslag typte. Die check is te streng — elke state-vervanging die geen inhoudswijziging is (bv. een `copyWith` voor `themeProfile`, `applyProvenance`, of een sidecar-update) maakt hem `false`, waarna het deck onterecht vuil blijft. Fix: naast de identity-check wordt nu ook de undo-stapel-lengte vergeleken. Is die niet gegroeid, dan was er geen echte bewerking en mag het deck schoon worden gemarkeerd. #### Testplan - [x] `make check` groen (8250 tests) - [x] Nieuwe test: een state-vervanging zonder user-edit (geen undo-stap) laat het deck schoon na save - [x] Bestaande race-tests nog groen (typen tijdens save blijft vuil) - [ ] Gebruiker herimporteert een .key-bestand, slaat op, en controleert dat de indicator direct verdwijnt Generated with [Devin](https://devin.ai)
fix(import): opslaan na import laat deck niet onterecht vuil
All checks were successful
scans / scans (pull_request) Successful in 1m43s
static-gate / static-gate (pull_request) Successful in 5m59s
1619abc5a5
saveAs en _saveToPath gebruikten `identical(state.deck, deck)` om te
detecteren of de gebruiker tijdens de async opslag typte. Die check is
te streng: elke state-vervanging die geen inhoudswijziging is (bv. een
copyWith voor themeProfile, applyProvenance, of een sidecar-update)
maakt hem false, waarna het deck onterecht vuil blijft en de
"niet opgeslagen"-indicator aan staat tot een tweede Ctrl+S.

Nu wordt naast de identity-check ook de undo-stapel-lengte vergeleken:
is die niet gegroeid, dan was er geen echte bewerking en mag het deck
schoon worden gemarkeerd (#1473).

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno merged commit e31af5985f into main 2026-08-12 19:00:58 +00:00
Sign in to join this conversation.
No description provided.