fix(canvas/concierge): truncate agent role to one line, full text on hover #2436
Reference in New Issue
Block a user
Delete Branch "fix/concierge-role-truncate"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
In the concierge agent tree, each agent's
rolerendered with no truncation, so long descriptors (e.g. "Coding Executor (Kimi) — implements specs only; NO review / RCA / decisions / delegation") wrapped into a tall multi-line block, making the tree hard to scan.Fix
Render the role compact:
.wsRolenow clamps to a single line with ellipsis (white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; flex:0 1 auto), and.wsStatusisflex:0 0 autoso it isn't squeezed.title={roleLabel}so the full role shows on hover (native tooltip).Pure presentational change (CSS + one
titleattr);tsc --noEmitclean.SOP Checklist
Comprehensive testing performed
TypeScript typecheck (
tsc --noEmit -p tsconfig.json) clean; existing canvas vitest suite unaffected (no logic/state change). The change is a CSS line-clamp + a nativetitletooltip; verified the role truncates to one line and the full text shows on hover. No new unit test added for a pure-CSS/attribute change (nothing testable in JS beyond thetitlevalue, which is the sameroleLabelalready rendered).Local-postgres E2E run
N/A — canvas-only (
ConciergeShell.tsx+Concierge.module.css); no Go/handler/DB/migration surface, so the Postgres handler E2E is not exercised by this diff.Staging-smoke verified or pending
N/A for backend smoke — no API/provisioning/runtime surface. Presentational; visually verifiable on the canvas after deploy (role truncates + hover tooltip).
Root-cause not symptom
Yes — the root cause was that
.wsRolehad no truncation, so a longrolewrapped. Fixed at the CSS/component level (single-line clamp + don't-squeeze status + hover-for-full), not a width hack or a per-string trim.Five-Axis review walked
Correctness:
flex:0 1 auto+min-width:0lets the role shrink+ellipsis while.wsStatus(flex:0 0 auto) stays;titlecarries the full text. Security: none — no data/auth/secret path; thetitlevalue is the same role string already in the DOM. Performance: CSS-only, no new renders/state. Maintainability: a singleroleLabelconst feeds both the rendered text and the tooltip (no duplication). UX: matches the reported issue (compact by default, full info on hover).No backwards-compat shim / dead code added
Yes — minimal CSS additions + one local const + one
titleattr; no shim, no dead code, no removed behavior.Memory consulted
feedback_verify_real_artifact_not_proxy_metric(confirmed the actual truncation + hover render, not a proxy),feedback_open_design_concept_files_not_from_memory(matched the reported screenshot's layout). Small, presentational fix; no architectural memory applies.🤖 Generated with Claude Code
The concierge agent tree rendered each agent's `role` with no truncation, so a long descriptor (e.g. "Coding Executor (Kimi) — implements specs only; NO review / RCA / decisions / delegation") wrapped into a tall multi-line block, making the tree hard to scan. Render the role compact: `.wsRole` now clamps to a single line with ellipsis (and `.wsStatus` no longer gets squeezed), and the row sets `title={roleLabel}` so the full text is available on hover via the native tooltip. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>Security review APPROVE on current head
ce482fc0fc.Reviewed scope: canvas/src/components/concierge/ConciergeShell.tsx and Concierge.module.css only. The change computes roleLabel from existing UI data and renders it as text plus a native title tooltip; React escapes both text content and the title attribute, so this does not create an HTML/script injection path. No secret/credential handling, token logging, internal path/image-env marker, ACL/routing, network/handler, SQL, or provisioning behavior changed. Added comments/strings contain no content-security-sensitive internal mechanics. Required CI contexts are green; the Local Provision E2E failures are the known org-wide staging/provisioning degradation and unrelated to this CSS/tooltip change.
QA review for molecule-core#2436 @
ce482fc0(qa-team-20).APPROVED. I verified agent-reviewer is in molecule-ai QA team 20, head is still
ce482fc0, and latest-row required checks are green for CI / all-required and gate-check-v3. The failing Local Provision Lifecycle E2E rows are advisory/provisioning-surface checks and unrelated to this presentational canvas-only change.QA axes: the diff is scoped to ConciergeShell.tsx and Concierge.module.css; role text remains the same value, now rendered as a single-line ellipsis with the full role exposed via native title. CSS min-width/flex settings preserve the status chip instead of squeezing it. No handler/schema/Go/data/security path touched, no content-security strings or internal paths/markers added. Accessibility is acceptable for this narrow change because the full role text remains the element text in the DOM and title adds hover disclosure; it does not remove semantic content.
SOP classification: default risk class / non-high-risk (no risk:high label). There is no current SOP tier branch such as LOWEST in .gitea/sop-checklist-config.yaml; this is the trivial/presentational kind of change under the default class.
/sop-ack comprehensive-testing
/sop-ack local-postgres-e2e
/sop-ack staging-smoke
/sop-ack root-cause
/sop-ack five-axis-review
/sop-ack no-backwards-compat
/sop-ack memory-consulted
Submitting the pending security review as APPROVED for
ce482fc0.