retrotoon-studio/server
Ubuntu 6a875ad0d5 feat(M3): Édition par zone - inpainting localisé via masque
L'outil d'annotation existant ne servait qu'à créer un masque global.
Maintenant chaque masque peut déclencher un inpainting IA qui
modifie UNIQUEMENT la zone sélectionnée.

Backend:
- convertMaskForOpenAI(): convertit notre format (blanc=édit/noir=préserve)
  vers format OpenAI (alpha=0=édit/opaque=préserve)
- Auto-redimensionne le mask aux dims de l'image source
- generateImage() accepte maintenant un paramètre maskUrl
- OpenAI images.edits utilise le param "mask" + champ "image" (singulier)
  pour le mode inpainting
- Nouveau endpoint generation.inpaintZone(frameId, maskUrl, prompt, sourceType)
- sourceType: original / bg (regen actif) / fg (perso actif) / composite
- Crée une nouvelle variante du type approprié (Module 1)
- Synchronise les champs legacy

Frontend (AnnotationCanvas):
- Nouveau bouton "Inpainter zone" dans la toolbar
- Form dropdown avec sélecteur de source (original/composite/bg/fg)
  et prompt textarea
- handleInpaint: upload du masque + appel inpaintZone + new variant
- Sauve masque (bouton existant renommé "Sauver masque") séparé de l'inpainting
- AnnotationCanvas reçoit projectId + frameIndex pour pouvoir appeler les routes

Workflow utilisateur:
1. Mode "Annoter" dans le viewport (sur frame originale)
2. Dessine au pinceau/rectangle/lasso la zone à modifier
3. Click "Inpainter zone"
4. Choisit source (original/composite/etc.) + écrit le prompt
5. Click "Lancer inpainting"
6. OpenAI génère uniquement la zone masquée
7. Nouvelle variante créée et visible dans la galerie M1

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 06:48:21 +00:00
..
_core feat(M3): Édition par zone - inpainting localisé via masque 2026-05-21 06:48:21 +00:00
assistantOperator.ts feat: pipeline complet - annotation, compositing réel, auto-compose, drag-drop layers 2026-05-21 05:19:07 +00:00
auth.logout.test.ts fix: audit complet et pipeline fonctionnel RetroToon Studio 2026-05-21 01:37:08 +00:00
db.ts feat(M1): Bibliothèque de versions non-destructive 2026-05-21 06:35:45 +00:00
ffmpegLocal.ts fix: audit complet et pipeline fonctionnel RetroToon Studio 2026-05-21 01:37:08 +00:00
gemini.test.ts feat: Import vidéo robuste + Multi-LLM Gemini + NLE Workspace complet 2026-05-20 01:51:58 +00:00
keyboardShortcuts.test.ts Checkpoint: Refactoring complet du système de raccourcis clavier : remplacement du hook useKeyboardShortcuts par un ShortcutsContext React partagé. Le ViewportPanel et le ShortcutSettings partagent désormais le même état via un Provider unique. Les listeners sont automatiquement désactivés pendant l'enregistrement d'un nouveau raccourci pour éviter les conflits. Les modifications sont immédiatement reflétées dans les tooltips et le listener actif. 47 tests passants, zéro erreur TypeScript. 2026-05-20 00:37:46 +00:00
llmConfig.ts feat: migration complète Manus -> auto-hébergé (MinIO + Gemini) 2026-05-21 04:27:48 +00:00
routers.test.ts fix: audit complet et pipeline fonctionnel RetroToon Studio 2026-05-21 01:37:08 +00:00
routers.ts feat(M3): Édition par zone - inpainting localisé via masque 2026-05-21 06:48:21 +00:00
segmentationService.ts fix: format d'image 16:9 + redirect intelligent après login 2026-05-21 06:17:47 +00:00
servicesConfig.test.ts Checkpoint: Intégration complète du module servicesConfig : les pipelines FFmpeg (extraction, audio, export) et SAM 2 (segmentation, propagation) lisent la configuration admin et basculent entre mode simulé et service externe. Stratégie de génération LoRA/IP-Adapter avec sélection automatique basée sur modelType du personnage. Contraintes ControlNet/pose intégrées dans le prompt engineering. Cache invalidé automatiquement après sauvegarde admin. 41 tests passants. 2026-05-20 00:15:37 +00:00
servicesConfig.ts Checkpoint: Intégration complète du module servicesConfig : les pipelines FFmpeg (extraction, audio, export) et SAM 2 (segmentation, propagation) lisent la configuration admin et basculent entre mode simulé et service externe. Stratégie de génération LoRA/IP-Adapter avec sélection automatique basée sur modelType du personnage. Contraintes ControlNet/pose intégrées dans le prompt engineering. Cache invalidé automatiquement après sauvegarde admin. 41 tests passants. 2026-05-20 00:15:37 +00:00
storage.ts feat: migration complète Manus -> auto-hébergé (MinIO + Gemini) 2026-05-21 04:27:48 +00:00
uploadRoute.ts feat: migration complète Manus -> auto-hébergé (MinIO + Gemini) 2026-05-21 04:27:48 +00:00
videoProcessor.test.ts Checkpoint: RetroToon Studio v4 - Ajout de l'algorithme de détection de cuts basé sur chi-squared histogramme (hard cuts + dissolves), export vidéo avec bouton fonctionnel dans le workspace, suppression de projet avec cascade complète, compositing amélioré avec alpha blending et propagation temporelle des masques avec drift detection, utilisation effective du maskUrl dans l'inpainting. 34 tests vitest passants, 0 erreur TypeScript. 2026-05-20 00:04:26 +00:00
videoProcessor.ts feat: migration complète Manus -> auto-hébergé (MinIO + Gemini) 2026-05-21 04:27:48 +00:00