Skip to content

Record edit mode: the highlight strip expands to six narrow columns — a lookup shows one letter of the owner while the reader edits #28913

Closed

Description

@objectstack-fleet

epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

Filed by the record-page epic seat from a second console review under epic #26676. An independent reviewer walked the console on main bdb19ca6d9, with examples/app-crm as the backend, at 1440 and 390 px. The seat then re-read the evidence. The maintainer approved the seat's checked list: 「Fable 评估(核对后) 同意立卡」 (2026-11-02). Code readings below are on main 5e1b9b0a77. No domain:* label is set: triage routes this card.

Observed

Double-click a field on a lead, in the maximized pane at 1440 px. The whole record goes into edit mode. The strip grows from the fields that have a value to all six, including empty ones, in six columns. The owner lookup shows only 「D」, and the phone and email inputs are squeezed.

Reading

ui/packages/plugin-detail/src/HeaderHighlight.tsx:

  • line 109: editing ? fields : fields.filter(hasValue), so edit mode draws every strip field, which it needs in order to fill an empty one;
  • line 127: @3xl:grid-cols-6, which puts all six in one row.

#28868 removes the derived strip, but a declared strip can still hold six fields, so this stays reachable. The two cards touch the same component: run them one after the other.

Target

  1. The strip's edit face caps at a column count where a lookup and its buttons keep a usable width. The fields wrap to a second row. The seat suggests 3 or 4 columns, and the claiming seat measures and names the number in the PR.
  2. Edit mode still draws empty strip fields, since they must stay fillable.
  3. The read face is unchanged.
  4. No new key and no new option. Whether a double-click should edit the whole record is not part of this card.

Acceptance

  • With six declared strip fields in the maximized pane at 1440 px and in the pane at 720 px, every lookup shows the full chosen name, or truncates with the name available on hover, and its buttons do not overlap the value.
  • Save and cancel behave as today.
  • A test pins the edit face's column cap.

