Vielen Dank für dein Interesse! This project is a .NET 8 WinForms desktop app. Below you’ll find short guidelines and a practical, copy-friendly release checklist (DE/EN).
- Branching
- feature/, bugfix/, release/
- Commits
- Klar und prägnant; Gegenwartsform. Gruppiere verwandte Änderungen. Deutsche oder englische Messages sind ok; Release/öffentliche Texte bevorzugt EN/DE konsistent.
- Code Style
- .NET 8, WinForms. Designer-Dateien (.Designer.cs) nicht manuell editieren (nur über den Designer); Logik in die Code-Behind (.cs).
- Lokalisierung: Neue Keys in beiden Dateien pflegen:
ModlistManager/Resources/Languages/lang.de.jsonundlang.en.json(Fallback ist EN). Kurze, präzise Schlüssel, bestehende nicht brechen. - UI-Lokalisierung: Controls erhalten
Tagfür LanguageService, dynamische Menüs ebenso.
- Ressourcen
- Logos/Icons unter
ModlistManager/Resources/Logosbzw.Resources/Iconsablegen; Namenskonventionen beibehalten.
- Logos/Icons unter
- Tests/QA
- Es gibt keine Unit-Tests. Bitte vor PR: Build (Release), kurze Smoke-Tests (Start, Sprache wechseln, Theme wechseln, Modliste laden/speichern, Export/Import).
- Changelog & Notizen
CHANGELOG.mdEinträge aus „Unreleased“ nachvX.Y.Zverschieben.RELEASE_NOTES_vX.Y.Z.mderstellen/aktualisieren (DE/EN kurz).
- Version anheben
ETS2ATS.ModlistManager.csproj:<Version>X.Y.Z</Version>setzen.
- Lokalisierung prüfen
- Neue/angepasste Keys in
lang.de.jsonundlang.en.jsonvorhanden? Fallbacks ok?
- Build & Publish (win-x64)
- Release-Publish erzeugen (framework-dependent):
dotnet publish ETS2ATS.ModlistManager.csproj -c Release -r win-x64 --self-contained false
- ZIP bauen und SHA256 generieren (Dateiname:
ETS2ATS.ModlistManager_vX.Y.Z_win-x64.zip). - ZIP(s) bauen und SHA256 generieren (Dateinamen):
modlist-manager-X.Y.Z-win-x64.zipmodlist-manager-X.Y.Z-self-contained-win-x64.zip
- Commit, Branch, Tag
- Änderungen committen (inkl. Changelog/Notes).
- Release-Branch
release/vX.Y.Zpushen. - Annotated Tag setzen
vX.Y.Zund pushen.
- GitHub Release
- Release für
vX.Y.Zanlegen (Titel: „ETS2ATS.ModlistManager vX.Y.Z“). - Notes aus
RELEASE_NOTES_vX.Y.Z.mdübernehmen. - Assets hochladen: ZIP +
.sha256. - Assets hochladen: ZIP(s) +
.sha256.
- README aktualisieren
- Direktdownload-Link auf neues Asset (DE/EN Installation) aktualisieren.
- Merge nach main
- PR
release/vX.Y.Z→mainerstellen und mergen, Release-Branch löschen.
- Nachkontrolle
- Release-Seite, Download-Link, SHA256, Start des Programms (Smoke-Test) prüfen.
Optional
- Self-contained Build zusätzlich veröffentlichen.
- FAQ/Docs (DE/EN) und Screenshots aktualisieren.
- Changelog & Notes
- Move entries from “Unreleased” to
vX.Y.ZinCHANGELOG.md. - Create/update
RELEASE_NOTES_vX.Y.Z.md(short DE/EN summary).
- Bump Version
- Set
<Version>X.Y.Z</Version>inETS2ATS.ModlistManager.csproj.
- Localization
- Ensure new/changed keys exist in both
lang.en.jsonandlang.de.json; EN acts as fallback.
- Build & Publish (win-x64)
- Create framework-dependent publish:
dotnet publish ETS2ATS.ModlistManager.csproj -c Release -r win-x64 --self-contained false
- Create ZIP(s) and SHA256 (names):
modlist-manager-X.Y.Z-win-x64.zipmodlist-manager-X.Y.Z-self-contained-win-x64.zip
- Commit, Branch, Tag
- Commit changes (incl. changelog/notes).
- Push release branch
release/vX.Y.Z. - Create annotated tag
vX.Y.Zand push.
- GitHub Release
- Create release for
vX.Y.Zwith title “ETS2ATS.ModlistManager vX.Y.Z”. - Use
RELEASE_NOTES_vX.Y.Z.mdas notes. - Upload assets: ZIP +
.sha256. - Upload assets: ZIP(s) +
.sha256.
- README Update
- Update direct download link (DE/EN installation sections).
- Merge to main
- Open PR
release/vX.Y.Z→main, merge, delete branch.
- Final checks
- Verify release page, download link, SHA256 and a quick smoke test (app starts, language/theme switch, load/save modlist).
Optional
- Publish self-contained build variant.
- Update FAQ/Docs and screenshots.
PowerShell examples:
# Tag + Release (gh CLI)
git tag -a vX.Y.Z -m "ETS2ATS.ModlistManager vX.Y.Z"
git push origin vX.Y.Z
# Create release with notes and upload assets
gh release create vX.Y.Z --title "ETS2ATS.ModlistManager vX.Y.Z" --notes-file "RELEASE_NOTES_vX.Y.Z.md"
gh release upload vX.Y.Z `
"artifacts/vX.Y.Z/modlist-manager-X.Y.Z-win-x64.zip" `
"artifacts/vX.Y.Z/modlist-manager-X.Y.Z-win-x64.zip.sha256" `
"artifacts/vX.Y.Z/modlist-manager-X.Y.Z-self-contained-win-x64.zip" `
"artifacts/vX.Y.Z/modlist-manager-X.Y.Z-self-contained-win-x64.zip.sha256" `
--clobberBitte halte Releases klein, nachvollziehbar und dokumentiert. Danke! 🙌# Contribution Guide Danke für dein Interesse, zum ETS2 / ATS Modlist Manager beizutragen!
- Einfachheit & Klarheit: UI bleibt schlank – keine halbfertigen oder schwer wartbaren Heuristiken.
- Portabilität: Keine Registry-Abhängigkeiten oder unnötige globale Zustände.
- Lesbarkeit vor cleverness: Bevorzuge verständlichen Code.
- Issue anlegen (Feature / Bug) – beschreibe Motivation & Use Case.
- Auf das Issue verlinken, wenn du einen Branch erstellst.
- Branch-Namensschema (Vorschlag):
feat/<kurzbeschreibung>fix/<kurzbeschreibung>docs/<kurzbeschreibung>
- Pull Request öffnen mit:
- Kurzer Beschreibung
- Warum Änderung nötig ist
- Screenshots bei UI-Änderungen
- Hinweis auf Breaking Changes (falls vorhanden)
- Review abwarten – ggf. Anpassungen vornehmen.
Format: <type>: <kurze Aussage>
Types: feat, fix, refactor, docs, chore, build.
Beispiele:
feat: add markdown FAQ with auto ToC
fix: remove gradient exception on banner
refactor: simplify profile loading logic
- Zielplattform: .NET 8, WinForms
- Nullable aktiviert – vermeide
!wo möglich - Verwende
varnur wenn Typ rechts eindeutig - Methoden kurz halten; Hilfsmethoden extrahieren bei > ~40 Zeilen Logik
- Keine externen großen Dependencies für Kleinigkeiten
- Neue Strings in beide Sprachdateien (
lang.de.json,lang.en.json) - Ressourcen unter
ModlistManager/Resources/...ablegen (automatischer Copy via csproj Include) - Keine gigantischen eingebetteten Dateien – lieber optionaler Download
Aktuell keine automatisierten Tests – bei Logikänderungen gern kleine Helper-Klassen so bauen, dass spätere Tests möglich wären.
Mit dem Einreichen eines PR stimmst du zu, dass dein Beitrag unter MPL-2.0 lizenziert wird.
Keine externen Netzwerkaufrufe ohne vorherige Diskussion. Kein automatisches Herunterladen / Ausführen fremder Binärdateien.
CHANGELOG.mdEintrag unter "Unreleased" ergänzen- Version im
.csprojerhöhen (SemVer: PATCH für Fixes, MINOR für neue Features, MAJOR für Breaking Changes) - Tag erstellen:
vX.Y.Z - Release Workflow erzeugt Artefakte (ZIP) – manuell beschriften
Danke für deine Unterstützung! 🙌