Skip to content

ntm

v1.9.0 Breaking

This release includes breaking changes for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

ai-agents cli developer-tools go tmux

Summary

AI summary

Broad release touches @Dicklesworthstone, Others, Quick Install ```bash, and Bug Fixes.

Full changelog

NTM v1.9.0

Named Tmux Manager - Orchestrate AI coding agents in tmux sessions with beautiful TUI interfaces.

Quick Install

# One-liner install (Linux/macOS)
curl -fsSL https://raw.githubusercontent.com/Dicklesworthstone/ntm/main/install.sh | bash

# Homebrew (macOS/Linux)
brew install dicklesworthstone/tap/ntm

# Go install
go install github.com/Dicklesworthstone/ntm/cmd/[email protected]

Shell Integration

Add to your shell rc file:

eval "$(ntm shell zsh)"   # for zsh
eval "$(ntm shell bash)"  # for bash
eval "$(ntm shell fish)"  # for fish

Changelog

Features

  • c9fc866080f7bdab1411e4093919e85206ac76c8: feat(agents): add cursor, windsurf, aider, and ollama agent type support (@Dicklesworthstone)
  • 6dced9e376553a303f2c7b3940591e0d9e5518fa: feat(agents): add full cursor, windsurf, aider, ollama support across all subsystems (@Dicklesworthstone)
  • 9d738cf2bc67cd2633b4a2d6f6d322c00fa88ba9: feat(attention): canonical flag names and robot-inspect-coordination action (@Dicklesworthstone)
  • d1361ee4370913bff415ab3e509f1bec2e83620c: feat(checkpoint): implement restore subcommand with dry-run and context injection (@Dicklesworthstone)
  • 48f9894e2e28d9a90390702711957a45a0798e4a: feat(cli): --attention-cursor flag for dashboard and overlay commands (@Dicklesworthstone)
  • 202d44270898d01b6c5b37a5b11d51c88e9952d5: feat(cli): --robot-overlay command for agent-initiated human handoff, session agent type counts (@Dicklesworthstone)
  • 0fbe36eb1bcceb46b843fa5bbb4045e897dd221c: feat(cli): add session name resolvers and expand shared flag resolution to all robot commands (@Dicklesworthstone)
  • 5dae8f345c0926400135589d4f0570cc7f6b0553: feat(cli): assign watch overlay auto-binding, bind refactoring, mouse support (@Dicklesworthstone)
  • d0b8d9c8317d1c53f7b32f78d2bb38b64964a37b: feat(cli): consolidate session resolution with resolveAgentMailScope, session-aware pipeline dirs, per-command line defaults (@Dicklesworthstone)
  • ca456659be5bc30e42c05ea2087cb79641958fae: feat(cli): recognize Cursor, Windsurf, and Aider agent types across CLI (@Dicklesworthstone)
  • 965841aabe4eac6ab8742557038f826d57b2a3f2: feat(cli): resolve --verbose and --dry-run through shared flag fallback for all robot commands (@Dicklesworthstone)
  • 9424ad9d74440f106a0bb87466a018493a75cd31: feat(cli): unify --since/--type as shared flags and normalize session names across scope resolvers (@Dicklesworthstone)
  • b86f45348ab4e867121b5b55fec547cd93402850: feat(components): wire spinner and progress bars to centralized animation detection (@Dicklesworthstone)
  • 72756d954b5e9a7ccf7a54ebf11a851e0fff5cec: feat(config): add context_warning_threshold and project-scoped alert overrides (@Dicklesworthstone)
  • b96541b1a15abd3fcacca9694e642257a86cea53: feat(dashboard): RFC3339Nano timestamp parsing, sidebar attention panel, ultra/mega focus fix (@Dicklesworthstone)
  • a01da062dddc4b58613252e67889ee155cbb5689: feat(dashboard): add pane_delegate.go foundation for bubbles/list (@Dicklesworthstone)
  • d8a0f106974daec805ce6dc35756edb11660ec5e: feat(dashboard): attention panel cursor retention, mail signals, stats badges, zoom propagation (@Dicklesworthstone)
  • 367395c89b4960f6d50e2fe504a6682f3ccfbb92: feat(dashboard): extract FocusRing abstraction and bubbles/list pane delegate (@Dicklesworthstone)
  • 7580341daf12de43c5e36d2ed27d82969e726ea0: feat(disclosure): propagate sanitized disclosure metadata through mail, state, and robot layers (@Dicklesworthstone)
  • 421aedc438dfa021cb09204395923f26ff9a101d: feat(e2e): artifact manager and scenario harness infrastructure (@Dicklesworthstone)
  • a47dee9cc9ac0049b35945b47b7f761bf9851a25: feat(history): persist agent types per entry and filter history by agent type (@Dicklesworthstone)
  • 5bcb734bd19e33d8c9619b3a427fbecf765eae0d: feat(layout): 6-panel mega layout with dedicated attention column (@Dicklesworthstone)
  • ad20c3e1364cf8d8d5ef61e874045940f248da10: feat(palette): add edit-before-send mode for template prompts (@Dicklesworthstone)
  • fed4d4e584f701d73739e5ebc286e944a1c1d973: feat(panels): add HandlesOwnHeight() to Panel interface (@Dicklesworthstone)
  • a03dd4dc9ffbe91235b87686b4345e747d0f0754: feat(panels): migrate timeline panel rendering to bubbles/table (@Dicklesworthstone)
  • 136e9ceb1d2d0fdf86e5621e638daab6d9dfc369: feat(robot): --robot-attention CLI command with profile-aware event filtering (@Dicklesworthstone)
  • 99cae5c97743b8f32b2cefdfd401ad5f6c02ef3c: feat(robot): --robot-events command with attention feed API expansion (@Dicklesworthstone)
  • fc60eef0b713a475467f7f40bd6cfe422f026909: feat(robot): add Attention Feed contract specification (@Dicklesworthstone)
  • c266d736ab8f141b25c13f6df63c8a0392f9965c: feat(robot): add attention feed commands to capabilities discovery (@Dicklesworthstone)
  • 26735d62169d638392e3abf8804d2f9ecd4ea068: feat(robot): attention profile resolution engine with discoverable presets (@Dicklesworthstone)
  • 3cd98fa8639a7e7bb7fc2de3b8f62f07a2e74eda: feat(robot): attention-aware wait conditions, snapshot attention summary, event streaming (@Dicklesworthstone)
  • 7904d95dfaa90a8cf3c262ba494bf378b6388d89: feat(robot): bridge Process Triage health monitor into durable attention feed (@Dicklesworthstone)
  • 29ea02f873421433b48b7267af593792ec74deb6: feat(robot): canonicalize shared flag names in command registry, docs, and error messages (@Dicklesworthstone)
  • 6442988e46f56751a824d771a0d08215f445f37a: feat(robot): expand command registry to ~80+ surfaces, normalize attention-loop flags, complete schema coverage (@Dicklesworthstone)
  • 5b594c702571086ff2c6e4d24f97d6d3b65129ca: feat(robot): expand command registry with restart-pane, smart-restart, activity, and dismiss-all surfaces (@Dicklesworthstone)
  • c7a1cdaa1d4e5dd7fd18b1be37903a8135fb2f0b: feat(robot): extended wait conditions in capability registry, snapshot summary tests, beads metadata (@Dicklesworthstone)
  • 93f01ec9e887344905ca9cf84b92574f59f147b9: feat(robot): implement attention feed runtime with cursor-based event replay (@Dicklesworthstone)
  • 42773b0c06f40bb3dc98b8adca1db56e8e354e9f: feat(robot): register is-working capability, extract help sections into testable data, skip slow tests in -short mode (@Dicklesworthstone)
  • d4fe4602408b1a6f3ec63b7b15719fef19b1b60f: feat(robot): rewrite --robot-wait with split pane/attention condition evaluation (@Dicklesworthstone)
  • 7e5b2cbbb576317d3bc593fb9525e7a827d635a8: feat(robot): thread profile filtering through attention/wait/digest pipeline (@Dicklesworthstone)
  • 93e9c993f01313cc41ac93bf11b9ca29cee9898d: feat(robot): unify command-specific flags into shared canonical modifiers (@Dicklesworthstone)
  • d92a0178e69e38062d4f26af95c58f0d0d690982: feat(robot): use project-scoped alert config throughout robot mode (@Dicklesworthstone)
  • f31fa20fd0b2897fea2e236eea88c1b85aed19bd: feat(robot): wire attention feed into dashboard and terse output, harden profile/event defensiveness (@Dicklesworthstone)
  • 3921a07106376e681657a8a461ac4a912b138783: feat(robot): wire dismiss-alert to tracker backend and add palette favorites/recent/usage (@Dicklesworthstone)
  • d072797654dc0fdb599bebfe35a335f1406713e2: feat(runtime): durable attention item state, actuation tracing, and runtime GC guardrails (@Dicklesworthstone)
  • c1a446c77685c110c2a3f1445e147f9b64f1404d: feat(serve): SSE event stream endpoint and attention webhook integration (@Dicklesworthstone)
  • d496cbb7fb232ec4dd04a750a7e1afbf84e5c37b: feat(serve): implement full WebSocket hub, REST API handlers, replace dummy stubs (@Dicklesworthstone)
  • 76920b1320264c5cb4a4d97733ba64dea5733d04: feat(spinner): delegate to bubbles/spinner while preserving API (@Dicklesworthstone)
  • b67b7a31757529b4a269f77381da823a95371493: feat(styles): add centralized animation detection with smart environment defaults (@Dicklesworthstone)
  • e874edfacd50501a173c83bbe6d623212c963fc8: feat(tui): add SpringManager for centralized spring animations (@Dicklesworthstone)
  • c8bc6da455a5c1fd3085b29197f2c9e209fdbb50: feat(tui): add bubbles/help KeyMap interface and ScrollablePanel component (@Dicklesworthstone)
  • 3fcc0f7435d4aa58b333caaf58f4d4474a8e4407: feat(tui): add bubbles/table to history panel and fix toast dismiss animation (@Dicklesworthstone)
  • 59a5928c249fb077fd0b86f70c3d42b00ac25391: feat(tui): add charmbracelet/huh forms integration (br-6g08x Phase 4a) (@Dicklesworthstone)
  • 7dc003f286a3d48922910c3b4b6557cf48b02271: feat(tui): add sparkline, tab bar, and toast notification components (@Dicklesworthstone)
  • 90d9951f6583211eabe64b32306a020585f5674b: feat(tui): add spring animations to progress bars (@Dicklesworthstone)
  • 74a0ecf185d61be7a0ee345dbb4f0ca1a37a697c: feat(tui): enhance toast notifications with progress bars and history (@Dicklesworthstone)
  • f841de4fde0e4a2a72145e9511522c50193e5c1b: feat(tui): expand dashboard panels with improved alerts, beads view, layout, and perf tracking (@Dicklesworthstone)
  • c2e41e9014719e467c7318e4b167c7578d3e3f68: feat(tui): expand dashboard with additional rendering logic (@Dicklesworthstone)
  • e99488bca156e6680e349a4e1a5473b291f487c1: feat(tui): integrate SpringManager into dashboard for focus animations (@Dicklesworthstone)
  • 8335febc5631bce79a657260b5f17338bfcfa7fc: feat(tui): integrate bubbles/list for pane list rendering (br-a6cs7) (@Dicklesworthstone)
  • 8a9fafcc8c2a308d9b1bbadaf1220c5d33333210: feat(tui): major dashboard expansion with additional panel rendering and agent status views (@Dicklesworthstone)
  • 57240f6d5403511c6c48e7d89170cd964077994b: feat(tui): rewrite help overlay with bubbles/help FullHelp and Catppuccin theming, update beads (@Dicklesworthstone)
  • ead9546293a0c0f4efd772050c7dc927968bbdff: feat(tui): spring dimension animation, shimmer borders, spawn wizard keybinding fixes (@Dicklesworthstone)
  • 9893516d0263e21c32269a72d5c780bba343774c: feat(tutorial): auto-skip animations via centralized motion detection (@Dicklesworthstone)
  • 77a0a1211c5e28f04798eefe32212d1f7f1fdd41: feat: durable attention persistence, normalized projections, safety/scanner hardening, and web dashboard resilience (@Dicklesworthstone)

Bug Fixes

  • e22aeddb2e23e91ee5b1cc1824c150e57416abd4: fix(agentmail): add busy retry to RegisterAgent, not just CreateAgentIdentity (@Dicklesworthstone)
  • 17c26e7946048bff97b8a70c651674d4d7c4cc0b: fix(agentmail): detect transient busy in MCP tool-level errors, not just JSON-RPC (@Dicklesworthstone)
  • a4c52039376b37850e9809e0c7df4464720bde81: fix(agentmail): retry on transient busy and reconcile partially-created agents (#97) (@Dicklesworthstone)
  • fcb50c6986b369249155df5fc1429bffe271f7b4: fix(brew): remove broken completion stanzas and fix ntm init -> ntm shell (#100) (@Dicklesworthstone)
  • 5872fb59fbb05f6d9f064c168d037e0405ce1e05: fix(bv): use double-dash flags for all bv CLI invocations (@Dicklesworthstone)
  • 5f3ba2c147688c3bf015d3168d8ebdc214373def: fix(cask): escape double quotes in caveats block (#98) (@Dicklesworthstone)
  • 35c4c9f697c6b0ba8d6641dac9d234000debf532: fix(cass): update CLI invocation to match CASS v0.2.1 interface (@Dicklesworthstone)
  • 6ad1c0bc537c191c4f862f58e6e52a95b5892f3d: fix(checkpoint): return proper errors in JSON mode; add naive scheduler benchmark; fix tutorial alt screen (@Dicklesworthstone)
  • d9c5c016220fb5de03d2bf1bbbea2c52ea4f5809: fix(ci): handle both double-quoted and do/end caveats block forms in Homebrew cask patch (@Dicklesworthstone)
  • 984b4cd2fdc364e8da1502c3b511d17eba24f9ab: fix(ci): post-release patch for Homebrew cask caveats $() breakage (@Dicklesworthstone)
  • 6627f0c9ff6b7c2d6ff191f8e395d8933b05bc9f: fix(cli): anchor pgrep pattern in isMonitorAlive to prevent false positives (@Dicklesworthstone)
  • 4698fa77cc9c2115cbcc14268432da9ffb037218: fix(cli): register signal handler before startup and recover panics in summary (@Dicklesworthstone)
  • 108168eb89d50de932b59b3bf8d40e624c5ae6ee: fix(cli): tolerate transient tmux failures in recovery monitor (#99) (@Dicklesworthstone)
  • 89122ae12152ef33578377289e44a01b3de9857b: fix(config): allow double-dot filenames in palette path validation (@Dicklesworthstone)
  • 999cb99392e7ed47dfb0b3798e08351fcfd87ea9: fix(config): support NTM_PROJECTS_BASE env var override for projects_base default (@Dicklesworthstone)
  • ec167015416328c7a947c94062830647c15f6893: fix(context): git worktree support for repo revision, packed-refs fallback, cache key completeness (@Dicklesworthstone)
  • 29bfeaef6c7d78e4b58f6d2b2cbed0230d3009ab: fix(core): EventBus buffered delivery, health score cleanup, BV insights enrichment, server refactoring (@Dicklesworthstone)
  • e079a7257fcc6e36118bc05c31d091c93501080d: fix(core): harden error handling, fix UTF-8 truncation, escape parsing, OOM protection (@Dicklesworthstone)
  • b7c515994803b87269eff43e0c8c269ae13d4f75: fix(dashboard): prefetch panes before TUI init, remove eager session check, seed initial state (@Dicklesworthstone)
  • a3f21c2d4933a50e8360c1ad7a7c443ca45ec72d: fix(e2e): resolve variable shadowing in newTestLoggerWithDir, close overlay-feed beads (@Dicklesworthstone)
  • 5c8964f70104583b7b39b8adc463838e18cb25e8: fix(e2e): rework overlay-feed tests for PATH-based binary, add no-wait test, fix webui context leak (@Dicklesworthstone)
  • e0a4b9951498d1065a8d82cd528fb3b228f3b238: fix(infra): ensemble state store cleanup, SQL table name validation, monitor lifecycle (@Dicklesworthstone)
  • 038a5d6795940468055bfdb586b26e6d6a591b7e: fix(monitor): remove duplicate registration, kill before session destroy, prevent duplicates on spawn (@Dicklesworthstone)
  • ec54f43304613ce0c60b9307317bbcc6446a1347: fix(palette): also exempt PhaseXFSearch from help overlay toggle (@Dicklesworthstone)
  • 3937c805e010fb87bd6c9ce3acd6a0f76fcd4c7b: fix(palette): fix edit-before-send key handling and draft persistence bugs (@Dicklesworthstone)
  • 5d766fcbfc85487910b8fb408d4f9f447b430674: fix(palette): use double-Enter submission protocol to match ntm send (@Dicklesworthstone)
  • 79b2d139fd0dfe9107aed16b017abe24bdf556cf: fix(palette): use whitelist for help toggle to avoid intercepting text inputs (@Dicklesworthstone)
  • df08d72d36ac7691c6dccfd77809cd8fe16bff30: fix(release): remove unnecessary caveats escaping, dead safety-net, deprecated runner (@Dicklesworthstone)
  • 39043447a2c84a4cc33f0d269307f5a5b38894f6: fix(robot): access docs output through Content field in quickstart test (@Dicklesworthstone)
  • a3465134579988f2871bcfa8c5cde3a4c0137212: fix(robot): align attention feed and snapshot anchor after type consolidation (@Dicklesworthstone)
  • a677db53fc6c492442643442b84f322d13678ca9: fix(robot): correct docs wording and support-bundle privacy hint flag (@Dicklesworthstone)
  • 38d13d347163c3abce011cf68bec21c6161d5a28: fix(robot): include window index in tmux target format (@Dicklesworthstone)
  • 419eb112872f1da83a52eb5974cb395b8a11acb5: fix(robot): update TestCategoryIndex to include attention category (@Dicklesworthstone)
  • 0b6250da472aadd912d2e6736fd3e2ae9b6078cf: fix(serve): cap user-provided limits to prevent resource exhaustion (@Dicklesworthstone)
  • da5093206f3fd47be58bc89f5298585a6920c206: fix(serve): cursor boundary checks for attention endpoints (@Dicklesworthstone)
  • ce554aa46445cc7bca3d1e688c30f04c0d10a11e: fix(spawn): increase registerSessionAgent timeout to accommodate retry backoff (@Dicklesworthstone)
  • a8c67843d5e062e9aa416a642d9c117a4a3f811e: fix(spawn): mark unused agentType parameter explicitly (@Dicklesworthstone)
  • e4b31577344ac30bbaa1f633552ff4279ab8ca6b: fix(spawn): prevent duplicate agent reconciliation and revert goreleaser escaping (@Dicklesworthstone)
  • 97728349782de0b2beb97217e332f07f60292114: fix(swarm): close eventChan in AutoRespawner.Stop to prevent goroutine leaks (@Dicklesworthstone)
  • 1801c5dd7892c85d0533459cc3c40ca068eed69a: fix(swarm): empty DefaultAgentArgs so bare shell aliases launch correctly (@Dicklesworthstone)
  • 94aaa61cbee3d70c0199a3d82e25135047bc64b9: fix(swarm): nil-result guards in orchestrator, limit detector hardening (@Dicklesworthstone)
  • 1f366b39365786020c21644824aceaf71d5c4a1d: fix(swarm): three bug fixes in auto_respawner and limit_detector (@Dicklesworthstone)
  • abe625f8b5910da9c91b68fe1372774c7977e3fb: fix(templates): distinguish explicit model requests from defaults in override guard (@Dicklesworthstone)
  • 3b8939e70c85e1f98b08458befedac9ff3014dce: fix(test): use dynamic timestamps and wider stale window in projection persistence test (@Dicklesworthstone)
  • eddedf5904b1f57853f50d994bb3ebecc50efdd5: fix(tmux): correct pane ID format from session:N to session:.N across all subsystems (@Dicklesworthstone)
  • 0b4a845ba97bc971913d1ac7dfff50a3ecc2f0d8: fix(tmux): rewrite FIFO reader to goroutine+channel instead of SetReadDeadline (@Dicklesworthstone)
  • 6ca5e629080b8f8d1e2ac6a84219774c702bf973: fix(tui): add cleanup() to release configCloser on dashboard quit (@Dicklesworthstone)
  • 12e274555494bf5623a6c505f613be74dc5ab574: fix(tui): add missing imports in decomposed dashboard files (@Dicklesworthstone)
  • cdffc266d942b57fdd46c1d27b1be2452771f0cd: fix(tui): eliminate header staircase effect with block-centered layout (@Dicklesworthstone)
  • 217575cf74cecb8ced291adbaeaddda05034ec19: fix(watcher): prevent duplicate file entries in reservation attempts (@Dicklesworthstone)
  • 78a68229e15bf1ad19cc2c4089b25a846639fca5: fix(webhook): close queue channel in Stop to prevent goroutine leak (@Dicklesworthstone)
  • b1a326f731b181003d1d0e470971cc0eb871f81b: fix: correct GoReleaser cask caveats template (fixes #91) (@Dicklesworthstone)
  • 7726aabf6c94132538a279b067be8e3242602b7c: fix: handle ENOENT in DeleteManifest and synchronize OutputFormat/OutputVerbosity globals (@Dicklesworthstone)
  • c272b7ad158d6e5dd83abec8e4ca678adbe1280f: fix: harden error handling and input validation across subsystems (@Dicklesworthstone)
  • 362ad6e57d1b31a54ba28fdd81099df9e36ebec7: fix: route printable keystrokes to filter input when palette is focused (@Dicklesworthstone)
  • f54d3d2d685036014cf8dac2ba8e4d36f05fe943: fix: use canonical flag names and full commands in error hints (@Dicklesworthstone)

Performance

  • 18e462c1dd0512718bf3f594ce3873179feb90a0: perf(pipeline): O(1) ready-step tracking with incremental dependency resolution (@Dicklesworthstone)
  • 79665b2c00da3a06f5826bbb3a86ec6fffc00d38: perf(summary): compile path-extraction regexes once at package init (@Dicklesworthstone)

Documentation

  • 60e8406305ffd40422057add16220235fb65d245: docs(tmux): update comments to reflect Claude Code buffer send support (@Dicklesworthstone)

Others

  • b0fa9d36a216103cbcf5b72ddd1256b0b5e988cf: chore(beads): add issue tracking for NTM development tasks (@Dicklesworthstone)
  • 9382cc979cb0da24d91aa9ae186cda038b55caa6: chore(beads): bump migration-hint-ts to 1774128647 (@Dicklesworthstone)
  • b55e89990c65c1521e22585e873421788a1cd5ee: chore(beads): bump migration-hint-ts to 1774223682 (@Dicklesworthstone)
  • 7735a7c00c0435fd371b44fd6b6abeae17107ddd: chore(beads): bump migration-hint-ts to latest schema state (@Dicklesworthstone)
  • 1199a1287913ed5cd8a2463da2c536a77765ecd8: chore(beads): close P0 attention feed validation gate br-7h8it (@Dicklesworthstone)
  • 01301ab22b7ab917c7d531e46593695fd8b8553c: chore(beads): close Phase 1 verification gate br-bgfdt (@Dicklesworthstone)
  • 0ef858a3a4d3aa4be9215027482004deb937e295: chore(beads): close TUI Glamour Upgrade and Overlay-Feed Integration campaigns (@Dicklesworthstone)
  • c45d3c30016e031105e66f7a83f02cf12901708c: chore(beads): close bd-j9jo3.6.2 — projection-backed --robot-status is complete (@Dicklesworthstone)
  • add5a8b5776a1cde28ab172296f2f8d597645f28: chore(beads): close br-6g08x Phase 4a huh forms (@Dicklesworthstone)
  • 22e63e68f2dfec4b1525df6d0b33589103f4a5e2: chore(beads): close br-7dnb7 Phase 3 VERIFY gate (@Dicklesworthstone)
  • 9d36596881112abf16776dfb23cd41fbe05fec13: chore(beads): close br-a6cs7 bubbles/list integration (@Dicklesworthstone)
  • 122cfcb12ffb330c83c02013cd402cb86ad30998: chore(beads): close br-ee3h8 scrollable panel work (@Dicklesworthstone)
  • ab465de198a053cb5842cf52223dc6ce620488b4: chore(beads): close br-obaln dashboard decomposition (@Dicklesworthstone)
  • e0023cdc7ffb2e7f4a7cde532dd54ca39d5183ed: chore(beads): close br-pihrr (bubbles/table history panel) (@Dicklesworthstone)
  • aa6673c06924c8aef842284e82852c8cb943092b: chore(beads): close br-zqcqd FocusRing refactor (already complete) (@Dicklesworthstone)
  • 76979a5529ad5a48fd9cad72d00381ca42d5b352: chore(beads): close tui-upgrade Layer 0+1 beads (@Dicklesworthstone)
  • a1dd7642bc3c33ecb398f0656352dd23ebcb2850: chore(beads): sync issue tracker state with latest bead metadata (@Dicklesworthstone)
  • 89d8aaa75a68645c25a5799705b90c8fd9af8611: chore(beads): sync issue tracker state with updated bead metadata (@Dicklesworthstone)
  • 5fa97abb3e19e039fc7903e76f1f3fe52bdbf67b: chore(beads): update NTM beads config and issue status (@Dicklesworthstone)
  • 6f6f4f3a04ff61dabe48dd9ff200b4c3cf370e0f: chore(beads): update NTM issue tracking (@Dicklesworthstone)
  • 9cd6ec3df5c96364c3eac84840a4f0f663259a46: chore(beads): update NTM issue tracking status (@Dicklesworthstone)
  • 281165214833d576c4972de2f863501383cbf31f: chore(beads): update NTM issue tracking status (@Dicklesworthstone)
  • e4e1332db86984835d94b7532b12ac295691857c: chore(beads): update beads configuration (@Dicklesworthstone)
  • a40671007000c50889951831282d73403d7daed9: chore(beads): update issue status (@Dicklesworthstone)
  • 427174f7acca600e4ebeca36b5326a8f5c18db54: chore(beads): update issue status (@Dicklesworthstone)
  • 279c05f5dca179e955b214c5ae39d65c11b299cd: chore(beads): update issue status for agent types and robot-events work (@Dicklesworthstone)
  • 62eb48ed878533c9a8af48faa7e515aaedb385b7: chore(beads): update issue status for attention feed dashboard integration (@Dicklesworthstone)
  • e727ca4264936b30ca5112f5d239b055929a0b78: chore(beads): update issue status for br-ofwdn (@Dicklesworthstone)
  • 22dcfd4fc320fed77fc358f69d5dcbf23034af26: chore(beads): update issue status for br-pihrr (@Dicklesworthstone)
  • a854e9e0b188c371c9314cf5e5ecb43a7060fe11: chore(beads): update migration hint timestamp (@Dicklesworthstone)
  • 6ab7efb488ea309b015e312d615f0cf31e97197d: chore(beads): update migration hint timestamp (@Dicklesworthstone)
  • e1a6e46d2652a61352495f25312ce222cbcb29f7: chore(beads): update migration timestamp (@Dicklesworthstone)
  • 5991c25cf4efc709d650e84b2754d40ece47f522: chore(deps,perf): pre-compile reservation regexes, add harmonica dep, isolate VHS temp dirs (@Dicklesworthstone)
  • 2608967b6fef58cc539d5503407bffdb12dd1511: chore(tui): remove unused imports from model.go (@Dicklesworthstone)
  • a00fb1af337708cf984e6c50f85c549942125fa1: feat(attention,reservations,mail): adaptive heartbeats, robust reservation tracking, and conditional mail events (@Dicklesworthstone)
  • 9bb1b9937e88db9488b7b94a501d5efeb1072dd3: feat(attention,state,cli): incident-scoped replay, time-range queries, and session-aware project dir resolution (@Dicklesworthstone)
  • 51705b90df285b61ddc19ef46ad80fdf33daa74e: feat(checkpoint,cli,pipeline,events,server): harden validation, fix truncation, enrich API responses (@Dicklesworthstone)
  • b1c89536e6900a841698ec97b06f64cb7ea76eff: feat(cli,ensemble,robot,serve,state): fix slice aliasing, harden resume resolution, propagate RowsAffected errors (@Dicklesworthstone)
  • 98822513bdca7baab9b1fdfb3dbb435d30c39c47: feat(cli,events,server): validate session names, enrich attention events API response (@Dicklesworthstone)
  • b2751201af0877699e4e7d78c83f35510736caac: feat(cli,robot,serve,summary): harden session validation, clone registry, fix EOF/error handling (@Dicklesworthstone)
  • 92f9563af0753a39525a4ec285ea46c2384fa93d: feat(cli,robot,tui,e2e): recognize Cursor, Windsurf, and Aider agent types across all layers (@Dicklesworthstone)
  • 05db2385efe419dd97872b38d976b92818c1585d: feat(cli,serve): add --robot-digest flag and refactor attention stream preparation (@Dicklesworthstone)
  • 9cd90a12220b75ec18ad68c8864792266bf66f0d: feat(cli,tui): add overlay command, expand bind command, and dashboard improvements (@Dicklesworthstone)
  • d8f45f32c4d54d983b32f23ab35cb888f72e67ae: feat(cli,tui): expand bind/overlay/dashboard commands and help component (@Dicklesworthstone)
  • 2c78f87d56da80ba1c18ddad833c90f10222f6e2: feat(context,recovery,tui): SendBuffer for large prompts, deterministic handoffs, dedup file counts (@Dicklesworthstone)
  • 1fe396084c1f1ee0bacccf9aaffc386040916117: feat(coordinator,robot,web): conflict resolution system, webhook validation, dashboard state hooks (@Dicklesworthstone)
  • 18ae64f38a0f2e0dee48dd9c09159a2d57b8ff56: feat(e2e,tui): complete TUI Glamour Upgrade and Overlay-Feed Integration (@Dicklesworthstone)
  • 97653828278051b9b9d745894f09523d4fe11406: feat(events,replay,server): add incident-bounded and as-of historical replay modes (@Dicklesworthstone)
  • fe7945f3009a71936a110dd0d1f95faccab919f6: feat(incidents,webhook,cli): durable incident tracking, graceful webhook shutdown, and session-aware project dir resolution (@Dicklesworthstone)
  • 08038bc40e828668c6e886d6545174e1cbd1a117: feat(inspect,checkpoint,robot,state): add projection-backed inspect-session/inspect-agent, harden checkpoint session resolution, refactor GC helpers (@Dicklesworthstone)
  • 3d384e25dea0cfc825c60e01d013f5a1fff90647: feat(robot,checkpoint,cli,bv): add inspect-work/coordination/quota/incident surfaces, harden checkpoint and upgrade reliability (@Dicklesworthstone)
  • 76c7c6af20bb13df5996179e0b870790f8854669: feat(robot,dashboard): mail attention signals and snapshot bootstrap contract (@Dicklesworthstone)
  • 87f5baff034b43d150dfd0bc248436621f4503ec: feat(robot,events): attention feed digest engine with conflict event types (@Dicklesworthstone)
  • ec7af4223d0a8ab562f4cbf15172e3463a6919b9: feat(robot,pt,serve): projection-backed status, PT state-change callbacks, and live server integration (@Dicklesworthstone)
  • 576fd45fa7324051c028ac166b8082335e792f8c: feat(robot,serve): add operator loop guardrails and REST/CLI parity for capabilities (@Dicklesworthstone)
  • ec9451f3faa901e08861d5d69a6bf8f6b8e88dfa: feat(robot,serve,web): robot-redesign runtime layer, adapter stack, hardened server, and dashboard type safety (@Dicklesworthstone)
  • e5c18d7d6646246a70a60a7b200e2ee321bd4881: feat(robot,tmux): improve overlay validation order, document --overlay-no-wait, tmux session fallback (@Dicklesworthstone)
  • e38144e39c29dee4471669537992caad920e4fc9: feat(robot/adapters): expand work coordination adapter with mail summaries, reservation pressure, and handoff context (@Dicklesworthstone)
  • 0cc7561043129471884cf82009c726aac88d11df: feat(serve,state,tmux,tracker): log recovered panics, harden error handling in pipelines, audit, and timeline (@Dicklesworthstone)
  • bc98efb60a8fe7df7b249a09993c4f5e1a3c82a8: feat(snapshot,alerts,scanner,ensemble,robot): enrich snapshot schema, fix alert granularity, harden autoscan exclusions (@Dicklesworthstone)
  • 2d22e98c225e5c2a38a858168d0aa8ce6e4f5deb: feat(theme,tools,alerts,robot,cli,serve): add agent themes for Cursor/Windsurf/Aider/Ollama, add WaitDelay to all tool subprocesses, improve alert severity ranking, harden robot/serve/cli (@Dicklesworthstone)
  • 162f12bfee1781b61d602016fdeac2003b0fa360: feat(tui,cli): spawn wizard, gradient tab bar, panel gap spacing, statusbar, overlay, icon alignment (@Dicklesworthstone)
  • 008f05e53eb69d7c24b9d90bc01f445b1144069e: feat(tui,dashboard): vendored bubbletea fork, theme system overhaul, reservation watcher refactor, adaptive model (@Dicklesworthstone)
  • 31b79596a5e92ef20ae2b309e1b80dac4f43d27d: feat(tui,events): human overlay events with duration tracking and dashboard telemetry (@Dicklesworthstone)
  • 73973f231575d640576db7ae680355be0bf32dd4: feat(tui,robot): attention feed panel with unsupported condition documentation (@Dicklesworthstone)
  • 50cdee9946963c08754073ac0fb487c440690408: feat(tui,robot,agentmail,session,timeline): comprehensive improvements across TUI, robot mode, agent mail sessions, and persistence (@Dicklesworthstone)
  • 724bde3647d6917abe8d604740cf431517b9d7eb: feat(tui,serve): scrollable panels, toast system, sparkline improvements, dashboard layout tests, server hardening (@Dicklesworthstone)
  • cb983804087556bac47feb1030d75d220236d69b: fix(agentmail,checkpoint,health): agent registry remap on re-register, compressed scrollback restore, rate-limit restart guard (@Dicklesworthstone)
  • 9626579191289320821448b1197de035e48542fb: fix(assign,swarm): nil safety and channel lifecycle improvements (@Dicklesworthstone)
  • b149dd8ddf854dec7f6143c7d89e040176f977c3: fix(bd,tools): add output size limits to bd message client and tool commands (@Dicklesworthstone)
  • b78c3b470b373ed93ad8bc6db2bd3aa0cafab5fe: fix(bv,tests): per-workspace mutex for br subprocess serialization, test isolation for beads handlers (@Dicklesworthstone)
  • edfc553325a65cd3eeecaebd79b3435b52727603: fix(cli,cm,ensemble,serve): harden error handling for json.Marshal and file stat calls (@Dicklesworthstone)
  • 121652402959ff2fab8b408bdc801d942d1b743a: fix(docs,ensemble): use canonical flag names in docs and add mutex to state store singleton (@Dicklesworthstone)
  • 92117a8bc011d9ea8f453639419f5c3680681593: fix(ensemble,pipeline,tokens): harden json.Marshal fallbacks, wire ProjectDir through pipeline, fix division-by-zero in token usage (@Dicklesworthstone)
  • 8ab3ac269f470d5ddcfb78d6ed1e65bcbdb4df1f: fix(pipeline,serve,tmux): add panic recovery to goroutines, prevent closed-channel drains (@Dicklesworthstone)
  • bfd77c80b148f393926ddce2c655f9d69109724e: fix(ratelimit,tui): mutex ordering fix and unused import cleanup (@Dicklesworthstone)
  • e9225bf3e34cf97161df14da70a4e21709805335: fix(robot,scheduler,tui): extract controlPaneIndex, fix backoff extension race, align resize tests to 6-panel (@Dicklesworthstone)
  • fa59ce4547b26537f4431c060df44db1844eb2cf: fix(serve,agentmail): overhaul Agent Mail HTTP error handling with correct status codes and structured conflict responses (@Dicklesworthstone)
  • dd22515e761c3fbf6919537abd0d958c57db0df9: fix(swarm,safety): harden temp file cleanup and cap query/TTL bounds (@Dicklesworthstone)
  • fafdd350c778cf1c3917db58c6e5098c7c6ea88f: fix(swarm,tui): orchestrator pane tracking, layout indent consistency (@Dicklesworthstone)
  • fac4e64815b8c91f7cd79eed2ae26adc83dc9fa6: fix(tools,context,tui): output safety limits, context key caching, timeline guards (@Dicklesworthstone)
  • 455482936715a82fdebfcd37b869b4d36d9c5fbd: fix(tui,webhook): toast reduced-motion dismiss, conflict agent extraction, webhook error handling (@Dicklesworthstone)
  • fd01fd5e9d85a9bcee7ed6000cda21772c5ed5f2: refactor(agentmail): return structured ReleaseReservationsResult from ReleaseReservations API (@Dicklesworthstone)
  • 237d3a22d603ccda15d174c2c6c1f8ed7854cab5: refactor(agentmail): return structured results from MarkMessageRead and AcknowledgeMessage APIs (@Dicklesworthstone)
  • d665f311acb5a01273afd04949c55630c3d7a82b: refactor(agentmail): use full-path project slugs with legacy fallback and harden session storage (@Dicklesworthstone)
  • c65e50ec813f6e09569aed466570f7d2f06b7a8e: refactor(cli): extract announceAssignWatchOverlay and add comprehensive tests (@Dicklesworthstone)
  • 6473bb84780182cbb2d5f60e347db5a9c5ef24bc: refactor(cli): extract prepareAndAnnounceAssignWatchOverlay with callback hooks (@Dicklesworthstone)
  • 81b94ed15856558d5ed580c079f0dfee5c06920a: refactor(cli,tui): simplify send command and dashboard rendering (@Dicklesworthstone)
  • 95bbdb689dfd89bf5fa23a9cfb175f9c5637d6d7: refactor(dashboard): deduplicate WindowSizeMsg handler, add reduced-motion tick rates (@Dicklesworthstone)
  • 233722b9eae46d95135670bebb203475faa47714: refactor(palette): extract layout helpers, centralize viewport sync, gate animations (@Dicklesworthstone)
  • ae7205d8206a052b5271508b6fe4612f717e424f: refactor(robot): consolidate snapshot attention into robot.go, delete anchor file (@Dicklesworthstone)
  • c6a44e7fecf5cfdc5bf85cffb7e9c5fcdb25e79b: refactor(robot): remove duplicate SnapshotAttention types from robot.go (@Dicklesworthstone)
  • ac1b13eea00f28ac513e736696639dbcb9f4e028: refactor(robot): simplify snapshot_attention.go to anchor file (@Dicklesworthstone)
  • 2b4c4f344f1a0b5f72563d249c292df518ee5255: refactor(serve): remove ~1k lines of unused API handlers, harden JobStore, fix sanitizeRequestID (@Dicklesworthstone)
  • 82cf982e5feeb959f90d4bff78b237482f3018ba: refactor(tui): decompose dashboard.go into logical sub-files (@Dicklesworthstone)
  • 8c62a6156e82e83df09b68861d83569762b2dc0a: refactor(tui): improve scrollable panel stability and dashboard panel resilience (@Dicklesworthstone)
  • 13d302e62d9c452d76239863a5e0e61be051f712: refactor(tui,assign,palette): simplify reservation logic, refine sparkline/toast components, streamline dashboard panels (@Dicklesworthstone)
  • 3d44a47f53c07a9c0161119822d42a5ad87e9be2: refactor(web): remove unused panes and tags fields from Session interface (@Dicklesworthstone)
  • ed349270a7424e1123a93cee7415460b7e4b986e: refactor: comprehensive code quality pass — struct alignment, error handling, import ordering, idle detection, and redaction optimization (@Dicklesworthstone)
  • 137e21b1bf7342ca1ca9e6a9fc98dfab26c24588: security(checkpoint): prevent path traversal in storage, export, integrity, and restore (@Dicklesworthstone)
  • 74c36f147aac3745327ab781ec85ec072e0deca6: test(dashboard): attention feed test serialization, popup cursor tests, render badge tests, beads metadata (@Dicklesworthstone)
  • 8928033cf28cdd3d09bb5c5308ef77d194accfe1: test(perf): add Phase 5b performance benchmarks for spring animations (@Dicklesworthstone)
  • c98cb0c1f5558eadf5e7f8c21ae3bf93e9db781d: test(robot): profile filtering and operator loop test coverage, update beads (@Dicklesworthstone)
  • f63a109019a79f5e424667ffe5515a02ddec3c18: test(robot,events,e2e): comprehensive attention feed integration test coverage (@Dicklesworthstone)
  • 7b90457603521cd43ad147a38028f65aca980a1c: test(robot,serve): expand snapshot test coverage, fix struct alignment, clean up imports (@Dicklesworthstone)
  • 0d80e708601494b3febc3f18ec5308909f4c05ef: test(robot,tui): comprehensive attention system test coverage (@Dicklesworthstone)

Full Changelog: https://github.com/Dicklesworthstone/ntm/compare/v1.8.0...v1.9.0

Container Image: ghcr.io/dicklesworthstone/ntm:v1.9.0

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track ntm

Get notified when new releases ship.

Sign up free

About ntm

Named Tmux Manager — spawn, tile, and coordinate multiple AI coding agents (Claude, Codex, Gemini) across tmux panes with a TUI command palette.

All releases →

Beta — feedback welcome: [email protected]