-
Notifications
You must be signed in to change notification settings - Fork 4
15 development
Build, test, publish, versioning, localization, code style. Related: 02 — Projects & Solution · 14 — Testing
- .NET SDK 10.0.x (
global.jsonpins10.0.0, roll-forward latestMajor, no prereleases). - Windows (the projects target
net10.0-windowsand use WPF/DPAPI).
# build everything
dotnet build SimpleLauncher.sln
# build one project
dotnet build SimpleLauncher/SimpleLauncher.csproj
# run unit tests
dotnet test SimpleLauncher.Tests/SimpleLauncher.Tests.csprojSee 14 — Testing for test filters and the known slow network test.
dotnet publish SimpleLauncher/SimpleLauncher.csproj -c Release -r win-x64
dotnet publish SimpleLauncher/SimpleLauncher.csproj -c Release -r win-arm64-
RuntimeIdentifiersarewin-x64;win-arm64; every bundled tool ships both variants (X.exe+X_arm64.exe) and is resolved per architecture at runtime (see 11 — Bundled Tools). - Release zip naming for updates:
release_{version}_{rid}.zip+updater_{rid}.zip(see 16 — Updater). - A
publish-check\folder with per-RID outputs is used locally to validate published payloads.
Version 5.6.0 must stay in sync across:
-
SimpleLauncher\SimpleLauncher.csproj(AssemblyVersion,FileVersion,Version) -
SimpleLauncher.Core\SimpleLauncher.Core.csproj(same three) SimpleLauncher.Tests\SimpleLauncher.Tests.csproj-
SimpleLauncher\app.manifest(assemblyIdentity version) -
SimpleLauncher.Updater\version.txt(release5.6.0)
VersionConsistencyTests enforces this in CI/local runs. Bump all of them together.
- 18 languages as WPF resource dictionaries:
SimpleLauncher\resources\strings.{code}.xaml(ar, bn, de, en, es, fr, hi, id, it, ja, ko, nl, pt-br, ru, tr, ur, vi, zh-hans). -
SimpleLauncher.ResourceTranslatorproject assists adding/validating translations. - Unit tests guard against common translation issues: missing keys in other languages, duplicate/mismatched resource keys, empty values, key-count mismatches (
DetectMissingResourceStringsTestsfamily). - Add a new language: create
strings.{code}.xaml, register it inApp.ChangeLanguage/LanguageMenuService, and update the resource-key tests if needed.
-
Meziantou.Analyzer 3.0.139 and Microsoft.CodeAnalysis.NetAnalyzers 10.0.302 (both
PrivateAssets). -
Nullableenabled everywhere;LangVersion 14; implicit usings + globalusing System.IO; using System.Net.Http; using Serilog;. -
NoWarnin app:NU1903;CS0436. - Tests must satisfy the analyzers (e.g.
StringComparisonoverloads on string assertions). - Conventions observed in the codebase: services take Serilog
ILogger; UI services use the host-interface pattern (Initialize(host)) instead of receiving windows; ViewModels use CommunityToolkit.Mvvm.
The docs\ folder is published in two places:
The site is served from /docs via docsify (client-side rendering, no build step):
- Enable once in repo settings: Settings → Pages → Deploy from a branch → branch
master, folder/docs. - Every push to
docs/**rebuilds the site automatically. - URL:
https://drpetersonfernandes.github.io/SimpleLauncher/.
docs/index.html (docsify loader), docs/_sidebar.md (TOC) and docs/.nojekyll are the site assets. docs/parameters.md and docs/manual-tests.md are copies kept for the site and wiki:
-
docs/parameters.md←SimpleLauncher/parameters.md— refresh it whenever the canonical file changes. -
docs/manual-tests.md←ManualTests.md(repo root) — refresh likewise.
The wiki is a separate git repo (SimpleLauncher.wiki.git); the default GITHUB_TOKEN cannot push to it, so syncing runs locally (or in CI with a PAT):
python scripts/sync-wiki.py --dry-run # preview
python scripts/sync-wiki.py # clone/pull, rewrite, commit, pushThe script maps docs/README.md → Home, copies all docs/NN-*.md as pages, and protects the parameters page (https://github.com/drpetersonfernandes/SimpleLauncher/wiki/parameters) — the app opens this URL (EditSystemWindow.xaml.cs, config key WikiParametersUrl), so it is never deleted and is refreshed from docs/parameters.md. Stale pages are deleted, _Sidebar.md is regenerated, and markdown links are rewritten to the flat wiki namespace.
For CI automation (optional): add a workflow that runs the script with a WIKI_PAT secret (classic PAT, repo scope) on docs/** pushes.
- Implement features/fixes; keep
WhatsNew.mdupdated with a release section. - Bump version in the five places above.
- Run the full test suite (minus the slow URL test).
- Publish both RIDs; package
release_{version}_{rid}.zip+updater_{rid}.zip; create a GitHub release. - The in-app updater and silent update check use the GitHub
releases/latestAPI.
- Home
- 01 Overview
- 02 Projects And Solution
- 03 Quickstart
- 04 Architecture
- 05 Configuration
- 06 Systems And Launch
- 07 Core Services
- 08 Ui Layer
- 09 Retroachievements
- 10 Game Scanning
- 11 Bundled Tools
- 12 Data Formats
- 13 Logging And Debug
- 14 Testing
- 15 Development
- 16 Updater
- 17 Release Notes
- 18 Emulator Parameters
- Manual Tests
- Parameters