# 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.