Version 1.0.0 (Build 2), README nachgezogen

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ShKCZzkdZhym6mHuPqXQAT
main
Samuel Zielke 2 weeks ago
parent c7fcd670cc
commit 9ba821ecb2

@ -41,12 +41,15 @@ Somos-Pendant-9x16-v3-DE.mp4
└──── Projekt ────┘ └Fmt┘└Ver┘└Spr┘ └──── Projekt ────┘ └Fmt┘└Ver┘└Spr┘
``` ```
Für die Zielversion wird ausschließlich das Format-Segment ersetzt: `9x16` → `4x5`. Alle anderen Segmente bleiben zeichengleich erhalten. Für die Zielversion wird ausschließlich das Format-Segment ersetzt: `9x16` → `4x5`. Alle anderen Zeichen bleiben gleich erhalten.
**Schreibweisen:** Das Format darf groß oder klein (`9x16`, `9X16`, `9×16`) und mit `-`, `_` oder Leerzeichen abgetrennt sein; die Trenner bleiben in der Zielfassung erhalten (`Kampagne_9X16_v2` → `Kampagne_4x5_v2`). Ein Rest hinter dem Format ist nicht nötig.
**Kein Format im Namen:** Die App zeigt das schon beim Reinziehen und bietet „4x5 anhängen“ an. Dann wird der ganze Dateistamm zum Projekt, und `4x5` wird mit dem Trenner angehängt, den der Name schon benutzt (`Sommerfest Teaser.mov` → `Sommerfest Teaser/Sommerfest Teaser 4x5.mp4`). Ohne diese Wahl wird die Datei übersprungen.
**Abbruchbedingungen** — die App verarbeitet nicht und meldet es sichtbar: **Abbruchbedingungen** — die App verarbeitet nicht und meldet es sichtbar:
- Dateiname entspricht nicht dem Schema (weniger als vier Segmente) - Kein `9x16` mit Projektnamen davor im Namen (Ausweg: „4x5 anhängen“, s. o.)
- Format-Segment ist nicht `9x16`
- Quelldatei hat kein 9:16-Seitenverhältnis - Quelldatei hat kein 9:16-Seitenverhältnis
- Zieldatei existiert bereits (überschreiben nur nach Rückfrage) - Zieldatei existiert bereits (überschreiben nur nach Rückfrage)
@ -57,15 +60,17 @@ Der 4:5-Ausschnitt behält die **volle Breite** und beschneidet oben und unten:
``` ```
Breite bleibt unverändert Breite bleibt unverändert
Höhe = Breite × 5 ÷ 4 (auf gerade Zahl gerundet) Höhe = Breite × 5 ÷ 4 (auf gerade Zahl gerundet)
Anker vertikal zentriert (Offset später konfigurierbar) Anker vertikal zentriert (pro Datei verschiebbar, s. u.)
``` ```
**Ausschnitt verschieben:** In der Review-Ansicht lässt sich der 4:5-Rahmen mit der Maus nach oben oder unten ziehen. Für Clips mit Szenenwechsel gibt es **Positionsmarken**: an die Stelle spulen, *Marke setzen* (Taste `M`), Rahmen ziehen. Jede Marke gilt ab ihrem Frame bis zur nächsten, als harter Schnitt ohne Fahrt dazwischen. Tasten: Leertaste spielt ab, `←`/`→` springen um ein Frame. Der Plan gilt pro Datei und wird mit *Übernehmen* gesetzt; die Dateiliste zeigt angepasste Ausschnitte in Gold.
| Quelle | Ziel | | Quelle | Ziel |
|---|---| |---|---|
| 1080 × 1920 | 1080 × 1350 | | 1080 × 1920 | 1080 × 1350 |
| 2160 × 3840 | 2160 × 2700 | | 2160 × 3840 | 2160 × 2700 |
**Codec-Verhalten:** Der Quell-Codec wird erkannt und passend ausgespielt — ProRes bleibt ProRes, H.264 bleibt H.264 mit vergleichbarer Bitrate. Die Audiospur läuft per Passthrough durch, ohne Neukodierung. Framerate, Farbraum und Dauer bleiben unangetastet. **Codec-Verhalten:** Die 4:5-Fassung ist immer MP4 mit H.264 (High Profile) und AAC 128 kbit/s, das Zielformat für Feed und Meta Ads, egal ob ProRes, H.264 oder HEVC reinkommt. Die Bitrate richtet sich nach Auflösung und Framerate. Framerate und Dauer bleiben unangetastet.
## Funktionsumfang ## Funktionsumfang
@ -82,11 +87,11 @@ Anker vertikal zentriert (Offset später konfigurierbar)
- [x] Review-Ansicht: 9:16-Master mit eingeblendetem 4:5-Rahmen zur Framing-Kontrolle, scrubbar - [x] Review-Ansicht: 9:16-Master mit eingeblendetem 4:5-Rahmen zur Framing-Kontrolle, scrubbar
- [ ] Menu-Bar-Betrieb mit Drop-Target - [ ] Menu-Bar-Betrieb mit Drop-Target
- [ ] Vertikaler Crop-Offset pro Datei justierbar - [x] Vertikaler Crop-Offset pro Datei justierbar, mit Positionsmarken für Szenenwechsel
- [ ] In-App-Updates über Sparkle - [x] In-App-Updates über Sparkle (automatisch plus „Nach Updates suchen …“ im App-Menü)
- [ ] Batch-Verlauf der letzten Durchläufe - [ ] Batch-Verlauf der letzten Durchläufe
- [ ] Hilfe-Bereich: klickbare Kurzanleitung zur Bedienung der App - [ ] Hilfe-Bereich: klickbare Kurzanleitung zur Bedienung der App
- [ ] Rechtlich erforderliche Angaben (Impressum o.ä.) einbinden — Absicherung, wo genau (in-App, Download-Seite) noch offen - [x] Rechtliche Angaben: Website verlinkt Impressum & Datenschutz von zielke.studio (wie Patchcord)
## Tech-Stack ## Tech-Stack
@ -112,6 +117,7 @@ Anker vertikal zentriert (Offset später konfigurierbar)
DropTwoCore Framework, komplett UI-frei DropTwoCore Framework, komplett UI-frei
├── FileNameParser zerlegt und baut Dateinamen ├── FileNameParser zerlegt und baut Dateinamen
├── VideoInspector liest Dimension, Codec, Framerate, Dauer ├── VideoInspector liest Dimension, Codec, Framerate, Dauer
├── CropPlan Ausschnitt-Position(en) über die Laufzeit
├── CropEngine AVAsset → VideoComposition → Export ├── CropEngine AVAsset → VideoComposition → Export
└── JobQueue async/await, 1–2 parallele Exports └── JobQueue async/await, 1–2 parallele Exports
@ -198,7 +204,14 @@ DMG und `appcast.xml` landen anschließend auf dem eigenen Server. Der Code lieg
Die Seite unter [droptwo.zielke.studio](https://droptwo.zielke.studio) liegt in `site/` und wird nicht von `publish-release.sh` hochgeladen. Die Versionsnummer liest sie selbst aus `appcast.xml`, nach einem Release muss sie also nicht angefasst werden. Nach Änderungen an der Seite: Die Seite unter [droptwo.zielke.studio](https://droptwo.zielke.studio) liegt in `site/` und wird nicht von `publish-release.sh` hochgeladen. Die Versionsnummer liest sie selbst aus `appcast.xml`, nach einem Release muss sie also nicht angefasst werden. Nach Änderungen an der Seite:
```bash ```bash
rsync -a --chmod=F644 site/index.html site/favicon.svg samuelzielke@10.0.5.223:/var/www/updates/droptwo/ rsync -a --chmod=D755,F644 site/index.html site/favicon.svg site/fonts site/og samuelzielke@10.0.5.223:/var/www/updates/droptwo/
```
Schriften liegen selbst gehostet in `site/fonts/` (keine Anfragen an Google). Das Vorschaubild für geteilte Links `site/og/og-de.png` entsteht aus `og-de.html`:
```bash
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --headless=new --hide-scrollbars \
--window-size=1200,630 --screenshot="$PWD/site/og/og-de.png" "file://$PWD/site/og/og-de.html"
``` ```
Die Übersicht aller Apps und das Statistik-Dashboard liegen im Repo `zielke-apps`. Die Übersicht aller Apps und das Statistik-Dashboard liegen im Repo `zielke-apps`.
@ -222,7 +235,6 @@ Schritt 3 entscheidet über das Projekt. Liefert AVFoundation nicht die nötige
- Verhalten bei bereits vorhandenem Zielordner: ergänzen oder warnen - Verhalten bei bereits vorhandenem Zielordner: ergänzen oder warnen
- Ob das 9:16-Original kopiert oder verschoben wird - Ob das 9:16-Original kopiert oder verschoben wird
- Bitrate-Strategie bei H.264: Quellbitrate übernehmen oder fester Qualitätsfaktor - Bitrate-Strategie bei H.264: Quellbitrate übernehmen oder fester Qualitätsfaktor
- Vertikaler Offset — global, pro Projekt oder pro Datei
## Gestaltung ## Gestaltung

@ -9,8 +9,8 @@ options:
settings: settings:
base: base:
SWIFT_VERSION: "5.9" SWIFT_VERSION: "5.9"
MARKETING_VERSION: "0.1.0" MARKETING_VERSION: "1.0.0"
CURRENT_PROJECT_VERSION: "1" CURRENT_PROJECT_VERSION: "2"
configs: configs:
Debug: Debug:
# Ad-hoc-Signatur: laeuft lokal auf dem eigenen Rechner, braucht keine Team-ID. # Ad-hoc-Signatur: laeuft lokal auf dem eigenen Rechner, braucht keine Team-ID.

Loading…
Cancel
Save

Powered by TurnKey Linux.