Activity

  1. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: priority:p2 · domain:ui · pm:queue · 2026-11-02T05:09Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. added
    area:recordsBusiness objects, records, the views that show data, usable forms, search
    domain:uiDomain lane — seat card indexed by label:pm:seat
    pm:queueReady for the PM dispatch loop
    on Nov 2, 2026
  3. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#4 · zhuangjianguo · session_01QsR2jR7ZFkpqmm4U8S1f9y

    Claim: PM loop round 10 · 2026-11-02T05:20Z
    Session: session_01QsR2jU1A8SyDJ4Lxe7A9Kd (card thread, os-dev); dispatched by seat session session_01QsR2jR7ZFkpqmm4U8S1f9y
    Account: zhuangjianguo
    Branch: claude/project-thread-87mrud (platform-assigned to the card thread; it can push only this branch)
    Worktree: objectstack-issue-28913
    Domain: domain:ui
    Seat: domain:ui#4
    File surface: ui/packages/plugin-detail/src/HeaderHighlight.tsx (the edit face's grid columns), its tests, and a changeset (stop on breach; explain in the report)
    Container & model: S, mode:thread, model: default tier (dispatch-gates --tier: no path-derived mandate), effort: default
    Clause-②: no
    Metadata-protocol: none
    Responsibility: in record edit mode the highlight strip draws six narrow columns, so a lookup shows one letter of the owner while the reader edits | the strip already wraps its read face at the container widths | every user who edits a record whose object declares five or six highlight fields
    Thread-read: 6569579470
    Premise: holds (at origin/main 8bb2417a, HeaderHighlight.tsx:109 draws every field while editing and the grid face is @3xl:grid-cols-6)
    Serial constraints cleared: #28868 landed as 8bb2417a; none in flight on this file


    Generated by Claude Code

  4. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 2, 2026
  5. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#4 · zhuangjianguo · session_01QsR2jU1A8SyDJ4Lxe7A9Kd
    os-dev-report

    {
     "issue": 28913,
     "status": "done",
     "branch": "claude/project-thread-87mrud",
     "pr": "https://github.com/objectstack-ai/objectstack/pull/29055",
     "session": "session_01QsR2jU1A8SyDJ4Lxe7A9Kd",
     "premise_still_valid": true,
     "summary": "On the default record page the highlight strip's grid adds @3xl:grid-cols-6 only while reading; while editing it stops at three columns, so six fields edit in two rows of three and empty fields still draw. Measured in the real Console (app-crm, six strip fields declared locally on a lead, not committed): in the maximized pane at 1440 px (1088 px strip) main gave 168 px cells and cut the account lookup to 10 px ('I...') and assigned_to to 52 px; cap 4 gives 260 px cells and about 102 px of name room, which cuts a 23-letter account name (149 px); cap 3 gives 352 px cells and about 194 px of room and shows it whole, so the cap is 3. The pane at a 1440 px viewport (about 720 px wide, 623 px strip) is below @3xl and draws 3 columns on main, cap 4 and cap 3 alike. Save and cancel checked live: read 6, edit 3, cancel 6, save persisted and back to 6.",
     "tests": "head 3e7948b2: pnpm --dir ui exec vitest run packages/plugin-detail/ (locked, maxWorkers 2) Test Files 363 passed, 1 skipped; Tests 3209 passed, 18 skipped. New file HeaderHighlight.editGridCap-28913.test.tsx 3/3. Ablation via scripts/ablation-replace.mjs: anchor \"!editing && '@3xl:grid-cols-6',\" replaced by \"(editing || true) && '@3xl:grid-cols-6',\" (anchor 1 -> 0, blob 0f0dee71 -> 348a2aef): 1 failed / 2 passed (the edit-face case); restore blob == HEAD, git diff HEAD empty. plugin-detail is src-aliased in ui vitest, so no dist leg. After merging main (head 4ea64784): the four strip files incl. main's RecordMetaFooter.drawnStrip-28909 re-ran 31/31.",
     "gates": "node scripts/pm/dispatch-gates.mjs --ran: 34 derived, 34 run, 0 NOT-MEASURED, all exit 0 (incl. check-sdui-manifest and --self-test, ui vitest run scripts/ 169 files passed 2 skipped, check:type-check-debt locked). PR-body gates on the final body: check-changeset-no-major, check-closing-keyword-parity, check-adr-0087-registration, check-empty-changeset, check-partof-closing-keyword all exit 0. pnpm --filter @object-ui/plugin-detail run type-check exit 0; eslint --no-inline-config on both changed files exit 0; ui check:new-line-citations 0 new. CI check-runs: in_progress at report time.",
     "dogfood_battery": "n/a: no ! in the PR title and no (narrowing) arm",
     "line_budget": "3 files, +103 -1 = 104 changed lines (source 10, test 84, changeset 10); far under 3000",
     "files_changed": [
      ".changeset/28913-edit-strip-column-cap.md",
      "ui/packages/plugin-detail/src/HeaderHighlight.tsx",
      "ui/packages/plugin-detail/src/__tests__/HeaderHighlight.editGridCap-28913.test.tsx"
     ],
     "deviations": [
      "720 px (pane) read as the record pane at a 1440 px viewport, which is about 720 px wide (623 px strip); a 720 px viewport was also measured: it is the phone layout, whose strip carries no account field, and assigned_to showed whole before and after.",
      "Measured on the Vite console dev server (source-aliased) against an app-crm --fresh backend rather than a console:build; before = origin/main's HeaderHighlight.tsx written into the tree, restored from HEAD (git diff HEAD empty).",
      "For the long-name reading the seeded account was renamed 'Initech Global Holdings' in the throwaway --fresh database, then renamed back for the final shots; assigned_to was set to the dev admin in that database (the seed leaves user fields unset). The local highlightFields declaration on crm_lead was reverted (git status clean).",
      "A first commit capped at 4 (5ceb9c1f); the measurement moved it to 3 in 3e7948b2. Both are on the branch."
     ],
     "mcp_calls": "2: mcp__github__issue_read get and get_comments on #28913 (reads only; no GitHub MCP write)",
     "api_writes": "2 relay strokes: pr_create (repository_dispatch, run 41400248111, PR #29055, read-back identical) and this os-dev-report comment via post-stamped; plus 3 git pushes (not REST)",
     "open_questions": [],
     "out_of_scope_findings": [
      "class: a (truncation) . reach: Console record pane at a 1440 px viewport, edit mode, app-crm lead with account in the strip: the account picker shows 'Init...' (39 of 43 px) in a 197 px cell beside its clear and browse buttons; same on main, cap 4 and cap 3 (the 623 px strip is below @3xl, 3 columns). Meets this card's acceptance via the span title, so not fixed here; a wider cell would need 2 edit columns below @3xl or slimmer lookup chrome (about 66 px of trigger chrome plus two 36 px buttons). Evidence: /mnt/project-files/issue-28913/after-pane-1440.png, m-after.json. dedupe words: highlight strip edit pane lookup truncated, record pane lookup picker width, HeaderHighlight edit columns pane"
     ]
    }
  6. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#4 · zhuangjianguo · session_01QsR2jR7ZFkpqmm4U8S1f9y

    ACCEPT · 2026-11-02T06:44Z · PR #29055 at 4ea64784, record 6570899885. Ordinary queue landing follows. The screenshots are held in the project folder, not on GitHub.


    Generated by Claude Code

  7. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#4 · zhuangjianguo · session_01QsR2jR7ZFkpqmm4U8S1f9y

    Landed · 2026-11-02T08:09Z · PR #29055 merged through the merge queue as 6ada509d. Record: ACCEPT 6570899885 at 4ea64784 (Clause-②: no, no contract review owed).

    probe before (6ada509d~1) now (origin/main)
    !editing && '@3xl:grid-cols-6' in ui/packages/plugin-detail/src/HeaderHighlight.tsx 0 1

    The card closed through Fixes. pm:dispatched comes off with this note.


    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

Labels

area:recordsBusiness objects, records, the views that show data, usable forms, searchdomain:uiDomain lane — seat card indexed by label:pm:seatenhancementNew feature or requestpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions