+
{props.approval.description}
{props.approval.command}
@@ -131,7 +131,7 @@ export const ApprovalCard: Component-
+
- {item} } + {(item) =>
- {item} }
-
+
- {item} } + {(item) =>
- {item} }
-
+
- {item} } + {(item) =>
- {item} }
{props.preview}
@@ -254,7 +254,7 @@ const detailCopyTarget = (kind: ToolDetailKind) => {
};
const detailPreClass = (kind: ToolDetailKind) =>
- `${kind === 'output' ? 'max-h-72' : 'max-h-36'} overflow-auto rounded bg-surface-alt p-2 font-mono text-[10px] leading-5 text-muted whitespace-pre-wrap break-words`;
+ `${kind === 'output' ? 'max-h-72' : 'max-h-36'} overflow-auto rounded-sm bg-surface-alt p-2 font-mono text-[10px] leading-5 text-muted whitespace-pre-wrap wrap-break-word`;
const ToolDetailsPanel: Component
{outputPreview()}
@@ -676,7 +676,7 @@ export const PendingToolBlock: Component = (props) => {
= (props) => {
-
-
+
+
{progressText()}
@@ -799,7 +799,7 @@ export const ToolCancellationBlock: Component = (pro
= (pro
{toolLabel()}
-
+
skipped
@@ -839,7 +839,7 @@ export const ToolCancellationBlock: Component = (pro
- {reason()}
+ {reason()}
@@ -879,7 +879,7 @@ export const PendingToolsList: Component = (props) => {
setExpanded(true)}
- class="w-full mt-0.5 py-1 text-[10px] text-muted hover:text-base-content hover:bg-surface-hover rounded text-center font-medium"
+ class="w-full mt-0.5 py-1 text-[10px] text-muted hover:text-base-content hover:bg-surface-hover rounded-sm text-center font-medium"
>
+ {hiddenCount()} more tools running...
@@ -920,7 +920,7 @@ export const ToolExecutionsList: Component = (props) =>
setShowAll(true)}
- class="w-full mt-0.5 py-1 text-[10px] text-muted hover:bg-surface-hover rounded text-center font-medium"
+ class="w-full mt-0.5 py-1 text-[10px] text-muted hover:bg-surface-hover rounded-sm text-center font-medium"
>
+ {hiddenCount()} more tools ({stats().success} ✓ / {stats().failed} ✗)
diff --git a/frontend-modern/src/components/AI/Chat/__tests__/AIChat.test.tsx b/frontend-modern/src/components/AI/Chat/__tests__/AIChat.test.tsx
index 5d6c26fd39..7ebdd41f03 100644
--- a/frontend-modern/src/components/AI/Chat/__tests__/AIChat.test.tsx
+++ b/frontend-modern/src/components/AI/Chat/__tests__/AIChat.test.tsx
@@ -665,16 +665,16 @@ describe('AIChat', () => {
);
expect(aiChatSource).toContain(' {
const panel = screen.getByText('Pulse Assistant').closest('[data-layout-mode]');
expect(panel).toHaveAttribute('data-layout-mode', 'overlay');
expect(panel).toHaveClass('top-0');
- expect(panel).toHaveClass('bottom-[var(--pulse-mobile-nav-height)]');
+ expect(panel).toHaveClass('bottom-(--pulse-mobile-nav-height)');
expect(panel).toHaveClass('h-auto');
expect(panel).not.toHaveClass('inset-y-0');
expect(panel).not.toHaveClass('h-full');
const backdrop = screen.getByRole('button', { name: 'Close Pulse Assistant backdrop' });
- expect(backdrop).toHaveClass('bottom-[var(--pulse-mobile-nav-height)]');
+ expect(backdrop).toHaveClass('bottom-(--pulse-mobile-nav-height)');
expect(backdrop).not.toHaveClass('inset-0');
expect(screen.queryByTitle('Collapse Pulse Assistant')).not.toBeInTheDocument();
expect(screen.getByLabelText('Close Pulse Assistant')).toBeInTheDocument();
diff --git a/frontend-modern/src/components/AI/Chat/__tests__/MessageItem.test.tsx b/frontend-modern/src/components/AI/Chat/__tests__/MessageItem.test.tsx
index 0794566b44..f414d99558 100644
--- a/frontend-modern/src/components/AI/Chat/__tests__/MessageItem.test.tsx
+++ b/frontend-modern/src/components/AI/Chat/__tests__/MessageItem.test.tsx
@@ -134,10 +134,10 @@ describe('MessageItem', () => {
expect(messageItemSource).not.toContain('lucide-solid/icons/copy');
expect(messageItemSource).not.toContain("lucide-solid/icons/check';");
expect(messageItemSource).not.toContain(
- 'mt-1 inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md border border-border-subtle bg-surface text-muted opacity-0 shadow-sm transition-opacity hover:text-base-content',
+ 'mt-1 inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md border border-border-subtle bg-surface text-muted opacity-0 shadow-xs transition-opacity hover:text-base-content',
);
expect(messageItemSource).not.toContain(
- 'inline-flex h-5 w-5 items-center justify-center rounded text-blue-700 transition-colors hover:bg-blue-100 hover:text-blue-950 focus:bg-blue-100 focus:outline-none focus:ring-2 focus:ring-blue-500/30',
+ 'inline-flex h-5 w-5 items-center justify-center rounded-sm text-blue-700 transition-colors hover:bg-blue-100 hover:text-blue-950/25 focus:bg-blue-100 focus:outline-hidden focus:ring-2 focus:ring-blue-500/30',
);
});
diff --git a/frontend-modern/src/components/AI/Chat/__tests__/ToolExecutionBlock.test.tsx b/frontend-modern/src/components/AI/Chat/__tests__/ToolExecutionBlock.test.tsx
index e92fe3c59f..ffada68074 100644
--- a/frontend-modern/src/components/AI/Chat/__tests__/ToolExecutionBlock.test.tsx
+++ b/frontend-modern/src/components/AI/Chat/__tests__/ToolExecutionBlock.test.tsx
@@ -93,7 +93,7 @@ describe('ToolExecutionBlock', () => {
expect(toolExecutionBlockSource).not.toContain('lucide-solid/icons/copy');
expect(toolExecutionBlockSource).not.toContain("lucide-solid/icons/check';");
expect(toolExecutionBlockSource).not.toContain(
- 'inline-flex h-6 w-6 shrink-0 items-center justify-center rounded border border-border-subtle bg-surface text-muted transition-colors hover:bg-surface-hover hover:text-base-content focus:outline-none focus:ring-2 focus:ring-blue-500/30',
+ 'inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-sm border border-border-subtle bg-surface text-muted transition-colors hover:bg-surface-hover hover:text-base-content focus:outline-hidden focus:ring-2 focus:ring-blue-500/30',
);
});
@@ -432,7 +432,7 @@ describe('ToolExecutionBlock', () => {
.closest('[data-testid="tool-input-summary"]');
expect(summary).toBeInTheDocument();
expect(summary?.className).toContain('whitespace-pre-wrap');
- expect(summary?.className).toContain('break-words');
+ expect(summary?.className).toContain('wrap-break-word');
expect(summary?.className).not.toContain('truncate');
});
@@ -755,7 +755,7 @@ describe('ToolExecutionBlock', () => {
expect(detailBlocks.length).toBeGreaterThanOrEqual(2);
for (const block of detailBlocks) {
expect(block.className).toContain('whitespace-pre-wrap');
- expect(block.className).toContain('break-words');
+ expect(block.className).toContain('wrap-break-word');
expect(block.className).not.toContain('break-all');
}
});
@@ -1022,7 +1022,7 @@ describe('PendingToolBlock', () => {
.closest('[data-testid="tool-input-summary"]');
expect(summary).toBeInTheDocument();
expect(summary?.className).toContain('whitespace-pre-wrap');
- expect(summary?.className).toContain('break-words');
+ expect(summary?.className).toContain('wrap-break-word');
expect(summary?.className).not.toContain('truncate');
});
@@ -1142,7 +1142,7 @@ describe('PendingToolBlock', () => {
expect(progress).toBeInTheDocument();
expect(progress).toHaveAttribute('title', 'Running command.');
expect(progress.className).not.toContain('hidden');
- expect(progress.className).toContain('break-words');
+ expect(progress.className).toContain('wrap-break-word');
expect(progress.className).not.toContain('truncate');
});
diff --git a/frontend-modern/src/components/AI/Chat/index.tsx b/frontend-modern/src/components/AI/Chat/index.tsx
index 9be55a5295..18e44ec7cc 100644
--- a/frontend-modern/src/components/AI/Chat/index.tsx
+++ b/frontend-modern/src/components/AI/Chat/index.tsx
@@ -2275,14 +2275,14 @@ export const AIChat: Component = (props) => {
onCleanup(stopPanelResize);
const rootClassName = createMemo(() => {
if (isOverlayLayout()) {
- return `fixed top-0 right-0 bottom-[var(--pulse-mobile-nav-height)] z-50 flex h-auto w-full flex-col bg-surface transition-transform duration-300 sm:w-[560px] sm:max-w-[calc(100vw-1rem)] ${
+ return `fixed top-0 right-0 bottom-(--pulse-mobile-nav-height) z-50 flex h-auto w-full flex-col bg-surface transition-transform duration-300 sm:w-[560px] sm:max-w-[calc(100vw-1rem)] ${
isOpen()
? 'translate-x-0 overflow-visible border-l border-border shadow-2xl'
: 'translate-x-full overflow-hidden border-l-0'
}`;
}
- return `relative flex h-full flex-shrink-0 flex-col bg-surface transition-all duration-300 ${
+ return `relative flex h-full shrink-0 flex-col bg-surface transition-all duration-300 ${
isOpen()
? 'w-full overflow-visible border-l border-border sm:w-[560px]'
: 'w-0 overflow-hidden border-l-0'
@@ -2758,7 +2758,7 @@ export const AIChat: Component = (props) => {
const currentStatusKind = createMemo(() => currentStatus()?.type);
const currentStatusRowClass = createMemo(() => {
if (currentStatusKind() === 'retrying') {
- return 'bg-amber-50/80 text-amber-900 dark:bg-amber-950/25 dark:text-amber-100';
+ return 'bg-amber-50/80 text-amber-900/25 dark:bg-amber-950/25 dark:text-amber-100';
}
return '';
});
@@ -4274,7 +4274,7 @@ export const AIChat: Component = (props) => {
@@ -4287,7 +4287,7 @@ export const AIChat: Component = (props) => {
{/* Drag handle to resize the panel (desktop widths only) */}