Version Packages - #72
Merged
Merged
Conversation
unional
force-pushed
the
changeset-release/main
branch
6 times, most recently
from
September 14, 2026 00:55
c09cdf7 to
cfff9f6
Compare
unional
force-pushed
the
changeset-release/main
branch
from
September 14, 2026 01:26
cfff9f6 to
08a55ea
Compare
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.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
universal-plugin@0.8.0
Minor Changes
cbda7c2:
config get --key packagePathnow readspackagePathinstead of rejecting it.--format jsonprints the declared path as a JSON string, relative to the plugin root, ornullwhen no npm package is declared.plugin version,publish sync-version, andconfig getshare one reader, so they cannot disagree about a declaration.config add --key packagePathis still rejected: the key is a string, not a plugin-registered array.1eab810: Move the
upxrunner into its own package,@repobuddy/upx.A generic package runner is broader than this package's build/derivation charter — a placement note
in the spec has said so since it landed. It also made the wrong trade for
upxitself: the runner'svalue is install once globally, use everywhere, and that install should be small, so requiring
npm i -g universal-pluginto get a runner word worked against it.Nothing about
upx's behavior changed, and the emitter side stays here:plugin bundle --runner upx,the
adopt-upxskill, andupgrade-plugin's runner-word handling all still live in this package.Their coupling was always to the word
upx, never to its code.Install
@repobuddy/upxdirectly —npm i -g @repobuddy/upx. Theupxbin on this package nowre-exports it so existing global installs keep working, and prints a deprecation notice on
--help(never on a normal call —
upxis a transparent exec wrapper). It will be removed in the next major.49f1036: Add
universal-plugin plugin validate, which checks the rootplugin.jsonwithout building anything. It reports every problem in one pass, in two groups:$schemaandnameare required,namemust match the schema's pattern, fields must have the right types, and top-level keys the standard does not define are rejected.descriptionandversion.--vendor <id>limits these checks to one vendor.An unknown vendor key in
harnessesis a warning, and--strictmakes it a violation. Output is TOON by default, with--format jsonand--fullavailable. Runninguniversal-plugin pluginwith no subcommand now validates the current project and lists its declared harnesses, instead of printing help.A manifest without
$schemanow failsplugin validate.plugin builddoes not check$schemaand still accepts it.plugin initalready writes$schema.Patch Changes
a40d5b0:
doctornow readspackagePathonly from.agents/universal-plugin.json, resolved from the plugin root — the same file and baseplugin versionandpublish sync-versionuse. It no longer falls back toextensions["org.cyberuni.universal-plugin"].packagePath, which the CLI never honored, so doctor could pass a plugin thatversionstill treated as not shipping to npm. ApackagePathdeclared in the manifest extension is now reported asmisplaced-package-path.f0be1fa:
doctornow accepts a repeatable--marketplace-root <path>flag to also validate a separately-cloned shared marketplace repository (e.g. a local clone ofcyberuni/marketplace) — previously only the plugin's own repository root was checked, so a bad entry that reached the shared catalog another way went unnoticed. A named--marketplace-rootthat does not exist is reported asmarketplace-root-missinginstead of being silently skipped.0211cae: State the CLI's dependency bundling explicitly in the build config.
dist/cli.mjsalready shipped with its runtime dependencies inlined, and that is what lets theshipped skill launchers run from an installed plugin directory at all — those directories are copies
of a source checkout, so their
node_modulesis absent or incomplete. The build now declares thatintent through an explicit
deps.alwaysBundleblock rather than relying on it incidentally, so adependency added later cannot quietly become external and break the launchers.
@repobuddy/upxis deliberately excluded. It is reachable only from the separatebin/upx.mjsshim,which is not a build entry, so the
upxbin still resolves it at runtime from an installed tree.becd7ef: Fix
plugin buildending with a next-step hint foruniversal-plugin plugin validate, a command that does not exist yet. A build that refreshed a marketplace catalog now points atuniversal-plugin marketplace validate(with--rootfor that repository), and any other successful build points at/universal-plugin:doctor.2469986: Fix
universal-plugin --version(and-V) always printing0.0.0instead of the installed package's actual version.c6304c5:
migrate-pluginnow bundles the package's CLI with tsdown as part of the migration, so the CLI runs from an installed plugin directory that has nonode_modules. It splitstsdown.config.tsinto a library config that keeps dependencies external and a CLI config that inlines them throughdeps.alwaysBundle. It then proves the result by running the CLI from an extracted tarball.The skill also covers plugins that live in a sibling workspace member such as
plugins/<name>/, merges a colliding readme instead of overwriting it, and notes thatpublish sync-versionreadspackagePathfrom.agents/universal-plugin.json, not from the manifest. It also repoints lint excludes, marketplace sources, and spec paths.1f82ccd:
schema/extension.schema.jsonand theinit-universal-pluginstandard reference no longer advertisepackagePathunderextensions["org.cyberuni.universal-plugin"]. The CLI never read it there, so a plugin that declared it where the schema said silently fell back to the author-picks release model.packagePathlives in.agents/universal-plugin.jsonbesideplugin.json, as a path relative to the plugin root; a namespacepackagePathnow fails schema validation.4161472: The
doctorandpublish-pluginskills now ask the CLI forpackagePath(config get --key packagePath) instead of reading.agents/universal-plugin.jsonthemselves, so they cannot drift fromplugin version. When the CLI is too old to answer, doctor reportspackage-path-unknownand skipsversion-driftandunreleased-contentrather than guessing.