feat(vscode): add full chat interface to OpenClaude extension (#608)
Add a Claude Code-like chat experience to the VS Code extension with: - Streaming chat panel (sidebar + editor tab) with markdown rendering - Tool use visualization with inline diffs (replace/with display) - Session history browser with JSONL transcript parsing - Thinking block indicator with elapsed time and token count - Clickable file paths that open in the editor - Permission mode setting (acceptEdits default) - Multi-turn conversation support via NDJSON stream-json protocol - Status bar with live activity indicators - Ctrl+Shift+L keybinding to open chat panel Made-with: Cursor Co-authored-by: henriquepasquini2 <henriquepasquini2@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
77083d769b
commit
fbcd928f7f
@@ -2,7 +2,7 @@
|
||||
"name": "openclaude-vscode",
|
||||
"displayName": "OpenClaude",
|
||||
"description": "Practical VS Code companion for OpenClaude with project-aware launch behavior and a real Control Center.",
|
||||
"version": "0.1.1",
|
||||
"version": "0.2.0",
|
||||
"publisher": "devnull-bootloader",
|
||||
"engines": {
|
||||
"vscode": "^1.95.0"
|
||||
@@ -19,7 +19,12 @@
|
||||
"onCommand:openclaude.openSetupDocs",
|
||||
"onCommand:openclaude.openWorkspaceProfile",
|
||||
"onCommand:openclaude.openControlCenter",
|
||||
"onView:openclaude.controlCenter"
|
||||
"onCommand:openclaude.newChat",
|
||||
"onCommand:openclaude.openChat",
|
||||
"onCommand:openclaude.resumeSession",
|
||||
"onCommand:openclaude.abortChat",
|
||||
"onView:openclaude.controlCenter",
|
||||
"onView:openclaude.chat"
|
||||
],
|
||||
"main": "./src/extension.js",
|
||||
"files": [
|
||||
@@ -28,6 +33,7 @@
|
||||
"src/extension.js",
|
||||
"src/presentation.js",
|
||||
"src/state.js",
|
||||
"src/chat/**",
|
||||
"themes/**"
|
||||
],
|
||||
"contributes": {
|
||||
@@ -61,6 +67,26 @@
|
||||
"command": "openclaude.openControlCenter",
|
||||
"title": "OpenClaude: Open Control Center",
|
||||
"category": "OpenClaude"
|
||||
},
|
||||
{
|
||||
"command": "openclaude.newChat",
|
||||
"title": "OpenClaude: New Chat",
|
||||
"category": "OpenClaude"
|
||||
},
|
||||
{
|
||||
"command": "openclaude.openChat",
|
||||
"title": "OpenClaude: Open Chat Panel",
|
||||
"category": "OpenClaude"
|
||||
},
|
||||
{
|
||||
"command": "openclaude.resumeSession",
|
||||
"title": "OpenClaude: Resume Session",
|
||||
"category": "OpenClaude"
|
||||
},
|
||||
{
|
||||
"command": "openclaude.abortChat",
|
||||
"title": "OpenClaude: Abort Generation",
|
||||
"category": "OpenClaude"
|
||||
}
|
||||
],
|
||||
"viewsContainers": {
|
||||
@@ -74,6 +100,11 @@
|
||||
},
|
||||
"views": {
|
||||
"openclaude": [
|
||||
{
|
||||
"id": "openclaude.chat",
|
||||
"name": "Chat",
|
||||
"type": "webview"
|
||||
},
|
||||
{
|
||||
"id": "openclaude.controlCenter",
|
||||
"name": "Control Center",
|
||||
@@ -81,6 +112,13 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"keybindings": [
|
||||
{
|
||||
"command": "openclaude.openChat",
|
||||
"key": "ctrl+shift+l",
|
||||
"mac": "cmd+shift+l"
|
||||
}
|
||||
],
|
||||
"configuration": {
|
||||
"title": "OpenClaude",
|
||||
"properties": {
|
||||
@@ -98,6 +136,18 @@
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Optionally set CLAUDE_CODE_USE_OPENAI=1 in launched OpenClaude terminals."
|
||||
},
|
||||
"openclaude.permissionMode": {
|
||||
"type": "string",
|
||||
"default": "acceptEdits",
|
||||
"enum": ["default", "acceptEdits", "bypassPermissions", "plan"],
|
||||
"enumDescriptions": [
|
||||
"Prompt for permission on each tool use (requires manual approval)",
|
||||
"Auto-approve file edits, prompt for other operations (recommended)",
|
||||
"Auto-approve all operations without prompting",
|
||||
"Read-only mode — no file modifications allowed"
|
||||
],
|
||||
"description": "Permission mode for chat sessions. Controls which tool operations are auto-approved."
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -111,7 +161,7 @@
|
||||
},
|
||||
"scripts": {
|
||||
"test": "node --test ./src/*.test.js",
|
||||
"lint": "node -e \"for (const file of require('node:fs').readdirSync('./src')) { if (file.endsWith('.js')) { require('node:child_process').execFileSync(process.execPath, ['--check', require('node:path').join('src', file)], { stdio: 'inherit' }); } }\"",
|
||||
"lint": "node scripts/lint.js",
|
||||
"package": "npx @vscode/vsce package --no-dependencies"
|
||||
},
|
||||
"keywords": [
|
||||
|
||||
Reference in New Issue
Block a user