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
console phone list: card rows draw every shown column as a label / value line — the board's row is the name, one subtitle line and one status chip #28484
Filing gate: ③ a follow-up the seat named in the ACCEPT of PR #28477 (#27058), item 6(b), filed after it landed. ⛔ Not a claim. Triage sets the lane and grade.
Reach: every reader on a phone (< 768 px) on any grid list or enlarged related tab.
Observed
On main after #27058 (PR #28477), the phone list's card rows (ObjectGrid's mobile cards, #26896) draw the declared name field, then every shown column as its own line, most as 「label … value」 (shot 01 of PR #28477: name, status chip, score, 公司 row, 来源 row; ≈ 290 px per lead). The enlarged related tab's cards (shot 11) sit inset from the body width (x ≈ 40–350 of 390).
#27058 Target 2 and the board's list frame (RecordMobile.dc.html at a7825499aa, frame 1) describe the row as: the declared name field as the title, one subtitle line from the first two shown columns (「Atlas Construction · Director of Sales」), one status chip at the right; ≈ 60 px per row, ten rows in the first screen. #27058's file surface did not include plugin-grid, so PR #28477 left the card face as it was.
Claim: PM loop round 2 · 2026-11-01T03:52Z
Session: session_01L9qibw2uhdSeHYfnZdAf4V (seat; implementation by card thread session session_01L9qibyXUUW6oMgmoPfVFvW, mode:thread)
Account: os-tesla (the seat's linked user as GET /user answers it; the card's assignee)
Branch: claude/project-thread-f7fyew
Worktree: objectstack-issue-28484
Domain: domain:ui
Seat: domain:ui#1
File surface: ui/packages/plugin-grid/** (the mobile card face), the enlarged related tab's container padding once measured (the thread reports the path before editing it), tests, root changeset (stop on breach; explain in the report)
Container & model: S–M, mode:thread, model: default (dispatch-gates --tier: no path-derived mandate), effort: medium
Clause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: none
Premise: holds (filed 2026-10-31T23:00Z after PR #28477 landed; ui seat 5, its filer, signed off 2026-11-01T01:39Z)
Serial constraints cleared: siblings #28469 (plugin-detail tab row) and #28497 (UnifiedSidebar) run beside it on other files.
Order: /mnt/project-files/ui-seat-1/r2026-10-31b/dispatch-28484.md, under the maintainer's 2026-11-01T03:47Z 「任务有一大堆啊,都可以派,包括 p3」.
Claim amendment 1 · 2026-11-01T03:55Z · amends claim 6553085655 at the card thread's measured request (origin/main1f1a369b). Append-only.
Surface, added:ui/packages/plugin-detail/src/RelatedList.tsx, the isMobile && (type === 'grid' || type === 'table') arm only, for the ENLARGED related tab's face: it hands an object-grid node (inline { provider: 'value', items }, the same columns, onRowClick) instead of object-gallery, so the enlarged tab's phone cards take plugin-grid's card face at the body's full width. Compact related cards stay as they are.
Why: the enlarged tab's phone cards are not ObjectGrid but ObjectGallery (wrapper grid gap-4 p-4, the measured inset); plugin-grid depends on plugin-detail, so the face cannot be imported there, and a registry-resolved object-grid node avoids the cycle.
Card face plan inside plugin-grid, as measured: title = declared name field; status chip = the shown column detectStatusField (@object-ui/types) names, drawn through its desktop cell; subtitle = the first two shown non-title, non-status columns joined with 「 · 」, masked and empty skipped; the per-column lines and the name-keyword stage heuristics go. Tests pinning the old lines are rewritten to the new face.
{
"issue": 28484,
"status": "done",
"branch": "claude/project-thread-f7fyew",
"pr": "https://github.com/objectstack-ai/objectstack/pull/28532",
"session": "session_01L9qibyXUUW6oMgmoPfVFvW",
"premise_still_valid": true,
"summary": "ObjectGrid's phone card row (plain and grouped lists, below 768 px) now draws the declared name field as title, one subtitle line joining the first two shown non-title non-status columns through their desktop cells with ' · ' (masked/empty skipped), and one status chip at the right (detectStatusField's column, drawn through its own cell); the per-column label lines and name-keyword heuristics are gone. The enlarged related tab on a phone hands object-grid its inline rows instead of object-gallery (RelatedList.tsx, claim amendment 1). Measured on app-crm at 390 px: lead rows 138 -> 62 px; enlarged related cards x 40-350 -> 32-358.",
"tests": "head d63d4c94. vitest packages/plugin-grid/ packages/plugin-detail/: VERDICT command-exit 0, 627 files passed / 1 skipped, 5516 tests passed (on c4721de6; d63d4c94 adds only ui/scripts/__tests__ + plugin-grid/scripts/build-css.mjs). vitest scripts/ (ui): command-exit 0, 169 files / 4900 tests passed on d63d4c94. type-check plugin-grid + plugin-detail after dts closure build: command-exit 0. New phoneCardRow-28484 (7 tests) ablated against origin/main ObjectGrid.tsx: 6 failed / 1 passed (768 px control), restored, git diff HEAD empty. New RelatedList.enlargedPhoneCards-28484 (4 tests) green. Six older card pins rewritten onto the new face, none deleted.",
"gates": "dispatch-gates --commands: 35 derived, all run, all exit 0 (check-sdui-manifest + --self-test included; check:type-check-debt first returned exit 3 queue-timeout behind this thread's own suite, rerun under the lock: exit 0). --ran reconciliation: 35 run, 0 NOT-MEASURED, 0 UNRUN. ui check:new-line-citations: 0 new. CI check-runs: in_progress at report time.",
"line_budget": "13 files, +412 / -284 (pre-PR diff vs origin/main)",
"files_changed": [
".changeset/28484-phone-list-card-row.md",
"ui/packages/plugin-grid/src/ObjectGrid.tsx",
"ui/packages/plugin-detail/src/RelatedList.tsx",
"ui/packages/plugin-grid/scripts/build-css.mjs",
"ui/scripts/__tests__/percent-storage-callers-11475.test.ts",
"ui/packages/plugin-grid/src/__tests__/phoneCardRow-28484.test.tsx",
"ui/packages/plugin-detail/src/__tests__/RelatedList.enlargedPhoneCards-28484.test.tsx",
"ui/packages/plugin-grid/src/__tests__/ObjectGrid.emptyPlaceholderAffordance-8491.test.tsx",
"ui/packages/plugin-grid/src/__tests__/gridCurrencyFaces.displayLocale-9909.test.tsx",
"ui/packages/plugin-grid/src/__tests__/maskedColumnSurfaces-10583.test.tsx",
"ui/packages/plugin-grid/src/__tests__/mobileCardDateLocale.test.tsx",
"ui/packages/plugin-grid/src/__tests__/mobileCardFieldCurrency-10423.test.tsx",
"ui/packages/plugin-grid/src/__tests__/mobileCardTitleNameField-13150.test.tsx"
],
"deviations": [
"Surface: two ledgers outside the declared surface carried the removed card code and went red: ui/scripts/__tests__/percent-storage-callers-11475.test.ts (row deleted, the call is gone) and plugin-grid/scripts/build-css.mjs MUST_SURVIVE (two specimens only the old card produced swapped for two still produced only here). Both shrink or keep-equal, no ceiling raised.",
"Neighbour files: RelatedList.tsx touched (claim amendment 1); PR #28466 that declared it is merged. None of #28477's files touched.",
"Screenshots are in project files ui-seat-1/r2026-10-31b/28484/, not on GitHub."
],
"dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
"mcp_calls": "0 — no MCP GitHub calls",
"api_writes": "2 — relay pr_create (#28532), this os-dev-report comment via post-stamped",
"open_questions": [],
"out_of_scope_findings": ["carrier: none · subtitle values are desktop cells, so a select/percent subtitle value draws its badge/bar; noted in Acceptance notes, not filed"]
}
Activity
objectstack-fleet commentedon Nov 1, 2026
domain:ui#1 · os-tesla · session_01L9qibw2uhdSeHYfnZdAf4V
Claim: PM loop round 2 · 2026-11-01T03:52Z
Session:
session_01L9qibw2uhdSeHYfnZdAf4V(seat; implementation by card thread sessionsession_01L9qibyXUUW6oMgmoPfVFvW,mode:thread)Account:
os-tesla(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/project-thread-f7fyewWorktree:
objectstack-issue-28484Domain:
domain:uiSeat:
domain:ui#1File surface:
ui/packages/plugin-grid/**(the mobile card face), the enlarged related tab's container padding once measured (the thread reports the path before editing it), tests, root changeset (stop on breach; explain in the report)Container & model:
S–M,mode:thread,model: default(dispatch-gates --tier: no path-derived mandate),effort: mediumClause-②: no
Metadata-protocol: none
Responsibility:
n/a — not a defect cardThread-read: none
Premise: holds (filed 2026-10-31T23:00Z after PR #28477 landed; ui seat 5, its filer, signed off 2026-11-01T01:39Z)
Serial constraints cleared: siblings #28469 (
plugin-detailtab row) and #28497 (UnifiedSidebar) run beside it on other files.Order: /mnt/project-files/ui-seat-1/r2026-10-31b/dispatch-28484.md, under the maintainer's 2026-11-01T03:47Z 「任务有一大堆啊,都可以派,包括 p3」.
objectstack-fleet commentedon Nov 1, 2026
domain:ui#1 · os-tesla · session_01L9qibw2uhdSeHYfnZdAf4V
Claim amendment 1 · 2026-11-01T03:55Z · amends claim 6553085655 at the card thread's measured request (
origin/main1f1a369b). Append-only.ui/packages/plugin-detail/src/RelatedList.tsx, theisMobile && (type === 'grid' || type === 'table')arm only, for the ENLARGED related tab's face: it hands anobject-gridnode (inline{ provider: 'value', items }, the same columns,onRowClick) instead ofobject-gallery, so the enlarged tab's phone cards take plugin-grid's card face at the body's full width. Compact related cards stay as they are.ObjectGridbutObjectGallery(wrappergrid gap-4 p-4, the measured inset);plugin-griddepends onplugin-detail, so the face cannot be imported there, and a registry-resolvedobject-gridnode avoids the cycle.plugin-grid, as measured: title = declared name field; status chip = the shown columndetectStatusField(@object-ui/types) names, drawn through its desktop cell; subtitle = the first two shown non-title, non-status columns joined with 「 · 」, masked and empty skipped; the per-column lines and the name-keyword stage heuristics go. Tests pinning the old lines are rewritten to the new face.objectstack-fleet commentedon Nov 1, 2026
domain:ui#1 · os-tesla · session_01L9qibyXUUW6oMgmoPfVFvW
os-dev-report
{ "issue": 28484, "status": "done", "branch": "claude/project-thread-f7fyew", "pr": "https://github.com/objectstack-ai/objectstack/pull/28532", "session": "session_01L9qibyXUUW6oMgmoPfVFvW", "premise_still_valid": true, "summary": "ObjectGrid's phone card row (plain and grouped lists, below 768 px) now draws the declared name field as title, one subtitle line joining the first two shown non-title non-status columns through their desktop cells with ' · ' (masked/empty skipped), and one status chip at the right (detectStatusField's column, drawn through its own cell); the per-column label lines and name-keyword heuristics are gone. The enlarged related tab on a phone hands object-grid its inline rows instead of object-gallery (RelatedList.tsx, claim amendment 1). Measured on app-crm at 390 px: lead rows 138 -> 62 px; enlarged related cards x 40-350 -> 32-358.", "tests": "head d63d4c94. vitest packages/plugin-grid/ packages/plugin-detail/: VERDICT command-exit 0, 627 files passed / 1 skipped, 5516 tests passed (on c4721de6; d63d4c94 adds only ui/scripts/__tests__ + plugin-grid/scripts/build-css.mjs). vitest scripts/ (ui): command-exit 0, 169 files / 4900 tests passed on d63d4c94. type-check plugin-grid + plugin-detail after dts closure build: command-exit 0. New phoneCardRow-28484 (7 tests) ablated against origin/main ObjectGrid.tsx: 6 failed / 1 passed (768 px control), restored, git diff HEAD empty. New RelatedList.enlargedPhoneCards-28484 (4 tests) green. Six older card pins rewritten onto the new face, none deleted.", "gates": "dispatch-gates --commands: 35 derived, all run, all exit 0 (check-sdui-manifest + --self-test included; check:type-check-debt first returned exit 3 queue-timeout behind this thread's own suite, rerun under the lock: exit 0). --ran reconciliation: 35 run, 0 NOT-MEASURED, 0 UNRUN. ui check:new-line-citations: 0 new. CI check-runs: in_progress at report time.", "line_budget": "13 files, +412 / -284 (pre-PR diff vs origin/main)", "files_changed": [ ".changeset/28484-phone-list-card-row.md", "ui/packages/plugin-grid/src/ObjectGrid.tsx", "ui/packages/plugin-detail/src/RelatedList.tsx", "ui/packages/plugin-grid/scripts/build-css.mjs", "ui/scripts/__tests__/percent-storage-callers-11475.test.ts", "ui/packages/plugin-grid/src/__tests__/phoneCardRow-28484.test.tsx", "ui/packages/plugin-detail/src/__tests__/RelatedList.enlargedPhoneCards-28484.test.tsx", "ui/packages/plugin-grid/src/__tests__/ObjectGrid.emptyPlaceholderAffordance-8491.test.tsx", "ui/packages/plugin-grid/src/__tests__/gridCurrencyFaces.displayLocale-9909.test.tsx", "ui/packages/plugin-grid/src/__tests__/maskedColumnSurfaces-10583.test.tsx", "ui/packages/plugin-grid/src/__tests__/mobileCardDateLocale.test.tsx", "ui/packages/plugin-grid/src/__tests__/mobileCardFieldCurrency-10423.test.tsx", "ui/packages/plugin-grid/src/__tests__/mobileCardTitleNameField-13150.test.tsx" ], "deviations": [ "Surface: two ledgers outside the declared surface carried the removed card code and went red: ui/scripts/__tests__/percent-storage-callers-11475.test.ts (row deleted, the call is gone) and plugin-grid/scripts/build-css.mjs MUST_SURVIVE (two specimens only the old card produced swapped for two still produced only here). Both shrink or keep-equal, no ceiling raised.", "Neighbour files: RelatedList.tsx touched (claim amendment 1); PR #28466 that declared it is merged. None of #28477's files touched.", "Screenshots are in project files ui-seat-1/r2026-10-31b/28484/, not on GitHub." ], "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm", "mcp_calls": "0 — no MCP GitHub calls", "api_writes": "2 — relay pr_create (#28532), this os-dev-report comment via post-stamped", "open_questions": [], "out_of_scope_findings": ["carrier: none · subtitle values are desktop cells, so a select/percent subtitle value draws its badge/bar; noted in Acceptance notes, not filed"] }objectstack-fleet commentedon Nov 1, 2026
domain:ui#1 · os-tesla · session_01L9qibw2uhdSeHYfnZdAf4V
Landed · 2026-11-01T05:49Z · PR #28532 merged through the merge queue as
69dfac0aat 2026-11-01T05:48:10Z. Seat ACCEPT 6553875570 (d63d4c94).69dfac0a~1)origin/main)grid-card-subtitletest id inui/packages/plugin-grid/src/ObjectGrid.tsxobjectstack#28484) inui/packages/plugin-detail/src/RelatedList.tsxThe card closed on
Fixes, andpm:dispatchedis removed in the same stroke as this note.