tmux-ide

Version 1.3.0

Release notes for tmux-ide 1.3.0 — TypeScript migration and validation hardening

tmux-ide 1.3.0

Version 1.3.0 migrates the entire codebase to TypeScript and strengthens config validation, backed by 225 tests across unit, integration, and CLI contract suites.

TypeScript Migration

Every source file in src/ is now TypeScript. The published package still ships compiled JavaScript via tsc, so nothing changes for users — but contributors get strict types, better IDE support, and catch-at-compile-time guarantees.

Key interfaces like IdeConfig, Row, Pane, ThemeConfig, PaneAction, and SessionState are defined in src/types.ts and used throughout the codebase.

The build pipeline:

  • Dev: node --experimental-strip-types runs .ts files directly — no build step needed during development
  • Build: tsc emits strict JavaScript to dist/
  • Publish: bin/cli.js imports from dist/, so the published package works on Node 18+ without TypeScript

Validation Hardening

The config validator now catches more edge cases:

  • Leading zeros rejected: sizes like 00% and 007% are no longer accepted
  • Row size sum check: row sizes that exceed 100% total produce a clear error
  • Pane size sum check: pane sizes within a single row that exceed 100% are rejected
  • Multiple focus check: only one pane per row can have focus: true

Config Refactor

Internal config mutation code was deduplicated. The repeated read-validate-mutate-write pattern (7 copies) was extracted into withConfig() and readConfigSafe() helpers. readConfig() is now called in exactly one place.

Test Coverage

The test suite grew to 225 tests covering:

  • All CLI commands (structured JSON and human output)
  • Config mutations (set, add-pane, remove-pane, add-row, enable-team, disable-team)
  • Validation edge cases (sizes, focus, sums)
  • tmux session lifecycle (launch, restart, stop, attach, inspect)
  • Agent team layouts and role assignment
  • Doctor checks, detect/init flows, and postinstall behavior

On this page