Skip to content

Codeman 1.50.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 10:35
· 138 commits to master since this release

Thanks

  • @irisitymichaelgrundberg for the Files panel following an agent into a worktree outside the session's folder, and for the rules that keep that second folder narrow (#780).
  • @Randalix for keeping two tests independent of the host's locale and git ignore file (#776).

What's new

Codeman for Mac (#763)

A small native macOS app opens Codeman in its own window: it opens the Codeman running on this Mac, starts it when it is stopped, installs it when it is missing, or connects to Codeman on another machine, with that password kept in the Keychain. It is one universal app for Apple Silicon and Intel on macOS 11.3 or later, and a client of the web UI like a browser tab, so the server and the API do not change for it. Every release from this one carries it as Codeman.dmg, signed with a Developer ID and notarized, so it opens after macOS's usual question about a downloaded app (1.50.0's copy). The app keeps its own version (0.1.0) and does not update itself yet.

Your MacBook's Apple logo blinks with your agents (#781)

On a MacBook Pro with a PROLED XDR display, whose lid logo lights up, View > Blink Apple Logo gives each agent state its own rhythm: one for While Working, one for Waiting for You (a yellow tab) and one for Needs Permission (a red tab), each picked from Calm, Slow, Wink, Heartbeat, Fast and Alarm. Set Heartbeat for work, Wink for a finished turn and Alarm (three sharp flashes, then a rest) for a permission dialog, and the lid tells you from across the room which one it is. All three are off until you choose one, the menu shows only on a Mac with that logo, and no style flashes more than three times a second. It uses a private macOS setting, so a macOS update can take the menu away.

