Commit graph

8 commits

Author SHA1 Message Date
Ubuntu
d18424a416 feat(M2): Manipulation spatiale des calques personnage
L'utilisateur peut désormais déplacer, redimensionner, rotater et
flipper le personnage généré sans devoir tout régénérer.

DB:
- Nouveau champ transform JSON sur frameVariants
- Format: {x, y, scale, rotation, flipH, flipV} avec coords relatives

Backend (sharp):
- compositeLayers applique transform avant le blend:
  * scale: resize layer (peut être >100% ou <100%)
  * rotation: sharp.rotate avec fond transparent
  * flipH/flipV: flop/flip
  * x/y: offset en pourcentage de la base (centré + delta)
- Gestion intelligente des layers qui dépassent: extract crop
  (sharp interdit top/left négatifs et inputs plus grands que la base)
- compositing.composeFrame récupère le transform de la variant
  character active automatiquement
- Nouveau endpoint frameVariants.updateTransform

Frontend (LayerManipulator):
- Composant overlay avec bounding box pointillée + 8 handles
- Handles coins = scale, handle haut = rotation, area centrale = move
- CSS transform live (translate/scale/rotate/scaleX(-1) pour flip)
- Toolbar flottante: flip H/V, position/scale/rotation affichés en live
- Reset button quand transformé
- Bouton "Recomposer" déclenche composeFrame avec le nouveau transform
- Save backend automatique au release de souris

ViewportPanel:
- Bouton "Manipuler" dans toolbar (visible uniquement mode composite)
- Active LayerManipulator overlay, mutuellement exclusif avec Annoter/Loupe
- Désactivé si pas de variant character actif (toast warn)

Workflow:
1. Mode composite dans viewport
2. Click "Manipuler" → handles apparaissent
3. Drag pour déplacer / corners pour scale / handle haut pour rotation
4. Sauvegarde auto au release (en DB)
5. Click "Recomposer" → sharp regenère avec transform appliqué
6. Nouvelle variante composite créée (Module 1)
7. La galerie M1 montre l'avant/après

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 07:06:26 +00:00
Ubuntu
ac327206e2 fix: format d'image 16:9 + redirect intelligent après login
Format ratio (60):
- OpenAI gpt-image-1: choix automatique de size (1024x1024 / 1536x1024 /
  1024x1536) selon ratio cible le plus proche
- Crop sharp post-génération pour matcher EXACTEMENT le ratio source
- segmentationService passe les dimensions du projet (width/height)
  à regenerateBackground et regenerateCharacter
- Routes generation.* récupèrent project.width/height depuis DB
- Testé: frame 25 (854x480) -> bg généré en 854x480 exact

Redirect bug (61):
- DashboardLayout: navigate("/login") déplacé du render vers useEffect
  (anti-pattern React fix)
- main.tsx redirectToLoginIfUnauthorized: préserve l'URL d'origine
  dans ?return=...
- Login.tsx onSuccess: redirige vers ?return URL au lieu de "/"
- Plus de retour à l'accueil après refresh ou opération

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 06:17:47 +00:00
Ubuntu
0e964dcec2 feat: pipeline complet - annotation, compositing réel, auto-compose, drag-drop layers
Phase D - Drag-drop layers réordonnance:
- @dnd-kit/core + sortable + utilities installés
- LayersPanel réécrit avec SortableContext + useSortable
- Endpoint layers.reorder + db.reorderLayers
- Drag handle via GripVertical, optimistic UI update

Phase B - Compositing dual (sharp serveur + Canvas client):
- sharp 0.34.5 + vips-dev + libvips installés dans Dockerfile
- compositeLayers() réécrit: téléchargement frames, blend pixel par pixel,
  masques avec feathering, opacity, blend modes (over/multiply/screen/overlay)
- Endpoints compositing.composeFrame + compositing.composeSequence
- Composant CompositePreview: rendu client temps réel via <img> + mix-blend-mode
- Mode composite du ViewportPanel utilise CompositePreview pour preview live

Phase A - Outil d'annotation viewport:
- Composant AnnotationCanvas: brush/rectangle/lasso/eraser
- Taille pinceau ajustable, undo stack, clear all, save vers S3
- Raccourcis clavier B/R/Y/E + Ctrl+Z
- Bouton "Annoter" dans toolbar ViewportPanel
- Endpoint frames.saveMask, intégration mode original

Phase C - Pipeline auto-compose réel:
- inpaintBackgrounds: appelle vraiment segmentationService.inpaintBackground
- regenerateBackgrounds: vraie regen + propagation aux frames de la séquence
- regenerateCharacters: utilise character sheets + masks
- compositeAll: compose toutes les frames avec bg+fg via sharp
- fullAutoCompose chaîne tout: detect → analyze → segment → inpaint → regen → composite
- Tracking via generationJobs (progress %)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 05:19:07 +00:00
Ubuntu
c1606ad4c9 feat: migration complète Manus -> auto-hébergé (MinIO + Gemini)
Infrastructure:
- MinIO déployé en local pour le stockage S3 (docker-compose)
- Storage proxy réécrit: sert les fichiers depuis MinIO en streaming
  (plus de 307 redirect vers CDN externe)
- Legacy /manus-storage/ redirige vers /storage/

LLM & Image Generation:
- LLM: Gemini uniquement (suppression du fallback Forge)
- Image generation: Gemini Imagen direct (suppression Forge GenerateImage)
- llmConfig simplifié, un seul provider

Nettoyage Manus:
- Modules Forge stubbés (dataApi, heartbeat, map, notification, voiceTranscription)
- ENV simplifié (suppression forgeApiUrl, forgeApiKey)
- Analytics Manus supprimées du HTML
- systemRouter simplifié

Migration données:
- 750 fichiers migrés de Forge S3 vers MinIO (69.8 MB)
- URLs DB mises à jour: /manus-storage/ -> /storage/
- Script de migration inclus (scripts/migrate-to-minio.mjs)

Performance:
- Frame load: 500ms -> 62ms (8x plus rapide)
- Plus aucune dépendance réseau transatlantique pour le stockage

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-21 04:27:48 +00:00
Ubuntu
51bb69eb88 feat: panneau Génération IA avec regénération fond/personnage
- Nouvel onglet "Génération IA" dans le workspace avec 2 boutons:
  * Regénérer l'arrière-plan (prompt + style)
  * Redessiner le personnage (prompt + sélecteur de character sheet)
- 3 endpoints tRPC: generation.regenerateBackground,
  generation.regenerateCharacter, generation.inpaintBackground
- Fix URLs relatives -> signed URLs S3 absolues pour l'API Forge
- Résultat affiché en preview dans le panneau
- Testé: génération cyberpunk sur frame 200 -> PNG 1344x768 OK

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-21 02:17:12 +00:00
Manus
20e034cd7c 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
Manus
87f507802a 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
Manus
60d7d01c4e Checkpoint: RetroToon Studio v1.0 - Application professionnelle de recomposition d'animation. Inclut : thème blueprint architectural, schéma DB complet (8 tables), timeline NLE multipistes, segmentation IA (SAM 2), assistant opérateur autonome avec LLM, moteur de regénération IA, système Character Sheet, administration IA modulaire, mode test/simulation, 22 tests passants, 0 erreur TypeScript. 2026-05-19 23:38:28 +00:00