triflux 7.1.1 → 7.1.3
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/hub/team/headless.mjs +10 -43
- package/package.json +1 -1
package/hub/team/headless.mjs
CHANGED
|
@@ -156,8 +156,8 @@ export async function runHeadless(sessionName, assignments, opts = {}) {
|
|
|
156
156
|
: `${brand.emoji} ${resolvedCli}-${i + 1}`;
|
|
157
157
|
|
|
158
158
|
let newPaneId;
|
|
159
|
-
if (i === 0
|
|
160
|
-
//
|
|
159
|
+
if (i === 0) {
|
|
160
|
+
// 첫 번째 워커: 빈 lead pane 사용
|
|
161
161
|
newPaneId = `${sessionName}:0.0`;
|
|
162
162
|
} else {
|
|
163
163
|
// 2번째+: split-window로 추가
|
|
@@ -188,16 +188,7 @@ export async function runHeadless(sessionName, assignments, opts = {}) {
|
|
|
188
188
|
// 모든 split 완료 후 레이아웃 한 번만 정렬 (깜빡임 방지)
|
|
189
189
|
try { psmuxExec(["select-layout", "-t", sessionName, "tiled"]); } catch { /* 무시 */ }
|
|
190
190
|
|
|
191
|
-
// v7.
|
|
192
|
-
if (dashboard) {
|
|
193
|
-
const viewerPath = join(import.meta.dirname, "tui-viewer.mjs").replace(/\\/g, "/");
|
|
194
|
-
const resultDir = RESULT_DIR.replace(/\\/g, "/");
|
|
195
|
-
const viewerCmd = `node ${viewerPath} --session ${sessionName}`;
|
|
196
|
-
try {
|
|
197
|
-
psmuxExec(["send-keys", "-t", `${sessionName}:0.0`, viewerCmd, "Enter"]);
|
|
198
|
-
psmuxExec(["select-pane", "-t", `${sessionName}:0.0`, "-T", "▲ dashboard"]);
|
|
199
|
-
} catch { /* 무시 */ }
|
|
200
|
-
}
|
|
191
|
+
// v7.1.3: psmux 내부 대시보드 pane 제거 — WT 스플릿에서 tui-viewer 직접 실행
|
|
201
192
|
|
|
202
193
|
} else {
|
|
203
194
|
// ─── 기존 모드: 모든 pane을 한 번에 생성 ───
|
|
@@ -522,44 +513,20 @@ export function attachDashboardTab(sessionName, workerCount = 2) {
|
|
|
522
513
|
try { execSync("where wt.exe", { stdio: "ignore" }); } catch { return false; }
|
|
523
514
|
ensureWtProfile(workerCount);
|
|
524
515
|
|
|
525
|
-
// v7.1:
|
|
526
|
-
//
|
|
527
|
-
|
|
528
|
-
try {
|
|
529
|
-
const child = spawn("wt.exe", [
|
|
530
|
-
"-w", "0", "sp", "-H", "-s", "0.35",
|
|
531
|
-
"--profile", "triflux",
|
|
532
|
-
"--title", `▲ ${sessionName}`,
|
|
533
|
-
"--", "psmux", "attach", "-t", sessionName,
|
|
534
|
-
], { detached: true, stdio: "ignore" });
|
|
535
|
-
child.unref();
|
|
536
|
-
// 스플릿 후 원래 pane으로 포커스 복귀
|
|
537
|
-
try { spawn("wt.exe", ["-w", "0", "mf", "up"], { detached: true, stdio: "ignore" }).unref(); } catch {}
|
|
538
|
-
return true;
|
|
539
|
-
} catch { /* fallthrough to tab */ }
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
// WT 세션 외부 → 새 탭 fallback
|
|
516
|
+
// v7.1.3: 대시보드만 스플릿 (psmux attach 대신 tui-viewer 직접 실행)
|
|
517
|
+
// raw CLI 출력은 사용자에게 불필요 — 대시보드 로그만 표시
|
|
518
|
+
const viewerPath = join(import.meta.dirname, "tui-viewer.mjs").replace(/\\/g, "/");
|
|
543
519
|
try {
|
|
544
520
|
const child = spawn("wt.exe", [
|
|
545
|
-
"-w", "0", "
|
|
521
|
+
"-w", "0", "sp", "-H", "-s", "0.30",
|
|
546
522
|
"--profile", "triflux",
|
|
547
523
|
"--title", `▲ ${sessionName}`,
|
|
548
|
-
"--", "
|
|
524
|
+
"--", "node", viewerPath, "--session", sessionName,
|
|
549
525
|
], { detached: true, stdio: "ignore" });
|
|
550
526
|
child.unref();
|
|
527
|
+
try { spawn("wt.exe", ["-w", "0", "mf", "up"], { detached: true, stdio: "ignore" }).unref(); } catch {}
|
|
528
|
+
return true;
|
|
551
529
|
} catch { return false; }
|
|
552
|
-
|
|
553
|
-
const prevTabScript = "Start-Sleep -Milliseconds 150; Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SendKeys]::SendWait('^+{TAB}')";
|
|
554
|
-
for (const shell of ["pwsh.exe", "powershell.exe"]) {
|
|
555
|
-
try {
|
|
556
|
-
spawn(shell, ["-NoProfile", "-NonInteractive", "-Command", prevTabScript], {
|
|
557
|
-
detached: true, stdio: "ignore",
|
|
558
|
-
}).unref();
|
|
559
|
-
break;
|
|
560
|
-
} catch { /* 다음 shell */ }
|
|
561
|
-
}
|
|
562
|
-
return true;
|
|
563
530
|
}
|
|
564
531
|
|
|
565
532
|
/**
|