Skip to content

Record page: the related switch decides whether the column exists, the panel toggles move into the header action row, and a 1440 px window with the sidebar is three columns #27241

Closed

Description

@objectstack-fleet

epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

Unblocked 2026-10-29T06:28Z — PR #27310 (#27055) merged on main; worked in #27055's round-2 patch on branch claude/issue-27055-v3-patch-27241 (PR Fixes #27241).

Part of the record-page-v3 epic #26676. Runs after #27055 (the v3 layout rewrites the header and the column arrangement; same files). If #27055's session reads the seat addendum on its card in time and folds these in, this card closes as done by that PR.

Source (main 9dacccf961, after #27052)

Measured by the epic seat on the console: HotCRM contact record page, 1440 × 900 window, sidebar open (content container 1184 px).

  1. recordPageArrangementFor('two-column', switches) (ui/packages/plugin-detail/src/synth/recordPageColumns.ts) fits details + timeline and sets relatedRail: true whether switches.related is on or off — the related switch has no visible effect in the two-column tier, and the 「相关 N」 rail toggle still opens the column with the switch OFF. Two controls over one column, with inconsistent state.
  2. The PanelToggles group is drawn on the crumb row (RecordDetailView.tsx), right side; on a direct open there is no back link, so two 32 px icon buttons float alone at the top right. The pressed tint (bg-muted) does not read in the dark theme; the icons are rows-3 / layout-grid.
  3. RECORD_PAGE_THREE_COLUMN_MIN_WIDTH = 1280 is container-measured, so a 1440 px window with the 256 px sidebar (1184 px of content) is two columns; the v3 design boards draw three columns at 1440.

Target (maintainer, 2026-10-28, verbatim: 「是:三栏阈值改成 1440 窗口(含侧栏)即三栏;开关改进头部动作行,关联 OFF 就没有栏」)

  1. related: off ⇒ no related column and no rail; related: on with no room in the tier ⇒ the rail (relatedRail is switches.related && !columns.includes('related')). The rail toggle only opens or closes a column the switch allows. Pin: two-column tier, related OFF, the rail toggle is absent; related ON, the rail toggle is present and opens the column.
  2. The panel toggles become ONE segmented control (icon + label per segment: 「时间线」 with an activity glyph, 「关联」 with a right-panel glyph), drawn at the right end of the record header's action row after the overflow (⋯) and refresh controls, separated from them by a vertical hairline, in every column tier. A segment that is on is filled with the accent tint (bg-accent + text-accent); a segment that is off is plain muted text — the state reads at a glance without hovering. The crumb row keeps only the back link and ↑ ↓, and is not drawn when neither exists. Tooltip keycaps and aria-keyshortcuts unchanged (⌘⇧. / ⌘⇧,); the matcher accepts key . / > and , / < beside code Period / Comma. The seat's mock-up (header row, segmented control, three columns with the related column gone when off) is in the epic session's design notes and reproduced on console record page v3: frameless detail sections, one merged timeline (discussion + activity + field changes), compact related cards, header 1 primary + 2 secondary + ⋯ — the synthesized default page, drawn from the object's roles; the dead BuildPageOptions hints go #27055's seat addendum.
  3. Thresholds re-derived so that a 1440 px window with the sidebar open is three columns and a 1024 px window with the sidebar open stays two columns, still container-measured (about 1120 / 760; measure the sidebar's real width on main and write the derivation in the constants' docblock); feat(plugin-detail,app-shell): the default record page is one page at two widths — resident columns on a wide page, the tabs in a drawer #26758's tier pins updated to the new numbers.

No metadata key, no spec change.

File surface

ui/packages/plugin-detail/src/synth/recordPageColumns.ts (+ its switches and tier tests), ui/packages/plugin-detail/src/RecordPageColumns.tsx, ui/packages/app-shell/src/views/RecordDetailView.tsx (toggle placement, chord matcher), ui/packages/components/src/custom/panel-toggles.tsx (pressed state), the page:header renderer if the action row lives there, i18n if a label changes, tests beside, changeset; ⛔ packages/spec/**.

Acceptance

  1. Tests per Target item (rail absent when related OFF; toggles in the header row in both column tiers; the new thresholds with the feat(plugin-detail,app-shell): the default record page is one page at two widths — resident columns on a wide page, the tabs in a drawer #26758 pins green).
  2. Screenshots: HotCRM contact at a 1440 window with the sidebar open — three columns with both switches on; related OFF (two columns, no rail toggle); timeline OFF.

Filed by the epic PM session session_cdb7a717-def7-4e71-9988-f089fbaa18ff on 2026-10-28 from the seat's own test of #27052 on main, on the maintainer's ruling quoted above. The seat addendum with the same three rulings is on #27055.

Activity

  1. added
    bugSomething isn't working
    priority:p1High: required for production / M2
    area:recordsBusiness objects, records, the views that show data, usable forms, search
    on Oct 28, 2026
  2. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

    Claim: PM loop round 3 (epic #26676, v3 follow-up of #27055) — worked in #27055's round-2 patch
    Session: session_cdb7a717-def7-4e71-9988-f089fbaa18ff
    Account: zhuangjianguo
    Branch: claude/issue-27055-v3-patch-27241
    Worktree: objectstack-issue-27055-r2
    Domain: domain:ui
    Seat: epic #26676 (the epic PM session)
    File surface: ui/packages/plugin-detail/src/synth/recordPageColumns.ts (+ tier and switches tests), RecordPageColumns.tsx, RelatedCardStack.tsx, synth/buildDefaultPageSchema.ts (the two #27069 read points), ui/packages/app-shell/src/views/RecordDetailView.tsx (toggle placement, synthParts, chord matcher), ui/packages/components/src/custom/panel-toggles.tsx, the page:header action row renderer, i18n in all ten packs, tests beside, changeset; ⛔ packages/spec/** (stop on breach; explain in the report)
    Container & model: M, mode:subagent (a local os-dev agent of this seat; user-token pushes), model: TIER_DEFAULT (dispatch-gates --tier 2026-10-29T06:24Z: no path-derived mandate), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — filed from the seat's own test, the maintainer's ruling quoted on the card
    Thread-read: none
    Premise: holds (re-read on main 3bfb357aa3: #27310 merged — recordPageArrangementFor, RelatedCardStack, the PanelToggles crumb-row placement and the 1280 / 1024 container thresholds are what this card changes; #27215 is on main for the fence half)
    Serial constraints cleared: #27310 MERGED (this card was blocked by it); #27056–#27059 (ui lane, blocked by #27055) are not yet claimed — this patch lands before them; no other open PR touches these files (scan 2026-10-29T06:24Z)

    Dispatched at 2026-10-29T06:24Z to a local os-dev agent of this seat; the dispatch order lives in the agent's opening prompt.


    _Generated by Claude Code\n

  3. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

    Review recorded on the PR: #27473 ## 席位核对 — ACCEPT at head 9c82d929a8: related OFF draws no column and no rail; the panel toggles are one segmented control in the header action row (on segment bg-accent + text-accent-foreground — the seat confirms the deviation from the literal text-accent, which resolves to the same pale tint); the container thresholds re-derived to 1120 / 760 from the measured 256 px sidebar so a 1440 window with the sidebar open is three columns. Ready + auto-merge on the maintainer's standing authorization for this epic; the card closes by the PR's Fixes line. — epic PM session_cdb7a717-def7-4e71-9988-f089fbaa18ff, 2026-10-29T08:35Z


    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, searchbugSomething isn't workingdomain:uipriority:p1High: required for production / M2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions