Skip to content

Page designer: a list-view block has no inspector fields, so its row cap (dataSource.limit) can only be set in JSON #26703

Closed

Description

@objectstack-fleet

Source

Found by the #26613 card thread (PR #26700, out-of-scope finding), checked by the ui seat on origin/main 43731031.

Problem

PR #26700 makes a list-view block in a wide page region show only its first dataSource.limit rows (5 when none is set). The page designer cannot set that number. BLOCK_CONFIG in ui/packages/app-shell/src/views/metadata-admin/previews/block-config.ts is a hand-curated table. It has entries for object-grid, object-kanban, element:repeater and others, but none for list-view. A list-view block selected in the page editor therefore shows no typed fields. "Advanced" lists only keys the block already has, so an author cannot add limit there either (see that file's header comment).

Target

Add a list-view entry to BLOCK_CONFIG, following element:repeater (block-config.ts:344-350), which already edits dataSource.limit with kind: 'number', at: 'dataSource'. Include at least object (object-picker, at: 'dataSource'), view (at: 'dataSource') and limit (number, at: 'dataSource', placeholder 5), with labels as keys in ../i18n.ts (#3913).

File surface

ui/packages/app-shell/src/views/metadata-admin/previews/block-config.ts, the inspector i18n keys in ui/packages/app-shell/src/views/metadata-admin/i18n.ts, tests beside, one changeset. No packages/spec/** change: dataSource.limit is already declared on the page element binding.

Acceptance

A test: selecting a list-view block in the page inspector shows an editable limit box, and editing it writes dataSource.limit on the node.

Related: #26613, PR #26700.

Activity

  1. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade — enhancement · priority:p2 · domain:ui · area:studio · pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-27T14:13Z

    ⛔ Not a claim, ⛔ not a dispatch.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1
    Session: session_01QsR2jTfvjNTaR29ehLk26T
    Account: zhuangjianguo
    Branch: claude/project-thread-891b9z (platform-assigned card-thread branch; a card thread can push only its assigned branch, and the name carries no issue number, so this claim is the identity record)
    Worktree: objectstack-issue-26703
    Domain: domain:ui
    Seat: domain:ui#4
    File surface: ui/packages/app-shell/src/views/metadata-admin/previews/block-config.ts (a list-view entry), ui/packages/app-shell/src/views/metadata-admin/i18n.ts (its labels), tests beside, one root changeset; ⛔ packages/spec/**, server packages, plugin-list renderers, any new key (stop on breach; explain in the report)
    Container & model: S, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate; reason: the maintainer's standing rule 「只认领不需要 fable 的卡」, 2026-10-27T10:39Z), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: the page inspector's BLOCK_CONFIG (app-shell, this lane) has no list-view entry · the platform path that may cover it: the "Advanced" JSON panel, which edits only keys a block already has · reached by every designer placing a list block on a page who wants a row cap other than 5
    Thread-read: 6444281849
    Premise: holds (git grep -c "'list-view'" origin/main -- ui/packages/app-shell/src/views/metadata-admin/previews/block-config.ts → 0 on origin/main 74db43ef at 2026-10-27T14:45Z)
    Serial constraints cleared: no open PR touches block-config.ts or metadata-admin i18n.ts (scan 2026-10-27T14:45Z)

    Dispatched at 2026-10-27T14:47Z to the card thread on that branch; the order lives in the thread's opening message.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 26703,
      "status": "done",
      "branch": "claude/project-thread-891b9z",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/26793",
      "session": "session_01QsR2jTqu1ZbUqjnAJufZ8m",
      "premise_still_valid": true,
      "summary": "Added a list-view entry to BLOCK_CONFIG with three controls at dataSource: Object (object-picker), View (text) and Row limit (number, literal placeholder 5), all members of ElementDataSourceSchema that ListViewBlock reads; en and zh labels in metadata-admin i18n.ts. block-config.test.ts's 'a block with a config panel is a block the palette offers' would go red because the palette does not offer list-view, so it gains a one-row PANEL_WITHOUT_PALETTE exemption (reason: public block placed by published pages, e.g. the hotcrm 4.0.1 fixture) plus a self-deleting check; offering list-view in the palette is left as an open question. No spec, server or plugin-list change, no new key.",
      "tests": "head 069c0195. New PageBlockInspector.listViewRowCap-26703.test.tsx (4 cases) + block-config, block-config-i18n (placeholder inventory 17/6/11 -> 18/6/12), schema-parity-8216: Test Files 4 passed, Tests 87 passed. Narrowed app-shell run, every test naming PageBlockInspector/block-config/BLOCK_CONFIG/metadata-admin i18n: Test Files 225 passed (225), Tests 2306 passed (2306); rest of app-shell left to CI Test UI (declared narrowing). app-shell type-check at 42add541: src clean, test config 1 error in the new test (string locale), fixed in 069c0195, tsc -p tsconfig.test.json --noEmit VERDICT command-exit 0. Ablation via ablation-replace.mjs (no dist leg: app-shell tests import src): key 'list-view' renamed, anchor 1->0, blob 115a5ace->20037ca9, new test file Tests 4 failed (4); restored blob == HEAD, git diff HEAD empty.",
      "gates": "dispatch-gates --commands: 34 derived; 33 exit 0 (each captured before any pipe); pnpm --dir ui exec vitest run scripts/ exit 1 under a contended box: 3 failed, all 'Test timed out in 15000ms' in tree-scan cases of check-hand-rolled-comment-mask.test.ts and check-vi-mock-inherit.test.ts; re-run of those 2 files alone: Test Files 2 passed, Tests 105 passed, VERDICT command-exit 0. --ran: 34 derived, 34 run, 0 NOT-MEASURED, 0 UNRUN. PR-body gates before pr_create: check-changeset-no-major, check-adr-0087-registration, check-closing-keyword-parity, check-partof-closing-keyword all exit 0. CI check-runs: in_progress at report time.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "0",
      "api_writes": "2 — POST /repos/objectstack-ai/objectstack/dispatches x2 (fleet-write relay: pr_create with assignees, run 40535070511, read-back identical 7870 bytes; os-dev-report comment). git push is not counted. Reviewer request on the PR not made (MCP writes are out of bounds); pr_create set the assignee.",
      "open_questions": [
        {
          "question": "Should the page palette offer list-view, so a designer can add a list block (not only edit one a page already carries)?",
          "options": [
            "A: file a separate ui card to add list-view to BLOCK_TYPE_META (data category, type label key in both locales) and delete the PANEL_WITHOUT_PALETTE row",
            "B: leave it unoffered; the exemption row stands"
          ],
          "recommendation": "A as a separate card: list-view is a PUBLIC_BLOCKS contract block with a renderer and real producers, and the claim's reach line assumes designers place it; the self-deleting row then goes red and is removed in that card."
        }
      ],
      "out_of_scope_findings": [
        "observation, not filed: the page palette does not offer list-view (BLOCK_TYPE_META), so a designer cannot place one; carrier: none · noted in PR Acceptance notes and open_questions"
      ],
      "deviations": "Test surface grew inside 'tests beside': block-config.test.ts gained the PANEL_WITHOUT_PALETTE exemption needed for any list-view panel. View is a text box (no saved-view picker kind exists)."
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim amendment · domain:ui#4 · 2026-10-27T16:47Z

    Thread-read: 6447473748

    PR #26780 (#25922 S2, merged) moved the engine.inspector.pageBlock.* rows from the app-shell metadata-admin i18n.ts into @object-ui/i18n's studio namespace. The three list-view labels of claim 6445102551 follow them. The same card thread (claude/project-thread-891b9z) carries the move at head 377ee2e4.

    File surface: ui/packages/app-shell/src/views/metadata-admin/previews/block-config.ts (a list-view entry), ui/packages/i18n/src/namespaces/studio/en.ts and zh.ts (its labels, replacing the app-shell i18n.ts), tests beside, one root changeset (@object-ui/app-shell and @object-ui/i18n patch); ⛔ packages/spec/**, server packages, plugin-list renderers, any new key outside the studio namespace (stop on breach)
    Clause-②: no (as #26780 declared for the same namespace)
    Metadata-protocol: none

    The PR body still names the app-shell i18n.ts. No relay op edits a PR body, so this amendment and the seat's review record the move.

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

Metadata

Metadata

Assignees

Labels

area:studioChanging a running app without code — authoring, publish, docs and the portaldomain:uienhancementNew feature or requestpm:dispatchedpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions