Skip to content

Update system overhaul#1505

Merged
juliusmarminge merged 26 commits intopingdotgg:mainfrom
shivamhwp:update-overhaul
Mar 29, 2026
Merged

Update system overhaul#1505
juliusmarminge merged 26 commits intopingdotgg:mainfrom
shivamhwp:update-overhaul

Conversation

@shivamhwp
Copy link
Copy Markdown
Collaborator

@shivamhwp shivamhwp commented Mar 28, 2026

Supersedes & closes #1123
Supersedes & closes #1116
Fixes : #1204

What Changed

  • Brought over the desktop update workflow from the existing update PRs by cherry-picking their commits so attribution is preserved.
  • Moved the desktop update affordance into a dismissible sidebar footer pill.
  • Added a dedicated About section in Settings alongside General and Archived.
  • Added a single Version card in Settings > About with the current version shown inline next to the label and a contextual update action on the right.
  • Cleaned up the settings UI by removing duplicated section headers from the page body and shortening the sidebar label from Archived threads to Archived.
  • Merged the latest main into this branch and resolved the sidebar update UI conflict in favor of the extracted pill-based workflow.

Why

  • The old update entry points were split across different places and were easy to miss.
  • This keeps the high-visibility sidebar update workflow from one PR while also adding a discoverable manual update entry point in Settings.
  • Keeping the Settings About screen compact avoids duplicate cards and redundant labels, which makes version/update information easier to scan.
  • Cherry-picking the original commits avoids reimplementation and preserves authorship for the existing work.

UI Changes

  • Sidebar:
    • Update status now appears as a dismissible pill above the Settings button in the left sidebar.
  • Settings:
    • Added an About section in the settings sidebar.
    • About now shows a single Version row with the current version inline and the update action on the right.
    • Removed repeated uppercase section titles from the settings content area.
    • Renamed Archived threads to Archived in the settings sidebar.

ps: to better see the ui changes, refer to #1123 and #1116

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

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-check IPC handler and exposes it via DesktopBridge.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 downloadedVersion exists, adds canCheckForUpdate, 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

  • Replaces the title bar update button with a SidebarUpdatePill in the sidebar footer, which supports download, install, architecture warnings, and a dismiss option for the download-available state.
  • Adds an AboutVersionSection to the General Settings panel in Electron builds with a context-aware Check/Download/Install button, error toasts, and confirmation before install.
  • Exposes a new checkForUpdate() method on desktopBridge via the desktop:update-check IPC channel, returning a DesktopUpdateCheckResult with a checked flag and current updater state.
  • Adds useDesktopUpdateState hook that keeps desktop update state in sync with react-query cache via the main process event stream.
  • Behavioral Change: the default tooltip for idle/non-actionable update states changes from "Update available" to "Up to date"; install actions now require user confirmation before proceeding.

Macroscope summarized 2928da6.

Noojuno and others added 14 commits March 29, 2026 04:15
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
# Conflicts:
#	apps/web/src/components/Sidebar.tsx
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 28, 2026

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 539c0f7b-1143-4e34-afef-91f75c78d4e8

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added size:XL 500-999 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 28, 2026
- suppress project clicks after context menus
- return accurate update-check results in desktop
- reuse version title in settings
@shivamhwp shivamhwp changed the title Update system overhaul - wip Update system overhaul Mar 28, 2026
- 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
shivamhwp and others added 2 commits March 29, 2026 06:44
@github-actions github-actions bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). and removed vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Mar 29, 2026
- 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
@github-actions github-actions bot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Mar 29, 2026
@github-actions github-actions bot added size:L 100-499 changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Mar 29, 2026
@juliusmarminge juliusmarminge enabled auto-merge (squash) March 29, 2026 04:21
@juliusmarminge juliusmarminge merged commit f82bae1 into pingdotgg:main Mar 29, 2026
11 checks passed
Copy link
Copy Markdown
Contributor

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

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>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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)
Fix in Cursor Fix in Web

sfncore pushed a commit to sfncore/t3code that referenced this pull request Mar 29, 2026
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Improvement]: Improve T3 Code App Update UX

4 participants