feat: add option to disable update checker #502

Merged
ZacharyZcR merged 2 commits from feat/disable-update-checker into dev-1.10.1 2026-01-13 06:02:24 +00:00
29 changed files with 48 additions and 60057 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1957,6 +1957,9 @@
"terminalSettings": "Terminal", "terminalSettings": "Terminal",
"hostSidebarSettings": "Host & Sidebar", "hostSidebarSettings": "Host & Sidebar",
"snippetsSettings": "Snippets", "snippetsSettings": "Snippets",
"updateSettings": "Updates",
"disableUpdateCheck": "Disable Update Check",
"disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.",
"currentPassword": "Current Password", "currentPassword": "Current Password",
"passwordChangedSuccess": "Password changed successfully! Please log in again.", "passwordChangedSuccess": "Password changed successfully! Please log in again.",
"failedToChangePassword": "Failed to change password. Please check your current password and try again.", "failedToChangePassword": "Failed to change password. Please check your current password and try again.",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -160,6 +160,8 @@ export function Dashboard({
const uptimeInfo = await getUptime(); const uptimeInfo = await getUptime();
setUptime(uptimeInfo.formatted); setUptime(uptimeInfo.formatted);
const updateCheckDisabled = localStorage.getItem("disableUpdateCheck") === "true";
if (!updateCheckDisabled) {
const versionInfo = await getVersionInfo(); const versionInfo = await getVersionInfo();
setVersionText(`v${versionInfo.localVersion}`); setVersionText(`v${versionInfo.localVersion}`);
if ( if (
@@ -168,6 +170,7 @@ export function Dashboard({
) { ) {
setVersionStatus(versionInfo.status); setVersionStatus(versionInfo.status);
} }
}
try { try {
await getDatabaseHealth(); await getDatabaseHealth();

View File

@@ -30,6 +30,11 @@ export function ElectronVersionCheck({
const lineColor = isDarkMode ? "#151517" : "#f9f9f9"; const lineColor = isDarkMode ? "#151517" : "#f9f9f9";
useEffect(() => { useEffect(() => {
const updateCheckDisabled = localStorage.getItem("disableUpdateCheck") === "true";
if (updateCheckDisabled) {
onContinue();
return;
}
if (isElectron()) { if (isElectron()) {
checkForUpdates(); checkForUpdates();
} else { } else {

View File

@@ -133,6 +133,9 @@ export function UserProfile({
const saved = localStorage.getItem("showHostTags"); const saved = localStorage.getItem("showHostTags");
return saved !== null ? saved === "true" : true; return saved !== null ? saved === "true" : true;
}); });
const [disableUpdateCheck, setDisableUpdateCheck] = useState<boolean>(
localStorage.getItem("disableUpdateCheck") === "true",
);
const [userRoles, setUserRoles] = useState<UserRole[]>([]); const [userRoles, setUserRoles] = useState<UserRole[]>([]);
useEffect(() => { useEffect(() => {
@@ -212,6 +215,11 @@ export function UserProfile({
window.dispatchEvent(new Event("showHostTagsChanged")); window.dispatchEvent(new Event("showHostTagsChanged"));
}; };
const handleDisableUpdateCheckToggle = (enabled: boolean) => {
setDisableUpdateCheck(enabled);
localStorage.setItem("disableUpdateCheck", enabled.toString());
};
const handleDeleteAccount = async (e: React.FormEvent) => { const handleDeleteAccount = async (e: React.FormEvent) => {
e.preventDefault(); e.preventDefault();
setDeleteLoading(true); setDeleteLoading(true);
@@ -613,6 +621,28 @@ export function UserProfile({
</div> </div>
</div> </div>
</div> </div>
<div className="rounded-lg border-2 border-edge bg-elevated p-4">
<h3 className="text-lg font-semibold mb-4">
{t("profile.updateSettings")}
</h3>
<div className="space-y-4">
<div className="flex items-center justify-between">
<div>
<Label className="text-foreground-secondary">
{t("profile.disableUpdateCheck")}
</Label>
<p className="text-sm text-muted-foreground mt-1">
{t("profile.disableUpdateCheckDesc")}
</p>
</div>
<Switch
checked={disableUpdateCheck}
onCheckedChange={handleDisableUpdateCheckToggle}
/>
</div>
</div>
</div>
</TabsContent> </TabsContent>
<TabsContent value="security" className="space-y-4"> <TabsContent value="security" className="space-y-4">