@cliphijack/santaclaude 1.0.21 → 1.0.22

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/santaclaude.js +3 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cliphijack/santaclaude",
3
- "version": "1.0.21",
3
+ "version": "1.0.22",
4
4
  "publishConfig": { "access": "public" },
5
5
  "description": "SantaClaude 커넥터 — 클라우드 예약을 내 로컬 Claude(tmux)에 발사",
6
6
  "bin": { "santaclaude": "./santaclaude.js" },
package/santaclaude.js CHANGED
@@ -443,11 +443,13 @@ async function run(conf) {
443
443
  execFileSync('tmux', ['send-keys', '-t', w, '-l', String(cmd.text || '')]);
444
444
  setTimeout(() => { try { execFileSync('tmux', ['send-keys', '-t', w, 'Enter']); } catch (e) {} }, 300);
445
445
  console.log(` ⌨️ 입력 → ${w}: ${String(cmd.text || '').slice(0, 50)}`);
446
+ setTimeout(sendScreen, 650); setTimeout(sendScreen, 1200); // 입력 직후 즉시 화면 푸시(diff-gated) — 타이핑→결과 1초 안
446
447
  } else if (cmd.action === 'key') {
447
448
  // 플로팅 컨트롤 — 특수키 그대로 전달 (Escape, C-c, Up 등)
448
449
  const w = (cmd.name && windowExists(session, cmd.name)) ? (session + ':' + cmd.name) : pane;
449
450
  execFileSync('tmux', ['send-keys', '-t', w, String(cmd.key || '')]);
450
451
  console.log(` ⌨️ 키 → ${w}: ${cmd.key}`);
452
+ setTimeout(sendScreen, 300); setTimeout(sendScreen, 750);
451
453
  } else if (cmd.action === 'resize') {
452
454
  // 📐 창에맞춤 토글: fit=강제 reflow(사람 붙어있어도) / restore=window-size latest로 원복(내 터미널 따라가기)
453
455
  const w = (cmd.name && windowExists(session, cmd.name)) ? (session + ':' + cmd.name) : pane;
@@ -583,7 +585,7 @@ async function run(conf) {
583
585
  let ws = null, hbIv = null, scrIv = null;
584
586
  function connectWS() {
585
587
  try { ws = new WebSocket(wsUrl); } catch (e) { console.error(' WebSocket 생성 실패:', e.message); setTimeout(connectWS, 5000); return; }
586
- ws.addEventListener('open', () => { console.log(' 🔌 클라우드 연결됨 (WebSocket).'); lastScr = ''; sendHb(); sendScreen(); clearInterval(hbIv); clearInterval(scrIv); hbIv = setInterval(sendHb, Math.max(every, 15000)); scrIv = setInterval(() => { sendScreen(); sendTxDelta(); }, 2500); });
588
+ ws.addEventListener('open', () => { console.log(' 🔌 클라우드 연결됨 (WebSocket).'); lastScr = ''; sendHb(); sendScreen(); clearInterval(hbIv); clearInterval(scrIv); hbIv = setInterval(sendHb, Math.max(every, 15000)); scrIv = setInterval(() => { sendScreen(); sendTxDelta(); }, 1000); });
587
589
  ws.addEventListener('message', (e) => { let m; try { m = JSON.parse(typeof e.data === 'string' ? e.data : e.data.toString()); } catch { return; } if (m.type === 'job') onJob(m); else if (m.type === 'ctl') runControl(m.cmd); });
588
590
  ws.addEventListener('close', () => { clearInterval(hbIv); clearInterval(scrIv); console.log(' 🔌 연결 끊김 — 5초 후 재연결'); setTimeout(connectWS, 5000); });
589
591
  ws.addEventListener('error', () => { try { ws.close(); } catch (e) {} });