summaryrefslogtreecommitdiffhomepage
path: root/packages/frontend/src/lib/components/ModelSelector.svelte
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-03 15:29:45 +0900
committerAdam Malczewski <[email protected]>2026-06-03 15:30:38 +0900
commit5af9bd021c206b9e4330ab6a549dc8d013d91537 (patch)
tree667dca977d6eb78e09006c5553523230daa2b73f /packages/frontend/src/lib/components/ModelSelector.svelte
parentbcc449a5cba183c7358ab48ed4f2140bb1a3238c (diff)
parentbc3ecbe7b72f6da6ed36d0cea5a66de1c440269a (diff)
downloaddispatch-5af9bd021c206b9e4330ab6a549dc8d013d91537.tar.gz
dispatch-5af9bd021c206b9e4330ab6a549dc8d013d91537.zip
Merge branch 'dev' into warm/prompt-cache-warming
# Conflicts: # packages/api/src/agent-manager.ts # packages/api/tests/agent-manager.test.ts # packages/frontend/src/lib/tabs.svelte.ts
Diffstat (limited to 'packages/frontend/src/lib/components/ModelSelector.svelte')
-rw-r--r--packages/frontend/src/lib/components/ModelSelector.svelte24
1 files changed, 24 insertions, 0 deletions
diff --git a/packages/frontend/src/lib/components/ModelSelector.svelte b/packages/frontend/src/lib/components/ModelSelector.svelte
index 1e6cdf0..64036d4 100644
--- a/packages/frontend/src/lib/components/ModelSelector.svelte
+++ b/packages/frontend/src/lib/components/ModelSelector.svelte
@@ -69,6 +69,9 @@ const modelCache = new Map<string, string[]>();
onReasoningChange,
onAgentChange = (_agent: AgentInfo | null) => {},
onWorkingDirectoryChange = (_dir: string | null) => {},
+ onCompact = () => {},
+ canCompact = false,
+ compacting = false,
}: {
keys?: KeyInfo[];
activeTabId?: string | null;
@@ -84,6 +87,9 @@ const modelCache = new Map<string, string[]>();
onReasoningChange: (effort: string) => void;
onAgentChange?: (agent: AgentInfo | null) => void;
onWorkingDirectoryChange?: (dir: string | null) => void;
+ onCompact?: () => void;
+ canCompact?: boolean;
+ compacting?: boolean;
} = $props();
let showKeyModal = $state(false);
@@ -251,6 +257,24 @@ const modelCache = new Map<string, string[]>();
</div>
</div>
+ <!-- Compact conversation -->
+ <div class="mb-3">
+ <button
+ type="button"
+ class="btn btn-sm btn-outline w-full"
+ disabled={!canCompact || compacting}
+ onclick={onCompact}
+ title="Summarize older turns into a compact anchor, preserving the most recent turns. Opens a new tab while it works; the conversation continues here once done."
+ >
+ {#if compacting}
+ <span class="loading loading-spinner loading-xs"></span>
+ Compacting…
+ {:else}
+ Compact conversation
+ {/if}
+ </button>
+ </div>
+
<!-- Toggle -->
<div class="flex items-center gap-2 mb-3">
<button