The starter template for AI startups. Auth, checkout and i18n included. Français
Advanced

Troubleshooting

A commit was blocked

The commit hook runs the checks in order and stops at the first failure. Read the last lines of the output, which name the check and the file. The usual fixes:

  • Commit subject rejected: use Conventional Commits, such as feat(pricing): add annual plan.
  • Test reminder: you changed logic in src/js/ without staging a test. Add one under tests/.
  • Format or lint: run bun run format and bun run lint, then stage the fixes.
  • Knip: a file or export is no longer used. Delete it rather than ignoring it.
  • i18n check: a key, blog post or page exists in one language only. The output lists exactly which ones.

Add a SKIP_<CHECK>=<reason> line to the commit message to record a deliberate exception. Skipping coverage also needs an entry in AGENT_TODO.md.

Screenshots don't match

bun run screenshots:check writes side-by-side comparisons for every changed image. If the change was intended, accept it with:

bun run screenshots:update

If a page you deleted still has baseline images, the run reports them as orphans, and bun scripts/screenshots/screenshot.mjs --prune removes them.

Lighthouse fails

bun run lighthouse:check needs every category at 90 or above. Recheck one page after a fix:

bun run lighthouse:check --page=/pricing/

Common causes are low colour contrast after a theme change, images without explicit sizes, and missing alt text.

Browser tests fail locally

  • Run bun run build first, since tests run against the production build in _site/.
  • Unexpected external requests are blocked by tests/fixtures.js. Add a route fixture for any new API call.
  • To see the browser, run bunx playwright test --headed tests/checkout.spec.js.

The checkout total looks wrong

Prices come from src/_data/plans.json in the selected currency, and the coupon percentage is applied before tax. To start over, clear site-cart in the browser's local storage.

Launch offer: 20% off either licence with code LAUNCH20 at checkout.