v1.9.73

langgenius/difyv1.9.73Jun 21, 2026by github-actions[bot]

AI Summary

This release addresses critical locale parsing issues in terminal sessions and improves configuration stability, while introducing local-first conductor support.

Key Highlights

  • Fixes sessions being read as `error` under non-UTF-8 locales (C/POSIX/unset LANG).
  • Fixes self-heal functionality to no longer bloat the `config.toml` file.
  • Introduces local-first conductor support that works without remote channels.

New Features

  • Conductors work without remote channels (local-first)
  • Add `group_sort` config option to choose within-group session ordering
  • Session-switcher hotkey is opt-in
  • Session-switcher dialog shows title/subtitle and auto-expands width
  • Add worktree-destruction hook (`agent-deck-worktree-destroy.sh`)
  • Test coverage for the worktree setup path

Full Release Notes

## Agent Deck v1.9.73

Terminal session manager for AI coding agents.

This release bundles every fix and feature merged since **v1.9.70** (the v1.9.71 and v1.9.72 prep tags were never published, so their changes ride along here).

### ⭐ Headline fix — sessions no longer read as `error` under a non-UTF-8 locale ([#1496](https://github.com/asheshgoplani/agent-deck/pull/1496))

The status probe now uses a printable field delimiter so `tmux -F` reads survive a non-UTF-8 locale. Under `C`/`POSIX` or an unset `LANG` — the exact environment headless conductors and CI runners boot into — every session was being parsed as `error`. This is the standout fix for anyone running agent-deck outside an interactive UTF-8 terminal.

### Fixed

- **Locale-safe status delimiter** so `tmux -F` probes survive a non-UTF-8 locale (`C`/`POSIX`/unset `LANG`); sessions no longer all read as `error`. ([#1496](https://github.com/asheshgoplani/agent-deck/pull/1496))
- **Self-heal no longer bloats `config.toml`** — the selfheal section stops growing the config file on every run. ([#1494](https://github.com/asheshgoplani/agent-deck/pull/1494))
- **Notify daemon logging initialized + bounded log** for the session-id lifecycle, so the notify daemon logs correctly without unbounded growth. ([#1498](https://github.com/asheshgoplani/agent-deck/pull/1498))
- **`--session-id` honored on the Start path** — an explicit session id is now respected when starting a session. ([#1473](https://github.com/asheshgoplani/agent-deck/pull/1473))
- **Uppercase group names work for `group create --parent` / `group delete`.** `normalizeGroupPath` preserves case, and `group delete` errors on ambiguity (with sorted suggestions) instead of silently deleting a random duplicate. ([#1501](https://github.com/asheshgoplani/agent-deck/pull/1501))
- **Forked sessions inherit tool identity** for Claude-compatible tools (gemini, codex, opencode, …) instead of resetting to `claude`. ([#1479](https://github.com/asheshgoplani/agent-deck/pull/1479))
- **Headless web menu no longer serves stale content** after session changes — the menu snapshot cache is invalidated on every change. ([#1477](https://github.com/asheshgoplani/agent-deck/pull/1477))
- **Dialogs respect terminal width** via a `fitDialogWidth` helper, preventing overflow/border clipping on narrow terminals. ([#1476](https://github.com/asheshgoplani/agent-deck/pull/1476))
- **Orphaned sub-sessions render in stable order** instead of shuffling between redraws. ([#1443](https://github.com/asheshgoplani/agent-deck/pull/1443))
- **tmux: live control pipes kept only for active sessions** (small LRU) — eliminates attach-storm freezes and tmux backpressure when running multiple deck instances. ([#1469](https://github.com/asheshgoplani/agent-deck/pull/1469))

### Added

- **Conductors work without remote channels (local-first).** `conductor setup` defaults to local-only; a single gateway question gates all channel prompts; heartbeat is always-on; re-running setup is credential-wipe-safe. ([#1474](https://github.com/asheshgoplani/agent-deck/pull/1474))
- **`group_sort` config option** to choose within-group session ordering (creation order by default; set `group_sort = "actionable"` to restore recency-first). ([#1443](https://github.com/asheshgoplani/agent-deck/pull/1443))
- **Session-switcher hotkey is opt-in** (no longer bound by default; set `switch_session` under `[hotkeys]` to enable). ([#1478](https://github.com/asheshgoplani/agent-deck/pull/1478))
- **Session-switcher dialog shows title/subtitle and auto-expands width** so labels are never truncated. ([#1475](https://github.com/asheshgoplani/agent-deck/pull/1475))
- **Worktree-destruction hook** — `agent-deck-worktree-destroy.sh` runs (60 s timeout) before `git worktree remove`, enabling pre-cleanup. ([#1487](https://github.com/asheshgoplani/agent-deck/pull/1487))
- **Test coverage for the worktree setup path.** ([#1472](https://github.com/asheshgoplani/agent-deck/pull/1472))

### Installation

**Homebrew (recommended):**
```bash
brew install asheshgoplani/tap/agent-deck
```

**Quick Install:**
```bash
curl -fsSL https://raw.githubusercontent.com/asheshgoplani/agent-deck/main/install.sh | bash
```

**Go Install:**
```bash
go install github.com/asheshgoplani/agent-deck/cmd/agent-deck@v1.9.73
```

---

**Full Changelog**: https://github.com/asheshgoplani/agent-deck/compare/v1.9.70...v1.9.73