Release 0.5.1
This commit is contained in:
1 parent
5a9d7735d4
commit
fb24d171ae
36 files changed
+5099
-263
No files matched your search
+63
-13
@@ -97,6 +97,10 @@ erhalten ausschließlich kompakte Piece-Daten; private Recherche und vollständi
|
||||
Redaktionstexte werden nur an den angemeldeten Editor ausgeliefert. Themen und
|
||||
Abschnittskategorien sind Mehrfachzuordnungen, das Format bleibt eine einzelne
|
||||
unabhängige Zuordnung. Quellen werden gemeinsam mit einem Piece atomar ersetzt.
|
||||
Ein Piece kann für die Präsentation Text oder genau eine vorhandene Quelle als
|
||||
Linkkarte beziehungsweise Video auswählen. Abgerufene Metadaten und Kennzeichen
|
||||
für manuell korrigierte Felder liegen am Piece; ein erneuter Abruf überschreibt
|
||||
diese Felder nicht.
|
||||
|
||||
Jedes Piece besitzt eine ganzzahlige Revision. Speichern, Archivieren und
|
||||
Medienänderungen verwenden ein bedingtes Update auf die erwartete Revision.
|
||||
@@ -124,9 +128,28 @@ erhöht sie atomar. Abgeschlossene Sendungen sind bereits an dieser Grenze gegen
|
||||
weitere Bearbeitung geschützt.
|
||||
|
||||
Beim Einplanen werden Titel, Dauer, Einleitung, Recherche, Moderation,
|
||||
Überleitung und Präsentation aus dem sendefertigen Piece kopiert. Eigene Notizen
|
||||
liegen ausschließlich an der Verwendung. Die Referenz zum Original bleibt für
|
||||
Historie und Nachvollziehbarkeit erhalten, wird aber nicht live gespiegelt.
|
||||
Überleitung und der vollständige Präsentationszustand aus dem sendefertigen
|
||||
Piece kopiert. Dazu gehören Modus, ausgewählte Quelladresse samt Zeitmarke,
|
||||
Metadaten und validierte Anbieter-ID. Eigene Notizen liegen ausschließlich an
|
||||
der Verwendung. Die Referenz zum Original bleibt für Historie und
|
||||
Nachvollziehbarkeit erhalten, wird aber nicht live gespiegelt. Eine explizite
|
||||
Aktualisierung aus dem Fundus ersetzt Titel, Dauer, alle fünf Redaktionstexte
|
||||
und den Präsentationszustand atomar aus dem referenzierten Original. Eigene
|
||||
Notizen, Status und vorhandene Live-Intervalle werden dabei nicht verändert;
|
||||
fehlt das Original oder ist die Sendungsrevision veraltet, wird die gesamte
|
||||
Mutation verworfen.
|
||||
Eine Einplanung zu duplizieren kopiert genau diesen Snapshot mit derselben
|
||||
Original-ID direkt hinter das Ausgangselement. Die neue Verwendung erhält den
|
||||
Status `open`, eine neue ID und damit weder Live-Referenzen noch Zeitintervalle.
|
||||
|
||||
Die Verwendungshistorie wird nicht separat gepflegt. Sie wird über die
|
||||
Original-ID aus Verwendungen mit Status `done` in abgeschlossenen Sendungen
|
||||
abgeleitet; Reservebank und alle anderen Verwendungs- oder Sendungsstatus sind
|
||||
ausgeschlossen. Über dieselbe Original-ID wird unabhängig davon ermittelt, ob
|
||||
mindestens eine Verwendung in einer noch nicht abgeschlossenen Sendung liegt.
|
||||
Der allgemeine Fundus blendet diesen globalen Kontext standardmäßig aus. Die
|
||||
Quellspalte einer Sendung betrachtet für ihren separaten Einplanungsfilter nur
|
||||
die aktuelle Sendung einschließlich Reservebank.
|
||||
|
||||
Jede Sendung besitzt intern genau einen ausgeblendeten Reserveabschnitt. Dadurch
|
||||
verwenden Plan und Reserve dieselbe geprüfte Verwendungslogik, während die
|
||||
@@ -139,17 +162,24 @@ die Abschnitte mit neuen IDs kopiert; spätere Änderungen an der Sendung könne
|
||||
die Vorlage deshalb nicht verändern.
|
||||
|
||||
Die Editorformulare bleiben progressive SvelteKit-Form-Actions, werden im
|
||||
Browser aber mit `use:enhance` gesendet. Dadurch bleibt das Dokument bei
|
||||
Planungsmutationen bestehen; nur die serverseitigen Seitendaten werden
|
||||
aktualisiert. Ladeanzeige und FLIP-Animation liegen am betroffenen Abschnitt
|
||||
oder an der betroffenen Verwendung. Eindeutige Drag-Griffe übertragen entweder
|
||||
eine Quellenkopie, einen Abschnitt oder eine Verwendung auf dieselben
|
||||
Browser aber mit `use:enhance` gesendet. Der Verwendungseditor liegt in einem
|
||||
nativen Dialog, den ein beschrifteter Icon-Button öffnet. Dadurch bleibt das
|
||||
Dokument bei Planungsmutationen bestehen; nur die serverseitigen Seitendaten
|
||||
werden aktualisiert. Ladeanzeige und FLIP-Animation liegen am betroffenen
|
||||
Abschnitt oder an der betroffenen Verwendung. Eindeutige Drag-Griffe übertragen
|
||||
entweder eine Quellenkopie, einen Abschnitt oder eine Verwendung auf dieselben
|
||||
serverseitig geprüften Actions wie die alternativen Schaltflächen. Während des
|
||||
Ziehens bleibt das Original transparent an seinem Ausgangsort; eine flüchtige
|
||||
Vorschau in der Liste belegt bereits die anhand der Zeigerposition berechnete
|
||||
Zielhöhe und verdrängt dadurch die benachbarten Elemente. Persistiert wird erst
|
||||
beim Loslassen.
|
||||
|
||||
Die Ausschlussfilter für gesendete und bereits eingeplante Pieces arbeiten
|
||||
clientseitig auf der serverseitig berechneten Kontextmenge. Ihr Zustand wird
|
||||
ohne Navigation in die URL übernommen und bei nachfolgenden Suchfiltern
|
||||
mitgesendet. Planmutationen invalidieren anschließend die Seitendaten, sodass
|
||||
das Entfernen der letzten Einplanung ein Original unmittelbar wieder anbietet.
|
||||
|
||||
## Live-Modus und Präsentationsgrenze
|
||||
|
||||
`src/lib/server/live.ts` ist die Transaktionsgrenze der Live-Durchführung. Der
|
||||
@@ -168,7 +198,27 @@ neu erzeugter Ausgabezugang widerruft den vorherigen. Page, Polling-JSON und
|
||||
Medienroute leiten ihre Daten aus einer eigenen Positivliste ab. Bilder werden
|
||||
nur ausgeliefert, wenn sie zum aktuell ausdrücklich präsentierten Piece gehören.
|
||||
Normale Auswahl, Fortschaltung oder Wiederaufnahme verändern den
|
||||
Präsentationsstand nicht.
|
||||
Präsentationsstand nicht. Die öffentliche Projektion liest ausschließlich den
|
||||
gespeicherten Verwendungssnapshot; spätere Änderungen am Original erscheinen
|
||||
erst nach einer ausdrücklichen Snapshot-Aktualisierung.
|
||||
|
||||
Linkmetadaten werden nur auf ausdrückliche Aktion durch
|
||||
`src/lib/server/presentation.ts` geladen. Jeder HTTP(S)-Abruf löst den Zielhost
|
||||
serverseitig auf, sperrt lokale und private IPv4-/IPv6-Ziele und bindet den
|
||||
Request an die geprüfte Adresse. Dieselbe Prüfung gilt nach höchstens drei
|
||||
Redirects. Zeit- und Größenlimits begrenzen HTML, Anbieter-Metadaten und Bilder.
|
||||
Externe Vorschaubilder gelangen nur über token- beziehungsweise
|
||||
sitzungsgebundene Proxyrouten in die Ausgabe; fremdes HTML und fremde Skripte
|
||||
werden nie übernommen.
|
||||
|
||||
Videoquellen werden aus der gespeicherten URL erneut auf eine streng validierte
|
||||
YouTube- oder TikTok-ID reduziert. Der Browser erhält nur daraus erzeugte
|
||||
offizielle Embed-URLs, startet sie nicht automatisch und ersetzt das Iframe bei
|
||||
jedem Inhaltswechsel. YouTube erhält die Startsekunde als Embed-Parameter;
|
||||
TikTok wird nach dessen Bereitschaft über die offizielle Player-`postMessage`-
|
||||
Schnittstelle positioniert. Nicht unterstützte oder unvollständige Videoquellen
|
||||
fallen auf eine normale Linkkarte zurück. Eine authentifizierte Testansicht
|
||||
verwendet denselben Renderer, schreibt aber keinen Live-Zustand.
|
||||
|
||||
Die Ausgabe synchronisiert ihren kleinen öffentlichen Zustand per
|
||||
`no-store`-Polling. Der letzte gültige Inhalt bleibt bei einem Verbindungsfehler
|
||||
@@ -189,10 +239,10 @@ Der Live-Modus ist eine eigene, fokussierte Arbeitsansicht. Die
|
||||
Präsentationsausgabe verwendet eine separate, strikt reduzierte Datenansicht
|
||||
ohne interne Anwendungsnavigation.
|
||||
|
||||
## Sicherheitsgrenzen ab den Folgeetappen
|
||||
## Sicherheitsgrenzen
|
||||
|
||||
Authentifizierung und Autorisierung werden seit Etappe 2 serverseitig an jeder
|
||||
betroffenen Route und Action geprüft. Markdown und fremdes HTML werden vor
|
||||
Ausgabe bereinigt. Uploadzugriff folgt denselben Rechten. Spätere
|
||||
Netzwerkabrufe erhalten Schutz gegen interne Ziele, Größen-/Zeitlimits und
|
||||
kontrollierte Redirects.
|
||||
Ausgabe bereinigt. Uploadzugriff folgt denselben Rechten. Netzwerkabrufe für
|
||||
Präsentationsmetadaten und Vorschaubilder schützen interne Ziele auch nach
|
||||
DNS-Auflösung und Redirects und besitzen Größen-, Zeit- und Redirectlimits.
|
||||
Reference in new issue
Block a user