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
Studio Interfaces: an Add view with a type choice (grid, kanban, calendar, …) in the list-view inspector (#27521 row 31) #27836
Filing gate: ③ triage-directed. Triage 6495068090 on #27521 said: "Each row is either taken, with its own card where it needs code." This is row 31, carded by the seat from PR #27830's report (6512376770, out_of_scope_findings), not taken in that PR.
Reach: observed on the 18.3.0 RC browser walkthrough at c4c515ad (admin, desktop) and re-read on current main by #27830's dev.
Reader who acts: domain:ui (Studio).
Duplicate search: search_issues "Interfaces add view type choice kanban calendar list view inspector" → no open card covering it.
Observed
Interfaces: the list-view inspector edits only the default grid. There is no way to create a kanban, calendar or other view type from Studio.
Wanted
An "Add view" that asks which type to create and opens the new view's inspector, with the type's required config (e.g. a calendar's start date field) asked up front. Landing: ui/packages/app-shell metadata-admin list-view inspector / Interfaces rail.
Claim: PM loop round 1
Session: session_01Utp6CaJoinvGQSbHeDaWBe
Account: os-bill
Branch: claude/project-thread-gkc8sq (the card thread's designated push branch, the recorded platform exception to claude/issue-<n>-<slug>)
Worktree: objectstack-issue-27836
Domain: domain:ui
Seat: domain:ui#3
File surface: Studio Interfaces list-view inspector and rail (ui/packages/app-shell/src/views/studio-design/**), studio i18n (add keys), tests beside, root changeset (stop on breach; explain in the report)
Container & model: M/L, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier on 178b5238: no path-derived mandate), effort: high
Clause-②: no
Metadata-protocol: none
Responsibility: ui code produces the defect | no platform path covers it | every Studio / console author reaches it today
Thread-read: none
Premise: holds
Serial constraints cleared: none
Dispatched 2026-10-30T01:49Z to a card thread of the seat's project; the order lives in the project. ⛔ The thread posts no claim and writes no assignee.
{
"issue": 27836,
"status": "done",
"branch": "claude/project-thread-gkc8sq",
"pr": "https://github.com/objectstack-ai/objectstack/pull/27870",
"head": "a2a002b50d98e56eb6bbfbe3f489027ad7e6e47a",
"session": "session_01Utp6CZUTcJCLE3VSWMv73Y (card thread; seat session_01Utp6CaJoinvGQSbHeDaWBe)",
"premise_still_valid": true,
"summary": "Measured on main 9ae6384e: the list-view panel edits only the view the nav entry lands on (listViewTargetOf); nothing in Studio creates another view type. The panel already edits any list view's columns/filter/sort and a kanban's card section once the view exists; calendar/gallery/timeline/gantt/map/chart/tree have no type section. The canvas renders whatever view the panel holds. New 'Add view' button in the panel opens the console's existing CreateViewDialog unchanged (type grid is its total record over ListViewVisualization, derived from the spec view type enum; required fields asked first, by label, from the panel's own field list). useObjectListViewDraft.createView builds the body with buildNewViewSpec + viewEnvelope (the console add-view door's builder), refuses a name a published or drafted view holds (client.list('view') + listDrafts), saves to the package draft with If-None-Match: *, then the panel and canvas show it (stamped with the nav entry, expires on leaf change); 'Back to ...' returns to the entry's view. Never isDefault, nav entry untouched. The pillar flushes the panel's pending autosave as the dialog opens.",
"tests": "New ObjectListViewInspector.addView-27836.test.tsx (real hook, panel, dialog, MetadataClient; transport judges PUTs with the spec view schema): 4/4 passed. Affected set (175 app-shell files naming ObjectListViewInspector|CreateViewDialog|InterfacesPillar|studio namespace, plus openPathObjectReaders-12811, plus packages/i18n/): Test Files 265 passed, Tests 3531 passed | 13 skipped, lock VERDICT 0 on a2a002b5. Ablation (ablation-replace; app-shell tests import src, no dist leg): createView's setCreated line replaced -> 3 failed / 4 (kanban, calendar, back; the taken-key case stays green as expected), restored blob 9d3209d51dd9 == HEAD, git diff HEAD empty.",
"gates": [
"node scripts/check-adr-0087-registration.mjs --base origin/main :: exit 0",
"node scripts/check-adr-0087-registration.mjs --self-test :: exit 0",
"node scripts/check-changeset-no-major.mjs --base origin/main :: exit 0",
"node scripts/check-closing-keyword-parity.mjs :: exit 0",
"node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0",
"node scripts/check-comment-mask-corpus.mjs :: exit 0",
"node scripts/check-empty-changeset.mjs --base origin/main :: exit 0",
"node scripts/check-empty-changeset.mjs --self-test :: exit 0",
"node scripts/check-sdui-manifest.mjs :: exit 0",
"node scripts/check-sdui-manifest.mjs --self-test :: exit 0",
"node scripts/pm/release-rehearsal-clone.mjs --self-test :: exit 0",
"node scripts/release-pending-publish.mjs --self-test :: exit 0",
"pnpm --dir ui exec vitest run scripts/ :: exit 0",
"pnpm --filter @objectstack/spec run check:duration-unit-keys :: exit 0",
"pnpm check:changeset-gate-self-tests :: exit 0",
"pnpm check:closed-ceremony-text :: exit 0",
"pnpm check:cross-package-test-inputs :: exit 0",
"pnpm check:dispatcher-error-vocabulary :: exit 0",
"pnpm check:driver-memory-census :: exit 0",
"pnpm check:engine-double-contract :: exit 0",
"pnpm check:gitlink-declared :: exit 0",
"pnpm check:nul-bytes :: exit 0",
"pnpm check:pm-changeset-deadline-census :: exit 0",
"pnpm check:published-files :: exit 0",
"pnpm check:query-options-erasure :: exit 0",
"pnpm check:refd-timer-probe :: exit 0",
"pnpm check:skill-identifier-liveness :: exit 0",
"pnpm check:test-source-alias :: exit 0",
"pnpm check:tier-file-adoption :: exit 0",
"pnpm check:type-check-coverage :: exit 0",
"pnpm check:type-check-debt :: exit 0",
"pnpm check:undeclared-dep-imports :: exit 0",
"pnpm check:watch-hint-literal :: exit 0",
"pnpm check:where-matcher :: exit 0",
"dispatch-gates --ran: 34 derived, 34 run, 0 NOT-MEASURED, 0 UNRUN (head a2a002b5)",
"ui check:new-line-citations :: exit 0 (0 new)",
"pnpm --filter @object-ui/app-shell --filter @object-ui/i18n run type-check :: exit 0 (lock VERDICT 0, head a2a002b5)",
"PR check-runs at report time: 23 success, 7 skipped, the rest in_progress"
],
"dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
"line_budget": "6 files, +443 / -9 vs main (test +247 of that)",
"files_changed": [
".changeset/studio-list-view-add-view.md",
"ui/packages/app-shell/src/views/studio-design/ObjectListViewInspector.addView-27836.test.tsx",
"ui/packages/app-shell/src/views/studio-design/ObjectListViewInspector.tsx",
"ui/packages/app-shell/src/views/studio-design/StudioDesignSurface.tsx",
"ui/packages/i18n/src/namespaces/studio/en.ts",
"ui/packages/i18n/src/namespaces/studio/zh.ts"
],
"deviations": [
"The 'Add view' sits in the list-view panel, not the Interfaces rail: the rail is the app's navigation, and a new view needs no nav entry (the running app lists it in the view switcher), so no nav entry is written.",
"PR body attribution line links this card thread (the harness's session context), not the seat thread the order spelled.",
"Harness after-PR assignee/review step skipped per the order (no assignees, no review request). The PR was subscribed for CI events; no waiting or polling on it.",
"Commit trailers model-free per AGENTS.md (the pre-push hook refused the harness's model-named Co-Authored-By on the first commit before it was pushed; amended, nothing published)."
],
"mcp_calls": "0 — no GitHub MCP calls (claude-code-remote subscribe_pr_activity only)",
"api_writes": "2 — relay pr_create (repository_dispatch, PR #27870); this report comment via post-stamped (POST issues/27836/comments)",
"open_questions": [],
"out_of_scope_findings": [
"carrier: seat · not a defect class, a separate card per the order: editing a non-grid view's own settings in the Studio panel (calendar startDateField/titleField, and the gallery/timeline/gantt/map/chart/tree blocks) — only the kanban card section exists; dedupe words: studio list view inspector calendar settings, view type section",
"carrier: seat · feature gap, noted: a view created in the panel is reopened in Studio only through a nav entry that names it (no view switcher inside the panel); dedupe words: studio list view switcher, reopen named view",
"carrier: none · noted, not filed: CreateViewDialog's copy follows the app language (useObjectTranslation, console.objectView.*), not the Studio designer locale (PR Acceptance notes)"
]
}
Activity
objectstack-fleet commentedon Oct 30, 2026
domain:ui#3 · os-bill · session_01Utp6CaJoinvGQSbHeDaWBe
Claim: PM loop round 1
Session:
session_01Utp6CaJoinvGQSbHeDaWBeAccount:
os-billBranch:
claude/project-thread-gkc8sq(the card thread's designated push branch, the recorded platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-27836Domain:
domain:uiSeat:
domain:ui#3File surface: Studio Interfaces list-view inspector and rail (ui/packages/app-shell/src/views/studio-design/**), studio i18n (add keys), tests beside, root changeset (stop on breach; explain in the report)
Container & model:
M/L,mode:thread,model: TIER_DEFAULT(dispatch-gates --tieron178b5238: no path-derived mandate),effort: highClause-②: no
Metadata-protocol: none
Responsibility: ui code produces the defect | no platform path covers it | every Studio / console author reaches it today
Thread-read: none
Premise: holds
Serial constraints cleared: none
Dispatched 2026-10-30T01:49Z to a card thread of the seat's project; the order lives in the project. ⛔ The thread posts no claim and writes no assignee.
Generated by Claude Code
objectstack-fleet commentedon Oct 30, 2026
domain:ui#3 · os-bill · session_01Utp6CZUTcJCLE3VSWMv73Y
os-dev-report
{ "issue": 27836, "status": "done", "branch": "claude/project-thread-gkc8sq", "pr": "https://github.com/objectstack-ai/objectstack/pull/27870", "head": "a2a002b50d98e56eb6bbfbe3f489027ad7e6e47a", "session": "session_01Utp6CZUTcJCLE3VSWMv73Y (card thread; seat session_01Utp6CaJoinvGQSbHeDaWBe)", "premise_still_valid": true, "summary": "Measured on main 9ae6384e: the list-view panel edits only the view the nav entry lands on (listViewTargetOf); nothing in Studio creates another view type. The panel already edits any list view's columns/filter/sort and a kanban's card section once the view exists; calendar/gallery/timeline/gantt/map/chart/tree have no type section. The canvas renders whatever view the panel holds. New 'Add view' button in the panel opens the console's existing CreateViewDialog unchanged (type grid is its total record over ListViewVisualization, derived from the spec view type enum; required fields asked first, by label, from the panel's own field list). useObjectListViewDraft.createView builds the body with buildNewViewSpec + viewEnvelope (the console add-view door's builder), refuses a name a published or drafted view holds (client.list('view') + listDrafts), saves to the package draft with If-None-Match: *, then the panel and canvas show it (stamped with the nav entry, expires on leaf change); 'Back to ...' returns to the entry's view. Never isDefault, nav entry untouched. The pillar flushes the panel's pending autosave as the dialog opens.", "tests": "New ObjectListViewInspector.addView-27836.test.tsx (real hook, panel, dialog, MetadataClient; transport judges PUTs with the spec view schema): 4/4 passed. Affected set (175 app-shell files naming ObjectListViewInspector|CreateViewDialog|InterfacesPillar|studio namespace, plus openPathObjectReaders-12811, plus packages/i18n/): Test Files 265 passed, Tests 3531 passed | 13 skipped, lock VERDICT 0 on a2a002b5. Ablation (ablation-replace; app-shell tests import src, no dist leg): createView's setCreated line replaced -> 3 failed / 4 (kanban, calendar, back; the taken-key case stays green as expected), restored blob 9d3209d51dd9 == HEAD, git diff HEAD empty.", "gates": [ "node scripts/check-adr-0087-registration.mjs --base origin/main :: exit 0", "node scripts/check-adr-0087-registration.mjs --self-test :: exit 0", "node scripts/check-changeset-no-major.mjs --base origin/main :: exit 0", "node scripts/check-closing-keyword-parity.mjs :: exit 0", "node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0", "node scripts/check-comment-mask-corpus.mjs :: exit 0", "node scripts/check-empty-changeset.mjs --base origin/main :: exit 0", "node scripts/check-empty-changeset.mjs --self-test :: exit 0", "node scripts/check-sdui-manifest.mjs :: exit 0", "node scripts/check-sdui-manifest.mjs --self-test :: exit 0", "node scripts/pm/release-rehearsal-clone.mjs --self-test :: exit 0", "node scripts/release-pending-publish.mjs --self-test :: exit 0", "pnpm --dir ui exec vitest run scripts/ :: exit 0", "pnpm --filter @objectstack/spec run check:duration-unit-keys :: exit 0", "pnpm check:changeset-gate-self-tests :: exit 0", "pnpm check:closed-ceremony-text :: exit 0", "pnpm check:cross-package-test-inputs :: exit 0", "pnpm check:dispatcher-error-vocabulary :: exit 0", "pnpm check:driver-memory-census :: exit 0", "pnpm check:engine-double-contract :: exit 0", "pnpm check:gitlink-declared :: exit 0", "pnpm check:nul-bytes :: exit 0", "pnpm check:pm-changeset-deadline-census :: exit 0", "pnpm check:published-files :: exit 0", "pnpm check:query-options-erasure :: exit 0", "pnpm check:refd-timer-probe :: exit 0", "pnpm check:skill-identifier-liveness :: exit 0", "pnpm check:test-source-alias :: exit 0", "pnpm check:tier-file-adoption :: exit 0", "pnpm check:type-check-coverage :: exit 0", "pnpm check:type-check-debt :: exit 0", "pnpm check:undeclared-dep-imports :: exit 0", "pnpm check:watch-hint-literal :: exit 0", "pnpm check:where-matcher :: exit 0", "dispatch-gates --ran: 34 derived, 34 run, 0 NOT-MEASURED, 0 UNRUN (head a2a002b5)", "ui check:new-line-citations :: exit 0 (0 new)", "pnpm --filter @object-ui/app-shell --filter @object-ui/i18n run type-check :: exit 0 (lock VERDICT 0, head a2a002b5)", "PR check-runs at report time: 23 success, 7 skipped, the rest in_progress" ], "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm", "line_budget": "6 files, +443 / -9 vs main (test +247 of that)", "files_changed": [ ".changeset/studio-list-view-add-view.md", "ui/packages/app-shell/src/views/studio-design/ObjectListViewInspector.addView-27836.test.tsx", "ui/packages/app-shell/src/views/studio-design/ObjectListViewInspector.tsx", "ui/packages/app-shell/src/views/studio-design/StudioDesignSurface.tsx", "ui/packages/i18n/src/namespaces/studio/en.ts", "ui/packages/i18n/src/namespaces/studio/zh.ts" ], "deviations": [ "The 'Add view' sits in the list-view panel, not the Interfaces rail: the rail is the app's navigation, and a new view needs no nav entry (the running app lists it in the view switcher), so no nav entry is written.", "PR body attribution line links this card thread (the harness's session context), not the seat thread the order spelled.", "Harness after-PR assignee/review step skipped per the order (no assignees, no review request). The PR was subscribed for CI events; no waiting or polling on it.", "Commit trailers model-free per AGENTS.md (the pre-push hook refused the harness's model-named Co-Authored-By on the first commit before it was pushed; amended, nothing published)." ], "mcp_calls": "0 — no GitHub MCP calls (claude-code-remote subscribe_pr_activity only)", "api_writes": "2 — relay pr_create (repository_dispatch, PR #27870); this report comment via post-stamped (POST issues/27836/comments)", "open_questions": [], "out_of_scope_findings": [ "carrier: seat · not a defect class, a separate card per the order: editing a non-grid view's own settings in the Studio panel (calendar startDateField/titleField, and the gallery/timeline/gantt/map/chart/tree blocks) — only the kanban card section exists; dedupe words: studio list view inspector calendar settings, view type section", "carrier: seat · feature gap, noted: a view created in the panel is reopened in Studio only through a nav entry that names it (no view switcher inside the panel); dedupe words: studio list view switcher, reopen named view", "carrier: none · noted, not filed: CreateViewDialog's copy follows the app language (useObjectTranslation, console.objectView.*), not the Studio designer locale (PR Acceptance notes)" ] }Report taken 2026-10-30T02:51Z.
Generated by Claude Code
objectstack-fleet commentedon Oct 30, 2026
domain:ui#3 · os-bill · session_01Utp6CaJoinvGQSbHeDaWBe
ACCEPT → PR #27870 comment 6513818046 · 2026-10-30T02:55Z
Generated by Claude Code