Tags

Tags give the ability to mark specific points in history as being important
  • v3.7.0

    protected
    e79b4fc4 · chore(release): v3.7.0 ·
    Release: muxr v3.7.0
    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

    protected Release: muxr v3.6.3
    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

    protected Release: muxr v3.6.2
    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

    protected Release: muxr v3.6.1
    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

    protected Release: muxr v3.6.0
    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

    protected Release: muxr v3.5.2
    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

    protected Release: muxr v3.5.1
    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

    protected Release: muxr v3.5.0
    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

    protected Release: muxr v3.4.0
    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

    protected Release: muxr v3.3.2
    muxr 3.3.2 — config robustness (#3): unknown/renamed keys fail loudly
  • v3.3.1

    protected Release: muxr v3.3.1
    muxr v3.3.1 — readiness gate loose ends closed
  • v3.3.0

    protected Release: muxr v3.3.0
    muxr v3.3.0 — readiness gate hardening
  • v3.2.0

    protected Release: muxr v3.2.0
    muxr v3.2.0 — readiness-gated upgrade
  • v3.1.1

    protected Release: muxr v3.1.1
    muxr v3.1.1 -- adversarial-review fixes (detection robustness, packaging allowlist, opencode example)
  • v3.1.0

    protected Release: muxr v3.1.0
    muxr v3.1.0 -- built-in adapters as shipped data; core carries zero runtime knowledge
  • v3.0.1

    protected Release: muxr v3.0.1
    muxr v3.0.1 -- macOS harness detection fix
  • v3.0.0

    protected Release: muxr v3.0.0
    muxr 3.0.0: small runtime-agnostic core + subprocess extension contract
  • v2.1.0

    protected Release: muxr v2.1.0
    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

    protected Release: muxr v2.0.1
    muxr v2.0.1 -- repo/campaign redesign (first published 2.0; see CHANGELOG)
  • v2.0.0

    protected
    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.