pageta-native/CHANGELOG.md
Till JS deb4bca279 design(lese-liste): gestickter Abschnitt auf Navbar-Titelhöhe
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>
2026-05-29 21:51:53 +02:00

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 zeigen ContentUnavailableView.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). ArchivedListView erbt den neuen Row-Look.

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 (ArticleSaved mit 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/preview braucht 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 liftet claimOnSignIn die 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 ArticleEnriched noch nicht — auf Web bleiben so geteilte Artikel bis zum Web-Follow-up inhaltsleer. Folge-Task: Event in pageta web + shared-schemas nachziehen.
  • PrivacyInfo.xcprivacy ergänzt (UserDefaults CA92.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 gerenderten loadState zu 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).