peertable 0.8.37 → 0.8.38

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "peertable",
3
- "version": "0.8.37",
3
+ "version": "0.8.38",
4
4
  "description": "A round table of peer agents. No orchestrator at the head. Turn Claude Code, Codex, and Grok sessions into a team of equal, long-lived peers.",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/room/client.mjs CHANGED
@@ -14,7 +14,7 @@ import { boundedRecent, boundedUnread } from './message-bounds.mjs'
14
14
 
15
15
  // client.mjs 側のハードコード版数。package.json の version と一致していることを
16
16
  // diagnostics の version_consistency が見る(2 つの版数源の drift 検出。決定45)
17
- const MCP_VERSION = '0.8.37'
17
+ const MCP_VERSION = '0.8.38'
18
18
  const PKG_ROOT = join(dirname(fileURLToPath(import.meta.url)), '..')
19
19
 
20
20
  const USAGE = `usage:
@@ -486,7 +486,19 @@ async function wake(seat, msgs) {
486
486
  } else {
487
487
  await run('tmux', tmuxArgv(['send-keys', '-t', observation.target, 'C-u'], { socket: observation.socket }))
488
488
  await sleep(100)
489
- await run('tmux', tmuxArgv(['send-keys', '-l', '-t', observation.target, text], { socket: observation.socket }))
489
+ // 素打ち(send-keys -l)は長文で連続keystrokeとして届き、TUIのpaste burst検知を
490
+ // 半端な状態に落として composer が submit 不能に固まる形を繰り返した(実被弾
491
+ // 2026-08-29: Codex席が同日3回、掃除も効かない入力破損)。正規の bracketed paste
492
+ // (load-buffer→paste-buffer -p)で「1回の貼り付け」として届ける。
493
+ const pasteBuf = `wakeup-${process.pid}-${Date.now()}`
494
+ const pasteFile = join(proj, '.team', `wakeup-paste-${process.pid}.txt`)
495
+ writeFileSync(pasteFile, text)
496
+ try {
497
+ await run('tmux', tmuxArgv(['load-buffer', '-b', pasteBuf, pasteFile], { socket: observation.socket }))
498
+ await run('tmux', tmuxArgv(['paste-buffer', '-p', '-d', '-b', pasteBuf, '-t', observation.target], { socket: observation.socket }))
499
+ } finally {
500
+ try { unlinkSync(pasteFile) } catch { /* 一時fileの掃除失敗は配達判定に影響しない */ }
501
+ }
490
502
  await sleep(750)
491
503
  await run('tmux', tmuxArgv(['send-keys', '-t', observation.target, 'Enter'], { socket: observation.socket }))
492
504
  }