summaryrefslogtreecommitdiffhomepage
path: root/packages/frontend/src
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-05-28 09:42:55 +0900
committerAdam Malczewski <[email protected]>2026-05-28 09:42:55 +0900
commit1e70f2d12274da833035912206b1ac0b1ee57ef1 (patch)
treec87cb29a36d833228f2e1e16f94fcc920d8ca17e /packages/frontend/src
parent6662622e1c89fa1124b7342f136ab5f8d3c97972 (diff)
downloaddispatch-1e70f2d12274da833035912206b1ac0b1ee57ef1.tar.gz
dispatch-1e70f2d12274da833035912206b1ac0b1ee57ef1.zip
feat: add agent status indicator in chat input, db tabs tests, and service management script
Diffstat (limited to 'packages/frontend/src')
-rw-r--r--packages/frontend/src/lib/components/ChatInput.svelte15
1 files changed, 15 insertions, 0 deletions
diff --git a/packages/frontend/src/lib/components/ChatInput.svelte b/packages/frontend/src/lib/components/ChatInput.svelte
index dac7a3a..3bbc4ab 100644
--- a/packages/frontend/src/lib/components/ChatInput.svelte
+++ b/packages/frontend/src/lib/components/ChatInput.svelte
@@ -4,6 +4,8 @@ import { tabStore } from "../tabs.svelte.js";
let inputEl: HTMLInputElement | undefined;
let inputValue = $state("");
+const agentStatus = $derived(tabStore.activeTab?.agentStatus ?? "idle");
+
$effect(() => {
inputEl?.focus();
});
@@ -24,6 +26,19 @@ function submit() {
</script>
<div class="flex items-center gap-2 p-3">
+ {#if agentStatus === "running"}
+ <span class="loading loading-spinner loading-sm text-primary"></span>
+ {:else if agentStatus === "idle"}
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="w-5 h-5 text-success">
+ <polyline points="20 6 9 17 4 12"></polyline>
+ </svg>
+ {:else if agentStatus === "error"}
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-5 h-5 text-error">
+ <circle cx="12" cy="12" r="10"></circle>
+ <line x1="12" y1="8" x2="12" y2="12"></line>
+ <line x1="12" y1="16" x2="12.01" y2="16"></line>
+ </svg>
+ {/if}
<input
bind:this={inputEl}
bind:value={inputValue}