From be868e817219bc1ea8c0f4028f3d1655dd5c4110 Mon Sep 17 00:00:00 2001 From: Vantz Stockwell Date: Tue, 17 Mar 2026 09:03:33 -0400 Subject: [PATCH] =?UTF-8?q?feat:=20AI=20copilot=20panel=20=E2=80=94=20chat?= =?UTF-8?q?=20UI=20with=20streaming,=20tool=20visualization,=20OAuth=20set?= =?UTF-8?q?tings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add the XO copilot right-side panel with: - Pinia store (copilot.store.ts) managing panel state, messages, streaming, and token tracking - useCopilot composable with mock streaming (30-100ms/word) and context-aware responses - CopilotPanel: 320px collapsible panel with header, scrollable message list, and input area - CopilotMessage: markdown rendering (bold, code, lists) with streaming cursor animation - CopilotToolViz: color-coded tool call cards (green=terminal, yellow=SFTP, blue=RDP) with pending spinner, done checkmark, expandable input/result JSON - CopilotSettings: model selector, token usage, clear history, connect/disconnect - MainLayout integration: ghost icon toggle in toolbar, Ctrl+Shift+K shortcut, CSS slide transition, content area resizes (not overlay) All Wails AIService bindings are TODOs with mock behavior. Pure Tailwind CSS, no external markdown library. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../src/components/copilot/CopilotMessage.vue | 117 +++++++++ .../src/components/copilot/CopilotPanel.vue | 237 ++++++++++++++++++ .../components/copilot/CopilotSettings.vue | 137 ++++++++++ .../src/components/copilot/CopilotToolViz.vue | 130 ++++++++++ frontend/src/composables/useCopilot.ts | 177 +++++++++++++ frontend/src/layouts/MainLayout.vue | 48 ++++ frontend/src/stores/copilot.store.ts | 182 ++++++++++++++ 7 files changed, 1028 insertions(+) create mode 100644 frontend/src/components/copilot/CopilotMessage.vue create mode 100644 frontend/src/components/copilot/CopilotPanel.vue create mode 100644 frontend/src/components/copilot/CopilotSettings.vue create mode 100644 frontend/src/components/copilot/CopilotToolViz.vue create mode 100644 frontend/src/composables/useCopilot.ts create mode 100644 frontend/src/stores/copilot.store.ts diff --git a/frontend/src/components/copilot/CopilotMessage.vue b/frontend/src/components/copilot/CopilotMessage.vue new file mode 100644 index 0000000..9fdf9bc --- /dev/null +++ b/frontend/src/components/copilot/CopilotMessage.vue @@ -0,0 +1,117 @@ + + + + + diff --git a/frontend/src/components/copilot/CopilotPanel.vue b/frontend/src/components/copilot/CopilotPanel.vue new file mode 100644 index 0000000..70c9fae --- /dev/null +++ b/frontend/src/components/copilot/CopilotPanel.vue @@ -0,0 +1,237 @@ +