Skip to content

feat: Agent display name across remaining surfaces — operator, monitoring, executions, graph (#964 follow-up 5/5) #1643

Description

@vybe

Summary

Apply the display name to the remaining surfaces: operator queue, monitoring, executions, the collaboration graph, tab titles, and prose/toast strings. Lowest value per site and safely deferrable — until this lands these surfaces keep showing the slug, which is correct behavior, just not the polished version.

Follow-up 5 of 5 from the design decision on #964.

Context

Per the #964 render rule, these split across three surface classes:

  • Dense operational tables (machine-facing) — the slug stays primary; the display name is supplementary at most. Executions rows, operator queue rows, monitoring alerts, and RoleMatrix (a 100px column header — extremely tight).
  • Prose / toasts (identity already established) — display name alone reads better than a concat.
  • Collaboration graph — needs a store change before it can show anything.

Most of these components read agent_name out of API payloads, not the agents store, so the backend payloads need the field or the frontend needs a slug→display resolver. That decision is the main design work in this issue.

Acceptance Criteria

  • Decision recorded: add display_name to operator/monitoring/executions payloads, or build a frontend slug→display resolver from the agents store (with the tradeoff stated)
  • Dense operational tables keep the slug primary per the spike: Support a friendly display name on agents separate from the slug-based name #964 render rule:
    • src/frontend/src/components/ExecutionsPanel.vue table rows
    • src/frontend/src/components/operator/QueueCard, QueueList, QueueItemDetail, ResolvedCard, NotificationsPanel
    • src/frontend/src/components/MonitoringPanel.vue alert + health rows
    • src/frontend/src/components/process/RoleMatrix.vue (100px column — slug only)
    • src/frontend/src/views/MobileAdmin.vue ops rows
  • Collaboration graph shows the display name without breaking actions:
    • Sibling field added in src/frontend/src/stores/network.js (both the agent and system-agent node data)
    • data.label remains the slug — it is the API key for router.push / toggleAutonomy / toggleAgentRunning in AgentNode.vue
  • Prose / toast strings use the display name alone — Agents.vue notifications, Settings.vue confirms, PortalChat.vue empty state, PortalFilesPanel.vue headings
  • Router tab titles in src/frontend/src/router/index.js resolve the display name via a store lookup (they currently derive from the route param, so they only ever have the slug) — or an explicit decision to keep slug-only there
  • Remaining :title= / :alt= / aria-label strings reviewed — accessibility labels should carry the display name where it aids comprehension
  • ReplayTimeline.vue, FoldersPanel.vue, ExecutionDetail.vue breadcrumb + source-agent attribution, PermissionsPanel.vue, TerminalPanelContent.vue, AgentWorkspace.vue, AgentBrainOrb.vue reviewed against the render rule
  • AgentAvatar still receives the slug everywhere (including the duplicate initials/tint implementation in ClientPortal.vue)

Technical Notes

Comment in src/frontend/src/router/index.js explicitly calls :name "the canonical agent identifier" — that stays true; only the rendered title changes.

ReplayTimeline.vue and the operator cards already render an avatar beside the name, so they have marginally more room than a bare table cell — worth a case-by-case call rather than a blanket rule.

Comma-joined agent lists (e.g. the GitHub PAT propagation failure list in Settings.vue) get unreadable fast with long display names — slug is probably right there.

Depends on: the #964 schema/API/MCP issue. Independent of the roomy-surfaces and pickers issues; can land last or in parallel.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions