feat: add auto-update system with release checking, notification UI, and install-type-aware apply

- Abstract ReleaseProvider interface (Gitea impl, swappable for GitHub/GitLab)
- Background UpdateService with periodic checks, debounce, dismissed version persistence
- Install type detection (installer/portable/docker/dev) with platform-aware asset matching
- Download with progress events, silent NSIS reinstall, portable ZIP/tarball swap scripts
- Version badge pulse animation, dismissible banner with icon buttons, Settings > Updates tab
- Single source of truth: pyproject.toml version via importlib.metadata, CI stamps tag with sed
- API: GET/POST status, check, dismiss, apply, GET/PUT settings
- i18n: en, ru, zh (27+ keys each)
This commit is contained in:
2026-03-25 13:16:18 +03:00
parent d2b3fdf786
commit 382a42755d
30 changed files with 1750 additions and 44 deletions

View File

@@ -1917,6 +1917,43 @@
"appearance.bg.scanlines": "Scanlines",
"appearance.bg.applied": "Background effect applied",
"settings.tab.updates": "Updates",
"update.status_label": "Update Status",
"update.current_version": "Current version:",
"update.badge_tooltip": "New version available — click for details",
"update.available": "Version {version} is available",
"update.up_to_date": "You are running the latest version",
"update.prerelease": "pre-release",
"update.view_release": "View Release",
"update.dismiss": "Dismiss",
"update.check_now": "Check for Updates",
"update.check_error": "Update check failed",
"update.last_check": "Last check",
"update.never": "never",
"update.release_notes": "Release Notes",
"update.auto_check_label": "Auto-Check Settings",
"update.auto_check_hint": "Periodically check for new releases in the background.",
"update.enable": "Enable auto-check",
"update.interval_label": "Check interval",
"update.channel_label": "Channel",
"update.channel.stable": "Stable",
"update.channel.stable_desc": "Stable releases only",
"update.channel.prerelease": "Pre-release",
"update.channel.prerelease_desc": "Include alpha, beta, and RC builds",
"update.save_settings": "Save Settings",
"update.settings_saved": "Update settings saved",
"update.settings_save_error": "Failed to save update settings",
"update.apply_now": "Update Now",
"update.apply_confirm": "Download and install version {version}? The server will restart automatically.",
"update.apply_error": "Update failed",
"update.applying": "Applying update…",
"update.downloading": "Downloading…",
"update.install_type_label": "Install type:",
"update.install_type.installer": "Windows installer",
"update.install_type.portable": "Portable",
"update.install_type.docker": "Docker",
"update.install_type.dev": "Development",
"color_strip": {
"notification": {
"search_apps": "Search notification apps…"