Skip to content
This repository was archived by the owner on Oct 26, 2026. It is now read-only.
This repository was archived by the owner on Oct 26, 2026. It is now read-only.

[Decision] 记录页上「全部字段都为空」的分区,是逐行显示「—」,还是像其他分区一样折叠成「N 个空字段 · 展开」——objectui#12618 #13386

Closed

Description

@objectstack-fleet

Ruled: 6369306878 · batch #7 item 4 · letter C · 2026-10-23T16:08:53Z (read-only mode: an all-empty hideEmpty: false section renders its heading plus one 「N 个空字段 · 展开」 row; edit mode unchanged; no new key; spec describe-text card first, objectui#12618 Blocked-by it; HotCRM unchanged)

立卡门类别:② 只有维护者能做的决定(元数据协议的语义变更或新增)。动手的读者:裁定后由 objectstack domain:spec 席和 objectui domain:ui 席执行。立卡:objectstack 分诊席(session_01AavokzJ5DndAwitDXvKy4U),按维护者 2026-10-23 在分诊会话的指示「12614 12618 决策卡」。

维护者速读

商机记录页的「交易说明」「备注与下一步」两个分区,所有字段都还没填,于是逐行显示「客户背景 —、项目背景 —、风险分析 —……」一整列短横线。同一页上「部分有值」的分区,空字段会收成一行「显示 4 个空字段」。走查希望全空的分区也这样折叠。

原因:HotCRM 在这些分区上故意写了 hideEmpty: false。它要分区标题一直在,提醒销售去填。协议目前对全空分区只有两种画法:默认整块不显示;写 false 就逐行显示空行。没有「保留标题 + 折叠」这一种。

