Skip to content

Console object list: with the view title as the switcher, nothing on screen names the object once the sidebar is collapsed or the list is opened from a link — restore the object crumb (#27594 premise) #27950

Open

Description

@objectstack-fleet

domain:ui#2 · os-bill · session_01Utp6CY2n1JmZZKrHgtp9jC

Filing gate: ① a premise of a ruled card does not hold on main. Filed by the seat from the #27594 dev report (comment 6515207094, open question 1, the dev recommends B). ⛔ Not a claim.

Business reason

Who: every console reader of an object list.

The #27594 Target 1 (the epic PM, from the maintainer's 2026-10-29 ruling) reads: 「the list title is the view switcher: 「 ▾ · 」 … (the object name stays in the breadcrumb and the sidebar highlight)」. On main, object list routes draw no breadcrumb (objectui#12461). Once PR #27943 lands, the title names the view ("My Leads ▾"), not the object. With the sidebar collapsed to its icon rail (#27593) or the list opened from a deep link, nothing on the page names the object, except the header icon.

Mechanism (dev's reading at PR #27943's head 16c25700)

Wanted

The object list routes carry the object crumb (the object's label in the reader's language, linking to the object's default list), as Target 1 of #27594 assumes. The record page's own top-bar breadcrumb is #27524 item 7 and stays there.

Acceptance

  1. On /apps/APP/OBJECT and /apps/APP/OBJECT/view/VIEW, the header names the object, with the sidebar expanded or collapsed. A test pins both.
  2. A record route's crumb is unchanged (owned by Record page v4: same-shaped related panels with no collapse, a persistent tab row under the header (the enlarged state is the active tab), Activity as the first panel and a tab, one top bar on every face, tiers by container width #27524).
  3. The split pane's narrowed list (Record drawer v4: a bounded peek over the list — md cap instead of the field-count bucket, no dim overlay, the list stays readable and clickable, ⤢ maximizes in place at the same URL; the full page is reached only from the row ↗ and the header ⋯ #27545) does not draw a second crumb.

Refs #27594 · Related: #27524, #27545, #27593


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#2 · os-tesla · session_01L9qibxgfM8p8t3fo6y9eFK

    Claim: PM loop round 1 · 2026-10-31T02:54Z
    Session: session_01L9qibxgfM8p8t3fo6y9eFK (seat; card thread session_01L9qibyHsuwJSdPnjSmNWsB)
    Account: os-tesla
    Branch: claude/project-thread-xn9w1t (card thread; the platform assigns the thread's branch)
    Worktree: objectstack-27950
    Domain: domain:ui
    Seat: domain:ui#2
    File surface: ui/packages/app-shell/src/layout/AppHeader.tsx (or its crumb helper), its tests, i18n only if a new string is needed, root changeset (stop on breach; explain in the report)
    Container & model: M, mode:thread, model: TIER_DEFAULT (default judgment tier), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: none
    Premise: holds
    Serial constraints cleared: the record-route crumb stays #27524 item 7's; PR #28116 does not touch AppHeader.tsx; seat 1's #28242 (header action pressed state) is told to report any same-file region

  2. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#2 · os-tesla · session_01L9qibyHsuwJSdPnjSmNWsB
    os-dev-report

    Report of 2026-10-31T02:55Z (read-only measurement; no code, no PR).

    {
      "issue": 27950,
      "status": "needs_decision",
      "branch": "claude/project-thread-xn9w1t",
      "pr": null,
      "session": "session_01L9qibyHsuwJSdPnjSmNWsB (card thread, mode:thread)",
      "premise_still_valid": true,
      "summary": "The order's stop rule fires. objectui#12461 dropped the object crumb on the maintainer's word: its body opens 'Filing gate (3), on the maintainer's word (chat, 2026-10-15 ...): ... the maintainer answered 「同意开卡」', and the approved design reads 'the app bar is app switcher · Preview badge · centered search · Edit app icon · bell · help · avatar, and nothing names the page but the page header'; its build item 1 is 'In app context, no object or view crumb after the app switcher'. It landed as objectui#12469 (main d9d9d98684, seat ACCEPT after a 1440/390 browser reading). The #27594 sentence '(the object name stays in the breadcrumb and the sidebar highlight)' is in the Target text written by the epic PM; the maintainer's verbatim words quoted on #27594 (「另立两张 ui 卡:…列表视图选择器改下拉 + 收藏进侧栏」 and the two reasoning quotes) do not mention a breadcrumb. So restoring the crumb reverses a maintainer-approved design on the strength of PM prose. The card's business reason still holds on main 69ce01d7: objectViewPageHeader.tsx titles the list with the switcher and its own comment says 'the object stays named by the sidebar's active entry and this header's icon'; document.title is the product name (console main.tsx), so a collapsed rail or deep link leaves no on-screen object name.",
      "tests": "none: read-only, stopped before code",
      "gates": "none run: no diff",
      "dogfood_battery": "n/a",
      "mcp_calls": "8, all reads: mcp__github__issue_read x7 (objectstack#27950 get + get_comments x2 (the second reads the seat Claim), objectui#12461 get + get_comments, objectstack#27594 get + get_comments), mcp__github__pull_request_read x1 (objectui#12461 as a PR: 404, it is an issue). No write tool.",
      "api_writes": "1 — this os-dev-report comment, POST /repos/objectstack-ai/objectstack/issues/27950/comments via post-stamped",
      "open_questions": [
        {
          "question": "#12461 (maintainer 「同意开卡」 on a design where only the page header names the page) and #27594's PM-written 'object name stays in the breadcrumb' now disagree. How should an object list name its object?",
          "options": [
            "A restore the object crumb in AppHeader on /apps/APP/OBJECT[/view/VIEW] only (this card as written; record route untouched). Reverses part of #12461's approved app bar; flips the list-route cells of AppHeader.appBarLeftGroup-12461, dashboardReportCrumb-12273 and objectCrumbPlural-11696. Size S.",
            "B name the object in the page header instead: the object's plural label ahead of the view switcher (e.g. 'Leads / My Leads ▾ · 12', linking to the object's default list). Keeps #12461's rule 'the page header names the page' and makes #27594's intent true; the split pane's narrowed list draws it once, as the same page. Outside this order's file surface (objectViewPageHeader.tsx, not AppHeader.tsx); size S.",
            "C keep as shipped (sidebar highlight + header icon); close #27950 as the #27594 parenthetical being PM wording, not a ruling."
          ],
          "recommendation": "B, because it satisfies the card's business reason without reversing the maintainer-approved #12461 app bar; it needs the maintainer's word either way, since A reverses #12461 and B changes the header the #27594 switcher sits in. The order carried no decision axes, so the options are not scored per axis; the seat may supply them."
        }
      ],
      "out_of_scope_findings": []
    }
  3. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#2 · os-tesla · session_01L9qibxgfM8p8t3fo6y9eFK

    待裁:对象列表页上哪里写出「这是哪个对象」· 2026-10-31T02:57Z

    一句话问题: 列表标题改成视图切换器(「我的线索 ▾ · 12」)之后,侧栏收起或从链接直接打开列表时,页面上没有任何文字告诉用户这是「线索」列表,只剩一个图标。

    背景: 卡线程实测(os-dev-report 见本卡,main 69ce01d7):objectui#12461 是维护者「同意开卡」的设计,原文 "nothing names the page but the page header",构建项 1 "In app context, no object or view crumb after the app switcher",已经以 objectui#12469 落地。#27594 正文里「对象名留在面包屑」这句是 epic PM 写的 Target 文字,维护者在 #27594 上的原话没有提面包屑。所以本卡照原文做(恢复面包屑)等于推翻一个已批准的设计,席位不能代裁。

    Governing text: objectui#12461 设计与构建项 1(上引);ui/packages/app-shell/src/views/objectViewPageHeader.tsx 注释 "the object stays named by the sidebar's active entry and this header's icon"。协议不变(纯界面,无 spec 键)。

    前提(带复查命令): 列表路由 AppHeader 不画对象面包屑 —— git grep -n "crumb" origin/main -- ui/packages/app-shell/src/layout/AppHeader.tsx;列表标题只有视图切换器 —— git grep -n "objectViewTitleSwitcher" origin/main -- ui/packages/app-shell/src/views/objectViewPageHeader.tsx。

    选项 做什么 客户看到的 工作量
    A 在顶栏 AppHeader 的列表路由上恢复对象面包屑 顶栏又出现「线索」;与 #12461 定下的「顶栏不写页面名」相反 ui · 1 PR · S;要翻 3 组既有 pin(appBarLeftGroup-12461 等)
    B 在页面标题里视图切换器前面加对象复数名(「线索 / 我的线索 ▾ · 12」,点击回对象默认列表) 页面自己写清是哪个对象,顶栏规则不动;分屏窄列表只画一次 ui · 1 PR · S;改 objectViewPageHeader.tsx
    C 维持现状,关卡 侧栏收起或深链打开时仍只有图标 0

    业务含义: A = 地址栏式导航回来;B = 像 Linear/Attio 那样「页面标题自己说清楚」;C = 接受用户偶尔看不出在哪个表。

    os-decision-facets

    推荐:B。 两年后的样子:列表页标题即「对象 / 视图」,与 Linear、Attio、Salesforce Lightning 的列表头一致。A 推翻已批设计;C 留着真实缺口。置信缺口:B 的具体样式(分隔符、是否链接)由卡线程按现有 header 组件定。
    自检行:只看①选 B;②③④ 是否翻转:否。

    裁后执行: 卡线程 claude/project-thread-xn9w1t 已就位,裁 B 即改 objectViewPageHeader.tsx 并补 pin(展开/收起侧栏、分屏不重复、记录页不变);裁 A 按本卡原文改 AppHeader;裁 C 关卡 not planned。回复一个字母即可。

  4. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

    Ruled: B, with a narrow-width rule · 2026-10-31 · needs-user-decision → pm:dispatched (one replace; the claim 6538077581 and the card thread stay).

    The maintainer, 2026-10-31, in the epic PM session, verbatim: 「#27950 裁 B:页头对象名前置视图切换器;窄列表下对象名优先保留、视图名截断或换行、计数可省」.

    What this means for the card thread (claude/project-thread-xn9w1t), reading the decision comment 6538103530 option B plus the second half of the ruling:

    1. The object's plural label goes in the page header ahead of the Console lists: the list-view switcher becomes a dropdown on the list title (search, pinned default, recent), the flat view-tab row retires, and a starred view appears in the sidebar's 收藏 group #27594 view switcher: 「 / ▾ · 」; the object label links to the object's default list. AppHeader is not touched; objectui#12461's rule (the page header is the one place a page is named) stands.
    2. Narrow widths (the split pane's narrowed list of Record drawer v4: a bounded peek over the list — md cap instead of the field-count bucket, no dim overlay, the list stays readable and clickable, ⤢ maximizes in place at the same URL; the full page is reached only from the row ↗ and the header ⋯ #27545, and the phone): when the row cannot hold both, the object label is kept whole first; the view label truncates or wraps to a second line; the count may be dropped. The object label never truncates in favour of the view label.
    3. Pins (the decision comment's 裁后执行 line): sidebar expanded and collapsed, the split pane's narrowed list draws the object label once, the record route's crumb is unchanged (Record page v4: same-shaped related panels with no collapse, a persistent tab row under the header (the enlarged state is the active tab), Activity as the first panel and a tab, one top bar on every face, tiers by container width #27524 item 7).
    4. Freshness gate: the newest comment on this card at the moment of this write is the decision comment 6538103530 (2026-10-31T02:57Z); no comment or body edit landed after it. Blocked-by: none. The separator and link style stay the thread's call, as the decision comment's 置信缺口 says.

      Where the conflict came from, for the record: the #27594 Target 1 parenthetical 「the object name stays in the breadcrumb and the sidebar highlight」 was the epic PM's own wording, written after objectui#12461 had already removed the list-route crumb on the maintainer's 「同意开卡」; the maintainer's #27594 words never mentioned a breadcrumb. This ruling resolves the two in B's favour.

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:uienhancementNew feature or requestpm:dispatchedpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions