Skip to content

Commit b0db9a8

Browse files
centdixclaude
andauthored
chore: rename wmdev to webmux (#74)
Rename the npm package and CLI binary from `wmdev` to `webmux`. Updates all references across source files, configs, docs, and build scripts. The upstream `workmux` name is unchanged. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent f70c493 commit b0db9a8

14 files changed

Lines changed: 107 additions & 107 deletions

File tree

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ frontend/node_modules/
66
frontend/bun.lock
77
backend/dist/
88
frontend/dist/
9-
bin/wmdev.js
9+
bin/webmux.js
1010
frontend/.vite/
1111
public/
1212
.env
File renamed without changes.

CHANGELOG.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
### Bug Fixes
1313

14-
* comment out services section in wmdev template ([3967301](https://github.com/windmill-labs/webmux/commit/3967301fd4b6c2fe8b8b069b7e1b19991a86fdcb))
14+
* comment out services section in webmux template ([3967301](https://github.com/windmill-labs/webmux/commit/3967301fd4b6c2fe8b8b069b7e1b19991a86fdcb))
1515

1616
## [0.6.2](https://github.com/windmill-labs/webmux/compare/v0.6.1...v0.6.2) (2026-03-04)
1717

@@ -32,8 +32,8 @@
3232

3333
### Features
3434

35-
* add `wmdev init` onboarding command ([#65](https://github.com/windmill-labs/webmux/issues/65)) ([6e8b128](https://github.com/windmill-labs/webmux/commit/6e8b128785d716bf38cd1a3ea0d45f9837941ec3))
36-
* add `wmdev service` command for running as a system daemon ([#67](https://github.com/windmill-labs/webmux/issues/67)) ([39ba997](https://github.com/windmill-labs/webmux/commit/39ba99704482ea5bfb8567a632b741df3e6bb623))
35+
* add `webmux init` onboarding command ([#65](https://github.com/windmill-labs/webmux/issues/65)) ([6e8b128](https://github.com/windmill-labs/webmux/commit/6e8b128785d716bf38cd1a3ea0d45f9837941ec3))
36+
* add `webmux service` command for running as a system daemon ([#67](https://github.com/windmill-labs/webmux/issues/67)) ([39ba997](https://github.com/windmill-labs/webmux/commit/39ba99704482ea5bfb8567a632b741df3e6bb623))
3737
* extract StartupEnvFields component ([#66](https://github.com/windmill-labs/webmux/issues/66)) ([6a2206d](https://github.com/windmill-labs/webmux/commit/6a2206d53183bcf5f307bb3d919aa6484caef55f))
3838
* rate-limit mitigation for GitHub API calls ([#69](https://github.com/windmill-labs/webmux/issues/69)) ([efb4b4a](https://github.com/windmill-labs/webmux/commit/efb4b4a46154842e6ef5e13320f08710d2f76707))
3939
* render checkbox for boolean startupEnvs, omit unchecked from env ([e274b3b](https://github.com/windmill-labs/webmux/commit/e274b3bc472e60748bd0d389aa08b2230e8918ac))
@@ -122,8 +122,8 @@
122122

123123
### Features
124124

125-
* add debug log levels with --debug flag for wmdev ([331ed1a](https://github.com/windmill-labs/workmux-web/commit/331ed1a0445869c2d187a872f61a532c52315227))
126-
* move port allocation into wmdev backend ([#34](https://github.com/windmill-labs/workmux-web/issues/34)) ([ade42fd](https://github.com/windmill-labs/workmux-web/commit/ade42fddecb27b350c548cc2c3146014ccf4b340))
125+
* add debug log levels with --debug flag for webmux ([331ed1a](https://github.com/windmill-labs/workmux-web/commit/331ed1a0445869c2d187a872f61a532c52315227))
126+
* move port allocation into webmux backend ([#34](https://github.com/windmill-labs/workmux-web/issues/34)) ([ade42fd](https://github.com/windmill-labs/workmux-web/commit/ade42fddecb27b350c548cc2c3146014ccf4b340))
127127

128128

129129
### Bug Fixes

README.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# wmdev
1+
# webmux
22

3-
A web dashboard for managing parallel AI coding agents. Built on top of [workmux](https://github.com/raine/workmux), which handles git worktrees and tmux orchestration — wmdev adds a browser UI with embedded terminals, live status tracking, and CI integration.
3+
A web dashboard for managing parallel AI coding agents. Built on top of [workmux](https://github.com/raine/workmux), which handles git worktrees and tmux orchestration — webmux adds a browser UI with embedded terminals, live status tracking, and CI integration.
44

55
https://github.com/user-attachments/assets/48c9564f-42a5-404f-97e2-c5ee0138f15d
66

@@ -10,7 +10,7 @@ https://github.com/user-attachments/assets/48c9564f-42a5-404f-97e2-c5ee0138f15d
1010

1111
![createanddelete-1 5x](https://github.com/user-attachments/assets/7f084d27-448c-47e4-aadf-8ab25154c096)
1212

13-
Spin up new worktrees with one click. Pick a profile, type a prompt, and wmdev creates the worktree, starts the agent, and begins streaming output. Merge or remove worktrees when you're done.
13+
Spin up new worktrees with one click. Pick a profile, type a prompt, and webmux creates the worktree, starts the agent, and begins streaming output. Merge or remove worktrees when you're done.
1414

1515
### Embedded Terminals
1616

@@ -26,13 +26,13 @@ See pull request status, CI check results, and review comments right next to eac
2626

2727
![monitor-1 5x](https://github.com/user-attachments/assets/b2cf535a-0242-4c15-bdb9-344dfde5f75e)
2828

29-
Track dev server ports across worktrees. wmdev polls configured services and shows live health badges so you know which worktrees have their servers running.
29+
Track dev server ports across worktrees. webmux polls configured services and shows live health badges so you know which worktrees have their servers running.
3030

3131
### Docker Sandbox Mode
3232

3333
<!-- gif -->
3434

35-
Run agents in isolated Docker containers for untrusted or experimental work. wmdev manages the container lifecycle, port forwarding, and volume mounts automatically.
35+
Run agents in isolated Docker containers for untrusted or experimental work. webmux manages the container lifecycle, port forwarding, and volume mounts automatically.
3636

3737
## Quick Start
3838

@@ -42,15 +42,15 @@ cargo install workmux # or: brew install raine/workmux/workmux
4242
sudo apt install tmux # or: brew install tmux
4343
curl -fsSL https://bun.sh/install | bash
4444

45-
# 2. Install wmdev
46-
bun install -g wmdev
45+
# 2. Install webmux
46+
bun install -g webmux
4747

4848
# 3. Set up your project
4949
cd /path/to/your/project
50-
wmdev init # creates .workmux.yaml and .wmdev.yaml
50+
webmux init # creates .workmux.yaml and .webmux.yaml
5151

5252
# 4. Start the dashboard
53-
wmdev # opens on http://localhost:5111
53+
webmux # opens on http://localhost:5111
5454
```
5555

5656
## Prerequisites
@@ -66,13 +66,13 @@ wmdev # opens on http://localhost:5111
6666

6767
## Configuration
6868

69-
wmdev uses two config files in the project root:
69+
webmux uses two config files in the project root:
7070

7171
- **`.workmux.yaml`** — Controls worktree directory, pane layout, agent selection, and lifecycle hooks. See the [workmux docs](https://github.com/raine/workmux).
72-
- **`.wmdev.yaml`** — Dashboard-specific config: service health checks, profiles, linked repos, and Docker sandbox settings.
72+
- **`.webmux.yaml`** — Dashboard-specific config: service health checks, profiles, linked repos, and Docker sandbox settings.
7373

7474
<details>
75-
<summary><strong>.wmdev.yaml example</strong></summary>
75+
<summary><strong>.webmux.yaml example</strong></summary>
7676

7777
```yaml
7878
name: My Project
@@ -113,7 +113,7 @@ linkedRepos:
113113
</details>
114114
115115
<details>
116-
<summary><strong>.wmdev.yaml full schema</strong></summary>
116+
<summary><strong>.webmux.yaml full schema</strong></summary>
117117
118118
| Parameter | Type | Required | Description |
119119
|-----------|------|----------|-------------|

backend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "wmdev-backend",
2+
"name": "webmux-backend",
33
"private": true,
44
"type": "module",
55
"scripts": {

backend/src/config.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export interface LinkedRepoConfig {
2424
alias: string;
2525
}
2626

27-
export interface WmdevConfig {
27+
export interface WebmuxConfig {
2828
name?: string;
2929
services: ServiceConfig[];
3030
profiles: {
@@ -36,7 +36,7 @@ export interface WmdevConfig {
3636
startupEnvs: Record<string, string | boolean>;
3737
}
3838

39-
const DEFAULT_CONFIG: WmdevConfig = {
39+
const DEFAULT_CONFIG: WebmuxConfig = {
4040
services: [],
4141
profiles: { default: { name: "default" } },
4242
autoName: false,
@@ -65,11 +65,11 @@ export function gitRoot(dir: string): string {
6565
return new TextDecoder().decode(result.stdout).trim() || dir;
6666
}
6767

68-
/** Load .wmdev.yaml from the git root, merging with defaults. */
69-
export function loadConfig(dir: string): WmdevConfig {
68+
/** Load .webmux.yaml from the git root, merging with defaults. */
69+
export function loadConfig(dir: string): WebmuxConfig {
7070
try {
7171
const root = gitRoot(dir);
72-
const filePath = join(root, ".wmdev.yaml");
72+
const filePath = join(root, ".webmux.yaml");
7373
const result = Bun.spawnSync(["cat", filePath], { stdout: "pipe" });
7474
const text = new TextDecoder().decode(result.stdout).trim();
7575
if (!text) return DEFAULT_CONFIG;

backend/src/lib/log.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const DEBUG = Bun.env.WMDEV_DEBUG === "1";
1+
const DEBUG = Bun.env.WEBMUX_DEBUG === "1";
22

33
function ts(): string {
44
return new Date().toISOString().slice(11, 23);

backend/src/server.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,17 @@ import {
2727
clearCallbacks,
2828
cleanupStaleSessions,
2929
} from "./terminal";
30-
import { loadConfig, gitRoot, type WmdevConfig } from "./config";
30+
import { loadConfig, gitRoot, type WebmuxConfig } from "./config";
3131
import { startPrMonitor, type PrEntry } from "./pr";
3232
import { handleWorkmuxRpc } from "./rpc";
3333
import { jsonResponse, errorResponse } from "./http";
3434
import { handleNotificationStream, handleDismissNotification, installHookScripts, hasDashboardActivity, touchActivity } from "./notifications";
3535
import { fetchAssignedIssues, branchMatchesIssue, type LinkedLinearIssue } from "./linear";
3636

3737
const PORT = parseInt(Bun.env.BACKEND_PORT || "5111", 10);
38-
const STATIC_DIR = Bun.env.WMDEV_STATIC_DIR || "";
39-
const PROJECT_DIR = Bun.env.WMDEV_PROJECT_DIR || gitRoot(process.cwd());
40-
const config: WmdevConfig = loadConfig(PROJECT_DIR);
38+
const STATIC_DIR = Bun.env.WEBMUX_STATIC_DIR || "";
39+
const PROJECT_DIR = Bun.env.WEBMUX_PROJECT_DIR || gitRoot(process.cwd());
40+
const config: WebmuxConfig = loadConfig(PROJECT_DIR);
4141

4242
// --- Worktree list cache (short TTL to deduplicate rapid polls) ---
4343
const WORKTREE_CACHE_TTL_MS = 2000;

bin/src/init.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ function checkDeps(): Dep[] {
3838
return missing;
3939
}
4040

41-
function wmdevTemplate(name: string): string {
41+
function webmuxTemplate(name: string): string {
4242
return `# Project display name in the dashboard
4343
name: ${name}
4444
45-
# Each service defines a port env var that wmdev injects into .env.local
45+
# Each service defines a port env var that webmux injects into .env.local
4646
# when creating a worktree. Ports are auto-assigned: base + (slot × step).
4747
# Use \`source .env.local\` in your .workmux.yaml pane commands to pick them up.
4848
services:
@@ -96,7 +96,7 @@ panes:
9696
To restart dev server: tmux send-keys -t .1 C-c 'source .env.local && PORT=\\$PORT npm run dev' Enter"
9797
focus: true
9898
99-
# Dev server — waits for .env.local (written by wmdev) then starts
99+
# Dev server — waits for .env.local (written by webmux) then starts
100100
- command: >-
101101
npm install &&
102102
until [ -f .env.local ]; do sleep 0.2; done;
@@ -108,7 +108,7 @@ panes:
108108

109109
// ── Main ─────────────────────────────────────────────────────────────────────
110110

111-
p.intro("wmdev init");
111+
p.intro("webmux init");
112112

113113
// Step 1 — Git repo
114114
const gitRoot = getGitRoot();
@@ -126,7 +126,7 @@ const missing = checkDeps();
126126

127127
if (missing.length > 0) {
128128
const lines = missing.map((d) => ` ${d.tool}: ${d.hint}`).join("\n");
129-
p.note(lines, "Install these required dependencies, then re-run wmdev init");
129+
p.note(lines, "Install these required dependencies, then re-run webmux init");
130130
p.outro("Setup incomplete.");
131131
process.exit(1);
132132
}
@@ -152,20 +152,20 @@ if (existsSync(workmuxYaml)) {
152152
p.log.success(".workmux.yaml created");
153153
}
154154

155-
// Step 5 — .wmdev.yaml
156-
const wmdevYaml = join(gitRoot, ".wmdev.yaml");
157-
if (existsSync(wmdevYaml)) {
158-
p.log.info(".wmdev.yaml already exists, skipping");
155+
// Step 5 — .webmux.yaml
156+
const webmuxYaml = join(gitRoot, ".webmux.yaml");
157+
if (existsSync(webmuxYaml)) {
158+
p.log.info(".webmux.yaml already exists, skipping");
159159
} else {
160160
const name = detectProjectName(gitRoot);
161-
await Bun.write(wmdevYaml, wmdevTemplate(name));
162-
p.log.success(".wmdev.yaml created");
161+
await Bun.write(webmuxYaml, webmuxTemplate(name));
162+
p.log.success(".webmux.yaml created");
163163
}
164164

165165
// Step 6 — Summary
166166
p.outro("You're all set! Next steps:");
167167
console.log();
168168
console.log(" 1. Edit .workmux.yaml to configure pane layout for your project");
169-
console.log(" 2. Edit .wmdev.yaml to set up service ports and profiles");
170-
console.log(" 3. Run: wmdev");
169+
console.log(" 2. Edit .webmux.yaml to set up service ports and profiles");
170+
console.log(" 3. Run: webmux");
171171
console.log();

0 commit comments

Comments
 (0)