From be6287552b7cfabd998fcb18659b225bf6215c92 Mon Sep 17 00:00:00 2001 From: "Scion Agent (project-agents-list-ui)" Date: Tue, 9 Jun 2026 22:07:37 +0000 Subject: [PATCH] fix: apply agent list UI improvements to project detail view Port two fixes from the global /agents list to the project detail agent list for consistency: 1. Task column truncation: use multi-line clamp (2 lines) instead of single-line ellipsis, so action buttons remain visible. 2. Label-free buttons: remove text labels from card view buttons and add tooltip wrappers with aria-labels to both card and table view buttons, matching the icon-only style of the agents page. --- web/src/components/pages/project-detail.ts | 269 ++++++++++++--------- 1 file changed, 153 insertions(+), 116 deletions(-) diff --git a/web/src/components/pages/project-detail.ts b/web/src/components/pages/project-detail.ts index d6ac35ba7..1a0ef91c5 100644 --- a/web/src/components/pages/project-detail.ts +++ b/web/src/components/pages/project-detail.ts @@ -400,10 +400,12 @@ export class ScionPageProjectDetail extends LitElement { } .agent-table-container .task-cell { - max-width: 250px; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; + max-width: 250px; + white-space: normal; color: var(--scion-text-muted, #64748b); font-size: 0.8125rem; } @@ -1420,76 +1422,96 @@ export class ScionPageProjectDetail extends LitElement { ${can(agent._capabilities, 'attach') ? html` - - - + + + + + + + ` : nothing} ${isAgentRunning(agent) ? can(agent._capabilities, 'stop') ? html` ${agent.harnessCapabilities?.resume?.support !== 'no' ? html` + + this.handleAgentAction(agent.id, 'suspend')} + aria-label="Suspend" + > + + + + ` : nothing} + this.handleAgentAction(agent.id, 'suspend')} + @click=${() => this.handleAgentAction(agent.id, 'stop')} + aria-label="Stop" > - + - ` : nothing} - this.handleAgentAction(agent.id, 'stop')} - > - - + ` : nothing : agent.phase === 'suspended' ? can(agent._capabilities, 'start') ? html` - this.handleAgentAction(agent.id, 'resume')} - > - - + + this.handleAgentAction(agent.id, 'resume')} + aria-label="Resume" + > + + + ` : nothing : can(agent._capabilities, 'start') ? html` - this.handleAgentAction(agent.id, 'start')} - > - - + + this.handleAgentAction(agent.id, 'start')} + aria-label="Start" + > + + + ` : nothing} ${can(agent._capabilities, 'delete') ? html` - this.handleAgentAction(agent.id, 'delete', e)} - > - - + + this.handleAgentAction(agent.id, 'delete', e)} + aria-label="Delete" + > + + + ` : nothing} @@ -1534,15 +1556,19 @@ export class ScionPageProjectDetail extends LitElement {
${can(agent._capabilities, 'attach') ? html` - - - Terminal - + + + + + + + ` : nothing} ${isAgentRunning(agent) @@ -1550,75 +1576,86 @@ export class ScionPageProjectDetail extends LitElement { ? html` ${agent.harnessCapabilities?.resume?.support !== 'no' ? html` - this.handleAgentAction(agent.id, 'suspend')} - > - - Suspend - + + this.handleAgentAction(agent.id, 'suspend')} + aria-label="Suspend" + > + + + ` : nothing} - this.handleAgentAction(agent.id, 'stop')} - > - - Stop - - ` - : nothing - : agent.phase === 'suspended' - ? can(agent._capabilities, 'start') - ? html` + this.handleAgentAction(agent.id, 'resume')} + @click=${() => this.handleAgentAction(agent.id, 'stop')} + aria-label="Stop" > - - Resume + + + ` + : nothing + : agent.phase === 'suspended' + ? can(agent._capabilities, 'start') + ? html` + + this.handleAgentAction(agent.id, 'resume')} + aria-label="Resume" + > + + + ` : nothing : can(agent._capabilities, 'start') ? html` - this.handleAgentAction(agent.id, 'start')} - > - - Start - + + this.handleAgentAction(agent.id, 'start')} + aria-label="Start" + > + + + ` : nothing} ${can(agent._capabilities, 'delete') ? html` - this.handleAgentAction(agent.id, 'delete', e)} - > - - + + this.handleAgentAction(agent.id, 'delete', e)} + aria-label="Delete" + > + + + ` : nothing}