tmuxclihook 0.3.5 → 0.3.7

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": "tmuxclihook",
3
- "version": "0.3.5",
3
+ "version": "0.3.7",
4
4
  "description": "交互式 TUI 安装器:环境侦测、AI CLI 侦测、tmux-ai-status hooks 装/卸/修、TPM 软链校验",
5
5
  "type": "module",
6
6
  "bin": {
@@ -197,7 +197,7 @@ _acquire_event_lock() {
197
197
  rmdir "$lock" 2>/dev/null
198
198
  continue
199
199
  fi
200
- mtime=$(stat -f %m "$lock" 2>/dev/null || stat -c %Y "$lock" 2>/dev/null)
200
+ mtime=$(stat -c %Y "$lock" 2>/dev/null || stat -f %m "$lock" 2>/dev/null)
201
201
  if [ -n "$mtime" ] && [ $(( $(date +%s) - mtime )) -ge 10 ]; then
202
202
  rm -f "$lock/owner" 2>/dev/null
203
203
  rmdir "$lock" 2>/dev/null
@@ -226,7 +226,7 @@ _acquire_lock() {
226
226
  fi
227
227
  # stale 检测: 锁目录 mtime > 5s 视为遗弃
228
228
  local mtime
229
- mtime=$(stat -f %m "$lock" 2>/dev/null || stat -c %Y "$lock" 2>/dev/null)
229
+ mtime=$(stat -c %Y "$lock" 2>/dev/null || stat -f %m "$lock" 2>/dev/null)
230
230
  if [ -n "$mtime" ]; then
231
231
  local age=$(( $(date +%s) - mtime ))
232
232
  if [ "$age" -ge 5 ]; then
@@ -379,7 +379,7 @@ _new_session_owns_pane() {
379
379
  [ "$stored_pane" = "$TMUX_PANE" ] || continue
380
380
  local mtime
381
381
  # stat 失败时保守视为新鲜(date +%s),避免误清活跃会话
382
- mtime=$(stat -f %m "$f" 2>/dev/null || stat -c %Y "$f" 2>/dev/null || date +%s)
382
+ mtime=$(stat -c %Y "$f" 2>/dev/null || stat -f %m "$f" 2>/dev/null || date +%s)
383
383
  local age=$(( $(date +%s) - mtime ))
384
384
  [ "$age" -ge 300 ] && ! _pane_has_ai_process "$TMUX_PANE" && continue
385
385
  return 0
@@ -435,7 +435,7 @@ _is_pane_session_dead() {
435
435
  [ -f "$f" ] || continue
436
436
  local mtime
437
437
  # stat 失败时保守视为新鲜(date +%s),避免误清活跃会话
438
- mtime=$(stat -f %m "$f" 2>/dev/null || stat -c %Y "$f" 2>/dev/null || date +%s)
438
+ mtime=$(stat -c %Y "$f" 2>/dev/null || stat -f %m "$f" 2>/dev/null || date +%s)
439
439
  local age=$(( $(date +%s) - mtime ))
440
440
  [ "$age" -lt 300 ] && return 1
441
441
  done
@@ -211,7 +211,8 @@ case "$EVENT" in
211
211
  exit 0
212
212
  ;;
213
213
  _session-switched)
214
- # client-session-changed hook(入口传 #{hook_client_name}):attach 与 switch-client
214
+ # client-session-changed hook(入口传 #{hook_client},3.7c/3.8 均为触发
215
+ # client 名;注意不存在 #{hook_client_name} 变量,误用恒为空):attach 与 switch-client
215
216
  # 的共同汇聚点(tmux server_client_set_session),两种「进入」都能捕获。
216
217
  # 该 hook 自指 switch 也触发(源码无 old != s 守卫)→ 用 per-client 自维护的
217
218
  # 上次 session 对比过滤:cur != prev 才算「真进入」,自指(cur == prev)跳过。
@@ -75,7 +75,10 @@ fi
75
75
  # client-session-changed: attach 与 switch-client 的共同汇聚点 = 「进入」→ 记
76
76
  # @ai_entered_time(排序用:刚进入的 session 排最后;handler 内以 per-client
77
77
  # 上次 session 对比过滤自指 switch)+ 刷新聚合
78
- tmux set-hook -g client-session-changed "run-shell '${CURRENT_DIR}/scripts/tmux-ai-status claude _session-switched #{hook_client_name}'" 2>/dev/null || true
78
+ # 变量必须用 #{hook_client}(3.7c/3.8 均展开为触发 client 名)。不存在
79
+ # #{hook_client_name} 这个 format 变量——误用它恒展开为空,handler 的
80
+ # [ -n "$3" ] 守卫静默跳过,entered_time 从不写入,排序退化为 created 序。
81
+ tmux set-hook -g client-session-changed "run-shell '${CURRENT_DIR}/scripts/tmux-ai-status claude _session-switched #{hook_client}'" 2>/dev/null || true
79
82
  # 注:_refresh 与 TOOL_ID 无关(仅重建聚合 + 自修复 claude hooks),统一传 claude。
80
83
  tmux set-hook -g session-closed "run-shell '${CURRENT_DIR}/scripts/tmux-ai-status claude _refresh'"
81
84
  tmux set-hook -g client-detached "run-shell '${CURRENT_DIR}/scripts/tmux-ai-status claude _refresh'"