github Dicklesworthstone/ntm v1.22.0

5 hours ago

ntm v1.22.0

386 commits since v1.21.0, produced by a multi-agent review-and-fix cycle. The theme is integration correctness: several subsystems were calling external tools with contracts those tools no longer honor, and passing their own tests because the test doubles had drifted alongside the code.

Highlights

caam integration repaired

NTM had two independent caam integrations and only one had been migrated to the current CLI. Rate-limit account rotation was broken four different ways, each fatal on its own:

  • switch <provider> --next --json — the --next flag no longer exists; now activate <tool> --auto --json
  • rotation passed the account name where caam expects the tool name
  • caam emits {profile, previous_profile} but the result was unmarshalled into {new_account, previous_account}, silently yielding empty account names
  • the account-list parser did not understand caam's {"profiles":[...]} shape, and that input parsed cleanly into the old wrapper — returning zero accounts with no error, which read as "nothing to rotate to"

Also: caam's synthetic _original / _backup_* system profiles were being surfaced as rotatable accounts, and a pane's first rotation after a limit hit selected the account it was already stuck on.

Robot API schema contracts

--robot-wait-cancel, --robot-sequence, and --robot-productivity each advertised JSON output while registering no schema binding, so they published schemas that could not be resolved. All three now bind to their concrete response types.

Windows build restored

Hook process-group killing referenced syscall.Setpgid / syscall.Kill unconditionally, which do not exist on Windows — the internal/hooks package failed to compile for GOOS=windows entirely. Now split behind build tags.

Test-suite integrity

A recurring theme this cycle: tests that passed for the wrong reason. Fixed a serve fixture whose target branch had been silently shadowed by a refactor, a TMUX_TMPDIR built from t.TempDir() that pushed the unix socket path past its ~104-byte cap for long-named tests, and several assertions that had drifted from deliberate behavior changes.

Install

curl -fsSL https://raw.githubusercontent.com/Dicklesworthstone/ntm/main/install.sh | bash

Build provenance

Built locally with CGO_ENABLED=0 (ntm uses the pure-Go modernc.org/sqlite, so every target cross-compiles reproducibly). Version, commit, and build time are injected via ldflags — verify with ntm version.

Platforms: darwin_amd64, darwin_arm64, linux_amd64, linux_arm64, linux_armv7, freebsd_amd64, windows_amd64. Checksums in SHA256SUMS.

Don't miss a new ntm release

NewReleases is sending notifications on new releases.