maksit-postclient/CONTRIBUTING.md

5.8 KiB

Contributing to Postclient

C# style: repo-root .editorconfig. Repo hygiene: (Community desktop: RepoUtils under utils/).

Development setup

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

Build

cd src
dotnet build MaksIT.PostClient.slnx

Tests

utils\Invoke-TestEngine.bat

Coverage shields in README.md are rewritten by CoverageBadges.

Release

  1. Update CHANGELOG.md and bump <Version> in src/Directory.Build.props.
  2. Commit on main, tag v{version} on HEAD (v1.2.3 or SemVer prerelease such as v0.1.0-alpha.1). GitHub marks hyphenated versions as prerelease.
  3. Run utils\Invoke-ReleasePackage.bat. That run publishes the portable zip (win-x64), Windows setup exe (self-contained, no .NET SDK on the PC), and Flatpak (via WSL Debian on Windows). Publishing the GitHub Release starts macOS release assets, which attaches unsigned osx-arm64 and osx-x64 DMGs.

WinGet listing is not in this repo yet: it will point at the same GitHub setup exe.

Microsoft Store (MSIX)

MsixPack is enabled. Each release writes releases/postclient-{version}.msix from the win-x64 publish (Windows SDK makeappx / signtool). It is a full-trust desktop package (runFullTrust), x64. The package language stays English (en-us): the app picks English, Italian, French, German, or Spanish at runtime. Upload that file on an MSIX product in Partner Center. The Store re-signs it. An EXE/MSI product listing cannot take this file. Add a Store listing for each UI language. The paste text is under packaging/microsoft-store.

Partner Center package identity for this product:

Field Value
Package/Identity/Name MAKS-IT.Postclient
Package/Identity/Publisher CN=FCC8C0E7-6D5F-4028-B8EE-903B88C0C8F9
PublisherDisplayName MaksIT
Package Family Name MAKS-IT.Postclient_pt3s39h1tn26a
Package SID S-1-15-2-1760430311-4196969058-3832155388-2991238057-1261587593-1009432215-1213270591
Store ID 9N7F29XPK5W4

Those name, publisher, and publisher display strings are packageName, publisher, and publisherDisplayName in utils/engines/release/scriptSettings.json.

The Store deep link and the Web Store URL are available after the product is live. The .msix is not a GitHub release asset.

Store listing copy:

Field Document
Listings for en-us, it-it, fr-fr, de-de, es-es packaging/microsoft-store/description.md
Product features (up to 20 bullets, 200 characters each) same folder, product-features.md in each language
Keywords (up to 7, 40 characters each, 21 words total) same folder, keywords.md in each language
Copyright, additional license terms, Developed by same folder, additional-info.md in each language
Restricted capability runFullTrust packaging/microsoft-store/restricted-capabilities.md
Store logos (9:16 poster, 1:1 box art, app tiles) packaging/microsoft-store/logos.md

System requirements (Properties)

Partner Center -> Properties -> System requirements. A blank cell stays unset. Minimum is what the Store may warn on; Recommended does not warn.

The app is a win-x64 desktop mail client. It does not use a camera, microphone, radio, gamepad, or a specific GPU.

Feature Minimum Recommended
Touch screen
Keyboard Minimum
Mouse Minimum
Camera
NFC HCE
NFC Proximity
Bluetooth LE
Telephony
Microphone
Xbox controller or gamepad
Windows Mixed Reality motion controllers
Windows Mixed Reality immersive headset
Memory 2 GB 4 GB
DirectX Not specified Not specified
Video memory Not specified Not specified
Processor x64 Not specified
Graphics Not specified Not specified

Flathub

FlatpakPack writes the GitHub Release .flatpak from the linux-x64 publish. A Flathub submission builds a release tag from source. Open the pull request on flathub/flathub against new-pr. Only x86_64 is in scope until linux-arm64 is published.

Field Document
Pull request and local check packaging/flathub/submission.md
Upstream files and NuGet sources packaging/flathub/sources.md
Manifest values packaging/flathub/manifest.md
Finish args packaging/flathub/permissions.md
Verified app id packaging/flathub/verification.md

GitHub setup exe

The GitHub Windows installer stays the WiX Burn setup.exe. Its switches are /quiet /norestart (install), /repair /quiet /norestart (repair), and /uninstall /quiet /norestart (uninstall). Signing that exe for an EXE/MSI Store listing needs a Trusted Root Authenticode certificate and the Burn order: payload PEs, then the MSI, then wix burn detach / sign the engine / wix burn reattach / sign setup.exe (WiX signing).

Commit format

(type): description

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

Lowercase description; no trailing period.

License

By contributing, you agree that your contributions are licensed under the terms in LICENSE.md (Apache 2.0).