Update system overhaul#1505
Conversation
Move the desktop update button from the sidebar header to the footer, displayed as a pill above the Settings button. The pill shows contextual states: "Update available", "Downloading (X%)", and "Restart to update". Add a dismiss button that hides the notification until the next app launch.
Move all desktop update UI (pill + arm64 warning) into a single SidebarUpdatePill component that owns its own state subscription, action handlers, and dismiss logic. Removes ~220 lines from Sidebar.tsx.
Use the original Alert component with title and description for the arm64 Intel build warning, remove redundant action button since the update pill handles it, and match sidebar font size with text-xs.
Restore real bridge subscription and isElectron checks that were hardcoded for local testing.
Add checkForUpdate IPC channel so the web renderer can trigger an update check on demand. Surface a Check for Updates button in Settings > About (desktop only) with contextual labels and error handling. - Add DesktopUpdateCheckResult type and DesktopBridge.checkForUpdate() - Wire UPDATE_CHECK_CHANNEL in preload and main process IPC handler - Add canCheckForUpdate/getCheckForUpdateButtonLabel logic helpers - Add DesktopUpdateCheckSection component in settings About section - Guard IPC handler when updater is not configured (local/dev builds) - Add 15 unit tests for new logic functions Closes pingdotgg#1107
…ion/status maps for button label with tooltip from getDesktopUpdateButtonTooltip
… instead of misleading 'Update available'
# Conflicts: # apps/web/src/components/Sidebar.tsx
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
- suppress project clicks after context menus - return accurate update-check results in desktop - reuse version title in settings
# Conflicts: # apps/web/src/components/Sidebar.tsx
- Move the About section into the General settings page - Remove About from the settings sidebar and redirect /settings/about to General - Fix desktop update button disabled state handling
- centralize desktop update query access in a shared hook - keep React Query cache in sync with bridge update events - treat downloaded updates as non-recheckable
Co-authored-by: codex <codex@users.noreply.github.com>
- Remove the sidebar update button and surface updates through the pill - Add a shared install confirmation message before restarting - Update pill styling and spacing for the new layout
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
| <TriangleAlertIcon /> | ||
| <AlertTitle>Intel build on Apple Silicon</AlertTitle> | ||
| <AlertDescription>{arm64Description}</AlertDescription> | ||
| </Alert> |
There was a problem hiding this comment.
Duplicate ARM64 Intel build warnings in sidebar
Medium Severity
The new SidebarUpdatePill renders its own "Intel build on Apple Silicon" alert in the sidebar footer, but the pre-existing ARM64 warning in the Sidebar content area (inside SidebarContent) was never removed. Both are rendered in the !isOnSettings branch, so Apple Silicon users running Intel builds see two simultaneous warnings — one at the top of the project list and one above the Settings button.
Additional Locations (1)
Upstream changes (v0.0.15): - Refactor projection pipeline side effects (pingdotgg#1512) - Inline sqlite error classification (pingdotgg#1515) - DrainableWorker drain off outstanding count (pingdotgg#1514) - Thread archiving with archivedAt (pingdotgg#1505-related migrations) - Auto-generate first-turn thread titles (pingdotgg#1375) - Keyboard shortcuts for sidebar threads (pingdotgg#1456) - Various UI fixes (sidebar, settings, markdown links) Conflict resolution: - ProjectionPipeline.ts: took upstream (our REINDEX workaround no longer needed with doltlite canDefer=0 fix) - Migrations.ts: renumbered our 016-018 to 019-021, keeping upstream's 016-018 (CanonicalizeModelSelections, ArchivedAt) - ProjectionThreads.ts, orchestration.ts: took upstream (archiving) - Sidebar files: took upstream (new features) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>


Supersedes & closes #1123
Supersedes & closes #1116
Fixes : #1204
What Changed
Aboutsection in Settings alongsideGeneralandArchived.Versioncard inSettings > Aboutwith the current version shown inline next to the label and a contextual update action on the right.Archived threadstoArchived.maininto this branch and resolved the sidebar update UI conflict in favor of the extracted pill-based workflow.Why
Aboutscreen compact avoids duplicate cards and redundant labels, which makes version/update information easier to scan.UI Changes
Aboutsection in the settings sidebar.Aboutnow shows a singleVersionrow with the current version inline and the update action on the right.Archived threadstoArchivedin the settings sidebar.ps: to better see the ui changes, refer to #1123 and #1116
Checklist
Note
Medium Risk
Touches the Electron auto-update surface area (new IPC endpoint and update-check control flow) and reshapes how update state is triggered/consumed in the UI, which could impact update reliability and user flows if miswired.
Overview
Refactors the desktop update UX: removes the old header/titlebar update button and replaces it with a dismissible sidebar footer update pill, plus a new Settings → About version row that can check/download/install updates with contextual labels/tooltips.
Adds a new
desktop:update-checkIPC handler and exposes it viaDesktopBridge.checkForUpdate()so the renderer can trigger an update check and receive{ checked, state }. Update state is now synced through a shared React Query cache (useDesktopUpdateState/setDesktopUpdateStateQueryData), and installing updates now prompts for confirmation warning that running tasks will be interrupted.Updates desktop update decision logic (e.g., prefer install when
downloadedVersionexists, addscanCheckForUpdate, adjusts default tooltip copy) and includes associated test coverage.Written by Cursor Bugbot for commit 2928da6. This will update automatically on new commits. Configure here.
Note
Move desktop update controls to sidebar footer pill and Settings panel
SidebarUpdatePillin the sidebar footer, which supports download, install, architecture warnings, and a dismiss option for the download-available state.AboutVersionSectionto the General Settings panel in Electron builds with a context-aware Check/Download/Install button, error toasts, and confirmation before install.checkForUpdate()method ondesktopBridgevia thedesktop:update-checkIPC channel, returning aDesktopUpdateCheckResultwith acheckedflag and current updater state.useDesktopUpdateStatehook that keeps desktop update state in sync with react-query cache via the main process event stream.Macroscope summarized 2928da6.