Der kuratierte Feed widerspricht Pagetas eigenem Versprechen (kein Engagement-Feed) und war der commodity-Teil der App. Die Recherche pinnte RSS-Feeds an, die nie gelesen wurden — feed.ts zog nur aus mana-news-pool, customFeeds wurde nie gefetcht. Beide Flächen daher aus der Nav genommen, Code/Endpoints bleiben dormant im Repo. - web: Feed- + Recherche-Tab aus +layout.svelte raus (Routen bleiben) - docs/FEED.md: Begründung + Revival-Bedingung (mana-discover-Andockung) - CLAUDE.md: Use-Case-Liste ehrlich gemacht - landing: Feed/RSS aus Copy (app.ts, index.astro, ueber.astro) — zentriert auf Lese-Liste + Markierungen + Pocket-Umzug; ueber.astro nennt den Feed-Rückbau transparent Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4.7 KiB
FEED.md — Feed und Recherche sind geparkt
Status: dormant seit 2026-06-01. Weder Feed noch Recherche sind in der Navigation (web + native). Code, Endpoint und Scoring-Engine bleiben im Repo, werden aber nicht gebaut/gewartet, bis die Revival-Bedingung unten erfüllt ist.
Die Recherche ist mitgeparkt, weil sie ohne den Feed ins Leere lief — siehe Abschnitt „Recherche" unten.
Was der Feed war
Ein kuratierter Nachrichten-Strom aus dem zentralen mana-news-pool,
personalisiert über eine transparente Regel-Engine:
score = max(recency, 0.05) × topicWeight × sourceWeight
7 feste Themen (tech, wissenschaft, weltgeschehen, wirtschaft, kultur,
gesundheit, politik) mit je ~3–4 kuratierten Quellen. Hard-Filter
(selectedTopics, blockedSources, Sprache, weggewischte Artikel) vor dem
Scoring, danach absteigend sortiert. Jede Reaktion („interessiert mich" /
„nicht") justierte die Gewichte in der preferences-Tabelle nach. Kein
ML, keine Black-Box — deterministisch und nachvollziehbar.
Warum geparkt
Zwei Gründe, der erste wiegt schwerer:
-
Werte-Spannung. Pagetas ganzer Pitch (VISION.md): „du bestimmst, was auftaucht, kein Engagement-Algorithmus." Ein kuratierter Vorschlags-Strom ist aber genau die Sorte Feed, die die App ablehnt — nur ein ehrlicher. Er fühlt sich fremd an, weil er es ist.
-
Commodity-Charakter. Lese-Liste (Pocket-Style) und Recherche (RSS-Discovery) sind das Eigene, das sonst keiner so baut. Generische Welt-News kann jeder RSS-Reader. Der Feed war der schwächste, am wenigsten differenzierende Teil — Pflege-Aufwand für etwas, woran wir nicht glauben.
Entscheidung: ganz raus aus der Default-Nav, Code dormant, dieser Doc. Bewusst kein Settings-Opt-in-Flag — ein geflaggtes Feature muss weiter mitlaufen (Endpoint, Scoring, web+native-Parität) und zahlt bei jedem Refactoring Steuer. Dormanter Code zahlt nichts.
Revival-Bedingung
Der Feed kommt zurück, wenn er kein Welt-News-Aggregator mehr ist,
sondern Entdeckung im mana-Ökosystem — angedockt an mana-discover
(Cross-Discovery-Katalog, Port 3127, siehe mana/-Spec). Also:
„Was gibt's Neues bei mana" statt „was passiert auf der Welt."
Das wäre on-mission (eigene Inhalte, kein Engagement-Sog) und eigen statt austauschbar. Bis dahin bleibt der Feed aus.
Ein simples „den alten generischen News-Feed wieder anschalten" ist kein ausreichender Grund — das brächte die Werte-Spannung zurück.
Recherche (mitgeparkt)
Die „Recherche" entdeckte RSS-Feeds zu einer Seite/einem Thema und ließ
dich sie anpinnen (preferences.customFeeds). Diese angepinnten Feeds
wurden aber nie gelesen: apps/api/src/routes/feed.ts zieht
ausschließlich aus mana-news-pool (Pool-Query nutzt selectedTopics /
lang, nicht customFeeds). Schon als der Feed live war, tauchten
angepinnte Feeds dort nicht auf — Recherche pinnte ins Leere.
Darum ist die Recherche mit dem Feed zusammen dormant gestellt: ohne
Lese-Ort ist „RSS-Feeds finden und abonnieren" ein halbes Versprechen.
Route /recherche + apps/api/src/routes/research.ts bleiben im Repo.
Revival: entweder einen echten Lese-Ort für angepinnte Feeds bauen (dann ist „abonnieren und lesen" wahr), oder die Recherche zusammen mit dem mana-discover-Feed neu denken.
Was dormant im Repo liegt
| Teil | Pfad |
|---|---|
| Web-Route + UI | apps/web/src/routes/feed/+page.svelte |
| Web-API-Call | apps/web/src/lib/api.ts → feed(limit) |
| Backend-Endpoint | apps/api/src/routes/feed.ts (GET /api/v1/feed) |
| Scoring-Engine | packages/pageta-domain/src/feed-engine.ts |
| Topics + Quellen | packages/pageta-domain/src/sources.ts |
| User-Prefs | apps/api/src/routes/preferences.ts |
| Reactions | apps/api/src/routes/reactions.ts |
| Recherche-Route + UI | apps/web/src/routes/recherche/+page.svelte |
| Recherche-API | apps/api/src/routes/research.ts |
| Native View | ../pageta-native/Sources/Features/FeedTabView.swift |
| Native Reader | ../pageta-native/Sources/Features/FeedItemReaderView.swift |
| Native API-Call | ../pageta-native/Sources/Core/API/PagetaAPI.swift → fetchFeed |
Nicht entfernt, nur abgehängt — siehe Kommentare in
apps/web/src/routes/+layout.svelte und
../pageta-native/Sources/App/RootView.swift.
Wenn du den Feed reaktivierst
- Revival-Bedingung erfüllt? (mana-discover-Andockung, nicht generische News)
- Web: Tab-Eintrag in
apps/web/src/routes/+layout.sveltewieder einfügen (ICON.feed steht schon). - Native:
.feedzurück iniosTabs(RootView, iOS) undmacSidebar(RootView, macOS); iOS-TabView-Block wieder ergänzen; Siri-Shortcut inAppShortcuts.swiftggf. anpassen. - Diesen Doc auf den neuen Stand bringen.