Skip to content

kanarek-v1.0.1

Choose a tag to compare

@trvny trvny released this 27 Jul 03:20
eb6046e

What's Changed

  • build(deps): bump astral-sh/setup-uv from 8.2.0 to 8.3.2 by @dependabot[bot] in #24
  • build(deps): bump the androidx group in /feedget with 4 updates by @dependabot[bot] in #25
  • build(deps-dev): bump @cloudflare/workers-types from 4.20260702.1 to 5.20260708.1 in /feedget/worker by @dependabot[bot] in #27
  • build(deps-dev): bump wrangler from 4.107.0 to 4.107.1 in /feedget/worker by @dependabot[bot] in #26
  • build(deps-dev): bump wrangler from 4.107.1 to 4.110.0 in /kanarek/worker by @dependabot[bot] in #29
  • build(deps-dev): bump typescript from 6.0.3 to 7.0.2 in /kanarek/worker by @dependabot[bot] in #30
  • chore(lint): clear MegaLinter Python blockers (ruff/flake8/bandit) by @trvny in #31
  • chore(kanarek): ktlint --format pass over all Kotlin sources by @trvny in #32
  • kanarek: F-Droid fastlane metadata (en-US) by @trvny in #34
  • kanarek: sign release builds, fix release workflow (assembleRelease + tag trigger) by @trvny in #35
  • kanarek: launcher home screen + i18n + player seed + save Toast by @trvny in #36
  • kanarek: expand default feeds with feedseek sources (+ fix broken wrangler.jsonc) by @trvny in #37
  • kanarek: bump targetSdk 35 → 36 (API 36 / Android 16) by @trvny in #38
  • kanarek: optional per-source cap for the merged news list by @trvny in #40
  • kanarek: group player station list by group-title into collapsible sections by @trvny in #39
  • Potential fix for code scanning alert no. 31: DOM text reinterpreted as HTML by @trvny in #41
  • Add cache cleanup workflow for pull requests by @trvny in #42
  • fix(widget): lekki initialLayout — naprawa „Nie można dodać widżetu” by @trvny in #43
  • Potential fix for code scanning alert no. 13: Clear-text logging of sensitive information by @trvny in #45
  • fix(kanarek): sync observability sampling config to live (0.1) by @trvny in #46
  • security: fix 8 CodeQL findings (worker ReDoS + openweather key-logging) by @trvny in #47
  • build(deps-dev): bump @cloudflare/workers-types from 5.20260708.1 to 5.20260715.1 in /kanarek/worker by @dependabot[bot] in #50
  • build(deps-dev): bump wrangler from 4.110.0 to 4.111.0 in /kanarek/worker by @dependabot[bot] in #51
  • build(deps): bump the kotlin group in /kanarek with 2 updates by @dependabot[bot] in #52
  • build(deps): bump com.android.application from 9.2.1 to 9.3.0 in /kanarek by @dependabot[bot] in #53
  • build(deps): bump actions/setup-node from 6 to 7 by @dependabot[bot] in #49
  • kanarek: clear stale lint baseline by @trvny in #54
  • kanarek: station discovery via Radio Browser (~50k stations) by @trvny in #55
  • release: name published APK kanarek- by @trvny in #57
  • kanarek: channel logos from iptv-org (/logos + tvg-id) by @trvny in #56
  • fix(kanarek/reader): feed field no longer eats the whole News screen by @trvny in #58
  • fix(kanarek/player): add media3-exoplayer-dash — .mpd seeds crash the player by @trvny in #59
  • kanarek: TV video surface, TV/Radio split, re-seedable sample lists by @trvny in #60
  • kanarek: in-app News reader page, settings behind a gear by @trvny in #61
  • feedseek: JSON Feed 1.1 sidecar for every feed by @trvny in #63
  • kanarek/worker: feedsmith parser + JSON Feed read/emit by @trvny in #64
  • kanarek: one-window UI (swipe pager + drawer + bottom nav) + review fixes by @trvny in #66
  • kanarek: TV/radio kind icons, ICY now-playing, favicon logo fallback by @trvny in #68
  • kanarek: Radio/TV/Other as real tabs instead of a mixed filter row by @trvny in #69
  • build(deps-dev): bump wrangler from 4.111.0 to 4.112.0 in /kanarek/worker by @dependabot[bot] in #71
  • build(deps-dev): bump @cloudflare/workers-types from 5.20260715.1 to 5.20260718.1 in /kanarek/worker by @dependabot[bot] in #72
  • kanarek/worker: replace feed pkg + buildAtom() with feedsmith generators by @trvny in #73
  • kanarek: infer station kind on import, always attach video surface for non-radio, move widget render off main by @trvny in #75
  • kanarek: Google Cast support (play/foss product flavors) by @trvny in #74
  • kanarek: parallelize on-device feed fetch (reader stuck spinning) by @trvny in #78
  • kanarek: fullscreen TV video + single sample-load button + refreshed sample playlists by @trvny in #79
  • kanarek: harden app, widgets, player and Worker by @trvny in #80
  • chore(deps-dev): bump wrangler from 4.112.0 to 4.113.0 in /kanarek/worker by @dependabot[bot] in #82
  • feat(kanarek): preview articles before opening browser by @trvny in #89
  • fix(kanarek): stabilize refresh and localize article age by @trvny in #90
  • feat(kanarek): add station favorites and widget controls by @trvny in #91
  • feat(kanarek): add clean article reader mode by @trvny in #92
  • feat(kanarek): add persistent article state by @trvny in #94
  • docs: add scoped Codex instructions by @trvny in #95
  • fix(kanarek): bound local caches by @trvny in #96
  • feat(kanarek): add storage controls by @trvny in #97
  • feat(kanarek): finish news widget 2.0 by @trvny in #98
  • feat(kanarek): add local news search by @trvny in #99
  • feedseek: add Word of the Day feed by @trvny in #102
  • feat(kanarek): save articles offline by @trvny in #101
  • feat(kanarek): add news notifications by @trvny in #103
  • fix(kanarek): harden player error handling by @trvny in #104
  • feat(kanarek): add settings backup and restore by @trvny in #105
  • refactor(kanarek): split ReaderScreen components by @trvny in #106
  • refactor(kanarek): split PlayerScreen components by @trvny in #107
  • fix(kanarek): unify widget refresh scheduling by @trvny in #108
  • feat(kanarek): share widget feed synchronization by @trvny in #109
  • feat(kanarek): add reader background refresh by @trvny in #110
  • feat(kanarek): share reader cache with notifications by @trvny in #112
  • kanarek: Robolectric inflation tests for both widget RemoteViews trees by @trvny in #113
  • Harden feeds proxy by @trvny in #115
  • build(deps): bump sharp from 0.34.5 to 0.35.2 in /kanarek/worker in the npm_and_yarn group across 1 directory by @dependabot[bot] in #117
  • Harden Kanarek outbound fetches by @trvny in #118
  • kanarek: reconcile schedules when the process starts by @trvny in #120
  • kanarek: restore Reader state after recreation by @trvny in #121
  • kanarek: restore Player state after recreation by @trvny in #122
  • kanarek: reconcile runtime after backup import by @trvny in #123
  • kanarek: adapt widget surfaces to day and night mode by @trvny in #124
  • kanarek: add app theme preference by @trvny in #125
  • kanarek: surface stream metadata in player UI by @trvny in #126
  • kanarek: manage screen wake for radio and TV by @trvny in #127

