From ca00672016522acee5fb424fe9a8725cb5ec2ddc Mon Sep 17 00:00:00 2001 From: Till-JS <101404291+Till-JS@users.noreply.github.com> Date: Tue, 27 Jan 2026 16:57:56 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(chat):=20add=20model=20compari?= =?UTF-8?q?son=20feature?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add /compare route to test prompts against multiple Ollama models: - CompareInput: prompt textarea with temperature/max tokens controls - ModelResponseCard: displays response with status, metrics, markdown - ModelResponseGrid: responsive grid layout for side-by-side comparison - CompareProgress: progress bar with cancel functionality - Svelte 5 runes-based store for state management - Add Scales icon to shared-ui navigation --- .../components/compare/CompareInput.svelte | 116 +++++++++++ .../components/compare/CompareProgress.svelte | 43 ++++ .../compare/ModelResponseCard.svelte | 185 ++++++++++++++++++ .../compare/ModelResponseGrid.svelte | 27 +++ .../apps/web/src/lib/stores/compare.svelte.ts | 183 +++++++++++++++++ .../routes/(protected)/compare/+page.svelte | 146 ++++++++++++++ apps/chat/packages/chat-types/src/index.ts | 15 +- .../src/navigation/PillNavigation.svelte | 2 + 8 files changed, 716 insertions(+), 1 deletion(-) create mode 100644 apps/chat/apps/web/src/lib/components/compare/CompareInput.svelte create mode 100644 apps/chat/apps/web/src/lib/components/compare/CompareProgress.svelte create mode 100644 apps/chat/apps/web/src/lib/components/compare/ModelResponseCard.svelte create mode 100644 apps/chat/apps/web/src/lib/components/compare/ModelResponseGrid.svelte create mode 100644 apps/chat/apps/web/src/lib/stores/compare.svelte.ts create mode 100644 apps/chat/apps/web/src/routes/(protected)/compare/+page.svelte diff --git a/apps/chat/apps/web/src/lib/components/compare/CompareInput.svelte b/apps/chat/apps/web/src/lib/components/compare/CompareInput.svelte new file mode 100644 index 000000000..79ffb05bd --- /dev/null +++ b/apps/chat/apps/web/src/lib/components/compare/CompareInput.svelte @@ -0,0 +1,116 @@ + + +
+ Verarbeite Modell {currentIndex + 1} von + {totalModels}: + {currentModelName} +
+ ++ {Math.round(progress)}% +
+Wartet auf Verarbeitung...
+ {:else if result.status === 'loading'} +{result.error || 'Ein Fehler ist aufgetreten'}
+ {:else if result.response} +Keine Ergebnisse vorhanden.
+Gib einen Prompt ein und starte den Vergleich.
++ Vergleiche Antworten verschiedener lokaler Ollama-Modelle nebeneinander. +
+Lade Modelle...
+{error}
+ ++ Es sind keine lokalen Ollama-Modelle verfügbar. Stelle sicher, dass Ollama läuft und + Modelle installiert sind. +
+VerfĂĽgbare Modelle ({models.length}):
++ {ollamaModels.length} Ollama-Modelle verfĂĽgbar: + {ollamaModels.map((m) => m.name).join(', ')} +
+ + + {#if compareStore.isRunning} +