Thanks for contributing to SnapFX.
This guide is for contributors working on framework code, tests, documentation, and demo updates.
- Follow environment setup in SETUP.md.
- Use Java 21 and JavaFX 21.
- Current phase (base implementation): work directly on
main. - Later phase (after
developexists): integrate feature work intodevelop. - Release tags are created from
mainafter merge.
- Keep changes focused on one logical topic.
- Add or update tests for every behavior change.
- Run tests locally:
./gradlew test
- Update documentation affected by the change.
- For release-relevant changes, add or adjust the CHANGELOG.md entry in
Unreleased. - Keep documentation ownership clear:
- STATUS.md = current state
- ROADMAP.md = planned work
- DONE.md = completed work
- CHANGELOG.md = versioned historical changes
- TESTING_POLICY.md = stable testing rules
- Use focused commits (avoid mixed unrelated changes).
- Use git-cliff-compatible prefixes:
feat:,fix:,docs:,test:,refactor:,perf:,ci:,build:,chore:- Domain-specific prefixes are also allowed when they map to release-note groups.
- For fix commits, use a multi-line body with at least one explanation line per fix.
- Scope is focused and coherent.
- Tests are added/updated as needed.
-
./gradlew testpasses. - STATUS.md, DONE.md, and ROADMAP.md are updated if required.
- CHANGELOG.md is updated for release-visible changes.
- Other affected docs are updated (README.md, SETUP.md, etc.).
- MainDemo visual changes include updated preview image (
docs/images/main-demo.png) regenerated with./scripts/update-main-demo-preview.ps1. - If
docs/images/main-demo.gifis updated, regenerate it with./scripts/update-main-demo-preview.ps1 -IncludeGif -OptimizeGif(requiresgifsicleinPATH; on GitHub Actions Ubuntu runners:sudo apt-get update && sudo apt-get install -y gifsicle).
- For AI-assisted contributions, persistent collaboration rules are defined in AGENTS.md.
- Use minimal targeted diffs and avoid full-file rewrites when smaller edits are sufficient.