English:
✨ Features
- Add Codex fast mode: new "Fast" speed mode in the model selector that maps to
service_tier=fastfor supported Codex models; normal mode preserves Codex defaults (by @llanc) - Add Claude Code CLI path override: new "Claude CLI Path (override)" setting in Settings → Environment lets you point the plugin at a specific
claudebinary; daemon restarts automatically on save (by @senfix, co-authored with Claude) - Add separate Code Font setting (Settings → Basic → Appearance), independent from the UI font: Markdown code and Bash command/output use the code font; chat text follows the IDEA UI font; both accept a custom
.ttf/.otffile (by @Luna5ama, closes #1240) - Add Codex subscription quota panel in the model selector: shows ChatGPT Plus/Pro quota status with dual-source fetching (session message + ChatGPT API), snapshot caching, and a dedicated message for API-key mode (by @Luna5ama)
- Add Shift+Esc shortcut to hide the CCG tool window panel (intercepted at JS level via JBCefJSQuery since JCEF consumes the key natively) (by @Cyber0xFE)
- Add Ctrl+Alt+K to always open the CCG panel regardless of editor selection; auto-focus the input field on activation (by @Cyber0xFE)
- Add per-message token consumption indicator at the bottom of each turn showing whole-turn aggregated input/output token count (by @suzhelan, refined by @zkpaiminmin)
- Add SDK session to CLI session conversion: sessions created via SDK (sdk-cli / claude-vscode entrypoint) can be converted to CLI sessions, making them visible in the
/resumelist; shown as entrypoint badges in history with a "Convert to CLI" action (by @gadfly3173) - Add Claude Fable 5 model support with Mythos-class capabilities; add Fable 5 pricing ($10/$50 per 1M tokens) (by @zkpaiminmin)
- Integrate Claude Code Task tracking API (TaskCreate / TaskUpdate / TaskGet / TaskList): task management tools render as collapsible agent groups with absorbed nested tool calls and persisted expand/collapse state; task list in StatusPanel supports both legacy
todowriteand new Task API tasks (by @gadfly3173, co-authored with @zhuzhihang)
🐛 Fixes
- Fix full WSL2 compatibility suite: install Claude SDK into WSL filesystem; handle raw/forward-slash UNC WSL paths; propagate permission env vars across Windows→WSL boundary via WSLENV; merge (not replace) probed login-shell PATH to preserve Homebrew/pyenv/sdkman; migrate path handling to
WslPathUtil; resolve Claude home at call time in session conversion (by @Gazoon007) - Fix tool spinner stuck permanently after stream end: preserve
tool_resultmessages from the pending snapshot when the rAF-batched update is cancelled; decouple recovery from the assistant-patch branch so it fires even with no streaming assistant message (by @Cyber0xFE, hardened by @zkpaiminmin) - Fix code snippet sent before frontend is ready: replace retry-based approach with
PendingCodeSnippetBuffer(AtomicReference) that flushes on the frontend-ready signal, eliminating check-then-act race (by @Cyber0xFE, refactored by @zkpaiminmin) - Fix usage cost overstatement: deduplicate JSONL records by
message.id(Claude Code writes each content block as its own line, inflating counts ~2×); correct Opus 4.5/4.6/4.7/4.8 pricing from legacy $15/$75 to $5/$25 per 1M tokens (by @t7r5fz7848-lab, re-applied by @zkpaiminmin) - Fix Bash output code font not applying:
.bash-output-textleaf node was overridden by the global*selector; declarefont-familydirectly on the leaf (by @zkpaiminmin) - Fix settings.json env vars silently overriding webview-selected reasoning effort,
MAX_THINKING_TOKENS, and 1M context toggle: strip controlled vars from daemon and CLI child-process env; inject inline--settingsoverride so the SDK respects per-turn UI selections (by @gadfly3173) - Fix selected reasoning effort not passed to SDK: include
reasoningEffortin Claude send payloads; thread it throughSessionHandler→ClaudeSession→SessionSendService; prefer requested value over session state (by @gadfly3173) - Fix Codex history tool UI disappearing after restart: unwrap normalized history raw payloads during session restore so tool_use, tool_result, command details, and image-only messages survive frontend transport (by @Luna5ama)
- Fix node process submenu causing layout loop in the webview (by @gadfly3173)
- Fix Codex fast mode overriding service tier in standard (non-fast) mode (by @llanc)
- Fix Markdown links with spaces/special characters: decode percent-encoded and
file://hrefs before opening in the IDE (by @moritzfl) - Fix per-message token display inconsistency: stamp
turnUsagewhole-turn aggregate at turn completion; frontend reads onlyturnUsagewith a breakdown tooltip (by @zkpaiminmin) - Fix Codex quota cache not invalidating on account switch: call
invalidateCache()on everyswitchCodexProviderpath (by @zkpaiminmin) - Fix Codex quota showing wrong account data in API-key mode: skip OAuth quota lookup and show a dedicated API-key-mode message (by @zkpaiminmin)
- Fix duplicate
tool_resultin stream-end snapshot recovery; align[tool_result]marker trimming (by @zkpaiminmin) - Fix command messages leaking into display on normalized history envelopes: pass
rawMessagetoshouldFilterCommandMessage(by @zkpaiminmin) - Fix Claude CLI path input blanked on validation failure: echo back the user's input instead of an empty string (by @zkpaiminmin)
- Fix agent group absorbing wrong children after history reload: replace streaming-count-based grouping with a purely structural rule; fix
extractAccumulatedTaskssingle-pass with per-message ID trust guard for parallel TaskCreate (by @zkpaiminmin) - Fix symlink escape in project-boundary check on native POSIX: restrict lexical WSL fallback to WSL paths only; native POSIX goes through
getCanonicalPath(security) (by @zkpaiminmin) - Fix XSS via control-character-obfuscated
hrefschemes (e.g.java	script:): reject hrefs containing C0 control characters before scheme checks in the DOMPurify hook (security) (by @zkpaiminmin)
🔧 Improvements
- Enhance Bash output rendering with dedicated CSS classes for improved syntax distinction (by @Luna5ama)
- Improve Codex quota fetching: dual-source (session message + ChatGPT API), snapshot caching with timeout, single shared
HttpClient, unwrappedCompletionExceptionfor readable errors (by @Luna5ama, @zkpaiminmin) - Split env var groups into
MODEL_ROUTING_ENV_VARSandREASONING_CONTROL_ENV_VARSfor explicit treatment, preventing the two sets from drifting independently (by @gadfly3173) - Add Docker build support (
Dockerfile+.dockerignore) for reproducible plugin distribution without a local Java/Node toolchain (by @senfix) - Replace emoji blocked marker in StatusPanel TodoList with
codicon-circle-slashfor consistency with the codicon icon system (by @zkpaiminmin)
中文:
✨ 新功能
- 新增 Codex 快速模式:模型选择器新增「快速」速度模式,映射到
service_tier=fast;普通模式保持 Codex 默认行为(by @llanc) - 新增 Claude Code CLI 路径覆盖:设置 → 环境新增「Claude CLI Path (override)」,允许指定自定义
claude可执行文件;保存后自动重启 daemon(by @senfix,与 Claude 共同开发) - 设置 → 基础 → 外观新增独立「代码字体」配置,与 UI 字体分离:Markdown 代码与 Bash 命令/输出使用代码字体,聊天文本跟随 IDEA UI 字体;两者均支持自定义
.ttf/.otf文件(by @Luna5ama,关闭 #1240) - 新增 Codex 订阅配额面板:在模型选择器中显示 ChatGPT Plus/Pro 配额,双来源拉取(会话消息 + ChatGPT API),快照缓存,API 密钥模式专属提示(by @Luna5ama)
- 新增 Shift+Esc 快捷键隐藏 CCG 工具窗口面板(通过 JBCefJSQuery 在 JS 层拦截,绕过 JCEF 原生键盘消费)(by @Cyber0xFE)
- Ctrl+Alt+K 无论是否有代码选择均可打开 CCG 面板,激活时自动聚焦输入框(by @Cyber0xFE)
- 每条消息底部新增 Token 消耗指示器,显示整轮聚合输入/输出 Token 数(by @suzhelan,@zkpaiminmin 优化)
- 新增 SDK 会话转换为 CLI 会话:通过 SDK 创建的会话(sdk-cli / claude-vscode 入口)可转换为 CLI 会话,出现在
/resume列表;历史列表显示入口徽章和「转换为 CLI」操作(by @gadfly3173) - 新增 Claude Fable 5 模型支持(Mythos 级),添加 Fable 5 定价(输入 $10/1M,输出 $50/1M)(by @zkpaiminmin)
- 集成 Claude Code Task tracking API(TaskCreate / TaskUpdate / TaskGet / TaskList):任务管理工具渲染为可折叠 Agent 分组,内含嵌套工具调用,展开/折叠状态持久化;StatusPanel 任务列表同时支持旧版
todowrite和新 Task API(by @gadfly3173,@zhuzhihang 共同开发)
🐛 修复
- 修复 WSL2 全套兼容性问题:Claude SDK 安装到 WSL 文件系统;处理原始路径和正斜杠 UNC WSL 路径;通过 WSLENV 跨 Windows→WSL 边界传播权限环境变量;合并(而非替换)登录 Shell PATH,保留 Homebrew/pyenv/sdkman;路径处理迁移到
WslPathUtil;会话转换时按需解析 Claude home(by @Gazoon007) - 修复工具 spinner 在流结束后永久卡住:rAF 批量更新取消时保存待处理快照中的
tool_result;将恢复逻辑从 assistant-patch 分支解耦(by @Cyber0xFE,@zkpaiminmin 加固) - 修复代码片段在前端未就绪时被发送:用
PendingCodeSnippetBuffer(AtomicReference)替代重试机制,消除竞态(by @Cyber0xFE,@zkpaiminmin 重构) - 修复使用量统计高估:按
message.id去重 JSONL 记录(每个内容块独立写行导致约 2× 膨胀);将 Opus 4.5/4.6/4.7/4.8 定价从 $15/$75 修正为 $5/$25 /1M(by @t7r5fz7848-lab,@zkpaiminmin 重新适配) - 修复 Bash 输出代码字体未生效:
.bash-output-text叶子节点被全局*选择器覆盖,直接在叶子声明font-family(by @zkpaiminmin) - 修复 settings.json 环境变量静默覆盖推理力度、
MAX_THINKING_TOKENS和 1M 上下文切换:从 daemon 和 CLI 子进程环境剥离相关变量;注入行内--settings覆盖(by @gadfly3173) - 修复选择的推理力度未传递给 SDK:在 Claude 发送 payload 中携带
reasoningEffort;通过SessionHandler→ClaudeSession→SessionSendService串联(by @gadfly3173) - 修复 Codex 历史工具 UI 重启后消失:恢复会话时解包归一化历史 raw payload(by @Luna5ama)
- 修复 Node 进程子菜单导致 webview 布局死循环(by @gadfly3173)
- 修复 Codex 快速模式在普通模式下错误覆盖 service_tier(by @llanc)
- 修复含空格/特殊字符的 Markdown 路径链接无法打开:打开前解码 percent-encoded 和
file://href(by @moritzfl) - 修复每条消息 Token 显示语义不一致:对话轮次完成时填入
turnUsage整轮聚合值,tooltip 分解全部四个值(by @zkpaiminmin) - 修复切换 Codex 账户时订阅配额缓存未失效(by @zkpaiminmin)
- 修复 API 密钥模式下 Codex 配额显示错误账户数据,跳过 OAuth 配额查询(by @zkpaiminmin)
- 修复流结束快照恢复中
tool_result重复;对齐[tool_result]标记 trim 处理(by @zkpaiminmin) - 修复历史消息归一化封装时命令消息泄漏到显示(by @zkpaiminmin)
- 修复 Claude CLI 路径验证失败时输入框被清空(by @zkpaiminmin)
- 修复历史回放后 Agent 分组吸收错误子节点:改为纯结构化规则;
extractAccumulatedTasks单遍处理加并行 TaskCreate ID 冲突守卫(by @zkpaiminmin) - 修复原生 POSIX 上项目边界检查未解析软链接的逃逸问题,限制词法回退仅用于 WSL(安全)(by @zkpaiminmin)
- 修复控制字符混淆
hrefXSS(如java	script:),在 DOMPurify hook 的 scheme 检查前拒绝含 C0 控制字符的 href(安全)(by @zkpaiminmin)
🔧 改进
- 为 Bash 输出渲染引入专用 CSS 类,改善语法区分度(by @Luna5ama)
- 改进 Codex 配额拉取:双来源、带超时快照缓存、复用单个
HttpClient、unwrapCompletionException(by @Luna5ama,@zkpaiminmin) - 将环境变量拆分为
MODEL_ROUTING_ENV_VARS和REASONING_CONTROL_ENV_VARS,防止独立漂移(by @gadfly3173) - 新增 Docker 构建支持(
Dockerfile+.dockerignore),无需本地工具链可复现发布包(by @senfix) - StatusPanel TodoList 中将 emoji 阻断标记替换为
codicon-circle-slash(by @zkpaiminmin)
What's Changed
- feat(fonts): 新增独立代码字体配置,并优化 UI 字体处理 by @Luna5ama in #1244
- fix(usage): dedup by message.id and fix Opus 4.5+ pricing by @t7r5fz7848-lab in #1233
- feat: add Shift+Esc to hide panel and improve panel activation UX by @Cyber0xFE in #1206
- feat: allow overriding the Claude Code CLI executable + add Docker build by @senfix in #1232
- fix(ui): preserve tool_result messages on stream end to prevent stuck tool spinner by @Cyber0xFE in #1211
- fix(session): pass selected reasoning effort to SDK by @gadfly3173 in #1284
- fix(webview): prevent node process submenu layout loop by @gadfly3173 in #1283
- feat: add SDK session to CLI session conversion by @gadfly3173 in #1295
- fix(history): preserve Codex tool call UI after restart (重启后保持Codex工具调用UI) by @Luna5ama in #1286
- feat:Added Token consumption at the bottom of the dialogue indicator by @suzhelan in #1280
- Fixes markdown file links with spaces/special characters. by @moritzfl in #1277
- fix(wsl): fix PATH, permission IPC, file routing, and MCP server inspection for Windows+WSL2 by @Gazoon007 in #1203
- feat(codex): 为 Codex 添加加订阅配额展示 by @Luna5ama in #1245
- feat: add Codex fast mode by @llanc in #1179
- feat: integrate Claude Code Task tracking API with agent group visualization by @gadfly3173 in #1297
- Feature/v0.4.5 by @zhukunpenglinyutong in #1276
New Contributors
- @Luna5ama made their first contribution in #1244
- @t7r5fz7848-lab made their first contribution in #1233
- @senfix made their first contribution in #1232
- @suzhelan made their first contribution in #1280
- @moritzfl made their first contribution in #1277
- @llanc made their first contribution in #1179
Full Changelog: v0.4.4...v0.4.5