From 0e1191b774ad7f1ac32696ee0a0d9de1d3496904 Mon Sep 17 00:00:00 2001 From: Codeman maintainer Date: Fri, 18 Sep 2026 13:55:22 +0200 Subject: [PATCH] chore(changeset): trim the contributor entries and add the 1.30.0 thanks Changeset text becomes user-facing CHANGELOG, so the #429 entry is cut from five bullets of internal bash-array detail down to what the change does for someone running the installer, as promised on the PR. The #441 entry loses its em-dashes, which are not house style. Adds an entry for the maintainer fixes applied while landing #442, and the Thanks section. Co-Authored-By: Claude Opus 5 (1M context) --- .changeset/android-last-character-on-enter.md | 2 +- .changeset/cli-catalog-followups.md | 21 +------------------ .changeset/release-1-30-0-merge-fixes.md | 5 +++++ .changeset/release-1-30-0-thanks.md | 9 ++++++++ 4 files changed, 16 insertions(+), 21 deletions(-) create mode 100644 .changeset/release-1-30-0-merge-fixes.md create mode 100644 .changeset/release-1-30-0-thanks.md diff --git a/.changeset/android-last-character-on-enter.md b/.changeset/android-last-character-on-enter.md index 0af4c14a..c68df755 100644 --- a/.changeset/android-last-character-on-enter.md +++ b/.changeset/android-last-character-on-enter.md @@ -2,4 +2,4 @@ "aicodeman": patch --- -Stop a phone keyboard losing the last character of every message it sends. Android soft keyboards commit the last typed character and send the Enter key in one InputConnection transaction, so the `input` event and the Enter keydown are both processed before any zero-delay timer runs. The orphaned-input recovery from #388 only resolved its candidate on such a timer, and lost it both ways: xterm emits `\r` synchronously from the Enter keydown, so the local-echo composer submitted the prompt before the recovered character existed, and that `\r` bumped the "did xterm speak for this keystroke" counter, so the candidate then stood itself down and dropped the character outright. Pending candidates are now drained synchronously at the next keydown, from xterm's custom key handler — before xterm processes that key — so the counter still holds the value it had while the candidate's own keystroke was current, and the recovered byte reaches the composer ahead of the Enter. Typing on a physical keyboard is unaffected: there, the timer has already resolved the candidate before the next key arrives. +Stop a phone keyboard losing the last character of every message it sends. Android soft keyboards commit the last typed character and send the Enter key in one InputConnection transaction, so the `input` event and the Enter keydown are both processed before any zero-delay timer runs. The orphaned-input recovery from #388 only resolved its candidate on such a timer, and lost it both ways: xterm emits `\r` synchronously from the Enter keydown, so the local-echo composer submitted the prompt before the recovered character existed, and that `\r` bumped the "did xterm speak for this keystroke" counter, so the candidate then stood itself down and dropped the character outright. Pending candidates are now drained synchronously at the next keydown, from xterm's custom key handler, which runs before xterm processes that key, so the counter still holds the value it had while the candidate's own keystroke was current, and the recovered byte reaches the composer ahead of the Enter. Typing on a physical keyboard is unaffected: there, the timer has already resolved the candidate before the next key arrives. diff --git a/.changeset/cli-catalog-followups.md b/.changeset/cli-catalog-followups.md index 5970e119..1e16cbcf 100644 --- a/.changeset/cli-catalog-followups.md +++ b/.changeset/cli-catalog-followups.md @@ -2,23 +2,4 @@ "aicodeman": patch --- -Cleans up the loose ends the maintainer flagged as "worth knowing rather than fixing" when -merging the CLI-catalogue-driven `install.sh`/Docker-agent-image PR (#380): - -- `install.sh` no longer carries `_cli_index`/`check_cli`/`get_cli_path`, three generic - lookup helpers left behind once the catalogue-driven menu and hints stopped calling them. -- The generator no longer emits `CLI_KIND`/`CLI_NPM`, two bash arrays nothing in `install.sh` - read (the `.mjs`/`docker-hosts.ts` producers already read the JSON catalogue's `kind`/ - `npmPackage` fields directly). -- `detect_all_clis` now skips a disabled entry entirely rather than probing it and filtering - the result downstream — no stock entry ships disabled today, so this is a latent - inefficiency closed before it is a latent bug, not a behaviour change. -- The install hint for a `launcherProfile` entry (DeepSeek today) now explains, in one line, - why it is a docs link rather than a runnable command — its docs page documents - `npm install -g @deepseek-ai/dsh`, which installs the launcher only and cannot drive a pane - on its own, the exact trap the menu already avoids by withholding the command. Driven by a - new generated `CLI_LAUNCHER_ONLY` array (from `discovery.launcherProfile`), not an id check. -- The non-interactive default's comment no longer claims it is always Claude Code: on a - wget-only host, Claude's curl one-liner is filtered out of the offered list first, so the - default becomes whichever npm-based entry sorts earliest instead. Behaviour is unchanged - (and was already printed, so never silent) — only the comment was wrong. +The installer's hint for a launcher-only CLI (DeepSeek today) now says why it is a docs link rather than a command you can run, and points at the thing that resolves it: the package installs a launcher that still needs a terminal profile, and Codeman's Run menu can add one in a click. Driven by a generated `CLI_LAUNCHER_ONLY` flag rather than an id check, so it covers any future entry of that shape. Also removes three dead lookup helpers and two never-read generated arrays from `install.sh`, skips a disabled entry's probe instead of filtering it afterwards, and corrects a comment that claimed the non-interactive default is always Claude Code (on a wget-only host its curl one-liner is filtered out first). diff --git a/.changeset/release-1-30-0-merge-fixes.md b/.changeset/release-1-30-0-merge-fixes.md new file mode 100644 index 00000000..71f6e65b --- /dev/null +++ b/.changeset/release-1-30-0-merge-fixes.md @@ -0,0 +1,5 @@ +--- +"aicodeman": patch +--- + +Maintainer fixes applied while landing the above. A session restored after a reboot keeps the name you gave it (the rebuild dropped the field that records who named a session, so a hand-renamed session came back looking auto-named and the next prompt overwrote it), and no longer types `continue` into itself on its own: a pending auto-resume stamp from before the reboot is dropped rather than re-armed, since the pane is new and one click could otherwise arm several unattended prompts at once. Auto-resume itself stays on and re-arms on the next real usage-limit message. The restore offer is also hidden in a detached single-session window, which has no tab strip to put restored sessions in, and a conversation that goes live while an earlier session in the same batch is starting is no longer restored a second time. diff --git a/.changeset/release-1-30-0-thanks.md b/.changeset/release-1-30-0-thanks.md new file mode 100644 index 00000000..767cad6c --- /dev/null +++ b/.changeset/release-1-30-0-thanks.md @@ -0,0 +1,9 @@ +--- +"aicodeman": patch +--- + +### Thanks + +- @irisitymichaelgrundberg for the reboot-restore banner (#442), and for the three real reboots behind it rather than a mocked one. +- @shenlvkang-collab for tracking down why Android keyboards lost the last character of every message (#441), including the half where the character was not late but gone. +- @opticon454 for going back and closing out the loose ends left as "worth knowing rather than fixing" after #380 (#429).