chore: release v0.5.0#38
Conversation
Bumps pyproject.toml version from 0.4.2 to 0.5.0 and finalizes the CHANGELOG by converting [Unreleased] to [0.5.0] - 2026-04-22, with a fresh empty [Unreleased] above for future work. Minor bump is forced by the MIT -> Apache-2.0 license switch (PR #22) among other user-visible changes; see CHANGELOG.md [0.5.0] for the full entry (15 merged PRs since v0.4.2). Pre-release gate (all four satisfied): - scripts/smoke-test.sh: 19/19 pass (version correctly reports 0.5.0) - pytest tests/: 449 passed - ruff check src/ tests/: clean - Live --dry-run session signed off by maintainer on 2026-04-22: - Fresh-clone pip install -e . succeeds (PR #37 verified) - Browser launch, UA masking, subscription scrape, blocklist fetch, list-growth detection, state diff, feed JSON cache, scroll, clean exit all exercised successfully against both deslop and aislist - 0 feed matches reflects well-trained algorithm, not a regression - No POSSIBLE SELECTOR FAILURE warnings After merge, maintainer will tag v0.5.0 and push the tag; publish.yml auto-publishes to PyPI on tag push and github-release creates the release notes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
cmeans
left a comment
There was a problem hiding this comment.
QA Review — PR #38 (release v0.5.0)
Verdict: Ready for QA Signoff
All four pre-release gate items reproduce on my machine; CHANGELOG [0.5.0] entry maps cleanly to git history; [Unreleased] is correctly empty above it. One non-blocking note on the body's PR count (won't ship).
Pre-release gate — re-verified locally
uv buildon a cleandist/→Successfully built dist/yt_dont_recommend-0.5.0.tar.gzand…-0.5.0-py3-none-any.whl. Wheel/sdist both name v0.5.0.pip install -e . --quiet→ succeeds (verifies PR #37's fix is intact on the bumped branch).yt-dont-recommend --version→yt-dont-recommend 0.5.0. Confirms thepyproject.tomlbump propagates through_resolve_version()/_get_current_version().pytest tests/ -q→ 449 passed in 33.94s.ruff check src/ tests/→ all checks passed.bash scripts/smoke-test.sh→ 19/19 PASS, final line:All 19 checks passed — ready to release v0.5.0.- CI all required checks SUCCESS on
chore/release-v0.5.0; mergeable.qa-gateis the only PENDING context — that's the maintainer-appliedQA Approvedgate by design.
CHANGELOG [0.5.0] ↔ git history
Audited the [0.5.0] section against gh pr list --state merged --base main --search "merged:>2026-03-19":
| Section / entry | PR(s) covered |
|---|---|
| Added — QA workflow + label state machine | #19 ✓ |
Added — Stricter _get_current_version fallback |
#35 (closes #32) ✓ |
Added — Coverage push + # pragma: no cover sweep |
#30 ✓ |
| Added — Codecov | #21 ✓ |
| Added — README badges + FUNDING.yml | #20 ✓ |
| Changed — License MIT → Apache-2.0 | #22 (license portion) ✓ |
Fixed — Fresh-clone pip install -e . |
#37 ✓ |
Fixed — Stale python -m yt_dont_recommend examples + CLAUDE.md cleanup + License docstring |
#34 (closes #31) ✓ |
| Fixed — Scheduler catch-up spawn storm | #18 (closes #17) ✓ |
Fixed — workflow_run registration |
#24, #25, #26, #27, #28 (grouped, root cause #28) ✓ |
| Fixed — PyPI badges / Trove classifiers | #22 (PyPI metadata portion) ✓ |
That accounts for 14 substantive PRs (#18, #19, #20, #21, #22, #24, #25, #26, #27, #28, #30, #34, #35, #37). The other three merged PRs since v0.4.2 are CHANGELOG-meta (#29 backfill of #18/#20/#21 entries; #33 fix-misattributions across pre-v0.4.2 entries; #36 fill-Unreleased gaps for #19 and #24-#28) — by design they don't get self-referential entries because their substance IS the entries they added/fixed elsewhere. So the [0.5.0] section is complete.
[Unreleased] shape
## [Unreleased]
## [0.5.0] - 2026-04-22
### Added
…
awk '/^## \[Unreleased\]/{flag=1; next} /^## \[/{flag=0} flag' CHANGELOG.md returns nothing — empty [Unreleased] above [0.5.0]. Correct Keep a Changelog shape for the post-release state.
Note — non-blocking
The PR body says "15 merged PRs since v0.4.2 in total". By literal gh pr list count, 17 PRs have merged into main since v0.4.2 was tagged on 2026-03-19 (#18 #19 #20 #21 #22 #24-#28 #29 #30 #33 #34 #35 #36 #37). The "15" figure looks like it's 17 − {#33, #36} (the two CHANGELOG-meta PRs whose substance lands as entries Dev wrote on behalf of other PRs) — a defensible interpretation, but the "in total" wording reads as a literal headcount. Doesn't affect anything that ships (CHANGELOG entries are accurate; the count claim is body-only and won't make it into the release notes that publish.yml auto-generates from git log v0.4.2..v0.5.0). Worth tightening the wording on the next release PR (e.g. "15 substantive feature/fix PRs (excluding CHANGELOG-meta PRs #33 and #36); 17 merged PRs in total") but not blocking on this round.
After merge — QA reminder for the maintainer
Per CLAUDE.md and project memory, only the maintainer runs git tag v0.5.0 && git push origin v0.5.0. I will not tag.
QA checkboxes ticked. Promoting to Ready for QA Signoff.
Summary
Release PR for v0.5.0 — the first release since v0.4.2 (2026-03-19).
Bumps `pyproject.toml` version `0.4.2 → 0.5.0` and finalizes the `CHANGELOG` by converting the `[Unreleased]` section to `## [0.5.0] - 2026-04-22` with a fresh empty `[Unreleased]` above for future work.
Why minor (not patch)
The `[Unreleased]` section contains the MIT → Apache-2.0 license switch (PR #22). A license change affects downstream compliance and warrants at minimum a minor bump. Published versions at or below 0.4.2 on PyPI remain MIT permanently; v0.5.0 onward is Apache-2.0.
Other user-visible changes that justify a minor:
15 merged PRs since v0.4.2 in total — see `CHANGELOG.md` `[0.5.0]` for the full grouped entry.
Pre-release gate (all four required, all four satisfied)
Clickbait FP assessment is N/A — no clickbait-related changes in `[Unreleased]`.
Release mechanics after merge
After this PR is QA-approved and squash-merged:
I will not tag this release — that's explicitly maintainer-only per project memory.
Test plan