You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Classification: concrete, reproducible gap on a shipped surface, reported from a real deployment's acceptance testing (rc.6): lookup values on the record detail page render as plain text + copy button while the list page's link: true columns and related-table rows already navigate. The consistency evidence reads as "not yet wired", not a deliberate design — and cross-document navigation (inspection record → work order → equipment …) is the everyday path in exactly the business systems this serves. If the executing seat finds an on-record ruling that detail pages deliberately do not link, escalate instead of closing.
Repro: as filed — any lookup field with a value, detail page, both readonly and non-readonly, multiple objects.
Routing note: fix lands in the record-detail field rendering path (whole-repo backlog — no lane labels in this repo). Release-board stamping is the objectui seat's call, but flagging for that seat: this is user-visible on every record page with a lookup, worth the target: test.
Ruling (delegated authority; open veto window): linkify. Cross-document navigation is the everyday path in exactly the business systems this serves (the reporter's chain: 点检记录 → 维修单 → 设备), and the consistency evidence (readonly-independent, object-independent, list link: true columns already navigate) reads as not-yet-wired, per triage. Per the triage escalation clause: if an on-record ruling that detail pages deliberately do not link is found, STOP and escalate rather than fix.
Related-list cells (the follow-up's widening): measure the render path FIRST. If related-list lookup cells share the detail renderer's path, cover them here; if they are a separate cell-rendering path, fix the detail page here and FILE the related-list half as its own card with the path measurement — the reporter explicitly asked for the split to follow repo convention.
The rowRecord shape inconsistency (expand-object in header actions vs bare-id in row actions, from the follow-up's item 4): NOT in scope — if your measurement confirms it in passing, file it as a separate finding; do not fix.
Red-first: detail page with a valued lookup — pre-fix the value region contains NO <a> (the reporter's own DOM check), post-fix an anchor navigating to the referenced record's URL; must-not-change: display name/title resolution unchanged, copy button still present and functional, non-lookup fields untouched.
Grading: patch per touched package (.d.ts-checked; if the field component's public props grow, minor per #4403/#4177 — measure).
Surface (mutual exclusion): the record-detail field rendering path (packages/plugin-detail/** and/or the lookup field's display component in packages/fields/** — ⛔ NOT packages/fields/src/index re-export lines, #4431 owns those) + shared cell renderer ONLY if measurement proves same-path + tests + changesets. Disjoint from in-flight #4431 (chatbot/core/fields-index/ledger), #4452 (plugin-calendar), #4462 (plugin-list ListView/plugin-report/app-shell print styles), #4474 (console/organizations).
Activity
os-zhuang commentedon Aug 11, 2026
Triage:
pm:queue(+bug).link: truecolumns and related-table rows already navigate. The consistency evidence reads as "not yet wired", not a deliberate design — and cross-document navigation (inspection record → work order → equipment …) is the everyday path in exactly the business systems this serves. If the executing seat finds an on-record ruling that detail pages deliberately do not link, escalate instead of closing.target:test.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
baozhoutao commentedon Aug 12, 2026
追加材料:同现象在 rc.6 再次出现,并且相关表(related list)里的 lookup 列也一样是纯文本
同一个业务项目,另一轮验收(设备维保场景)又撞到这条,补两点材料——其中第 2 点与本单标题括号里的「列表页的链接列正常」以及分诊结论里的 "related-table rows already navigate" 略有出入,想请确认范围。
1. 详情页:再添一个复现对象
来源维保派工单(lookup → 维保派工单)= 纯文本TSD110420260811005001,鼠标悬停无链接态,点击 URL 原地不动;页面 main 区域内不存在含该编号的<a>。2. 相关表里的 lookup 列同样不是链接(可能超出本单当前描述的范围)
在设备详情页 →「相关」页签 →「维保履历」子列表上:
执行责任人、管理责任人(均为 lookup → 人员)以及后来补上的来源维保派工单列,逐格取href全部为null,整行 6 个单元格没有任何<a>。也就是说:相关表能跳的只有「行 → 这一行自己那条记录」;行内 lookup 指向的别的对象,一样跳不过去。所以「缺链接」的面比原标题写的更宽一点,不止详情页。
如果这是同一处渲染路径,那本单一并覆盖即可;如果相关表列走的是另一套 cell 渲染,可能需要拆成第二张单,请按仓库习惯处理。
3. 已排除权限因素
一开始怀疑是无读权导致 expand 静默降级成裸值,实测排除:
CRUD_ALL;title属性是记录 id、可见文本是编号),不是裸 UUID。所以是渲染层没做链接,不是数据层降级。
4. 下游绕法,以及一个附带发现(形状不一致)
我们这边暂时把跳转做成了
type:'url'行动作(行尾「…」一跳直达),不打补丁。做的过程中发现一处形状差异,顺带报一下:环境
@objectstack/*@17.0.0-rc.6,Console(/_console),桌面视口,单租户。截图在我们项目的私有仓里,直接贴链接你们看不到,就不贴了;需要的话我可以另出一组脱敏截图。
yinlianghui commentedon Aug 12, 2026
CLAIM — session
session_017Qqyix2QcnpUC9XeYVDzx3, branchclaude/issue-4336-detail-lookup-links.Ruling (delegated authority; open veto window): linkify. Cross-document navigation is the everyday path in exactly the business systems this serves (the reporter's chain: 点检记录 → 维修单 → 设备), and the consistency evidence (readonly-independent, object-independent, list
link: truecolumns already navigate) reads as not-yet-wired, per triage. Per the triage escalation clause: if an on-record ruling that detail pages deliberately do not link is found, STOP and escalate rather than fix.link: truecolumns and related-row navigation build record URLs and reuse THAT mechanism — no hand-built URL assembly (the console: copied invitation link is unusable — buildAcceptUrl rebuilds the trailing-dot host that resolveHomeUrl already retired #4472/finding(app-shell): AiChatPage's publicShareBase is a third hand-rolled console-mount resolution — correct today, drift risk under the one-resolver rule #4482 lesson). Keep the copy button; link and copy coexist. readonly irrelevant (display mode).Red-first: detail page with a valued lookup — pre-fix the value region contains NO
<a>(the reporter's own DOM check), post-fix an anchor navigating to the referenced record's URL; must-not-change: display name/title resolution unchanged, copy button still present and functional, non-lookup fields untouched.Grading: patch per touched package (
.d.ts-checked; if the field component's public props grow, minor per #4403/#4177 — measure).Surface (mutual exclusion): the record-detail field rendering path (
packages/plugin-detail/**and/or the lookup field's display component inpackages/fields/**— ⛔ NOTpackages/fields/src/indexre-export lines, #4431 owns those) + shared cell renderer ONLY if measurement proves same-path + tests + changesets. Disjoint from in-flight #4431 (chatbot/core/fields-index/ledger), #4452 (plugin-calendar), #4462 (plugin-list ListView/plugin-report/app-shell print styles), #4474 (console/organizations).Generated by Claude Code
Generated by Claude Code
fix(detail): lookup field values link to the referenced record (objec…
fix(fields): cap multi-value lookup cells at 3 chips + a "+N" overflo…