mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-07-24 12:44:18 +08:00
7cad61be27
The uninstall hint feature added in f6bdd4bb / 89e2339b printed a copy-pasteable shell command (e.g. `brew uninstall <formula>`, `<sibling-npm> rm -g <pkg>; [ -e bin ] && rm -f bin && rm -rf pkg_dir`) under each detected install in the multi-install conflict panel. Even with copy-only-never-execute UX, putting destructive commands one button away from the user is risk we don't want to ship — `rm -rf` under a misclassified path would be unrecoverable. Conflict diagnostics themselves are kept: users still see the warning banner + per-install row (source / path / version / Default badge), so the "you have multiple installs and the upgrade only touches one" signal survives. They just don't get a one-click destructive command. Backend (src-tauri/src/commands/misc.rs): - Remove `uninstall_command_from_paths` (POSIX + Windows pair). - Remove `posix_quote_for_user_shell` and `win_quote_path_for_user_shell` — both were uninstall-only quoters (whitelist + cmd-only forms). `win_quote_path_for_batch` and `shell_single_quote` stay because the anchored upgrade path and `build_shell_cd_command` still use them. - Remove `quoted_sibling_or_bare` and `quoted_sibling_or_bare_with_ext` thin wrappers (only callers were uninstall branches). - Drop `uninstall_command` and `uninstall_command_needs_cmd_hint` from `ToolInstallation`. Drop the eager `infer_install_source` -> `uninstall_command_from_paths` call in `enumerate_tool_installations` (saves ~16μs per probe but the real point is fewer surprises). - Remove 14 `#[test]` cases for uninstall command shape (brew / homebrew-npm-global / nvm / npm-fallback quoting / pnpm / volta / bun / hermes / system / Windows percent-path) plus 4 `win_quote_path_for_user_shell` helper tests and the `expect_user_shell_quoted_path` test mirror. - Drop the `src()` test helper that was only used to feed the deleted uninstall tests (`infer_install_source` is still called directly by surviving tests). - Cross-references in `anchored_command_from_paths` doc to its now-gone uninstall "dual" are stripped. Frontend (src/components/settings/AboutSection.tsx): - Conflicts `<ul>` keeps the diagnostic header + per-install `ToolInstallRow` but loses the inline command box, the trash + copy icons, the per-row PowerShell-call-operator hint, and the `handleCopyCommand` callback. - Remove the `Trash2` lucide import; `Copy` stays (the install-commands copy button at line 1100 still uses it). API (src/lib/api/settings.ts): - Drop `uninstall_command` and `uninstall_command_needs_cmd_hint` from the `ToolInstallation` TS interface (matches the Rust struct change). i18n (zh / en / ja): - Drop `settings.toolUninstallCopyHint`, `settings.toolUninstallCopied`, `settings.toolUninstallPwshHint`. Other `tool*` and `skills.uninstall*` keys are untouched (Skill uninstall is a separate, non-destructive feature for managing the Skills repo and is unaffected). Stats: 858 deletions, 5 insertions across 6 files. Validated: - cargo test --lib: 1322 passed, 0 failed - cargo fmt --check: clean - cargo build: clean - cargo check --tests: clean - pnpm typecheck: 0 errors - JSON.parse on all three locale files: clean