diff options
| author | Adam Malczewski <[email protected]> | 2026-05-19 19:40:21 +0900 |
|---|---|---|
| committer | Adam Malczewski <[email protected]> | 2026-05-19 19:40:21 +0900 |
| commit | f78a91c20f658dd404277919a0b872b352c99bb6 (patch) | |
| tree | 58cfffb655da4443f4b7a39543b86f988f15239f /packages/frontend/src/App.svelte | |
| download | dispatch-main.tar.gz dispatch-main.zip | |
- Bun monorepo with @dispatch/core, @dispatch/api, @dispatch/frontend
- Agent runtime with Vercel AI SDK, streaming via WebSocket
- Tools: read_file, write_file, list_files (scoped to working directory)
- Hono API server with POST /chat, GET /status, GET /health, WS /ws
- Svelte 5 + DaisyUI frontend with chat UI, theme switcher, copy button
- OpenCode Go (Zen) as LLM provider, deepseek-v4-flash-free model
- Docker setup (dev + prod) with bin/ scripts and gopass secrets
- Biome v2 linting/formatting, Vitest tests (44 passing)
- Debug info attached to error messages for diagnostics
Diffstat (limited to 'packages/frontend/src/App.svelte')
| -rw-r--r-- | packages/frontend/src/App.svelte | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/packages/frontend/src/App.svelte b/packages/frontend/src/App.svelte new file mode 100644 index 0000000..038fb09 --- /dev/null +++ b/packages/frontend/src/App.svelte @@ -0,0 +1,32 @@ +<script lang="ts"> +import { onMount } from "svelte"; +import ChatInput from "./lib/components/ChatInput.svelte"; +import ChatPanel from "./lib/components/ChatPanel.svelte"; +import Header from "./lib/components/Header.svelte"; +import { wsClient } from "./lib/ws.svelte.js"; + +const STORAGE_KEY = "dispatch-theme"; + +onMount(() => { + // Apply saved theme + const saved = localStorage.getItem(STORAGE_KEY); + if (saved) { + document.documentElement.setAttribute("data-theme", saved); + } + + // Connect WebSocket + wsClient.connect(); + + return () => { + wsClient.disconnect(); + }; +}); +</script> + +<div class="flex flex-col h-screen overflow-hidden bg-base-100 text-base-content"> + <Header /> + <div class="flex-1 overflow-hidden"> + <ChatPanel /> + </div> + <ChatInput /> +</div> |
