From 6aaa07e2369f60143ca599759d1673c0862ccb33 Mon Sep 17 00:00:00 2001 From: Jozi Gila Date: Tue, 6 Jan 2026 01:03:22 +0100 Subject: [PATCH 1/6] feat: add mermaid diagram support and migrate to markstream-vue --- package.json | 3 +- src/webview/src/components/MermaidDiagram.vue | 47 +++++++++++++++++++ .../components/Messages/blocks/TextBlock.vue | 31 +++++------- .../Messages/blocks/tools/ExitPlanMode.vue | 39 ++++++++------- src/webview/src/main.ts | 9 ++++ src/webview/src/utils/themeDetector.ts | 46 ++++++++++++++++++ 6 files changed, 138 insertions(+), 37 deletions(-) create mode 100644 src/webview/src/components/MermaidDiagram.vue create mode 100644 src/webview/src/utils/themeDetector.ts diff --git a/package.json b/package.json index c9d14c8..7cc57e2 100644 --- a/package.json +++ b/package.json @@ -133,7 +133,8 @@ "fuse.js": "^7.1.0", "lexical": "^0.38.2", "lexical-vue": "^0.14.1", - "marked": "^17.0.1", + "markstream-vue": "^0.0.4", + "mermaid": "^11.6.0", "motion-v": "^1.7.4", "path-browserify-esm": "^1.0.6", "pinia": "^3.0.4", diff --git a/src/webview/src/components/MermaidDiagram.vue b/src/webview/src/components/MermaidDiagram.vue new file mode 100644 index 0000000..e5345cb --- /dev/null +++ b/src/webview/src/components/MermaidDiagram.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/src/webview/src/components/Messages/blocks/TextBlock.vue b/src/webview/src/components/Messages/blocks/TextBlock.vue index 0268ac8..7f96d30 100644 --- a/src/webview/src/components/Messages/blocks/TextBlock.vue +++ b/src/webview/src/components/Messages/blocks/TextBlock.vue @@ -1,15 +1,21 @@ From 9e85753220f3a6c3cdea8ec9dbb50f98acaf3304 Mon Sep 17 00:00:00 2001 From: Jozi Gila Date: Tue, 6 Jan 2026 10:02:31 +0100 Subject: [PATCH 4/6] fix(mermaid): increase timeouts and add theme detection for complex diagrams --- .../components/Messages/MermaidDiagram.vue | 412 +++++++++++++++--- 1 file changed, 358 insertions(+), 54 deletions(-) diff --git a/src/webview/src/components/Messages/MermaidDiagram.vue b/src/webview/src/components/Messages/MermaidDiagram.vue index 3c68256..58329e2 100644 --- a/src/webview/src/components/Messages/MermaidDiagram.vue +++ b/src/webview/src/components/Messages/MermaidDiagram.vue @@ -1,92 +1,396 @@ From eea972ce5f714f827b23f144ac17beb35eff0009 Mon Sep 17 00:00:00 2001 From: Jozi Gila Date: Thu, 8 Jan 2026 20:56:40 +0100 Subject: [PATCH 5/6] refactor: streaming architecture with useSignal pattern and mermaid ESM fix --- .gitignore | 10 + src/services/webViewService.ts | 4 +- .../components/Messages/AssistantMessage.vue | 84 +++- .../src/components/Messages/ContentBlock.vue | 17 +- .../components/Messages/MarkdownContent.vue | 16 + .../components/Messages/blocks/TextBlock.vue | 15 +- .../Messages/blocks/ThinkingBlock.vue | 21 +- src/webview/src/core/Session.ts | 64 ++- src/webview/src/core/StreamingController.ts | 476 ++++++++++++++++++ src/webview/src/models/ContentBlockWrapper.ts | 188 ++++++- src/webview/src/models/Message.ts | 214 ++++++-- src/webview/vite.config.ts | 5 + 12 files changed, 1025 insertions(+), 89 deletions(-) create mode 100644 src/webview/src/core/StreamingController.ts diff --git a/.gitignore b/.gitignore index dd3e8e8..1d90c34 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,13 @@ records/** # Documentation CLAUDE.md + +# Environment variables +.env + +# Logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +dev-debug.log diff --git a/src/services/webViewService.ts b/src/services/webViewService.ts index c19dc93..c9a9bfa 100644 --- a/src/services/webViewService.ts +++ b/src/services/webViewService.ts @@ -264,7 +264,7 @@ export class WebViewService implements IWebViewService { `img-src ${webview.cspSource} https: data:;`, `style-src ${webview.cspSource} 'unsafe-inline' https://*.vscode-cdn.net;`, `font-src ${webview.cspSource} data:;`, - `script-src ${webview.cspSource} 'nonce-${nonce}';`, + `script-src ${webview.cspSource} 'nonce-${nonce}' 'unsafe-eval' blob:;`, `connect-src ${webview.cspSource} https:;`, `worker-src ${webview.cspSource} blob:;`, ].join(' '); @@ -315,7 +315,7 @@ export class WebViewService implements IWebViewService { `img-src ${webview.cspSource} https: data:;`, `style-src ${webview.cspSource} 'unsafe-inline' ${origin} https://*.vscode-cdn.net;`, `font-src ${webview.cspSource} data: ${origin};`, - `script-src ${webview.cspSource} 'nonce-${nonce}' 'unsafe-eval' ${origin};`, + `script-src ${webview.cspSource} 'nonce-${nonce}' 'unsafe-eval' ${origin} blob:;`, `connect-src ${webview.cspSource} ${origin} ${wsUrl} https:;`, `worker-src ${webview.cspSource} blob:;`, ].join(' '); diff --git a/src/webview/src/components/Messages/AssistantMessage.vue b/src/webview/src/components/Messages/AssistantMessage.vue index a8c7166..e99fd41 100644 --- a/src/webview/src/components/Messages/AssistantMessage.vue +++ b/src/webview/src/components/Messages/AssistantMessage.vue @@ -1,5 +1,11 @@