3.2 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 seed only: src/MaksIT.LTO.Backup.Shared/configuration.json. Console, Avalonia UI, and Worker link it into their outputs. Runtime saves go to %AppData%/MaksIT/LTO Backup/settings.json. 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
- Update CHANGELOG.md and bump
<Version>inDirectory.Build.props(X.Y.Zor SemVer prerelease such as0.1.0-alpha.1). - Commit on
main, tagv{version}on HEAD (e.g.v0.1.0-alpha.1). GitHub marks hyphenated versions as prerelease. - Run
utils\Invoke-ReleasePackage.bat. GitHub assets are the portable zip (win-x64), Windows setup exe (Avalonia UI), and Flatpak (Avalonia UI).
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-statementif/ 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
- Build and emulator tests pass (
utils\Invoke-TestEngine.batordotnet test). - Update README / CHANGELOG when behavior or public config changes.
- Keep the diff scoped; no unrelated refactors.
Contact
- Email: maksym.sadovnychyy@gmail.com
- Reddit: MaksIT.LTO.Backup thread