选 A、B 还是 C? 已裁 C(批 #7 第 4 项,评论 6369306878)。

触发的上报标准: 元数据协议变更(B 是新增,C 是语义变更),按你的口径属于「协议变更直接处理、和我沟通」。工作量都在 S–M 之内。

一句话问题

一个全空、但作者要求保留的分区,现在只能画成一列短横线;同一页上其他分区用的是更紧凑的折叠行。

现状

选项

选项 做什么 用户能感知的后果 工作量
A 维持 不改 新记录上还是一列「—」 0
B 新增 'fold' spec 给 hideEmpty 加第三个值(Metadata-protocol: added);objectui 渲染;HotCRM 把 14 处改成 'fold' 用了新值的分区折叠;false 照旧 spec 1 PR(S)+ objectui 1 PR(S)+ HotCRM 1 PR(XS),按协议新增定 p1
C 改 false 的只读画法 spec 改 hideEmpty 的说明文字(Metadata-protocol: semantic);objectui 在只读模式下给 false 的全空分区画标题加折叠行;编辑模式不变 所有写了 false 的分区都变成折叠,标题还在,点「展开」可见全部字段 spec 1 PR(XS,只改说明和生成物)+ objectui 1 PR(S),HotCRM 不用改

第 2 项诉求(一个标签页里所有分区都为空时只显示一行)随本裁决一起走:选 B 或 C 时,按同一规则在标签页层面再折叠一次。

推荐:C

  • 作者写 false 的本意是「标题留着,提醒去填」,折叠行既保住标题,又去掉了一整列噪音,正好满足这个本意。
  • 不新增协议键,符合创业阶段不扩散的原则。现在只有 HotCRM 一个作者在用 false,它会直接受益,不需要迁移。
  • B 多一个永久的协议值,要多维护一种状态;A 保留了走查指出的问题。
  • 置信缺口:如果有作者确实想要「每个空字段都显示成一行」(比如打印视图),C 就拿走了这种画法。目前没有测到这样的作者;真出现了,再按 B 加一个值。

裁后执行

  • 裁 A:objectui#12618 关闭 not_planned。
  • 裁 C(已裁):在 objectstack 立 domain:spec 卡(改说明文字,Metadata-protocol: semantic,18.x 直接处理),objectui#12618 带 Blocked-by: 指向它;spec 落地后由 ui 席改渲染器。完成标准:HotCRM 商机新记录的「交易说明」只显示标题和一行「4 个空字段 · 展开」;编辑模式逐行可编辑;混合分区不变;有测试。
  • 裁 B:同上,spec 卡改为新增 'fold' 值(Metadata-protocol: added),另立 HotCRM 卡改用它。

相关

objectui#12618(原卡)、objectui#8603、objectui#7129、objectstack-ai/hotcrm#1211。

Activity

  1. added
    enhancementNew feature or request
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    area:recordsBusiness objects, records, the views that show data, usable forms, search
    on Oct 23, 2026
  2. os-elon-musk commented on Oct 23, 2026

    @os-elon-musk
    Collaborator

    Ruling: batch #7 item 4 · letter C · maintainer 「objectui 三个都同意」 2026-10-23T16:08:53Z

    The maintainer's 「同意」 on the batch's objectui cards takes this card's recommendation C: in read-only mode an all-empty section authored hideEmpty: false renders its heading plus one 「N 个空字段 · 展开」 row, the same fold the mixed sections use (objectui#7129 Q2-C); edit mode is unchanged (every row editable); no new protocol key. Item 2 of #12618 (a tab whose sections are all empty folds once more at the tab level) goes with it. Options A (keep) and B (add a 'fold' value) were not chosen.

    Workload of the chosen letter: an objectstack domain:spec card for the hideEmpty describe text in packages/spec/src/ui/component.zod.ts (L1440 on main 05cc3ee), Metadata-protocol: semantic, 18.x (XS); objectui#12618 carries Blocked-by: that card, and the domain:ui seat changes DetailSection.tsx (L365–L375 on main 3a73c07) once the spec lands (S). HotCRM's 14 hideEmpty: false sections need no change. Done when: a new HotCRM opportunity's 「交易说明」 shows the heading and one 「4 个空字段 · 展开」 row; edit mode row by row; mixed sections unchanged; tests.

    Labels: needs-user-decision → pm:queue; the owning seats dispatch (裁不派). Brief: https://claude.ai/artifact/DKvzE9D3NBheC17fJEfbRW (private to the maintainer's account).


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 23, 2026

    @objectstack-fleet
    ContributorAuthor

    Ordered after the spec change · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-23T17:01Z

    Blocked-by: objectstack-ai/objectstack#25511

    • Ruling C (batch #7 item 4, above) orders the spec's hideEmpty describe text first, and the renderer after. This card is now the execution card, so it carries the Blocked-by: that the ruling put on objectui#12618. State: pm:queue → pm:blocked. When the spec card closes completed, the unlock scan returns this card to pm:queue.
    • objectui#12618 stays pm:on-hold and closes with this card.

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 24, 2026

    @objectstack-fleet
    ContributorAuthor

    Unlocked · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-24T10:57Z

    pm:blocked → pm:queue. The grade is unchanged: p2 · domain:ui · area:records. ⛔ Not a claim, ⛔ not a dispatch.


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · 2026-10-25T00:31Z
    Session: session_01AqaieDWuDnBRyh3u8epGx6 (the card session that works this card; claim written by the domain:ui seat 4 session session_01XWGTsmqrtrt1Zqh1ioWqsT)
    Account: os-elon-musk
    Branch: claude/project-thread-9udwgt (platform-assigned at spawn; the card session can push only this branch)
    Worktree: objectui-issue-13386
    Domain: domain:ui
    Seat: domain:ui#4
    File surface: packages/plugin-detail/src/** (DetailSection.tsx and the tab-level fold for item 2 of objectui#12618) + their tests, the plugin-detail locale strings for the fold row if new, .changeset/13386-*.md (stop on breach; explain in the report)
    Container & model: M, mode:thread, model: default tier (dispatch-gates --tier --repo objectstack-ai/objectui: no path-derived mandate), effort: high
    Clause-②: no
    Metadata-protocol: semantic
    Responsibility: n/a — not a defect card
    Thread-read: 6383373367
    Premise: holds — the blocker objectstack-ai/objectstack#25511 closed completed (PR objectstack-ai/objectstack#25612); packages/plugin-detail/src/DetailSection.tsx is on objectui main cd70b78
    Serial constraints cleared: none — no in-flight card or open PR of either seat names packages/plugin-detail/**
    Writes: all PR, comment and label writes go only through objectstack's relay (scripts/pm/fleet-write); never write with GitHub MCP.

  6. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #13483 comment 6391776206 · domain:ui#4 · 2026-10-25T01:09Z. Awaiting the maintainer's landing word.

  7. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:ui#4 · 2026-10-25T02:10Z

    PR #13483 merged at 2026-10-25T02:08Z, merge commit 46c56ee55eb661a098606b6ba48be29ca0ec5a47. This card and objectui#12618 closed completed through Fixes. pm:dispatched comes off here, and pm:on-hold comes off #12618. objectui merges publish nothing (the changesets release is a human act).


    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:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatenhancementNew feature or requestpriority:p2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions