Commit Graph
17 Commits
Author SHA1 Message Date
CedricandClaude Opus 5.5 130c5e6bb7 Use the glossary's words in test names and comments (review item 2)
"Feed" no longer stands for a Source and "newsletter" no longer for a
Learning source; paid_newsletter_posts_test.dart becomes
paid_substack_posts_test.dart.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 16:09:43 +02:00
CedricandClaude Opus 5.5 b773c363fe Share the article count line and refresh scaffolding of Today and Learn (review items 5, 6)
articleCountLine, RefreshButton and RefreshableList live in common.dart.
LearnScreen._describe becomes _windowLabel there, and LearnScreen._section
is _kindSection like in SourcesScreen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 16:07:37 +02:00
CedricandClaude Opus 5.5 246564f1d9 Keep per-kind facts on SourceKind and the Briefing's input in one place (review items 4, 5, 6, 7)
- SourceKind carries whether it feeds the Briefing, its fixed time window
  (Learning, Fun) and whether reading is picture-led (Fun); windowOf and
  the reader read from it.
- AppState.briefingArticles is the one place that says only News sources
  feed the Briefing; generateBriefing and the Briefing tab use it.
- articlesOf, hiddenCountOf and briefingArticles share one filter.
- FeedService.fetchAll takes windowOf: like AppState.windowOf.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 16:07:37 +02:00
CedricandClaude Opus 5.5 49982c5467 Match a paid Substack post's "Read more" link tolerantly (review item 8)
A trailing slash, tracking query, fragment, other scheme or host case on
either link no longer lets a paid post through the paid filter.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 16:04:20 +02:00
CedricandClaude Opus 5.5 a47ff28ed1 Rename NewsSource to Source now that it models every kind (review item 3)
The class and its file (lib/models/source.dart) follow the glossary term.
Persisted JSON keys are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 16:03:25 +02:00
CedricandClaude Opus 5.5 1a3442ea02 Merge ticket/3-fun-section into feature/source-kinds (#3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:58:43 +02:00
CedricandClaude Opus 5.5 1048e4e384 Merge feature/source-kinds into ticket/3-fun-section (#3)
Keeps the Learning catalog from #6 and puts the Fun group after it, in the
catalog and the README. Adds the end-to-end check #4 left for Fun: a custom
Fun feed added on the Sources tab shows up in the Learn tab's Fun section,
not in Today.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:58:17 +02:00
CedricandClaude Opus 5.5 84cb11e4dd Hide paid Substack newsletter posts with the paid filter (#7)
Substack cuts paid-subscriber posts short in the feed and ends their
content with a "Read more" link to the post itself. PaywallService.isPaid
now recognizes that ending, so "hide paid articles" hides these posts in
Today and the Learn tab and counts them as hidden, without a page request.
Free posts that ask readers to subscribe or end with the subscribe widget
are not affected.

Tests use trimmed real items from the Interconnects and Ahead of AI feeds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:57:48 +02:00
CedricandClaude Opus 5.5 8240a767ef Add the Fun section to the Learn tab with comic-friendly reader view (#3)
The Learn tab gets a Fun section below Learning with the last 3 days of
Fun articles. Fun articles stay out of Today and the Briefing. New curated
Fun sources: xkcd and The Daily WTF (on by default) and r/ProgrammerHumor
top of the day (off).

Reader view for Fun articles shows the picture whole in the body instead
of as a 16:9 banner cropped to fit, and doesn't call a comic without text
a teaser. When the page gives no picture (Reddit blocks reader view), the
feed's image is shown. The extractor now keeps an image's title text as a
caption (xkcd's last joke), images in blockquotes and behind in-page
anchors (The Daily WTF's Error'd screenshots), drops image maps and
license boxes, and on a text tie prefers the page with more blocks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:56:42 +02:00
CedricandClaude Opus 5.5 4f035e4bb4 Merge ticket/6-learning-catalog into feature/source-kinds (#6)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:51:33 +02:00
CedricandClaude Opus 5.5 b634118ed8 Add the curated Learning sources (#6)
Fifteen English Learning sources join ByteByteGo in the catalog: System
Design One, The Pragmatic Engineer (blog), Martin Fowler, Julia Evans,
Dan Luu, The Cloudflare Blog, Netflix Technology Blog, Engineering at
Meta, GitHub Blog: Engineering, Latent Space, Import AI, Interconnects,
Ahead of AI and Lilian Weng (on by default), and InfoQ (off).

Tests pin the Learning catalog, check that existing installs get the
new on-by-default Sources and that the Learn tab shows their posts from
the last 14 days. A live test times a full refresh. The README gets a
Learn feature bullet and a Learning sources table.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:50:50 +02:00
CedricandClaude Opus 5.5 f205452b25 Group the Sources tab by kind and pick a kind when adding a feed (#4)
The Sources tab shows News, Learning and Fun sections, each split by
language; kinds or languages without Sources get no header. The add-feed
dialog has a kind picker that defaults to News.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:50:43 +02:00
CedricandClaude Opus 5.5 a6b8d8b537 Merge feature/source-kinds into ticket/2-source-kinds-learn-tab (#2)
Brings in the News catalog update (#5). ByteByteGo joins the expected
on-by-default sets for updated installs, and the catalog test checks the
on-by-default set among News sources.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:45:55 +02:00
CedricandClaude Opus 5.5 64c4a11105 Add source kinds and the Learn tab with Learning sources (#2)
Every Source now has a kind: News, Learning or Fun. Curated Sources default
to News, and custom Sources persist their kind (ones saved before default
to News). Each kind has its own time window: News follows the 12/24/48 h
setting, Learning reaches back 14 days, Fun 3 days.

A new Learn tab between Briefing and Sources lists Learning articles with
the same paid/sponsored filters and reader view as Today. It is built from
a list of kinds so a Fun section can follow. Today and the Briefing only
use News. ByteByteGo is the first Learning source, on by default.

The home shell names its tabs instead of using hard-coded indexes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:44:52 +02:00
CedricandClaude Opus 5.5 c86609424c Update the News source catalog for quality (#5)
Adds Techmeme, Lobsters, The Decoder and Simon Willison, all on by default.
Hacker News now reads hnrss.org's front page with 150+ points. t3n,
ComputerBase, TechCrunch and The Verge stay in the catalog but are off by
default. heise Security and heise Developer are described as sections of
heise online. WIRED and Engadget are removed.

Saved toggles for Sources that are no longer in the catalog are dropped on
launch, so they don't count towards "n of m enabled". The README source
table matches the catalog.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:42:01 +02:00
CedricandClaude Opus 5.5 ea37a23c08 Switch newly added default Sources on once (#1)
The app now remembers which curated Sources it has seen. A Source that is on
by default is enabled the first time it appears, also on installs with saved
toggles; Sources seen before keep the user's choice. Installs from before this
change count the current catalog as seen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:35:36 +02:00
CedricandClaude Opus 5.5 f12fb1dabb Initial commit: Tagesbyte prototype
Flutter app that collects daily tech news from German and English RSS/Atom
feeds, with a reader view, AI article summaries and daily briefings (Claude
API or n8n webhook), paywall/sponsored filtering and ad/consent blocking.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 14:53:37 +02:00