|
| 1 | +# Contributing |
| 2 | + |
| 3 | +Thanks for considering a contribution. This is a small plugin maintained mostly by one person, so the process is light. |
| 4 | + |
| 5 | +## Before you start |
| 6 | + |
| 7 | +For non-trivial changes, please [open an issue](https://github.com/VortexUK/EQ2LexiconACTPlugin/issues/new/choose) first to discuss the approach. This saves both of us time if the change isn't a fit for the project's direction. |
| 8 | + |
| 9 | +Small fixes (typos, doc improvements, obvious bug fixes) can go straight to a PR. |
| 10 | + |
| 11 | +For security issues, see [SECURITY.md](SECURITY.md) — please don't file public issues for vulnerabilities. |
| 12 | + |
| 13 | +## Dev setup |
| 14 | + |
| 15 | +See [README.md → Building from source](README.md#building-from-source) for prerequisites and build commands. In short: |
| 16 | + |
| 17 | +1. Install .NET Framework 4.8 Developer Pack + .NET SDK 8.0.421 (pinned by [global.json](global.json)). |
| 18 | +2. Have ACT installed at the default path (or set `ACT_INSTALL_DIR`). |
| 19 | +3. Clone the repo. |
| 20 | +4. Activate the pre-push hook: |
| 21 | + ```powershell |
| 22 | + git config core.hooksPath .githooks |
| 23 | + ``` |
| 24 | + |
| 25 | +That hook runs format check + build + tests + vulnerability scan on every `git push`. It's the same gate CI runs. |
| 26 | + |
| 27 | +## Code conventions |
| 28 | + |
| 29 | +- `.editorconfig` is the source of truth. `dotnet format` will fix most things; `dotnet format --verify-no-changes` is what CI checks. |
| 30 | +- IDE0055 (formatting) is promoted to error so style drift fails the build. |
| 31 | +- Two assemblies, one solution: |
| 32 | + - `src/Core/EQ2Lexicon.ACTPlugin.Core.csproj` — pure code (no ACT or WinForms refs). Goes here unless you genuinely need ACT's types. |
| 33 | + - `src/EQ2Lexicon.ACTPlugin.csproj` — ACT-coupled UI layer. The integration boundary. |
| 34 | +- Tests reference Core only — UI types aren't unit-testable (they're integration-tested by running the DLL in ACT). |
| 35 | +- Comments are reserved for non-obvious *why*, not *what*. Lean on names. |
| 36 | + |
| 37 | +## PR checklist |
| 38 | + |
| 39 | +- [ ] Pre-push hook passes locally (format / build / tests / vuln scan) |
| 40 | +- [ ] New behaviour is covered by xUnit tests where the code is in Core |
| 41 | +- [ ] Public-facing changes are reflected in [CLAUDE.md](CLAUDE.md) and/or [README.md](README.md) |
| 42 | +- [ ] Commit messages explain the *why*, not just the *what* |
| 43 | +- [ ] Bumping `<Version>` is the *maintainer's* job — leave it alone in your PR |
| 44 | + |
| 45 | +## Releasing (maintainer only) |
| 46 | + |
| 47 | +See [README.md → Releasing](README.md#releasing). One tag push, the workflow does the rest. |
0 commit comments