Tags give the ability to mark specific points in history as being important
-
v3.7.0
protectedRelease: muxr v3.7.0e79b4fc4 · ·muxr v3.7.0 Additive fail-loud + config-skew guardrails (v4 program, Phase 2). Non-breaking; rolls to every machine via the mise pin. - feat: schema_version forward-compat floor (fails loud with "upgrade muxr") - feat: read-path lint (fs::read banned outside primitives.rs) - fix: primitives::read_text is the sole file-read path - fix: corrupt state.json no longer silently cold-launches (session_id_for) - fix: missing configured harness prompt file fails loud; recycle composes before kill so a compose failure can't destroy the session - fix: unparseable campaign.md warns-and-skips instead of vanishing
-
v3.6.3
protectedRelease: muxr v3.6.3c1948a1e · ·muxr v3.6.3 Correct the interrupt-reclaim signal (#12). 3.6.2 corroborated a busy state file against #{session_activity}, which is last-CLIENT-INTERACTION time, not agent output -- it stays frozen while an unattended agent streams a turn, so 3.6.2 could reclaim (kill) a working-but-unattended session. Readiness now reads #{window_activity} (last pane output in the active window), which tracks agent work even detached: a live turn reads quiet ~0s (kept Busy), an interrupted one grows past the window (reclaimed). Simulated both directions on real Claude Code 2.1.202 before shipping. The switcher keeps session_activity for recency sort; only readiness moved. Also repairs muxr's activity floor generally. ADR 0007. -
v3.6.2
protectedRelease: muxr v3.6.2bc3091c4 · ·muxr v3.6.2 Reclaim interrupted-but-quiet turns by default. An interrupted Claude turn fires no Stop hook, so its busy state file is never cleared to idle; the default File probe trusted it until stale_busy_secs (1h), so upgrade skipped the session and recycle waited out its timeout. The default probe now corroborates a still-busy verdict against tmux pane activity: pane quiet for >= max(min_idle, 120s) means the turn was interrupted and the session is reclaimed now. Conservative -- a live turn keeps the pane refreshing, the 120s floor protects recycle's 5s window, and stale_busy_secs remains the backstop when tmux activity is unavailable. Promotes ADR 0003's opt-in reclaim into the core default. ADR 0007.
-
v3.6.1
protectedRelease: muxr v3.6.1cc182d7f · ·muxr v3.6.1 Fail loud on present-but-unparseable session files. compose_launch_command loaded campaign.md/log.md best-effort and collapsed a MISSING and a PRESENT-BUT-UNPARSEABLE file to the same empty default, so a one-character frontmatter typo silently relaunched a live session stripped of its composed HARNESS prompt and every campaign --add-dir path. Now ABSENT still degrades (archived-but-running) while PRESENT-BUT-UNPARSEABLE fails loud, naming the file: recycle pre-flights before the destructive flush, upgrade composes before the exit and skips loud, restore skips rather than de-fang. ADR 0006.
-
v3.6.0
protectedRelease: muxr v3.6.03409c34e · ·muxr v3.6.0 Config seam: muxr natively discovers per-repo muxr.toml fragments and carries an open [repos.<name>.ext] namespace it hands to extensions, so estate and preference data is drop-in config, never a muxr rebuild, and a repo absent on a machine is simply not discovered (zero cross-machine knowledge). Adds `muxr config` for extensions to read the merged view, and a config-tunable [readiness].stale_busy_secs. Defaults byte-identical to 3.5.2. ADR 0005.
-
v3.5.2
protectedRelease: muxr v3.5.22fcda0cd · ·muxr v3.5.2 Recycle send_text submit fix: a long multi-line flush no longer strands as an unsubmitted paste-draft in the agent composer. send_text now sends the body literally (no trailing Enter) then submits with a separate Enter after a settle, so the paste closes before submit. Verified end-to-end against Claude Code 2.1.202.
-
v3.5.1
protectedRelease: muxr v3.5.13717c26f · ·muxr v3.5.1 Fix: recycle hung ~600s then SIGKILL for interactive sessions (#8). - fix(recycle): gate on the readiness idle signal and let muxr send the exit keystroke itself, rather than waiting on an agent self-/exit that an interactive CLI can never perform. Mirrors `upgrade`. Verified end-to-end against a fake never-self-exiting agent (completes in ~6s vs a 600s hang).
-
v3.5.0
protectedRelease: muxr v3.5.03cabb9d8 · ·muxr v3.5.0 Companion panes: an optional review/preview pane beside the runtime, created at launch and faithfully recreated on restore (ADR 0004). - feat: companion pane at the create_session chokepoint. Opt-in, config-driven ([companion] global, or [repos.<name>.companion] override); recreated on launch, recycle, and local restore with no state.json change; focus stays on the runtime. - docs: ADR 0004 flipped to Accepted (implemented).
-
v3.4.0
protectedRelease: muxr v3.4.0a26f4633 · ·muxr v3.4.0 Extension levers for the readiness gate and resolver, plus an ADR/RFC decision-record convention. - feat(#6): interrupt-reclaim readiness Command probe (extensions/examples/readiness.sh) - feat(#7): repo-scoped + portable resolver example (.repo opt-out, ~/ paths) - feat: additive repo_dir on the resolver ResolveIntent - docs: ADR/RFC decision records 0001-0003 (small stable core, readiness, reclaim) - deps: pipeline v5.3.1; lock-file maintenance
-
v3.3.2
protectedRelease: muxr v3.3.22ff1a621 · ·muxr 3.3.2 — config robustness (#3): unknown/renamed keys fail loudly
-
v3.1.1
protectedRelease: muxr v3.1.1b46113c9 · ·muxr v3.1.1 -- adversarial-review fixes (detection robustness, packaging allowlist, opencode example)
-
v3.1.0
protectedRelease: muxr v3.1.0489cf1e7 · ·muxr v3.1.0 -- built-in adapters as shipped data; core carries zero runtime knowledge
-
v3.0.0
protectedRelease: muxr v3.0.07b296de3 · ·muxr 3.0.0: small runtime-agnostic core + subprocess extension contract
-
v2.1.0
protectedRelease: muxr v2.1.0d09c4403 · ·muxr v2.1.0 Config-drive resolver: the layout is now data, not compiled-in. - feat: [layout] config struct (campaigns_dir, campaign_file, log_file, archive_dir, switchboard_slug); each default reproduces the built-in 2-level model, so [layout] is a non-breaking override. - refactor: layout-dependent primitives + compose_launch_command read config.layout end-to-end; retired the delegating free-fns and the ARCHIVE_DIR / SWITCHBOARD constants. No behavior change at default layout.
-
v2.0.1
protectedRelease: muxr v2.0.13e173c2e · ·muxr v2.0.1 -- repo/campaign redesign (first published 2.0; see CHANGELOG)
-
v2.0.0
protectede222843d · ·muxr v2.0.0 — repo/campaign redesign Breaking: sessions are now two levels, <repo>/<campaign>. The first arg is a repo key ([repos] in config); the old harness-key indirection and the 3-level <harness>/<category>/<topic> naming are gone. Depth is handled by sharding, not a third segment. Highlights: - Repo/campaign model + on-disk campaigns/<campaign>/{campaign.md,log.md}; category becomes frontmatter; sharded_from lineage. - Rebuilt chooser: active-only default (a = all), bold per-repo color bands with on-disk path/remote, x archive, c recycle, n new, / filter. - System prompt is a POINTER, not a snapshot: HARNESS + campaign what/how + entrypoint + re-read-after-/compact; the growing log body is no longer inlined. Fixes a bug that dropped campaign/log for plural-prompt repos. - Resumable dormant campaigns (--resume from saved state); --fresh opts out. - muxr recycle (agent-paced flush to log.md across all campaign locales, then reopen fresh — the alternative to compact-looping), muxr reorient, muxr archive, muxr migrate-layout (collision- and data-loss-safe), muxr shard. - Absorbs the 1.5.0 in-place upgrade work. 129 tests; clippy clean under deny(warnings); jig agent-shape green.