Skip to content
Binary file modified tools/server/public/index.html.gz
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<script lang="ts">
import { RemoveButton } from '$lib/components/app';
import { getFileTypeLabel, getPreviewText, formatFileSize, isTextFile } from '$lib/utils';
import { formatFileSize, getFileTypeLabel, getPreviewText, isTextFile } from '$lib/utils';
import { AttachmentType } from '$lib/enums';

interface Props {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import Input from '$lib/components/ui/input/input.svelte';
import { conversationsStore, conversations } from '$lib/stores/conversations.svelte';
import { chatStore } from '$lib/stores/chat.svelte';
import { getPreviewText } from '$lib/utils/text';
import ChatSidebarActions from './ChatSidebarActions.svelte';

const sidebar = Sidebar.useSidebar();
Expand All @@ -20,6 +21,9 @@
let showEditDialog = $state(false);
let selectedConversation = $state<DatabaseConversation | null>(null);
let editedName = $state('');
let selectedConversationNamePreview = $derived.by(() =>
selectedConversation ? getPreviewText(selectedConversation.name) : ''
);

let filteredConversations = $derived.by(() => {
if (searchQuery.trim().length > 0) {
Expand Down Expand Up @@ -162,7 +166,7 @@
bind:open={showDeleteDialog}
title="Delete Conversation"
description={selectedConversation
? `Are you sure you want to delete "${selectedConversation.name}"? This action cannot be undone and will permanently remove all messages in this conversation.`
? `Are you sure you want to delete "${selectedConversationNamePreview}"? This action cannot be undone and will permanently remove all messages in this conversation.`
: ''}
confirmText="Delete"
cancelText="Cancel"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -504,6 +504,14 @@
background: hsl(var(--muted) / 0.1);
}

/* User message markdown should keep table borders visible on light primary backgrounds */
div.markdown-user-content :global(table),
div.markdown-user-content :global(th),
div.markdown-user-content :global(td),
div.markdown-user-content :global(.table-wrapper) {
border-color: currentColor;
}

/* Horizontal rules */
div :global(hr) {
border: none;
Expand Down Expand Up @@ -642,6 +650,21 @@
background: var(--muted);
}

/* Disable hover effects when rendering user messages */
.markdown-user-content :global(a),
.markdown-user-content :global(a:hover) {
color: var(--primary-foreground);
}

.markdown-user-content :global(table:hover) {
box-shadow: none;
}

.markdown-user-content :global(th:hover),
.markdown-user-content :global(td:hover) {
background: inherit;
}

/* Enhanced blockquotes */
div :global(blockquote) {
transition: all 0.2s ease;
Expand Down
9 changes: 0 additions & 9 deletions tools/server/webui/src/lib/utils/file-preview.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,3 @@ export function getFileTypeLabel(input: string | undefined): string {
// Handle AttachmentType or other plain strings
return input.toUpperCase();
}

/**
* Truncates text content for preview display
* @param content - The text content to truncate
* @returns Truncated content with ellipsis if needed
*/
export function getPreviewText(content: string): string {
return content.length > 150 ? content.substring(0, 150) + '...' : content;
}
3 changes: 2 additions & 1 deletion tools/server/webui/src/lib/utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ export { createMessageCountMap, getMessageCount } from './conversation-utils';
export { copyToClipboard, copyCodeToClipboard } from './copy';

// File preview utilities
export { getFileTypeLabel, getPreviewText } from './file-preview';
export { getFileTypeLabel } from './file-preview';
export { getPreviewText } from './text';

// File type utilities
export {
Expand Down
7 changes: 7 additions & 0 deletions tools/server/webui/src/lib/utils/text.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/**
* Returns a shortened preview of the provided content capped at the given length.
* Appends an ellipsis when the content exceeds the maximum.
*/
export function getPreviewText(content: string, max = 150): string {
return content.length > max ? content.slice(0, max) + '...' : content;
}