Contributing to WinMD

June 18, 2026 · View on GitHub

Thanks for your interest in WinMD — a lightweight Markdown editor and viewer for Windows (WinUI 3 / Windows App SDK, unpackaged .exe).

Prerequisites

  • Windows 10 (19041) or later — x64 or ARM64
  • .NET SDK 10 with the Windows workload
  • Windows App SDK 1.8 (restored automatically as a NuGet package for building)
  • (optional, only for building an installer) Inno Setup 6https://jrsoftware.org/isdl.php

Build & run

# Build
dotnet build -c Debug -f net10.0-windows10.0.19041.0

# Build + run
dotnet build -c Debug -t:Run -f net10.0-windows10.0.19041.0

There is no test project and no linter configured.

Building your own installer (optional)

pwsh .\build-installer.ps1

This produces an unsigned installer\WinMD-Setup.exe. Official releases are signed by the maintainer with a private certificate that is not part of this repository.

Project layout (quick map)

  • App.xaml.cs / Program.cs — startup and manual composition root (no DI container)
  • MainWindow.xaml(.cs) — the single app window; also implements IUiService
  • ViewModels/EditorViewModel.cs — single source of truth (document, formatting, find/replace, undo/redo, theme)
  • Services/MarkdownService (Markdig → HTML), file/PDF/UI/settings abstractions
  • Platforms/Windows/WindowsFileService, WindowsPdfExporter, file association, unsaved-changes guard
  • Models/MarkdownDocument, MarkdownTip

Coding conventions

  • Nullable reference types and implicit usings are enabled.
  • The codebase mixes Polish and English in code/comments — match the surrounding file.
  • Keep changes focused; follow the style of the file you are editing.

Submitting changes

  1. Fork the repo and create a topic branch off master.
  2. Make your change and confirm it builds (dotnet build -c Debug -f net10.0-windows10.0.19041.0).
  3. Open a Pull Request with a clear description of what and why.
  4. Keep PRs small and self-contained where possible.

Reporting bugs / requesting features

Use the issue templates (Bug report / Feature request). For security issues, do not open a public issue — see SECURITY.md.