# Every install resolves from bun.lock and nothing else. `bun install` fails rather than quietly
# resolving a new version — including a transitive one nobody asked for.
#
# This is here rather than in a habit or a README because a supply-chain compromise does not wait for
# the one time somebody forgets the flag. On 2026-08-04 eleven cache packages (keyv, flat-cache,
# file-entry-cache, cacheable-request and friends) were published with a `preinstall` dropper that
# harvested npm and GitHub tokens, cloud credentials, SSH keys, .env files and .claude/settings.json,
# then republished itself through any token it found. It spread to 434 more packages. A floating
# transitive range is all it takes; a frozen lockfile is the difference between "we were not affected"
# and "we ran `bun install` on the wrong afternoon".
#
# When a dependency genuinely needs to change: edit package.json, run `bun install --no-frozen-lockfile`
# deliberately, READ the lockfile diff, and commit it. The friction is the point.
[install]
frozenLockfile = true

[serve.static]
plugins = ["bun-plugin-tailwind"]
env = "BUN_PUBLIC_*"

[test]
coverage = true
coverageDir = "coverage"
preload = ["./test-setup.ts"]
root = "./src"
