codeman@1.28.2
Patch Changes
-
Terminal font weight (#417, from discussion #403). App Settings → Terminal → Font gains two
per-device rows, Normal font weight and Bold font weight, each a select from Default plus 100 to 900. Claude Code marks bold with a bareESC[1mand no colour change, so with a family that ships
only a regular and a bold face a bold heading reads as body text; setting normal to 300 turns that
one small step into an obvious one. Both slots resolve against their own xterm default (an unset
bold never inherits normal), apply live to the terminal, both echo overlays and open Agent Teams
panes, and the bundled JetBrains Mono@font-faceis declared over the font's real 100 to 800 axis
instead of 400 to 700, without which every weight below 400 rendered identically to 400 on a stock
install.Phones up to 599px get the phone layout (#390, fixes #389). The phone tier's cutoff moves
from 430px to 600px in the JS classifier, mobile.css and every test and doc that pins it, so the
iPhone Plus and Pro Max sizes, the Pixel Pro and the Z Fold cover display (430 to 460px) get the
phone header, the Enter key and the accessory bar instead of the tablet layout. Verified on a real
iPhone 17 Pro Max; a Safari page zoom below 100% widens the reported viewport, which is why the
cutoff is 600 rather than 480.The plan-usage statusline exporter no longer touches your settings files (#361, diagnosed in
#405). Codeman used to write its exporter into a workspace's.claude/settings.local.json, which
Claude Code ranks above~/.claude/settings.json, so it replaced your own statusline for ANY
clauderun in that directory, including outside Codeman, and rendered the bare wordcodeman
when run by hand. The exporter is now passed toclaudeas an ephemeral--settingsflag when
Codeman spawns it and is never written to disk; your own statusline (project-local, project, then
~/.claude/settings.json) is wrapped and printed through inside Codeman sessions, and a hand-run
claudesees nothing of Codeman. Workspaces an older Codeman wrote to self-heal the first time a
session starts there. Telemetry collection follows the Plan Usage chip setting, read fresh at every
Claude session create and respawn; an absent setting means on, and a device writes the switch only
when it flips the chip, so a phone (chip off by default) saving its font size can no longer switch
collection off for the desktop. The exporter prints nothing when it cannot reach Codeman, the
telemetry route answers an unknown session with an empty body, and the footer is empty rather than
a brand word. Known limit: sessions inside a Docker case do not feed the chip yet (the flag rides
local spawns only; the chip is account-wide, so any local Claude session covers it).install.shand the Docker agent image read the CLI catalogue (#380). Adding a CLI to
src/config/cli-registry/stock.tsand runningnpm run generate:cli-catalogwires it into the
installer's detection, install menu and closing reminder, and into the agent image's npm layer;
each of those was a separate hand-kept list before, and OMP had been missing from the installer's
detection entirely. The install menu offers every enabled CLI that can drive a pane (eight, rather
than the fixed two), DeepSeek is deliberately withheld becausenpm install -g @deepseek-ai/dsh
installs only a launcher with no runnable profile, a wget-only host keeps the entries that never
needed curl, and the agent image respectsenabled. The script stays bash 3.2 compatible and CI
now executes it inside a realbash:3.2container. Choosing "s" (Skip) in the menu continues to
the clone and build instead of aborting.iPhone Duo support (#407). A visual-viewport resize that changes the WIDTH is the device
changing shape and is never read as the virtual keyboard: closing an iPhone Duo (626 to 466pt wide)
or rotating any phone used to latch the keyboard layout with no keyboard on screen, sticky until the
device was opened again. The seven centred overlays keep their dialogs out of the hinge through the
CSS Viewport Segments variables (inert on devices that do not fold), the phone path picker and
preview stay flush under 600px, and a shape change with the keyboard up baselines to the layout
viewport so the settle event after a rotation no longer closes the keyboard layout. Two Duo device
profiles join the test matrix.Codeman is its own Claude Code plugin marketplace.
/plugin marketplace add Ark0N/Codeman
followed by/plugin install codeman@codemaninstalls the codeman agent skill as a plugin, from
plugins/codeman/(a mirror ofskills/codeman/kept byte-identical by a test), which is a small
separate directory on purpose: a plugin root carrying apackage.jsongets annpm installon
every installer's machine. A Claude Code holding both the plugin and a user-level or per-case copy
lists the skill twice; pick one route.Housekeeping: the maintainer's Telegram PR bot moved out of this repository (it is a client of the
HTTP API like any other), the COM flow gained a Discussions announcement step, and the changelog's
Thanks sections were backfilled for 1.22.0 to 1.28.1.Thanks
- @irisitymichaelgrundberg for the font-weight analysis in #403 that this release implements, and the statusline diagnosis in #405
- @JDProfresh for the phone breakpoint fix (#390)
- @timkjr for moving the statusline exporter off disk (#361)
- @opticon454 for driving the installer and the agent image from the CLI catalogue (#380)