uttrflow / uttrflow/uttrflow-swift

Automatic update checks cannot be turned off: the Settings switch controls only automatic installs

Open
#667 0 comments 0 reactions 0 assignees View on GitHub
area:general enhancement needs-info P2
Dominant language
Swift
Stars
4
Forks
17
Avg merge
3h 32m
Merged PRs (30d)
277

Description

## What happens

- `Info.plist` sets `SUEnableAutomaticChecks` to true, with `SUScheduledCheckInterval` at 21600, every 6 hours (`Resources/Uttrflow-Info.plist:68-71`).
- At launch the app calls `updates.begin(automatically: settings.installsUpdatesAutomatically)` (`Sources/Uttrflow/AppDelegate.swift:225`).
- `begin` always sets `updater.automaticallyChecksForUpdates = true` (`Sources/Uttrflow/Updates/UpdateController.swift:69`). Only `automaticallyDownloadsUpdates` follows the setting, which defaults to on (`Sources/UttrflowSettings/SettingsStore.swift:91`).

So every running copy contacts `api.uttrflow.com` every 6 hours, and nothing in the app stops it short of blocking the host. Each check is otherwise minimal: `feedParameters` returns nothing (`UpdateController.swift:178-182`, `Docs/app-updates.md:44-47`). The request still reveals the Mac's IP address, the app version (in the user agent) and when the Mac is on.

A related detail for contributors: only `bundle.sh development` strips the feed (`Scripts/bundle.sh:143-145`). A plain `make app` (local mode) keeps the production feed and key, so a contributor's ad-hoc build checks the production server and offers to replace itself with the release.

## Why it matters

The product is sold on staying offline once models are installed. Some users (air-gapped or regulated environments, people on metered links, people who simply want no background traffic) will expect a way to update only when they ask. Sparkle supports this directly.

## Decision needed

1. Offer "Check for updates automatically" as its own switch, with "Install automatically" nested under it, the pattern Sparkle's standard UI uses. Or state in `Docs/offline.md` and the privacy copy that update checks always run.
2. Whether `local` builds should strip the feed as `development` builds do.

## Acceptance criteria

- The choice is reflected in `Docs/app-updates.md` and `Docs/offline.md`.
- If a switch is added, `UpdateController.begin` / `setInstallsAutomatically` honour it, with tests on `UpdateController`'s settings mapping, and "Check Now" keeps working with checks off.

Contributor guide

Open the contributing guide

Research direction

Start with Sources/Uttrflow/Updates/UpdateController.swift, Sources/UttrflowSettings/SettingsStore.swift, and the referenced Info.plist and bundle.sh sections. Trace the settings mapping and existing Check Now behavior, then review Docs/app-updates.md and Docs/offline.md. Done means the chosen check/install behavior, local-build behavior, documentation, and UpdateController settings tests agree.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos, swift
Domain
desktop, documentation
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.