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/ ```