diff --git a/CLAUDE.md b/CLAUDE.md index 1cf03ac..4e5a29f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,6 +6,10 @@ When posting comments, ALWAYS prefix comments with `FROM @claude:` and use blockquote style +### Tool gotchas + +* The Write tool can emit literal control characters for `\u0000`–`\u001f` escapes inside regex character classes; a later Edit `old_string` then never matches. Repair the bytes with `perl -i -pe`. (Hit twice.) + ### Workflow Default flow should be to use Pull Requests. diff --git a/README.md b/README.md index f701f39..63aa2fd 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,8 @@ Full env var list: [docs/hub-internals.md#environment-variables](docs/hub-intern ## Local development (without Docker) +Requires **Node 22** (what CI and the Docker image run). Newer majors ship before `better-sqlite3` publishes a prebuild — tests then fail with a `NODE_MODULE_VERSION` mismatch or fall back to a source build. + ```bash pnpm install pnpm dev # Hub on :3000 (tsx watch) diff --git a/docs/frontend-testing.md b/docs/frontend-testing.md index 5a65acf..624f105 100644 --- a/docs/frontend-testing.md +++ b/docs/frontend-testing.md @@ -47,3 +47,4 @@ Zustand stores expose `setState` / `getState` directly — reset in `beforeEach` - `vi.mock` is hoisted — no top-level variables inside the factory. - jsdom does not implement `HTMLMediaElement` playback; test the surrounding logic (state, toast dispatch) rather than `