• fenliu-3.0.1 7d6c2a57ae

    fenliu-3.0.1
    All checks were successful
    / pr-review (release) Has been skipped
    / checks (release) Successful in 4m13s
    / gitleaks (release) Successful in 13s
    / publish (release) Successful in 43s
    / deploy-docs (release) Successful in 1m50s
    / publish-container (release) Successful in 2m20s
    Stable

    marvin8 released this 2026-09-08 08:19:32 +00:00 | 0 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:B4Q+9pbWSIqGYTl3Ub/FPrBSqAVd2OkCR13hYRG5wek

    [3.0.1] - 2026-09-08

    • Fixed: AI vision now follows media_proxy redirects, so posts with proxy-served attachments get classified instead of remaining pending.
    • Improved: AI replies that arrive empty or unparseable now leave the post pending with a clear log line and key response diagnostics instead of a JSONDecodeError traceback.
    • Fixed: warnings and errors that carry an exception (a failed model API call, for example) now include the full traceback in the console log, instead of dropping it.

    Commits

    • 🔀 Merge branch 'fix/issue-106-handle-empty-ai-content' ad0e9ed
    • 📝 (fenliu) precise release-note wording per review 118e1a6
    • 🐛 (fenliu) keep exception tracebacks in the console log eca12f1
    • 📝 (fenliu) fix tense in empty-content release note 765733a
    • (fenliu) force logger level in diagnostics log-capture tests 152b710
    • 🚨 (fenliu) harden malformed AI reply envelope handling 5ae0a76
    • (fenliu) assert reasoning_content=present in diagnostics test c64524c
    • 🚨 (fenliu) bound and repr-escape model reply diagnostics 6e62dc2
    • ♻️ (fenliu) split classify_posts per stage to satisfy complexity limit fdc7f70
    • 🐛 (fenliu) leave post pending and log diagnostics when AI returns empty content 1a3c9a5
    • 🔀 Merge branch 'fix/issue-105-follow-media-proxy-redirects' 4f96511
    • 🐛 (fenliu) stop alembic fileConfig disabling existing loggers ea42a15
    • 📝 (fenliu) say the image type is inferred from the file extension 30fa687
    • 📝 (fenliu) backtick image/jpeg and smooth release-note sentence f25f2b3
    • 📝 (fenliu) polish release-note wording and tighten redirect-test patch 5af9684
    • 🔧 re-run CI: transient runner failures (pysentry segfault, known flaky test) 49634a1
    • ⬆️ bump deps and pre-commit hooks, fix deprecated asyncio call f10eac6
    • 🐛 (fenliu) follow redirects when downloading media_proxy images 789dffa
    • 🔧 bump: version 2026.8.15 → 2026.8.30 df714c4
    • docs(zhongli): update changelog for 2026.8.30 e6f9026
    • ⬆️ bump deps and auto reformat by ruff 0959514
    Downloads
  • zhongli-2026.8.30 df714c4284

    zhongli-2026.8.30
    All checks were successful
    / pr-review (release) Has been skipped
    / deploy-docs (release) Has been skipped
    / publish-container (release) Successful in 3m40s
    / gitleaks (release) Successful in 22s
    / checks (release) Successful in 2m17s
    / publish (release) Successful in 34s
    Stable

    marvin8 released this 2026-08-29 22:56:39 +00:00 | 20 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:B4Q+9pbWSIqGYTl3Ub/FPrBSqAVd2OkCR13hYRG5wek

    [2026.8.30] - 2026-08-30

    Commits

    • ⬆️ bump deps and auto reformat by ruff 0959514
    • 🔧 bump: version 2.0.0 → 3.0.0 2cfe0c0
    • docs(fenliu): update changelog for 3.0.0 a3e333d
    • 🔀 Merge branch 'feat/issue-100-generic-ai-classification' 53415d0
    • 💄 show the text stage reason on AI reject badges 45eb47a
    • 📝 retitle fetch pipeline section, de-cat vision_category docs bbfcbce
    • 🔒 instruct vision model to treat the image as untrusted data 9ff581f
    • 🔀 Merge branch 'feat/issue-100-badge-and-docs' into feat/issue-100-generic-ai-classification 513be5c
    • 📝 remove stale nightly AI batch docs, document inline classification 6a21023
    • 💄 neutral AI badge fallback and docs sweep 40831d0
    • 🔀 Merge branch 'feat/issue-100-rename-ai-verdict-columns' into feat/issue-100-generic-ai-classification 7ea648e
    • verify data survives the downgrade rename d61db4c
    • 📝 clarify release-note wording for topic-specific flags a0b7697
    • ♻️ rename AI verdict columns to neutral semantics 229607a
    • 🔀 Merge branch 'feat/issue-100-ai-prompts' into feat/issue-100-generic-ai-classification 71d3bd6
    • 🔒 fail vision verdict closed on non-boolean is_accepted 14490bf
    • 🔒 harden text classifier against prompt injection 8715284
    • 📝 align release-note wording with the prompts terminology 0d99458
    • call-site tests for AI prompt loading 491212f
    • reset settings cache in test teardown via try/finally 56b1a3f
    • ⬆️ bumped deps 44b1930
    • 💄 AI prompt textareas on the settings page be0c3e0
    • read AI prompts from app settings per fetch batch af2aa4c
    • exercise the empty-value fallback branch in get_str_setting tests f0e31cd
    • add get_str_setting to the settings cache e9c5fcb
    • ♻️ rename classifiers to neutral flag/accept semantics 746f9ed
    • add prompt assembly with pinned JSON output contracts 7b40f6c
    Downloads
  • fenliu-3.0.0 2cfe0c0ff2

    fenliu-3.0.0
    All checks were successful
    / pr-review (release) Has been skipped
    / publish (release) Successful in 51s
    / gitleaks (release) Successful in 31s
    / checks (release) Successful in 2m59s
    / deploy-docs (release) Successful in 1m44s
    / publish-container (release) Successful in 3m16s
    Stable

    marvin8 released this 2026-08-22 21:52:25 +00:00 | 23 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:B4Q+9pbWSIqGYTl3Ub/FPrBSqAVd2OkCR13hYRG5wek

    [3.0.0] - 2026-08-23

    • The AI verdict fields in the posts API are now text_flagged and vision_accepted (was text_is_promotional / vision_is_real_cat) — topic-neutral names matching the configurable prompts.
    • The AI classification prompts are now editable on the settings page, so one Fenliu instance can curate any topic — not just cats.
    • The AI reject badge now shows the actual reason when the text stage rejected a post (it previously just said "promotional"), and the vision category (e.g. comic) for vision-stage rejects.

    Commits

    • 🔀 Merge branch 'feat/issue-100-generic-ai-classification' 53415d0
    • 💄 show the text stage reason on AI reject badges 45eb47a
    • 📝 retitle fetch pipeline section, de-cat vision_category docs bbfcbce
    • 🔒 instruct vision model to treat the image as untrusted data 9ff581f
    • 🔀 Merge branch 'feat/issue-100-badge-and-docs' into feat/issue-100-generic-ai-classification 513be5c
    • 📝 remove stale nightly AI batch docs, document inline classification 6a21023
    • 💄 neutral AI badge fallback and docs sweep 40831d0
    • 🔀 Merge branch 'feat/issue-100-rename-ai-verdict-columns' into feat/issue-100-generic-ai-classification 7ea648e
    • verify data survives the downgrade rename d61db4c
    • 📝 clarify release-note wording for topic-specific flags a0b7697
    • ♻️ rename AI verdict columns to neutral semantics 229607a
    • 🔀 Merge branch 'feat/issue-100-ai-prompts' into feat/issue-100-generic-ai-classification 71d3bd6
    • 🔒 fail vision verdict closed on non-boolean is_accepted 14490bf
    • 🔒 harden text classifier against prompt injection 8715284
    • 📝 align release-note wording with the prompts terminology 0d99458
    • call-site tests for AI prompt loading 491212f
    • reset settings cache in test teardown via try/finally 56b1a3f
    • ⬆️ bumped deps 44b1930
    • 💄 AI prompt textareas on the settings page be0c3e0
    • read AI prompts from app settings per fetch batch af2aa4c
    • exercise the empty-value fallback branch in get_str_setting tests f0e31cd
    • add get_str_setting to the settings cache e9c5fcb
    • ♻️ rename classifiers to neutral flag/accept semantics 746f9ed
    • add prompt assembly with pinned JSON output contracts 7b40f6c
    • 🔧 bump: version 2026.8.4 → 2026.8.15 1798c56
    • docs(zhongli): update changelog for 2026.8.15 c8fb293
    • 📝 update fenliu .env.example de98c9e
    Downloads
  • zhongli-2026.8.15 1798c56943

    zhongli-2026.8.15
    All checks were successful
    / pr-review (release) Has been skipped
    / deploy-docs (release) Has been skipped
    / publish (release) Successful in 31s
    / gitleaks (release) Successful in 17s
    / checks (release) Successful in 3m7s
    / publish-container (release) Successful in 4m13s
    Stable

    marvin8 released this 2026-08-15 00:40:21 +00:00 | 49 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:B4Q+9pbWSIqGYTl3Ub/FPrBSqAVd2OkCR13hYRG5wek

    [2026.8.15] - 2026-08-15

    Commits

    • 📝 update fenliu .env.example de98c9e
    • 🔧 bump: version 1.3.5 → 2.0.0 b965777
    • docs(fenliu): update changelog for 2.0.0 87c2f11
    • ⬆️ bump deps 98a09ba
    • 🔀 Merge branch 'feat/issue-80-collect' 645b52d
    • 🔀 Merge branch 'feat/issue-97-sqlite-locking' into feat/issue-80-collect 8128841
    • 🐛 fix SQLite 'database is locked' under concurrent fetches 5e125af
    • 🔀 Merge branch 'feat/issue-96-classify-manual-fetch' into feat/issue-80-collect c592953
    • ⬆️ bump deps 10485ef
    • classify posts on manual fetch paths too f2a8e14
    • 🔀 Merge branch 'feat/issue-94-wire-ai-auto-reject' into feat/issue-80-collect dca551f
    • wire AI auto-reject into the fetch flow 723a3e0
    • 📝 add prose follow-up posts to Release-Notes eae71f6
    • 🔀 Merge branch 'feat/issue-91-remove-stale-review-template' into feat/issue-80-collect c0b1eaf
    • 🔥 remove stale review.html template 545f0e5
    • 🔀 Merge branch 'feat/issue-85-auto-reject-reason' into feat/issue-80-collect ac71032
    • ♻️ rename reviewer_notes to auto_reject_reason and drop duplicate 8ab5cc8
    • 🔀 Merge branch 'feat/issue-83-alembic-drift' into feat/issue-80-collect 08ede21
    • 🐛 fix flaky tests: per-request ContextVar overrides replace patch() isolation b22895b
    • add schema-reconciliation metadata test 801124a
    • 🗃️ reconcile models with DB and drop legacy api_key d87c940
    • 🔀 Merge branch 'feat/issue-87-review-filter-fixes' into feat/issue-80-collect f2ef56a
    • 🐛 fix checkbox filter value parsing and dropdown width a56bd67
    • 🐛 fix AI review filters applying and tidy filter bar f06605d
    • 🔀 Merge branch 'feat/issue-84-inline-vision' into feat/issue-80-collect fe01986
    • 🐛 set SECRET_KEY in AI tests to fix flaky app startup 0bf8f26
    • ♻️ classify images inline instead of via batch API 46ae38a
    • 🔀 Merge branch 'feat/issue-80-remove-ml-add-vision-ai' into feat/issue-80-collect 17bc44c
    • 📝 track stale review.html cleanup in TODO fd7669a
    • 📝 document AI classification and update release notes c7cb138
    • add AI badge and filters to review UI 5246c44
    • wire AI classification into scheduler 80d22ca
    • add overnight batch vision processor 2b3b504
    • 🗃️ add AI classification columns 02a2897
    • add AI text and vision classifiers c65e1a6
    • add AI classification settings fdcec0f
    • 🔥 remove XGBoost ML and spam scorer 31c716b
    • 🔧 point source references at forge.marvin8.zone 2d481d3
    • 🔧 bump: version 1.3.4 → 1.3.5 20b21ec
    • docs(fenliu): update changelog for 1.3.5 71ff15f
    • 🔀 Merge branch 'fix/issue-78-page-size-dropdown' c3cffbd
    • 🐛 Wrap page size select in form so change event reaches server 34c9619
    • 🐛 Handle parse_qs list values in handle_set_page_size 3ab7ac5
    • Also assert posts unchanged on invalid page size 46cea58
    • Add tests for handle_set_page_size 02ea11e
    • 🐛 Add missing name attribute to page size select c903545
    Downloads
  • fenliu-2.0.0 b965777ddf

    fenliu-2.0.0
    All checks were successful
    / pr-review (release) Has been skipped
    / publish (release) Successful in 36s
    / gitleaks (release) Successful in 21s
    / checks (release) Successful in 2m32s
    / deploy-docs (release) Successful in 1m53s
    / publish-container (release) Successful in 2m40s
    Stable

    marvin8 released this 2026-08-15 00:34:56 +00:00 | 52 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:B4Q+9pbWSIqGYTl3Ub/FPrBSqAVd2OkCR13hYRG5wek

    [2.0.0] - 2026-08-15

    • Replaced the XGBoost ML model and spam scorer with an AI image and text classifier that flags non-cat images and promotional posts for review.
    • Renamed the posts API reviewer_notes field to auto_reject_reason (it was only ever written by the auto-reject system, never by a human reviewer).

    Commits

    • ⬆️ bump deps 98a09ba
    • 🔀 Merge branch 'feat/issue-80-collect' 645b52d
    • 🔀 Merge branch 'feat/issue-97-sqlite-locking' into feat/issue-80-collect 8128841
    • 🐛 fix SQLite 'database is locked' under concurrent fetches 5e125af
    • 🔀 Merge branch 'feat/issue-96-classify-manual-fetch' into feat/issue-80-collect c592953
    • ⬆️ bump deps 10485ef
    • classify posts on manual fetch paths too f2a8e14
    • 🔀 Merge branch 'feat/issue-94-wire-ai-auto-reject' into feat/issue-80-collect dca551f
    • wire AI auto-reject into the fetch flow 723a3e0
    • 📝 add prose follow-up posts to Release-Notes eae71f6
    • 🔀 Merge branch 'feat/issue-91-remove-stale-review-template' into feat/issue-80-collect c0b1eaf
    • 🔥 remove stale review.html template 545f0e5
    • 🔀 Merge branch 'feat/issue-85-auto-reject-reason' into feat/issue-80-collect ac71032
    • ♻️ rename reviewer_notes to auto_reject_reason and drop duplicate 8ab5cc8
    • 🔀 Merge branch 'feat/issue-83-alembic-drift' into feat/issue-80-collect 08ede21
    • 🐛 fix flaky tests: per-request ContextVar overrides replace patch() isolation b22895b
    • add schema-reconciliation metadata test 801124a
    • 🗃️ reconcile models with DB and drop legacy api_key d87c940
    • 🔀 Merge branch 'feat/issue-87-review-filter-fixes' into feat/issue-80-collect f2ef56a
    • 🐛 fix checkbox filter value parsing and dropdown width a56bd67
    • 🐛 fix AI review filters applying and tidy filter bar f06605d
    • 🔀 Merge branch 'feat/issue-84-inline-vision' into feat/issue-80-collect fe01986
    • 🐛 set SECRET_KEY in AI tests to fix flaky app startup 0bf8f26
    • ♻️ classify images inline instead of via batch API 46ae38a
    • 🔀 Merge branch 'feat/issue-80-remove-ml-add-vision-ai' into feat/issue-80-collect 17bc44c
    • 📝 track stale review.html cleanup in TODO fd7669a
    • 📝 document AI classification and update release notes c7cb138
    • add AI badge and filters to review UI 5246c44
    • wire AI classification into scheduler 80d22ca
    • add overnight batch vision processor 2b3b504
    • 🗃️ add AI classification columns 02a2897
    • add AI text and vision classifiers c65e1a6
    • add AI classification settings fdcec0f
    • 🔥 remove XGBoost ML and spam scorer 31c716b
    • 🔧 point source references at forge.marvin8.zone 2d481d3
    Downloads
  • fenliu-1.3.5 20b21ecf40

    fenliu-1.3.5
    All checks were successful
    / pr-review (release) Has been skipped
    / checks (release) Successful in 5m44s
    / gitleaks (release) Successful in 16s
    / publish (release) Successful in 40s
    / deploy-docs (release) Successful in 1m53s
    / publish-container (release) Successful in 7m56s
    Stable

    marvin8 released this 2026-08-04 06:24:18 +00:00 | 89 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:B4Q+9pbWSIqGYTl3Ub/FPrBSqAVd2OkCR13hYRG5wek

    [1.3.5] - 2026-08-04

    • Fixed: page size dropdown on the review page now correctly reloads with the selected number of posts.

    Commits

    • 🔀 Merge branch 'fix/issue-78-page-size-dropdown' c3cffbd
    • 🐛 Wrap page size select in form so change event reaches server 34c9619
    • 🐛 Handle parse_qs list values in handle_set_page_size 3ab7ac5
    • Also assert posts unchanged on invalid page size 46cea58
    • Add tests for handle_set_page_size 02ea11e
    • 🐛 Add missing name attribute to page size select c903545
    • 🔧 bump: version 2026.7.20 → 2026.8.4 3944ce9
    • docs(zhongli): update changelog for 2026.8.4 388ce2d
    Downloads
  • zhongli-2026.8.4 3944ce9090

    zhongli-2026.8.4
    All checks were successful
    / pr-review (release) Has been skipped
    / deploy-docs (release) Has been skipped
    / publish (release) Successful in 26s
    / gitleaks (release) Successful in 24s
    / checks (release) Successful in 3m13s
    / publish-container (release) Successful in 2m47s
    Stable

    marvin8 released this 2026-08-03 20:56:19 +00:00 | 97 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:B4Q+9pbWSIqGYTl3Ub/FPrBSqAVd2OkCR13hYRG5wek

    [2026.8.4] - 2026-08-04

    Commits

    • 🔧 bump: version 1.3.3 → 1.3.4 6476c6a
    • docs(fenliu): update changelog for 1.3.4 55db5df
    • 🔧 bump deps eb1b8f8
    • docs(fenliu): update changelog for 1.3.4 d39f582
    • 🔀 Merge branch 'migrate/codeberg-to-forge-marvin8-zone' b08c433
    • 👷 Trigger CI re-run (zaojun segfault) 068d097
    • 🐛 Fix docs links per review feedback 7273cbf
    • ⬆️ Bump dependencies f18adda
    • 👷 Trigger CI re-run (transient Codeberg 504) 8d649c8
    • 🚨 Fix ruff PLR0913/PLR0917 noqa directives for ruff v0.16.1 2011498
    • 🚚 Update Codeberg references to forge.marvin8.zone 3c2b88f
    • 🔧 Switch weekly CI runner from codeberg-small-lazy to suanni c4c7ef8
    • 📝 reset Release-Notes.md for next release 440dff2
    • 📝 reset Release-Notes.md for next release f48cd95
    Downloads
  • fenliu-1.3.4 6476c6abd5

    fenliu-1.3.4
    All checks were successful
    / pr-review (release) Has been skipped
    / checks (release) Successful in 8m10s
    / gitleaks (release) Successful in 22s
    / publish (release) Successful in 31s
    / publish-container (release) Successful in 7m23s
    / deploy-docs (release) Successful in 1m36s
    Stable

    marvin8 released this 2026-08-03 20:53:55 +00:00 | 99 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:B4Q+9pbWSIqGYTl3Ub/FPrBSqAVd2OkCR13hYRG5wek

    [1.3.4] - 2026-08-04

    Commits

    • 🔧 bump deps eb1b8f8
    • 🔀 Merge branch 'migrate/codeberg-to-forge-marvin8-zone' b08c433
    • 👷 Trigger CI re-run (zaojun segfault) 068d097
    • 🐛 Fix docs links per review feedback 7273cbf
    • ⬆️ Bump dependencies f18adda
    • 👷 Trigger CI re-run (transient Codeberg 504) 8d649c8
    • 🚨 Fix ruff PLR0913/PLR0917 noqa directives for ruff v0.16.1 2011498
    • 🚚 Update Codeberg references to forge.marvin8.zone 3c2b88f
    • 🔧 Switch weekly CI runner from codeberg-small-lazy to suanni c4c7ef8
    • 📝 reset Release-Notes.md for next release 440dff2
    • 📝 reset Release-Notes.md for next release f48cd95
    • 🔧 bump: version 2026.6.30 → 2026.7.20 bd45689
    • docs(zhongli): update changelog for 2026.7.20 037af35
    • 🏷️ add OCI manifest annotations to container builds 435537d
    Downloads
  • zhongli-2026.7.20 bd45689929

    marvin8 released this 2026-07-20 07:31:23 +00:00 | 113 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:cyGOzvyFNw+A8J/LVjRif8v3KZLo8seQDVZbk/IhNhI

    [2026.7.20] - 2026-07-20

    • Container images now published to registry.marvin8.zone/marvin8/zhongli on each release

    Commits

    • 🏷️ add OCI manifest annotations to container builds 435537d
    • 🔧 bump: version 1.3.2 → 1.3.3 2e3c394
    • docs(fenliu): update changelog for 1.3.3 678077d
    • 🔀 Merge branch 'feat/container-publish-and-modernization' 5fe0731
    • 📝 note container publishing in Release-Notes 29dab0f
    • 🚚 publish-container: switch to registry.marvin8.zone; add OCI build-args 9039389
    • 🏷️ add OCI labels to fenliu and zhongli Containerfiles f6dbaa3
    • 👷 weekly-checks: use setup-uv action; remove ai-review.yml (merged into per-package CI) 75664c4
    • 👷 zhongli CI: add pr-review, publish-container; release triggers; checksum-verified gitleaks a6338c4
    • 👷 fenliu CI: add pr-review, publish-container; release triggers; checksum-verified gitleaks f56a1c2
    • ⬆️ bump deps: ruff 0.15.22, ty 0.0.61, uv 0.11.29 fd3d7c9
    • 🔧 add ruff-format, ruff-check, complexipy pre-commit hooks; align revs 61ad545
    • ♻️ apply ruff autofixes: py312 upgrades, format both packages d8ea83e
    • 🔧 align ruff.toml: TID252, py312 target, consistent ignores; enable zhongli format check e42b6cd
    • 🎉 add AGENTS.md at all levels, LICENSE.md, .editorconfig; symlink CLAUDE.md deccae9
    • 🔀 Merge branch 'feat/issue-69-forgejo-actions-release-notes' b29eeff
    • 📝 recombine Security-Audit detail into main file, comply with Yilan format 1fb5109
    • 📝 remove spurious trailing em dash from Release-Notes version line f98f575
    • 🔧 fix: delete duplicate fenliu-docs.yml, correct grebedoc URL, update CLAUDE.md CI path abf6674
    • 📝 update CLAUDE.md files and RELEASE-COMMANDS.md for new CI and release workflow 65799a2
    • 🔥 remove Woodpecker CI, cliff.toml, and git-cliff dependency 906b5f1
    • 👷 add ai-review and weekly-checks Forgejo Actions workflows 28512f7
    • 👷 add zhongli Forgejo Actions CI 2e3c7e8
    • 👷 add fenliu Forgejo Actions CI 611dec0
    • 🔧 refactor zhongli justfile: drop git-cliff, add fediverse recipes 71b1446
    • 🔧 refactor fenliu justfile: drop git-cliff, add fediverse recipes 5c9b5b4
    • 📝 add Release-Notes templates and bumpversion config cb67b5f
    • ⬆️ bump deps a4b8d10
    • 📝 add ai-declaration.md 1b4ce73
    • 🔧 bump: version 1.3.1 → 1.3.2 8cf7249
    • docs(fenliu): update changelog for 1.3.2 1f21ff8
    • 🔧 correct docs site url 90d7268
    • 🔧 bump: version 1.3.0 → 1.3.1 b8df681
    • docs(fenliu): update changelog for 1.3.1 ea8fc3c
    • Merge branch 'feat/issue-66-ml-integrity-and-docs-publish' 51f1958
    • 📝 fix chmod 750 phrasing and mkdocs repo_url 54c3424
    • 📝 fix ML model security docs: remove incorrect read-only volume advice e97a04f
    • 📝 update fenliu mkdocs site_url to fenliu.marvin.zone b4e2c29
    • 👷 add Forgejo Action to publish fenliu docs to grebedoc daf0da5
    • 📝 document ML model volume security in container deployment aa07882
    • 🔒 add SHA-256 manifest to ML artifact save/load 82c73fe
    • add artifact integrity verification tests ac79dcc
    • 🔧 bump: version 1.2.0 → 1.3.0 ecee33d
    • 🔧 bump version 3391aa0
    • 🔧 bump: version 1.1.2 → 1.2.0 9597f2e
    • docs(fenliu): update changelog for 1.2.0 e9f8254
    • Merge branch 'feat/phase-c-ml-integration' fc6f420
    • 📝 tick off completed Phase C checklist items d09901a
    • 🔧 exclude any fenliu*db files from git 0199026
    • fix liveview tests for ml_confidence_preset and dynamic default sort 8e9f234
    • replace ML confidence range inputs with Likely Approve/Unsure/Likely Reject preset eaee4d1
    • add per-page selector to review queue (20 / 50 / 100) f6a0456
    • 🔧 revert postsTable id and remove dead CSS rules 9da9f31
    • 🔧 add missing id=postsTable to activate dead CSS rules e6f887d
    • 🔧 restore top-align on ml and engagement cells via td-scoped selectors 44c3680
    • 🔧 fix ml header alignment, narrow and center engagement column 24f4e10
    • 🔧 top-align ml-cell, stack engagement icons vertically 899ac7e
    • 📝 add ML confidence docs and update integration guide e596d1c
    • 🔧 fix retraining job: offload to thread, reload service, prevent dir leak bc7b2bf
    • add nightly ML retraining job to scheduler ef02989
    • add ML confidence range filter to review queue 4714810
    • add uncertainty-first queue sort for ML confidence 8be5ef5
    • 🔧 fix ML badge color thresholds and rename css variable 5ef2660
    • add ML confidence badge and missing-model banner to review UI e8cf8a8
    • score posts with ML model at fetch time d63b0ad
    • 🔧 rename single-letter vars in ml_inference test f84127a
    • add MLInferenceService with graceful degradation f2f76b8
    • add ml_confidence_score column to Post and PostResponse c872b72
    • 📝 document restart on failed healthcheck e540eb3
    • 🔧 fix up healthchecks for zhongli container 891a162
    Downloads
  • fenliu-1.3.3 2e3c394eba

    fenliu-1.3.3 Stable

    marvin8 released this 2026-07-20 04:25:58 +00:00 | 116 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:cyGOzvyFNw+A8J/LVjRif8v3KZLo8seQDVZbk/IhNhI

    [1.3.3] - 2026-07-20

    • 💥 Container images now published to registry.marvin8.zone/marvin8/fenliu on each release

    Commits

    • 🔀 Merge branch 'feat/container-publish-and-modernization' 5fe0731
    • 📝 note container publishing in Release-Notes 29dab0f
    • 🚚 publish-container: switch to registry.marvin8.zone; add OCI build-args 9039389
    • 🏷️ add OCI labels to fenliu and zhongli Containerfiles f6dbaa3
    • 👷 weekly-checks: use setup-uv action; remove ai-review.yml (merged into per-package CI) 75664c4
    • 👷 zhongli CI: add pr-review, publish-container; release triggers; checksum-verified gitleaks a6338c4
    • 👷 fenliu CI: add pr-review, publish-container; release triggers; checksum-verified gitleaks f56a1c2
    • ⬆️ bump deps: ruff 0.15.22, ty 0.0.61, uv 0.11.29 fd3d7c9
    • 🔧 add ruff-format, ruff-check, complexipy pre-commit hooks; align revs 61ad545
    • ♻️ apply ruff autofixes: py312 upgrades, format both packages d8ea83e
    • 🔧 align ruff.toml: TID252, py312 target, consistent ignores; enable zhongli format check e42b6cd
    • 🎉 add AGENTS.md at all levels, LICENSE.md, .editorconfig; symlink CLAUDE.md deccae9
    • 🔀 Merge branch 'feat/issue-69-forgejo-actions-release-notes' b29eeff
    • 📝 recombine Security-Audit detail into main file, comply with Yilan format 1fb5109
    • 📝 remove spurious trailing em dash from Release-Notes version line f98f575
    • 🔧 fix: delete duplicate fenliu-docs.yml, correct grebedoc URL, update CLAUDE.md CI path abf6674
    • 📝 update CLAUDE.md files and RELEASE-COMMANDS.md for new CI and release workflow 65799a2
    • 🔥 remove Woodpecker CI, cliff.toml, and git-cliff dependency 906b5f1
    • 👷 add ai-review and weekly-checks Forgejo Actions workflows 28512f7
    • 👷 add zhongli Forgejo Actions CI 2e3c7e8
    • 👷 add fenliu Forgejo Actions CI 611dec0
    • 🔧 refactor zhongli justfile: drop git-cliff, add fediverse recipes 71b1446
    • 🔧 refactor fenliu justfile: drop git-cliff, add fediverse recipes 5c9b5b4
    • 📝 add Release-Notes templates and bumpversion config cb67b5f
    • ⬆️ bump deps a4b8d10
    • 📝 add ai-declaration.md 1b4ce73
    Downloads