Skip to content

fix: fiabilité des sauvegardes, export des prises de doublage, perf - #59

Merged
DZTic merged 1 commit into
mainfrom
fix/reliability-export-takes-perf
Jul 2, 2026
Merged

fix: fiabilité des sauvegardes, export des prises de doublage, perf#59
DZTic merged 1 commit into
mainfrom
fix/reliability-export-takes-perf

Conversation

@DZTic

@DZTic DZTic commented Jul 2, 2026

Copy link
Copy Markdown
Owner

Résumé

Audit complet de l'app suivi de correctifs, classés par priorité.

Fiabilité / perte de données

  • Migration des prises WAV de %TEMP% vers <projet>_recordings à l'enregistrement du projet (elles pouvaient être purgées par Windows entre-temps).
  • Confirmation avant de perdre des modifications non enregistrées (fermeture de la fenêtre, Nouveau projet, Ouvrir un projet).
  • Sauvegarde du .rsp atomique (fichier .tmp puis substitution) — un crash en pleine écriture ne corrompt plus le projet.
  • Menu Versions : nom du projet affiché par sauvegarde (elles étaient toutes mélangées) et rechargement de la vidéo associée à la restauration.

Fonctionnel

  • Les prises de doublage actives sont désormais incluses dans l'export vidéo (adelay + amix, gain de la piste Voix du mixeur, apad pour ne plus tronquer l'audio à la fin de la dernière prise) — c'était la promesse du modèle de données, jamais implémentée côté export.
  • Import SRT : accepte aussi le point comme séparateur des millisecondes (certains outils l'utilisent au lieu de la virgule) — les temps ne retombent plus silencieusement à 0.
  • Export SRT/VTT : arrondi correct des millisecondes.
  • Le combo FPS reflète le FPS du projet ouvert (restait figé sur 25).
  • Les blocs verrouillés ne bougent/se suppriment plus via Ctrl+flèches et Suppr (seule la souris respectait le verrou).
  • Seek clavier en pause : l'horloge est figée sur la cible (plus de retour arrière transitoire).

Performance

  • HistoryPanel et BlockEditorPanel coalescent leurs rafraîchissements (jusqu'à 60/s pendant un drag) et les diffèrent quand masqués — BlockEditorPanel faisait des File.Exists disque sur le thread UI.
  • RhythmoBandControl : suppression des allocations par frame dans la boucle de rendu.

Test plan

  • dotnet build RhythmoSync.Desktop.sln — succès, 0 avertissement
  • dotnet test src/RhythmoSync.Core.Tests — 102/102 (dont 3 nouveaux tests couvrant l'import SRT à point et la sauvegarde atomique)
  • Vérification manuelle en app (export vidéo avec prises, sauvegarde/fermeture avec modifications en attente)

🤖 Generated with Claude Code

Correctifs issus d'un audit complet de l'app :

Fiabilité / perte de données :
- migration des prises WAV de %TEMP% vers <projet>_recordings à
  l'enregistrement du projet (elles pouvaient être purgées par Windows)
- confirmation avant de perdre des modifications non enregistrées
  (fermeture de la fenêtre, Nouveau projet, Ouvrir un projet)
- sauvegarde du .rsp atomique (fichier .tmp puis substitution)
- menu Versions : nom du projet affiché par sauvegarde (elles étaient
  toutes mélangées) et rechargement de la vidéo associée à la restauration

Fonctionnel :
- les prises de doublage actives sont désormais incluses dans l'export
  vidéo (adelay + amix, gain de la piste Voix du mixeur, apad pour ne
  plus tronquer l'audio à la fin de la dernière prise)
- import SRT : accepte aussi le point comme séparateur des millisecondes
  (certains outils l'utilisent au lieu de la virgule) — les temps ne
  retombent plus silencieusement à 0
- export SRT/VTT : arrondi correct des millisecondes (troncature binaire
  pouvait décaler d'1 ms)
- le combo FPS reflète le FPS du projet ouvert (restait figé sur 25)
- les blocs verrouillés ne bougent/se suppriment plus via Ctrl+flèches
  et Suppr (seule la souris respectait le verrou)
- seek clavier en pause : l'horloge est figée sur la cible (plus de
  retour arrière transitoire pendant le seek asynchrone)

Performance :
- HistoryPanel et BlockEditorPanel coalescent leurs rafraîchissements
  (jusqu'à 60/s pendant un drag) et les diffèrent quand masqués —
  BlockEditorPanel faisait des File.Exists disque sur le thread UI
- RhythmoBandControl : suppression des allocations par frame dans la
  boucle de rendu (tableau de graduations, HashSet de virtualisation)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@DZTic
DZTic merged commit 24f57d7 into main Jul 2, 2026
1 check passed
@DZTic
DZTic deleted the fix/reliability-export-takes-perf branch July 2, 2026 08:26
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.

1 participant