release: add post-production workspace 0.9.0

This commit is contained in:
hnzio committed 2026-10-30 17:33:13 +01:00
1 parent abc31d920f
commit a6c8606f3c
46 files changed
+10783 -3415

No files matched your search

+131
View File
@@ -634,3 +634,134 @@ aus der URL angewendet. Status gilt für beide Treffergruppen; Thema und Format
gelten ausschließlich für Pieces und schließen Streamtreffer aus. Taxonomie und
Trefferzahlen werden aus SQLite abgeleitet. Es gibt keinen neuen Index, keine
Migration und keinen konto- oder browsergebundenen Filterzustand.
## D-038: Stream-Inspector statt Usage-Overlay
Die nicht-modale Dialoglösung aus D-036 wird für die Streamplanung durch eine
dauerhafte rechte Inspector-Spalte ersetzt. Der Ablauf bleibt dadurch räumlich
stabil und die Auswahl von Stream, Abschnitt oder Usage ändert nur den Inhalt
derselben Metadatenfläche. Unterhalb der Desktopbreite ist der Inspector ein
eigener `Details`-Pane statt eines überlagernden Dialogs.
Show und Abschnitt verwenden die vorhandenen Actions. Für Usage-Schnellfelder
führt eine schmale Route-Action die nicht dargestellten Snapshotfelder aus der
aktuellen serverseitigen Projektion mit und ruft anschließend unverändert
`updatePieceUsage()` auf. Damit bleibt die Revision die gemeinsame
Schreibgrenze; ein reduziertes Formular darf keine Moderations-, Recherche- oder
Präsentationsdaten löschen. Der Link `Piece bearbeiten` führt bewusst zum
Original-Piece und vermischt dessen Autosave nicht mit der Streamrevision.
## D-039: Postproduktion bleibt an abgeschlossene Streams gebunden
Post erhält kein zweites Sendungsmodell. Jeder Aufzeichnungsteil, jede Quelle und
jeder Post-Inhalt verweist auf eine vorhandene Sendung; der Dienst akzeptiert
ausschließlich `shows.status = 'completed'`. Gemeinsame Identität, Status,
Revision, Herkunft und Reihenfolge liegen in `post_items`, während YouTube,
Social-Clips und Twitch-Highlights ihre unterschiedlichen Felder in typbezogenen
Tabellen führen. Migration `0021` ist damit rein additiv und verändert keine
bestehenden Stream-Snapshots.
Markdown-Kontext wird unverändert privat gespeichert. SHA-256 schützt pro
Sendung vor Dubletten; Zeitmarken und Transkriptfragmente werden nur aus
tatsächlich vorhandenen Zeilen extrahiert. Quellen und Thumbnails verwenden
zufällige Speichernamen im konfigurierten Uploadverzeichnis und authentifizierte
Auslieferungsrouten. Ein Originalname oder Medienpfad wird nie zu einer
ungeschützten statischen URL.
Ein Export darf seine technische Verwendbarkeit nicht vortäuschen. Resolve-XML
benötigt daher einen absoluten Pfad oder `file://`, Framerate, Timebase sowie
positive Start- und Endpunkte. SRT wird vollständig blockweise validiert. Fehlt
eine Voraussetzung, antwortet die Exportroute mit `EXPORT_NOT_READY`, und die
Oberfläche bietet den Export nicht an.
Eine KI-Schreibfunktion wird erst mit einem real konfigurierten Provider
eingeführt. `post-ai.ts` definiert nur den providerneutralen Ein-/Ausgabevertrag;
es gibt keine Scheinaktion, keinen Netzwerkaufruf und keine Abhängigkeit des
manuellen Workflows von einem KI-Dienst.
## D-040: Gemeinsame Inhaltswerkbank und URL-gebundene Voll-Editoren
Pieces, Eingang und Post folgen derselben visuellen Hierarchie: Navigation oder
Quellen links, auswählbare Inhalte mittig und häufige Bearbeitung rechts. Der
Inspector ist ausdrücklich kein reines Metadatenpanel; er enthält die im Alltag
benötigten Texte, kontextbezogene Uploads und Primäraktionen. Bei mittleren
Breiten folgt er unter dem Inhalt, mobil werden die Bereiche geordnet gestapelt.
Diese Projektion führt keine neue persistente Auswahl oder Fachlogik ein.
„Gemeinsam“ bedeutet dabei auch gemeinsame Oberflächenbausteine: Katalognavigation,
`builder-pane` und `stream-inspector` werden von Streams, Pieces und Post direkt
geteilt. Bereichsspezifische Parallelimplementierungen mit nur ähnlicher Optik
werden vermieden.
Die vollständige Piece- und Postbearbeitung behält ihre bestehende eigene URL.
Der Piece-Editor bleibt ein nativer modaler Dialog ohne zweite
Inhaltsnavigation. Die Post-Werkbank ist dagegen eine normale Seite im
Streams-Layout, damit globale Navigation, Streamkontext und der Wechsel zwischen
mehreren YouTube-, Social- und Highlight-Inhalten räumlich stabil bleiben. Sie
ergänzt dafür bewusst eine linke Schnellnavigation. Piece-Autosave, Revisionen,
Post-Revisionen und sämtliche Snapshotgrenzen bleiben die einzigen
Schreibgrenzen.
RSS bleibt vor der Übernahme eine eigene Entität im Eingang. Eine einheitliche
Darstellung darf diese Grenze nicht verwischen: Vorschau, Verwerfen und
Übernehmen arbeiten auf `feed_entries`; erst der ausdrückliche Import erzeugt ein
Piece. Ebenso projiziert Post ausschließlich vorhandene abgeschlossene Streams
und erhält keine zweite Sendungsverwaltung.
## D-041: Stream-orientierte Post-Schnellwerkbank und gemeinsame Auswahlflächen
Die Post-Detailroute startet ohne ausgewählten Einzelinhalt. In diesem Zustand
zeigt die Mitte eine kopierbare Übersicht und der Inspector ausschließlich
Streammetadaten; erst eine Auswahl in der linken Navigation öffnet einen Editor.
Die URL trägt die Auswahl als `item`, und jede Mutation übernimmt diesen
Parameter. Dadurch bleiben Reload, Uploads und Speichern adressierbar, ohne einen
neuen persistenten Auswahlzustand einzuführen.
TikTok und Instagram teilen eine Caption inklusive Hashtags. YouTube Shorts
führt nur den Titel. Migration `0022` ergänzt dafür additiv `social_caption` und
übernimmt vorhandene Texte. Eine einzige Kontextdatei wird bei der Anlage
automatisch verknüpft. Piece-Optionen werden anhand der tatsächlichen Usages des
geöffneten Streams begrenzt; die Postproduktion kann damit keine fachlich
fremden Fundus-Pieces zuordnen.
Checkboxen und Radios werden nicht durch eigene JavaScript-Steuerungen ersetzt.
Sie bleiben native, fokussierbare Eingaben, während das Label als farblich
markierte Auswahlfläche erscheint und das Kästchen selbst unsichtbar bleibt.
Diese Regel gilt sendewerkweit und erhält Formsemantik, Tastaturbedienung sowie
serverseitige Formverträge.
Post verwendet für aktive Inhaltszeilen, Register, Zielplattformen und Filter
dieselbe Auswahl wie Streams: abgerundete ruhige Fläche und dünne goldene
Kontur, ohne Cyan-Füllung oder seitlichen Balken. Felder, Radien und Abstände
werden aus der Streambearbeitung übernommen, statt einen eigenen
Post-Formularstil zu bilden.
## D-042: Live als vollständig lesende Streamprojektion
Live ist keine eigene Steuerungsshell mehr, sondern eine reguläre
Sendewerk-Seite. Sie verwendet globale Desktop- und Mobilnavigation, den
Streamkopf sowie drei Pane-Flächen für Ablauf, Moderationsdokument und Details.
Die responsive Umschaltung folgt den übrigen Werkbänken statt eines modalen
Ablauf-Sheets.
Die Route zeigt keine Status-, Fortschritts-, Sortier- oder Abschlusssteuerung.
Das Auswählen eines Pieces, Vor/Zurück und die Darstellungsoptionen sind
ausschließlich lokaler Browserzustand. Präsentieren bleibt als ausdrücklich
getrennte Ausgabeaktion erhalten und schreibt nur den Präsentationsstand. Dadurch
kann Navigation innerhalb von Live weder den Stream- oder Usage-Status noch die
Reihenfolge verändern. Bestehende Live-Daten werden als gespeicherter Stand
dargestellt.
## D-043: Verbindliches Seitenraster und reduzierte App-Bewegung
Streams definiert nicht nur Farben und Pane-Radien, sondern das Seitenraster für
alle Bereiche. Die linke Bereichsspalte beginnt unmittelbar unter der globalen
Navigation und überspannt freien Seitenkopf sowie Inhaltszeile. Der Seitenkopf
liegt ohne eigene Hintergrundfläche im Hauptbereich. Erst darunter beginnen die
mittlere Inhaltsfläche und, falls vorhanden, der rechte Inspector. Gemeinsame
Spaltenbreiten und Abstände dürfen nicht bereichsspezifisch abweichen.
Der Piece-Voll-Editor bleibt ein erkennbarer modaler Dialog und erhält deshalb
auf Desktop Abstand zum Viewportrand, Kontur, Schatten und sichtbaren Backdrop.
Öffnen, Schließen, Vergrößern beziehungsweise Pane-Wechsel verwenden kurze,
ruhige Bewegungen unter 200 ms. Sie verändern keine Fachzustände und werden bei
reduzierter Bewegung vollständig deaktiviert.