feat: Compact transparent tool cards with grouped assistant messages
- Redesign all tool cards (Edit, Read, Bash, Grep, Glob, Write) to be compact single-line headers with inline key info and toggle buttons - Make cards and bubbles fully transparent with subtle color tints - Remove borders, use only left accent bar per card type - Color-code numbers: red for removals, green for additions/counts - Simplify ToolResultBlock to render content directly without toggle - Group consecutive assistant messages, showing header only on first - Remove borders from assistant and user message bubbles
This commit is contained in:
@@ -208,11 +208,12 @@ function formatDuration(start: string, end: string): string {
|
||||
</div>
|
||||
<div ref="scrollContainer" class="messages-scroll">
|
||||
<div
|
||||
v-for="msg in conversation.messages"
|
||||
v-for="(msg, idx) in conversation.messages"
|
||||
:key="msg.uuid"
|
||||
:class="['message-wrapper', {
|
||||
resolved: resolvedUuids.has(msg.uuid),
|
||||
selected: selectedUuids.has(msg.uuid)
|
||||
selected: selectedUuids.has(msg.uuid),
|
||||
'assistant-continuation': msg.kind === 'assistant' && idx > 0 && conversation.messages[idx - 1].kind === 'assistant'
|
||||
}]"
|
||||
>
|
||||
<!-- Select checkbox -->
|
||||
@@ -227,7 +228,7 @@ function formatDuration(start: string, end: string): string {
|
||||
</svg>
|
||||
</button>
|
||||
|
||||
<div :class="['message-content', { selectable: selectMode && msg.kind !== 'progress' }]" @click="selectMode && msg.kind !== 'progress' ? toggleSelect(msg.uuid) : undefined">
|
||||
<div :class="['message-content', { selectable: selectMode && msg.kind !== 'progress' }]" @click="selectMode && msg.kind !== 'progress' && toggleSelect(msg.uuid)">
|
||||
<UserMessageBubble
|
||||
v-if="msg.kind === 'user'"
|
||||
:message="msg"
|
||||
@@ -235,6 +236,7 @@ function formatDuration(start: string, end: string): string {
|
||||
<AssistantMessageBubble
|
||||
v-else-if="msg.kind === 'assistant'"
|
||||
:message="msg"
|
||||
:show-header="!(idx > 0 && conversation.messages[idx - 1].kind === 'assistant')"
|
||||
/>
|
||||
<ProgressEvent
|
||||
v-else-if="msg.kind === 'progress'"
|
||||
@@ -448,6 +450,11 @@ function formatDuration(start: string, end: string): string {
|
||||
padding: 0.25rem 0.4rem;
|
||||
}
|
||||
|
||||
/* Consecutive assistant messages: tighter spacing */
|
||||
.message-wrapper.assistant-continuation {
|
||||
margin-top: -0.5rem;
|
||||
}
|
||||
|
||||
/* Messages that replaced an optimistic one: smooth settle instead of bounce */
|
||||
.message-wrapper.resolved {
|
||||
animation: resolveIn 0.3s ease-out;
|
||||
|
||||
Reference in New Issue
Block a user