You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(spec): page type is the page kind, not a visualization (ADR-0047) (#1832)
Remove grid/kanban/calendar/gallery/timeline from PageTypeSchema — they are
visualizations of a `list` interface page (interfaceConfig.appearance.
allowedVisualizations), switched at runtime, never distinct page kinds. The
renderer never branched on them as page types, so they only misled authors
(selecting page type "kanban" did nothing). VisualizationTypeSchema is unchanged
and remains the home for those values.
The page authoring form (page.form.ts) now offers only the kinds with a
dedicated renderer — list / record / home / app / utility — via explicit
labelled options, so the dropdown stops presenting dead options. Roadmap kinds
(dashboard/form/record_detail/record_review/overview/blank) remain valid in the
schema but are hidden from the form until they render distinctly.
Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ui(page): page `type` is the page kind, not a visualization
6
+
7
+
Removed `grid` / `kanban` / `calendar` / `gallery` / `timeline` from `PageTypeSchema`. They are visualizations of a `list` (interface) page — configured via `interfaceConfig.appearance.allowedVisualizations` and switched at runtime — never distinct page kinds. The runtime never branched on them as page types (it always read the visualization from `interfaceConfig`), so they only misled authors (e.g. selecting page type "kanban" did nothing). `VisualizationTypeSchema` is unchanged and remains the home for those values.
8
+
9
+
The roadmap interface kinds (`dashboard`, `form`, `record_detail`, `record_review`, `overview`, `blank`) stay valid in the schema but the page authoring form (`page.form.ts`) now offers only the kinds with a dedicated renderer — `list`, `record`, `home`, `app`, `utility` — with explicit labels, so the dropdown stops presenting dead options.
{field: 'label',required: true,colSpan: 1,helpText: 'Page title shown to users'},
21
21
{field: 'icon',colSpan: 1,helpText: 'Icon for navigation menu'},
22
-
{field: 'type',colSpan: 1,helpText: 'Page type — "list" for an interface/list page; also record, home, app, dashboard, etc.'},
22
+
{
23
+
field: 'type',
24
+
colSpan: 1,
25
+
// The page KIND, not a visualization. Kanban/Calendar/Gallery/Timeline
26
+
// are visualizations OF a List page (set under Interface →
27
+
// Appearance → Allowed visualizations), not page types — so they are
28
+
// deliberately absent here. Only kinds with a dedicated renderer are
29
+
// offered; roadmap kinds (dashboard/form/record_detail/…) are valid in
30
+
// the schema but hidden until they render distinctly.
31
+
options: [
32
+
{label: 'List / Interface page',value: 'list'},
33
+
{label: 'Record page',value: 'record'},
34
+
{label: 'Home page',value: 'home'},
35
+
{label: 'App page',value: 'app'},
36
+
{label: 'Utility panel',value: 'utility'},
37
+
],
38
+
helpText: 'Page kind. "List / Interface" binds a source view into a curated surface — how it looks (grid / kanban / calendar / …) is a visualization set under Interface, not a page type.',
0 commit comments