In-List-Header im Ruhezustand flach im Fluss (Symbol+Name+Count, reiner Text, ohne Hintergrund). Beim Scrollen wandert der aktuelle Abschnitt auf Navbar-Titelhöhe (links, gleiche Höhe wie der kleine Lese-Liste-Titel) statt unter der Navbar zu pinnen — Erkennung via Y-Marker/PreferenceKey, erscheint erst beim Scrollen. Großtitel bleibt Standard. iOS-Sim grün. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.3 KiB
3.3 KiB
Changelog
Alle Änderungen werden hier dokumentiert. Format orientiert an Keep a Changelog, Versionierung nach Semver.
[Unreleased]
Design (iOS-26 / Liquid Glass)
- Lese-Liste modernisiert nach iOS-26-Standards:
- Suche (
.searchable) über Titel/Quelle/Anriss — floatet auf iOS 26 automatisch unten; Leer-Treffer zeigenContentUnavailableView.search. Badge/Spotlight zählen bewusst weiter ungefiltert. - Neue Zeilen: text-fokussiert, bewusst ohne Thumbnail (passt zum „lies in Ruhe"-Charakter), klarere Typo-Hierarchie (headline- Titel, Quelle in Brand-Terracotta, Lesezeit in der Meta-Zeile).
- Lesefortschritts-Balken für aktiv gelesene Artikel.
- Gruppen-Header auf Titelhöhe (Lesend/Ungelesen/Gelesen): im Ruhezustand als flache Header im Fluss (Symbol + Name + Count, reiner Text, ohne Hintergrund/Container). Beim Scrollen wandert der aktuelle Abschnitt auf Navbar-Titelhöhe (links, gleiche Höhe wie der kleine „Lese-Liste"-Titel) statt unter der Navbar zu pinnen. Erkennung über Y-Marker pro Header (PreferenceKey). Großer Seitentitel bleibt Standard (linksbündig → beim Scrollen mittig).
- Liquid Glass bleibt auf Chrome (Tab-Bar/Toolbar/Suche, automatisch
unterm iOS-26-SDK), nicht auf Content-Zellen (Apple-HIG).
ArchivedListViewerbt den neuen Row-Look.
- Suche (
Geändert (Release-Härtung)
- Teilen ist jetzt local-first: Ein aus Safari geteilter Link wird beim
nächsten App-Foreground sofort lokal in die Lese-Liste gelegt — auch
ausgeloggt — statt bis zum Login in der Queue zu hängen.
flushPendingShares()speichert dafür einen Stub (ArticleSavedmit Host-Titel, leerer Inhalt, reiner lokaler Emit, kein Auth-Gate mehr). Der Toast „Zur Lese-Liste hinzugefügt" ist damit auch ohne Login ehrlich.- Neuer Event-Typ
ArticleEnriched(+ non-destruktiver Reducer-Case): füllt Titel/Inhalt/Metadaten nach, sobald die Extraktion möglich ist (/extract/previewbraucht eine gültige Session), ohne Status/Progress/ Favorit/Notiz/Tags zu berühren. - Enrichment-Sweep (
enrichPendingArticles) läuft nach jedem Flush, beim App-Active und beim Login; pro Artikel best-effort, gescheiterte Versuche werden je Session nicht wiederholt. Beim Login liftetclaimOnSignIndie anonymen Events wie gehabt in den Account. - Reader zeigt für noch nicht extrahierte Artikel einen „Inhalt wird noch geladen"-Hinweis mit Original-Link statt einer leeren Seite.
- Offener Punkt (Cross-Client): Der Web-Reducer kennt
ArticleEnrichednoch nicht — auf Web bleiben so geteilte Artikel bis zum Web-Follow-up inhaltsleer. Folge-Task: Event inpagetaweb + shared-schemas nachziehen.
- Neuer Event-Typ
PrivacyInfo.xcprivacyergänzt (UserDefaultsCA92.1, kein Tracking) — App-Store-Voraussetzung.- Schreibfehler sind nicht mehr stumm:
saveNote/setColor(Highlights) sowie Favorit/Archiv/Status/Wiederherstellen/Löschen in Lese-Liste und Archiv zeigen jetzt einen Alert, statt den Fehler in einem nie gerendertenloadStatezu verschlucken.
[0.1.0]
Erste TestFlight-Vorbereitung. Native iOS/iPadOS/macOS Reader: Feed,
Lese-Liste, nativer Reader mit Highlights und Notizen, Sync über
Event-Sourcing (sync2.mana.how).