This guide defines the contribution workflow and review expectations.
- Check open issues before starting work.
- Fork the repository.
- Clone your fork:
git clone https://github.com/<your-user>/JagFx.git. - Restore tools:
dotnet tool restore(installs Husky.Net + CommitLint.Net git hooks automatically). - Create a topic branch:
git checkout -b feat/<short-description>. - Make focused changes.
- Run
dotnet build && dotnet test && dotnet format. - Commit using Conventional Commits. The commit-msg hook validates automatically.
- Push and open a pull request that describes behaviour changes and test coverage.
- KISS: prefer the simplest solution that works now.
- DRY: extract shared behaviour when duplication obscures intent.
- YAGNI: do not build features before the roadmap needs them.
Domain model field names follow DSP conventions. Use docs/synth-format-spec.md as the reference:
- Envelope boundary fields are
StartValue/EndValue(not "samples"). - Segment fields are
Duration/TargetLevel. - Voice timing fields are
DurationMs/OffsetMs. - Loop region fields are
BeginMs/EndMs. - Gating envelopes are
GapOffEnvelope/GapOnEnvelope. - LFO carrier is
RateEnvelope; filter modulation isModulationEnvelope. - Echo wet level is
FeedbackPercent. - The patch synthesis entry point is
PatchRenderer.
- Comment to explain why a choice was made, not what the code already states.
- Update documentation and examples whenever behaviour changes.
This repository uses Conventional Commits, enforced by CommitLint.Net via Husky.Net git hooks.
Format: type(scope): description
Allowed types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert
Examples:
feat: add loop region editingfix(io): correct filter coefficient round-tripdocs: update CLI usage in READMErefactor(synthesis): extract envelope generator
The commit-msg hook runs after dotnet tool restore. CI validates commit messages on pull requests.
- Run
dotnet testbefore every push. - Add or update targeted tests for every bug fix or new feature.
- Mention skipped or flaky tests in the pull request.
AI tooling is allowed. Contributors own the code they submit:
- Understand surrounding code before accepting AI suggestions.
- Review and test generated code.
- Do not merge generated output you do not understand.
- Tests pass locally with
dotnet test. - Code formatted with
dotnet format. - Commit messages follow Conventional Commits.
- Docs and comments updated if behaviour changed.
- PR description covers motivation, approach, and test coverage.
When filing a bug, include:
- Steps to reproduce.
- Expected versus actual behaviour.
- Output snippets or logs when helpful.
- Commit hash, tooling version, and platform.
Feature requests should describe the use case and timing.
Open an issue for direction, architecture, or roadmap questions. Keep discussions public so future contributors can find the context.
Contributors must follow Code of Conduct.