Files
openchamber/packages/vscode/package.json
T
Nelson Pires 2ed1a73d3c Add new mobile chat controls (#247)
* chore: upgrade @opencode-ai/sdk to 1.1.40

* chore(ui): bump @opencode-ai/sdk to 1.1.40

* feat(chat): add mobile controls drawer and panel switching

Add mobile-only controls drawer with open/close and panel switching
Introduce state and handlers for mobile controls and panels
Reset mobile UI state when switching to non-mobile or returning to unified controls

* feat: add mobile chat controls utilities

Add utilities to compute and display the selected agent and model names in mobile chat controls.
Add effort variant formatting, serialization, parsing, and ranking helpers for quick options.
Expose helpers to build quick effort option lists for the UI

* feat(ModelControls): allow external mobile panel control

Initialize mobile panel state from external props when provided
Fall back to internal mobile panel state when external control is absent
Notify parent on panel changes via onMobilePanelChange callback

* feat(chat): add StatusChip component

Add StatusChip button that displays agent, model, and effort
Show marquee animation when the label is truncated
Bind to config and session stores to reflect current context

* feat: add UnifiedControlsDrawer chat controls

Add a side panel to switch agent, model, and effort quickly
Show recent agents and models for faster reselect
Persist agent/model/variant selections in session

* fix(openchamber): correct base64 to Uint8Array typing

* feat: add reduced-motion support for marquee animations

Add marquee-text--auto to enable continuous scrolling
Introduce prefers-reduced-motion media query to disable animations
Apply reduced-motion rules to active marquee and hover states

* feat[worktrees]: enhance sdk worktree removal with fallbacks

Add dynamic resolution of remove/delete/archive methods for worktrees
Fallback to delete or archive when remove is not available
Throw clear error when SDK version does not support worktree removal

* feat(ui): track recent agents and efforts in UI store

Add recentAgents array to UI state for quick access
Track up to 5 variants per provider/model in recentEfforts
Expose addRecentAgent and addRecentEffort actions to update history

* fix(deps): upgrade @opencode-ai/sdk to 1.1.42

Upgrade the OpenCode AI SDK to 1.1.42 across packages
Refresh lockfile entries to reflect the new SDK version and integrity hash
Ensure downstream packages consume the latest SDK and remain compatible

* refactor: simplify agent overflow logic in UnifiedControlsDrawer
2026-01-30 11:13:37 +02:00

235 lines
6.2 KiB
JSON

{
"name": "openchamber",
"displayName": "OpenChamber",
"description": "AI coding assistant powered by OpenCode",
"version": "1.6.0",
"publisher": "fedaykindev",
"private": true,
"repository": {
"type": "git",
"url": "https://github.com/btriapitsyn/openchamber.git"
},
"qna": "https://discord.gg/ZYRSdnwwKA",
"license": "MIT",
"engines": {
"vscode": "^1.85.0"
},
"categories": [
"Programming Languages",
"Machine Learning",
"Other"
],
"keywords": [
"ai",
"claude",
"gpt",
"agent",
"coding",
"chatgpt",
"groq",
"assistant",
"opencode",
"openchamber"
],
"icon": "assets/app-icon.png",
"main": "./dist/extension.js",
"activationEvents": [
"onCommand:openchamber.openSidebar",
"onView:openchamber.chatView"
],
"contributes": {
"viewsContainers": {
"activitybar": [
{
"id": "openchamber",
"title": "OpenChamber",
"icon": "assets/icon.svg"
}
]
},
"views": {
"openchamber": [
{
"type": "webview",
"id": "openchamber.chatView",
"name": "Chat"
}
]
},
"commands": [
{
"command": "openchamber.openSidebar",
"category": "OpenChamber",
"title": "Open Sidebar",
"icon": {
"light": "assets/icon.svg",
"dark": "assets/icon-titlebar.svg"
}
},
{
"command": "openchamber.focusChat",
"category": "OpenChamber",
"title": "Focus Chat"
},
{
"command": "openchamber.restartApi",
"category": "OpenChamber",
"title": "Restart API Connection"
},
{
"command": "openchamber.showOpenCodeStatus",
"category": "OpenChamber",
"title": "Show OpenCode Status"
},
{
"command": "openchamber.openAgentManager",
"category": "OpenChamber",
"title": "Open Agent Manager",
"icon": "$(circuit-board)"
},
{
"command": "openchamber.openActiveSessionInEditor",
"category": "OpenChamber",
"title": "Open Active Session in Editor",
"icon": "$(link-external)"
},
{
"command": "openchamber.openNewSessionInEditor",
"category": "OpenChamber",
"title": "Open New Session in Editor",
"icon": {
"light": "assets/icon.svg",
"dark": "assets/icon-titlebar.svg"
}
},
{
"command": "openchamber.openCurrentOrNewSessionInEditor",
"category": "OpenChamber",
"title": "Open Session in Editor",
"icon": "$(link-external)"
},
{
"command": "openchamber.addToContext",
"category": "OpenChamber",
"title": "Add to Context"
},
{
"command": "openchamber.explain",
"category": "OpenChamber",
"title": "Explain"
},
{
"command": "openchamber.improveCode",
"category": "OpenChamber",
"title": "Improve Code"
},
{
"command": "openchamber.newSession",
"category": "OpenChamber",
"title": "New Session",
"icon": "$(add)"
},
{
"command": "openchamber.showSettings",
"category": "OpenChamber",
"title": "Settings",
"icon": "$(settings-gear)"
}
],
"submenus": [
{
"id": "openchamber.submenu",
"label": "OpenChamber"
}
],
"menus": {
"editor/context": [
{
"submenu": "openchamber.submenu",
"group": "navigation"
}
],
"editor/title": [
{
"command": "openchamber.openNewSessionInEditor",
"group": "navigation@1"
}
],
"view/title": [
{
"command": "openchamber.newSession",
"when": "view == openchamber.chatView",
"group": "navigation@1"
},
{
"command": "openchamber.openCurrentOrNewSessionInEditor",
"when": "view == openchamber.chatView",
"group": "navigation@2"
},
{
"command": "openchamber.openAgentManager",
"when": "view == openchamber.chatView",
"group": "navigation@3"
},
{
"command": "openchamber.showSettings",
"when": "view == openchamber.chatView",
"group": "navigation@4"
}
],
"openchamber.submenu": [
{
"command": "openchamber.explain"
},
{
"command": "openchamber.improveCode"
},
{
"command": "openchamber.addToContext"
}
]
},
"configuration": {
"title": "OpenChamber",
"properties": {
"openchamber.apiUrl": {
"type": "string",
"default": "",
"description": "URL of an external OpenCode API server. Leave empty to auto-start a local instance."
}
}
}
},
"scripts": {
"vscode:prepublish": "bun run build",
"build": "bun run build:extension && bun run build:webview",
"build:extension": "esbuild src/extension.ts --bundle --outfile=dist/extension.js --external:vscode --format=cjs --platform=node --minify --main-fields=module,main",
"build:webview": "VITE_OPENCODE_URL=/api vite build",
"dev": "concurrently -n \"ext,web\" -c \"cyan,magenta\" \"bun run watch:extension\" \"bun run watch:webview\"",
"watch:extension": "esbuild src/extension.ts --bundle --outfile=dist/extension.js --external:vscode --format=cjs --platform=node --watch --sourcemap --main-fields=module,main",
"watch:webview": "vite build --watch",
"type-check": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.webview.json",
"lint": "bunx eslint --ext .ts,.tsx src webview",
"package": "vsce package --no-dependencies"
},
"devDependencies": {
"@types/adm-zip": "^0.5.7",
"@types/vscode": "^1.85.0",
"@vitejs/plugin-react": "^5.0.0",
"@vscode/vsce": "^3.2.1",
"concurrently": "^9.2.1",
"esbuild": "^0.24.2",
"typescript": "~5.8.3",
"vite": "^7.1.2"
},
"dependencies": {
"@openchamber/ui": "workspace:*",
"@opencode-ai/sdk": "^1.1.40",
"adm-zip": "^0.5.16",
"jsonc-parser": "^3.3.1",
"react": "^19.1.1",
"react-dom": "^19.1.1",
"yaml": "^2.8.1"
}
}