From 9fc1d47177d7a1e33bbed9fa68a679eb9c42e1d8 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 16 Oct 2026 02:35:47 +0000 Subject: [PATCH] docs(skills): the objectstack-ui navigation rule states the derived record surface per flow The Surface bullet in skills/objectstack-ui/rules/navigation.md said a field-heavy object opens create/edit/detail as a full page and that mobile always pages. deriveRecordFlowSurface routes only the view flow to a page; the create, edit and child task flows open a modal, bounded on desktop and full-screen on mobile; a light record on desktop opens every flow in a drawer. The bullet now states that mapping, drops the "(or object)" placement (navigation is not an object key) and pays its tokens inside the file: net 0 lines, 2273 tokens against ceiling 2273. An @objectstack/skills patch changeset accompanies it. Claude-Session: https://claude.ai/code/session_01VqGhCg9wdsBXPz54uAEWg7 Co-authored-by: Claude --- .changeset/23753-navigation-record-surface.md | 9 +++++++++ skills/objectstack-ui/rules/navigation.md | 8 ++++---- 2 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 .changeset/23753-navigation-record-surface.md diff --git a/.changeset/23753-navigation-record-surface.md b/.changeset/23753-navigation-record-surface.md new file mode 100644 index 00000000000..4c6b9f82c36 --- /dev/null +++ b/.changeset/23753-navigation-record-surface.md @@ -0,0 +1,9 @@ +--- +'@objectstack/skills': patch +--- + +docs(skills): the `objectstack-ui` navigation rule states the derived record surface per flow — viewing routes to a page, creating or editing opens a modal bounded on desktop and full-screen on mobile, a light record uses a drawer (#23753) + +Clause-②: no + +`skills/objectstack-ui/rules/navigation.md`'s Surface bullet said a field-heavy object opens create/edit/detail as a full page and that mobile always pages. The platform's derivation (`deriveRecordFlowSurface` in `@objectstack/spec`) routes only the `view` flow to a page; the create, edit and child task flows never route — a field-heavy record, or any record on mobile, opens them in a modal that is bounded on desktop and full-screen on mobile, and a light record on desktop opens every flow in a drawer. The bullet now states that mapping and names the override only where the spec declares it: `navigation.mode` on the list view (`navigation` is not an object key). Text only; nothing an author writes changes. diff --git a/skills/objectstack-ui/rules/navigation.md b/skills/objectstack-ui/rules/navigation.md index 8ebf84841a3..3dfc6c0e27e 100644 --- a/skills/objectstack-ui/rules/navigation.md +++ b/skills/objectstack-ui/rules/navigation.md @@ -128,10 +128,10 @@ at runtime from how heavy the record is + the client viewport, because an author (especially an AI) cannot know the client's screen. **Write the data (fields, `fieldGroups`); let the platform lay it out.** -- **Surface (page vs drawer).** Derived from field count: a field-heavy object - opens create/edit/detail as a **full page**; a light one as a **drawer**. Mobile - always pages. Don't set it. To force it for a specific object, set - `navigation.mode` (`page` | `drawer` | `modal`) on the list view (or object) — or, +- **Surface.** Derived from field count and viewport. A field-heavy record, or + any on mobile, is viewed on a **page** and created/edited in a **modal** + (bounded on desktop, full-screen on mobile); otherwise a **drawer**. To force + it, set `navigation.mode` (`page` | `drawer` | `modal`) on the list view — or, for bespoke layout, assign a record `Page`. - **Field width.** **Omit it** (`auto` sizes by widget type × current columns — textarea / rich-text / file take the row). Both keys are valid: `colSpan`