Skip to content

fix(livre): verrou entre renumérotation des notes et exports (#30)#55

Merged
cliodeck merged 1 commit into
mainfrom
fix/30-renumber-export-lock
Jul 24, 2026
Merged

fix(livre): verrou entre renumérotation des notes et exports (#30)#55
cliodeck merged 1 commit into
mainfrom
fix/30-renumber-export-lock

Conversation

@inactinique

Copy link
Copy Markdown
Collaborator

Résumé

La renumérotation des notes d'un livre écrit les chapitres modifiés un par un (EditorPanel.handleRenumberFootnotes), et les exports Word/PDF assemblent le manuscrit en lisant ces mêmes fichiers sur disque, sans aucune coordination. Un export déclenché pendant la boucle assemblait silencieusement un mélange de chapitres renumérotés et non renumérotés (#30 — fenêtre étroite mais réelle, le rollback existant ne protégeant que les échecs d'écriture de la boucle elle-même).

Correctif

  • Flag renumbering + setRenumbering dans manuscriptStore — documenté comme verrou.
  • handleRenumberFootnotes (branche livre) le pose pour toute la durée de l'opération, avec remise à zéro en finally ; réentrance bloquée.
  • WordExportModal et PDFExportModal refusent de lancer l'export tant que le verrou est posé, avec un message explicite (book.renumberInProgress, fr/en).
  • Le bouton de renumérotation de la barre d'outils se désactive pendant l'opération.

Direction inverse (renumérotation lancée pendant un export en cours) : fenêtre encore plus étroite, non couverte ici — un flag exporting symétrique pourrait suivre si besoin.

Vérification

  • Tests src/renderer/src/components/Export : 11/11 verts.
  • npm run build vert.

Closes #30

🤖 Generated with Claude Code

La renumérotation écrit les chapitres modifiés un par un sur le disque,
sans verrou ; les exports (Word/PDF) assemblent le manuscrit en lisant
ces mêmes fichiers, sans coordination. Un export lancé pendant la boucle
produisait silencieusement un manuscrit mi-renuméroté.

Verrou `renumbering` dans manuscriptStore : posé pendant toute
l'opération (finally garanti), les modales d'export refusent de partir
tant qu'il est actif (message explicite, clés i18n fr/en), le bouton de
renumérotation se désactive (pas de réentrance).

Closes #30

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@cliodeck
cliodeck merged commit 3c1512a into main Jul 24, 2026
1 of 2 checks passed
cliodeck added a commit that referenced this pull request Jul 24, 2026
fix(i18n): clé renumberInProgress manquante en de (suite de #55)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Book export can race with in-progress footnote renumbering, producing a partially-renumbered manuscript

2 participants