Skip to content

feat: add uninstall dry-run mode - #46359

Closed
teknium1 wants to merge 1 commit into
mainfrom
nanoclaw-port/uninstall-dry-run
Closed

feat: add uninstall dry-run mode#46359
teknium1 wants to merge 1 commit into
mainfrom
nanoclaw-port/uninstall-dry-run

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

Summary

hermes uninstall --dry-run now prints the uninstall plan without stopping services or deleting files.

Ported the useful safety affordance from nanocoai/nanoclaw#2719: Hermes already has a mature uninstaller, but no no-op preview mode for operators to inspect scope before running it.

Changes

  • hermes_cli/subcommands/uninstall.py: adds --dry-run
  • hermes_cli/uninstall.py: prints a non-mutating plan for gateway cleanup, PATH cleanup, wrappers/symlinks, GUI artifacts, code checkout, and data removal/preservation
  • tests/hermes_cli/test_uninstall_dry_run.py: verifies dry-run skips _perform_uninstall and the parser accepts the flag

Validation

Check Result
python3 -m pytest tests/hermes_cli/test_uninstall_dry_run.py -q 2 passed
scripts/run_tests.sh tests/hermes_cli/test_uninstall_dry_run.py tests/hermes_cli/test_uninstall_node_symlinks.py tests/hermes_cli/test_gui_uninstall.py 27 passed

Source

Infographic

Uninstall dry-run mode

Port from nanocoai/nanoclaw#2719: let operators preview the uninstall plan without stopping services or deleting files.
@github-actions

Copy link
Copy Markdown
Contributor

🔎 Lint report: nanoclaw-port/uninstall-dry-run vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 10904 on HEAD, 10902 on base (🆕 +2)

🆕 New issues (2):

Rule Count
unresolved-attribute 2
First entries
tests/run_agent/test_credits_notices_toggle.py:76: [unresolved-attribute] unresolved-attribute: Unresolved attribute `_credits_session_start_micros` on type `AIAgent`
run_agent.py:2920: [unresolved-attribute] unresolved-attribute: Object of type `Self@get_credits_spent_micros` has no attribute `_credits_session_start_micros`

✅ Fixed issues (1):

Rule Count
invalid-assignment 1
First entries
tests/run_agent/test_credits_notices_toggle.py:76: [invalid-assignment] invalid-assignment: Object of type `None` is not assignable to attribute `_credits_session_start_micros` of type `int`

Unchanged: 5733 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

@alt-glitch alt-glitch added type/feature New feature or request comp/cli CLI entry point, hermes_cli/, setup wizard P3 Low — cosmetic, nice to have labels Jun 15, 2026
@teknium1

teknium1 commented Jul 7, 2026

Copy link
Copy Markdown
Contributor Author

Merged via salvage PR #60111 (branch here was ~3000 commits stale; commit 4e502ad cherry-picked onto current main with authorship preserved). Landed as 4916897.

@teknium1 teknium1 closed this Jul 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard P3 Low — cosmetic, nice to have type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants