chore(release): cut 0.12.0#1112
Merged
danielmeppiel merged 3 commits intomainfrom May 3, 2026
Merged
Conversation
Promotes [Unreleased] -> [0.12.0] - 2026-05-03 and bumps pyproject.toml + uv.lock to 0.12.0. Sanitization: - Filled the residual (#PR_NUMBER) placeholder on the local-bundle UnboundLocalError fix entry -> (#1108) - Preserved an empty [Unreleased] section above 0.12.0 so the next contributor PR can append entries without re-introducing the heading Version-bump rationale: 0.12.0 (minor bump) chosen over 0.11.1 because this release ships TWO BREAKING changes: - 'apm pack' now produces a Claude Code plugin directory by default; the legacy bundle layout requires --format apm (#1061) - Dropped support for .collection.yml / .collection.yaml virtual packages (#1097) plus several net-new features (Windsurf target, Claude Code MCP install target, --target agent-skills, apm install <local-bundle>, apm compile -t copilot, marketplace add HTTPS/nested URLs, slash-command argument hints in Claude). Strict semver in 0.x: minor for features-with-break, patch only for bugfixes. 44 commits since v0.11.0. Validation: - ruff check src/ tests/ -- silent - ruff format --check src/ tests/ -- silent - uv lock -- regenerated cleanly Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Cuts release 0.12.0 by promoting the existing [Unreleased] changelog entries into a dated release section and bumping the project version across the Python project metadata and lockfile.
Changes:
- Promote changelog entries to
## [0.12.0] - 2026-05-03and keep an empty## [Unreleased]placeholder. - Bump
pyproject.tomlproject version to0.12.0. - Regenerate / update
uv.locksoapm-cliresolves as0.12.0.
Show a summary per file
| File | Description |
|---|---|
| CHANGELOG.md | Moves the accumulated Unreleased entries under a 0.12.0 release heading and fills the remaining PR placeholder. |
| pyproject.toml | Updates the package version to 0.12.0. |
| uv.lock | Updates the editable apm-cli package version to 0.12.0. |
Copilot's findings
- Files reviewed: 2/3 changed files
- Comments generated: 0
integrate_local_bundle() recorded bare hex hashes in local_deployed_file_hashes, but cleanup.py provenance check compares against compute_file_hash() which returns 'sha256:<hex>'. The mismatch caused stale-cleanup of local-bundle files to skip every file as 'user-edited' instead of removing files no longer in the bundle. - services.py: write 'sha256:<hex>' on real deploy and dry-run paths - cleanup.py: defensively normalize both sides of the equality check (handles legacy 0.12.0-rc lockfiles with bare hex) - regression tests cover both the format consistency and the cross-flow cleanup interaction Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
These three integration test files exist and pass locally but were not enumerated in scripts/test-integration.sh, so CI silently skipped them and could not catch regressions in: - apm pack default format (0.12.0 flipped from 'apm' to 'plugin') - apm compile --target copilot (.github/copilot-instructions.md) - transitive local_path anchoring across multi-level local chains Surfaced by the test-coverage review of PR #1112. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This was referenced May 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TL;DR
Cuts
0.12.0. Promotes[Unreleased]to[0.12.0] - 2026-05-03,bumps
pyproject.toml+uv.lockto0.12.0, fills one residual(#PR_NUMBER)placeholder.44 commits since
v0.11.0.Version-bump rationale
Minor bump (
0.12.0) chosen over patch because this releaseships two BREAKING changes plus several net-new features.
Strict semver in 0.x: minor for features-with-break, patch only
for bugfixes.
Breaking changes
apm packnow produces a Claude Code plugin directory bydefault. Legacy APM bundle layout preserved under
--format apm. CI workflows / scripts consuming the legacybundle must add the flag. The
microsoft/apm-actionwrapper has been updated. (marketplace: harden pack output for downstream marketplaces (pluginRoot subtraction + remote pass-through fields) #1061)
.collection.yml/.collection.yamlvirtual packages -- now raise
ValueErrorat parse time witha migration message. Convert any such entry to a regular
apm.ymlwith adependencies:block. (fix(deps): support meta-packages and apm.yml inside collections/ subpaths #1097, closes apm.yml inside collections/<name>/ is ignored — Collection detector preempts package resolution #1094)Highlights
.mcp.json(project) + atomic~/.claude.json(user) writes; live-captured fixture parity. (#1104, closes #643)--target copilotemits.github/copilot-instructions.mdnatively. (#1048)--target agent-skillsdeploys to cross-client.agents/skills/. (closes #737)apm install <local-bundle-path>air-gapped install with sha256 integrity. (#1098)apm packembedsapm.lock.yaml+path -> sha256manifest. (#1098)apm marketplace addaccepts full HTTPS URLs and nested HOST/group/sub/.../REPO shorthands. (#1034, closes #1027)apm packmarketplace builder hardening + plugin manifest schema-conformance tests. (#1061).agents/skills/; auto-migration of legacy per-client paths;--legacy-skill-pathsopt-out. (closes #1103, #737)input:. (#1039)NOTICE.md->NOTICE(Apache / CNCF convention) + third-party-submissions section. (#1073)apm installanchors transitivelocal_pathdeps on declaring package (npm/pip/cargo parity); remote-cloned packages can no longer declare local deps. (#1111, closes #857) Thanks @JahanzaibTayyab.apm compile## Global InstructionsinAGENTS.md/CLAUDE.md(#1088); copilot dry-run + multi-target + hand-authored guard fixed (#1048); narrowapplyToplacement pinned (#871).Full per-PR list lives in
CHANGELOG.mdunder[0.12.0].Sanitization done in this PR
(#PR_NUMBER)placeholder on the local-bundle UnboundLocalErrorfix line filled in ->
(#1108).[Unreleased]heading kept as an empty placeholder above[0.12.0]so the next contributor PR can append entrieswithout re-introducing the heading. (Same convention as the
0.11.0cut.)Files changed
CHANGELOG.md[Unreleased]->[0.12.0] - 2026-05-03; insert empty[Unreleased]; fill#PR_NUMBER->#1108.pyproject.tomlversion = "0.11.0"->"0.12.0".uv.lockapm-cli0.11.0->0.12.0(regenerated viauv lock).Validation
uv run --extra dev ruff check src/ tests/-- silentuv run --extra dev ruff format --check src/ tests/-- silentuv lock-- regenerated cleanly,apm-cli==0.12.0grep -c PR_NUMBER CHANGELOG.md->0Post-merge admin
v0.12.0on the merge commit.0.12.0(add auto init on install package #9); ensure remaining open items arerolled over to the next milestone.