Skip to content

codeman@1.41.0

Latest

Choose a tag to compare

@github-actions github-actions released this 10 Oct 05:15
· 4 commits to master since this release

Minor Changes

  • 87f1c9c: ### Thanks

    • @Randalix for codeman agent (#557), the session verbs (ls, spawn, send, wait, read, interrupt, rm) for agents in every CLI mode, and for moving every test server onto an ephemeral port (#570), which finishes #440. Thanks also for reporting and fixing git's clone errors on non-English hosts (#568, shipped as #572 with your commit).
    • @opticon454 for five PRs: MCP server sync for GitHub Copilot CLI (#581), an Apply button that saves Settings without closing them (#565), configurable toast and browser-notification display times (#564), in-document links in rendered markdown that scroll to their heading (#563), and npm-based CLI installs that work when the system npm prefix is root-owned (#562).
    • @JDProfresh for three PRs: pasted and uploaded files moving into a hidden, self-ignoring .codeman-uploads/ folder (#574, after your #553 proposal), local echo that keeps painting on phones when the view sits above the bottom (#576), and upload failures that say why they failed (#578).
    • @aakhter for session search on the vertical tab rail (#580), built on the sidebar's existing filter instead of a second one, and for keeping alerted tabs visible during a search.

    Codeman tile grid: six live agents powering on and off with the CRT tile animation

    Tile Animations (#571). The tile grid from 1.40.0 can now open with a show. App Settings has a new Animations section (right after Appearance) that holds every animation setting: the Entrance Theme (moved out of Appearance), the new Tile Animations row, and a button that opens the animation lab. Tile styles: CRT (each tile switches on as a hot line in a diagonal wave, and switches off to a line and a dot), Fly from tab (each tile grows out of its session tab and flies back into it), Deal (dealt out of the Tiles button like cards), Beam down, Cascade, Pop, Soft and None. A styled tile plays in two beats: the frame enters in the tile style, then its screen powers on in the terminal style of your Entrance Theme. Picking a theme presets a matching tile style, and a new Launch theme flies the tiles out of their tabs. Off by default (the grid keeps its quick fade), per device, nothing moves under reduced motion, and the animations never cost an extra PTY resize. The terminal pane's Boot entrance style is gone; a saved Boot falls back to off.

    Tiles open the sessions you care about, and keep your layout. With no grid arranged yet, the Tiles button (or Ctrl+Shift+G) now fills the grid with the sessions that are working first (most recently started first), then the ones waiting on you (a permission prompt or a finished turn you have not seen), then the most recently used, instead of the tabs in strip order, which opened the oldest ones. The session you are on is still always included. Once you arrange a grid (which session sits where, empty cells, the tile count, divider sizes, the focused and zoomed tile), that layout is remembered in this browser and the Tiles button brings it back exactly, however the grid was closed, and so does a reload while it was open. A session that has gone since frees its place, which the same ranking fills. A grid larger than the window opens in full with the focused tile zoomed, instead of being trimmed (and losing the rest of your layout).

    The wheel scrolls Claude inside a tile (#577). In a tile or the split's second pane, a Claude session on its fullscreen renderer now scrolls its own conversation with the mouse wheel, exactly like the main terminal: the wheel goes to Claude as mouse reports, aimed at that tile's session and computed from the tile's own screen. Before, the wheel did nothing or scrolled the stale frames left over from loading the tile. Shift+wheel (scroll local history) works in every tile on Windows and Linux too; it was dead there.

    codeman agent: session verbs for every CLI (#557). Agents in any mode (Codex, OpenCode, Gemini, Pi and the rest, not just Claude) can now drive other Codeman sessions from the command line: codeman agent ls | spawn | send | wait | read | interrupt | rm. It is a thin client over the existing session API: every call names the session that made it, wait blocks on a signal (--until stop,exit) or a literal output marker (--match), and exit codes say what happened (0 ok, 1 error, 2 timeout, 3 exited, 4 refused). Ids shorter than 8 characters are refused, so a stray rm 9 can never pick a session at random, and rm never deletes the session it runs in. See the README section "codeman agent" and the wiki page Driving Codeman From An Agent. This is phase 1 of #445.

    Settings: Apply (#565). Next to Save, an Apply button saves the same way but keeps Settings open. Switching on MCP server sync makes its Preview and Sync usable straight away, and CLI management's add, enable and disable work without closing and reopening Settings.

    MCP server sync reaches GitHub Copilot CLI (#581). With MCP server sync on (App Settings, off by default), Copilot CLI's ~/.copilot/mcp-config.json now takes part like the agent CLIs' own files: its servers are copied to the others and theirs to it, additively, with the previous file kept as .codeman-bak. Copilot joins only when it is installed or already has that file, a server switched off in Copilot is never copied, and COPILOT_HOME is followed. Copilot is a sync target only, not a new run mode.

    Notifications stay up longer if you want (#564). Settings → Notifications has a Toast display time and a Browser notification display time (1 second to 5 minutes, per device; the defaults stay 3 s and 8 s).

    CLI logos on tabs can be switched off (#569). App Settings → Appearance → Tabs → CLI Logos on Tabs hides the agent logo on every tab surface (header strip, rails, sidebar, phone chips, the desktop home list) on this device. On by default. Tile headers, split pane headers and the Run menus keep their logos.

    Search sessions on the vertical rail (#580). The vertical tab rail has a Search sessions box at the top: type part of a name and the rail narrows to the tabs that match (a web tab by its title), across every group, collapsed ones included, without touching your groups, their collapse or the tab order. A tab with an alert stays visible even when its name does not match, so a prompt waiting on you is never filtered away. Escape or × clears it, you can still drag a found tab into a group, and nothing is saved. The sidebar's filter box shares the same filter: a tab with an alert stays visible there too, and in the by-case tab layout a case with no match now hides.

    Closing a tab is instant. Closing a session used to take half a second or more before the tab went away. The tab, tile or split pane now goes (and the next session is selected) the moment you click, while the server shuts the session down in the background, and the server side is faster too (about 450 ms down to 200-260 ms for a Claude session): it no longer sleeps fixed intervals, no longer freezes for about 70 ms per close on a synchronous tmux call, and scans for a session's subagents once instead of once per subagent. If the server refuses the close, the tab comes back where it was with the error. This also fixes a bug where a failed close still said "Session closed" while the session kept running.

    Fixes.

    • Clone errors on non-English hosts (#572, from #568). Cloning a repository as a case now classifies a failed clone correctly whatever the host's language: a missing branch or tag is "does not exist on the remote" (400) and a missing repository is a 404, instead of a generic 422 with git's German (or any other) error text. Git runs with LC_ALL=C for clones and repo status, so the repo status card's error text is English on every host as well.
    • Links within a markdown file (#563). A link to another heading of the same document ([Install](#installation)) in the File Viewer or Response Viewer scrolls to that heading instead of doing nothing. Headings get GitHub-style slugs, repeated titles are numbered, and non-ASCII headings work.
    • npm CLI installs on a root-owned prefix (#562). Installing an npm-based CLI from Settings (DeepSeek's dsh, pi, ...) no longer fails with EACCES when the system node keeps its global prefix under /usr: the install goes to ~/.local, where Codeman already looks for CLIs. A prefix you set yourself, or one you can write to, is left alone, including when Codeman runs under npm run.
    • Uploads go to a hidden .codeman-uploads/ folder (#574). Images you paste or upload into a prompt are saved in <workspace>/.codeman-uploads/ instead of .claude-images/. The folder ignores itself in git (it carries a .gitignore of *), stays hidden in the Files panel, and is cleaned up as before: files older than 7 days in an hourly sweep, and the folder when the last session in that workspace closes. The old .claude-images/ folder gets nothing new and is still swept and removed during 1.41.x. An upload to a remote (SSH) session is now refused with a clear message, since the file would land on the Codeman host where the remote agent cannot read it.
    • Typing on a phone after a tab switch (#576, fixes #575). With local echo on (the default on touch devices), text typed while the terminal sat above the bottom was buffered but never painted, so the keyboard looked dead. The view sits there after every tab switch and after the keyboard closes. The overlay now paints whenever the prompt row is on screen, and hides only when you scroll the prompt out of view.
    • Upload failures say why (#578). When a prompt image upload fails, the toast shows the server's reason (for example a rate limit) instead of only "1 failed".
    • The npm page shows the English README. npmjs.com had been rendering the Chinese README, because npm picks the package's readme from an unsorted file match at publish time. The publish now moves README.zh-CN.md aside while it runs (the file and every link to it stay as they are), and the package description and homepage say what Codeman is and point at getcodeman.com.
    • New cases ask for clickable file paths. The CLAUDE.md generated into a new case asks the agent to report every file it created as a full absolute path, which Codeman turns into a link that opens the File Viewer, and mentions the codeman skill for starting and managing worker sessions.

    For contributors (#570). Every in-process test server binds an ephemeral port, the mobile suite included, and the port guard now also refuses raw listeners on a fixed port, so two test runs on one machine never collide.

    Fixes applied while landing. zh-CN translations for the two new notification display-time settings and for the new Animations section. A session whose name matches an interface word ("Lab", "New session") is no longer translated in the tab strip when the interface is in Chinese. Plus test and doc cleanups left over from review.