jevhooks.git / web / CLAUDE.md

For agents, on top of README.md, which they read first.

Notes for agents

Never deploy. mise run web:deploy publishes to a public address and is the owner's to run. mise run web:dev and mise run test:web are yours.

The wasm-bindgen crate and CLI are one version, pinned here (=0.2.127) and in mise.toml; tools/check-versions.sh fails when they differ. Move both together.

web:dev needs --local-upstream localhost:8790. Without it wrangler tells the Worker it was reached at the route in wrangler.toml (hooks.lmjtfy.fun), the gate takes that for another address, and every local request is answered 308 to itself (seen 2026-10-06: every path, /nope included, was a redirect).

This workspace is not the plugin's. The root Cargo.toml excludes web; do not add it as a member. The plugin builds with no Workers toolchain (no worker, no wasm-bindgen CLI, no wrangler) and must keep doing so.

The site compiles the plugin's own crates (jevhooks-events, jevhooks-rules), by path, into wasm32. A dependency added to either that does not build there (anything with I/O or tokio) breaks the site's build, not the plugin's: run mise run test:web and mise run web:build after changing one.

Both submodules must be fetchable before this is pushed. The site pins third-party/jevcrates and third-party/rustcrates at commits; a push of this repository while either commit exists only on the owner's machine breaks git clone --recurse-submodules for everyone else, the plugin's own build included.