# Conventional Commit Message Template # ===================================== # # Format: (): # # Type: # feat: A new feature # fix: A bug fix # docs: Documentation only changes # style: Code style changes (formatting, semicolons, etc) # refactor: A code change that neither fixes a bug nor adds a feature # test: Adding or correcting tests # chore: Chores like build process, dependency updates # perf: A code change that improves performance # # Scope: # The module/component affected (e.g., gui, flash, config, serial) # # Subject: # A short description in present tense, imperative mood # - No period at the end # - Max 72 characters # # Body (optional): # - Explains the "what" and "why" not the "how" # - Use imperative mood # - Wrap at 72 characters # - Separate from subject with a blank line # # Footer (optional): # - References issues (Closes #123) # - Breaking changes (BREAKING CHANGE: ...) # # ── Examples ───────────────────────────────────────────────── # # feat(gui): add per-step run buttons to workflow panel # # feat(flash): implement CRC32 verification for flash programming # # fix(gui): resolve step status not updating on worker thread # # refactor(config): extract path resolution to Config.resolve_path() # # docs: update README with installation instructions # # chore: update requirements.txt with darkdetect dependency # # perf(serial): reduce serial read timeout from 10s to 5s # # ── Multi-scope changes ────────────────────────────────────── # Use multiple scopes when a change affects multiple modules: # # feat(gui,widgets): enhance StepHeader with run/re-run buttons # # ── Breaking changes ───────────────────────────────────────── # feat(gui)!: change step execution model to async # # BREAKING CHANGE: Step callbacks now receive index instead of step object