Releases: Ark0N/Codeman
codeman@0.6.5
Patch Changes
-
Mobile fix
- Android virtual keyboard: space character was silently dropped on touch devices using GBoard / SwiftKey / similar IMEs. Root cause: the input-event handler in
terminal-ui.jstreated any whitespace-only textarea value as proof that xterm had already processed the input. A lone space (' '.trim() === '') tripped this guard, so the space was consumed but never forwarded. Now skips only when the textarea is truly empty (or whitespace from a non-space key). Reported and diagnosed by @coolk8 in #79.
Docs
CLAUDE.md: added Zod.optional()-vs-nullgotcha (recurring trap from 0.6.3 / 0.6.4 incidents) and a more visible warning against running barenpm test(kills the host tmux session).docs/local-echo-overlay-plan.md: marked SHIPPED, corrected xterm version reference (v5.3.0 →@xterm/xterm^6.0.0).
- Android virtual keyboard: space character was silently dropped on touch devices using GBoard / SwiftKey / similar IMEs. Root cause: the input-event handler in
codeman@0.6.4
Patch Changes
- Fix "Failed to enable respawn: Invalid request body" error when selecting infinity duration (∞) in the respawn modal. Frontend was sending
durationMinutes: null, which Zod's.optional()schema rejected (it acceptsundefinedonly). The body now omits the field when no duration is selected.
codeman@0.6.3
Patch Changes
- Fix
- Allowlist
opusContext1mEnabledinSettingsUpdateSchema. Without this entry, the strict schema rejectedPUT /api/settings {"opusContext1mEnabled":...}withINVALID_INPUT, so the toggle's value never persisted across reloads. The frontend was already reading and writing this key (settings-ui.js:336/1137,session-ui.js:340), so saves were silently failing — users never noticed because the load path falls back tofalseon missing keys, hiding the bug. (#78)
- Allowlist
codeman@0.6.2
Patch Changes
-
Mobile UX
- Resume Conversation list (welcome page) reworked for narrow screens: 2-line title clamp so more of the first prompt is visible; case-aware subtitle that renders
#caseName(or#caseName/sub) whenworkingDirmatches a known case, otherwise falls back to the directory basename; inline⋯toggle that expands a detail panel with full prompt, full path, timestamp, size, and short session id;/Users/<user>/now collapses to~/alongside/home/<user>/. (#77) - Response viewer: ASCII diagram wrap toggle, dedicated mobile code-block layout, and chrome-stripping fallback when the model wraps its reply in extra markup. (#75)
- Mobile keyboard accessory bar no longer triggers vertical scroll. (#72)
Sessions & settings
- New
thinkingEffortsetting on session creation, withxhighoption and/effort maxmobile shortcut. (#73) thinkingEffortis now allowlisted inSettingsUpdateSchemaso it round-trips through PATCH /api/settings.envOverrides(CLAUDE_CODE_*/OPENCODE_*) are now passed to Claude via tmux env exports at spawn time instead of being written to<case>/.claude/settings.local.json. Eliminates UI/disk drift; the value lives onSession._envOverrides, is exported bytmux-manager.buildEnvExports(), and is persisted inSessionState.envOverrides. (#74)
Fixes
- Eye icon (active-session indicator) now follows
/clearto the new Claude conversation instead of getting stuck on the previous transcript. (#76) tmux-manager.reconcileSessionsnow uses|as the field separator, fixing parsing when session names contain other delimiters. (#71)
Docs
- CLAUDE.md: added
npm run knipto the dead-code sweep table and aCommon Gotchasentry documenting theenvOverrides→ tmux export flow.
- Resume Conversation list (welcome page) reworked for narrow screens: 2-line title clamp so more of the first prompt is visible; case-aware subtitle that renders
codeman@0.6.1
Patch Changes
- Internal cleanup and release hygiene:
- Dead-code sweep via knip: added
knip.jsonfor dead-code detection and ran a full sweep — removed unused test files, unused scripts, and narrowed internal module exports to the minimum surface area actually consumed. - Lockfile drift prevention:
version-packagesnow runsnpm install --package-lock-onlyand verifies the lockfile is in sync viascripts/check-lockfile-sync.mjs; CI runs the same check on every push/PR so version drift fails the build instead of reaching production. Resolves thepackage-lock.json/package.jsonversion mismatch that shipped in 0.6.0. - Docs tightening: archived 22 completed plan docs from
docs/, corrected file/handler counts inCLAUDE.md, documented the lockfile step in the COM workflow, and removed footer redundancy.
- Dead-code sweep via knip: added
codeman@0.6.0
Minor Changes
- Community contributions from @aakhter:
- feat (#66): Tab reorder shortcuts —
Ctrl+Shift+{andCtrl+Shift+}move the active session tab left/right, matching WezTerm convention. Order persists across reloads viasaveSessionOrder(). - feat (#67): Active tab visibility + Alt+N badges — active tab now has a bright green border with color-matched glow, and the first 9 tabs display number badges hinting at the
Alt+Nswitch shortcut. Badges update on reorder/rerender. - feat (#68): Clipboard API — new
POST /api/clipboardaccepting{text}broadcasts aclipboard:writeSSE event; connected browsers attemptnavigator.clipboard.writeText()with a manual-copy modal fallback when the page isn't focused. Auth-protected via the standard middleware. Useful for pushing snippets from remote sessions to the user's local clipboard. - fix (#65): Android Shift+key double character — pressing
Shift+Aon attached Android keyboards no longer produces "AA". Tracks xterm-handled keydown timestamps and skips the orphaned-input listener for 50ms after a real keydown, while still catching Gboard symbol-keyboard inputs (keyCode 229).
- feat (#66): Tab reorder shortcuts —
codeman@0.5.13
Patch Changes
- Fix "Case path not found" error in Quick Start when
~/codeman-cases/does not exist (issue #64). Two bugs insession-ui.js:runClaude()auto-create readcreateCaseData.case, butPOST /api/casesreturns{ success, data: { case } }— corrected tocreateCaseData.data.case.runShell()had no auto-create logic and would immediately throw on a missing case directory — now mirrorsrunClaude()'s create-on-demand flow.
codeman@0.5.12
Patch Changes
- Fix quick-start to resolve linked cases before codeman-cases fallback.
/api/quick-startwas always resolvingcaseNameagainstCASES_DIR, ignoring entries in~/.codeman/linked-cases.json. Sessions started via quick-start now correctly honour linked external project directories, consistent with regular case routes.
codeman@0.5.11
Patch Changes
- Community contributions and security hardening:
- Mobile response viewer: native-scroll panel for reading full Claude responses with markdown rendering via marked.js (PR #62)
- PWA support: service worker caching, web app manifest, and Android home screen install (PR #59)
- Named Cloudflare tunnel support (PR #58)
- Markdown rendering for response viewer with HTML sanitization (XSS prevention) — strips dangerous elements, event handlers, and javascript: URIs
- Service worker switched from stale-while-revalidate to network-first caching so deploys take effect immediately
- Content-Disposition filename sanitization to prevent header injection in file downloads
- Expose session.muxName public getter, replace unsafe
as anycast in session-routes - Static import for execFile in session-routes
- Keyboard shortcut updates: Alt+1-9 tab switching, Shift+Enter newline
- Repo restructure for cleaner GitHub landing page
- Mobile logo, expandable history, session resume fixes
codeman@0.5.9
Patch Changes
-
Mobile keyboard accessory bar: add configurable "Extended Keyboard Bar" setting (Settings > Display > Input) that toggles between simple mode (up/down arrows, /init, /clear, /compact, paste, dismiss) and extended mode (adds left/right arrows, Tab, Shift+Tab, Ctrl+O, Alt+Enter, Esc). Default is simple mode. Setting is device-specific (not synced to server).
Restyle dismiss button: muted steel-blue tone, fills remaining bar space via flex, larger tap target. Arrow buttons now blue.
Fix paste overlay visibility on mobile: dialog repositioned to top of screen (15vh from top) so the virtual keyboard doesn't cover it. Textarea enlarged for better usability.
(Also includes all v0.5.8 changes: case reorder/delete, XSS sanitization, auto-attach PTY on restart, mobile keyboard buttons, macOS installer fixes, terminal flicker fix, state store collision fix.)