-
2026.9.26.1
StableAll checks were successful/ pr-review (push) Has been skipped/ gitleaks (push) Successful in 15s/ pr-review (release) Has been skipped/ gitleaks (release) Successful in 28s/ checks (push) Successful in 2m14s/ publish-container (push) Has been skipped/ deploy-docs (push) Has been skipped/ checks (release) Successful in 2m39s/ container (release) Has been skipped/ container (push) Successful in 1m33s/ publish-container (release) Successful in 2m57s/ deploy-docs (release) Successful in 1m4sreleased this
2026-09-26 03:08:15 +00:00 | 149 commits to main since this release[2026.9.26.1] - 2026-09-26
Commits
- 🔀 Merge branch 'fix/calendar-release-transition'
0c670af - 🐛 Make the release recipe work from the legacy 0.4.0 version
8a59c9a - 🔀 Merge branch 'feat/reader-tweaks-and-docs'
fdae0a1 - 📝 Name Yunjin in the README tagline
0d45b2f - 🔧 Address WuMing review waves on PR #51
a5538ad - 🔥 Remove stale Roadmap.md
a2ab8dd - 📝 Refresh AGENTS.md to match current CI and layout
4a46279 - 📝 Rewrite README for the current project
94b2e04 - 🐛 Point the footer at the forge and link versioned docs
fb5ea54 - 👷 Publish versioned docs to the pages branch
7728996 - 📖 Add MkDocs documentation site
359c812 - ✨ Remember the hide-read preference in a cookie
61de2b2 - 💄 Show only the group title on reader cards
57b976a - 🔀 Merge branch 'feat/issue-40-container-packaging'
7bcb138 - 🔧 Cap worker interval digits and default dev labels
516500b - 🐛 Run worker init in the background so it stays signal-killable
8778a04 - 🐛 Address WuMing review waves 4/5 on PR #46
74d4a27 - ✨ Include extract-media in the worker loop
fd7f836 - 🔧 Rename docker- files to container- for podman setups
4fc421d - 🐛 Harden worker entrypoint signal and init handling
4103731 - 🔁 Re-trigger CI after zhuiri checks-job flake
c0fdf6d - 🔧 Address WuMing review wave on PR #46
a1cecd9 - 👷 Build container image in CI
6c0a114 - 👷 Add container image with web and worker entrypoints
1a73a70 - 🔀 Merge branch 'feat/issue-37-feed-discovery'
5edc936 - 🐛 Sanitize rendered discovery errors and scope test logger state
f2da211 - 🐛 Handle feed link type variants and protocol-relative site URLs
c9209a0 - 🐛 Strip control characters from feed discovery error logs
7084583 - ✨ Add feed discovery to the add-feed page
a2d8dc1 - ✨ Discover feeds from a site homepage
3a7e682 - 🔀 Merge branch 'feat/issue-42-ui-ux-improvements'
3fe2259 - 🐛 Keep original media URLs in the rail; Guardian signs its query strings
971a9e3 - ✅ Build rail test media explicitly instead of deleting fixture rows
d4f275b - ✨ Ask the LLM for multi-paragraph aggregate overviews
13da9da - ✨ Dedupe photo variants in the aggregate media rail
e78bc61 - 🩹 Guard aggregate summary split and strengthen tests
1a00541 - 🔁 Re-trigger CI after zhuiri checkout flake
841c75f - ♻️ Rework aggregate view: sharp title, full overview, media rail
83bc39c - 🎨 Show ISO-8601 updated dates on reader cards
a17bbd2 - 🎨 Put nav links inline with the app title and add 云锦
4148092 - 🔀 Merge branch 'feat/weekly-checks-action'
03aebf3 - 👷 Run weekly checks on suanni
597ec58 - 🔧 Add workflow name and least-privilege permissions
0e40ff7 - 👷 Add weekly dependency and advisory checks
5f3c9f8 - 🔀 Merge branch 'feat/issue-38-fetcher-resilience'
a384214 - ✅ Address review: scheme-redirect test, log sanitization, stable date
0b995c1 - ⚡ Refresh feeds concurrently with bounded parallelism
95e866f - ✨ Support conditional GET for feed polls
b7e9f80 - ✨ Add per-host politeness gate
a4e9181 - ✨ Add retry with backoff via tenacity
4285428 - ♻️ Convert feed fetch pipeline to asyncio
34e54d4 - ⬆️ Bump dependencies
748d257 - 🔀 Merge branch 'feat/issue-33-featured-image'
b5980fd - 🐛 Retry blocked article fetches with the extractor identity
bca5355 - 🐛 Send browser headers and reject error pages in article fetches
37ba95d - 🐛 Resolve the media directory absolutely when serving
7d4759b - 🔒 Guard featured media assignment and sanitize ingest logs
676f6e2 - ✨ Serve the featured image on reader cards
4878e82 - ✨ Choose and download the featured image at ingest
4aae169 - ✨ Add featured image candidate selection service
3f29fb2 - 🔀 Merge branch 'fix/issue-34-refresh-robustness'
e471b34 - 🔀 Merge branch 'feat/issue-23-full-text'
dbf5046 - ⏪ Group on feed teasers instead of full text
10b3a49 - 🐛 Degrade gracefully when the LLM invents aggregate ids
906f4ce - 🐛 Rewind full-text columns in the legacy-migration fixture
8af76f9 - ✅ Tighten full-text test assertions
25e1e41 - ✨ Render stored full text on the article page
5cafd64 - ✨ Feed article full text to LLM aggregation and summaries
0cbda4a - ✨ Store article full text during feed ingestion
a5a9d41 - ➕ Add trafilatura, mistune and nh3
ceb153c - 🔀 Merge branch 'feat/issue-20-ignore-rules'
dd1b0e1 - 🔥 Remove unread-aggregate helper superseded by the list query
aad5458 - 🐛 Ignore empty ignore rules in matches_any_rule
23e5770 - 🐛 Next-unread walk no longer revisits the current group
b8043b5 - ✨ Filter ignored aggregates from the reader and next-unread navigation
8aa0203 - ✨ Add ignore rules setting with settings-page editor
826371a - ✨ Add ignore rules service
5c2ba14 - 🔀 Merge branch 'feat/issue-22-wider-card-images'
2c0e562 - ✨ Add card image width display setting
2c5156a - ✨ Widen card images via an --aggregate-image-width variable
4ea8d5e - 🔀 Merge branch 'feat/issue-21-image-persistence'
0a3d8f8 - 🔒 Re-validate media redirects, harden Content-Length, filter image media
849e162 - 🔒 Guard media downloads: URL validation, SVG exclusion, streaming size cap
9d82ec2 - 🐛 Extract media from feed entry summaries and content
fa98e83 - ✨ Serve stored media from the reader
ba13d81 - ✨ Download article media to local storage
bf2cab7 - ✨ Add local file storage columns to media
1923a60 - ✅ Add missing test for get_next_aggregate_with_unread
9a3fa36 - 🔀 Merge branch 'feat/issue-5-keyboard-shortcuts'
857002c - ✨ Add g shortcut to open next unread group
3050d53 - 🐛 Unread route redirects to index; Enter/Space activate focused controls
038cd18 - ✨ Extend reader shortcuts to groups with unread toggle
deff23c - 🔒 Restrict shortcut navigation to http/https URLs
0d12a82 - ✨ Add setting to mark groups read when viewed
6400026 - ✨ Add FreshRSS-style keyboard shortcuts
45c3310 - 🔀 Merge branch 'feat/issue-8-display-settings-dark-mode'
1328fec - 🙈 Ignore the generated secret key file
9838f7e - 🐛 Tag and accent badges use on-accent text colour
8abedec - 🐛 Sweep hardcoded colours into theme variables for dark mode
7df4ecf - 🐛 Seed default user on web startup for user-keyed writes
48617e2 - 🔧 Address WuMing review: settings robustness fixes
b38705a - 🐛 Run database migrations on web app startup
47d1027 - 🔒 Create secret key atomically with 0600, cover save_settings rollback
4c5805a - 🔒 Create secret key file with owner-only permissions
79e2d22 - 🔒 Harden display settings: secret key, CSS breakout guard, atomic saves
a442180 - ✨ Add display settings: font family, base font size, custom CSS
9d9be10 - ✨ Add user-settable theme: system, light, or dark
9e48d93 - ✨ Add per-user settings key/value store
ec34850 - 🔀 Merge branch 'feat/issue-19-aggregate-article-ordering'
0b8ef10 - ✅ Add deterministic tie-breaker and discriminating ordering tests
c4ae5a1 - ✨ Order aggregate articles newest-first
e8df818 - 🔀 Merge remote-tracking branch 'origin/feat/issue-18-read-unread'
f0f30cc - ✅ Type mark-aggregate-read return, lock hide_read card links
217f412 - 🐛 Preserve hide_read filter when marking aggregate as read
33b7873 - ✨ Add mark-group-read and hide-read toggle to reader
3bfcb47 - 🔀 Merge branch 'feat/issue-2-feed-user-agent'
cdc5e00 - ✨ Follow feed redirects manually, re-validating each hop through the SSRF guard
bd78da3 - ✅ Assert guard execution in allow-path tests, mock DNS in fetch tests
a6674a5 - ✨ Block SSRF-unsafe feed URLs (schemes, private/loopback/link-local hosts)
4b26273 - 🐛 Address WuMing review: whitespace UA fallback, independent test literal, monkeypatch
224f2b6 - 🐛 Treat empty YUNJIN_HTTP_USER_AGENT as unset
15952f7 - ✅ Lock User-Agent default assertion and isolate env in test
f9b1172 - 🐛 Send browser-like User-Agent when fetching RSS feeds
f669f0c - 🔀 Merge branch 'feat/issue-10-httpx2-migration'
7201df4 - 📝 Update dependency summary in Roadmap.md
c07eef8 - ♻️ Migrate HTTP client from httpx to httpx2
99731f0 - 🔀 Merge branch 'feat/issue-9-justfile'
3e8b960 - fix: replace remaining cang references with yunjin in bumpversion config
a2dd5de - fix: add transitive dependency constraints to resolve pysentry findings
a9f7e8f - chore: remove per-release RELEASE_NOTES_*.md files (single Release-Notes.md from now on)
c26fe8f - wrench: Adopt Marvin8 platform tooling improvements
37ac527 - 📝 Polish pre-commit, justfile, noxfile, and pylock
451a2ae - wrench: Add calver parse/serialize to bumpversion config
a850615 - memo: Add justfile with release recipe
21a67b0 - wrench: Replace uv-ship with bump-my-version in pyproject.toml
d0971ef - 🔀 Merge branch 'feat/issue-1-llm-aggregation'
819d86a - 🚨 Fix ruff violations in test file and wsgi.py
71c49de - 📝 Improve aggregation prompt: group by individual news story not broad topic
e6226d5 - ✨ Replace embedding/DBSCAN aggregation with LLM-based pipeline
424e589 - 🔀 Merge branch 'feat/issue-7-forgejo-actions-ci'
cb10edb - 📝 Migrate to gitleaks git subcommand, clarify CI docs
5e08d4a - 🔧 Allowlist detect-secrets baseline from gitleaks scan
b2f56de - 🐛 Fix gitleaks job scanning /tmp instead of repo, split install step
d873323 - 📝 Address WuMing review: clarify CI docs, add reader row-builder test
250fe3f - 👷 Add Forgejo Actions CI with checks, gitleaks, and WuMing review
3aaf400 - 🔧 Add noxfile.py with ty, ruff, complexipy, and pytest sessions
5cac5f2 - ♻️ Refactor reader index to fix type and complexity errors
d730532 - 🔀 Merge branch 'docs/issue-3-add-agents-md'
fcc3f79 - 📝 CHANGELOG.md is generated by the justfile release recipe
e135123 - 📝 Address review: httpx2 convention, just releases, global release-notes steps
d9801f9 - 📝 Replace LLM_SYSTEM_PROMPT.md with project AGENTS.md
2892ab8 - Docs: Officially abandoning this project. Also commiting latest local work.
c68b09b - Feat: Various improvements around tag extraction, getting full text of news if available in feed, adjust aggregation defaults.
007b778
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
3 downloads
- 🔀 Merge branch 'fix/calendar-release-transition'