Description
useUpdateCheck auto-installs updates on click with no version display, no changelog, no confirmation dialog, and errors are never shown to the user (only the installing boolean drives the button).
Current State
src/hooks/useUpdateCheck.ts:30-40 — calls downloadAndInstall() then relaunch() immediately.
src/components/layout/AppShell.tsx:118-135 — renders the "Update Available" button but doesn't display updateAvailable.version or updateAvailable.body.
setInstalling(false) is never reached on success because relaunch() kills the process.
- No
error display path.
Suggested Fix
Verification
Automation Hints
scope: src/hooks/useUpdateCheck.ts, src/components/layout/AppShell.tsx, src/components/update/ (new)
do-not-touch: Rust updater code
approach: add-declarations
risk: low
max-files-changed: 5
blocked-by: none
bail-if: none
Priority
Medium — refund-reducing polish; critical for paid desktop apps.
Description
useUpdateCheckauto-installs updates on click with no version display, no changelog, no confirmation dialog, and errors are never shown to the user (only theinstallingboolean drives the button).Current State
src/hooks/useUpdateCheck.ts:30-40— callsdownloadAndInstall()thenrelaunch()immediately.src/components/layout/AppShell.tsx:118-135— renders the "Update Available" button but doesn't displayupdateAvailable.versionorupdateAvailable.body.setInstalling(false)is never reached on success becauserelaunch()kills the process.errordisplay path.Suggested Fix
updateAvailable.body), "Restart to install" / "Later" buttons.Verification
npm run type-checkpassesAutomation Hints
scope: src/hooks/useUpdateCheck.ts, src/components/layout/AppShell.tsx, src/components/update/ (new)
do-not-touch: Rust updater code
approach: add-declarations
risk: low
max-files-changed: 5
blocked-by: none
bail-if: none
Priority
Medium — refund-reducing polish; critical for paid desktop apps.