Help → About gains a "Check for updates" button that fetches the latest GitHub release, semver-compares it to clideVersion, and shows the result inline: up-to-date, available (with a tappable link to the release notes), or a clear error. clide's first and only outbound HTTP call — a plain GET with no user data, run ONLY on this explicit tap, never on a launch path or a timer. So it's D-64-clean with no amendment; a background/periodic poll stays deferred (would need the narrow opt-in amendment first). The fetch is injectable so no test touches the network. compareSemver handles 2.3.10 > 2.3.9 and ranks pre-releases below their release. Closes T-492 (P1); the release-channel CI for downloadable signed packages is T-491, and download/ apply (P2/P3) depend on it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
32 lines
1.7 KiB
JSON
32 lines
1.7 KiB
JSON
{
|
|
"menu.file": { "translation": "File" },
|
|
"menu.view": { "translation": "View" },
|
|
"menu.help": { "translation": "Help" },
|
|
"about.version": { "translation": "Version" },
|
|
"about.commit": { "translation": "Commit" },
|
|
"about.built": { "translation": "Built" },
|
|
"about.repository": { "translation": "Repository" },
|
|
"about.checkUpdates": { "translation": "Check for updates" },
|
|
"about.checking": { "translation": "Checking…" },
|
|
"about.upToDate": { "translation": "You're on the latest version." },
|
|
"about.updateAvailable": { "translation": "clide {version} is available — release notes" },
|
|
"about.updateFailed": { "translation": "Couldn't check for updates" },
|
|
"licenses.heading": { "translation": "Bundled dependencies" },
|
|
"licenses.unavailable": { "translation": "Licenses unavailable." },
|
|
"licenses.loading": { "translation": "Loading…" },
|
|
"button.close": { "translation": "Close" },
|
|
"button.cancel": { "translation": "Cancel" },
|
|
"button.open": { "translation": "Open" },
|
|
"button.opening": { "translation": "Opening…" },
|
|
"button.ok": { "translation": "OK" },
|
|
"dialog.openProject.title": { "translation": "Open project" },
|
|
"dialog.openProject.body": { "translation": "Enter the path to a git repository." },
|
|
"dialog.openProject.error": { "translation": "Not a git repository" },
|
|
"dialog.notRepo.title": { "translation": "No git repo found" },
|
|
"dialog.notRepo.body": { "translation": "A clide project root requires a git repository." },
|
|
"command.file.openFolder": { "translation": "File: Open Folder…" },
|
|
"command.file.newWindow": { "translation": "File: New Window" },
|
|
"command.file.closeWorkspace": { "translation": "File: Close Project" },
|
|
"command.help.about": { "translation": "Help: About clide" }
|
|
}
|