Skip to content

feat(uninstaller): force remove option for failed uninstalls#74

Merged
dbfx merged 6 commits intomainfrom
fix/uninstaller-force-remove
Mar 25, 2026
Merged

feat(uninstaller): force remove option for failed uninstalls#74
dbfx merged 6 commits intomainfrom
fix/uninstaller-force-remove

Conversation

@dbfx
Copy link
Contributor

@dbfx dbfx commented Mar 25, 2026

Summary

  • When a program's native uninstaller fails or is cancelled, a Force Remove button now appears in the failure banner
  • Force remove deletes the program's registry entry (reg delete /f) and scans/cleans leftover files
  • Confirmation dialog with warning variant before proceeding
  • Only shown when the program has a registry key (Windows only)

Changes

  • channels.ts — new UNINSTALLER_FORCE_REMOVE channel
  • types.ts — added force-removing to UninstallProgress.phase union
  • program-uninstaller.ts — new deleteRegistryKey() function
  • program-uninstaller.ipc.ts — new force-remove IPC handler
  • preload/index.ts — new uninstallerForceRemove bridge method
  • UninstallerPage.tsx — Force Remove button, confirm dialog, handler, progress display
  • uninstaller.json — i18n keys for force remove UI

Test plan

  • Uninstall a program that fails → "Force Remove" button appears in the red failure banner
  • Click Force Remove → warning confirmation dialog appears
  • Confirm → registry entry is deleted, leftovers are scanned and cleaned
  • Program disappears from list on success
  • If registry delete fails (needs admin), error message is shown
  • npm test passes (1891 tests)

🤖 Generated with Claude Code

dbfx and others added 2 commits March 25, 2026 05:56
Show a loading spinner instead of rendering nothing while the onboarding
IPC check completes. On slow Windows 10 machines the concurrent startup
IPC calls (settings, history, platform, etc.) queue up synchronous file
reads, delaying the onboarding response and leaving users with a blank
window.

Also fix onboarding completion not being reliably persisted — the write
was fire-and-forget so closing the app quickly could lose the flag — and
add missing gameMode to PlatformInfo defaults.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Startup toggle silently returned success even when all registry
operations failed (e.g. HKLM without admin), causing the UI to show
items as disabled until the next refresh. Now returns false when no
critical registry write succeeds, so the optimistic UI update reverts
and an error toast is shown.

Privacy toggle notification was based on intention rather than actual
post-rescan state. When the operation reported no error but the system
state didn't change, the toast still said "Activated". Now compares
pre/post state and shows an admin-required error when unchanged.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3be6369803

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

dbfx and others added 3 commits March 25, 2026 06:21
When a program's native uninstaller fails or is cancelled, show a
"Force Remove" button that deletes the registry entry and cleans
leftover files. Useful for programs with broken or missing uninstallers.

- Add UNINSTALLER_FORCE_REMOVE IPC channel
- Add deleteRegistryKey() service function using reg delete /f
- Add force-remove IPC handler with registry deletion + leftover cleanup
- Add Force Remove button in failure result banner with warning confirm dialog
- Add force-removing progress phase display
- Add i18n keys for force remove UI

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reset lastFailedProgramRef at the start of batch uninstall to prevent
the Force Remove button from targeting a program from a prior single
uninstall failure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@dbfx dbfx force-pushed the fix/uninstaller-force-remove branch from fce1fff to 9387906 Compare March 25, 2026 04:22
@dbfx dbfx merged commit 9571c7c into main Mar 25, 2026
3 checks passed
@dbfx dbfx deleted the fix/uninstaller-force-remove branch March 25, 2026 04:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant