Skip to content

Code review

The summary: small PRs, clear commits, tests for sim changes, manual verification for UI changes.

What reviewers look for

  1. One concern per PR. A PR that does "add boost pads AND fix menu layout AND refactor main.ts" is three PRs. Split.
  2. A test plan that's been run. The PR template has a checklist. At minimum, typecheck + lint + test must have run. For sim / physics / race / netcode changes, also run pnpm e2e locally.
  3. No new Three.js imports in sim code. This is the one non-negotiable architectural rule — see Architecture.
  4. Minimal diff. If the PR description is "fix bug X" but the diff also reformats a thousand lines, those should be separate commits or separate PRs.
  5. Commit messages tell the story. A reviewer should be able to read the commit list and understand what happened, in what order.

Commit conventions

Loose Conventional Commits:

feat(scope): short imperative summary

Optional body explaining the WHY. The WHAT should be obvious from
the diff; the body is for context the diff can't carry.

Types: feat, fix, perf, refactor, docs, chore, test.

Common scopes: sim, render, net, hud, menu, editor, audio, controls, ai, combat, track, bike, blender. Invent a new scope if none fits.

Keep the subject under ~70 characters. Wrap the body at ~72.

Reviewing your own PR

Before requesting a review, read your own diff on the PR page. You'll catch:

  • Debug console.log you forgot to remove.
  • Commented-out code blocks.
  • Whitespace-only changes mixed in with substantive ones.
  • Files that shouldn't have been committed (test fixtures, .DS_Store).

If you'd flag it in someone else's PR, fix it before asking.

After merge

  • main is the deploy branch. Pushes to it auto-deploy the game and docs site to Vercel.
  • Hot-fix workflow: branch off main, PR, merge, deploy is automatic.
  • Don't force-push to main. Force-push to your own branches is fine if it cleans up history before merge.

Disagreements

Disagreements about scope, approach, or style are expected and healthy. State your reasoning concretely (a benchmark, a screenshot, a quote from a doc) rather than appealing to taste. The project owner has the final call when consensus isn't reached.

Made with VitePress.