Amended by 0249, decision 6: the console
is one member that also builds the PWA and desktop targets.
Context
0052 made the console a Vite and React single-page app with coded screens. The owner’s panel answers (mem L735–739, 2026-10-20) replace coded screens with resources that modules declare, and a generic renderer that draws them. The console stays a Vite single-page app on Safari 17 or later, as 0052 said (gap B29).Decision
- Modules declare
@Resource,@Pageand@Widget.- A resource has form and infolist schemas built from model fields.
- Tables have columns, filters, sorts and bulk actions, bound to
@Action. - Relation panels and navigation are declared too.
- Gen and the registry publish these declarations. The generic
@stackra/panelrenderer, built on@stackra/ui, draws them on web and native. - There are several panels: platform admin, product operator, tenant admin and customer portal.
- A tenant can override a level-2 page (0110). Custom pages are the escape hatch.
- Coded screens are replaced by this model.
- The web app is
@figentra/console, a Vite single-page app on Safari 17 or later.
Consequences
- A new admin screen is a declaration, not a new component.
- The renderer is the one place to fix layout, accessibility and i18n for every panel.
Enforcement
planned — gen fails on a resource whose bound action does not exist, and the renderer’s accessibility checks run in the console app.Alternatives
- Coded screens per panel: superseded by this decision.
Supersedes and sources
Supersedes: 0052. Amends: 0110, 0112. Sources: owner panel answers (stackra-decisions-2026-10-19.md L735–739, 2026-10-20);
gap B29.