Skip to content

App: send the compatibility level and show Update required - #28

Merged
lakaniemi merged 4 commits into
mainfrom
feat/app-compat-level
Nov 9, 2026
Merged

lakaniemi merged 4 commits into
mainfrom
feat/app-compat-level

Conversation

@lakaniemi

Copy link
Copy Markdown
Owner

What and why

The app half of the API compatibility level, App baseline slice, item 4 in the roadmap (specs/README.md). The API half is #27.

  • Every request carries App-Compat-Level (appCompatLevel = 1).
  • When the API answers app_outdated, the client flips a flag, and UpdateGate replaces the whole app with the "Update required" screen. Its button opens the latest APK on GitHub.
  • No Restart yet. That comes with the Over-the-air updates slice.

This must land before Release APKs, so that no installed app lacks the handling. It fixes the APK's asset name as life-app.apk, which the release workflow has to use.

Size

About 129 logic lines (added plus removed).

How to review

Start with app/src/api/compat.ts and the change in client.ts. Then features/app-update/. The gate is a component rather than a conditional in _layout.tsx, to keep the route file thin. The docs only link the new code and name the APK.

Testing

npm run lint, npm run typecheck and npm test pass. Tests cover the header, app_outdated flipping the flag (and other codes not), the gate, and the screen's button.

Not tried on a device or emulator: the end-to-end check from the plan (raise the API's minimum locally and see the screen).

🤖 Generated with Claude Code

lakaniemi and others added 4 commits November 9, 2026 20:19
Every request carries App-Compat-Level. When the API answers with
app_outdated, the client flips a flag that the next commit's screen
reads. It is handled in the client, not the query cache, so mutations
and one-off calls are covered too.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
When the API has turned the app away, UpdateGate replaces the whole app
with a screen that links to the latest APK on GitHub. The release
workflow will have to attach the APK as life-app.apk. Restart for
over-the-air updates comes with that slice.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Fixes the APK asset name as life-app.apk, links the new code from the
app shell spec, and marks the API compatibility level done.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@lakaniemi
lakaniemi merged commit fde973f into main Nov 9, 2026
1 check passed
@lakaniemi
lakaniemi deleted the feat/app-compat-level branch November 9, 2026 18:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant