← All frames
App list · Frame (e) · route /apps

App-list states

Every state the list must render is contract, not decoration: the in-flight load, a genuinely empty registry, a load failure with retry, a no-results search, and the fail-closed case — a caller without Permit authority sees a read-only list with no management affordances, not an edit surface that only 403s when they act.

(e1) Loading
(e2) Empty — no apps registered

No applications yet

Nothing has been registered on this platform. Register an app to have it appear here — this console manages apps, the add-app flow creates them.

Register an app
(e3) No results — search/filter matched nothing

No apps match

No apps match “zzz-nonexistent” with the current filters.

(e4) Couldn't load
(e5) Read-only — caller lacks manage authority (fail-closed)
AppSlugStateVisibilityOwning org
Northwind CRM
crm Activated Organization Northwind Inc.
Read-only — no create, edit, suspend or install controls rendered.

Contract. (e1) is the in-flight GET /apps skeleton (aria-busy). (e2) is a truly empty registry; (e3) is a non-empty registry with a search/filter that matched nothing — distinct states with distinct copy and recovery. (e4) is a non-2xx with data-action="retry". (e5) is the rule: a 403 is an authorization outcome — the list still renders read-only, every management affordance is absent (not disabled-on-click), and it is never a sign-in redirect (only a 401 re-authenticates). This is what stops shipping edit buttons that only fail on save.

Review · app-management approve or reject each flow ↓
app-listpendingApproveReject
app-detailpendingApproveReject
installationspendingApproveReject