Skip to content

epic: record page v2 — one default open mode per object (drawer by default, page by declaration; modal / split / popover retired as metadata); the drawer and the page are one page at two widths; related records open in place #26676

Open
9 of 20 issues completed

Description

@objectstack-fleet

Epic parent (pm-dispatch 〈Epic 子树车道〉): this card and its children are reserved for the epic PM session session_cdb7a717-def7-4e71-9988-f089fbaa18ff; they carry pm:epic and never pm:queue, so no domain seat takes them. The spec child is claimed from this session on the maintainer's direct instruction (footer), which is the authority that overrides the "spec sub-issues go to the spec seat's queue" default.

Territory (files this subtree edits; other lanes avoid them while the children are open)

  • packages/spec/src/ui/view.zod.ts (NavigationModeSchema, NavigationConfigSchema), packages/spec/src/ui/page.zod.ts (recordAction), packages/spec/src/ui/page.form.ts (the recordAction options), plus the spec retirement kit files the spec-property-retirement skill names.
  • ui/packages/react/src/hooks/useNavigationOverlay.ts; ui/packages/components/src/custom/navigation-overlay.tsx.
  • ui/packages/app-shell/src/views/ObjectView.tsx, objectViewRecordNavigation.ts, objectViewRecordOverlay.tsx, RecordDetailView.tsx, RelatedRecordActionsBridge.tsx; ui/packages/app-shell/src/console/appObjectScope.ts.
  • ui/packages/plugin-view/src/** (deriveRecordSurface), ui/packages/plugin-calendar, plugin-kanban, plugin-gantt navigation reads.
  • ui/packages/plugin-detail/src/synth/buildDefaultPageSchema.ts, DetailTabs.tsx, RelatedList.tsx.
  • ui/packages/plugin-list/src/components/ViewSettingsPopover.tsx — only after Display menu: the layout row's five segments (表格 / 看板 / 日历 / 时间线 …) wrap their labels inside the 240 px popover; the row folds to icons with tooltips or the popover widens #26637 (in flight, domain:ui seat 4) lands.

Children (dispatch order; file surfaces that overlap run in series)

  1. spec(+ui): navigation.mode keeps page | drawer | new_window | none — modal, split and popover are retired; the default becomes drawer in the schema and in the console (no field-count guess); list-page recordAction drops modal; the console's split pane becomes a per-user preference read #26677 — spec + its console consumers: navigation.mode keeps page | drawer | new_window | none, modal / split / popover retired; the default is drawer in the schema and in the console (the field-count guess goes); list-page recordAction drops modal; the console's split pane stays as a per-user preference read, not metadata.
  2. console record page: one page at two widths — three resident columns (details | timeline | related) at 1280 px and up, two columns with a collapsible related rail from 1024 px, today's tabs below that and in the drawer #26678 — the record page is one page at two widths: three resident columns at 1280 px and up, two columns with a collapsible related rail from 1024 px, the tabs it has today below that and in the drawer. (parallel with 1: disjoint files)
  3. 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 — drawer v2 navigation: the bar is ↑ ↓ · ⤢ · ✕; 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. (after 1)
  4. console list Display menu: 「打开记录」 (drawer | split) as a per-user preference; an object or view declaring page shows the declaration instead; the name cell's hover ↗ opens the record as a full page #26681 — the list Display menu gains 「打开记录」 (drawer | split) as a per-user preference; an object declaring page shows the declaration instead; the name cell's hover ↗ opens the record as a full page. (after 1 and Display menu: the layout row's five segments (表格 / 看板 / 日历 / 时间线 …) wrap their labels inside the 240 px popover; the row folds to icons with tooltips or the popover widens #26637)

Not in this subtree, on purpose: the clickable stage path (#26612 / #26581 are in flight on that surface), inline field editing and the merged timeline (the record page already has an activity timeline and comments; nothing measured broken there). HotCRM needs no card: its views declare only page (lead) and drawer (opportunity, task, case), none of the retired modes (git grep "navigation: {" on HotCRM 1f3f8880).

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

  1. The model, quoted back by the maintainer and ordered built: 「1. 一个对象一个默认打开方式:默认抽屉(带展开整页),page 只给显式声明的对象,modal 退役,split / popover 变成用户个人偏好;抽屉和整页是同一张页在两个宽度。」
  2. On the drawer's top bar: 「左上角的 任务 · 2 / 2 · 分屏 几个字有必要嘛」 — no object name, no mode label on the bar.
  3. On the position counter: 「我觉得记录详情页显示第几条记录 好像也没必要」 — no "n / N" anywhere on a record; the ↑ ↓ previous / next controls stay.
  4. On the right pane: 「右侧应该可以拖动吗?展开为整页那个是不是用图标就可以」 — the pane is drag-resizable and "open as full page" is an icon-only control with a tooltip.
  5. On related records, the maintainer confirmed the in-place model: 「所以关联记录是一层一层的往下点,然后可以一层一层的反悔吗」 — one level down per click, one level back per ← / Esc, never a second drawer.

Filed by the epic PM session session_cdb7a717-def7-4e71-9988-f089fbaa18ff on 2026-10-27, from the record-page / list-page assessment and the clickable prototype the maintainer walked and ruled on in that session (objectstack main 416a76030e, HotCRM 1f3f8880 on platform 18.2.0). The maintainer's instruction to build it, verbatim: 「你直接立卡派发处理这个开发,然后审核。」 Design evidence (never merged): branch claude/record-page-v2-evidence-20261027b at commit 345ec777220843ce1fd7f95b6cc0b2b6dcc81bf8, folder docs/design/record-page-v2-2026-10-27/ (prototype.html, artboards/, assessment.md).

Activity

  1. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Epic checklist · epic PM session_cdb7a717-def7-4e71-9988-f089fbaa18ff · round 1 · 2026-10-27T12:53Z

    Batch 1 dispatched (two os-dev subagents of this session, mode:subagent on the maintainer's machine, one build-heavy each, disjoint file surfaces):

    Design evidence: branch claude/record-page-v2-evidence-20261027b at 345ec777220843ce1fd7f95b6cc0b2b6dcc81bf8. Not filed on purpose: a HotCRM card (its views declare only page / drawer), the clickable stage path (#26612 / #26581 in flight), inline field edit and timeline merge (nothing measured broken).


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Epic checklist · epic PM session_cdb7a717-def7-4e71-9988-f089fbaa18ff · round 1 collected · 2026-10-27T17:25Z

    Readings for the maintainer: PR #26758's three-column tier shows on this seat's preview (console on the PR head, HotCRM on 4001); the tier floors stay 1280 / 1024 of the record view (PM discretion A, override open). PR #26804's prescriptions name the Display-menu control #26681 builds (answer A: land #26681 before the 18.3.0 cut).


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Epic checklist · epic PM session_cdb7a717-def7-4e71-9988-f089fbaa18ff · round 2 dispatched · 2026-10-28T00:04Z

    Both batch-2 devs build on the merged #26804 (drawer-only overlay, read-side preference util) and #26758 (column tiers).


    Generated by Claude Code

  4. 9 remaining items

  5. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Epic checklist · epic PM session_cdb7a717-def7-4e71-9988-f089fbaa18ff · round 3: both cloud cards landed or queued, layout dispatched · 2026-10-28T10:53Z

    Round 3 (record page v3):

    Readings carried to this parent:

    Preview: the console preview on this seat is being rebuilt on main at 9dacccf961 (includes #27120) for the maintainer's walk-through.


    Generated by Claude Code

  6. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

    Epic checklist · epic PM session_cdb7a717-def7-4e71-9988-f089fbaa18ff · round 3: layout awaiting a human merge · 2026-10-28T18:49Z

    Round 3 (record page v3):

    Filed this round from reports and the seat's readings: #27177 / #27178 (page designer canvas; os-warren, in flight), #27214 (domain:skills — the desktop-launched cloud dispatch path, six lessons), #27311 (spec: relatedLists describe promises a refusal the package-closure publish does not make), #27312 (spec: relatedList: 'primary' and enable.trackHistory describes narrate the v2 page). HotCRM follow-up after #27055 lands: its lead / account / opportunity / case carry authored kind: full pages and never see the v3 default.

    Cloud-dispatch readings added since the last checklist: the fleet App's events (push, PR open, reopen) fire no PR workflow on this repository — only a user-token push does — so every cloud card ends with a local round that merges main and pushes; the cloud session on #27055 ran about 4 h for an L card and delivered Targets 1–10 in one PR.


    Generated by Claude Code

  7. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

    Epic checklist · epic PM session_cdb7a717-def7-4e71-9988-f089fbaa18ff · round 3 closed: the v3 record page is on main · 2026-10-29T09:38Z

    Round 3 (record page v3) — all epic-session cards landed:

    Unlocked by this round and put back in the ui lane queue by the seat's unlock scan (2026-10-29T09:38Z, pm:blocked → pm:queue, the Blocked-by: lines replaced, provenance on each card): #27056 related column lazy loading, #27057 quick-look path folded into the record page, #27058 mobile, #27059 skills / docs (Tier H). Their Source sections cite the pre-v3 tree; the dispatching seat re-reads them against main 273137d227.

    Open findings for the spec lane: #27311 (relatedLists describe promises a refusal the package-closure publish does not make), #27312 (relatedList: 'primary' and enable.trackHistory describes narrate the v2 page), #27478 (a field group's relatedList naming a side-card relationship saves and draws nothing — promote or refuse). HotCRM follow-up (no card yet, the maintainer's call): its lead / account / opportunity / case carry authored kind: full pages and never see the v3 default; crm_quote / crm_opportunity line items would become body tables once their FK declares inlineEdit or relatedList: 'primary'.

    Cloud-dispatch readings closed out in #27214; the round's own addition: the fleet App's events (push, PR open, reopen) fire no PR workflow on this repository, so every cloud card ended with a local round that merged main and pushed with a user token.


    Generated by Claude Code

  8. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

    Epic checklist · epic PM session_cdb7a717-def7-4e71-9988-f089fbaa18ff · round 4 filed: the v4 panel model and the reports entry · 2026-10-29T10:33Z

    From the maintainer's own walk-through of the v3 page on main and the 「记录页 v4」 design boards (evidence branch claude/record-page-v2-evidence-20261027b @ 72cd481c4a, folder docs/design/record-page-v2-2026-10-27/v4/):

    Still queued from round 3: #27056 lazy loading, #27057 quick-look fold, #27058 mobile, #27059 skills / docs; spec findings #27311 / #27312 / #27478. The maintainer's rulings of 2026-10-29 are quoted verbatim on each new card.


    Generated by Claude Code

  9. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

    Epic checklist · epic PM session_cdb7a717-def7-4e71-9988-f089fbaa18ff · round 4 addendum: the drawer face · 2026-10-29T12:17Z

    From the maintainer's own test of the drawer on main (「drawer 已经很宽了,全屏之后更窄了」, 「抽屉盖住了列表合理吗」, 「抽屉 ⤢ 原地最大化 我觉得有必要」) and the 「抽屉 v4」 boards (evidence branch claude/record-page-v2-evidence-20261027b @ a1947b44bd, RecordDrawerV4Peek.dc.html / RecordDrawerV4Max.dc.html, notes n46):

    Round 4 now holds #27524, #27525, #27526, #27545 and hotcrm#2382 (held). Nothing else changed.

  10. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

    Epic checklist · epic PM session_cdb7a717-def7-4e71-9988-f089fbaa18ff · round 5: the v4 design is final · 2026-10-29T14:20Z

    The maintainer confirmed the v4 boards on 2026-10-29 (design canvas version 60; evidence branch claude/record-page-v2-evidence-20261027b @ a7825499aa, docs/design/record-page-v2-2026-10-27/v4/, notes n41–n51) and ruled 「设计定稿:按画布 60 重写 #27524 / #27545 的 Target 并回队列;另立两张 ui 卡」 and 「这几张界面调整卡设置为 p1,车队开发完后你审核效果」:

    The epic seat verifies each PR in the console preview against the boards before ACCEPT. Still in flight: #27056 / #27057 (ui seat 1; PR #27564 open for #27057), #27526 (ui seat 2), #27525 (spec; PR #27566 open), #27478 (spec). Held: hotcrm#2382 until an installable release.

  11. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

    Epic checklist · epic PM session_cdb7a717-def7-4e71-9988-f089fbaa18ff · round 5 addendum: the hover card · 2026-10-29T14:40Z

    Round 5 now holds #27524, #27545, #27593, #27594 and #27604.

  12. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

    Epic checklist · epic PM session_cdb7a717-def7-4e71-9988-f089fbaa18ff · round 5 addendum: performance · 2026-10-29T15:16Z

    From the maintainer's 「别人的界面很丝滑,但是我们的界面总觉得卡顿,云端更卡」 and the seat's measurements (local dev console and huayan.objectos.app), ruled 「立 A…和 B…两张卡,p1」:

    Cloud reading kept on #27627: 0.5–1.4 s per call alone on huayan.objectos.app (Cloudflare colo ARN), 5–8 s per call under a 15-call burst, the contacts list route not rendered after 50 s. The cloud-side follow-up (origin region / concurrency / caching) waits for Server-Timing to separate origin time from the path.

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:uipm:epicpriority:p2Medium: important, M3tracking

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions