From e1c8cf3257cb33457aa882c548f5195ecc0f9854 Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Sat, 6 Jun 2026 22:08:16 +0900 Subject: Slice 1: surface system + WS transport + composition root Pure-core feature libraries assembled at the composition root: - core/protocol: pure reducer over surface catalog/spec/error messages - features/surface-host: generic field-kind interpreter (toggle/progress/ selector/stat/button) + pure plan logic; no surface-id special-casing - adapters/ws: injected WebSocket client (effects at the edge) - app: composition root store (Svelte 5 runes over the pure reducer), host-relative surface WS URL resolution (resolveWsUrl), root App.svelte Verified green: svelte-check 0/0, vitest 84 passed, biome clean, vite build ok. --- src/features/surface-host/ui/Button.svelte | 21 ++++++++++++++++ src/features/surface-host/ui/Progress.svelte | 13 ++++++++++ src/features/surface-host/ui/Selector.svelte | 32 ++++++++++++++++++++++++ src/features/surface-host/ui/Stat.svelte | 10 ++++++++ src/features/surface-host/ui/SurfaceView.svelte | 33 +++++++++++++++++++++++++ src/features/surface-host/ui/Toggle.svelte | 25 +++++++++++++++++++ 6 files changed, 134 insertions(+) create mode 100644 src/features/surface-host/ui/Button.svelte create mode 100644 src/features/surface-host/ui/Progress.svelte create mode 100644 src/features/surface-host/ui/Selector.svelte create mode 100644 src/features/surface-host/ui/Stat.svelte create mode 100644 src/features/surface-host/ui/SurfaceView.svelte create mode 100644 src/features/surface-host/ui/Toggle.svelte (limited to 'src/features/surface-host/ui') diff --git a/src/features/surface-host/ui/Button.svelte b/src/features/surface-host/ui/Button.svelte new file mode 100644 index 0000000..62d7acf --- /dev/null +++ b/src/features/surface-host/ui/Button.svelte @@ -0,0 +1,21 @@ + + + diff --git a/src/features/surface-host/ui/Progress.svelte b/src/features/surface-host/ui/Progress.svelte new file mode 100644 index 0000000..cba9e0f --- /dev/null +++ b/src/features/surface-host/ui/Progress.svelte @@ -0,0 +1,13 @@ + + +
+ {field.label} + {percent}% + {percent}% +
diff --git a/src/features/surface-host/ui/Selector.svelte b/src/features/surface-host/ui/Selector.svelte new file mode 100644 index 0000000..2da104f --- /dev/null +++ b/src/features/surface-host/ui/Selector.svelte @@ -0,0 +1,32 @@ + + + diff --git a/src/features/surface-host/ui/Stat.svelte b/src/features/surface-host/ui/Stat.svelte new file mode 100644 index 0000000..e184dab --- /dev/null +++ b/src/features/surface-host/ui/Stat.svelte @@ -0,0 +1,10 @@ + + +
+
{field.label}
+
{field.value}
+
diff --git a/src/features/surface-host/ui/SurfaceView.svelte b/src/features/surface-host/ui/SurfaceView.svelte new file mode 100644 index 0000000..4207913 --- /dev/null +++ b/src/features/surface-host/ui/SurfaceView.svelte @@ -0,0 +1,33 @@ + + +
+

{spec.title}

+ {#each plan.fields as field (field)} + {#if field.kind === "toggle"} + + {:else if field.kind === "progress"} + + {:else if field.kind === "selector"} + + {:else if field.kind === "stat"} + + {:else if field.kind === "button"} +
diff --git a/src/features/surface-host/ui/Toggle.svelte b/src/features/surface-host/ui/Toggle.svelte new file mode 100644 index 0000000..aec8f4e --- /dev/null +++ b/src/features/surface-host/ui/Toggle.svelte @@ -0,0 +1,25 @@ + + + -- cgit v1.2.3