New Contributors

  • @dependabot[bot] made their first contribution in #1
  • @trvny made their first contribution in #9
  • @github-actions[bot] made their first contribution in #12

Full Changelog: https://github.com/trvny/feeds/commits/kanarek-v1.0.1

What's Changed

  • Bump actions/upload-pages-artifact from 3 to 5 by @dependabot[bot] in #1
  • Bump actions/deploy-pages from 4 to 5 by @dependabot[bot] in #2
  • Bump actions/configure-pages from 5 to 6 by @dependabot[bot] in #3
  • Bump astral-sh/setup-uv from 8.1.0 to 8.2.0 by @dependabot[bot] in #4
  • Bump actions/deploy-pages from 4 to 5 by @dependabot[bot] in #5
  • Bump cloudflare/wrangler-action from 3 to 4 by @dependabot[bot] in #6
  • Bump actions/configure-pages from 5 to 6 by @dependabot[bot] in #7
  • Bump actions/upload-pages-artifact from 3 to 5 by @dependabot[bot] in #8
  • Add Makefile targets for the nine new feeds by @trvny in #9
  • feat: add combined Cloudflare Atom feed by @trvny in #10
  • Bump actions/checkout from 6 to 7 in the actions group by @dependabot[bot] in #11
  • Monorepo: feedget/ (apka) + feedseek/ (generatory) by @github-actions[bot] in #12
  • chore(deps-dev): bump vitest from 3.2.6 to 4.1.9 in /feedget/worker by @dependabot[bot] in #13
  • feedget: Headlines mode — ranked hot-stories view with editable top sources by @trvny in #14
  • feedget worker: per-device read-state, subs & pairing on D1 by @trvny in #15
  • build(deps): bump gradle-wrapper from 9.6.0 to 9.6.1 in /feedget by @dependabot[bot] in #16
  • feat(feedget): background radio/IPTV player + M3U playlists + widget by @trvny in #17
  • Feat/worker atom rss export by @trvny in #18
  • ci: replace Super-linter with MegaLinter by @trvny in #19
  • feedget: bundle merged tv.m3u8 playlist asset by @trvny in #20
  • feedget: wire per-stream User-Agent/Referer headers (fixes 11 flagged entries from PR #20) by @trvny in #21
  • feedget: preserve userAgent/referrer through the station edit dialog by @trvny in #22
  • feedget: rebrand to Kanarek by @trvny in #23
  • build(deps): bump astral-sh/setup-uv from 8.2.0 to 8.3.2 by @dependabot[bot] in #24
  • build(deps): bump the androidx group in /feedget with 4 updates by @dependabot[bot] in #25
  • build(deps-dev): bump @cloudflare/workers-types from 4.20260702.1 to 5.20260708.1 in /feedget/worker by @dependabot[bot] in #27
  • build(deps-dev): bump wrangler from 4.107.0 to 4.107.1 in /feedget/worker by @dependabot[bot] in #26
  • rename feedget/ -> kanarek/ + finish infra migration by @trvny in #28
  • build(deps-dev): bump wrangler from 4.107.1 to 4.110.0 in /kanarek/worker by @dependabot[bot] in #29
  • build(deps-dev): bump typescript from 6.0.3 to 7.0.2 in /kanarek/worker by @dependabot[bot] in #30
  • chore(lint): clear MegaLinter Python blockers (ruff/flake8/bandit) by @trvny in #31
  • chore(kanarek): ktlint --format pass over all Kotlin sources by @trvny in #32
  • ci(feeds): zizmor hybrid hardening + MegaLinter auto-fix to artifact by @trvny in #33
  • kanarek: F-Droid fastlane metadata (en-US) by @trvny in #34
  • kanarek: sign release builds, fix release workflow (assembleRelease + tag trigger) by @trvny in #35
  • kanarek: launcher home screen + i18n + player seed + save Toast by @trvny in #36
  • kanarek: expand default feeds with feedseek sources (+ fix broken wrangler.jsonc) by @trvny in #37
  • kanarek: bump targetSdk 35 → 36 (API 36 / Android 16) by @trvny in #38
  • kanarek: optional per-source cap for the merged news list by @trvny in #40
  • kanarek: group player station list by group-title into collapsible sections by @trvny in #39
  • Potential fix for code scanning alert no. 31: DOM text reinterpreted as HTML by @trvny in #41
  • Add cache cleanup workflow for pull requests by @trvny in #42
  • fix(widget): lekki initialLayout — naprawa „Nie można dodać widżetu” by @trvny in #43
  • feedseek: MRSS media, dc:creator, tag-URI IDs + full MRSS 1.5.1 extension by @trvny in #44
  • Potential fix for code scanning alert no. 13: Clear-text logging of sensitive information by @trvny in #45
  • fix(kanarek): sync observability sampling config to live (0.1) by @trvny in #46
  • security: fix 8 CodeQL findings (worker ReDoS + openweather key-logging) by @trvny in #47
  • feedseek: auto-generate subscriptions.opml from the published feed set by @trvny in #48
  • build(deps-dev): bump @cloudflare/workers-types from 5.20260708.1 to 5.20260715.1 in /kanarek/worker by @dependabot[bot] in #50
  • build(deps-dev): bump wrangler from 4.110.0 to 4.111.0 in /kanarek/worker by @dependabot[bot] in #51
  • build(deps): bump the kotlin group in /kanarek with 2 updates by @dependabot[bot] in #52
  • build(deps): bump com.android.application from 9.2.1 to 9.3.0 in /kanarek by @dependabot[bot] in #53
  • build(deps): bump actions/setup-node from 6 to 7 by @dependabot[bot] in #49
  • kanarek: clear stale lint baseline by @trvny in #54
  • kanarek: station discovery via Radio Browser (~50k stations) by @trvny in #55
  • release: name published APK kanarek- by @trvny in #57
  • kanarek: channel logos from iptv-org (/logos + tvg-id) by @trvny in #56
  • fix(kanarek/reader): feed field no longer eats the whole News screen by @trvny in #58
  • fix(kanarek/player): add media3-exoplayer-dash — .mpd seeds crash the player by @trvny in #59
  • kanarek: TV video surface, TV/Radio split, re-seedable sample lists by @trvny in #60
  • kanarek: in-app News reader page, settings behind a gear by @trvny in #61
  • feeds: fix broken feed icons via favicon override + favicon_proxy by @trvny in #62
  • feedseek: JSON Feed 1.1 sidecar for every feed by @trvny in #63
  • kanarek/worker: feedsmith parser + JSON Feed read/emit by @trvny in #64
  • feat(feedseek): adaptive per-feed STALE detection in validate_feeds by @trvny in #65
  • kanarek: one-window UI (swipe pager + drawer + bottom nav) + review fixes by @trvny in #66
  • kanarek: TV/radio kind icons, ICY now-playing, favicon logo fallback by @trvny in #68
  • feedseek: add multireddit feed (combined, deduped) by @trvny in #67
  • kanarek: Radio/TV/Other as real tabs instead of a mixed filter row by @trvny in #69
  • build(deps-dev): bump wrangler from 4.111.0 to 4.112.0 in /kanarek/worker by @dependabot[bot] in #71
  • build(deps-dev): bump @cloudflare/workers-types from 5.20260715.1 to 5.20260718.1 in /kanarek/worker by @dependabot[bot] in #72
  • kanarek/worker: replace feed pkg + buildAtom() with feedsmith generators by @trvny in #73
  • kanarek: infer station kind on import, always attach video surface for non-radio, move widget render off main by @trvny in #75
  • kanarek: Google Cast support (play/foss product flavors) by @trvny in #74
  • feedseek: add AI/SaaS sources to aibridge and saas; sync README feed list by @trvny in #76
  • fix(worker): bound stripTags regex to kill polynomial ReDoS by @trvny in #77
  • kanarek: parallelize on-device feed fetch (reader stuck spinning) by @trvny in #78
  • kanarek: fullscreen TV video + single sample-load button + refreshed sample playlists by @trvny in #79
  • kanarek: harden app, widgets, player and Worker by @trvny in #80
  • chore(deps-dev): bump wrangler from 4.112.0 to 4.113.0 in /kanarek/worker by @dependabot[bot] in #82
  • chore(deps): bump astral-sh/setup-uv from 8.3.2 to 9.0.0 by @dependabot[bot] in #81
  • feedseek: harden generation and validation pipeline by @trvny in #84
  • feedseek: keep Bible verse publishing when They Said So fails by @trvny in #85
  • feedseek: reject legacy feed self-link roots by @trvny in #86
  • theysaidso: repair mojibake in quote text by @trvny in #87
  • reader: harden refresh, rendering, and cache by @trvny in #88
  • feat(kanarek): preview articles before opening browser by @trvny in #89
  • fix(kanarek): stabilize refresh and localize article age by @trvny in #90
  • feat(kanarek): add station favorites and widget controls by @trvny in #91
  • feat(kanarek): add clean article reader mode by @trvny in #92
  • feat(feedseek): add active blogs.esa.int mission blogs to the ESA feed by @trvny in #93
  • feat(kanarek): add persistent article state by @trvny in #94
  • docs: add scoped Codex instructions by @trvny in #95
  • fix(kanarek): bound local caches by @trvny in #96
  • feat(kanarek): add storage controls by @trvny in #97
  • feat(kanarek): finish news widget 2.0 by @trvny in #98
  • feat(kanarek): add local news search by @trvny in #99
  • feedseek: add geopolitics feed (ISW, RUSI, CSIS, Carnegie) by @trvny in #100
  • feedseek: add Word of the Day feed by @trvny in #102
  • feat(kanarek): save articles offline by @trvny in #101
  • feat(kanarek): add news notifications by @trvny in #103
  • fix(kanarek): harden player error handling by @trvny in #104
  • feat(kanarek): add settings backup and restore by @trvny in #105
  • refactor(kanarek): split ReaderScreen components by @trvny in #106
  • refactor(kanarek): split PlayerScreen components by @trvny in #107
  • fix(kanarek): unify widget refresh scheduling by @trvny in #108
  • feat(kanarek): share widget feed synchronization by @trvny in #109
  • feat(kanarek): add reader background refresh by @trvny in #110
  • Add combined Medium feed with per-source output quota by @trvny in #111
  • feat(kanarek): share reader cache with notifications by @trvny in #112
  • kanarek: Robolectric inflation tests for both widget RemoteViews trees by @trvny in #113
  • Harden feeds proxy by @trvny in #115
  • Adapt Codex auto-fix to feeds by @trvny in #114
  • Run feeds checks with fewer jobs by @trvny in #116
  • build(deps): bump sharp from 0.34.5 to 0.35.2 in /kanarek/worker in the npm_and_yarn group across 1 directory by @dependabot[bot] in #117
  • Harden Kanarek outbound fetches by @trvny in #118
  • Deploy Kanarek after Worker CI by @trvny in #119
  • kanarek: reconcile schedules when the process starts by @trvny in #120
  • kanarek: restore Reader state after recreation by @trvny in #121
  • kanarek: restore Player state after recreation by @trvny in #122
  • kanarek: reconcile runtime after backup import by @trvny in #123
  • kanarek: adapt widget surfaces to day and night mode by @trvny in #124
  • kanarek: add app theme preference by @trvny in #125
  • kanarek: surface stream metadata in player UI by @trvny in #126
  • kanarek: manage screen wake for radio and TV by @trvny in #127
  • feedseek: GOG and Samsung Newsroom feeds, plus new sources on five existing feeds by @trvny in #128
  • ci: scope Feedseek checks to relevant changes by @trvny in #132
  • Add Bing verification tag to feeds page by @trvny in #131
  • feedseek: one-liner quote/saying/joke feeds, Agent Client Protocol, README refresh by @trvny in #129
  • kanarek: adapt widgets to launcher size by @trvny in #130
  • build(kanarek): prepare for AGP 10 build model by @trvny in #133
  • fix(reader): bypass proxy for same-origin feeds by @trvny in #134
  • ci(pages): deploy direct site changes by @trvny in #135
  • feedseek: restore audio, add github and europa feeds by @trvny in #136
  • Publish MegaLinter fixes as a dedicated artifact by @trvny in #137
  • Bundle MegaLinter fixes with reports by @trvny in #138
  • feedseek: add Visual Crossing resources, Spotify and Paint.NET feeds; extend the GitHub and Europa feeds by @trvny in #141

New Contributors

  • @dependabot[bot] made their first contribution in #1
  • @trvny made their first contribution in #9
  • @github-actions[bot] made their first contribution in #12

Full Changelog: https://github.com/trvny/feeds/commits/kanarek-v1.0.1

What's Changed

  • Bump actions/upload-pages-artifact from 3 to 5 by @dependabot[bot] in #1
  • Bump actions/deploy-pages from 4 to 5 by @dependabot[bot] in #2
  • Bump actions/configure-pages from 5 to 6 by @dependabot[bot] in #3
  • Bump astral-sh/setup-uv from 8.1.0 to 8.2.0 by @dependabot[bot] in #4
  • Bump actions/deploy-pages from 4 to 5 by @dependabot[bot] in #5
  • Bump cloudflare/wrangler-action from 3 to 4 by @dependabot[bot] in #6
  • Bump actions/configure-pages from 5 to 6 by @dependabot[bot] in #7
  • Bump actions/upload-pages-artifact from 3 to 5 by @dependabot[bot] in #8
  • Add Makefile targets for the nine new feeds by @trvny in #9
  • feat: add combined Cloudflare Atom feed by @trvny in #10
  • Bump actions/checkout from 6 to 7 in the actions group by @dependabot[bot] in #11
  • Monorepo: feedget/ (apka) + feedseek/ (generatory) by @github-actions[bot] in #12
  • chore(deps-dev): bump vitest from 3.2.6 to 4.1.9 in /feedget/worker by @dependabot[bot] in #13
  • feedget: Headlines mode — ranked hot-stories view with editable top sources by @trvny in #14
  • feedget worker: per-device read-state, subs & pairing on D1 by @trvny in #15
  • build(deps): bump gradle-wrapper from 9.6.0 to 9.6.1 in /feedget by @dependabot[bot] in #16
  • feat(feedget): background radio/IPTV player + M3U playlists + widget by @trvny in #17
  • Feat/worker atom rss export by @trvny in #18
  • ci: replace Super-linter with MegaLinter by @trvny in #19
  • feedget: bundle merged tv.m3u8 playlist asset by @trvny in #20
  • feedget: wire per-stream User-Agent/Referer headers (fixes 11 flagged entries from PR #20) by @trvny in #21
  • feedget: preserve userAgent/referrer through the station edit dialog by @trvny in #22
  • feedget: rebrand to Kanarek by @trvny in #23
  • build(deps): bump astral-sh/setup-uv from 8.2.0 to 8.3.2 by @dependabot[bot] in #24
  • build(deps): bump the androidx group in /feedget with 4 updates by @dependabot[bot] in #25
  • build(deps-dev): bump @cloudflare/workers-types from 4.20260702.1 to 5.20260708.1 in /feedget/worker by @dependabot[bot] in #27
  • build(deps-dev): bump wrangler from 4.107.0 to 4.107.1 in /feedget/worker by @dependabot[bot] in #26
  • rename feedget/ -> kanarek/ + finish infra migration by @trvny in #28
  • build(deps-dev): bump wrangler from 4.107.1 to 4.110.0 in /kanarek/worker by @dependabot[bot] in #29
  • build(deps-dev): bump typescript from 6.0.3 to 7.0.2 in /kanarek/worker by @dependabot[bot] in #30
  • chore(lint): clear MegaLinter Python blockers (ruff/flake8/bandit) by @trvny in #31
  • chore(kanarek): ktlint --format pass over all Kotlin sources by @trvny in #32
  • ci(feeds): zizmor hybrid hardening + MegaLinter auto-fix to artifact by @trvny in #33
  • kanarek: F-Droid fastlane metadata (en-US) by @trvny in #34
  • kanarek: sign release builds, fix release workflow (assembleRelease + tag trigger) by @trvny in #35
  • kanarek: launcher home screen + i18n + player seed + save Toast by @trvny in #36
  • kanarek: expand default feeds with feedseek sources (+ fix broken wrangler.jsonc) by @trvny in #37
  • kanarek: bump targetSdk 35 → 36 (API 36 / Android 16) by @trvny in #38
  • kanarek: optional per-source cap for the merged news list by @trvny in #40
  • kanarek: group player station list by group-title into collapsible sections by @trvny in #39
  • Potential fix for code scanning alert no. 31: DOM text reinterpreted as HTML by @trvny in #41
  • Add cache cleanup workflow for pull requests by @trvny in #42
  • fix(widget): lekki initialLayout — naprawa „Nie można dodać widżetu” by @trvny in #43
  • feedseek: MRSS media, dc:creator, tag-URI IDs + full MRSS 1.5.1 extension by @trvny in #44
  • Potential fix for code scanning alert no. 13: Clear-text logging of sensitive information by @trvny in #45
  • fix(kanarek): sync observability sampling config to live (0.1) by @trvny in #46
  • security: fix 8 CodeQL findings (worker ReDoS + openweather key-logging) by @trvny in #47
  • feedseek: auto-generate subscriptions.opml from the published feed set by @trvny in #48
  • build(deps-dev): bump @cloudflare/workers-types from 5.20260708.1 to 5.20260715.1 in /kanarek/worker by @dependabot[bot] in #50
  • build(deps-dev): bump wrangler from 4.110.0 to 4.111.0 in /kanarek/worker by @dependabot[bot] in #51
  • build(deps): bump the kotlin group in /kanarek with 2 updates by @dependabot[bot] in #52
  • build(deps): bump com.android.application from 9.2.1 to 9.3.0 in /kanarek by @dependabot[bot] in #53
  • build(deps): bump actions/setup-node from 6 to 7 by @dependabot[bot] in #49
  • kanarek: clear stale lint baseline by @trvny in #54
  • kanarek: station discovery via Radio Browser (~50k stations) by @trvny in #55
  • release: name published APK kanarek- by @trvny in #57
  • kanarek: channel logos from iptv-org (/logos + tvg-id) by @trvny in #56
  • fix(kanarek/reader): feed field no longer eats the whole News screen by @trvny in #58
  • fix(kanarek/player): add media3-exoplayer-dash — .mpd seeds crash the player by @trvny in #59
  • kanarek: TV video surface, TV/Radio split, re-seedable sample lists by @trvny in #60
  • kanarek: in-app News reader page, settings behind a gear by @trvny in #61
  • feeds: fix broken feed icons via favicon override + favicon_proxy by @trvny in #62
  • feedseek: JSON Feed 1.1 sidecar for every feed by @trvny in #63
  • kanarek/worker: feedsmith parser + JSON Feed read/emit by @trvny in #64
  • feat(feedseek): adaptive per-feed STALE detection in validate_feeds by @trvny in #65
  • kanarek: one-window UI (swipe pager + drawer + bottom nav) + review fixes by @trvny in #66
  • kanarek: TV/radio kind icons, ICY now-playing, favicon logo fallback by @trvny in #68
  • feedseek: add multireddit feed (combined, deduped) by @trvny in #67
  • kanarek: Radio/TV/Other as real tabs instead of a mixed filter row by @trvny in #69
  • build(deps-dev): bump wrangler from 4.111.0 to 4.112.0 in /kanarek/worker by @dependabot[bot] in #71
  • build(deps-dev): bump @cloudflare/workers-types from 5.20260715.1 to 5.20260718.1 in /kanarek/worker by @dependabot[bot] in #72
  • kanarek/worker: replace feed pkg + buildAtom() with feedsmith generators by @trvny in #73
  • kanarek: infer station kind on import, always attach video surface for non-radio, move widget render off main by @trvny in #75
  • kanarek: Google Cast support (play/foss product flavors) by @trvny in #74
  • feedseek: add AI/SaaS sources to aibridge and saas; sync README feed list by @trvny in #76
  • fix(worker): bound stripTags regex to kill polynomial ReDoS by @trvny in #77
  • kanarek: parallelize on-device feed fetch (reader stuck spinning) by @trvny in #78
  • kanarek: fullscreen TV video + single sample-load button + refreshed sample playlists by @trvny in #79
  • kanarek: harden app, widgets, player and Worker by @trvny in #80
  • chore(deps-dev): bump wrangler from 4.112.0 to 4.113.0 in /kanarek/worker by @dependabot[bot] in #82
  • chore(deps): bump astral-sh/setup-uv from 8.3.2 to 9.0.0 by @dependabot[bot] in #81
  • feedseek: harden generation and validation pipeline by @trvny in #84
  • feedseek: keep Bible verse publishing when They Said So fails by @trvny in #85
  • feedseek: reject legacy feed self-link roots by @trvny in #86
  • theysaidso: repair mojibake in quote text by @trvny in #87
  • reader: harden refresh, rendering, and cache by @trvny in #88
  • feat(kanarek): preview articles before opening browser by @trvny in #89
  • fix(kanarek): stabilize refresh and localize article age by @trvny in #90
  • feat(kanarek): add station favorites and widget controls by @trvny in #91
  • feat(kanarek): add clean article reader mode by @trvny in #92
  • feat(feedseek): add active blogs.esa.int mission blogs to the ESA feed by @trvny in #93
  • feat(kanarek): add persistent article state by @trvny in #94
  • docs: add scoped Codex instructions by @trvny in #95
  • fix(kanarek): bound local caches by @trvny in #96
  • feat(kanarek): add storage controls by @trvny in #97
  • feat(kanarek): finish news widget 2.0 by @trvny in #98
  • feat(kanarek): add local news search by @trvny in #99
  • feedseek: add geopolitics feed (ISW, RUSI, CSIS, Carnegie) by @trvny in #100
  • feedseek: add Word of the Day feed by @trvny in #102
  • feat(kanarek): save articles offline by @trvny in #101
  • feat(kanarek): add news notifications by @trvny in #103
  • fix(kanarek): harden player error handling by @trvny in #104
  • feat(kanarek): add settings backup and restore by @trvny in #105
  • refactor(kanarek): split ReaderScreen components by @trvny in #106
  • refactor(kanarek): split PlayerScreen components by @trvny in #107
  • fix(kanarek): unify widget refresh scheduling by @trvny in #108
  • feat(kanarek): share widget feed synchronization by @trvny in #109
  • feat(kanarek): add reader background refresh by @trvny in #110
  • Add combined Medium feed with per-source output quota by @trvny in #111
  • feat(kanarek): share reader cache with notifications by @trvny in #112
  • kanarek: Robolectric inflation tests for both widget RemoteViews trees by @trvny in #113
  • Harden feeds proxy by @trvny in #115
  • Adapt Codex auto-fix to feeds by @trvny in #114
  • Run feeds checks with fewer jobs by @trvny in #116
  • build(deps): bump sharp from 0.34.5 to 0.35.2 in /kanarek/worker in the npm_and_yarn group across 1 directory by @dependabot[bot] in #117
  • Harden Kanarek outbound fetches by @trvny in #118
  • Deploy Kanarek after Worker CI by @trvny in #119
  • kanarek: reconcile schedules when the process starts by @trvny in #120
  • kanarek: restore Reader state after recreation by @trvny in #121
  • kanarek: restore Player state after recreation by @trvny in #122
  • kanarek: reconcile runtime after backup import by @trvny in #123
  • kanarek: adapt widget surfaces to day and night mode by @trvny in #124
  • kanarek: add app theme preference by @trvny in #125
  • kanarek: surface stream metadata in player UI by @trvny in #126
  • kanarek: manage screen wake for radio and TV by @trvny in #127
  • feedseek: GOG and Samsung Newsroom feeds, plus new sources on five existing feeds by @trvny in #128
  • ci: scope Feedseek checks to relevant changes by @trvny in #132
  • Add Bing verification tag to feeds page by @trvny in #131
  • feedseek: one-liner quote/saying/joke feeds, Agent Client Protocol, README refresh by @trvny in #129
  • kanarek: adapt widgets to launcher size by @trvny in #130
  • build(kanarek): prepare for AGP 10 build model by @trvny in #133
  • fix(reader): bypass proxy for same-origin feeds by @trvny in #134
  • ci(pages): deploy direct site changes by @trvny in #135
  • feedseek: restore audio, add github and europa feeds by @trvny in #136
  • Publish MegaLinter fixes as a dedicated artifact by @trvny in #137
  • Bundle MegaLinter fixes with reports by @trvny in #138
  • feedseek: add Visual Crossing resources, Spotify and Paint.NET feeds; extend the GitHub and Europa feeds by @trvny in #141

New Contributors

  • @github-actions[bot] made their first contribution in #12

Full Changelog: https://github.com/trvny/feeds/commits/kanarek-v1.0.1