Releases: Lexus2016/claude-code-studio
Claude Code Studio v5.39.2
What's Changed
- chore: release v5.39.2
- fix: forum mode cross-project context leak and keyboard button handling
Installation
# Run latest version directly
npx github:Lexus2016/claude-code-studio
# Or install globally
npm install -g github:Lexus2016/claude-code-studio
claude-code-studioOpen http://localhost:3000 in your browser
v5.39.1
Fix
- Telegram bot crash on startup —
BOT_I18N.enlocale usedthis._t()for 3 keys (fm_btn_last5,fm_btn_full,fm_btn_open_chat) in an object literal wherethisis not a class instance, causingTypeError: this._t is not a functionat module load. Replaced with literal English strings.
Claude Code Studio v5.39.0
What's Changed
- chore: release v5.39.0
- feat: Telegram Write button, localized forum buttons, file attachments, UI race fixes
Installation
# Run latest version directly
npx github:Lexus2016/claude-code-studio
# Or install globally
npm install -g github:Lexus2016/claude-code-studio
claude-code-studioOpen http://localhost:3000 in your browser
v5.38.1 — Toast Notification Polish
Toast Notification Polish
Minor UI fix for toast notifications.
What changed
- Repositioned from
bottom: 22pxto96px— no longer hidden behind the bottom action bar - Slide-up animation — toasts now smoothly slide in from below instead of a simple fade
- Higher z-index (
10000) — guaranteed to render above all overlays and modals - Enhanced visuals — accent border color, deeper shadow (
0 4px 24px), slightly bolder text
Full Changelog: v5.38.0...v5.38.1
v5.38.0 — Telegram Rich Actions & Deep-Link Navigation
Telegram Rich Actions & Deep-Link Navigation
A major Telegram UX overhaul that turns every message into an interactive control panel. No more typing commands — just tap buttons.
Rich Inline Action Buttons
Every completion, error, full-message view, and history display now shows context-aware action buttons:
Forum Mode (2 rows):
| Row | Buttons |
|---|---|
| Primary | 💬 Continue · 📄 Full · 📋 Diff |
| Navigation | 📁 Files · 📜 History · 🆕 New |
Private Chat:
| Row | Buttons |
|---|---|
| Actions | 💬 Continue · 📄 Full · 🏠 Menu |
Error messages now include Continue + History buttons alongside Retry, so you're never stranded after a failure.
Deep-Link Topic Navigation
Forum topics now use Telegram URL buttons (t.me/c/ID/THREAD_ID) for cross-topic navigation. Click "Go to project" in the Activity topic → Telegram instantly navigates you to the project thread. No more manual scrolling through topics.
New Forum Actions
| Action | What it does |
|---|---|
fm:compose |
Opens compose prompt in current topic |
fm:diff |
Shows git diff for the project |
fm:files |
Lists project directory |
fm:stop |
Stops running task |
fm:info |
Shows project info |
Auto-Create Project Topics
Switching to a session whose project topic doesn't exist? It's automatically created instead of showing an error. Seamless experience for new projects.
WebSocket Queue Race Fix
Fixed a race condition where page refresh could lose the message queue. When a WebSocket closes, non-empty queues now get a 30-second grace period before cleanup. If the browser reconnects within that window, the queue is preserved intact.
HTML Parse Error Resilience
If Telegram rejects HTML formatting, messages are automatically retried with tags stripped — ensuring delivery even with malformed markup.
Full Changelog: v5.37.0...v5.38.0
v5.37.0 — Internal Cleanup & Attachment Optimization
Internal Cleanup & Attachment Optimization
A housekeeping release that simplifies the codebase, removes unused dependencies, and optimizes how file attachments are processed.
What changed
Text attachment optimization — Text files attached to messages are now passed as file blocks (same pipeline as images) instead of being base64-decoded and inlined into the prompt. Claude CLI saves them to temp files and reads via its Read tool. This keeps prompts compact and avoids command-line length limits on Windows.
Removed engine column — The engine parameter was removed from session creation across all call sites (~10 locations in server.js). The column was no longer used since the CLI is the only execution engine.
Dropped @anthropic-ai/claude-code SDK — Removed from package.json dependencies. The project spawns the Claude CLI directly and doesn't use the SDK. This eliminates ~350 lines from package-lock.json and speeds up npm install.
Generic attachment label — "Attached images" renamed to "Attached files" in claude-cli.js since attachments can be any file type, not just images.
Details
| File | Change |
|---|---|
server.js |
Remove engine param from createSession INSERT + all 10 call sites; refactor buildAttachmentContentBlocks for text files |
claude-cli.js |
"Attached images" → "Attached files" |
package.json |
Remove @anthropic-ai/claude-code dependency |
package-lock.json |
−355 lines (SDK tree removed) |
Full Changelog: v5.36.0...v5.37.0
v5.36.0 — LLM Proxy, Docker Security & Project UX
LLM Proxy/Gateway, Docker Security & Project UX
Three improvements that make Claude Code Studio more enterprise-friendly and easier to use.
LLM Proxy/Gateway Support
Route all API traffic through your corporate LLM gateway — LiteLLM, Bifrost, OpenRouter, or any OpenAI-compatible proxy. Set ANTHROPIC_BASE_URL and the SDK engine will use your proxy while preserving authentication.
ANTHROPIC_BASE_URL=https://llm-proxy.company.com
ANTHROPIC_API_KEY=your-proxy-keyPerfect for teams that need centralized billing, rate limiting, model routing, or audit logging across all LLM usage.
Docker Non-Root Container (fixes #14)
The container now runs as node (uid 1000) instead of root. Claude CLI rejects --dangerously-skip-permissions under root, which previously broke Docker deployments. Now works out of the box with proper file ownership.
Add Project — Direct Path Input & Folder Filter
The "Add Project" modal now includes:
- Editable path input — type or paste a path directly, hit Enter or click "Go" to navigate
- Real-time folder filter — instantly find folders by name substring, no more scrolling through long directory listings
What changed
| File | Change |
|---|---|
claude-cli.js |
Preserve ANTHROPIC_API_KEY when ANTHROPIC_BASE_URL is set |
Dockerfile |
Switch to node user (uid 1000), chown writable dirs |
docker-compose.yml |
Pass ANTHROPIC_BASE_URL, ANTHROPIC_AUTH_TOKEN, CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS |
.env.example |
Document proxy env vars |
public/index.html |
Path input field, folder filter, Go button, i18n |
| READMEs | Updated env vars + feature tables (EN/UA/RU) |
Full Changelog: v5.35.0...v5.36.0
v5.35.0 — Docker Registry Mirror
Docker Registry Mirror Support
Enterprise teams can now pull the base Docker image from private registries — Artifactory, Nexus, Harbor, or any OCI-compliant mirror — by setting a single environment variable.
Usage
# Standard (Docker Hub)
docker compose up -d --build
# Private registry
MIRROR=my-registry.company.com docker compose up -d --buildWhy it matters
Corporate networks often block Docker Hub or require all images to flow through an approved registry. Previously, users had to manually edit the Dockerfile. Now it's a one-liner — no file modifications needed, fully backward-compatible.
What changed
Dockerfile: parameterizedFROMviaARG BASE_IMAGE=node:20-bookwormdocker-compose.yml:BASE_IMAGEbuild arg with${MIRROR:+${MIRROR}/}prefix expansion- README docs updated across all 3 languages (EN/UA/RU)
Closes #13
Full Changelog: v5.34.0...v5.35.0
v5.34.0 — Session Compact
Session Compact — Summarize & Continue
Hit Compact & New in the session bar to compress the current conversation via Haiku and continue in a fresh session — all context preserved, zero token waste.
What's new
- Session Compact — new API endpoint
POST /api/sessions/:id/compactuses Haiku to summarize the entire conversation into a structured context block, then creates a new session with that summary as the first message. Perfect for long-running sessions that hit context limits. - Compact & New button — appears in the session bar alongside existing controls. One click: summarize → open new tab with fresh session containing full context.
- Queue editor UX — expanded editing mode with larger editor area, improved button styling, and better visual hierarchy when editing task descriptions on the Kanban board.
Technical details
- Haiku summarization with ~80K character transcript cap
- New session inherits project directory, MCP servers, skills, model, and engine settings
- i18n support for compact feature across all 3 languages (EN/UA/RU)
- 171 lines added across
server.jsandpublic/index.html
Full Changelog: v5.33.0...v5.34.0
v5.33.0 — Zero Compilation: node:sqlite on Node 22.5+
Zero Native Compilation on Node.js 22.5+
The single biggest installation friction — native C++ compilation of better-sqlite3 — is now eliminated for Node.js 22.5+ users.
How it works
New db-adapter.js detects your Node.js version at startup:
| Node.js version | SQLite backend | Build tools needed? |
|---|---|---|
| 22.5+ | Built-in node:sqlite (DatabaseSync) |
No — just npm install |
| 18.0 – 22.4 | better-sqlite3 (unchanged) |
Yes — Python, make, g++/MSVC |
Why this matters:
- Windows users: no more Visual Studio Build Tools headaches
- Docker: smaller images, faster builds — no
python3,make,g++layer - CI/CD: cleaner pipelines with no native addon compilation
- npx:
npx github:Lexus2016/claude-code-studiojust works on Node 22.5+ — zero setup
better-sqlite3 moved from dependencies to optionalDependencies — it's only installed and compiled when Node.js < 22.5.
The adapter provides a unified API with shims for db.pragma() and db.transaction() so the rest of the codebase is unchanged.
Clipboard Image Copy Fix
Fixed NotAllowedError when copying images to clipboard in the web UI.
Root cause: fetch() to load the image introduced an async delay, causing the clipboard.write() call to happen outside the browser's user gesture window.
Fix: Pass Promise<Blob> directly to ClipboardItem — the browser resolves it lazily while the clipboard.write() call itself stays synchronous within the gesture. Also auto-converts all image formats (JPEG, WebP, GIF, SVG) to PNG via offscreen canvas for cross-browser compatibility.
Stats
- New file:
db-adapter.js(121 lines) server.js: 10 lines removed (pragma setup moved to adapter)public/index.html: clipboard copy rewritten (34 lines)package.json:better-sqlite3→optionalDependencies- README updated (en/ua/ru) with Node.js 22.5+ note
Upgrade
npx github:Lexus2016/claude-code-studio@latest