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>
63 lines
3.3 KiB
Markdown
63 lines
3.3 KiB
Markdown
# Changelog
|
|
|
|
Alle Änderungen werden hier dokumentiert. Format orientiert an
|
|
[Keep a Changelog](https://keepachangelog.com), Versionierung nach
|
|
[Semver](https://semver.org).
|
|
|
|
## [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`).
|