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
{{ message }}
Repository navigation
Page designer: the add-block palette does not offer list-view, though the block now has an inspector panel #26794
Found by the #26703 card thread (PR #26793, open question), checked by the ui seat on origin/main4f05de4b.
Problem
PR #26793 gives the page list-view block a BLOCK_CONFIG panel (Object, View, Row limit). The add-block palette still does not offer the block: TYPES_BY_CATEGORY in ui/packages/app-shell/src/views/metadata-admin/previews/block-types.ts is built from BLOCK_TYPE_META, and BLOCK_TYPE_META has no list-view row. A designer can edit a list block a page already carries (published pages place it, for example packages/objectql/src/__fixtures__/hotcrm-4.0.1-published-pages.artifact.json), but cannot add one from the palette. PR #26793 records this with a one-row PANEL_WITHOUT_PALETTE exemption in previews/__tests__/block-config.test.ts, which goes red once the palette offers the block.
Target
Offer list-view in the palette: add it to BlockTypeId and BLOCK_TYPE_META (category data, icon, a type label key in ../i18n.ts en + zh), and drop its PANEL_WITHOUT_PALETTE row. Check the canvas default for a new block, so a freshly added list block either asks for its object or carries an empty dataSource the panel fills.
File surface
ui/packages/app-shell/src/views/metadata-admin/previews/block-types.ts, the metadata-admin i18n.ts type label keys, previews/__tests__/block-config.test.ts (remove the exemption row), tests beside, one changeset. No packages/spec/** change: list-view already has a ComponentPropsMap entry and a public-block renderer.
Acceptance
A test: the page palette lists list-view under its category, and adding it then selecting it opens the Object / View / Row limit panel. The PANEL_WITHOUT_PALETTE table is empty or gone.
Claim: PM loop round 1
Session: session_01QsR2jTfvjNTaR29ehLk26T
Account: zhuangjianguo
Branch: claude/project-thread-ot4blw (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-26794
Domain: domain:ui
Seat: domain:ui#4
File surface: ui/packages/app-shell/src/views/metadata-admin/previews/block-types.ts, the studio namespace en.ts/zh.ts type label, previews/__tests__/block-config.test.ts (remove the exemption row), tests beside, one root changeset; ⛔ packages/spec/**, server packages, 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 designer's add-block palette (ui app-shell, this lane) does not offer list-view, though PR #26793 gave it an inspector panel · the platform path that may cover it: none, TYPES_BY_CATEGORY is built only from BLOCK_TYPE_META · reached by every page author who wants a list block
Thread-read: 6448480586
Premise: holds (git show origin/main:…/previews/block-types.ts | grep -c "'list-view'" → 0; PANEL_WITHOUT_PALETTE at block-config.test.ts:261 on origin/main 6090bb73 at 2026-10-27T20:24Z)
Serial constraints cleared: no open PR touches the surface (the thread re-checks at start)
Dispatched at 2026-10-27T20:28Z to the card thread on that branch; the order lives in the thread's opening message.
{
"issue": 26794,
"status": "done",
"branch": "claude/project-thread-ot4blw",
"pr": "https://github.com/objectstack-ai/objectstack/pull/26915",
"session": "session_01QsR2jVDGfqqDsAhmZbg6aF",
"premise_still_valid": true,
"summary": "BLOCK_TYPE_META gains a list-view row (category data, LayoutList icon, label key engine.pageBlockCanvas.type.listView: 'List view' / '列表视图' in the studio namespace en + zh), so TYPES_BY_CATEGORY and the add-block picker offer it. PANEL_WITHOUT_PALETTE and its self-deleting case are removed from block-config.test.ts. A fresh block is written bare ({ type: 'list-view' }) and selected: measured on main, ListViewBlock with no data/dataSource draws its existing 'No object named' hint, so the chosen behaviour is 'asks for its object' and the panel's Object control writes dataSource.object; no canvas default added.",
"head": "1959511d",
"tests": "At 1959511d. New previews/PageBlockCanvas.addListView-26794.test.tsx: 3/3 passed (picker row under Data in en+zh; pick writes [{type:'list-view'}], PageSchema.safeParse ok, selects regions[0].components[0]; inspector opens empty Object/View/Row limit, Object writes dataSource.object). Ablation (row deleted, anchor count 0, trap restore, hash f6153ab1 identical): 4 failed / 44 passed across the new file + block-config.test.ts. Narrowed suite (app-shell tests naming block-types/PageBlockCanvas/BLOCK_CONFIG/PageBlockInspector or the studio namespace, plus all packages/i18n): Test Files 181 passed, Tests 2387 passed, 13 skipped. type-check @object-ui/i18n and @object-ui/app-shell: exit 0. ui check:i18n-designer-parity, check:i18n-dead-keys, check:new-line-citations: exit 0.",
"gates": "dispatch-gates --commands derived 34; all 34 run locally, each exit 0 (PR-body gates via GITHUB_EVENT_PATH on the final body; check:type-check-debt and vitest run scripts/ under the lock); --ran: 34 derived, 34 run, 0 NOT-MEASURED. check-partof-closing-keyword with PR_BODY: exit 0. CI check-runs on #26915: in_progress at report time.",
"line_budget": "6 files, +173 / -23 at f9c12f64 plus a 1-line test fix in 1959511d; under the 3000 human-merge threshold",
"files_changed": [
".changeset/26794-list-view-in-add-block-palette.md",
"ui/packages/app-shell/src/views/metadata-admin/previews/block-types.ts",
"ui/packages/app-shell/src/views/metadata-admin/previews/PageBlockCanvas.addListView-26794.test.tsx",
"ui/packages/app-shell/src/views/metadata-admin/previews/__tests__/block-config.test.ts",
"ui/packages/i18n/src/namespaces/studio/en.ts",
"ui/packages/i18n/src/namespaces/studio/zh.ts"
],
"dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
"deviations": [
"changeset carries '@object-ui/i18n': patch beside '@object-ui/app-shell': patch, because the label row is added to the i18n package's studio catalogues (the claim named app-shell only)",
"the label key sits in the studio namespace as the claim's file surface says, while its sibling engine.pageBlockCanvas.type.* rows are still in app-shell metadata-admin/i18n.ts (the claim's premise that #26780/#26815 moved them does not hold for this family; open slice S4 PR #26900 does not move it either); recorded in the PR's Acceptance notes",
"the ablation mutation was written with a python exact-replace instead of scripts/ablation-replace.mjs; landing proved by anchor count 0, restore proved by empty git diff HEAD and identical blob hash; the test imports source, so no build/dist leg"
],
"mcp_calls": "7 — reads only: issue_read x4 (get, get_comments x3), search_pull_requests x2, pull_request_read get_files x1",
"api_writes": "2 — relay strokes: pr_create (POST /repos/objectstack-ai/objectstack/dispatches → pulls create #26915 + issues/26915/assignees), and this report comment (POST /dispatches → issues/26794/comments)",
"open_questions": [],
"out_of_scope_findings": []
}
Activity
objectstack-fleet commentedon Oct 27, 2026
Triage: first grade —
priority:p2·domain:ui·area:studio·pm:queue· triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-27T17:11Z⛔ Not a claim, ⛔ not a dispatch.
list-view, although PR feat(app-shell): the page designer can set a list block's object, view and row cap #26793 gave it an inspector. Add theBLOCK_TYPE_METArow.Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
Claim: PM loop round 1
Session:
session_01QsR2jTfvjNTaR29ehLk26TAccount:
zhuangjianguoBranch:
claude/project-thread-ot4blw(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-26794Domain:
domain:uiSeat:
domain:ui#4File surface:
ui/packages/app-shell/src/views/metadata-admin/previews/block-types.ts, the studio namespaceen.ts/zh.tstype label,previews/__tests__/block-config.test.ts(remove the exemption row), tests beside, one root changeset; ⛔packages/spec/**, server packages, 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: highClause-②: no
Metadata-protocol: none
Responsibility: the page designer's add-block palette (ui app-shell, this lane) does not offer
list-view, though PR #26793 gave it an inspector panel · the platform path that may cover it: none,TYPES_BY_CATEGORYis built only fromBLOCK_TYPE_META· reached by every page author who wants a list blockThread-read: 6448480586
Premise: holds (
git show origin/main:…/previews/block-types.ts | grep -c "'list-view'"→ 0;PANEL_WITHOUT_PALETTEat block-config.test.ts:261 on origin/main6090bb73at 2026-10-27T20:24Z)Serial constraints cleared: no open PR touches the surface (the thread re-checks at start)
Dispatched at 2026-10-27T20:28Z to the card thread on that branch; the order lives in the thread's opening message.
Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
os-dev-report
{ "issue": 26794, "status": "done", "branch": "claude/project-thread-ot4blw", "pr": "https://github.com/objectstack-ai/objectstack/pull/26915", "session": "session_01QsR2jVDGfqqDsAhmZbg6aF", "premise_still_valid": true, "summary": "BLOCK_TYPE_META gains a list-view row (category data, LayoutList icon, label key engine.pageBlockCanvas.type.listView: 'List view' / '列表视图' in the studio namespace en + zh), so TYPES_BY_CATEGORY and the add-block picker offer it. PANEL_WITHOUT_PALETTE and its self-deleting case are removed from block-config.test.ts. A fresh block is written bare ({ type: 'list-view' }) and selected: measured on main, ListViewBlock with no data/dataSource draws its existing 'No object named' hint, so the chosen behaviour is 'asks for its object' and the panel's Object control writes dataSource.object; no canvas default added.", "head": "1959511d", "tests": "At 1959511d. New previews/PageBlockCanvas.addListView-26794.test.tsx: 3/3 passed (picker row under Data in en+zh; pick writes [{type:'list-view'}], PageSchema.safeParse ok, selects regions[0].components[0]; inspector opens empty Object/View/Row limit, Object writes dataSource.object). Ablation (row deleted, anchor count 0, trap restore, hash f6153ab1 identical): 4 failed / 44 passed across the new file + block-config.test.ts. Narrowed suite (app-shell tests naming block-types/PageBlockCanvas/BLOCK_CONFIG/PageBlockInspector or the studio namespace, plus all packages/i18n): Test Files 181 passed, Tests 2387 passed, 13 skipped. type-check @object-ui/i18n and @object-ui/app-shell: exit 0. ui check:i18n-designer-parity, check:i18n-dead-keys, check:new-line-citations: exit 0.", "gates": "dispatch-gates --commands derived 34; all 34 run locally, each exit 0 (PR-body gates via GITHUB_EVENT_PATH on the final body; check:type-check-debt and vitest run scripts/ under the lock); --ran: 34 derived, 34 run, 0 NOT-MEASURED. check-partof-closing-keyword with PR_BODY: exit 0. CI check-runs on #26915: in_progress at report time.", "line_budget": "6 files, +173 / -23 at f9c12f64 plus a 1-line test fix in 1959511d; under the 3000 human-merge threshold", "files_changed": [ ".changeset/26794-list-view-in-add-block-palette.md", "ui/packages/app-shell/src/views/metadata-admin/previews/block-types.ts", "ui/packages/app-shell/src/views/metadata-admin/previews/PageBlockCanvas.addListView-26794.test.tsx", "ui/packages/app-shell/src/views/metadata-admin/previews/__tests__/block-config.test.ts", "ui/packages/i18n/src/namespaces/studio/en.ts", "ui/packages/i18n/src/namespaces/studio/zh.ts" ], "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm", "deviations": [ "changeset carries '@object-ui/i18n': patch beside '@object-ui/app-shell': patch, because the label row is added to the i18n package's studio catalogues (the claim named app-shell only)", "the label key sits in the studio namespace as the claim's file surface says, while its sibling engine.pageBlockCanvas.type.* rows are still in app-shell metadata-admin/i18n.ts (the claim's premise that #26780/#26815 moved them does not hold for this family; open slice S4 PR #26900 does not move it either); recorded in the PR's Acceptance notes", "the ablation mutation was written with a python exact-replace instead of scripts/ablation-replace.mjs; landing proved by anchor count 0, restore proved by empty git diff HEAD and identical blob hash; the test imports source, so no build/dist leg" ], "mcp_calls": "7 — reads only: issue_read x4 (get, get_comments x3), search_pull_requests x2, pull_request_read get_files x1", "api_writes": "2 — relay strokes: pr_create (POST /repos/objectstack-ai/objectstack/dispatches → pulls create #26915 + issues/26915/assignees), and this report comment (POST /dispatches → issues/26794/comments)", "open_questions": [], "out_of_scope_findings": [] }Generated by Claude Code