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.
@@ -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 {
@@ -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, readdirSync, statSync } from "node:fs";
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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "triflux",
3
- "version": "7.1.0",
3
+ "version": "7.1.1",
4
4
  "description": "CLI-first multi-model orchestrator for Claude Code — route tasks to Codex, Gemini, and Claude",
5
5
  "type": "module",
6
6
  "bin": {