• 0.4.0 b61b81474b

    0.4.0
    All checks were successful
    / pr-review (push) Has been skipped
    / gitleaks (push) Successful in 18s
    / pr-review (release) Has been skipped
    / gitleaks (release) Successful in 18s
    / checks (push) Successful in 2m40s
    / publish (push) Has been skipped
    / checks (release) Successful in 2m26s
    / deploy-docs (release) Has been skipped
    / publish (release) Successful in 30s
    / deploy-docs (push) Successful in 1m18s
    Stable

    marvin8 released this 2026-08-20 09:59:06 +00:00 | 4 commits to main since this release

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

    [0.4.0] - 2026-08-20

    • Same-date episodes now sort in a stable, deterministic order.
    • Generated opml.xml now includes a dateModified timestamp.
    • Episode chapters are now exposed via Podcast 2.0 (<podcast:chapters>).
    • Invalid parent_dir and base_url now fail with clear, actionable errors.

    Commits

    • 🔧 add config to automatically update version number in Release-Notes.md on release 3e4cf89
    • 🔀 Merge branch 'feat/issue-31-podcast-chapters' 1f0a82f
    • ✏️ clarify chapters sidecar naming and location in docs db9c3e4
    • 🔥 remove superseded concept.md and improvements.md 4ca6b34
    • 📝 document chapters in integration guide, README, and AGENTS.md b04fe68
    • ✏️ clarify chapters docs wording 7afa833
    • 🐛 harden chapters parsing against malformed info.json shapes b632164
    • ✏️ clarify chapters emitted only when non-empty 6b9feb8
    • emit Podcast 2.0 chapters from ytdl-sub info.json be6f3a6
    • 🔀 Merge branch 'feat/issue-30-documentation' 9888a06
    • 📝 docs: record concept decisions, update integration guide, add README example and troubleshooting 3c62a2e
    • 🔀 Merge branch 'feat/issue-29-edge-case-tests' 1e4d3da
    • create placeholder audio files in the 100+ episodes test 8e036f7
    • add edge-case tests for emoji, BOM, long titles, and 100+ episodes a05339d
    • 🔀 Merge branch 'feat/issue-28-feed-opml-metadata' b4ba927
    • ✏️ reword width/height item as a decision, not an addition 411e5f5
    • 📝 mark completed improvements; add OPML metadata release notes ca70d2e
    • 🔥 omit hardcoded itunes:image dimensions (per #28 decision) 47a3cbc
    • 🐛 use locale-independent format_datetime for OPML dateModified 9db1f9d
    • add itunes:image dimensions, OPML dateModified, and missing-feed warning 1eb3ba9
    • 🔀 Merge branch 'feat/issue-27-deterministic-sort-url-helper' 628ee94
    • 🔧 align pre-commit revs with pyproject and bump zaojun to 1.7.4 c8d11f3
    • ✏️ clarify release notes antecedent 5fbfa24
    • ⬆️ deps: bump cyclopts, complexipy, prek, ruff, ty, uv e369154
    • 📝 add release notes for deterministic episode ordering 078ace4
    • ♻️ extract shared URL-building helpers into urls.py 354d7e9
    • 🐛 sort same-date episodes deterministically by filename 790bd2b
    • 🔀 Merge branch 'feat/issue-26-cli-validation' e921d50
    • add coverage for lowercase http:// base_url a2445c5
    • assert actionable message in invalid-port test a54ffe3
    • 🐛 reject whitespace hosts and invalid ports in base_url c31383e
    • 🐛 validate hostname not netloc, rejecting empty and whitespace hosts 035823c
    • 🐛 require a host in base_url, rejecting hostless http(s):// URLs 415247d
    • 🐛 normalize base_url scheme check to be case-insensitive b8297e5
    • validate parent_dir and base_url with actionable errors ddd26ca
    • 🔀 Merge branch 'chore/rename-claude-md-references' 4c8e1c6
    • 📝 revert CHANGELOG renames — historical entries keep CLAUDE.md wording 3dbd3f8
    • 📝 fix CHANGELOG entry — CLAUDE.md is the symlink, not AGENTS.md 68c9e01
    • 📝 rename CLAUDE.md references to AGENTS.md ce3add8
    Downloads