Skip to content

Comments

feat: add disable update checks setting in the general settings#1627

Open
Starz099 wants to merge 2 commits intoCapSoftware:mainfrom
Starz099:fix/issue-1607
Open

feat: add disable update checks setting in the general settings#1627
Starz099 wants to merge 2 commits intoCapSoftware:mainfrom
Starz099:fix/issue-1607

Conversation

@Starz099
Copy link

@Starz099 Starz099 commented Feb 21, 2026

Fixes #1607 Add a setting to always ignore updates.

Summary

This PR introduces a user setting that allows disabling automatic update checks.
When enabled, the application will skip checking for updates entirely.

Changes

  • Added a new boolean field disable_update_checks in GeneralSettingsStore
  • Implemented a toggle in the General Settings menu using ToggleSettingItem
  • Updated update.tsx to skip update checks via an early return when the setting is enabled
  • Added a dedicated signal for disabled update check state in updates.tsx.
  • Updated new-main/index.tsx to skip automatic update checks on app startup when disabled

Result

Users now have full control over whether the app performs update checks.

Preview

image
image

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

4 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

Comment on lines 15 to 21
const settings = await generalSettingsStore.get();
const isDisabled = settings?.disableUpdateChecks ?? false;

if(isDisabled) {
setUpdateError("Update checks are currently disabled.");
return;
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Setting only checked in update.tsx, but automatic update check in new-main/index.tsx:920 (createUpdateCheck) ignores this setting - updates will still be checked on app launch

Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src/routes/(window-chrome)/update.tsx
Line: 15-21

Comment:
Setting only checked in `update.tsx`, but automatic update check in `new-main/index.tsx:920` (`createUpdateCheck`) ignores this setting - updates will still be checked on app launch

How can I resolve this? If you propose a fix, please make it concise.

@richiemcilroy
Copy link
Member

Hey! Thanks so much for the contribution. Will make a proper review soon. Just checking why you need this option? When releasing new updates our goal is to fix important bugs (sometimes critical) etc - would love to hear your thoughts here 😄

const settings = await generalSettingsStore.get();
const isDisabled = settings?.disableUpdateChecks ?? false;

if(isDisabled) {
Copy link

Choose a reason for hiding this comment

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

Using updateError for the “disabled” state shows the manual download/support copy below, which reads like a failure.

Suggested change
if(isDisabled) {
if (isDisabled) {
setUpdateError(
"Automatic update checks are disabled. Re-enable them in Settings, or download the latest version from cap.so/download.",
);
return;
}

export type StudioRecordingMeta = { segment: SingleSegment } | { inner: MultipleSegments }
export type StudioRecordingStatus = { status: "InProgress" } | { status: "NeedsRemux" } | { status: "Failed"; error: string } | { status: "Complete" }
export type SystemDiagnostics = { macosVersion: MacOSVersionInfo | null; availableEncoders: string[]; screenCaptureSupported: boolean; metalSupported: boolean; gpuName: string | null }
export type SystemDiagnostics = { windowsVersion: WindowsVersionInfo | null; gpuInfo: GpuInfoDiag | null; allGpus: AllGpusInfo | null; renderingStatus: RenderingStatus; availableEncoders: string[]; graphicsCaptureSupported: boolean; d3D11VideoProcessorAvailable: boolean }
Copy link

Choose a reason for hiding this comment

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

This file looks generated, and this SystemDiagnostics shape change (macOS → Windows + GPU diagnostics) feels unrelated to the update-setting change. Worth double-checking this was intentionally regenerated from the canonical source and isn’t platform-specific output (e.g. generated on Windows) that could break other builds.

Comment on lines +933 to +936
const generalSettings = await generalSettingsStore.get();

if (generalSettings?.disableUpdateChecks ?? false) return;

Copy link

Choose a reason for hiding this comment

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

Nice to see the startup update check gated too. One small thing: if generalSettingsStore.get() throws, it currently shows the “Unable to check for updates” dialog even though the updater check never ran. You can make settings-load failures non-fatal and also clean up the whitespace-only lines.

Suggested change
const generalSettings = await generalSettingsStore.get();
if (generalSettings?.disableUpdateChecks ?? false) return;
let disableUpdateChecks = false;
try {
disableUpdateChecks =
(await generalSettingsStore.get())?.disableUpdateChecks ?? false;
} catch (e) {
console.warn("Failed to load general settings:", e);
}
if (disableUpdateChecks) return;

Comment on lines 15 to +22
try {
const generalSettings = await generalSettingsStore.get();

if (generalSettings?.disableUpdateChecks ?? false) {
setUpdatesDisabled(true);
return;
}

Copy link

Choose a reason for hiding this comment

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

Same idea here: separating settings-load errors from updater-check errors avoids showing “Unable to check for updates” just because settings couldn’t be read.

Suggested change
try {
const generalSettings = await generalSettingsStore.get();
if (generalSettings?.disableUpdateChecks ?? false) {
setUpdatesDisabled(true);
return;
}
let disableUpdateChecks = false;
try {
disableUpdateChecks =
(await generalSettingsStore.get())?.disableUpdateChecks ?? false;
} catch (e) {
console.warn("Failed to load general settings:", e);
}
if (disableUpdateChecks) {
setUpdatesDisabled(true);
return;
}

Comment on lines +35 to +41
<Show when={updatesDisabled()}>
<div class="flex flex-col gap-4 items-center text-center max-w-md">
<p class="text-[--text-primary]">Update checks are currently disabled.</p>
<p class="text-[--text-tertiary]">To enable updates, go to General Settings and disable "Disable Update Checks".</p>
<Button onClick={() => navigate("/")}>Go Back</Button>
</div>
</Show>
Copy link

Choose a reason for hiding this comment

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

Minor formatting nit: this block’s indentation is a bit off compared to the rest of the file and will likely get rewritten by the formatter.

Suggested change
<Show when={updatesDisabled()}>
<div class="flex flex-col gap-4 items-center text-center max-w-md">
<p class="text-[--text-primary]">Update checks are currently disabled.</p>
<p class="text-[--text-tertiary]">To enable updates, go to General Settings and disable "Disable Update Checks".</p>
<Button onClick={() => navigate("/")}>Go Back</Button>
</div>
</Show>
<Show when={updatesDisabled()}>
<div class="flex flex-col gap-4 items-center text-center max-w-md">
<p class="text-[--text-primary]">Update checks are currently disabled.</p>
<p class="text-[--text-tertiary]">
To enable updates, go to General Settings and re-enable update checks.
</p>
<Button onClick={() => navigate("/")}>Go Back</Button>
</div>
</Show>

@Starz099
Copy link
Author

Starz099 commented Feb 22, 2026

Hey! Thanks so much for the contribution. Will make a proper review soon. Just checking why you need this option? When releasing new updates our goal is to fix important bugs (sometimes critical) etc - would love to hear your thoughts here 😄

This mainly comes from cases where users intentionally stay on a specific version (for stability, compatibility, or workflow reasons). Repeated update prompts can become disruptive when they’ve already decided not to upgrade.

The goal isn’t to discourage updates, but to give users control, they can still manually check whenever they choose to upgrade. Happy to adjust wording/UX if you’d prefer this framed differently.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Setting to always ignore updates

2 participants