feat(release): publish desktop updates from a tag through one feed

Desktop clients had two competing update sources: the runtime pointed at a
legacy GitLab registry while the Forgejo packages were filled in by
hardcoded, version-pinned scripts. Operators could not tell which feed was
authoritative, and no release could be reproduced from a tag.

Auto-update now reads a single canonical Forgejo registry feed, updated by
a version-agnostic publisher that runs from the tag on Forgejo, GitLab, and
GitHub CI alike. Channel, minimum supported version, forced install,
full-versus-delta thresholds, staged rollout, and a remote kill switch come
from one policy file the client fetches alongside the feed. Tag creation is
gated on a clean tree, matching version surfaces, and a changelog section.
This commit is contained in:
Yun Chan 2026-09-16 23:23:00 +09:00
parent 65ecc7aabc
commit 7953706142
21 changed files with 1619 additions and 90 deletions

34
package-lock.json generated
View file

@ -154,40 +154,6 @@
"@rollup/rollup-win32-x64-msvc": "^4.60.1"
}
},
"apps/mobile": {
"name": "@d3ro/mobile",
"version": "1.1.0",
"extraneous": true,
"dependencies": {
"@d3ro/api-client": "file:../../packages/api-client",
"@d3ro/core": "file:../../packages/core",
"@d3ro/i18n": "file:../../packages/i18n",
"@d3ro/ui-native": "file:../../packages/ui-native",
"@react-native-async-storage/async-storage": "1.23.1",
"@supabase/supabase-js": "^2.45.0",
"expo": "~51.0.0",
"expo-av": "~14.0.0",
"expo-constants": "~16.0.0",
"expo-device": "~6.0.0",
"expo-linking": "~6.3.0",
"expo-notifications": "~0.28.0",
"expo-router": "~3.5.0",
"expo-secure-store": "~13.0.0",
"expo-status-bar": "~1.12.0",
"expo-web-browser": "~13.0.0",
"react": "18.2.0",
"react-native": "0.74.0",
"react-native-gesture-handler": "~2.16.0",
"react-native-reanimated": "~3.10.0",
"react-native-safe-area-context": "4.10.0",
"react-native-screens": "3.31.0",
"react-native-url-polyfill": "^2.0.0"
},
"devDependencies": {
"@types/react": "~18.2.0",
"typescript": "^5.7.0"
}
},
"apps/mobile-rn": {
"name": "@d3ro/mobile-rn",
"version": "1.1.0",