Skip to content

Releases: wxtsky/CodeIsland

v1.0.38

Choose a tag to compare

@wxtsky wxtsky released this 11 Oct 01:37
Immutable release. Only release title and notes can be modified.

English

Fixes

  • Codex Desktop threads show up again on current ChatGPT builds. Newer ChatGPT releases moved Codex's binary from ChatGPT.app/Contents/Resources/codex to Contents/Resources/codex-cli/CodexCLI.app/Contents/MacOS/codex, and CodeIsland only knew the old place. Its process scan never found Desktop's app-server, so Desktop threads were never read from Codex's state database, and the live app-server connection could not start (it retried every 10 seconds while ChatGPT ran). Both now find the new binary. Because the same file also runs Codex CLI, discovery tells the two apart by what the process runs and who started it: the app-server ChatGPT starts is Desktop; ChatGPT's cloud exec-server, one-shot commands like login, and CodeIsland's own app-server connection are skipped; a terminal session or the app-server Claude Code's Codex plugin starts is a CLI session

中文

修复

  • 新版 ChatGPT 下,Codex 桌面版对话重新显示在刘海上。 新版 ChatGPT 把 Codex 程序从 ChatGPT.app/Contents/Resources/codex 挪到了 Contents/Resources/codex-cli/CodexCLI.app/Contents/MacOS/codex,CodeIsland 只认旧位置:进程扫描找不到桌面版的 app-server,于是从不读 Codex 状态库里的桌面版对话;和 app-server 的实时连接也起不来(ChatGPT 运行期间每 10 秒重试一次)。现在两处都能找到新位置的程序。由于终端里的 Codex 用的也是这个程序,发现流程按进程在跑什么、由谁启动来区分:ChatGPT 启动的 app-server 是桌面版;ChatGPT 的云端 exec-server、login 这类一次性命令,以及 CodeIsland 自己的 app-server 连接都会跳过;终端会话和 Claude Code 的 Codex 插件起的 app-server 按命令行会话处理

v1.0.37

Choose a tag to compare

@wxtsky wxtsky released this 11 Oct 01:16
Immutable release. Only release title and notes can be modified.

English

Fixes

  • One card per Codex conversation with ChatGPT Desktop open. Two cases showed the same Codex conversation twice. A Codex task started from Claude Code's Codex plugin (/codex:rescue) runs its own codex app-server, whose transcript carries the same source as a Desktop thread; it was taken for one and got a second, Desktop-badged card. Transcripts now count as Desktop only when their originator is Desktop's, so the plugin's tasks (and the threads they spawn) stay on the card their hooks build (#368, #369). Separately, newer ChatGPT builds start Codex's app-server from ChatGPT.app/Contents/Resources/codex-cli/ without a bundle id in its environment, so Desktop threads' hooks were keyed as CLI sessions next to the Desktop card. The bridge now recognises a Codex process running app-server directly under ChatGPT and marks its hooks as Desktop; terminal Codex and the plugin's app-server, which use the same binary, are unaffected. With Plugin Sub-Sessions merged, a Desktop thread's own hooks are no longer folded into another thread as its sub-session (#370, #371). Thanks @Junyu06

中文

