Make rendering failure-safe and project editing reproducible
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# GrowthLapse 0.3.0 – zuverlässige Nachbearbeitung
|
||||
|
||||
## Änderungen
|
||||
|
||||
- Jeder Render erhält einen eigenen Arbeitsbereich. Bestehende Zwischenclips werden nur gelesen/kopiert. Abbruch und Renderfehler entfernen ausschließlich den neuen Arbeitsbereich.
|
||||
- Video und Projektdatei werden erst nach erfolgreichem Rendern übernommen. Dateiaustausch erfolgt per Rename; bei einem nachfolgenden Fehler wird zurückgerollt. Scheitert auch die Wiederherstellung, bleiben Sicherungen erhalten und ihr Pfad wird angezeigt.
|
||||
- Ausgabeziel, Cache-Pfade und Projektabmessungen bleiben beim Neurender und bei einem neuen Ausgabeziel konsistent. Das ursprüngliche Projekt bleibt beim Export unter anderem Namen erhalten.
|
||||
- Cache-Löschung verlangt eine Eigentumsmarkierung und passende Verzeichniszuordnung; Symlinks werden abgelehnt. Historische unmarkierte Caches werden nicht automatisch entfernt.
|
||||
- Projektschema 2 speichert Render-Einstellungen. Alte Projekte bleiben lesbar; fehlende Einstellungen werden mit einem Hinweis kenntlich gemacht. Lokal gewählte FFmpeg-/FFprobe-Pfade werden beim Laden erhalten.
|
||||
- Geänderte Quelldateien werden anhand von Größe/Änderungsdatum erkannt, erneut geprüft und neu gerendert. Segmentgrenzen werden an eine geänderte Quelldauer angepasst.
|
||||
- Geänderte Reihenfolge invalidiert verschobene Clips, sodass eingebrannte Nummern korrekt erneuert werden.
|
||||
- „Änderungen neu rendern“ erhält manuelle Ausschnitte. „Segmente neu planen“ wendet Länge, Offset und automatische Segmentwahl auf alle vorhandenen Clips an.
|
||||
- Bildanalysen erhalten den Abbruch des aufrufenden Render-Tasks. FFmpeg-Aufrufe besitzen einen eigenen Abbruchzustand und lesen ihre Ausgabe bis EOF.
|
||||
- Fehlende Encoder/Stabilisierungsfilter führen vor der Verarbeitung zu einer verständlichen Fehlermeldung.
|
||||
- Leere/inkonsistente Projekte, ungültige Clipdaten und versehentlich gewählte Quellvideos als neue Ausgabe werden abgefangen.
|
||||
- Nachbearbeitung ist während eines Renders gesperrt. Die Oberfläche zeigt die erwartete Ergebnisdauer, bietet eine Ergebnisvorschau und macht den Clip-Editor scrollbar.
|
||||
- Versionierte Bundle-Metadaten liegen unter `Resources/Info.plist`; die historische App in `dist/` wird nicht als aktuelle Version ausgegeben.
|
||||
|
||||
## Verifikation
|
||||
|
||||
`bash scripts/integration-tests.sh` kompiliert die produktiven Render-Klassen ohne XCTest und prüft mit synthetischen Videos:
|
||||
|
||||
1. Neutrale Startwerte, Einstellungs-Roundtrip und ältere JSON-Einstellungen.
|
||||
2. Vollständige Ausgabe kurzlebiger Prozesse einschließlich Unicode sowie Prozessabbruch.
|
||||
3. Abbruchweiterleitung an eine Bildanalyse.
|
||||
4. Zwei-Clip-Render mit Originalauflösung und entfernter Tonspur.
|
||||
5. Ablehnung von Cache-Symlinks und versehentlichem Überschreiben von Quellen.
|
||||
6. Erhalt der bisherigen Dateien bei ungültigem Ausgabeziel.
|
||||
7. Neues Ausgabeziel, Cache-Wiederverwendung, Projektdatei und erneutes Laden.
|
||||
8. Erhalt von Video/Projekt bei simuliertem FFmpeg-Fehler in der Endausgabe.
|
||||
9. Wiederherstellung nach einem Fehler beim zweiten Dateiaustausch.
|
||||
10. Erhalt manueller Ausschnitte, explizite Neuplanung und Invalidierung bei Sortierung.
|
||||
11. Überblendung mit gemischten Quellen mit/ohne Audio; gemessene Gesamtdauer 1,8 Sekunden.
|
||||
12. Abbruch während laufender Endausgabe ohne Verlust des alten Videos/Caches.
|
||||
13. Erneute Metadatenanalyse und gültige Segmentgrenzen nach Änderung einer Quelle.
|
||||
14. Einzelclip mit Stabilisierung und Vision-Fallback bei fehlendem Gesicht.
|
||||
15. Schutz fremder Verzeichnisse, Ablehnung leerer Projekte, sofortiger Abbruch und kontrollierte Cache-Löschung.
|
||||
|
||||
Diese Integrationstests sind auf dem lokalen Mac bestanden. Die bestehenden XCTest-Dateien benötigen weiterhin vollständiges Xcode; ihre Einstellungsfälle werden zusätzlich im Integrationstest geprüft. Release-Build und lokale Ad-hoc-Signierung funktionieren. Projektladen, Neurender, das korrigierte Clip-Layout und Wiedergabe in der neuen Ergebnisvorschau wurden zusätzlich über die native Oberfläche mit Testdateien geprüft.
|
||||
|
||||
## Verbleibende Grenzen
|
||||
|
||||
- Die Übernahme mehrerer Dateien ist nicht gegen einen Stromausfall zwischen zwei Dateiaustauschen abgesichert.
|
||||
- Während des Renders wird zusätzlicher Speicherplatz für neue Clips und Sicherungen benötigt.
|
||||
- Cache-Erkennung nutzt Größe und Änderungsdatum, keinen vollständigen Inhaltshash.
|
||||
- Reale Gesichtsaufnahmen, HDR-Farben und sehr große Clipmengen benötigen weiterhin Qualitäts-/Belastungstests. Synthetische Bilder belegen keine Qualität der Gesichtsausrichtung.
|
||||
- Foto-Morphing bleibt deaktiviert. Notarisierung, universelle Builds und Lizenzentscheidung sind nicht Teil dieser Überarbeitung.
|
||||
|
||||
Für isolierte Oberflächentests kann `GROWTHLAPSE_SETTINGS_PATH` auf einen absoluten Pfad zu einer separaten Einstellungsdatei gesetzt werden.
|
||||
Reference in New Issue
Block a user