- Shipped
- August 8, 2026 at 8:50 PM UTC
- Author
- Kamo
- Commit
- c8892a4
Every attribute the apps settings page renders — display name, description, stage, deprecation — was a compile-time constant in the ServiceType enum, and "Available" was not stored at all: it was derived as stage == COMPLETED in the UI and in three places server-side. Changing any of it meant editing the shared library and redeploying the platform. PLATFORM_APP_CATALOG holds one row per app with every override column nullable, and AppCatalogService resolves override ?? enum. A missing row means the enum verbatim, so installing this changes no behavior. Availability becomes its own value, which is what makes a soft launch (offered while still TESTING) or a withheld COMPLETED app expressible. Its fallback reads the RESOLVED stage rather than the enum's, so an operator who only moves an app to COMPLETED gets availability without also flipping the switch.