修复

  • 开着 ChatGPT 桌面版时,一个 Codex 对话只显示一张卡。 有两种情况会让同一个 Codex 对话出现两张卡。一是在 Claude Code 里用 Codex 插件(/codex:rescue)起的任务:插件自己起一个 codex app-server,对话记录里的 source 和桌面版一样,于是被当成桌面版对话,多出一张带桌面版标记的卡。现在只有 originator 是桌面版的对话记录才算桌面版,插件的任务(以及它派生的子任务)留在 hook 建的那张卡上(#368、#369)。二是新版 ChatGPT 从 ChatGPT.app/Contents/Resources/codex-cli/ 启动 Codex 的 app-server,环境变量里没有 bundle id,桌面版对话的 hook 被当成命令行会话,和桌面版那张卡并排出现。现在桥接程序发现 Codex 进程在跑 app-server 且父进程就是 ChatGPT 时,把它的 hook 标为桌面版;终端里的 Codex 和插件起的 app-server 用的是同一个程序,不受影响。「插件子会话」设为合并时,桌面版对话自己的 hook 也不会再被当成别的对话的子会话吞掉(#370、#371)。感谢 @Junyu06

v1.0.36

Choose a tag to compare

@wxtsky wxtsky released this 10 Oct 00:33
Immutable release. Only release title and notes can be modified.

English

New

  • MiniMax Code CLI on the island. mcode sessions show up as their own cards — live status, running tool, prompts and replies. mcode loads shell hooks only through a plugin, so CodeIsland writes a local plugin pack at ~/.minimax/plugins/codeisland/ (honours $MINIMAX_DATA_DIR) when MiniMax Code is installed; the next mcode session picks it up. Approvals can be answered from the island for 10 seconds — the longest mcode lets a plugin hook wait — after which mcode's own prompt takes over. Settings → Hooks → MiniMax Code CLI
  • Xiaomi MiMo and MiMo Code on the island. The Xiaomi MiMo desktop app (mainland and overseas editions) runs MiMo Code as its engine, and both load plugins from ~/.config/mimocode/plugins/, so CodeIsland installs one plugin there (no MiMo config file is edited) and covers both: live status, running tool, session titles, completion alerts, and approvals and questions answered from the island or in MiMo, whichever comes first. Clicking a desktop session brings Xiaomi MiMo to the front; a mimo CLI session jumps back to its terminal. Restart MiMo once after updating so it loads the plugin. Settings → Hooks → MiMo Code / Xiaomi MiMo
  • Hermes cards show the prompt, the reply and the session title. Hermes fires on_session_end after every turn, not when a session ends, and CodeIsland read it as the latter: each reply deleted the card, and the next turn started a blank one showing only a status and a session id. The end of a turn now settles the card like any other agent's (completion card and sound; a stopped turn shows as interrupted), a new pre_llm_call hook puts the prompt on the card as soon as it's sent, and a new on_session_finalize hook removes the card when the session really ends (/new, quitting hermes, closing a desktop conversation, the gateway shutting down). Gateway chats (Telegram, Discord, Slack, WhatsApp, email and the rest, and the API server) update their card without a completion card or sound, and an idle one goes after 10 minutes; the CLI, the TUI, the desktop app and ACP editors behave like any other agent. The title Hermes generates, which no hook carries — and, while a hook isn't approved yet, the latest prompt and reply — come from Hermes's own session store ($HERMES_HOME/state.db, opened read-only off the main thread; for SSH hosts the remote hook reads the store there). The bridge also stops forwarding the full conversation Hermes attaches to every turn hook. Hermes asks once before running each new hook: answer y the next time you start hermes in a terminal. The gateway and the desktop app can't ask and skip a hook nobody approved, so approve them in a terminal once or set hooks_auto_accept: true in config.yaml (#364, thanks @geminiwhale)
  • Click-to-jump reaches the exact Claude Desktop session. A Claude Code session run from Claude Desktop's Code tab only raised Claude Desktop, which stayed on whichever session it last showed. The bridge now forwards the id Claude Desktop gives each Code-tab session (CLAUDE_CODE_HOST_SESSION_ID), and a click opens claude://code/continue?session=<id> — the link Claude Desktop's own Dock menu uses — so the card lands on its session. Sessions without the id (not started from Claude Desktop, or not yet seen by an updated bridge) raise the app as before
  • Claude plan limits on the collapsed island. With "Show Claude plan limits" on, a chip (window, ring, percent) takes the left wing's tool slot while no tool is running, and its tooltip lists every window. "Collapsed island shows" picks Auto, 5-hour, weekly, weekly (model-specific: the window the server keeps for one model) or nothing. Auto shows a weekly window: one ahead of pace or past 80% first, else one late in the week with plenty left (green ring: budget worth spending before it resets), else the tighter one; the 5-hour window takes over only while it can really block you (past 50% and more than 10 points ahead of pace). The chip's percent carries a small pace mark: points ahead of (amber) or behind (green) spending the window evenly; the panel footer gives the same in its tooltip. The tooltip adds the lead as window time and when the budget runs out at this rate, or where it lands at reset; the mark is hidden for the first 10% of a window and after it resets, and on menu-bar-height bars (external displays) it stays in the tooltip. On notched screens the bar grows to the left by just what the chip needs, so the chip never reaches under the notch and the right wing stays put. While the chip is on, limits also refresh with the island collapsed: once at launch, on Stop as before, and every 10 minutes to catch resets. With the setting off, the collapsed bar is unchanged
  • Question cards can be dismissed. A question card used to stay up until it was answered: moving away or clicking elsewhere never folds a card, and Skip is an answer (for AskUserQuestion it denies the tool call). A new Hide button closes the card without answering, like the one on approval cards: the agent keeps waiting, so you can answer in the terminal, and the collapsed bar's question badge reopens the card. A closed question doesn't come back on its own, isn't followed up by reminders, and isn't acted on by the skip shortcut; a new question, even from the same session, opens as usual

Improvements

  • A session list that leads with what needs you. Every card says its status in a word — NEEDS YOU, WORKING, THINKING, DONE, STOPPED, or ERROR when a turn failed — with a matching stripe down its edge; the project name's colour no longer carries it alone. Sessions waiting on you come first, then the working ones, then the rest by latest activity. The order holds while the pointer is on the list, so nothing moves under your cursor (with "Group by status", which now lists Waiting before Running, a card also keeps its section until the pointer leaves). Your prompt (›), the agent's reply (●) and the running tool (a ▸ chip) each get their own marker, where "$" used to mark both. The inline approval buttons follow the redesigned approval card: Allow once is the one filled button, Deny is outlined, and "Always allow " is a link. New: Settings → Appearance → Session list density → Compact shows one line per session and opens only the sessions that need you, so eight fit on a 14" MacBook without scrolling
  • Approval and question cards with one clear answer. The approval card says what is being asked — "Bash wants to run a command", "Edit wants to change Dashboard.tsx", "github wants to call create_pull_request" — under the agent, project and branch asking, with its place in the queue ("1 of 3"). Allow once is the only filled button, in the trailing slot; Deny is outlined; Hide (was Dismiss) is plain text; Always is now a link that states its scope: "Always allow Bash this session", or for Codex where the rule is saved (~/.codex/rules, or ~/.codex/config.toml for an MCP tool). The question card follows the same order: Confirm / Submit filled (dimmed until there is something to send), Skip outlined, Hide as text. A button shows its keyboard shortcut only once you have turned that shortcut on. Card text follows Settings → Appearance → Content Font Size, and a command taller than the window scrolls instead of being cut off
  • A clearer panel header and usage footer. The grouping tabs are spelled out — ALL · STATUS · AGENT — in brighter pixel type with taller click targets (beside a notch that leaves too little room they fall back to ALL · STA · AGT). Quit asks once: the first click turns the power button into a red "QUIT?" pill, and only a second click within 3 seconds quits; waiting, moving the pointer away or the panel closing puts the button back, VoiceOver announces the question, and Reduce Motion swaps the two without sliding. With plan limits on, the footer is one line that leads with what can stop you — each window's bar, percent (warning colours near the cap) and reset countdown — with the token sparkline at its end; the token totals and the pace numbers moved into its tooltip. Without plan limits the token line uses words instead of arrows ("last 5h: 422K in · 96K out Today: 922K in · 233K out"), and its tooltip breaks "in" down into new input, cache writes and cache reads
  • Cards that fit, and say who's asking. An approval card now names the agent and project it belongs to, like the question card. A tall session list, a long question or a long option list scrolls inside the window instead of running off its bottom edge, so the last session, the footer and the Hide / Skip buttons stay reachable; the whole question is shown instead of three lines
  • Accessibility: dim panel text meets WCAG AA contrast; Reduce Motion holds the mascots still and stops the shimmer and pulsing badges; the panel's icon buttons and pixel tabs have VoiceOver labels and tooltips, and Hide / Skip / Always explain themselves (Always says whether the rule lasts for the session or is saved, as Codex does)

Fixes

  • Installing Codex hooks no longer appends a duplicate [features] table that stopped Codex from starting, and configs already broken that way are repaired (#354)
  • Codex's Interrupt and SessionEnd hooks stay within Codex's 3 s cap, locally and on remote hosts
  • Codex Auto Review chosen per turn in the Codex app is respected, and auto-review (guardian) and /review threads follow Plugin Sub-Sessions (#348)
  • A completion card can no longer send the main thread into an endless layout loop that froze the app and the hooks waiting on it (#357)
  • On notched screens the collapsed bar's question badge and finished dot no longer slide under the notch
  • AiWork sessions the watcher drops (the agent is gone, or monitoring for that surface was turned off) no longer leave an empty completion card behind
  • Claude Code (Homebrew or the native installer) is no longer mistaken for the app whose terminal it runs in, so with Plugin Sub-Sessions on "Hi...
Read more

v1.0.35

Choose a tag to compare

@wxtsky wxtsky released this 24 Sep 14:17
Immutable release. Only release title and notes can be modified.

English

New

  • Task progress on session cards. The agent's own checklist — Claude Code's TaskCreate / TaskUpdate and TodoWrite, Codex's plan — shows as a segmented bar with "2/5" and the step it's on; click for the full list. It fades once everything is done, and a plan the agent abandoned no longer lingers on an idle card. Settings → Appearance → Show task progress (on)
  • Session recap. When Claude Code writes its "while you were away" summary, the idle card shows it under the last reply (↻). A new prompt retires it. Settings → Appearance → Show session recap (on)
  • Model and reasoning effort on each card ("Opus 5.5 1M · xhigh", "gpt-5.6-sol · max"), read from the transcript; subagents show their own model. Off by default — Settings → Appearance
  • Replies render as Markdown. The completion card shows the finished reply in full — headings, lists, task checkboxes, tables, code blocks with a copy button — in a scrollable area sized to the window. One-line previews in the session list are now clean text instead of raw **, # and table pipes, and so are the previews sent to the iPhone / Watch / ESP32 Buddy
  • Pushes to your phone or team chat. Settings → Behavior → Push notifications sends approvals, questions (with numbered options), finished turns, turn errors and follow-up reminders to Bark, ntfy, DingTalk, Lark / Feishu, WeCom, Slack or Telegram — several at once, each with its own event choices and a Send test button that shows the service's real reply. By default a push only goes out while you're away (locked, screen saver, displays asleep, or 5 minutes without input), and a request that arrived while you were at the Mac is pushed when you leave. Team-chat channels send titles only unless you turn on details; commands and replies go through credential redaction. Off by default
  • Follow-up reminders. Settings → Behavior → Follow-up reminders (off / 1 / 2 / 3 / 5 min): an approval or question still waiting rings again (up to 3 times), a finished turn you haven't looked at rings once. Reminders stop when you answer or jump to the session and wait a round while its terminal is in front or your pointer is on the card; one that came due while the screen was locked plays right after you unlock, and one held back while you're away from the Mac still reaches your phone. Also covers waits the island can only show — Claude Desktop Cowork permission prompts, Cursor's in-IDE questions, AiWork — and those reach your phone too
  • Claude Desktop Cowork on the island. Cowork runs in a sandbox where hooks never fire, so CodeIsland reads the session files Claude Desktop keeps on your Mac (read-only): title, live status, running tool, latest reply, completion sound, and a waiting state for permission prompts. Click to open the conversation in Claude Desktop. Stopping a turn is treated as an interrupt, not a failure. Settings → Hooks → Claude Desktop
  • Several accounts. Register extra Claude Code, Codex and Grok config directories (e.g. a second CLAUDE_CONFIG_DIR) in Settings → Hooks. Each gets its own hooks and status line; sessions, transcripts and usage cover all of them, and each running process is matched to the directory in its own environment. A directory that turns out to be the main one (or shares its settings file through a symlink) is never written twice or unhooked by mistake

Improvements

  • Error sound only when a turn dies. A single failed tool call (a command exiting non-zero, an edit that didn't match) no longer plays the "task error" jingle; Claude Code's StopFailure (API error, rate limit) does, once per burst
  • Quieter when you're not there. Event sounds mute while the screen is locked or the screen saver runs (Settings → Sound, on). The boot jingle no longer plays when CodeIsland starts at login
  • Questions get their own auto-expand switch. Turn off "Auto-expand on question" to keep the island collapsed: the sound plays, a badge appears, and one click opens the card. Keyboard shortcuts now act only on the card you can see — with a card hidden, approve / deny opens it instead of acting blind
  • Polish: hover-to-expand delay (0.1–1.0 s); content font up to 16 pt; the volume slider goes much quieter at the low end; "Show project name" switch for screen sharing; About links this version's release notes and explains when the app can't update itself (running from the disk image or a translocated copy)

Reliability

  • Reliability: AppleScript for terminal jumps and Smart Suppress checks now runs out of process instead of on background threads inside the app; hook config files that are symlinks stay symlinks when CodeIsland edits them

中文

新功能

  • 会话卡片显示任务进度。 Agent 自己的任务清单(Claude Code 的 TaskCreate / TaskUpdate 与 TodoWrite、Codex 的计划)显示为分段进度条、「2/5」和当前步骤,点击展开完整清单。全部完成后自动淡出;Agent 半途放弃的计划不会一直留在空闲卡片上。设置 → 外观 → 显示任务进度(默认开)
  • 会话回顾。 Claude Code 写下「离开期间」总结时,空闲卡片会在最后一条回复下方显示它(↻),有新的提问后自动失效。设置 → 外观 → 显示会话回顾(默认开)
  • 模型与推理强度标签(「Opus 5.5 1M · xhigh」「gpt-5.6-sol · max」),从 transcript 读取;子 Agent 显示它自己的模型。默认关闭,设置 → 外观
  • 回复按 Markdown 渲染。 完成卡片完整显示本轮回复:标题、列表、任务复选框、表格、带复制按钮的代码块,放在按窗口高度自适应的滚动区域里。会话列表里的单行预览改为干净的纯文本,不再出现 **、# 和表格竖线;发给 iPhone / Watch / ESP32 Buddy 的预览同样如此
  • 推送到手机或群聊。 设置 → 行为 → 推送通知,可把审批、提问(附编号选项)、完成、整轮出错和跟进提醒推送到 Bark、ntfy、钉钉、飞书 / Lark、企业微信、Slack 或 Telegram;可同时启用多个通道,每个通道单独选择事件,「发送测试」显示服务端的真实返回。默认只在你离开时推送(锁屏、屏保、显示器睡眠,或 5 分钟无操作),你在 Mac 前时到达的请求会在你离开时补推。群聊类通道默认只推标题,可单独开启详情;命令和回复会做凭据脱敏。默认关闭
  • 跟进提醒。 设置 → 行为 → 跟进提醒(关 / 1 / 2 / 3 / 5 分钟):还在等待的审批或提问会再次提醒(最多 3 次),你还没看的完成结果提醒一次。你作答或跳转到该会话后停止提醒;它的终端在前台、或指针停在卡片上时顺延一轮;锁屏期间到点的提醒会在解锁后立即补上;你不在 Mac 前时被压下的提醒仍会推到手机。也覆盖只能在岛上显示的等待——Claude Desktop Cowork 的权限请求、Cursor 在 IDE 里的提问、AiWork——并同样推送到手机
  • Claude Desktop Cowork 上岛。 Cowork 跑在沙盒里,hook 不会触发,CodeIsland 改为只读地读取 Claude Desktop 保存在本机的会话文件:标题、实时状态、正在运行的工具、最新回复、完成提示音,以及权限请求时的等待状态。点击在 Claude Desktop 里打开对应对话。在 Desktop 里停止回合按中断处理,不算失败。设置 → Hooks → Claude Desktop
  • 多账号。 在 设置 → Hooks 登记额外的 Claude Code、Codex、Grok 配置目录(比如第二个 CLAUDE_CONFIG_DIR),每个目录单独安装 hook、单独显示状态;会话、transcript 和用量统计覆盖所有目录,每个运行中的进程按它自己的环境变量归到对应目录。如果某个目录其实就是主目录(或通过软链共享同一个设置文件),不会被重复写入,也不会被误卸载 hook

改进

  • 只有整轮失败才响错误音。 单个工具失败(命令非零退出、编辑没匹配上)不再响「任务错误」;Claude Code 的 StopFailure(API 错误、限流)才响,连续失败只响一次
  • 你不在时更安静。 锁屏或屏保期间事件音自动静音(设置 → 声音,默认开)。开机登录自启时不再播放启动音
  • 提问有了单独的自动展开开关。 关掉「提问时自动展开」后岛保持收起:响提示音、显示角标,点一下打开卡片。键盘快捷键现在只作用于你看得见的卡片——卡片被隐藏时,批准 / 拒绝快捷键会先打开卡片,而不是盲目执行
  • 细节打磨: 悬停展开延迟可调(0.1–1.0 秒);内容字号最大 16pt;音量滑块低端可以调得更轻;新增「显示项目名」开关,方便共享屏幕;关于页可查看本版本更新说明,并在无法自动更新时说明原因(从磁盘映像或被系统隔离的副本运行)

可靠性

  • 可靠性: 终端跳转和智能抑制检测用到的 AppleScript 改为进程外执行,不再在 App 内的后台线程跑;hook 配置文件是软链接时,CodeIsland 编辑后仍保持软链接

v1.0.34

Choose a tag to compare

@wxtsky wxtsky released this 23 Sep 05:46
Immutable release. Only release title and notes can be modified.

English

New

  • OpenCode 2 support. OpenCode 2 replaced its plugin API wholesale, so the CodeIsland plugin never loaded there. One plugin file now serves OpenCode 1.x (server()) and 2 (setup()), with events, approvals and questions mapped to the released v2 API. (#332, thanks @BrikerMan)
  • Claude plan limits, opt-in. Turn on "Show Claude plan limits" and the expanded panel gets a footer with the same 5-hour / weekly windows /usage shows: mini bar, percent, reset countdown. It reads your own Claude Code login, never refreshes the token, and reads or sends nothing while it is off. (#338, thanks @mutoe)
  • AiWork (GUI and CLI/TUI), read-only. Status, running tool and streaming replies reach the notch with nothing to install; approvals and answers stay in AiWork. (#336, thanks @x4vierli)
  • Codex shows what it's doing. Richer task-level status and the agent's latest public output while a turn runs, over SSH too. Reasoning, encrypted content, tool results and subagent messages are never shown. (#343, thanks @954708775)
  • T3 Code awareness. Sessions running under T3 Code get a T3 Code chip, and click-to-jump opens the T3 thread. (#321, thanks @lapinvert)
  • Open / close speed slider in Settings → Appearance (0.5×–2.0×); motion stays interruptible at every setting. (#298/#337, thanks @Luthiel and @Mrjamedd)

Fixes

  • Multiple sessions no longer cross answers. Answering one session's question card could hand that answer to the next session's question when it slid into the same slot. Each request now gets its own card, and a mismatched submission is refused. (#333, thanks @moluoyingxiong)
  • AskUserQuestion is no longer "denied by hook" while a background subagent runs. Subagent activity was mistaken for "answered in the terminal". (#340/#345, thanks @seahindeniz and @halindrome)
  • Oh My Pi 18.2.x: the extension loads again. OMP stopped exporting the native Ask renderer and the extension threw at load, silently cutting off sessions, approvals and questions. Installed copies upgrade to v8 automatically. (#346/#347, thanks @johnpoint and @haixing23)
  • A question card no longer steals keyboard focus when it appears. It used to swallow what you were typing in your editor; it now focuses only if you've already clicked into the island. (#297, thanks @Jruesch72)
  • Grok: /resume no longer leaves two cards. The resumed session was merged into the old card before its SessionStart arrived, and the old card lingered. (#318, thanks @nevermorewei; #331)
  • Remote hosts: custom CLIs install instead of always showing "skipped", and a skipped tool now says why. The remote side honours $CLAUDE_CONFIG_DIR, and remote Claude cards show the last reply again. (#342, thanks @SeasonPilot; #271, thanks @halindrome)
  • iPhone Buddy: an answer to a question that wasn't at the head of the queue is no longer dropped. (#333)

Worth knowing

  • Google Antigravity is now observe-only. Its hook can refuse a tool call but never approve one, so the island's Allow did nothing and Antigravity asked again. The island now shows the running tool and leaves every decision to Antigravity's own prompt. (#339, thanks @maskilx)
  • Trae / Trae CN hooks were rewritten to the six events TRAE documents; the names installed before never fired. Turn on global hooks in Trae's settings. Trae CN is recognised by its real bundle, and later turns are no longer dropped. (#341, thanks @duyinghua; #334, thanks @CXH888888)
  • Codex will ask you to review five new hooks once in /hooks (PreCompact, PostCompact, SubagentStart, SubagentStop, Interrupt).

Docs

  • Both READMEs rewritten: the full 30+ tool list with an animated mascot for every tool, setup notes, where each integration installs, a privacy note, and new screenshots rendered from the real UI.

中文

新功能

  • 支持 OpenCode 2。 OpenCode 2 整体换了插件 API,原插件在 v2 下根本不会加载。现在同一个插件文件同时支持 1.x(server())和 2.x(setup()),事件、审批和提问都按正式版 v2 API 适配。(#332,感谢 @BrikerMan)
  • Claude 套餐额度(可选开启)。 打开「显示 Claude 套餐额度」后,展开面板底部会显示和 /usage 一样的 5 小时 / 每周窗口:迷你进度条、百分比、重置倒计时。使用你自己的 Claude Code 登录,从不刷新 token;关闭时不读取、不发送任何内容。(#338,感谢 @mutoe)
  • AiWork(GUI 与 CLI/TUI),只读展示。 状态、正在执行的工具和流式回复都会进刘海,无需安装任何东西;审批和作答仍在 AiWork 里完成。(#336,感谢 @x4vierli)
  • Codex 显示它在干什么。 回合进行中显示更细的任务级状态和 Agent 最新的公开输出,SSH 远程同样支持。推理、加密内容、工具结果和子 Agent 消息永远不显示。(#343,感谢 @954708775)
  • 识别 T3 Code。 运行在 T3 Code 下的会话会多一个 T3 Code 标签,点击跳转打开对应的 T3 线程。(#321,感谢 @lapinvert)
  • 展开 / 收起速度滑块,在 设置 → 外观(0.5×–2.0×),任何档位下动画都能被打断。(#298/#337,感谢 @Luthiel 和 @Mrjamedd)

修复

  • 多会话不再串答案。 答完一个会话的提问卡片后,下一个会话的卡片顶上来时可能拿到你刚给上一个会话的答案。现在每个请求一张独立卡片,对不上的答案直接拒收。(#333,感谢 @moluoyingxiong)
  • 后台子 Agent 运行时,AskUserQuestion 不再被「denied by hook」。 子 Agent 的活动被误当成「已在终端里回答」。(#340/#345,感谢 @seahindeniz 和 @halindrome)
  • Oh My Pi 18.2.x:扩展恢复加载。 OMP 不再导出原生 Ask 渲染器,扩展一加载就抛错,会话、审批和提问都悄悄断了。已安装的扩展会自动升级到 v8。(#346/#347,感谢 @johnpoint 和 @haixing23)
  • 提问卡片出现时不再抢键盘焦点。 之前会吞掉你在编辑器里正在敲的字;现在只有你已经点进刘海时才自动聚焦。(#297,感谢 @Jruesch72)
  • Grok:/resume 后不再出现两张卡片。 之前新会话在 SessionStart 到达前就被合并进旧卡片,旧卡片还一直不消失。(#318,感谢 @nevermorewei;#331)
  • 远程主机:自定义 CLI 会正常安装,不再一直显示 skipped,被跳过时也会写明原因。远程端遵循 $CLAUDE_CONFIG_DIR,远程 Claude 卡片重新显示最近一条回复。(#342,感谢 @SeasonPilot;#271,感谢 @halindrome)
  • iPhone Buddy: 回答不在队首的提问时,答案不再被丢掉。(#333)

需要注意

  • Google Antigravity 改为只观察。 它的 hook 只能拒绝、不能批准工具调用,刘海上点允许没用,Antigravity 还会再问一遍。现在刘海只显示正在运行的工具,每个决定都交给 Antigravity 自己的弹窗。(#339,感谢 @maskilx)
  • Trae / Trae CN 的 hook 已按 TRAE 官方文档的 6 个事件重写,之前装的事件名从来不会触发。需要在 Trae 设置里打开全局 Hook。Trae CN 按真实包名识别,后续轮次不再被丢掉。(#341,感谢 @duyinghua;#334,感谢 @CXH888888)
  • Codex 会要求你在 /hooks 里审核一次 5 个新 hook(PreCompact、PostCompact、SubagentStart、SubagentStop、Interrupt)。

文档

  • 中英 README 全面重写:完整的 30+ 工具列表,每个工具都配了吉祥物动图,加入配置说明、各集成安装位置、隐私说明,以及用真实界面渲染的新截图。

v1.0.33

Choose a tag to compare

@wxtsky wxtsky released this 01 Sep 14:27
Immutable release. Only release title and notes can be modified.

English

Fixes

  • Qoder IDE is recognised again after its rename. 1.25.1 renamed the bundle to Qoder IDE.app and its executable from Electron to Qoder; every path CodeIsland identified the IDE by still spelled the old name, so an updated install stopped being detected. Both names are matched now — the rename doesn't reach installs that haven't updated. (#327, thanks @JackThinking)
  • Codex: "Always Allow" on an MCP tool no longer invalidates the entire config.toml. Writing a tools table under a server with no declared transport — the built-in codex_app namespace, say — made Codex reject the whole file, surfacing days later as unrelated settings failing to save. Those calls are now approved in-session and never written. (#328, thanks @ArminStoic)
  • Codex: MCP approvals land under the declared server key, and broken configs are repaired at launch. __ is the tool-name separator, so a hyphenated server arrives as davinci_resolve and writing that back created a second, transport-less table. CodeIsland now maps it onto the real key, and on launch cleans up configs already broken — touching only tables carrying its own stamp, and re-pointing rather than dropping an approval you granted. (#316, thanks @unaisshemim)
  • iPhone Buddy: an approval or answer from the phone acts on the session whose card you were looking at. The phone always sent the session id; the Mac was discarding it and acting on the head of the queue. A Bluetooth round trip leaves a wide window for another request to arrive first. (#320, thanks @huangfengjing)
  • The "reply complete" placeholder is localized instead of a hardcoded Chinese string. (#322, thanks @erikh3)

New

  • Herdr pane focus. Click-to-jump focuses the exact live agent pane before raising its hosting terminal, and both jump validation and smart suppression ask Herdr instead of the outer terminal — falling back to ordinary terminal activation when Herdr routing is unavailable or stale. (#239/#323, thanks @erikh3)
  • DeepSeek Harness (DSH). Plugin-native, so there are no shell hooks: the dsh-island cordis plugin forwards DSH's built-in events over the socket and CodeIsland renders them as their own session card. (#317/#315, thanks @cdxiaodong)
  • The question card's session row is a jump target. Click it and the terminal that asked comes to the front, so you can read the conversation before answering — and unlike Skip, the question stays queued and answerable. (#325, thanks @mutoe)
  • The terminal badge names the multiplexer a session runs in. A CLI under tmux inside iTerm2 now reads as both, so several sessions in one terminal window are finally distinguishable. Herdr reads the same way. (#326, thanks @mutoe)

Docs

  • The Codex hook-review step is finally written down. Codex won't run a hook it hasn't been shown, and says so only in its own TUI (1 hook needs review before it can run.) — which from CodeIsland's side is indistinguishable from Codex not being supported at all. (#324, thanks @nogeek-net)
  • Buddy setup is findable: which switch to use, why macOS asks for both Local Network and Bluetooth, and a link to the hardware Buddy build guide that nothing pointed at before. (#318, thanks @nevermorewei)
  • The star-history chart renders again after GitHub's stargazer API restriction left it showing a placeholder. (#319, thanks @FaintFlower)

Code Island Buddy (iPhone) — ships with the next App Store update, not this one

  • With several sessions the compact Dynamic Island was static on both sides: the leading total only drops after cleanup, and the trailing slot held the literal word "Sessions". It now shows active/total, and its dot shows the most demanding status in the group rather than the featured session's — so an approval waiting in another session is no longer invisible. (#330, thanks @caishengwei)

中文

修复

  • Qoder IDE 改名后重新能被识别。 1.25.1 把 bundle 改成 Qoder IDE.app、可执行文件从 Electron 改成 Qoder,而 CodeIsland 用来认这个 IDE 的路径全是旧名字,升级后完全认不出来。现在两个名字都匹配——改名不会自动传播到还没升级的安装。(#327,感谢 @JackThinking)
  • Codex:对 MCP 工具点「Always Allow」不再让整份 config.toml 失效。 往没有声明 transport 的 server 下写 tools 表(比如内置的 codex_app 命名空间)会让 Codex 判定整份配置无效,症状却是几天后某个毫不相干的设置保存不了。这类调用现在只在当前会话内放行,不写盘。(#328,感谢 @ArminStoic)
  • Codex:MCP 授权写到真正声明过的 server key 下面,已写坏的配置启动时自动修复。 __ 是工具名分隔符,带连字符的 server 到我们手上变成 davinci_resolve,照原样写回去会造出第二张没有 transport 的表。现在会映射回真实的 key;启动时清理已经被写坏的配置——只动 CodeIsland 自己盖了注释戳的表,能对应上真实 server 的会改指过去而不是删掉你授过的权。(#316,感谢 @unaisshemim)
  • iPhone Buddy:手机上的批准或作答作用于你当时看着的那张卡片对应的会话。 手机一直在发会话 id,是 Mac 端把它丢掉了、按队列头处理;而蓝牙一个来回留给其它请求插队的窗口相当大。(#320,感谢 @huangfengjing)
  • 「回复完成」占位文案改走本地化,不再是硬编码中文。(#322,感谢 @erikh3)

新增

  • Herdr 面板精确跳转。 点击跳转会先聚焦到对应的 Agent 面板,再唤起宿主终端;跳转校验和智能通知抑制也改为询问 Herdr 而不是外层终端。Herdr 路由不可用或过期时回落到原有的终端跳转。(#239/#323,感谢 @erikh3)
  • DeepSeek Harness(DSH)。 插件原生运行时,没有 shell hook:由 dsh-island cordis 插件把 DSH 的内置事件转发到 socket,CodeIsland 渲染成独立的会话卡片。(#317/#315,感谢 @cdxiaodong)
  • 提问卡片的会话行可以点击跳转。 点一下就把提问的那个终端唤到前台,可以先读完对话再回答;和 Skip 不同,问题仍然排在队列里、仍然可以回答。(#325,感谢 @mutoe)
  • 终端徽章标出会话所在的复用器。 iTerm2 里跑在 tmux 中的 CLI 两个都显示,同一个终端窗口里的多个会话终于能区分开。Herdr 同理。(#326,感谢 @mutoe)

文档

  • 终于把 Codex 的 hook review 这一步写下来了。Codex 不会执行没给它过目的 hook,而且只在自己的 TUI 里提示(1 hook needs review before it can run.)——从 CodeIsland 这边看,跟「不支持 Codex」一模一样。(#324,感谢 @nogeek-net)
  • Buddy 的用法能找到了:开关在哪、macOS 为什么会同时要本地网络和蓝牙权限,以及之前没有任何入口的硬件 Buddy 制作指南链接。(#318,感谢 @nevermorewei)
  • star history 图恢复显示;GitHub 限制 stargazer API 之后它一直是一张占位图。(#319,感谢 @FaintFlower)

Code Island Buddy(iPhone)—— 随下一次 App Store 更新发布,不在本次更新内

  • 多会话时,缩小状态的灵动岛两边都是死的:左边的总数要等回收才减,右边是写死的「会话」二字。现在右边显示 活跃/总数,圆点显示整组里最需要处理的状态而不是主推会话的状态——别的会话里等待批准不再看不见。(#330,感谢 @caishengwei)

v1.0.32

Choose a tag to compare

@wxtsky wxtsky released this 15 Aug 06:32
Immutable release. Only release title and notes can be modified.

English

Performance

  • Idle CPU drops from ~10% to ~1%. A live TimelineView keeps SwiftUI re-running the whole panel layout every display cycle, so a collapsed island with nothing running now holds a static sleeping frame; the 3s running-app enumeration and the 500ms observation poll are gone too (#299, thanks @cbingb666 for the stack sample that made this findable)

Approval routing

  • Answers now go to the card's own session instead of the head of the queue — with several sessions waiting, an answer could reach the wrong CLI (#308, thanks @halindrome)
  • A dismissed approval no longer silences every later permission request from every session (#309, thanks @halindrome)
  • Fix the approval / question card rendering blank after ~2s on some displays — a very tall transparent panel had its compositing dropped by the macOS 26 WindowServer (#304, thanks @LikeSundayLikeRain)

New integrations

  • Grok CLI — native $GROK_HOME hooks, with imported Claude/Cursor hook copies suppressed so each event is delivered exactly once (#291, thanks @hyiiiii)
  • Windows, as a community-maintained port under windows/ — C#/WPF, near feature parity, no impact on the macOS build (#275, thanks @feelingsa)
  • Qoder CN (国行 qoderclicn) — process detection, ~/.qoder-cn config root, transcripts, and a one-click installer entry (#289, thanks @someBrown)

Integration fixes

  • Codex Desktop: restore discovery and lifecycle tracking, keeping app-server, rollout, hook and SQLite channels on one card (#280, thanks @hyiiiii)
  • Antigravity sessions no longer stick on "thinking" — its Stop hook was written in a shape Antigravity silently ignores; existing installs repair automatically (#297)
  • CodeBuddy: the boot-time auth notification no longer mints a second, never-updating session card, and a permission prompt shows as waiting instead of spinning (#288/#290, thanks @someBrown)
  • Hermes sessions settle to idle again — its one per-turn hook is now installed, backed by a timeout for daemon-backed agents (#303, thanks @al9000-max)
  • Remote SSH: Codex approval requests now reach the island — the remote installer never registered PermissionRequest (#306, thanks @Em-perseon)
  • OMP: the terminal's native Ask and the island now race — whichever you answer first wins and cancels the other (#264, thanks @haixing23)
  • pi: approving on the island marks the tool call so a co-installed permission-gate can skip its terminal prompt (#286, thanks @cat0825)
  • Cursor Tasks without a foldable transcript path merge or hide via a narrow same-PID parent fallback; mascot and badge always agree on the brand (#296, thanks @zephyr110)
  • Qoder: omit the scalar answer key that its strict AskUserQuestion schema rejects (#300, thanks @ri-char)

Click-to-jump

  • Reaches Orca worktree terminals (per-terminal switch, so two worktrees of one repo are distinguishable) and Zed's integrated terminal (#302/#307, thanks @chelswcs and @Felictycf)
  • Terminal.app no longer aborts on a tab-less invisible window, which used to skip every later window (#294, thanks @kuznetsov-m)

Settings & UI

  • Menu-bar icon is now a monochrome template image, per macOS convention — it follows light/dark, menu-bar tint and the pressed state (#313, thanks @RooobinYe)
  • New: Auto-Expand on Approval (on by default). Turn it off and the island stays collapsed on approvals — the sound still plays and the card is one click away (#292, thanks @chris-tim)
  • New: Always-proceed Agents — permission requests from listed agents are approved without a card, for CLIs already running in their own Turbo/YOLO mode (#283, thanks @fajarnuha)
  • Sound behaviour is now testable, and pinned: a burst of queued approvals chimes once (#312, thanks @halindrome)

中文

性能

  • 空闲 CPU 从约 10% 降到约 1%。只要屏幕上还有一个活着的 TimelineView,SwiftUI 就每个显示周期重跑整个面板布局;现在灵动岛收起且无任务时渲染静态睡眠帧,同时去掉 3 秒一次的运行程序枚举和 500 毫秒轮询(#299,感谢 @cbingb666 提供的堆栈采样)

审批路由

  • 作答现在投递到卡片所属的会话,而不是队列头——多个会话同时等待时,答案可能发给错误的 CLI(#308,感谢 @halindrome)
  • 关掉一张审批卡不再让之后所有会话的权限请求集体静默(#309,感谢 @halindrome)
  • 修复部分屏幕上审批 / 提问卡片约 2 秒后变空白——过高的透明面板被 macOS 26 WindowServer 停止合成(#304,感谢 @LikeSundayLikeRain)

新增集成

  • Grok CLI——接入 $GROK_HOME 原生 hooks,并抑制 Grok 导入的 Claude/Cursor hook 副本,保证每个事件只投递一次(#291,感谢 @hyiiiii)
  • Windows 支持,作为社区维护的移植放在 windows/ 目录——C#/WPF,功能基本对齐,不影响 macOS 构建(#275,感谢 @feelingsa)
  • Qoder 国行版(qoderclicn)——进程识别、~/.qoder-cn 配置根、transcript 读取,以及设置里一键安装(#289,感谢 @someBrown)

集成修复

  • Codex Desktop:恢复会话发现与生命周期跟踪,app-server / rollout / hook / SQLite 四条通道归到同一张卡(#280,感谢 @hyiiiii)
  • Antigravity 会话不再卡在「思考中」——它的 Stop hook 之前写成了 Antigravity 会静默忽略的格式,已安装的配置会自动修复(#297)
  • CodeBuddy:启动时的登录通知不再多出一张永不更新的会话卡;权限提示现在显示为「等待批准」而不是一直转圈(#288/#290,感谢 @someBrown)
  • Hermes 会话恢复回到空闲——装上它唯一的每轮 hook,并为守护进程型 agent 加了沉默超时兜底(#303,感谢 @al9000-max)
  • 远程 SSH:Codex 的审批请求终于能到岛上了——远程安装器此前从未注册 PermissionRequest(#306,感谢 @Em-perseon)
  • OMP:终端原生 Ask 与灵动岛现在并行竞速——先答的一端生效并取消另一端(#264,感谢 @haixing23)
  • pi:在岛上批准后会标记该工具调用,共存的 permission-gate 可据此跳过终端里的二次确认(#286,感谢 @cat0825)
  • Cursor Task 在没有可折叠 transcript 路径时,改用收紧的同 PID 父卡兜底来合并 / 隐藏;吉祥物与角标的品牌始终一致(#296,感谢 @zephyr110)
  • Qoder:去掉其严格 AskUserQuestion schema 会拒绝的标量 answer 字段(#300,感谢 @ri-char)

点击跳转

  • 支持 Orca 的 worktree 终端(按终端精确切换,同一仓库的两个 worktree 可区分)与 Zed 内置终端(#302/#307,感谢 @chelswcs 和 @Felictycf)
  • Terminal.app 不再因为一个无标签页的隐形窗口而中断,之前会导致其后所有窗口都被跳过(#294,感谢 @kuznetsov-m)

设置与界面

  • 菜单栏图标改为黑白模板图,遵循 macOS 惯例——跟随浅色 / 深色、菜单栏着色与按下状态(#313,感谢 @RooobinYe)
  • 新增「权限请求时自动展开」(默认开启)。关闭后收到审批时灵动岛保持收起——提示音照常,卡片点一下就能打开(#292,感谢 @chris-tim)
  • 新增「免确认的 Agent」——名单内 agent 的权限请求直接放行、不弹卡片,适合本身已开 Turbo/YOLO 模式的 CLI(#283,感谢 @fajarnuha)
  • 提示音行为现在可测试并已加断言:一串排队的审批只响一次(#312,感谢 @halindrome)

v1.0.31

Choose a tag to compare

@wxtsky wxtsky released this 23 Jul 05:24
Immutable release. Only release title and notes can be modified.

English

  • ZCode approval buttons — allow / always allow / deny from the island; safely falls back to ZCode's own dialog when CodeIsland isn't running; restart ZCode once after updating (#258, thanks @JamesJian-tech)
  • Support Codex Desktop hosted by ChatGPT.app, with live running/idle state from turn lifecycle events (#267, thanks @Haoo-7); SessionEnd hook timeout capped at upstream's 3s limit (#279, thanks @hexsean)
  • Restore OpenCode plugin for current releases — new v2 events mapped, plugin auto-repairs to the ESM build (#257, thanks @x22x22)
  • Detect Kimi Code CLI under ~/.kimi-code; legacy ~/.kimi still works (#274, thanks @zephyr110)
  • Fold Cursor Tasks under Agent Sub-Sessions (separate / merge / hide) with closed-task tombstones (#262, thanks @zephyr110)
  • Cursor questions no longer stick on "thinking" — waiting card with the question text and an "Answer in Cursor" hint (#265)
  • Add Trae CLI Next hooks (~/.trae/cli/hooks.json, TraeX event schema) (#266, thanks @Hayak3)
  • Add Qoder PermissionRequest hooks + Qoder on SSH remote hosts (#272/#273, thanks @ri-char)
  • Honor $CLAUDE_CONFIG_DIR with auto-detection and a Settings override (#269/#270, thanks @halindrome)
  • Fix overnight CPU pegging one core (transcript tailer offset drift; also fixes silently dropped messages on split lines) (#278)
  • Fix the island detaching from the notch after display reconfigure / wake (#263)
  • Island width slider now works on notched displays (#268)
  • iOS companion: English localization (#260) + foreground auto-reconnect (#261) — arrive with Buddy's next App Store update

中文

  • ZCode 审批按钮上线——允许 / 始终允许 / 拒绝都能在岛上操作;CodeIsland 未运行时安全回落原生弹窗;升级后需重启一次 ZCode(#258,感谢 @JamesJian-tech)
  • 支持 ChatGPT.app 托管的 Codex Desktop,按 turn 生命周期实时显示运行/空闲(#267,感谢 @Haoo-7);SessionEnd hook 超时按上游 3 秒上限收紧(#279,感谢 @hexsean)
  • 恢复对新版 OpenCode 的插件支持——映射 v2 新事件,插件自动修复为 ESM 版本(#257,感谢 @x22x22)
  • 识别迁移到 ~/.kimi-code 的 Kimi Code CLI,旧路径继续兼容(#274,感谢 @zephyr110)
  • Cursor Task 纳入「Agent 子会话」设置(独立 / 合并 / 隐藏),已结束 Task 不再被复活(#262,感谢 @zephyr110)
  • Cursor 提问不再卡在「思考中」——转为等待态并显示问题与「请到 Cursor 中作答」提示(#265)
  • 新增 Trae CLI Next 支持(~/.trae/cli/hooks.json,TraeX 事件名)(#266,感谢 @Hayak3)
  • 新增 Qoder 审批 hook 及 SSH 远程主机支持(#272/#273,感谢 @ri-char)
  • 支持 $CLAUDE_CONFIG_DIR——自动探测 + 设置项覆盖(#269/#270,感谢 @halindrome)
  • 修复过夜后单核 CPU 满转(transcript tailer 偏移漂移;同时修复分片长行消息静默丢失)(#278)
  • 修复显示器重配置 / 唤醒后灵动岛脱离刘海的问题(#263)
  • 灵动岛宽度滑块在有刘海的屏幕上生效(#268)
  • iOS 配套 app:英文本地化(#260)+ 回前台自动重连(#261)——随 Buddy 下一次 App Store 更新到达

v1.0.30

Choose a tag to compare

@wxtsky wxtsky released this 10 Jul 03:01
Immutable release. Only release title and notes can be modified.

English

  • Add ZCode (Z.ai) integration — hooks written silently to ~/.zcode/cli/config.json with a strict event-name whitelist; restart ZCode after enabling (#245, thanks @JamesJian-tech for the plugin-structure intel)
  • Add QoderWork integration — Qoder's standalone desktop assistant, Claude-format hooks in ~/.qoderwork/settings.json; restart QoderWork after enabling (#249)
  • Add Traditional Chinese (zh-Hant) localization, hand-tuned Taiwan wording for all 287 strings (#251, thanks @hongyinull)
  • Add Quiet Hours — mute all event sounds inside a configured window (spans midnight); a small moon on the collapsed pill explains the silence
  • Add git branch / worktree indicator on session cards (⎇ branch, ⧉ for linked worktrees) — made for parallel-worktree agent workflows
  • Add Glance completion mode — on completion, light a green dot on the collapsed island instead of expanding; clears the moment you expand (three-way setting: expand / glance / off)
  • Add Claude token-usage footer under the session list — 5-hour and today windows aggregated from local transcripts (no API calls) with a 12-hour activity sparkline and cache-detail tooltip
  • Add Terax terminal click-to-jump (#253, thanks @wangmian0)
  • Complete cursor-cli / qoder-cli routing: dedicated process matching, real project names for Cursor sessions, grouped under their IDEs in the CLI tab; remote cwd filters honor workspace_roots and never drop lifecycle/approval hooks of tracked sessions (#248/#240/#255, thanks @zephyr110)
  • Every CLI row in settings now has an icon — pixel-mascot icons for Kiro & OpenClaw, deterministic monogram tiles for the rest (including custom CLIs)
  • Fix Codex "Always Allow" writing broken Starlark rules for multiline commands — newlines are now escaped, existing broken files need the bad rule removed once (#250/#252, thanks @hexsean)
  • Fix blocking AskUserQuestion cards staying collapsed under Smart Suppress — OMP (and every provider) waits on the island, so the card now always opens (#256, thanks @haixing23)
  • Fix legitimate dot-named repos (.dotfiles, .config) displaying their parent folder's name
  • Fix remote SSH sessions showing the local machine's git branch when directory layouts match
  • Fix zellij-inside-Terax losing precise pane focus on click-to-jump
  • Fix the ZCode installer flipping a user's explicit hooks master switch back on
  • Usage scanning is incremental (per-file byte offsets) — day-long multi-MB transcripts are read once, not on every panel expansion
  • Claude sessions running in $HOME keep model detection; Cursor project-path decoding moved off the render path

中文

  • 新增 ZCode(智谱 Z.ai)集成——hooks 静默写入 ~/.zcode/cli/config.json,严格事件名白名单防御;勾选后需重启 ZCode 生效(#245,感谢 @JamesJian-tech 提供插件结构情报)
  • 新增 QoderWork 集成——Qoder 生态的独立桌面助手,Claude 格式 hooks 写入 ~/.qoderwork/settings.json;勾选后需重启 QoderWork(#249)
  • 新增繁体中文本地化,287 条文案逐条采用台湾用语校对(#251,感谢 @hongyinull)
  • 新增「静默时段」——设定时间段内静音全部音效(支持跨午夜);静默期间收起的岛上会显示小月亮说明为何无声
  • 会话卡片新增 Git 分支 / worktree 指示器(⎇ 分支名,linked worktree 附 ⧉ 标记)——为并行 worktree 跑多 agent 的工作流而生
  • 新增 Glance 完成模式——任务完成时不弹面板,只在收起的岛上亮起绿点,展开即熄灭(完成提醒三选一:展开 / 绿点 / 无动作)
  • 会话列表底部新增 Claude 用量统计——本地 transcript 聚合 5 小时窗口与今日用量(零网络请求),附 12 小时活动迷你柱状图与缓存明细悬浮提示
  • 新增 Terax 终端点击跳转(#253,感谢 @wangmian0)
  • 补全 cursor-cli / qoder-cli 路由:独立进程匹配、Cursor 会话显示真实项目名、CLI 分组归入所属 IDE;远程目录过滤识别 workspace_roots,且不再误拦已跟踪会话的生命周期/审批 hook(#248/#240/#255,感谢 @zephyr110)
  • 设置里每个 CLI 行都有图标了——Kiro 与 OpenClaw 使用像素吉祥物图标,其余(含自定义 CLI)使用稳定配色的首字母图标
  • 修复 Codex「始终允许」对多行命令写出损坏的 Starlark 规则——换行符现已转义,已损坏的规则文件需手动删除坏段一次(#250/#252,感谢 @hexsean)
  • 修复智能抑制下阻塞式 AskUserQuestion 卡片不展开——OMP(及所有 provider)都在等岛上作答,卡片现在始终弹出(#256,感谢 @haixing23)
  • 修复合法的 dot 开头仓库(.dotfiles、.config)显示成父目录名的问题
  • 修复远程 SSH 会话在两端目录结构相同时显示本机 Git 分支的问题
  • 修复 Terax 内运行 zellij 时点击跳转丢失精确 pane 聚焦的问题
  • 修复 ZCode 安装器会把用户显式关闭的 hooks 总开关重新打开的问题
  • 用量扫描改为增量式(按文件记录字节偏移)——日级长会话的大 transcript 只读一次,不再每次展开面板重读
  • 在 $HOME 下直接运行的 Claude 会话保留模型识别;Cursor 项目路径解码移出渲染路径

v1.0.29

Choose a tag to compare

@wxtsky wxtsky released this 06 Jul 02:30
Immutable release. Only release title and notes can be modified.

Highlights

New integrations 🦞

  • OpenClaw — auto-installed TypeScript plugin pack with the new Molty space-lobster mascot (#235)
  • Claude Code Desktop — local Code-tab sessions recognized, tagged, and click-to-jump opens the right desktop window (#211)
  • Kiro gets its own pixel-ghost mascot; settings gallery completed

Answer agent questions from the island

  • The OMP / pi ask tool now pops the island's question UI — answer on your Mac (or iPhone/Watch) and it flows back to the agent; skip to fall through to the terminal (#244)

Quality of life

  • Per-host working-directory filter for shared remote SSH accounts (#240)
  • The island auto-dodges Bartender & friends on external screens (#219)
  • Gentler hover: quick pass-throughs no longer pop the panel; width slider steps by 1% (#208, thanks @Lucker-QY)
  • Approval buttons show their enabled keyboard shortcuts

Mascot motion polish — all 18 characters: irregular natural blinks, asymmetric breathing, dream twitches, humanized typing with "reading the output" pauses, de-synced float rhythms (#15)

Performance — idle CPU down ~38% (8.5% → 5.3%): every mascot's frame loop now pauses when hidden/asleep, idle scenes render at 8fps, wake no longer replays missed frames

Fixes

  • launchd daemons (Hermes gateway) no longer SIGTERM'd in a restart loop (#243)
  • Watch companion crash-on-launch loop hardened (#246; ships with the next App Store companion build)
  • Remote SSH install no longer wipes user-authored hooks (#242)
  • cursor-cli / qoder-cli mascot mapping (#248, thanks @zephyr110)
  • No more Bluetooth permission prompt for users who never enabled the iPhone companion

Plus everything since v1.0.28: native iPad companion layout (#238), German localization (#234), Google Antigravity approval details (#233), host-GUI-client jump (#237), pi/omp mascot setting (#228).


中文

新集成 🦞

  • OpenClaw——自动安装插件包,附全新太空龙虾吉祥物 Molty(#235)
  • Claude Code 桌面版——本地 Code 会话可识别、点击跳转到对应窗口(#211)
  • Kiro 拥有专属像素幽灵吉祥物;设置图鉴补全

在岛上回答 agent 提问

  • OMP / pi 的 ask 提问接入灵动岛问答 UI——在 Mac(或 iPhone/手表)作答后自动回填给 agent,跳过则回落终端(#244)

体验优化

  • 远程 SSH 主机按工作目录过滤会话(共享账号隐私)(#240)
  • 外接屏自动避开 Bartender 等菜单栏图标(#219)
  • hover 更跟手:快速划过不再误弹面板;宽度滑块 1% 步长(#208,感谢 @Lucker-QY)
  • 审批按钮显示已启用的快捷键

吉祥物动画质感——全部 18 个角色:不规则眨眼、非对称呼吸、睡梦小动作、拟人打字停顿、漂浮节奏去同步(#15)

性能——空闲 CPU 降低约 38%(8.5% → 5.3%):所有吉祥物帧循环在隐藏/睡眠时暂停、空闲动画 8fps、唤醒不回放积压帧

修复

  • launchd 守护进程(Hermes gateway)不再被反复 SIGTERM(#243)
  • 手表端启动崩溃循环加固(#246,随下次 App Store companion 版本生效)
  • 远程 SSH 不再覆盖用户自定义 hooks(#242)
  • cursor-cli / qoder-cli 吉祥物映射(#248,感谢 @zephyr110)
  • 未启用 iPhone 配件不再弹蓝牙权限

以及 v1.0.28 以来的全部改进:iPad 原生布局(#238)、德语本地化(#234)、Google Antigravity 审批详情(#233)、宿主客户端跳转(#237)、pi/omp 吉祥物设置(#228)。