gabriel / muse public
feat minor task/release-default-and-suggest #1 / 1
gabriel · 168 days ago · Apr 13, 2026 · Diff

feat: muse release defaults to list; add muse release suggest

- bare `muse release` (no subcommand) now lists releases — same ergonomics as `muse branch` - `muse release --json` works without a subcommand - new `muse release suggest` infers next version from commit graph sem_ver_bump data: * aggregates max(sem_ver_bump) across all unreleased commits * applies pre-1.0 rules (major break → bump minor in 0.x.y, not cross 1.0) * outputs suggested_tag, inferred_bump, drivers list with breaking_changes * --base <tag> to scope from a specific release, --json for machine output - 21 tests: 6 for default-list ergonomics, 15 for suggest

sha256:443dc4faed3285a2db625b0b3345fe1c0ced2fa29191181c47f1b751d4b27a7b sha
+29 ~9 symbols
sha256:ef64b53636ab420b7f31432f412dc64eb9847f89186b290d48b6bc0db08027f4 snapshot
+29
symbols added
~9
symbols modified
0
dead code introduced
Semantic Changes 38 symbols
~ muse/cli/commands/release.py .py 6 symbols added, 9 symbols modified
+ _BUMP_ORDER variable variable _BUMP_ORDER L643–643
+ _bump_rank function function _bump_rank L646–650
+ SemVerBump import import SemVerBump L103–103
+ get_head_commit_id import import get_head_commit_id L91–91
+ walk_commits_between import import walk_commits_between L91–91
+ run_suggest function function run_suggest L653–822
~ tests/test_release.py .py 23 symbols added
+ TestReleaseDefaultToList class class TestReleaseDefaultToList L748–791
+ test_bare_release_channel_filter method method test_bare_release_channel_filter L782–791
+ test_bare_release_empty_repo_prints_no_releases method method test_bare_release_empty_repo_prints_no_releases L757–761
+ test_bare_release_exits_zero method method test_bare_release_exits_zero L751–755
+ test_bare_release_json_flag method method test_bare_release_json_flag L771–780
+ test_bare_release_lists_existing_releases method method test_bare_release_lists_existing_releases L763–769
+ TestReleaseSuggest class class TestReleaseSuggest L799–978
+ test_base_flag_not_found method method test_base_flag_not_found L952–957
+ test_base_flag_overrides_latest_release method method test_base_flag_overrides_latest_release L935–950
+ test_drivers_list_contains_bumping_commits method method test_drivers_list_contains_bumping_commits L912–922
+ test_json_schema_keys_present method method test_json_schema_keys_present L959–969
+ test_no_commits_no_releases method method test_no_commits_no_releases L802–806
+ test_no_releases_all_none_bumps method method test_no_releases_all_none_bumps L808–814
+ test_no_releases_major_bump method method test_no_releases_major_bump L838–848
+ test_no_releases_minor_bump method method test_no_releases_minor_bump L827–836
+ test_no_releases_patch_bump method method test_no_releases_patch_bump L816–825
+ test_pre_1_0_major_bumps_minor method method test_pre_1_0_major_bumps_minor L899–910
+ test_takes_highest_bump_across_commits method method test_takes_highest_bump_across_commits L850–860
+ test_text_output_contains_suggested_tag method method test_text_output_contains_suggested_tag L971–978
+ test_unreleased_count_excludes_released_commits method method test_unreleased_count_excludes_released_commits L924–933
+ test_with_prior_release_major method method test_with_prior_release_major L886–897
+ test_with_prior_release_minor method method test_with_prior_release_minor L875–884
+ test_with_prior_release_patch method method test_with_prior_release_patch L862–873
← Older Oldest on task/release-default-and-suggest
All commits
Newer → Latest on task/release-default-and-suggest

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:443dc4faed3285a2db625b0b3345fe1c0ced2fa29191181c47f1b751d4b27a7b --body "your comment"