Skip to content

ui skill, CLI view scaffold and examples: a business object's grid view declares userActions.editInline: true, so AI-built and scaffolded tables keep cell editing under the spec default (objectui#5144) #22604

Description

@objectstack-fleet

Filing gate: a declared spec default that the authoring path does not teach. Filed by the director seat (summon #35, seat post #12708, session_01VYToj6PQehTEKNrjGM9akg) on the maintainer's instruction in that session, verbatim: 「只需要处理已经交代的 userActions.editInline: true」. ⛔ Not a claim, ⛔ not a dispatch; triage grades and routes it.

The gap

  • ListView.userActions.editInline is declared .default(false) ("the list is read-only unless the author opts in", packages/spec/src/ui/view.zod.ts:1535). Since fix(plugin-list): read userActions.editInline with the spec default, folding a stored inlineEdit into it (objectui#5144) objectui#12036 (objectui#5144, merged 2026-10-09) the console enforces it: a grid view that declares neither userActions.editInline nor inlineEdit offers no inline-edit toggle. The permission gate (object editable in place, principal can update) still applies on top.
  • Nothing on the authoring path says so, measured on main 86f53a4b8d:
    • skills/objectstack-ui/rules/list-views.md has no rule for the key; its only userActions example is { search: false } (:228). skills/objectstack-ui/SKILL.md speaks of inlineEdit only for the master-detail field, a different key.
    • packages/cli/src/commands/generate.ts:372 scaffolds a grid view with columns, sort and pagination and no userActions.
    • Of 18 example files declaring grid or list views (examples/app-crm, app-todo, app-showcase), at most 2 touch an inline-edit key.
    • The reference pages (content/docs/references/ui/view.mdx:1084) document the default and nothing more.
  • Consequence: a table built by an AI agent from the skill, scaffolded by the CLI, or copied from the examples is read-only in its cells after the upgrade. Users can still open the record form. HotCRM measured 41 such views with 0 declarations (filed on objectstack-ai/hotcrm in the same act).

What to do

  1. Skill rule (skills/objectstack-ui/rules/list-views.md, under "Configuring a List View"): a grid or list view of a business object declares userActions: { editInline: true }; a view whose records are read-only by nature (log, audit, history, report roll-up) leaves it out with a one-line comment giving the reason. The checked example block gains the key; skills/objectstack-ui/evals/views-apps-actions-pages.json gains a row that catches a generated grid view without it. The rule names the permission gate so the author does not expect the key to open editing past update.
  2. CLI scaffold (packages/cli/src/commands/generate.ts, the view template): emit userActions: { editInline: true }, in the generated list block, with the one-line comment the skill rule uses; its test pins the line.
  3. Examples: the grid and list views of examples/app-crm, examples/app-todo and examples/app-showcase declare the key, or carry the recorded reason, so the showcase demonstrates the written form. Measured count is 18 files.
  4. Reference page: one sentence under the editInline row in content/docs/references/ui/view.mdx pointing at the rule, through the generator, not by hand.

Boundaries

  • ⛔ No new lint gate or objectstack validate refusal for a view without the key: the key is the author's choice per view, and the decision framework reads "a new gate defaults to no". The eval row and the scaffold are the teaching path.
  • ⛔ No change to the spec default or to objectui's reading: the maintainer kept the opt-in rule in this act. A different default would be a spec card of its own.
  • skills/** is a Tier H path: the PR takes the maintainer's APPROVED review.

Acceptance

  • os generate view for an object emits the key; the skill eval reddens on a grid view without it; every example grid or list view declares it or carries the reason; check:generated is current.

Related


Filed by the director seat; generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 10, 2026

    @objectstack-fleet
    ContributorAuthor

    Closed as superseded, by the director seat that filed it (summon #35, session_01VYToj6PQehTEKNrjGM9akg), 2026-10-10T04:07Z.

    This card was filed under the premise that the spec default stays editInline: false and every business grid view declares userActions.editInline: true. Minutes later the maintainer ruled the other way in the same session, verbatim 「乙 v18 把 spec 默认翻成 true,editInline: false 变成关法。」: the spec default flips to true in v18 and editInline: false becomes the opt-out. That ruling is #22605, which also carries the one paragraph the UI skill owes (inline editing on by default under the permission gate; a read-only-by-nature list declares editInline: false). With the default on, the CLI scaffold emits nothing for the key and the examples need no declaration, so nothing of this card remains. ⛔ Not reopened on the same premise; a new need for the skill text goes on #22605.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions