From 99cafdbdbb2479cc1e64d4a288ee26baee2a6246 Mon Sep 17 00:00:00 2001 From: Yaojia Wang Date: Tue, 7 Jul 2026 21:10:40 +0200 Subject: [PATCH] docs(readme): update test count (~1470) + document login-shell PATH behavior Explains why hooks reliably find nvm/brew-managed node (shells spawn as login shells) and how to recover an old session with a stale PATH. --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 66487f3..49965a2 100644 --- a/README.md +++ b/README.md @@ -107,11 +107,13 @@ npm run setup-hooks # adds the hooks + statusLine to ~/.claude/s ``` This wires Claude Code's hooks → **live per-tab status**, the **statusLine gauges**, and **push** notifications. The hooks are a no-op outside web-terminal (they only fire when `$WEBTERM_*` env vars are set in spawned shells), so they're safe to leave installed. Then run `claude` inside a tab. +> **Login shells (why hooks can always find `node`)** — sessions spawn the shell as a **login shell** (`zsh -l`, POSIX only), so it loads your full profile (`~/.zprofile`, `~/.zshrc`, …) and rebuilds `PATH`. Without this, a GUI-launched app (desktop build) or a long-lived tmux keepalive can hand the shell a minimal `PATH`, and hooks that call an nvm-/brew-managed `node` fail with `node: command not found`. If you still hit that on an old session, start a fresh one so it picks up the login-shell `PATH`. + `USE_TMUX=1 npm start` keeps sessions alive across a server restart. ### Tests ```bash -npm test # vitest, all modules (~470 tests, 80% coverage gate) +npm test # vitest, all modules (~1470 tests, 80% coverage gate) npm run typecheck # tsc (backend + frontend) npm run build # compile backend to dist/ ```