Skip to content

console mobile (≤ 640 px): list as card rows with view chips and a FAB, the record page with a compact header, sticky tabs and a bottom action bar, related records pushed as full pages with a path row and back — the record is always a page on a phone #27058

Open

Description

@objectstack-fleet

epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

Unblocked 2026-10-29T09:35Z — upstream #27055 closed (the record page v3 layout and its round 2 are on main at 273137d227; #27053's tabs retirement and #26679's drawer are there too). Back in the ui lane queue; re-read the card's Source against current main at dispatch — the v3 files it names moved in PR #27310 / #27473.

Part of the record-page-v3 epic #26676 (v3 child 7 of 8). Runs after #27055 (shares the header and tab components) — design: canvas board RecordMobile.

Source (origin/main 7bb8084590)

On a phone viewport the console's object list is the desktop grid squeezed (horizontal scroll, the # column, a toolbar of icons), and a record opens as the full page by deriveRecordSurface → page on mobile (kept by #26804); the record page is the desktop header stacked, the actions wrap, and the tabs are the only tier. Related rows navigate to a full page with no path back beyond the browser history. RelatedList has an isMobile card face already.

Target

  1. List (≤ 640 px container): rows are cards — avatar / initials, name, one subtitle line (the first two shown columns), one status chip; the view tabs become a horizontally scrolling chip row; filter / sort chips one row with the count at the right; search and Display in the top bar; 新建 is a bottom-right FAB; selection by long press; the Display menu drops the layout row.
  2. Record page: top bar 「‹ 返回」 + title + ↑ ↓ + ⋯; header avatar + name + chip, highlights in 2 columns (max 4), the stage path compressed to a bar with labels; sticky tabs 详情 / 时间线 / 关联 (the tabbed tier — timeline second for worked objects, last otherwise); the primary action + one secondary + ⋯ fixed in a bottom action bar; sections frameless as on desktop, fields in 2 columns.
  3. Related record: pushed as a full page; a path row under the top bar (「线索 Mira Costa › 任务」) carries the desktop drawer's trail (?from=); 「‹」 returns to the parent on the tab it came from; ↑ ↓ step through the same sibling set as the drawer stack (console record drawer v2: the bar is ↑ ↓ · ⤢ · ✕ (no object name, no counter); a related row or a lookup opens its record in place with a trail, ← / Esc go back one level; ⤢ carries the trail into the page; on the record page a related row opens a drawer over the page #26679).
  4. No drawer, no split, no column toggles on a phone (the preferences simply do not apply); nothing new in metadata.

File surface

ui/packages/plugin-list/src/ListView.tsx (mobile card face, chip rows, FAB), plugin-grid mobile row card if one exists, ui/packages/app-shell/src/views/RecordDetailView.tsx (mobile header / action bar / path row), ui/packages/plugin-detail/src/RecordPageColumns.tsx (tabbed tier on mobile), ui/packages/components for the bottom action bar and FAB primitives if missing, i18n, tests beside, changesets.

Acceptance

  1. Tests (jsdom with a 390 px container): the list renders card rows and the FAB; the record page renders the bottom action bar with the primary action and the tabs; a related row click pushes the record page with the path row.
  2. Screenshots at 390 × 844 (Chromium mobile emulation): leads list, lead record, lead → task with the path row.

Rulings (maintainer, chat in the filing session, 2026-10-28 — verbatim, not re-decidable here)

  1. Record-page model (2026-10-27): 「1. 一个对象一个默认打开方式:默认抽屉(带展开整页),page 只给显式声明的对象,modal 退役,split / popover 变成用户个人偏好;抽屉和整页是同一张页在两个宽度。」
  2. On the resident timeline column: 「时间线是不是太突出了,这个只适合部分对象吧?适合做所有业务对象的默认布局吗」 and then 「时间线是否显示,是否可以切换,比如当前版本的 Claude code,顶部有很多切换图标」 — the column's presence is a per-user toggle with an object-derived default, never metadata.
  3. On the related column's cost: 「关联都放在右侧,记录打开时是不是会很慢,因为需要加载所有的关联子表。」 — the related column loads counts first, rows on demand, and never blocks the details.
  4. On mobile: 「还要考虑手机端的效果。」
  5. On the definition surfaces: the PM's keep / narrow / retire table was put to the maintainer (keep object roles, relationship flags, six slotted slots and kind: full; retire the tabs slot and the dead BuildPageOptions hints; fold the quick-look path into the one record page) and approved with the instruction in the footer.

Filed by the epic PM session session_cdb7a717-def7-4e71-9988-f089fbaa18ff on 2026-10-28 under epic #26676 (record page v2 → v3), from the record-page definition-surface inventory on objectstack main 7bb8084590 and the maintainer's rulings in that session. The maintainer's instruction to file and dispatch, verbatim: 「同意,以上界面相关的需要我确认的你负责立卡派发,如果有可能可以启动云会话,开发完你来确认。」 Design evidence: the design canvas boards 「记录页 v3」 row (RecordPageV3, RecordPageV3NoTimeline, RecordPageRef, RecordDrawerV3, RecordMobile) — exported to the never-merged branch named in the epic parent once this batch is filed.

Activity

  1. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

    Unlock scan 2026-10-29T09:36Z: every Blocked-by: upstream of this card is closed — #27055 by PR #27310 (merged by the maintainer) and PR #27473 (the seat landed it through the queue), #26679 by PR #27038, #27053 by PR #27219. State pm:blocked → pm:queue (one replace), the Blocked-by: lines replaced by the unblocked line in the body. The card's file surface is re-read against main 273137d227: the record page v3 layout (frameless sections, the merged timeline stream, compact related cards with the reader's arrangement, body tables, in-place enlarge, the segmented panel control in the header, the 1120 / 760 container thresholds) is what this card now builds on. Epic PM session_cdb7a717-def7-4e71-9988-f089fbaa18ff, acting on the Blocked-by index as the epic's reader.


    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

No one assigned

    Labels

    area:recordsBusiness objects, records, the views that show data, usable forms, searchdomain:uienhancementNew feature or requestpm:queuepriority: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