Skip to content

v1.0.36

Choose a tag to compare

@wxtsky wxtsky released this 10 Oct 00:33
· 5 commits to main since this release
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 "Hide" its approvals, and those of OpenCode / MiMo Code, are no longer approved automatically
  • Claude Code installed with Homebrew on Apple Silicon gets the PostToolUseFailure and StopFailure hooks again (its version was never detected)
  • OpenCode session titles reach the island
  • Hermes hooks installed on SSH hosts actually run — Hermes executes hook commands without a shell, so the VAR=value python3 ~/… form was taken for a program name; they are now env … python3 <absolute path> and replace the old entries on the next connect
  • The standalone Qoder App, which shares the ~/.qoder hooks with the Qoder IDE, is recognised: its sessions carry a Qoder badge (the IDE's now reads Qoder IDE) and a click brings the app forward (#366, #367)
  • On a Mac without DeepSeek Harness or Cline, CodeIsland no longer creates a ~/.dsh file (which made DeepSeek Harness look installed, and is removed at launch) or a ~/Documents/Cline/Hooks folder, and Cline's hook scripts are no longer rewritten every few minutes

中文

新功能

  • MiniMax Code CLI 上岛。 mcode 会话以独立卡片显示——实时状态、正在运行的工具、prompt 与回复。mcode 只能通过插件加载 shell hook,因此检测到 MiniMax Code 时,CodeIsland 会在 ~/.minimax/plugins/codeisland/ 写入一个本地插件包(支持 $MINIMAX_DATA_DIR),下一次 mcode 会话启动即生效。权限审批可以在刘海上处理 10 秒——这是 mcode 允许插件 hook 等待的上限——超时后交回 mcode 自己的确认界面。设置 → Hooks → MiniMax Code CLI
  • Xiaomi MiMo 与 MiMo Code 上岛。 Xiaomi MiMo 桌面端(国内版与海外版)的内核就是 MiMo Code,两者都从 ~/.config/mimocode/plugins/ 加载插件,所以 CodeIsland 在这里装一个插件(不改 MiMo 的配置文件)就同时支持两者:实时状态、正在运行的工具、会话标题、完成提醒;审批和提问可以在刘海上处理,也可以照常在 MiMo 里处理,以先操作的为准。点击桌面端会话会把 Xiaomi MiMo 切到前台,mimo 命令行会话照常跳回终端。更新后请重启一次 MiMo 以加载插件。设置 → Hooks → MiMo Code / Xiaomi MiMo
  • Hermes 卡片显示 prompt、回复和会话标题。 Hermes 的 on_session_end 其实在每一轮结束时都会触发,并不是会话结束,CodeIsland 却把它当成了会话结束:每次回复完卡片就被删掉,下一轮再新建一张只有状态和会话 ID 的空卡片。现在一轮结束时卡片像其他 Agent 一样回到空闲(弹出完成卡片、播放提示音;被中途停止的一轮标为已中断),新增的 pre_llm_call hook 让 prompt 一发出就显示在卡片上,新增的 on_session_finalize hook 在会话真正结束时移除卡片(/new、退出 hermes、关闭桌面端对话、gateway 停止)。Gateway 聊天(Telegram、Discord、Slack、WhatsApp、邮件等,以及 API Server)只更新卡片,不弹完成卡片、不响提示音,空闲 10 分钟后移除;命令行、TUI、桌面 App 和 ACP 编辑器与其他 Agent 一致。没有任何 hook 携带的会话标题(由 Hermes 自动生成),以及相应 hook 尚未获准时的最新 prompt 和回复,改从 Hermes 自己的会话库读取($HERMES_HOME/state.db,只读、在主线程之外;SSH 远程主机上由远程 hook 在那边读取)。桥接程序也不再转发 Hermes 附在每个轮次 hook 上的完整对话。Hermes 在首次运行每个新 hook 前会询问一次:下次在终端启动 hermes 时回答 y 即可。Gateway 和桌面 App 无法询问,会跳过未批准的 hook,所以请在终端里批准一次,或在 config.yaml 里设置 hooks_auto_accept: true(#364,感谢 @geminiwhale)
  • 点击跳转能定位到 Claude 桌面 App 里的具体会话。 在 Claude 桌面 App 的 Code 标签里跑的 Claude Code 会话,以前点击只会唤醒 App,停在它上次显示的会话上。现在桥接程序会转发 App 给每个会话的 id(CLAUDE_CODE_HOST_SESSION_ID),点击时打开 claude://code/continue?session=<id>(App 自己 Dock 菜单用的就是这个链接),直接进入对应会话。拿不到 id 的会话(不是从 App 启动的,或者更新后还没触发过 hook)照旧只唤醒 App
  • 收起态也能看 Claude 套餐额度。 开启「显示 Claude 套餐额度」后,没有工具在运行时,左翼的工具位显示一个 chip(窗口、圆环、百分比),悬停可看全部窗口。「收起时显示」可选自动、5 小时、周、周(特定模型:服务端为某个模型单独设的周额度)或不显示。「自动」显示周额度:进度超前或超过 80% 的优先;否则本周已过半、还剩很多的那条(圆环标绿:值得在重置前用掉的额度);再否则更紧的那条。只有 5 小时窗口真会卡住你时(用量过半且比匀速超前 10 个百分点以上)才让给它。chip 的百分比下方挂一个小的速度标记:比匀速消耗多用(橙)或少用(绿)的百分点,展开面板底栏在悬停提示里给出同样的信息;悬停提示再给出超前 / 落后折合多少窗口时间,以及照此速度多久用完、或重置时大约用到多少。窗口前 10% 的时间和窗口重置之后不显示标记;菜单栏高度的药丸(外接显示器)放不下,只在悬停提示里显示。刘海屏上药丸只向左加宽 chip 放不下的那一截,chip 不会钻到刘海底下,右翼位置也不变。chip 开启时,收起状态下也会刷新:启动时取一次,照旧由 Stop hook 驱动,另有 10 分钟一次的刷新以赶上窗口重置。设置关闭时收起栏完全不变
  • 提问卡片可以关闭了。 以前提问卡片不回答就一直停在那里:鼠标移开或点别处都不会收起卡片,而「跳过」本身就是一种回答(对 AskUserQuestion 来说是拒绝这次工具调用)。现在多了和审批卡片一样的「收起」按钮:只关掉卡片、不作答,Agent 继续等待,你可以回终端回答,也可以点收起栏上的提问角标重新打开。关掉的提问不会自己弹回来,不再跟进提醒,跳过快捷键也不会动它;新的提问(哪怕来自同一个会话)照常弹出

改进

  • 会话列表先给你看要处理的。 每张卡片用文字标出状态——待处理、运行中、思考中、已完成、已中断,这一轮失败时显示「出错」——左侧配同色竖条,状态不再只靠项目名的颜色。等你处理的会话排在最前,然后是运行中的,其余按最近活动排序。鼠标停在列表上时顺序保持不变,卡片不会在指针下挪动(「按状态分组」现在把等待中排在运行中之前,指针离开前卡片也留在原来的分组里)。你的 prompt(›)、Agent 的回复(●)和正在运行的工具(▸ 标签)各有各的符号,不再都用「$」。内联审批按钮与改版后的审批卡片一致:「允许一次」是唯一的实心按钮,「拒绝」是描边按钮,「始终允许 <工具>」是链接。新增:设置 → 外观 → 会话列表密度 → 紧凑,每个会话只占一行,只展开需要你处理的会话,14 寸 MacBook 不滚动就能放下 8 个
  • 审批与提问卡片:该按哪个一目了然。 审批卡片在发起请求的 Agent、项目和分支下方直接写明要做什么——「Bash 请求运行命令」「Edit 请求修改 Dashboard.tsx」「github 请求调用 create_pull_request」,并标出排队位置(「第 1/3 个」)。「允许一次」是唯一的实心按钮,位于最右侧;「拒绝」为描边按钮;「收起」改为纯文字;「始终允许」改为写明范围的链接:「本会话始终允许 Bash」,Codex 则写明规则保存在哪里(~/.codex/rules,MCP 工具为 ~/.codex/config.toml)。提问卡片按同样的层级排列:「确认 / 提交」为实心按钮(没有可提交的内容时置灰),「跳过」为描边按钮,「收起」为文字。只有在设置里开启了对应的快捷键,按钮上才会显示它。卡片文字跟随「设置 → 外观 → 内容字体大小」;比窗口还长的命令可以滚动查看,不再被截断
  • 更清楚的面板标题栏与用量底栏。 分组标签写全为 ALL · STATUS · AGENT,像素字更亮、点击区域更高(刘海旁空间不够时退回 ALL · STA · AGT)。退出要确认一次:第一次点击会把电源按钮变成红色的「退出?」,3 秒内再点一次才会退出;超时、鼠标移开或面板收起都会恢复原样,VoiceOver 会读出提示,开启「减弱动态效果」时直接切换、不做滑动。开启套餐额度后,底栏合并成一行,先列出会卡住你的额度——每个窗口的进度条、百分比(接近上限时变色)和重置倒计时——走势图放在行尾;token 总量和进度偏差移入悬停提示。未开启套餐额度时,token 行用文字代替箭头(「近 5 小时:输入 422K · 输出 96K 今日:输入 922K · 输出 233K」),悬停提示把「输入」拆成新输入、缓存写入与缓存读取
  • 卡片放得下,也看得出是谁在问。 审批卡片和提问卡片一样,显示所属的 Agent 与项目。会话列表、长问题、长选项列表过高时在窗口内滚动,不再超出窗口底边,最后一个会话、底栏以及「收起 / 跳过」按钮始终够得着;问题完整显示,不再截成三行
  • 无障碍: 面板上的浅色文字达到 WCAG AA 对比度;开启「减弱动态效果」后吉祥物静止,闪光与脉动角标停止;面板的图标按钮和像素标签有 VoiceOver 标签与提示,「收起 / 跳过 / 始终允许」会说明各自的作用(「始终允许」会说明规则是本次会话有效还是像 Codex 那样永久保存);「Dismiss」的中文从「忽略」改为「收起」

修复

  • 安装 Codex hook 不再在配置末尾追加重复的 [features] 表导致 Codex 无法启动,已经被这样写坏的配置也会自动修复(#354)
  • Codex 的 Interrupt 与 SessionEnd hook 超时不再超过 Codex 的 3 秒上限(本机与远程)
  • Codex App 里按轮选择的「自动审查」会被尊重,自动审查(guardian)与 /review 线程遵循「插件子会话」设置(#348)
  • 完成卡片不会再让主线程陷入无限布局循环、卡死 App 和等待中的 hook(#357)
  • 刘海屏上收起栏的提问角标和完成小圆点不再被刘海挡住
  • AiWork 会话被监视器移除后(Agent 已结束,或关闭了该界面的监控),不再留下一张空的完成卡片
  • Claude Code(Homebrew 或官方安装器安装)不再被误认成它所在终端的那个 App,因此「插件子会话」设为「隐藏」时,它以及 OpenCode / MiMo Code 的审批不再被自动放行
  • Apple Silicon 上用 Homebrew 安装的 Claude Code 重新装上 PostToolUseFailure 与 StopFailure hook(之前检测不到它的版本)
  • OpenCode 的会话标题能显示到刘海上了
  • SSH 远程主机上安装的 Hermes hook 终于能运行——Hermes 不经 shell 直接执行 hook 命令,VAR=value python3 ~/… 被当成了程序名,现在改为 env … python3 <绝对路径>,下次连接时替换旧条目
  • 独立的 Qoder App(与 Qoder IDE 共用 ~/.qoder 的 hook)能被识别了:会话显示 Qoder 标签(IDE 的标签改为 Qoder IDE),点击会把 Qoder App 切到前台(#366、#367)
  • 没有安装 DeepSeek Harness 或 Cline 的 Mac 上,CodeIsland 不再创建 ~/.dsh 文件(它会让 DeepSeek Harness 显示为已安装,启动时会被清理掉)或 ~/Documents/Cline/Hooks 文件夹,Cline 的 hook 脚本也不再每隔几分钟被重写一遍