maksit-lto-backup/CONTRIBUTING.md

3.0 KiB

Contributing to MaksIT.LTO.Backup

Thank you for contributing. Maintainer agent conventions: AGENTS.md. Repo hygiene and RepoUtils: maksit-repo-maintenance. C# style: common/csharp + repo-root .editorconfig.

Development setup

Prerequisites

  • .NET 10 SDK
  • Git
  • PowerShell 7+ (RepoUtils scripts under utils/)

Build

cd src
dotnet build MaksIT.LTO.slnx

Configuration

Edit the shared file only: src/MaksIT.LTO.Backup.Shared/configuration.json. Console, Avalonia UI, and Worker link it into their outputs. See README.md.

Tests

Prefer emulator-backed tests (no physical LTO required). Tests run under Microsoft Testing Platform (src/global.json test.runner) with xunit.v3 and coverlet.MTP:

utils\Invoke-TestEngine.bat

Or:

cd src
dotnet test .\MaksIT.LTO.Tests

Coverage shields at the top of README.md are maintained by the CoverageBadges plugin (utils/engines/test/scriptSettings.json, badgeFormat: shields). Run utils\Invoke-TestEngine.bat after meaningful coverage changes and commit the updated README.

Release

  1. Update CHANGELOG.md and bump <Version> in Directory.Build.props (X.Y.Z or SemVer prerelease such as 0.1.0-alpha.1).
  2. Commit on main, tag v{version} on HEAD (e.g. v0.1.0-alpha.1). GitHub marks hyphenated versions as prerelease.
  3. Run utils\Invoke-ReleasePackage.bat.

Commit format

(type): description

Types: (feature):, (bugfix):, (refactor):, (perf):, (test):, (docs):, (build):, (ci):, (style):, (revert):, (chore):.

Lowercase description; no trailing period.

Code style

Follow repo-root .editorconfig and MaksIT C# conventions from AGENTS / common/csharp:

  • File-scoped namespaces; two blank lines after the last using
  • Usings: System → Microsoft → 3rd party → MaksIT (length-sorted within each group; no blank lines between groups)
  • K&R braces; prefer var; omit {} on single-statement if / loops
  • Prefer emulator tests when physical tape is unavailable

Reporting issues

Include OS, .NET version, DeviceMode / Topology, and relevant logs. Physical tape/changer bugs should note Windows (\\.\Tape0 / \\.\Changer0) or Linux (/dev/nst* / /dev/sg*) paths.

If the issue needs hardware you cannot test, funding or drive sponsorship helps — see README.md / Buy Me a Coffee links.

Pull requests

  1. Build and emulator tests pass (utils\Invoke-TestEngine.bat or dotnet test).
  2. Update README / CHANGELOG when behavior or public config changes.
  3. Keep the diff scoped; no unrelated refactors.

Contact