# CLAUDE.md ## Style Keep everything short — replies, explanations, comments, docs. ## Commits - English only. - Conventional Commits prefix: `feat:`, `fix:`, `chore:`, `docs:`, `refactor:`, `ci:`, `build:`. - Subject as short as possible. Imperative, lowercase, no trailing period. - Body only when something genuinely cannot be inferred from the diff. - Never add `Co-Authored-By`, "Generated with" or any other AI attribution to commits or PR descriptions. - Exception: the commits in `build/upstream` that `patches/` is exported from. Their subjects become the patch file names, so they stay plain and descriptive. ## Dev builds Never build over an installed Modrinth Enhanced. The stable app on this machine is installed separately, from the AUR, and stays untouched. - `DEV=1 scripts/build.sh` builds "Modrinth Enhanced (dev)". Its bundle identifier is `ModrinthAppDev`, so it has a data directory of its own and shares no instances, accounts or settings with the stable app, and it has no updater. - Install it beside the stable app, never over it: `~/.local/bin/Modrinth.Enhanced.dev.AppImage` with a desktop entry of its own. - `FAST=1` cuts the build to about a third of the time, at the cost of a few megabytes. Use it for anything that is not meant to be release-like: `DEV=1 FAST=1 scripts/build.sh`. - Build after every change that touches the app, and install it over the last dev build, so it can be tried out right away. The system's pnpm and JDK are the wrong versions, and sharp must not build against the system's libvips: `PATH="$PWD/build/bin:$PWD/build/jdk-17.0.20.1+1/bin:$PATH" JAVA_HOME="$PWD/build/jdk-17.0.20.1+1" SHARP_IGNORE_GLOBAL_LIBVIPS=1 DEV=1 FAST=1 scripts/build.sh` - If `build/` is gone: `npm install -g --prefix build pnpm@` and unpack Temurin 17 from api.adoptium.net into `build/`.