From 60029f18638381812537f0e8f3a1ae95384d8de8 Mon Sep 17 00:00:00 2001 From: Nico Date: Thu, 2 Apr 2026 23:00:49 +0200 Subject: [PATCH] Add ContentLayout with auto-direction + Dashboard/Files/Artifacts panes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ContentLayout: ResizeObserver-based row/col direction (flips at 1.5× aspect ratio), flex weights 40/40/10 for chat/dashboard/thin, files+artifacts share thin slot - DashboardPane: placeholder page (agent artifacts will render here) - FilesPane / ArtifactsPane: dummy panels with vertical/horizontal orientation toggle - usePanels: replace 'workspace' PaneId with 'dashboard' | 'files' | 'artifacts' - AgentsView: wire ContentLayout, remove WorkspacePane, clean up pane-layout styles - AppToolbar: replace workspace toggle with dashboard/files/artifacts buttons Co-Authored-By: Claude Sonnet 4.6 --- src/components/AppToolbar.vue | 28 ++++++-- src/components/ArtifactsPane.vue | 115 +++++++++++++++++++++++++++++++ src/components/ContentLayout.vue | 111 +++++++++++++++++++++++++++++ src/components/DashboardPane.vue | 44 ++++++++++++ src/components/FilesPane.vue | 115 +++++++++++++++++++++++++++++++ src/composables/usePanels.ts | 14 ++-- src/views/AgentsView.vue | 71 ++++++++++--------- 7 files changed, 455 insertions(+), 43 deletions(-) create mode 100644 src/components/ArtifactsPane.vue create mode 100644 src/components/ContentLayout.vue create mode 100644 src/components/DashboardPane.vue create mode 100644 src/components/FilesPane.vue diff --git a/src/components/AppToolbar.vue b/src/components/AppToolbar.vue index 74efdcf..e71a0f1 100644 --- a/src/components/AppToolbar.vue +++ b/src/components/AppToolbar.vue @@ -8,7 +8,7 @@
- + + +
@@ -102,7 +118,7 @@ + + diff --git a/src/components/ContentLayout.vue b/src/components/ContentLayout.vue new file mode 100644 index 0000000..4d4e65f --- /dev/null +++ b/src/components/ContentLayout.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/src/components/DashboardPane.vue b/src/components/DashboardPane.vue new file mode 100644 index 0000000..99f1e61 --- /dev/null +++ b/src/components/DashboardPane.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/src/components/FilesPane.vue b/src/components/FilesPane.vue new file mode 100644 index 0000000..11e0660 --- /dev/null +++ b/src/components/FilesPane.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/src/composables/usePanels.ts b/src/composables/usePanels.ts index 9614c47..e27fb96 100644 --- a/src/composables/usePanels.ts +++ b/src/composables/usePanels.ts @@ -15,7 +15,7 @@ import { ref, computed, type Component } from 'vue'; import tenant from '../tenant'; // Top-level panes (columns) -export type PaneId = 'chat' | 'workspace'; +export type PaneId = 'chat' | 'dashboard' | 'files' | 'artifacts'; // Debug panels (stacked inside the debug column) export type PanelId = 'graph' | 'trace' | 'nodes' | 'awareness'; export type PanelLocation = 'side' | 'bottom'; @@ -77,7 +77,7 @@ function saveSet(key: string, ids: Set) { // Module-level state (survives HMR) const openPanelIds = ref>(loadSet(PANELS_KEY, [])); -const openPaneIds = ref>(loadSet(PANES_KEY, ['chat'])); +const openPaneIds = ref>(loadSet(PANES_KEY, ['chat', 'dashboard'])); export function usePanels() { // Current role @@ -108,8 +108,10 @@ export function usePanels() { const hasDebugColumn = hasSidePanels; // Pane state - const isChatOpen = computed(() => openPaneIds.value.has('chat')); - const isWorkspaceOpen = computed(() => openPaneIds.value.has('workspace')); + const isChatOpen = computed(() => openPaneIds.value.has('chat')); + const isDashboardOpen = computed(() => openPaneIds.value.has('dashboard')); + const isFilesOpen = computed(() => openPaneIds.value.has('files')); + const isArtifactsOpen = computed(() => openPaneIds.value.has('artifacts')); function togglePanel(id: PanelId) { const next = new Set(openPanelIds.value); @@ -158,7 +160,9 @@ export function usePanels() { openPanelIds, // Top-level panes isChatOpen, - isWorkspaceOpen, + isDashboardOpen, + isFilesOpen, + isArtifactsOpen, togglePane, isPaneOpen, openPaneIds, diff --git a/src/views/AgentsView.vue b/src/views/AgentsView.vue index 267dc59..552aaa1 100644 --- a/src/views/AgentsView.vue +++ b/src/views/AgentsView.vue @@ -24,33 +24,39 @@
- +
- - - - + + + + + + + - + {