Aquesta és una versió anterior. La versió actual és la 4.10.0. wmux 4.10.0 · Data de publicació:
Fitxers d’instal·lació 3.28.0
| Arquitectura | Tipus | Àmbit | Mida del fitxer | Baixa | SHA256 |
|---|---|---|---|---|---|
| 64 bits | EXE | Usuari actual | — | github.com | VirusTotal |
L’enllaç i l’SHA256 provenen del manifest comunitari del Gestor de paquets del Windows. Convé comparar el hash del fitxer baixat abans d’executar-lo.
Notes de la versió
Added
- Resume a pane's agent conversation right from the pane. After an agent (Claude / Codex) exits back to a shell, the pane header shows a quiet ↩ Resume <agent> chip whenever wmux captured that conversation's session. Clicking it reveals the conversation UUID (with a copy button) and a preview of the exact command it will type; Resume types claude --dangerously-skip-permissions --resume <id> into that pane — the recorded permission mode is restored, and the exact-session form is used only while the pane's directory still matches the origin (otherwise it falls back to --continue). Nothing auto-runs; you press Enter. The chip stays hidden while an agent is actually running in the pane: OSC 133 shell state is the authoritative gate (a foreground command owns the PTY), with an agent-activity heuristic as fallback when shell integration is off — so a resume command can never land in a live agent's input. Available on any agent pane anytime, not only right after a reboot.
- The daemon now keeps a durable log at ~/.wmux/daemon.log. The wmux daemon runs detached with its console output discarded, so a live daemon left no trace of what it did — which made post-reboot session-recovery failures impossible to diagnose. Every daemon line is now mirrored to a rotating file (5 MB + one backup), and the reboot-recovery pass logs how many sessions it loaded from state and how many it respawned (so "loaded 0" — a persistence failure — is distinguishable from "loaded N, respawned 0" — a spawn failure). The last-resort synchronous state save on OS shutdown, previously Windows-only, is now registered on macOS/Linux too as a clean-exit backstop.
- Safely "merge" a worktree into your local base from the Git tab. Each feature-worktree row gets a Merge button. It never touches your local main (or the repo's default branch): it performs a git-native merge in an isolated worktree branched off the base. When there are no conflicts it automatically runs a verify gate (npm test + npm run lint) and — only if it passes — shows a one-line summary ("N files changed · verify passed") with Land (fast-forward the base to the result) / Discard (roll back) buttons. On a conflict nothing is auto-resolved; a "Conflict — open with Claude" button opens that isolated worktree as a new workspace so you can resolve it yourself (with Claude). Pass/fail is judged solely by the real process exit code, never by "done" text, and the in-flight merge state is derived from git on disk, so Land/Discard survives an app restart.
- Git joins the right dock as a tab, plus a git signal line and a Git button in the sidebar. The right dock is now three tabs: Orchestrator · Git · Channels. The Git tab shows the current workspace's worktrees + PRs on top and a diff roster (the former Review, merged in from its own tab) below, in one scroll. The left sidebar footer gets a Git button below Agent (opens the dock straight to the Git tab; a badge shows how many workspaces have uncommitted changes), and each workspace name now carries a git signal line: alongside the branch, read state at a glance by color — green ● (clean) / amber ●N (uncommitted changes) / blue ↑N (ahead) / red ↓N (behind). The bottom diff roster (Review) now lists only workspaces in the same repo (including its worktrees) as the one you're looking at, matching the merge workflow's scope. Earlier layouts (top header tabs, full-screen center surface) were reverted.
- Agent toolbar: Broadcast is back and works. The old Broadcast prompt relied on a browser dialog that never existed in the packaged app; it now opens an inline popover that shows how many terminals it will hit, sends to every terminal pane in the current workspace, and reports how many succeeded or failed.
- macOS: the wmux CLI now installs itself from DMG/ZIP installs. On first launch the packaged app symlinks the bundled CLI to /usr/local/bin/wmux, falling back to ~/.local/bin/wmux (with a PATH hint) when permissions deny it. Homebrew-owned or any foreign file at that path is never touched; only wmux-owned stale symlinks are refreshed. Attempted once, off the boot path.
- macOS: "Start at login" works now. The autostart toggle was a Windows-registry-only no-op on macOS; it now drives app.setLoginItemSettings, and the Startup section is visible in Settings on macOS.
- macOS: the Settings font picker now lists installed fonts via system_profiler, instead of always coming up empty (the enumeration was PowerShell-only).
Changed
- Command deck cleanup. The orchestrator tab is now labelled Agent (model) — e.g. Agent (Sonnet 5) — and clicking it while it's already active opens an inline model picker right there, so switching the orchestrator's model no longer needs a separate chip. The Multi Task/fan-out button lives on the agent toolbar (left of New chat), next to Broadcast, so a fleet can be spawned from the terminal chrome. The deck tabs also get a lighter look (truncating labels that survive a narrow deck, rounded count badges, a steel active underline).
- Daemon/session sockets moved from ~/.wmux-*.sock into ~/.wmux/. One shared path helper now feeds the daemon, main, and CLI (they each computed the path separately before), keeps sun_path under the macOS 104-byte limit, and stops littering the home directory. A live pre-upgrade daemon keeps working: the control pipe rides the existing hint file, session connects fall back to the legacy path once on ENOENT, and a stored legacy default pipe name migrates in config load.
- Terminal font fallback chain now covers macOS (Menlo, SF Mono, Monaco, Apple SD Gothic Neo) ahead of the generic monospace it used to fall straight to; UI font stack leads with system-ui instead of unbundled Inter/Segoe UI.
Fixed
- Windows: updating no longer crashes when wmux is still running. Running a new-version Setup.exe (or clicking "Restart to install" in Settings) while wmux was open collided with the live instance — locked old-version files plus a single-instance collision on relaunch — and crashed the Squirrel updater. The in-app updater now quits wmux right after launching the verified installer, and the installer hooks terminate any still-running wmux windows before doing their work, then relaunch the updated app when done. Live terminal sessions survive either way — they persist in the wmux daemon, which is deliberately left running. (#502)
- macOS: the sidebar workspace context line (branch, ports, PR) now tracks the pane's real directory. The zsh shell integration emitted OSC 133 (command markers) but never OSC 7 (working directory), so on macOS's default shell wmux never learned about a cd — the branch/git badge stayed pinned to the directory the pane was created in (usually home, where nothing shows) even after you moved into a repo. The zsh integration now emits OSC 7 on chpwd (immediately on any cd, even before a long-running command) and precmd (initial + every prompt). bash/PowerShell were unaffected because the daemon's prompt-scrape reads their default prompts (user@host:…$, PS C:\…>), but zsh's host% prompt carries no path.
- macOS: the sidebar workspace context line is also restored after an app restart. Reconnecting to a persisted daemon session dropped the session's working directory — and since the metadata poll skips any pane with no cwd, the whole context line collapsed to just the workspace name. The daemon already returns each session's cwd from listSessions; reconnect now seeds it.
- Defensive: git resolves under the minimal GUI PATH on macOS. A GUI-launched macOS app inherits only launchd's minimal PATH, not the Homebrew PATH ~/.zshrc sets up; execFile('git', …) now merges in the standard Homebrew/system locations so a machine with git installed only via Homebrew (no Xcode Command Line Tools) can still run the sidebar sync badge and worktree/task-close git checks. (Machines with Xcode CLT already have /usr/bin/git, which the minimal PATH finds — so this is hardening, not the fix for the context-line bug above.)
- macOS: clicking the Dock icon now reopens a window hidden via close-to-tray. activate only created a new window when zero windows existed; a hidden-not-destroyed window still counted, so Dock reactivation was a dead click with no visible way back short of finding the menu-bar tray icon.
- macOS: the menu-bar tray icon is no longer oversized. It rendered the 1024px .icns app icon at native size instead of a ~22pt menu-bar icon; it's now resized on macOS only.
- macOS: the menu-bar tray icon is now a legible monochrome mark, not a black blob. Simply downscaling the full-color .icns app icon (a 1024px art board on an opaque black plate) collapsed it into an unreadable dark square in the menu bar. macOS now loads a dedicated template asset — assets/trayTemplate.png (plus an @2x sibling), extracted from the app icon's own >w artwork by scripts/generate-tray-icon.js — as an alpha-only image, so the system paints it white on a dark menu bar and black on a light one and highlights it while the menu is open. Windows/Linux keep the full-color app icon.
- macOS: quitting during OS logout/restart no longer risks losing the latest session snapshot. The synchronous session flush only existed on the Windows session-end path; before-quit now flushes synchronously on macOS before any awaits.
- macOS: Ctrl+V passes through to the shell as quoted-insert. Paste interception is non-mac only now — Cmd+V already owns paste on macOS.
- macOS: terminal Ctrl+letter control bytes work again. The xterm key handler swallowed Ctrl+D/K/I/N/T/,/` (and Ctrl+=/-/0, Ctrl+`) to bubble them to app shortcuts, but on macOS those shortcuts live on Cmd — so Ctrl+D (EOF), Ctrl+I (Tab), Ctrl+K (kill-line) and friends reached neither the app nor the PTY. On macOS only the literal-Ctrl bindings (Ctrl+B prefix, Ctrl+M bookmark, Ctrl+Arrow) still bubble; everything else now passes through to the shell. Windows/Linux unchanged.