Console Mode is a Windows desktop app (WinUI 3, .NET 8, C#) that turns a PC into a console: it focuses the TV, hides the other displays, launches Big Picture / Playnite / Xbox mode, and restores the desk setup afterwards.
- The app only builds on Windows.
src/ConsoleModetargetsnet8.0-windowswith the Windows App SDK. On Linux (Pullfrog, most cloud agents) do not try to build it; the CI workflow builds it on Windows for every pull request. Say in the PR that the build was left to CI. - The unit tests run anywhere:
dotnet test tests/ConsoleMode.Tests/ConsoleMode.Tests.csproj. The test project targets plainnet8.0and compiles a list of pure-logic files fromsrc/ConsoleMode(see its.csproj). Run it before every push. When you add logic that doesn't touch Win32/WinUI, put it in such a file, link it there and test it. - Displays, TVs, audio, controllers, windows of other apps can't be tested in CI.
For changes there, add the manual checks to
docs/TESTING.md(Portuguese, checklist style) instead of claiming they work.
src/ConsoleMode/Services: engine and services (ConsoleEngine,MonitorService,LaunchService, controllers, updates, localization).src/ConsoleMode/Native: P/Invoke (Win32, CCD display config).src/ConsoleMode/Views,ViewModels,Controls: UI (MVVM with CommunityToolkit.Mvvm).build/: publish script and Inno Setup installer..github/workflows/release.ymlpublishes a release when av*tag is pushed, or when it is run by hand (Actions → Release → Run workflow, onmain) with "publish" ticked, which creates the tag itself. Never create or push tags and never run it with "publish" ticked unless the owner explicitly asks for a release.
- Every user-facing string goes in every catalog in
src/ConsoleMode/Resources/(Strings.pt-BR.json,en-US,es-ES,de-DE,fr-FR,ru-RU), translated. The localization tests fail when keys or{0}placeholders don't match, or when a sentence is left in English. - Changelog: add user-visible changes under
## [Unreleased]in bothCHANGELOG.md(Portuguese) andCHANGELOG.en-US.md, ending the item with the PR number. - Docs come in pairs:
README.md/README.pt-BR.md,docs/GUIDE.md/docs/GUIDE.pt-BR.md. TheREADME.<code>.mdanddocs/GUIDE.<code>.mdtranslations (es-ES, de-DE, fr-FR, ru-RU) are leaner (no version numbers, "What's new" or roadmap): update them too when you change a section they carry. Adding a language: followdocs/TRANSLATING.md. - Commits and PR titles: Conventional Commits in English (
fix: …,feat: …,docs: …), one topic per PR.AppLogmessages are written in Portuguese, like the existing ones. - Keep changes small and focused; don't reformat unrelated code.