- Java 21
- Gradle wrapper from this repo
- macOS is the primary desktop target today, but code should stay plain JavaFX
Typical loop:
- make the smallest coherent change
- run
bash scripts/verify.sh - review
git diff --stat - commit only the files that belong to that change
Use bash scripts/verify.sh --full before larger refactors or release-oriented work.
Update docs/heuristics.md when you change:
- severity thresholds
- pool issue rules
- infrastructure thread patterns
- multi-dump suspicious signal logic
- the meaning of
Key Metrics
Update docs/ui-flows.md when you change:
- file loading
- snapshot review rail behavior
- navigation between views
- filter or selection behavior
Add or update an ADR in docs/adr/ when you make a durable product decision that future contributors should not rediscover from code.
Add or update tests when touching:
JstackParser- analyzer heuristics
- services in
src/main/java/io/jvmdoctor/service
Prefer focused unit tests over large end-to-end tests.
Use concise commit subjects, for example:
feat: improve snapshot review rail workflowfix: handle missing states in multi-dump analysisrefactor: separate dump analysis and snapshot review UI
Keep one intention per commit.