novolis-apps / sketch-studio/smoke-and-release.md
Smoke and release
Desktop products on NuGet only
dotnetavaloniadesktopnovolis
← Documentation index · Architecture · Getting started
`--smoke`
Headless pipeline (no main window). Invoked before Avalonia desktop lifetime:
dotnet run --project d:\novolis\novolis-apps\src\SketchStudio -p:NovolisUseProjectReferences=true -- --smokeSmokeRunner checks:
- Gridify + undo on a stroke
- Fuse two strokes (shared
groupId) SketchJsonround-trip (v2 text + rotation + group)SketchExport.ToSvgnon-empty- Avalonia
SetupWithoutStarting+ToPngbyte length
Exit code 0 on pass, 1 on any failure. Printed as OK / FAIL lines.
Local installer
Requires Inno Setup 6 for the setup exe:
pwsh -File d:\novolis\novolis-apps\scripts\build-installer.ps1 -App SketchStudioZip-only:
pwsh -File d:\novolis\novolis-apps\scripts\build-installer.ps1 -App SketchStudio -SkipInstallerCatalog entry (Publish-NovolisApp.ps1): key sketch-studio, AppId Novolis.SketchStudio, SetupBase SketchStudioSetup, script sketch-studio.iss.
Release assets
| Asset | Role |
|---|---|
| `SketchStudioSetup-{version}-win-x64.exe` | User-scoped Inno install |
| `SketchStudio-{version}-win-x64.zip` | Portable |
| `SHA256SUMS.txt` | Hashes on the GitHub Release |
Apps docs: release.md, getting-started.md.
Policy checks
pwsh -File d:\novolis\novolis-governance\scripts\verify-nuget-only.ps1Manual smoke (UI)
After a UI change, verify: draw → save → reopen → Recent → Fuse → Copy PNG → Save As SVG → dirty close → F1 tips still match shortcuts.