triflux 7.1.0 → 7.1.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/hub/team/headless.mjs +18 -2
- package/hub/team/tui-viewer.mjs +1 -4
- package/hub/team/tui.mjs +3 -3
- package/package.json +1 -1
package/hub/team/headless.mjs
CHANGED
|
@@ -522,8 +522,25 @@ export function attachDashboardTab(sessionName, workerCount = 2) {
|
|
|
522
522
|
try { execSync("where wt.exe", { stdio: "ignore" }); } catch { return false; }
|
|
523
523
|
ensureWtProfile(workerCount);
|
|
524
524
|
|
|
525
|
+
// v7.1: 같은 WT 창에서 가로 스플릿 (새 탭 대신)
|
|
526
|
+
// 포커스 탈취가 최소화되고 Claude Code와 나란히 보임
|
|
527
|
+
if (process.env.WT_SESSION) {
|
|
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
|
|
525
543
|
try {
|
|
526
|
-
// psmux attach로 전체 세션을 WT 탭에 표시
|
|
527
544
|
const child = spawn("wt.exe", [
|
|
528
545
|
"-w", "0", "nt",
|
|
529
546
|
"--profile", "triflux",
|
|
@@ -533,7 +550,6 @@ export function attachDashboardTab(sessionName, workerCount = 2) {
|
|
|
533
550
|
child.unref();
|
|
534
551
|
} catch { return false; }
|
|
535
552
|
|
|
536
|
-
// 150ms 후 이전 탭으로 복귀
|
|
537
553
|
const prevTabScript = "Start-Sleep -Milliseconds 150; Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SendKeys]::SendWait('^+{TAB}')";
|
|
538
554
|
for (const shell of ["pwsh.exe", "powershell.exe"]) {
|
|
539
555
|
try {
|
package/hub/team/tui-viewer.mjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// hub/team/tui-viewer.mjs — psmux pane용 append-only 로그 뷰어 v3
|
|
3
3
|
// 같은 psmux 세션의 워커 pane을 capture-pane으로 모니터링한다.
|
|
4
4
|
|
|
5
|
-
import { existsSync, readFileSync,
|
|
5
|
+
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
6
6
|
import { execFileSync } from "node:child_process";
|
|
7
7
|
import { join } from "node:path";
|
|
8
8
|
import { tmpdir } from "node:os";
|
|
@@ -72,9 +72,6 @@ const workerState = new Map(); // paneName → { paneIdx, done }
|
|
|
72
72
|
|
|
73
73
|
function poll() {
|
|
74
74
|
const panes = listPanes();
|
|
75
|
-
if (panes.length <= 1 && workerState.size === 0) {
|
|
76
|
-
process.stderr.write(`[poll] no workers found. panes=${JSON.stringify(panes)} session=${SESSION}\n`);
|
|
77
|
-
}
|
|
78
75
|
// pane 0 = 대시보드 (자기 자신), pane 1+ = 워커
|
|
79
76
|
for (const pane of panes) {
|
|
80
77
|
if (pane.index === 0) continue; // 자기 자신 건너뜀
|
package/hub/team/tui.mjs
CHANGED
|
@@ -113,9 +113,6 @@ export function createLogDashboard(opts = {}) {
|
|
|
113
113
|
merged.status || "",
|
|
114
114
|
merged.snapshot || "",
|
|
115
115
|
merged.handoff?.verdict || "",
|
|
116
|
-
merged.handoff?.lead_action || "",
|
|
117
|
-
merged.handoff?.confidence || "",
|
|
118
|
-
merged.handoff?.risk || "",
|
|
119
116
|
].join("|");
|
|
120
117
|
const sigChanged = nextSig !== existing._sig;
|
|
121
118
|
const explicitElapsed = Number.isFinite(state.elapsed) ? Math.max(0, Math.round(state.elapsed)) : null;
|
|
@@ -141,3 +138,6 @@ export function createLogDashboard(opts = {}) {
|
|
|
141
138
|
},
|
|
142
139
|
};
|
|
143
140
|
}
|
|
141
|
+
|
|
142
|
+
// 하위 호환
|
|
143
|
+
export { createLogDashboard as createTui };
|