Repository navigation
Finding: a record:highlights chip clips multi-element cell renderers with NO ellipsis (the residue of #5066) #4054
Description
Migrated from objectstack-ai/objectstack#6950 under the file-at-destination ruling (objectstack-ai/objectstack#7167, maintainer 2026-08-10). Originally filed 2026-08-09T06:13:43Z. The full prior thread — including triage rulings and hold/restart conditions — remains on the source issue and MUST be read before acting on this card.
What this is
Observation-class finding split out while fixing objectstack-ai/objectstack#5066 (objectui PR for the percent renderer). Filed unassigned, no pm:queue — nothing here is known to be hit by a user today, and the one instance that WAS hit is fixed by objectstack-ai/objectstack#5066.
The mechanism objectstack-ai/objectstack#5066 fixed only one instance of
HeaderHighlight (objectui packages/plugin-detail/src/HeaderHighlight.tsx) wraps every cell renderer's output in a single clipping span:
block min-w-0 truncate text-sm font-semibold
truncate is overflow:hidden + text-overflow:ellipsis + whitespace-nowrap. The ellipsis half only draws for text in the block's own inline formatting context. When the renderer returns a block-level flex row instead of text, an overflowing flex item is simply cut — no ellipsis, and nothing in the accessible name. objectstack-ai/objectstack#5066 measured exactly that (79px clip box, 32px text node, 25px overflow, 33% reading as 3), so the "clips silently" half of the mechanism is empirical, not inferred.
objectstack-ai/objectstack#5066 fixes the percent renderer from the renderer side: the number gets shrink priority and the decorative bar shrinks away. It deliberately did not take that issue's third suggested route (make the chip itself tolerant of renderers that are not single-line text, or measure before clipping), so the chip-side mechanism is untouched and still applies to every other multi-element renderer.
Candidates, and how far the analysis actually goes
Class-level reading of packages/fields/src/index.tsx only — no browser measurement, because the container this ran in has no Chromium binary. So treat the list as leads, not verdicts:
GeolocationCellRenderer— aninline-flexrow: a 14pxMapPinplus text like31.2304, 121.4737(~110px). In a chip squeezed towardmin-w-[7rem](~72px of content) the tail goes. Because the text sits inside the atomic inline-flex box rather than the chip's own inline context, no partial ellipsis is expected.ColorSwatchCellRenderer— same shape, 14px swatch plus a 7-char hex. Marginal (~64px), probably fits; listed for completeness.- The percent renderer's own floor after Console:
percentdisplay renderer's fixed-width progress bar clips the value in a record-highlights chip (33% renders as3) objectstack#5066: below roughly 40px of content the bar has collapsed to nothing and the number starts clipping like any other single-line cell. That floor is intrinsic to a self-contained renderer fix — the chip's width is a function of how many chips the record has, so the strip's@containercannot see it.
Renderers whose text carries its own truncate / min-w-0 (lookup, user, file, select-dot — the objectui#3466 family) are NOT affected: the ellipsis draws inside the label.
If someone picks this up
Two shapes, both objectui-only:
- Chip-side: stop putting a bare
truncatearound arbitrary renderer output — e.g. keep the clip but let the renderer opt into its own overflow handling, so a multi-element row is responsible for the ellipsis it can actually draw. - Renderer-side, per renderer: give the value text
min-w-0 truncateso it ellipsizes in place (the feat(storage): surface sys_file id on upload-complete — ADR-0104 D3 wave 2 (PR-1) objectstack#3466 convention), which is the cheap local version.
Worth deciding once at the chip, rather than re-litigating per renderer as each one turns up in a highlights strip.
Verification note for whoever takes it: a DOM-only probe reports this surface healthy — the DOM always carries the full value. It needs getBoundingClientRect() plus a screenshot, the way objectstack-ai/objectstack#5066 was measured.
Activity
os-zhuang commentedon Aug 10, 2026
Findings-triage: held (
findingstays) — grade carried over onto this card from the source thread so it is readable where the label lives.The disposition recorded on objectstack#6950 (objectui shard PM, 2026-08-09 09:51Z) stands unchanged: the worst instance (percent renderer) is fixed via #3927; the remaining candidates (Geolocation / ColorSwatch chips, the ~40px floor) are class-level reading with no browser measurement. Restart condition: a measured, user-visible clipped instance (needs
getBoundingClientRect()+ screenshot, the way objectstack#5066 was measured — a DOM-only probe reports this surface healthy).本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
claude commentedon Aug 10, 2026
Findings round — held (
findingkept), premise re-verified.origin/maine638531: the single clipping wrapper is live atpackages/plugin-detail/src/HeaderHighlight.tsx:217(block min-w-0 truncate text-sm font-semibold), so the class-level mechanism stands.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
os-zhuang commentedon Aug 11, 2026
Findings round — held (
findingkept), premise re-verified.Re-checked @ objectui
origin/mainb42558a: the single clipping wrapper is live atpackages/plugin-detail/src/HeaderHighlight.tsx:217(block min-w-0 truncate text-sm font-semibold), so the class-level mechanism stands. Held on the standing restart condition from the source thread (objectstack#6950): the one measured instance (percent renderer) is fixed; the remaining exposure is a future multi-element cell renderer landing in a highlights chip, at which point this graduates from cosmetic-latent to measured.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
os-zhuang commentedon Aug 11, 2026
Findings triage (re-verify @
origin/mainf812de6): HOLD — the single clipping wrapper is live atpackages/plugin-detail/src/HeaderHighlight.tsx:229(block min-w-0 truncate text-sm font-semibold; drifted from :217, content unchanged). Standing restart condition unchanged: a measured, user-visible clipped instance (browser measurement, not DOM-only).findingstands.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
claude commentedon Aug 11, 2026
Findings cadence re-check @
origin/main90e792e: HOLD (findingstays). The highlights strip mechanism inpackages/app-shell/src/views/RecordDetailView.tsx(~:2072) is unchanged this window; no ellipsis/clamp handling has been added for multi-element cell renderers. Cosmetic-class, still real.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
os-zhuang commentedon Aug 17, 2026
Findings centralized round, batch 2 (triage seat, 2026-08-17): state transition
finding→pm:on-holdper the 2026-08-13 status-semantics ruling; type Bug (real clipping mechanism, one instance measured and fixed via #3927; remaining candidates unmeasured). Standing grade unchanged and absorbed: needs a browser measurement (getBoundingClientRect()+ screenshot — a DOM-only probe reports this surface healthy), and the chip-vs-renderer ownership call is worth deciding once at the chip.Restart-when: a measured, user-visible clipped instance is reported, or a dispatched card's file surface includes
packages/plugin-detail/src/HeaderHighlight.tsx. Trigger file:packages/plugin-detail/src/HeaderHighlight.tsx.Generated by Claude Code
os-zhuang commentedon Aug 23, 2026
Triage:
domain:ui(lane only —pm:on-holduntouched). Landing:packages/plugin-detail— therecord:highlightschip clipping multi-element cell renderers, withpackages/fieldssupplying them.Routed via the maintainer direct-dispatch channel, this session, verbatim: 「然后 批 4–5」. PM session
session_0124Qg8rLvpXnQDwCmpKUmaJ. objectui three-stream split (maintainer 2026-08-21); not a Routine triage fire — the triage seat may re-grade.Generated by Claude Code
objectstack-fleet commentedon Sep 24, 2026
关闭
not_planned—— 维护者同意:纯显示问题,唯一实测到的实例早已修好分诊席(
session_01Tw7jnJinGHvoGSi8aFkhPJ,objectstack 座位贴 #6015),2026-09-24T11:05Z。objectui 清理第七批(#8587 的挂起卡一次性清点):本席读完了卡面和评论(7 条,全部读到),并在本地 main(62597c5)上重新测量,把建议报给维护者。维护者答:「objectui 第⑦批 同意」。本卡说的是什么
record:highlights的标签把任意单元格渲染器的输出包在一个truncate容器里。如果渲染器输出的是多元素的 flex 行,溢出部分会被直接截掉,而且不显示省略号。本席实测(本地 main
62597c5)packages/plugin-detail/src/HeaderHighlight.tsx:289(08-11 时在:229,说明文件此后改过,但这一层没动)。5311531925的重启条件(实测到用户能看到的截断)没有发生。为什么关
纯显示问题,6 周里没有出现第二个实测实例。
什么时候重开
实测到一个被截断的标签时重开。⚠️ 只看 DOM 的检查会误报"正常",必须用
getBoundingClientRect()加截图来测(和 objectstack#5066 的测法相同)。届时建议在标签这一层统一决定处理方式,不要每个渲染器单独修。标签:摘
pm:on-hold;以not_planned关闭。Generated by Claude Code