Travailler frame par frame sur un projet de 740 frames est impraticable.
Maintenant un calque satisfaisant sur une frame peut être propagé sur
toutes les frames de sa séquence en 1 clic.
Backend:
- db.propagateLayerToSequence(sourceLayerId, startFrame, endFrame)
* Récupère TOUTES les frames cibles en 1 query
* Récupère TOUS les layers existants en 1 query (inArray)
* Sépare en deux groupes: à insérer / à mettre à jour
* Batch INSERT par chunks de 100 lignes (1 query par chunk)
* Updates en parallèle par chunks de 20 (Promise.all)
* Skip les layers verrouillés
* Copie sourceVariantId, transform, opacity, blendMode, visible, maskUrl, name
- Endpoint tRPC layers.propagateToSequence(layerId)
* Auto-détecte la séquence à laquelle appartient la frame source
* Fallback sur toutes les frames si pas de séquence trouvée
* Optional startFrame/endFrame pour override manuel
Performance:
- Avant: 1 query SELECT + 1 INSERT par frame cible
→ 740 INSERTs × ~200ms (latence TiDB Cloud US) = ~150s
- Après: 1 SELECT batch + 1-8 INSERT batch + parallèles updates
→ 736 layers créés en 3.05s (60x plus rapide)
Frontend (CompositionStudio):
- Bouton "Appliquer à la séquence" (violet, prominent) dans
les actions de l'inspecteur
- Confirm dialog avant exécution (warn que ça remplace les layers
existants non verrouillés)
- Toast détaillé après: "X créés, Y mis à jour, Z verrouillés"
- Loading spinner pendant l'opération
- Tooltip explicatif sur le bouton
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>