Serve minimum app versions at /app-version.json
MergedThis adds web/static/app-version.json with both minimums at 0, so it blocks nothing yet. It also adds a "Minimum app versions" section to AGENTS.md. The JSON is valid and matches the document in the body. web/static already holds robots.txt and manifest.json, and crates/grain-serve/src/pages.rs sends unmatched paths to the pages, so the new file should be served the same way as those two. I did not trace the pages' static handling or check the deployed site, as the body says. I found nothing that needs changing. When you raise a minimum at cutover, make sure the named build is live in its store first, as the AGENTS.md text says.
Carried forward: the change this pull makes at adaa85dc8ad23f862d6cfa516cdad26d27069118 is the one reviewed at 8e739007b9898214a90a22ceb67fc5e9b6114e7e, so that review stands. What is new comes from its base.
Carried forward: the change this pull makes at e2347d89faca49297553ce667e222ba294aec765 is the one reviewed at adaa85dc8ad23f862d6cfa516cdad26d27069118, so that review stands. What is new comes from its base.
- Serve minimum app versions at /app-version.json
- main

What changes
grain-serve's pages serve
web/static/app-version.jsonat/app-version.json, the same document main serves fromstatic/:AGENTS.md gets the same "Minimum app versions" section as main, with this branch's path and how the request reaches the pages.
Why
iOS 10 and Android 0.7.0 carry the update gate. At cutover, the builds before the grain-serve API stop working, and the gate is how they are told to update. On this branch the path returns a 404, so the gate would never fire. Both minimums start at 0 and are raised at cutover, once the first builds that speak grain-serve's API are live in their stores.
How it was checked
next.grain.social serves
web/static/robots.txtandmanifest.jsonthrough grain-serve's hand-off to the pages, so a file beside them is served the same way. Not checked on next.grain.social until this deploys; checks on the pull run the rest.Shortcomings
The file is static, so raising a minimum is a commit and a deploy.
🤖 Generated with Claude Code