-
Notifications
You must be signed in to change notification settings - Fork 0
Contributing
Thanks for your interest! This page covers the workflow and the quality bar a change must clear. KeepPressing is licensed under Apache-2.0; contributions are accepted under the same license.
-
mainis protected. Direct pushes are not allowed — all changes land via pull request, and CI must be green before merge. - Branch off
main, make your change, open a PR againstmain. - The PR template asks for a summary, the change details, a verification checklist, and any related issue. Fill it in.
- Opening an issue first (with the Bug report or Feature request template) is appreciated for anything non-trivial.
Run these locally before pushing — they're exactly what CI runs (see CI/CD):
just build # Debug build; warnings are errors — analyzer/style warnings fail
just test # all unit tests must pass- Warnings are errors in Debug. Don't suppress warnings to get green; fix them. (See the code-quality regime in Building & Tasks.)
-
Keep Win32 out of Core. Anything OS-touching belongs in
KeepPressing/Interop/behind an interface;KeepPressing.Corestays pure. See Architecture. -
Core stays
ConfigureAwait(false)-clean (CA2007is an error there) for the reasons in Threading & ConfigureAwait. -
Add/maintain tests. New domain behavior →
KeepPressing.Core.Tests; ViewModel/presentation behavior →KeepPressing.App.Tests. See Testing Strategy.
Follow the existing conventional-commit style. Dependency bots already use:
-
chore(deps): …— NuGet updates -
chore(ci): …— GitHub Actions updates
Use matching, descriptive prefixes (feat:, fix:, docs:, refactor:, test:, …). Clear messages
feed the auto-generated release notes (Release Process).
- Nullable reference types and implicit usings are on solution-wide (
Directory.Build.props). -
.editorconfig(root) defines formatting (UTF-8, final newline, trimmed trailing whitespace, indent sizes) and excludes generated code from analysis.EnforceCodeStyleInBuildmeans style is checked at build time. - Match the surrounding code: the codebase favors closed ADTs, a single side-effect boundary, and a single source of truth for UI option lists.
See Development Setup for installing mise + the pinned toolchain, and Building & Tasks for the full recipe list.
Related: Development Setup · CI/CD · Testing Strategy
KeepPressing · Releases · Issues · Licensed under Apache-2.0
Getting started
User guide
Developer guide