myrlin-workbook 0.8.10 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -54,6 +54,8 @@ CWM_PASSWORD=mypassword npx myrlin-workbook
54
54
 
55
55
  Password lookup order: `CWM_PASSWORD` env var > `~/.myrlin/config.json` > `./state/config.json` > auto-generate.
56
56
 
57
+ On startup, the console prints a clickable URL with a one-time token (e.g., `http://127.0.0.1:3456?token=<random>`). Click it to auto-login — the token is single-use and expires after 60 seconds, so it's safe even if it appears in terminal logs. The token is stripped from the URL bar immediately after login.
58
+
57
59
  ### Prerequisites
58
60
 
59
61
  - **Node.js 18+** ([download](https://nodejs.org))
package/package.json CHANGED
@@ -1,64 +1,64 @@
1
- {
2
- "name": "myrlin-workbook",
3
- "version": "0.8.10",
4
- "description": "Browser-based project manager for Claude Code sessions - session discovery, multi-terminal, cost tracking, docs, and kanban board",
5
- "main": "src/index.js",
6
- "bin": {
7
- "myrlin-workbook": "./src/gui.js",
8
- "myrlin": "./src/gui.js",
9
- "myrlin-tui": "./src/index.js",
10
- "cwm": "./src/index.js"
11
- },
12
- "scripts": {
13
- "start": "node src/index.js",
14
- "demo": "node src/demo.js",
15
- "gui": "node src/supervisor.js",
16
- "gui:bare": "node src/gui.js",
17
- "gui:demo": "node src/supervisor.js --demo",
18
- "test": "node test/run.js",
19
- "mcp:visual-qa": "node src/mcp/visual-qa.js",
20
- "gui:cdp": "node src/supervisor.js --cdp",
21
- "postinstall": "node scripts/postinstall.js",
22
- "restart": "bash scripts/restart-gui.sh"
23
- },
24
- "repository": {
25
- "type": "git",
26
- "url": "https://github.com/therealarthur/myrlin-workbook.git"
27
- },
28
- "homepage": "https://github.com/therealarthur/myrlin-workbook",
29
- "engines": {
30
- "node": ">=18.0.0"
31
- },
32
- "keywords": [
33
- "claude",
34
- "workspace",
35
- "manager",
36
- "terminal",
37
- "tui",
38
- "ai",
39
- "coding-assistant",
40
- "session-manager",
41
- "developer-tools",
42
- "xterm",
43
- "myrlin"
44
- ],
45
- "author": "Arthur",
46
- "license": "AGPL-3.0-only",
47
- "dependencies": {
48
- "blessed": "^0.1.81",
49
- "blessed-contrib": "^4.11.0",
50
- "chalk": "^5.6.2",
51
- "chrome-remote-interface": "^0.34.0",
52
- "express": "^5.2.1",
53
- "node-pty": "^1.1.0",
54
- "ws": "^8.19.0"
55
- },
56
- "devDependencies": {
57
- "@playwright/test": "^1.58.2",
58
- "@xterm/addon-fit": "^0.11.0",
59
- "@xterm/addon-web-links": "^0.12.0",
60
- "@xterm/xterm": "^6.0.0",
61
- "ffmpeg-static": "^5.3.0",
62
- "sharp": "^0.34.5"
63
- }
64
- }
1
+ {
2
+ "name": "myrlin-workbook",
3
+ "version": "0.9.1",
4
+ "description": "Browser-based project manager for Claude Code sessions - session discovery, multi-terminal, cost tracking, docs, and kanban board",
5
+ "main": "src/index.js",
6
+ "bin": {
7
+ "myrlin-workbook": "./src/gui.js",
8
+ "myrlin": "./src/gui.js",
9
+ "myrlin-tui": "./src/index.js",
10
+ "cwm": "./src/index.js"
11
+ },
12
+ "scripts": {
13
+ "start": "node src/index.js",
14
+ "demo": "node src/demo.js",
15
+ "gui": "node src/supervisor.js",
16
+ "gui:bare": "node src/gui.js",
17
+ "gui:demo": "node src/supervisor.js --demo",
18
+ "test": "node test/run.js",
19
+ "mcp:visual-qa": "node src/mcp/visual-qa.js",
20
+ "gui:cdp": "node src/supervisor.js --cdp",
21
+ "postinstall": "node scripts/postinstall.js",
22
+ "restart": "bash scripts/restart-gui.sh"
23
+ },
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "https://github.com/therealarthur/myrlin-workbook.git"
27
+ },
28
+ "homepage": "https://github.com/therealarthur/myrlin-workbook",
29
+ "engines": {
30
+ "node": ">=18.0.0"
31
+ },
32
+ "keywords": [
33
+ "claude",
34
+ "workspace",
35
+ "manager",
36
+ "terminal",
37
+ "tui",
38
+ "ai",
39
+ "coding-assistant",
40
+ "session-manager",
41
+ "developer-tools",
42
+ "xterm",
43
+ "myrlin"
44
+ ],
45
+ "author": "Arthur",
46
+ "license": "AGPL-3.0-only",
47
+ "dependencies": {
48
+ "blessed": "^0.1.81",
49
+ "blessed-contrib": "^4.11.0",
50
+ "chalk": "^5.6.2",
51
+ "chrome-remote-interface": "^0.34.0",
52
+ "express": "^5.2.1",
53
+ "node-pty": "^1.1.0",
54
+ "ws": "^8.19.0"
55
+ },
56
+ "devDependencies": {
57
+ "@playwright/test": "^1.58.2",
58
+ "@xterm/addon-fit": "^0.11.0",
59
+ "@xterm/addon-web-links": "^0.12.0",
60
+ "@xterm/xterm": "^6.0.0",
61
+ "ffmpeg-static": "^5.3.0",
62
+ "sharp": "^0.34.5"
63
+ }
64
+ }
package/src/gui.js CHANGED
@@ -16,6 +16,7 @@
16
16
  const { getStore } = require('./state/store');
17
17
  const { startServer, getPtyManager } = require('./web/server');
18
18
  const { backupFrontend } = require('./web/backup');
19
+ const { generateStartupToken } = require('./web/auth');
19
20
 
20
21
  // ─── Initialize Store ──────────────────────────────────────
21
22
 
@@ -92,7 +93,9 @@ const port = parseInt(process.env.PORT, 10) || 3456;
92
93
  const host = process.env.CWM_HOST || '127.0.0.1';
93
94
  const server = startServer(port, host);
94
95
 
95
- console.log(`CWM GUI running at http://${host}:${port}`);
96
+ const startupToken = generateStartupToken();
97
+ const authUrl = `http://${host}:${port}?token=${encodeURIComponent(startupToken)}`;
98
+ console.log(`CWM GUI running at ${authUrl}`);
96
99
  console.log('Press Ctrl+C to stop.');
97
100
 
98
101
  // Snapshot frontend files as "last known good" on successful start
@@ -167,7 +170,7 @@ function openBrowserWithCDP(url, cdpPort) {
167
170
  if (!process.env.CWM_NO_OPEN) {
168
171
  const cdpEnabled = process.argv.includes('--cdp');
169
172
  const cdpPort = parseInt(process.env.CDP_PORT, 10) || 9222;
170
- const url = `http://localhost:${port}`;
173
+ const url = authUrl;
171
174
 
172
175
  if (cdpEnabled) {
173
176
  openBrowserWithCDP(url, cdpPort);