Skip to content

Tags: amirlehmam/wmux

Tags

v0.7.9

Toggle v0.7.9's commit message
feat(updater): notify of new GitHub releases via in-app badge (v0.7.9)

The existing electron-updater wiring fails silently because our portable-zip
release flow doesn't ship a latest.yml manifest. Add a lightweight notify-only
path: poll the GitHub /releases/latest REST endpoint at startup (5s delay) and
every 6h, broadcast new versions to all renderers via IPC, render a green
pulsing badge in the titlebar. Click opens the GitHub release page in the
default browser via shell.openExternal — URL whitelisted to github.com.

This unblocks awareness of new versions without requiring NSIS + signing,
which we still want long-term once SignPath OSS quota lands.

v0.7.8

Toggle v0.7.8's commit message
fix(terminal): route Ctrl+V through xterm paste so bracketed-paste ma…

…rkers reach Claude Code (v0.7.8)

Ctrl+V was writing the clipboard directly to the PTY, bypassing xterm's
bracketed-paste wrapping. Claude Code therefore saw each newline as Enter
and only the first line of a long paste landed (no [Pasted text #N] placeholder).

Use terminal.paste() instead — it consults bracketedPasteMode and emits
through onData (already wired to PTY), so the text arrives wrapped in
\x1b[200~ ... \x1b[201~ when the foreground app has the mode enabled.

v0.7.7

Toggle v0.7.7's commit message
fix(terminal): honor user's Default Shell setting on new terminals (v…

…0.7.7)

The Default Shell preference (Settings → Workspace → Shell) was written to
the store but never read on the spawn path: PaneWrapper passed
workspace.shell (always '' for the initial session) into useTerminal, which
forwarded the empty string to the main process. resolveShell() in
pty-manager.ts then fell back to the system default (pwsh → powershell →
cmd), silently ignoring the user's WSL/cmd/bash choice.

useTerminal now resolves the effective shell with the chain:
  workspace.shell  →  workspacePrefs.defaultShell  →  main-process default.
Read via useStore.getState() at PTY-creation time so changing the
preference doesn't re-spawn live PTYs — the new default applies only to
terminals opened afterward, matching user expectation.

Fixes #5

v0.7.6

Toggle v0.7.6's commit message
wmux v0.7.6

v0.7.5

Toggle v0.7.5's commit message
fix(render): hide inactive workspace panes (v0.7.5)

Explicit `visibility: visible` on the active surface layer overrode
the parent workspace div's `visibility: hidden`, so switching sessions
left the previous workspace painting on top of the new one. Gate the
surface-layer visibility on isWorkspaceActive so inactive workspaces
inherit hidden correctly.

v0.7.4

Toggle v0.7.4's commit message
fix(terminal): re-focus xterm textarea on workspace switch (v0.7.4)

When switching workspaces, React state focusedPaneId updated correctly but
xterm.js's hidden textarea was never re-focused, so document.activeElement
stayed on the previous (now-hidden) workspace's textarea and keystrokes
appeared to hit nothing — the "frozen session" bug.

useTerminal now takes a focused prop and calls term.focus() inside the
visibility-change effect once refresh() has repainted the canvas.

Also wires the titlebar Settings button that was unhooked.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

v0.7.3

Toggle v0.7.3's commit message
chore(brand): refresh logo across app + site, bump to v0.7.3

Swap the old "w" mark for the new green terminal-window logo
everywhere it surfaces: Electron window icon, Windows taskbar/.exe
icon (multi-resolution ICO: 16/32/48/64/128/256), React titlebar
component, and wmux.org favicon + nav logo.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

v0.7.2

Toggle v0.7.2's commit message
feat(config): add ~/.wmux/config.toml reader + 17 bundled themes

Follow-up to issue #4. Ships:

- Minimal hand-rolled TOML parser (src/main/toml-parser.ts) — zero deps
  so the OneDrive-path native-module trap can't break it.
- User-config loader maps [terminal] + [terminal.colors] +
  [terminal.colors.schemes.*] onto TerminalPrefs; file-wins-at-startup,
  app-wins-at-runtime semantics.
- IPC: config.getUserConfig / config.reloadUserConfig / broadcast event.
  V2 pipe: config.get / config.reload.
- CLI: `wmux reload-config`, `wmux config show|reload|path`.
- Renderer merges parsed config over Zustand terminalPrefs on startup and
  on reload; userColorSchemes MERGE (don't clobber app-defined schemes).
- 17 new bundled presets: Ayu Dark/Mirage/Light, Cobalt 2, Material Dark,
  Monokai Pro, Palenight, Oceanic Next, Everforest Dark, Rose Pine,
  Kanagawa, Horizon, SynthWave 84, Zenburn, GitHub Dark, Night Owl,
  Nightfly. (Now 29 total.)
- docs/config.md with full example and precedence rules.
- Tests: 13 new unit tests for parser + mapper (all pass).

Bumps to 0.7.2.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

v0.7.1

Toggle v0.7.1's commit message
v0.7.1 — custom color schemes with per-pane overrides (#4)

v0.7.0

Toggle v0.7.0's commit message
fix(agent): validate cmd field and accept prompt alias in spawn handlers

Agent spawn was sending "undefined" to terminal when batch JSON used
"prompt" instead of "cmd" as the field name. Now both agent.spawn and
agent.spawn_batch accept either field name, with clear error if neither
is provided. Defense-in-depth validation added in AgentManager.spawn().

Bumps version to 0.7.0.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>