@bakapiano/ccsm 0.18.0 → 0.18.2
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/lib/tunnel.js +8 -3
- package/package.json +1 -1
- package/server.js +1 -1
package/lib/tunnel.js
CHANGED
|
@@ -67,7 +67,12 @@ function findBinary(provider) {
|
|
|
67
67
|
// PATH lookup via where.exe — works regardless of how the CLI got
|
|
68
68
|
// installed (winget, choco, manual, in-tree).
|
|
69
69
|
try {
|
|
70
|
-
|
|
70
|
+
// windowsHide: true stops each execFileSync from briefly flashing
|
|
71
|
+
// a black conhost window. The Remote page polls /api/tunnel/status
|
|
72
|
+
// every 2.5s and probe() (when its 30s cache is cold) fires 4-6
|
|
73
|
+
// execs back-to-back — without this flag the screen popcorns with
|
|
74
|
+
// little windows every cache cycle.
|
|
75
|
+
const out = execFileSync('where.exe', [p.binary], { stdio: ['ignore', 'pipe', 'ignore'], windowsHide: true })
|
|
71
76
|
.toString().trim().split(/\r?\n/)[0];
|
|
72
77
|
if (out && fs.existsSync(out)) return out;
|
|
73
78
|
} catch { /* not on PATH */ }
|
|
@@ -94,7 +99,7 @@ function findBinary(provider) {
|
|
|
94
99
|
|
|
95
100
|
function getVersion(provider, exe) {
|
|
96
101
|
try {
|
|
97
|
-
const out = execFileSync(exe, ['--version'], { stdio: ['ignore', 'pipe', 'pipe'] })
|
|
102
|
+
const out = execFileSync(exe, ['--version'], { stdio: ['ignore', 'pipe', 'pipe'], windowsHide: true })
|
|
98
103
|
.toString().trim().split(/\r?\n/)[0];
|
|
99
104
|
return out || null;
|
|
100
105
|
} catch { return null; }
|
|
@@ -102,7 +107,7 @@ function getVersion(provider, exe) {
|
|
|
102
107
|
|
|
103
108
|
function checkDevtunnelLogin(exe) {
|
|
104
109
|
try {
|
|
105
|
-
const out = execFileSync(exe, ['user', 'show'], { stdio: ['ignore', 'pipe', 'ignore'], timeout: 5000 })
|
|
110
|
+
const out = execFileSync(exe, ['user', 'show'], { stdio: ['ignore', 'pipe', 'ignore'], timeout: 5000, windowsHide: true })
|
|
106
111
|
.toString().trim();
|
|
107
112
|
// "Logged in as <email> using <provider>." vs "Not logged in"
|
|
108
113
|
const m = out.match(/Logged in as (\S+)/);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bakapiano/ccsm",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.2",
|
|
4
4
|
"description": "Claude Code Session Manager — Windows web UI to manage many concurrent claude sessions: live list, snapshot/restore, focus existing window, new session in an isolated workspace with repo clones",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "server.js",
|
package/server.js
CHANGED
|
@@ -66,7 +66,7 @@ app.use((req, res, next) => {
|
|
|
66
66
|
if (origin && ALLOWED_ORIGINS.has(origin)) {
|
|
67
67
|
res.setHeader('Access-Control-Allow-Origin', origin);
|
|
68
68
|
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
|
|
69
|
-
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
|
|
69
|
+
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Device-Id');
|
|
70
70
|
res.setHeader('Vary', 'Origin');
|
|
71
71
|
}
|
|
72
72
|
if (req.method === 'OPTIONS') return res.sendStatus(204);
|