Skip to content

Releases: Lexus2016/claude-code-studio

v5.30.0 — Forum UX: Buttons, Commands & Navigation

16 Mar 07:13

Choose a tag to compare

Forum Mode UX Overhaul

Forum Mode is now fully interactive — every action has a button, every topic has contextual help, and activity notifications double as a navigation hub.

What's New

Clickable Session Buttons

  • /history now shows inline buttons for each session — tap to switch instead of typing /session N

Contextual Forum Buttons

  • Done messages in forum topics show [📜 History] and [🆕 New] instead of the private-chat [Continue] / [Menu]
  • Error messages show [🔄 Retry] that resends the last user message automatically
  • Progress messages in forum threads show only [🛑 Stop] (no Menu — you're already in the right topic)

Expanded Task Commands

  • /todo ID — move task to "todo" status
  • /block ID — mark task as blocked
  • /backlog ID — move task to backlog
  • /delete ID — permanently remove a task
  • Previously only /done and /start were available

More Project Topic Commands

  • /cat <file> — read file contents
  • /last [n] — show last N messages
  • /full — show full last response
  • /help — contextual help for the current topic type

Activity Navigation Buttons

  • Every activity notification now has [💬 Open chat] and [📁 Project] buttons
  • [Open chat] activates the session and shows last messages in the project topic
  • [Project] navigates you directly to the project thread
  • Activity topic is now a navigation hub, not just a log

Command Normalization

  • All forum commands are now case-insensitive (/STOP, /History, /NEW all work)
  • @botname suffix stripped automatically (/connect@MyBot works)
  • Unknown commands get helpful feedback with /help suggestion

Contextual /help

  • /help in a project topic shows session & file commands
  • /help in the Tasks topic shows task lifecycle commands
  • /help in General shows forum-wide commands
  • Each topic type gets its own relevant help text

Stats

  • 228 insertions across 2 files (telegram-bot.js + server.js)
  • 3 new callback handlers: fs: (session switch), fm: (forum actions), fa: (activity navigation)
  • Full i18n for all new strings in Ukrainian, English, and Russian
  • Updated README in all 3 languages

Upgrade

npx github:Lexus2016/claude-code-studio@latest

v5.29.4 — Fix Project Topics Creation

15 Mar 21:35

Choose a tag to compare

Bug Fix

Project topics not created in Forum Mode

When /connect ran _syncProjectTopics(), it read projects.json entries looking for the path field — but the actual field name is workdir. Result: no project topics were created at all.

Fixed:

  • project?.pathproject?.workdir || project?.path (supports both for safety)
  • Project name field is now passed to _createProjectTopic() as display name — topics show the human-readable project name instead of just the directory basename
  • _createProjectTopic() accepts optional displayName parameter, falls back to directory name

Impact: Anyone who ran /connect on v5.29.0–v5.29.3 got Tasks and Activity topics but zero project topics. Running /connect again on v5.29.4 will re-sync and create the missing project topics.

Upgrade

npx github:Lexus2016/claude-code-studio@latest

v5.29.3 — Forum /connect Re-Sync

15 Mar 21:01

Choose a tag to compare

Bug Fix

/connect now re-syncs forum structure instead of refusing

Previously, running /connect in a supergroup that was already paired would simply reply "Forum is already connected" — even if topics were missing (e.g. new projects added after initial setup, or topics accidentally deleted).

Now /connect is idempotent:

  • First time: pairs the group and creates full structure (Tasks, Activity, project topics)
  • Already paired: shows "Syncing Forum — Creating missing topics..." and re-runs _createForumStructure() to fill in any gaps
  • Rollback safety: only rolls back forum_chat_id on failure if this was a fresh connection (not a re-sync)

New i18n string forum_syncing added in all 3 languages (ua/en/ru).

Upgrade

npx github:Lexus2016/claude-code-studio@latest

v5.29.2 — Telegram i18n HTML Fix

15 Mar 20:36

Choose a tag to compare

Bug Fixes

HTML entity escaping in Telegram messages

  • All angle brackets in i18n placeholder hints (e.g. <number>, <file>, <n>) are now properly escaped as &lt;...&gt; inside <code> tags
  • Previously, Telegram's HTML parse mode would silently strip these as unknown tags, showing broken hints like /project instead of /project <number>
  • Fixed across all 3 languages (Ukrainian, English, Russian) — ~27 strings total

/forum command added to help text

  • /forum now appears in the help output (/help) for all 3 languages under a new "Forum Mode" section
  • Users can discover forum setup instructions without guessing commands

Upgrade

npx github:Lexus2016/claude-code-studio@latest

v5.29.1 — Forum Mode Fixes

15 Mar 20:31

Choose a tag to compare

Bug Fixes

/connect command reliability

  • Moved /connect handling before forum routing and authorization checks — works immediately in any supergroup context
  • Strips @botname suffix (e.g. /connect@MyBot now works correctly)
  • Works in both General and topic threads

Forum structure creation ordering

  • "Connected" confirmation now sent before topic creation begins (user sees feedback instantly)
  • Cleared _currentThreadId during structure creation so Tasks/Activity topics receive their pinned messages in the correct threads (not in the /connect thread)
  • Added diagnostic logging for topic creation steps
  • Proper rollback on failure with _currentThreadId restoration via finally block

Upgrade

npx github:Lexus2016/claude-code-studio@latest

v5.29.0 — Telegram Forum Mode

15 Mar 20:01

Choose a tag to compare

Telegram Forum Mode — Your Project Dashboard Inside Telegram

Turn any Telegram supergroup into a structured project workspace. Each project gets its own topic thread. Tasks, activity, and conversations — all organized by topic.

What's New

Forum Mode (/connect in a supergroup)

  • Auto-creates Tasks, Activity, and per-project topic threads
  • Project topics: send messages to Claude in project context; /new, /history, /session N, /files, /diff, /log, /stop
  • Tasks topic: type a title to create a task; /list, /done ID, /start ID
  • Activity topic: all notifications (task completed, failed, session events) posted automatically
  • Forum disconnect and cleanup via settings

Inline Creation (private chat)

  • New Chat and New Task buttons for quick creation without commands
  • Multi-step task creation flow with title + optional description

Thread ID Routing (server.js)

  • TelegramProxy now accepts threadId parameter
  • All messages auto-route to the correct forum topic via _tgSend() helper
  • Typing indicators respect message_thread_id for forum threads

Internals

  • New forum_topics SQLite table with (thread_id, chat_id) primary key
  • 15+ new prepared statements for forum CRUD operations
  • Full i18n coverage for forum strings in Ukrainian, English, and Russian
  • forum_chat_id column added to telegram_devices table

Stats

  • 941 insertions, 71 deletions across 6 files
  • telegram-bot.js: +886 lines (forum handlers, i18n, DB schema)
  • server.js: +49 lines (thread routing in TelegramProxy)
  • README updates in all 3 languages

Upgrade

npx github:Lexus2016/claude-code-studio@latest

v5.28.2 — Smarter auto-skill classifier with plugin skill matching

15 Mar 10:53

Choose a tag to compare

What's New

Improved Auto-Skill Classifier

The Haiku-powered skill classifier that automatically picks specialist personas for each message has been significantly improved:

Better plugin skill matching — Plugin skills (IDs like plugin:name:skill) are now first-class citizens in the classifier. The system prompt explicitly instructs Haiku to match them by intent and domain, not just exact keyword overlap. If you have an oh-my-claudecode:frontend-ui-ux skill installed, asking "design a dashboard layout" will now reliably activate it alongside the built-in frontend skill.

Keywords field — Skills with a keywords array in their config now pass those keywords to the classifier in brackets, giving Haiku additional signal for matching. Example: a skill with keywords: ["React", "CSS", "responsive"] shows as - frontend: Frontend — Build UIs [React, CSS, responsive].

Expanded meta-skill filter — 16 meta/system/setup skills are now excluded from classification: cancel, help, doctor, omc-setup, release, skill, learner, mcp-setup, hud, note, psm, project-session-manager, learn-about-omc, local-skills-setup. Previously only auto-mode was filtered. This prevents the classifier from wasting slots on system utilities.

Always select at least one — Changed from "select 0-4 skills" back to "select 1-4 skills". The previous 0-4 range caused the classifier to sometimes skip all skills even for domain-specific coding tasks. Simple factual questions still get handled correctly — the filter catches system-only results.

Diagnostic logging — When something goes wrong with classification, server logs now show:

  • Raw Haiku response with accepted and rejected skill IDs
  • Warning when Haiku returns skill IDs that don't exist in the config
  • Warning when no JSON is found in the response
  • Message preview (first 120 chars) in the classify-done log for debugging

Who benefits

Anyone using plugin skills (e.g., from oh-my-claudecode) will see noticeably better automatic activation. Built-in skills are also matched more reliably for domain-specific tasks.


Full Changelog: v5.28.1...v5.28.2

v5.28.1 — Fix crash on task resume when proxy buffer uninitialized

14 Mar 10:20

Choose a tag to compare

What's Fixed

Task resume crash — proxy buffer guard

The problem: When resuming a running Kanban task (switching back to a tab with an active task, or reconnecting after a WebSocket drop), the server could crash with Cannot read properties of undefined (reading 'filter') if the task's proxy _buffer hadn't been initialized as an array.

The fix: Added Array.isArray() guard before calling .filter() on proxy._buffer in both task resumption code paths (legacy handler and tab-aware handler). If _buffer isn't an array, the filter step is safely skipped — the task resumes normally without the text deduplication optimization, which is a graceful degradation.

Who is affected: Users running multiple Kanban tasks who switch between browser tabs or experience WebSocket reconnections during task execution.


Full Changelog: v5.28.0...v5.28.1

v5.28.0 — Mobile UI redesign, plugin skills, session replay, cross-tab isolation

13 Mar 15:50

Choose a tag to compare

Highlights

The biggest release since v5.25 — 2,400+ lines changed across 10 files, delivering a native-feel mobile experience, self-healing sessions, plugin skill discovery, and a critical cross-session isolation fix.


📱 Native Mobile UI

A complete redesign for small screens that feels like a native app:

  • Mobile header bar — hamburger menu, session title, live status dot (pulsing orange = working, green = idle, red = error), action buttons
  • Settings bottom sheet — slides up from the edge with chip selectors for Mode, Agent, Model, Max Turns, plus quick links to Kanban, Schedule, Config
  • Tabs overlay — full-screen session list with individual close buttons and tab counter badge
  • Swipe edge areas — 16px touch targets on left/right edges for gesture navigation
  • iOS safe area — proper insets on header and input area for notched devices

🔄 Self-Healing Sessions (Session Replay)

When a Claude session is lost — server restart, network timeout, expired session, "invalid session" errors — Studio now automatically rebuilds the full conversation context from SQLite history and replays it into a fresh session. Claude continues coherently from where it left off.

  • Works for both local CLI and SSH sessions
  • Covers all known Claude session-invalid error patterns via unified isResettableClaudeSessionError() regex
  • Restart Session button appears when Claude exhausts auto-continues — one click to clear the broken session and keep going

🧩 Plugin Skill Discovery

Studio now auto-discovers skills from your installed Claude Code plugins:

  • Scans ~/.claude/plugins/marketplaces/ and ~/.claude/plugins/cache/ directories
  • Reads plugin.json manifest and SKILL.md frontmatter for metadata
  • Plugin skills appear in sidebar grouped by plugin name under "🧩 Plugin Skills"
  • System prompt includes plugin root and skill directory paths for file references
  • Auto-skill classifier tightened: selects 0–4 skills (was 1–4), prefers narrow matches, skips generic skills for simple questions

🛡 Cross-Session Message Leak Fix

Fixed a multi-vector bug where messages from a running chat could appear in newly opened tabs:

Root cause Fix
done handler cleared global state for any session Guard with tabId === generatingTabId check
Task worker notifications broadcast without tabId Added tabId: task.source_session_id
Notification handler showed messages when tabId missing Removed fallback; require isVisible
Telegram-originated messages lacked tabId Added tabId: sessionId to all Telegram flows

Rich Tooltips for MCP & Skills

  • MCP server tooltips — hover to see name, description, transport type, source URL/command (tokens sanitized)
  • Skill tooltips — label, description, plugin name/version, file path
  • Session bar chips — auto-skills and active skill chips show rich HTML tooltips on hover
  • Visual refinement: larger fonts, border separators, proper spacing

SSH & CLI Improvements

  • SFTP attachment upload — files attached in SSH sessions are automatically uploaded to remote server via SFTP before processing
  • Session restart button — when CLI/SSH agent exhausts auto-continues, a Restart button renders in-chat
  • Thinking block fix — system prompt no longer re-sent on resumed sessions (prevents signature invalidation)
  • SSH host password form — fixed masked password overwrite, added validation guards
  • File-type attachments — CLI now handles file type blocks (not just images), preserves original filenames

Accessibility & UX

  • ARIA-compliant modal stack — all modals: focus trap, Escape-to-close, focus restoration, role="dialog", aria-modal
  • Slash command modal — redesigned from inline form to full modal with keyboard navigation
  • Composer state per-tab — textarea draft, attachments, reply-to state saved/restored atomically on tab switch
  • Safe markdown links — state-machine parser blocks javascript: URLs, handles nested parentheses
  • prefers-reduced-motion — respects OS setting, disables animations for users who opt out
  • Copy image button — in file preview, copies image blob to clipboard

Full Changelog: v5.25.9...v5.28.0

v5.27.0 — Session Replay Recovery & Attachment Handling Improvements

11 Mar 10:17

Choose a tag to compare

🔄 Session Replay Recovery

When a Claude session becomes unavailable (e.g., after server restart, session ID corruption, or timeout), Claude Code Studio can now replay the conversation history to a fresh session to recover context. This allows Claude to understand the full prior conversation without the original session.

How it works

  1. Studio detects when the session ID is invalid or points to an expired session
  2. A "session recovery" message is shown in the session bar with a "Restart" button
  3. On restart, the system fetches all messages from the database for that session
  4. Messages are serialized and replayed to Claude as a structured context
  5. Claude receives the full conversation history and continues from where it left off

Why this matters

For long-running projects: No more losing hours of context when you return days later.

For scheduled tasks: Kanban tasks that recover gracefully from server restarts.

For interrupted work: Browser crash or network issue? Session replay has you back.


📎 Attachment Handling Improvements

Normalized Attachment Storage

  • New normalizeStoredAttachment() function ensures consistent handling across all code paths
  • serializeMessageAttachments() and parseMessageAttachments() for reliable serialization/deserialization
  • SSH attachments now properly resolve host credentials from stored host configuration

Better UI Feedback

  • Attachment chips show "Copy" button with visible label for better discoverability
  • Focus-within support for action buttons (accessibility improvement)
  • Session restart cleans up UI state more thoroughly (retry flags, session bar elements)

Full Changelog: v5.26.0...v5.27.0