Install from the app, with no Terminal and no password (#773)

On a Mac without Codeman, the app runs the installer's no-admin route in its own window, shows the steps as a checklist and opens Codeman once it answers. If the Mac has no coding agent it offers one, and Add a coding agent (also in the app menu) adds one later without touching a running Codeman. The This Mac tab now lists every Codeman of this user already running on the Mac. The install needs macOS 15 or a tmux that is already there; on an older Mac the app offers Terminal instead. For this, install.sh gained preflight, agent <id>, --ai-cli and --progress.

The Files panel follows a worktree outside the session's folder (#780)

Since 1.49.0 the panel follows an agent into a worktree inside the session's folder. It now also follows one of the same repository beside it, such as git worktree add ../feature, when the session's own repository vouches for it, and files there preview, edit and open from terminal links like workspace files. It follows none while attachment workspace confinement is on, and none at or around a blocked or sensitive folder, in a Docker case workspace, at the home folder or above, or outside the owner's space in multi-user mode. The API stays compatible: liveWorktree and root=live keep their 1.49.0 meaning, and an outside worktree comes as the new outsideWorktree field, listed by root=live-any with absolute paths.

A coding model that runs on your Mac (#784, experimental)

On an Apple silicon Mac, Run a local model on the welcome screen opens a window that shows which local coding model fits the machine and with which agent, installs a pinned Ollama runtime and the model, checks it, and ends on an agent session that runs on it through a Custom Model Endpoint. The catalogue covers every Apple silicon memory size from 8 to 512 GB, and every model carries memory figures of its own: a 9B coding model (labelled limited) from 18 GB, Qwen3.8 27B or Qwen3.6 35B-A3B from 36 GB, Ornith 1.5 122B from 128 GB, while 8 and 16 GB get a plain sentence on why nothing fits. Recommended appears only for a pairing run on a Mac like yours, so far Qwen3.6 35B-A3B with OpenCode on an M5 Pro with 48 GB; every other figure is computed from the model's architecture and shown as an estimate. No account or API key is needed, and the session's prompts go to the model on this Mac rather than a cloud provider. On any other machine nothing is offered, and in multi-user mode only an admin can install. A weekly check in CI compares every catalogue model and the pinned runtime with what a Mac would download and opens one issue when something moved. The routes and their payloads may change in any release; the guide is docs/local-models.md.

Claude in the cloud, a model on your Mac (#784, experimental)

The codeman skill can hand work to that local model: local_model says what is installed and whether it runs, spawn_worker <name> local starts a worker on it (and the runtime, when it is stopped), and sendmark gives the worker a task and reads back the answer it writes. A Claude Code session plans and reviews while the Mac does the bulk: summaries, first drafts, files that should stay on the machine.

Ralph starts from Session Options (#783)

The start screen no longer has a Start Ralph Loop button. Behaviour change: start a Ralph loop from Session Options, Ralph / Todo. The wizard that button opened can no longer be reached.

The Codeman agent skill is on by default (#787)

New sessions get the skill where their CLI looks for skills (.claude/skills/codeman/ for Claude Code, .agents/skills/codeman/ for Codex, Gemini CLI, OpenCode, Antigravity, Grok, DeepSeek and OMP; none for Pi, GitHub Copilot or a plain shell), so an agent can start and drive workers without an install step. The copy ignores itself in git (a .gitignore of * inside it, written once and never overwritten), so it never shows up as a new file in your repository, and a symlinked reference/ folder inside it is refused. Behaviour change: every App Settings save on 1.49.0 or earlier stored this switch as off whether or not you touched it, so the first start of 1.50.0 switches a stored off on, once per data directory, and the startup log says when it did. Turn it off under App Settings, Agents & CLIs, All agent CLIs, Codeman Agent Skill: an off set after that first start stays off. Reload any tab left open from before the upgrade before you save App Settings there. Turning it off removes no copy already written; codeman skill uninstall --case <name> does.

Fixes

  • No developer tools window on a Mac without Xcode (#779). There /usr/bin/git is Apple's placeholder, and the server ran it on the first page load, so a 1.49.0 no-admin install opened macOS's "install the command line developer tools" window right after it finished, and again after every server start. Every git the server starts now checks first and treats that placeholder as no git, and installing the tools later needs no restart.
  • A new agent shows up as soon as the installer adds it (#778). A running Codeman remembered a missing CLI for up to 5 minutes, so Run still said it was not installed after install.sh agent <id> or the app had added it. The installer now touches ~/.codeman/cli-installed, and the server looks again when that file changes.
  • The approvals list leaves a brand-new dialog alone (#782). In a dialog's first 3 seconds, before Claude Code has drawn it, GET /api/approvals could resolve it, which cleared its red tab on every device and left the push notification's Approve button with nothing to answer. The list now waits as long as the inbox does.
  • Custom model endpoints survive concurrent writes. The endpoint routes and the 5-minute discovery sweep wrote custom-model-hosts.json through one shared temp file, so two at once could tear it or drop a record. Every write is serialized now, and a file that does not parse is refused with 409 instead of replaced. Behaviour change: the endpoint id local-ollama is reserved for the model Codeman runs on this Mac.
  • Clearing a custom endpoint relaunches on the session's own model. A selection no longer writes its launch model into the session's stored CLI config, so a cleared session starts on the model it was created with, not on the endpoint's model id against the CLI's own backend. Only API callers could reach this.

Also in this release

Fixes applied while landing. An adopted session never follows a worktree outside its folder, like a remote or Docker session (#780). The worktree test also keeps the system gitconfig away from the code under test (#776).

The Release workflow now builds, signs, notarizes and attaches Codeman.dmg (.github/workflows/desktop-dmg.yml, #785), publishes each version to the official MCP registry (io.github.Ark0N/codeman) with GitHub's OIDC token, and rebuilds the GitHub release page from this changelog. Pull requests that touch packages/desktop run cargo fmt, clippy and cargo test on macOS.

Docs and tests. The README, the Chinese README and the wiki's Installation page gained a section on the Mac app (#786), the Autonomous Loops page no longer points at the removed wizard, and docs/local-models.md covers the local model install. Two tests no longer depend on the host's locale or git ignore file (#776).


Full Changelog: https://github.com/Ark0N/Codeman/compare/codeman@1.49.0...codeman@1.50.0