Release version management: single VERSION file as source of truth
- VERSION at repo root (0.1.2); bump it to cut a release - App: generated AppVersion.kt (config-cache-safe Gradle task with VERSION as declared input) shown in Settings; sent to the gateway via X-Iris-App-Version header on the SSE open - Gateway: reports its own version in hello.ack server_caps.app_version (read from the repo-root VERSION via the plugin symlink); stores the app's version in the device registry caps (merge, not overwrite, so an old app reconnecting without the header doesn't wipe it) - Settings: app + gateway version rows, mismatch hint, and a best-effort Gitea latest-release check (ReleaseCheck) with an 'update available' hint - Release workflow: reads VERSION from the repo (no manual input), with a guard against an empty file - Docs: frames.schema.json + 04-wire-protocol.md updated for app_version
This commit is contained in:
1 parent
f3f1b37221
commit
fb980d12b4
17 files changed
+422
-37
No files matched your search
@@ -40,7 +40,8 @@ Pairing succeeded.
|
||||
```json
|
||||
{"type":"hello.ack","payload":{
|
||||
"server_caps":{"streaming":true,"reasoning":true,"tools":true,"media":true,
|
||||
"search":true,"push":"fcm","pickers":true},
|
||||
"search":true,"push":"fcm","pickers":true,
|
||||
"app_version":"0.1.2"},
|
||||
"sync_cursor":1042,
|
||||
"last_pushed_cursor":1040,
|
||||
"device_token":"9f2c…(64 hex)",
|
||||
@@ -48,6 +49,14 @@ Pairing succeeded.
|
||||
}}
|
||||
```
|
||||
|
||||
`server_caps.app_version` is the gateway plugin's release version (the
|
||||
repo-root `VERSION` file, `gateway-plugin/version.py`). The app shows it in
|
||||
Settings → About (next to its own version) and hints when the app and
|
||||
gateway versions differ.
|
||||
The app reports its own version on the SSE open via the
|
||||
`X-Iris-App-Version` header (stored in the device registry's `caps` JSON,
|
||||
visible in `~/.hermes/.../devices.db`).
|
||||
|
||||
`last_pushed_cursor` is the highest outbox cursor already delivered to THIS
|
||||
device via the push backend (0 = never). The app skips system notifications
|
||||
for sync-replayed frames with `cursor <= last_pushed_cursor` — they already
|
||||
|
||||
Reference in new issue
Block a user