Skip to content

codeman@1.42.0

Latest

Choose a tag to compare

@github-actions github-actions released this 16 Oct 11:42

Minor Changes

  • 1238316: ### Thanks

    • @JDProfresh for five PRs: prompt uploads that take documents (#621, from the plan in #553), a video Codeman cannot take refused before it uploads (#622), a prompt-cache readout kept to the CLIs that report one and a statusline report with many cache-miss causes no longer thrown away (#623), and two fixes for Claude's workspace trust dialog in a brand-new folder: idle waits that hold until the dialog is answered (#634) and a dialog that gets answered every time (#635).
    • @Randalix for Codex prompts that really get submitted, sent as one bracketed paste and a separate Enter (#628), and for the careful measurements in #627 that found the cause.
    • @ludovicfourrage, a first-time contributor, for reporting (#629) and fixing (#632) the nested tmux status bar colour that leaked into live output after a history reload.
    • @opticon454 for three PRs: a one-time "what's new" note after each update (#618), Previous and Next Session as rebindable shortcuts that refuse a chord another action already uses (#617), and a DeepSeek install from CLI management that ends with a DeepSeek you can run (#616).

    Git worktrees for a case (#625). Give every agent on a repository its own checkout. Pick a case whose folder is a git repository, choose Git worktrees… in the case picker (Worktrees on the phone's case sheet), type a name and pick the CLI: Codeman creates <case>/.claude/worktrees/<name> on a new branch worktree-<name> and opens a session there, in a tab named after the worktree. Open starts another session in a worktree you already have. Removing one runs plain git worktree remove, never --force, so uncommitted work stays where it is, and Close Session can kill the session and remove its worktree in one go. The layout is the one Claude Code's own claude --worktree uses, so each sees the other's worktrees. To keep the main checkout clean, Codeman lists the worktrees folder and the files it writes for sessions in the repository's local .git/info/exclude; your .gitignore is never touched.

    Codex sessions turn red when Codex asks you something (#624). Codex's command and edit approvals, its question dialogs and the trust prompt on a new repository are read straight off the screen and raised the way a Claude permission prompt is: red tab, desktop notification, push, webhook, the phone's NEEDS YOU row and an Approvals Inbox card that tells you to answer in the terminal. An agent driving a codex worker can now wait for that with until=blocked.

    Prompt uploads take documents (#621). Attach, drop or paste a PDF, a Word, PowerPoint or Excel file, a zip, or a text file (txt, md, csv, tsv, json, log, yaml, xml) and its path lands on your prompt, ready to send, like a photo or a video does. Every file is checked against its actual bytes on the way in, so a program renamed to .pdf is refused, and text files must be UTF-8. The saved name keeps a readable part of the original: Q3 report.pdf is saved as paste-...-Q3-report.pdf. The button in the Compose and paste dialogs now says Attach.

    Previous and Next Session are rebindable (#617). Previous Session (Alt/Option+[) and the alternate Next Session (Alt/Option+]) are now ordinary rows in App Settings > Shortcuts, so you can rebind or switch them off like everything else. Capturing a chord another action already uses is refused with a message naming that action (Alt+1 to 9, Ctrl/Shift+Enter and Ctrl/Cmd+V stay reserved), and re-enabling or resetting a shortcut runs the same check. A chord you rebound no longer also types into the terminal: a rebind to Alt+J used to switch tabs and send ESC j to the session too. Built-in defaults like Ctrl+L still reach the CLI.

    A note after each update (#618). The first time a browser loads a newer Codeman, a toast lists that release's headline changes, with a See what's new button that opens the full release notes. It shows once per version, and a browser that has never opened Codeman before just records the version and stays quiet, so the first note you will see is the one for the release after this one. The headlines are taken from the changelog when the release is cut.

    Multi-user mode: only admins change server-wide settings. In multi-user mode any signed-in regular user could rewrite the server's settings (feature switches, run mode, case order, the default model for cron and the orchestrator, the app config), start a self-update, rotate the tunnel QR code, clear stale session state, and sign every user out with Revoke All, admins included. They could also read the Deepgram API key an admin saved. Those writes and operations now answer 403 to a regular user, Revoke All signs them out of their own logins only, and their settings read leaves out the admin's key and case names. In the browser a regular user's per-device settings still save, a change to a server-wide setting shows one notice that only an admin can change it, instead of pretending it was saved, and their own run mode and respawn presets are kept on their device. Single-user mode is unchanged.

    Fixes.

    • Codex submits long prompts (#628). Prompts sent through the API, codeman agent send, the MCP server, cron or the agent skill go into the pane as one bracketed paste followed by a separate Enter, so Codex no longer leaves them sitting unsent in its composer. A single character (a menu answer like 3 or y) is still typed, so numbered dialogs keep picking the option you sent, and a trailing ; survives, so find . -exec rm {} \; arrives whole.
    • New Claude sessions in an untrusted folder (#634, #635). An agent waiting for a fresh session to go idle no longer gets its answer while the workspace trust dialog is still up, so its first prompt can no longer press Enter on the highlighted "No, exit" and kill the session it just started. And the dialog is now answered every time: a screen read that came too soon after the previous one used to be dropped, which now and then left a new session sitting on the dialog. Deleting a session while the dialog is up also stops Codeman reading its dead pane for seconds afterwards.
    • Nested tmux colours after a history reload (#632). Opening a remote or Docker case, or a shell running tmux inside it, no longer hands the nested tmux status bar's green background to whatever the agent prints next.
    • The codeman skill with arguments (#642). The skill works again when Claude Code loads it with arguments ("use codeman to start 5 claude workers"). Claude Code swaps a skill's $1 and $2 for words of your request, which broke the pasted helpers; they now use ${1} and ${2}, and a cached copy written by the broken version is rewritten on the next run.
    • DeepSeek installs ready to run (#616). Installing the terminal profile finds the pnpm next to dsh even when the server's own PATH lacks ~/.local/bin, and the DeepSeek install command adds pnpm when the machine has none.
    • Unsupported videos refused up front (#622). An Android .3gp or an .mkv gets "Unsupported file type" right away, instead of uploading up to a gigabyte and failing at the end.
    • Statusline reports (#623). The prompt-cache readout is stored only for CLIs whose statusline reports one (Claude today), like the model badge, and a Claude report with more than 20 cache-miss causes keeps the first 20 instead of being refused, which used to blank the footer and the plan-usage chip.

    Fixes applied while landing. Removing a worktree that is, sits inside or holds a Docker case's workspace is refused before git runs; it would have deleted the folder a container still mounts (#625). Codex's trust prompt also reads as blocked in the variant reached through its "Update available" screen, which ends in "esc back" (#624). The DeepSeek install only adds pnpm when none is on PATH, so a machine with a corepack pnpm keeps it instead of the whole install failing (#616). Three statements in the upload docs were corrected: only a local agent and a Docker case share the uploads folder (remote sessions are refused), GIFs keep their frames instead of being re-encoded, and a developer note no longer names a release that never shipped (#621). The update note skips the Thanks list and group labels like "Fixes.", still works for a release with no headlines, and is translated for zh-CN (#618).

    Docs. The README and its Chinese translation caught up with 1.41.0 and 1.41.1 and show a sharper hero GIF, the Codeman Skill got a wiki page and two GIFs linked from both READMEs, CLAUDE.md was split into the root file, src/web/CLAUDE.md and docs/releasing.md, the release steps now include the MCP registry publish, and a new note says where video and GIF masters live (not on GitHub).