Skip to content

fix(desktop): tell apt, dnf, and AUR users how to update - #13178

Closed
t3dotgg wants to merge 1 commit into
mainfrom
t3code/package-update-message
Closed

t3dotgg wants to merge 1 commit into
mainfrom
t3code/package-update-message

Conversation

@t3dotgg

@t3dotgg t3dotgg commented Sep 23, 2026 •

Copy link
Copy Markdown
Member

On Linux installs that are not an AppImage (AUR today, and .deb and .rpm from #13177), automatic updates are off. The only message says "Automatic updates on Linux require running the AppImage build.", and the sidebar still shows "Check for updates" or "Up to date". Users get no hint that the fix is apt upgrade.

The updater now reads electron-builder's resources/package-type marker and names the command to run:

  • deb: sudo apt update && sudo apt upgrade
  • rpm: sudo dnf upgrade
  • pacman: the AUR helper, for example yay -Syu
  • any other value: the system package manager
  • no marker: unchanged AppImage message

The disabled state carries this text in message. The sidebar and Settings tooltips show it, and a remote update request from another device gets the same reason. The AUR PKGBUILDs now write the pacman marker. electron-updater never starts in these installs, so the marker cannot make it pick a package updater.

Tests: desktop updates (49) and web update logic (32) pass. I did not check this in a running app.

Created with Claude Fable 5.1 and Claude Opus 5.5 in Claude Code.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Linux package installations now display package-specific guidance when automatic updates are unavailable.
    • Update controls show the relevant reason when automatic updates are disabled.
    • Arch Linux packages now identify their package type to provide accurate update guidance.
  • Bug Fixes

    • Improved update-state handling for Linux package installs and AppImage installations.
    • Preserved the correct precedence for AppImage settings and environment-based update configuration.

On Linux deb, rpm, and AUR installs, APPIMAGE is unset, so automatic updates are off. The only reason said the AppImage was required, and the sidebar and settings tooltips still said "Up to date" or "Check for updates".

The updater now reads the electron-builder package-type marker in resourcesPath and picks a reason that names the package manager and the upgrade command. The disabled state carries that reason in message, and the sidebar tooltip and aria-label show it. The AUR PKGBUILDs write the pacman marker.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Sep 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ The exact PR base did not have a successful artifact. Baseline uses the latest successful main measurement shown below.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 13.5 KiB 13.5 KiB +6 B (+0.0%) 15.1 KiB ✅
Codex Thread snapshot wire 7.0 KiB 7.1 KiB +6 B (+0.1%) 7.3 KiB ✅
Codex Live turn WebSocket wire 6.5 KiB 6.5 KiB 0 B (0.0%) 7.8 KiB ✅
Codex Live turn WebSocket decoded 56.3 KiB 56.3 KiB 0 B (0.0%) 66.4 KiB ✅
Codex Live turn messages 10 10 0 (0.0%) 21 ✅
Claude Total thread wire 13.5 KiB 13.5 KiB −26 B (−0.2%) 15.1 KiB ✅
Claude Thread snapshot wire 7.1 KiB 7.1 KiB −9 B (−0.1%) 7.3 KiB ✅
Claude Live turn WebSocket wire 6.5 KiB 6.4 KiB −17 B (−0.3%) 7.8 KiB ✅
Claude Live turn WebSocket decoded 57.0 KiB 57.0 KiB 0 B (0.0%) 66.4 KiB ✅
Claude Live turn messages 9 9 0 (0.0%) 21 ✅

Baseline: 408ff8a · PR result: ec44411 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 114.0 KiB
  • Claude decoded thread snapshot: 114.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@macroscopeapp

macroscopeapp Bot commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at ec44411

Macroscope's review found this PR approvable — This is a small, localized update-message fix: Linux package installs gain accurate apt, dnf, or AUR guidance while updater execution remains unchanged. The added package marker and UI state messaging are covered by focused tests, with no schema, security, deployment, or default-setting changes.

You can add or adjust custom eligibility rules. Learn more.

@coderabbitai

coderabbitai Bot commented Sep 23, 2026

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: pingdotgg/t3code/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 0d36f740-0630-4646-b03c-1f52f95a2fa4

📥 Commits

Reviewing files that changed from the base of the PR and between a493946 and ec44411.

📒 Files selected for processing (8)
  • apps/desktop/src/updates/DesktopUpdates.test.ts
  • apps/desktop/src/updates/DesktopUpdates.ts
  • apps/desktop/src/updates/updatesTestHarness.ts
  • apps/web/src/components/desktopUpdate.logic.test.ts
  • apps/web/src/components/desktopUpdate.logic.ts
  • apps/web/src/components/sidebar/SidebarUpdatePill.tsx
  • packaging/aur/t3code-bin/PKGBUILD
  • packaging/aur/t3code-nightly-bin/PKGBUILD

Included review availability: Your plan provides up to 10 included reviews per hour; 8 remain after this review.


📝 Walkthrough

Walkthrough

Linux packaged builds now identify their package manager through a package-type marker. The desktop updater maps that marker to a disabled-update reason and exposes it in state. The web sidebar displays the reason in the update tooltip.

Changes

Linux update messaging

Layer / File(s) Summary
Package marker resolution
packaging/aur/*/PKGBUILD, apps/desktop/src/updates/updatesTestHarness.ts, apps/desktop/src/updates/DesktopUpdates.ts
Arch packages write a pacman marker. The updater reads the marker from the configured resources directory on Linux packaged builds.
Disabled reason state propagation
apps/desktop/src/updates/DesktopUpdates.ts, apps/desktop/src/updates/DesktopUpdates.test.ts
Package markers map to package-specific instructions. Configure and channel changes propagate the resolved reason into disabled state. Tests cover package markers, precedence, exposed state, and disabled channel changes.
Disabled tooltip display
apps/web/src/components/desktopUpdate.logic.ts, apps/web/src/components/desktopUpdate.logic.test.ts, apps/web/src/components/sidebar/SidebarUpdatePill.tsx
Disabled update tooltips show the provided reason or the fallback Automatic updates are off..

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Bug fix

Suggested reviewers: juliusmarminge, maria-rcks

Merge Risk: ⚪ Minimal · up to ec444

Linux package installs retain disabled automatic updates while showing package-manager-specific guidance in the desktop UI. The changed behavior is covered by targeted tests and is ready to merge.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 37.50% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 8 functions across 6 files. (2 skipped: 2… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: package-specific update instructions for Linux desktop users, including AUR users.
Description check ✅ Passed The description clearly explains what changed, why it changed, affected Linux package types, UI behavior, tests, and the runtime-check limitation. It does not follow the template headings or include t…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 37.50% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 8 functions across 6 files. (2 skipped: 2 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

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

@t3dotgg

t3dotgg commented Sep 24, 2026

Copy link
Copy Markdown
Member Author

Note

🤖 Claude Opus 5.5 responding on behalf of Theo

Folded into #13177 as commit 824474a, so the packages and their update message ship together.

@t3dotgg t3dotgg closed this Sep 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 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.

1 participant