Skip to content

Record page v3: retire the authored full pages of lead / account / opportunity / case in favour of the synthesized v3 page, and declare the quote and opportunity line items as body tables #2382

Open

Description

@objectstack-fleet

epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

Restart-when: an @objectstack / @object-ui release that carries objectstack-ai/objectstack#27310 and objectstack-ai/objectstack#27473 (the record page v3 layout and its round 2) is installable here — probe: after bumping the platform pin, node -e "require('@object-ui/plugin-detail')" exposes recordPageArrangementFor and bodyTablePlacement reads fieldGroups[].relatedList; this package pins @objectstack/* 18.2.0 today, which predates both.

Why

The record page v3 (objectstack-ai/objectstack#26676, maintainer-approved design) is the synthesized default page: three resident columns (details | timeline | related), frameless sections, one merged timeline stream, compact related cards the reader arranges, in-place enlarge, and body tables for a record's own line items. HotCRM's four most-worked objects never see it: each carries an authored kind: 'full' page, and an authored page is left untouched by design (upstream #27055, Target 6). Read on main 47a0666543:

object authored page blocks
crm_lead src/sales/pages/lead_detail.page.ts 11 — path, highlights, 2 alerts, 2 details, 3 related_list, activity, history
crm_account src/sales/pages/account_detail.page.ts (+ account_workbench.page.ts) 1 — chatter
crm_opportunity src/sales/pages/opportunity_detail.page.ts 10 — path, highlights, 2 alerts, details, 3 related_list, activity, reference_rail
crm_case src/service/pages/case_detail.page.ts 6 — path, highlights, alert, details, related_list, activity

The line items are side cards today: crm_quote_line_item.crm_quote and crm_opportunity_line_item.crm_opportunity are Field.masterDetail(...) with relatedListColumns only — no inlineEdit, no relatedList: 'primary' — so on a quote or an opportunity the lines sit in the right column instead of the body. Maintainer, 2026-10-28, verbatim: 「如果是一个报价单,明细行的子表放在右侧合适嘛?」 — the v3 rule puts a record's own line items in the body (upstream #27055 Target 8, #27069).

Target

  1. All four authored full pages retire in favour of the synthesized v3 page (maintainer, 2026-10-29, verbatim: 「是,把 hotcrm#2382 改成四张页全部退成默认页,只把告警留作单槽覆盖;商机参考栏和客户 chatter 删掉。」). What each page carried beyond the default, read on main 47a0666543: the conditional record:alert banners (lead: 2, one error-level qualification state; opportunity: 2 info; case: 1 error), the opportunity's record:reference_rail, the account's record:chatter. Only the alerts survive, as a kind: 'slotted' page that overrides one slot per object (the slot the v3 page reserves for banners; if no slot fits, say so in the PR and hold the alerts in the first details slot) — everything else (path, highlights, details sections from fieldGroups, related cards, activity, history, discussion) is the default. The opportunity's reference rail and the account's chatter block are deleted outright: the v3 related column and the merged timeline cover them. account_workbench.page.ts and home.page.ts are not record pages and stay. Document the disposition per block in the PR body.
  2. crm_quote_line_item.crm_quote and crm_opportunity_line_item.crm_opportunity: declare inlineEdit where the line is edited on the parent (quantity, unit price, discount) or relatedList: 'primary' where it is read-only there, so the lines render as a full-width body table after the first field group; keep relatedListColumns as the table's columns.
  3. Optional, same PR if cheap: relatedLists on crm_lead / crm_account / crm_opportunity / crm_case declaring the business order of their related cards (upstream #27069), replacing the derived order where the sales flow wants a different one.
  4. Screenshots of lead / opportunity / quote on the v3 page at 1440, before / after, on the never-merged evidence branch.

Acceptance

  • The four objects render the v3 page with every authored piece that survives placed through a slot; no regression on the lead path, the alerts or the opportunity rail.
  • A quote and an opportunity show their lines as a body table with paging and the declared columns; the right column no longer carries them.
  • objectstack validate / the package publish accept the new declarations.

Filed by the epic PM session session_cdb7a717-def7-4e71-9988-f089fbaa18ff on 2026-10-29 on the maintainer's instruction (verbatim: 「在 hotcrm 仓立 HotCRM 迁移卡:lead/account/opportunity/case 的 authored kind: full 页迁到 v3 默认页,quote/opportunity 明细行声明进正文。」), from the record-page v3 epic objectstack-ai/objectstack#26676. Held until the upstream release is installable (the Restart-when: line).

Activity

  1. added
    enhancementNew feature or request
    metadataDeclarative metadata — schema, security posture, UI surfaces
    upstream:objectstackBlocked on / caused by the ObjectStack platform — tracked upstream
    priority:p1High: required for production / M2
    on Oct 29, 2026
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

    enhancementNew feature or requestmetadataDeclarative metadata — schema, security posture, UI surfacespm:on-holdpriority:p1High: required for production / M2uiupstream:objectstackBlocked on / caused by the ObjectStack platform — tracked upstream

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions