Packaging and releases#
Most contributors do not need to package an installer.
For local packaging, restore the pinned tool and use the version already in version.txt:
dotnet tool restore
pwsh build\package.ps1 -Runtime win-x64
pwsh build\package.ps1 -Runtime win-arm64
pwsh build\package.ps1 -Runtime win-x64 -Edition Core
The script publishes the app, MCP companion, and agent assets, then creates installer, managed-portable, and update-feed assets. Full includes the Copilot runtime and emits the separately verified component ZIP/manifest; Core omits it. Default channels are win-x64/win-arm64 for Full and core-win-x64/core-win-arm64 for Core. Publish/release paths use those channels under artifacts\publish\<version>\<channel> and artifacts\releases\<channel>. -OutputRoot and -BuildArtifactsPath can move large outputs to another drive.
Use -Edition Core for public slim packages; omit the older runtime flag when selecting an edition. Full remains available and existing installations stay on their edition's feed. Core's native component installer validates official HTTPS downloads, archive/file hashes, bounded paths/counts, and SDK stdio startup before publishing a local selecting receipt. Credentials, models, sessions, image uploads, and permission changes are not part of that installation. Regenerate the logo/tray assets only when needed with pwsh build\make-icons.ps1.
Maintainer release flow#
Release Please owns version.txt, Directory.Build.props, CHANGELOG.md, .release-please-manifest.json, and both agent plugin versions. Do not manually bump these files or create release tags in an ordinary feature/fix PR.
After changes land on main, review and merge the release PR. The combined release workflow creates a tag/draft, tests and packages both architectures/editions, uploads installers/portable bundles/feed files and optional-component manifests/archives, and only then publishes the release as latest. Hosted native ARM64 component/MCP execution is not physical-device UI acceptance. Never publish a partial draft; update clients must not discover incomplete assets.
For repair/bootstrap, maintainers can dispatch Release Please and publish with an existing tagged version. Keep tag, manifest, MSBuild, and plugin versions consistent. GitHub must allow Actions to create pull requests; no personal token or signing credential belongs in source control. Release packages are currently unsigned.