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-typesruns.tsfiles directly — no build step needed during development - Build:
tscemits strict JavaScript todist/ - Publish:
bin/cli.jsimports fromdist/, 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%and007%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