From a104c094b588560f955ff52dc7f949cf3c355f94 Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Sat, 5 Sep 2026 00:34:45 +0900 Subject: feat(layout): plan 01 — tile engine + view registry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/views/CacheWarmingPane.svelte | 37 ++++++++++ src/app/views/ChatPane.svelte | 91 +++++++++++++++++++++++ src/app/views/CompactionPane.svelte | 48 +++++++++++++ src/app/views/ComposerPane.svelte | 35 +++++++++ src/app/views/ConcurrencyPane.svelte | 39 ++++++++++ src/app/views/ExtensionsPane.svelte | 78 ++++++++++++++++++++ src/app/views/HeartbeatPane.svelte | 56 +++++++++++++++ src/app/views/LspPane.svelte | 24 +++++++ src/app/views/McpPane.svelte | 24 +++++++ src/app/views/MessageQueuePane.svelte | 40 +++++++++++ src/app/views/ModelPane.svelte | 131 ++++++++++++++++++++++++++++++++++ src/app/views/NamedAgentsPane.svelte | 25 +++++++ src/app/views/SettingsPane.svelte | 34 +++++++++ src/app/views/SystemPromptPane.svelte | 21 ++++++ src/app/views/TabsPane.svelte | 24 +++++++ src/app/views/TasksPane.svelte | 29 ++++++++ src/app/views/VisionPane.svelte | 45 ++++++++++++ 17 files changed, 781 insertions(+) create mode 100644 src/app/views/CacheWarmingPane.svelte create mode 100644 src/app/views/ChatPane.svelte create mode 100644 src/app/views/CompactionPane.svelte create mode 100644 src/app/views/ComposerPane.svelte create mode 100644 src/app/views/ConcurrencyPane.svelte create mode 100644 src/app/views/ExtensionsPane.svelte create mode 100644 src/app/views/HeartbeatPane.svelte create mode 100644 src/app/views/LspPane.svelte create mode 100644 src/app/views/McpPane.svelte create mode 100644 src/app/views/MessageQueuePane.svelte create mode 100644 src/app/views/ModelPane.svelte create mode 100644 src/app/views/NamedAgentsPane.svelte create mode 100644 src/app/views/SettingsPane.svelte create mode 100644 src/app/views/SystemPromptPane.svelte create mode 100644 src/app/views/TabsPane.svelte create mode 100644 src/app/views/TasksPane.svelte create mode 100644 src/app/views/VisionPane.svelte (limited to 'src/app/views') diff --git a/src/app/views/CacheWarmingPane.svelte b/src/app/views/CacheWarmingPane.svelte new file mode 100644 index 0000000..d1d9b43 --- /dev/null +++ b/src/app/views/CacheWarmingPane.svelte @@ -0,0 +1,37 @@ + + +{#key store.activeConversationId} + store.invoke(msg.surfaceId, msg.actionId, msg.payload)} + {warmNow} + /> +{/key} diff --git a/src/app/views/ChatPane.svelte b/src/app/views/ChatPane.svelte new file mode 100644 index 0000000..1c04b9f --- /dev/null +++ b/src/app/views/ChatPane.svelte @@ -0,0 +1,91 @@ + + +
+
+
+ {#key store.activeConversationId} + + {/key} +
+
+ {#if store.activeChat.chunks.length === 0} + + {/if} + smartScroll.resume()} /> +
diff --git a/src/app/views/CompactionPane.svelte b/src/app/views/CompactionPane.svelte new file mode 100644 index 0000000..ff31f0b --- /dev/null +++ b/src/app/views/CompactionPane.svelte @@ -0,0 +1,48 @@ + + +{#key store.currentConversationId} + +{/key} diff --git a/src/app/views/ComposerPane.svelte b/src/app/views/ComposerPane.svelte new file mode 100644 index 0000000..dcd5b47 --- /dev/null +++ b/src/app/views/ComposerPane.svelte @@ -0,0 +1,35 @@ + + + store.send(text, images)} + onQueue={(text) => store.queueMessage(text)} + onStop={() => store.stopGeneration()} + contextSize={store.activeChat.currentContextSize} + contextWindow={store.modelInfo[store.activeModel]?.contextWindow} + status={composerStatus} +/> diff --git a/src/app/views/ConcurrencyPane.svelte b/src/app/views/ConcurrencyPane.svelte new file mode 100644 index 0000000..d04307f --- /dev/null +++ b/src/app/views/ConcurrencyPane.svelte @@ -0,0 +1,39 @@ + + + diff --git a/src/app/views/ExtensionsPane.svelte b/src/app/views/ExtensionsPane.svelte new file mode 100644 index 0000000..7a2343e --- /dev/null +++ b/src/app/views/ExtensionsPane.svelte @@ -0,0 +1,78 @@ + + +
+

Frontend modules

+ + +
+

Surfaces

+ {#each store.surfaces.filter((s) => s.id !== CACHE_WARMING_ID && s.id !== MESSAGE_QUEUE_ID && s.id !== TODO_ID) as spec (spec.id)} + store.invoke(msg.surfaceId, msg.actionId, msg.payload)} + /> + {/each} +
diff --git a/src/app/views/HeartbeatPane.svelte b/src/app/views/HeartbeatPane.svelte new file mode 100644 index 0000000..1bb2e86 --- /dev/null +++ b/src/app/views/HeartbeatPane.svelte @@ -0,0 +1,56 @@ + + + store.loadSystemPromptVariables()} + loadDefaultPrompt={() => store.loadSystemPrompt()} + loadNextRun={loadHeartbeatNextRun} + onOpenRun={(run) => ports.openHeartbeatRun(run)} +/> diff --git a/src/app/views/LspPane.svelte b/src/app/views/LspPane.svelte new file mode 100644 index 0000000..5645ace --- /dev/null +++ b/src/app/views/LspPane.svelte @@ -0,0 +1,24 @@ + + +{#key store.currentConversationId} + +{/key} diff --git a/src/app/views/McpPane.svelte b/src/app/views/McpPane.svelte new file mode 100644 index 0000000..82e139d --- /dev/null +++ b/src/app/views/McpPane.svelte @@ -0,0 +1,24 @@ + + +{#key store.currentConversationId} + +{/key} diff --git a/src/app/views/MessageQueuePane.svelte b/src/app/views/MessageQueuePane.svelte new file mode 100644 index 0000000..46b9a22 --- /dev/null +++ b/src/app/views/MessageQueuePane.svelte @@ -0,0 +1,40 @@ + + +{#if hasQueuedMessages && messageQueueSpec !== null} +
+ store.invoke(msg.surfaceId, msg.actionId, msg.payload)} + onCancelQueuedMessage={(messageId) => store.cancelQueuedMessage(messageId)} + /> +
+{/if} diff --git a/src/app/views/ModelPane.svelte b/src/app/views/ModelPane.svelte new file mode 100644 index 0000000..0344e47 --- /dev/null +++ b/src/app/views/ModelPane.svelte @@ -0,0 +1,131 @@ + + +
+ + {#key store.currentConversationId} + + + + {/key} +
diff --git a/src/app/views/NamedAgentsPane.svelte b/src/app/views/NamedAgentsPane.svelte new file mode 100644 index 0000000..413141a --- /dev/null +++ b/src/app/views/NamedAgentsPane.svelte @@ -0,0 +1,25 @@ + + + diff --git a/src/app/views/SettingsPane.svelte b/src/app/views/SettingsPane.svelte new file mode 100644 index 0000000..67a88ec --- /dev/null +++ b/src/app/views/SettingsPane.svelte @@ -0,0 +1,34 @@ + + +
+ +
diff --git a/src/app/views/SystemPromptPane.svelte b/src/app/views/SystemPromptPane.svelte new file mode 100644 index 0000000..0fb5a11 --- /dev/null +++ b/src/app/views/SystemPromptPane.svelte @@ -0,0 +1,21 @@ + + +
+

+ Edit the global system prompt template with variable placeholders. Opens a full-page editor. +

+ +
diff --git a/src/app/views/TabsPane.svelte b/src/app/views/TabsPane.svelte new file mode 100644 index 0000000..f87b086 --- /dev/null +++ b/src/app/views/TabsPane.svelte @@ -0,0 +1,24 @@ + + +{#key store.activeWorkspaceId} + store.conversationStatus(id)} + onSelect={(id) => store.selectTab(id)} + onClose={(id) => store.closeTab(id)} + onNewDraft={() => store.newDraft()} + onRename={(id, title) => store.renameTab(id, title)} + /> +{/key} diff --git a/src/app/views/TasksPane.svelte b/src/app/views/TasksPane.svelte new file mode 100644 index 0000000..6a375b3 --- /dev/null +++ b/src/app/views/TasksPane.svelte @@ -0,0 +1,29 @@ + + +{#key store.activeConversationId} + +{/key} diff --git a/src/app/views/VisionPane.svelte b/src/app/views/VisionPane.svelte new file mode 100644 index 0000000..5d53545 --- /dev/null +++ b/src/app/views/VisionPane.svelte @@ -0,0 +1,45 @@ + + + -- cgit v1.2.3