gabriel / muse public
fix BREAKING task/fix-whoami-ergonomics #1 / 1
gabriel · 169 days ago · Apr 12, 2026 · Diff

fix: collapse muse whoami into muse auth whoami

muse whoami was a top-level convenience alias for muse auth whoami — two commands doing the same thing is confusing surface area. Deleted the standalone command and its tests.

muse auth whoami now falls back to listing all identities from ~/.muse/identity.toml when no --hub flag or repo hub config is present, instead of erroring. Identity is global, not per-repo — requiring repo context to answer 'who am I?' was the wrong invariant.

Also fixed muse code migrate regression: the command existed in muse/cli/commands/migrate.py but was never imported or registered in app.py. Added import + migrate.register(code_subs) in alphabetical position.

sha256:103409678875d0c4ff864cd7a1401fb600691af8b3dafd7ca3c1c72562151aa2 sha
+1 ~107 −79 symbols
sha256:73ac23fdbe16b11516e5d7acd172d05ee88a822abe54bf4673f233be3ac578df snapshot
+1
symbol added
~107
symbols modified
−79
symbols removed
0
dead code introduced
Semantic Changes 187 symbols
~ muse/cli/commands/whoami.py .py 18 symbols removed
− _WhoamiJson class class _WhoamiJson L47–53
− _build_entry_json function function _build_entry_json L56–67
− _print_text function function _print_text L70–84
− ExitCode import import ExitCode L40–40
− IdentityEntry import import IdentityEntry L41–41
− TypedDict import import TypedDict L37–37
− annotations import import annotations L31–31
− argparse import import argparse L33–33
− get_hub_url import import get_hub_url L39–39
− json import import json L34–34
− list_all_identities import import list_all_identities L41–41
− load_identity import import load_identity L41–41
− logging import import logging L35–35
− sanitize_display import import sanitize_display L42–42
− sys import import sys L36–36
− logger variable variable logger L44–44
− register function function register L87–100
− run function function run L103–136
~ tests/test_cmd_whoami.py .py 15 symbols removed
− _env function function _env L40–41
− _init_repo function function _init_repo L27–37
− cli variable variable cli L17–17
− CliRunner import import CliRunner L15–15
− Manifest import import Manifest L14–14
− annotations import import annotations L7–7
− json import import json L9–9
− pathlib import import pathlib L10–10
− pytest import import pytest L12–12
− runner variable variable runner L19–19
− test_whoami_all_flag_available function function test_whoami_all_flag_available L69–72
− test_whoami_exits_cleanly_or_with_user_error function function test_whoami_exits_cleanly_or_with_user_error L55–60
− test_whoami_help function function test_whoami_help L49–52
− test_whoami_json_flag_available function function test_whoami_json_flag_available L63–66
− test_whoami_short_flags_accepted function function test_whoami_short_flags_accepted L80–87
~ tests/test_cmd_whoami_hardening.py .py 45 symbols removed
− _HUB variable variable _HUB L33–33
− _HUB_URL variable variable _HUB_URL L34–34
− _IdentityMap variable variable _IdentityMap L17–17
− _WhoamiOut class class _WhoamiOut L37–43
− _invoke function function _invoke L46–48
− _invoke_lock variable variable _invoke_lock L31–31
− _make_identity function function _make_identity L51–68
− _patch_identity function function _patch_identity L72–80
− cli variable variable cli L29–29
− CliRunner import import CliRunner L26–26
− Generator import import Generator L23–23
− IdentityEntry import import IdentityEntry L27–27
− InvokeResult import import InvokeResult L26–26
− TypedDict import import TypedDict L23–23
− annotations import import annotations L15–15
− contextmanager import import contextmanager L22–22
− json import import json L19–19
− patch import import patch L24–24
− pathlib import import pathlib L20–20
− threading import import threading L21–21
− runner variable variable runner L30–30
− test_all_json_each_entry_has_key_set_bool function function test_all_json_each_entry_has_key_set_bool L239–249
− test_all_json_emits_array function function test_all_json_emits_array L226–236
− test_all_json_is_single_json_value function function test_all_json_is_single_json_value L252–257
− test_ansi_injection_in_handle function function test_ansi_injection_in_handle L131–142
− test_ansi_injection_in_hub function function test_ansi_injection_in_hub L145–156
− test_build_entry_json_capabilities_included function function test_build_entry_json_capabilities_included L104–108
− test_build_entry_json_empty_capabilities_omitted function function test_build_entry_json_empty_capabilities_omitted L111–115
− test_build_entry_json_handle_and_fingerprint function function test_build_entry_json_handle_and_fingerprint L118–123
− test_build_entry_json_key_set_is_bool_false function function test_build_entry_json_key_set_is_bool_false L96–101
− test_build_entry_json_key_set_is_bool_true function function test_build_entry_json_key_set_is_bool_true L88–93
− test_help_mentions_all function function test_help_mentions_all L309–311
− test_help_mentions_json function function test_help_mentions_json L304–306
− test_json_capabilities_list function function test_json_capabilities_list L193–199
− test_json_key_set_false_when_no_key function function test_json_key_set_false_when_no_key L174–180
− test_json_key_set_is_not_string function function test_json_key_set_is_not_string L183–190
− test_json_schema_all_fields function function test_json_schema_all_fields L164–171
− test_no_hub_configured_exits_1 function function test_no_hub_configured_exits_1 L265–268
− test_no_identities_for_all_exits_1 function function test_no_identities_for_all_exits_1 L277–280
− test_no_identity_stored_exits_1 function function test_no_identity_stored_exits_1 L271–274
− test_short_a_flag_is_all function function test_short_a_flag_is_all L215–223
− test_short_j_flag_is_json function function test_short_j_flag_is_json L207–212
− test_stress_all_json_50_hubs function function test_stress_all_json_50_hubs L319–334
− test_text_all_shows_multiple_hubs function function test_text_all_shows_multiple_hubs L292–301
− test_text_shows_handle_and_type function function test_text_shows_handle_and_type L283–289
~ muse/cli/commands/auth.py .py 1 symbol modified
← Older Oldest on task/fix-whoami-ergonomics
All commits
Newer → Latest on task/fix-whoami-ergonomics

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:103409678875d0c4ff864cd7a1401fb600691af8b3dafd7ca3c1c72562151aa2 --body "your comment"