Skip to content

feat(release): publish @opencoven/coven wrapper alongside @opencoven/cli#257

Merged
BunsDev merged 1 commit into
mainfrom
feat/publish-coven-npm-wrapper
Jun 24, 2026
Merged

feat(release): publish @opencoven/coven wrapper alongside @opencoven/cli#257
BunsDev merged 1 commit into
mainfrom
feat/publish-coven-npm-wrapper

Conversation

@BunsDev

@BunsDev BunsDev commented Jun 24, 2026

Copy link
Copy Markdown
Member

The npm release pipeline now publishes both wrapper names from one signed tag:

  • @opencoven/cli — existing primary; fully backward-compatible.
  • @opencoven/coven — new co-published alias.

Both wrappers depend on the same native @opencoven/cli-* platform packages as optional dependencies, so installing either ends up with the same binary. Co-publishing lets the canonical coven name be advertised in docs without breaking existing installs of @opencoven/cli.

Implementation

  • scripts/publish-npm.mjswriteWrapperPackage now takes a packageName, rewrites README.md and bin/coven.js text via wrapperTextForPackage, and emits into npm/dist/<wrapperPackageDirName> (coven for the primary, coven-alias for the new name). The main loop publishes both.
  • .github/workflows/release-npm.yml — comment updated to call out both wrapper packages so trusted-publisher setup is documented.
  • scripts/publish-npm-test.mjs — two new tests pin wrapperPackageNameList(), wrapperPackageDirName, and wrapperTextForPackage so the regex only rewrites the bare @opencoven/cli reference (not @opencoven/cli-macos or similar).

Verification

$ node --test scripts/publish-npm-test.mjs
ℹ tests 37
ℹ pass 37
ℹ fail 0

Before the first OIDC release of @opencoven/coven, configure it as a Trusted Publisher on npmjs.com — same procedure as the existing packages.

The npm release pipeline now publishes both wrapper names from one tag:

  - @opencoven/cli (existing primary; backward-compatible)
  - @opencoven/coven (new co-published alias)

Both wrappers share the same native @opencoven/cli-* platform packages
as optional dependencies, so installing either ends up with the same
binary. Co-publishing lets the canonical \"coven\" name be advertised in
docs without breaking existing installs of @opencoven/cli.

Implementation:
- publish-npm.mjs: writeWrapperPackage now takes a packageName, rewrites
  README.md and bin/coven.js text via wrapperTextForPackage, and emits
  into npm/dist/<wrapperPackageDirName>. The main loop publishes both.
- release-npm.yml: comment updated to call out both wrapper packages.
- publish-npm-test.mjs: two new tests pin wrapperPackageNameList(),
  wrapperPackageDirName, and wrapperTextForPackage so the regex only
  rewrites the bare @opencoven/cli reference (not @opencoven/cli-macos).

Verified: 37 tests pass (existing 35 + 2 new).
Copilot AI review requested due to automatic review settings June 24, 2026 20:47

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the npm release tooling to co-publish an additional wrapper package name intended to be an alias for the existing CLI wrapper, while keeping the same platform-specific native optional dependencies.

Changes:

  • Publish wrapper packages in a loop over multiple wrapper package names (instead of publishing only @opencoven/cli).
  • Add wrapper text rewriting utilities so README/bin copy can reflect the selected wrapper package name while preserving @opencoven/cli-* native package references.
  • Extend Node tests to pin wrapper package name list/dir mapping and validate the rewrite regex behavior; update release workflow comments to mention both wrapper packages.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

File Description
scripts/publish-npm.mjs Adds multi-wrapper publishing and wrapper text rewriting helpers.
scripts/publish-npm-test.mjs Adds tests for wrapper name list/dir mapping and rewrite behavior.
.github/workflows/release-npm.yml Updates workflow header comments to document trusted-publisher setup.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread scripts/publish-npm.mjs
Comment on lines +10 to 12
const primaryWrapperPackageName = '@opencoven/cli';
const wrapperPackageNames = [primaryWrapperPackageName, '@opencoven/coven'];

Comment on lines +6 to +8
# Auth: npm trusted publishing via GitHub Actions OIDC — no long-lived NPM_TOKEN required. Configure
# @opencoven/cli, @opencoven/coven, and each @opencoven/cli-* native package on npmjs.com
# -> Settings -> Trusted Publishers before the first OIDC release.
Comment on lines +61 to +65
test('release publishes the current and coven-named wrapper packages', () => {
assert.deepEqual(wrapperPackageNameList(), ['@opencoven/cli', '@opencoven/coven']);
assert.equal(wrapperPackageDirName('@opencoven/cli'), 'coven');
assert.equal(wrapperPackageDirName('@opencoven/coven'), 'coven-alias');
});
@BunsDev BunsDev merged commit 6552675 into main Jun 24, 2026
14 checks passed
@BunsDev BunsDev deleted the feat/publish-coven-npm-wrapper branch June 24, 2026 20:55
BunsDev added a commit that referenced this pull request Jun 24, 2026
Document v0.0.49 changes across English, Spanish, and Russian release
notes:

- Co-published @opencoven/coven wrapper alongside @opencoven/cli
  (PR #257). Both wrappers depend on the same native cli-* platform
  packages and resolve to the same binary.
- Coven Group Chat product + tech spec (PR #258) under
  specs/coven-group-chat/. Implementation tracked separately.
- OpenMeow references scrubbed from docs, api test fixture, and
  task-manager skill (PR #256). Product-neutral language.

No runtime behavior changes for end users in this release.
BunsDev added a commit that referenced this pull request Jun 25, 2026
@opencoven/coven was never a real product surface. PR #257 added it
as a co-published wrapper, but it never finished publishing (the
v0.0.49 release blocked on missing Trusted Publisher setup) and we
won't keep it. The canonical npm install path remains @opencoven/cli;
all native platform packages stay @opencoven/cli-*.

publish-npm.mjs / publish-npm-test.mjs / release-npm.yml:
  - wrapperPackageNames is now [primaryWrapperPackageName] only.
  - Tests updated: drop the wrapper-list/dir/text-rewrite tests that
    pinned both names. Add a smaller pin that confirms we publish only
    @opencoven/cli and that wrapperTextForPackage is a no-op for the
    primary name. Re-target the packageVersionPublished negative-case
    test at a synthetic 99.99.99 placeholder.
  - Release workflow comment updated to drop the @opencoven/coven
    Trusted Publisher requirement.

Docs (en / es / ru / superpowers):
  - Every "external @opencoven/coven plugin" / "@opencoven/coven
    package" reference now reads "external OpenClaw bridge plugin"
    (or "OpenClaw bridge" in mermaid node labels). The OpenClaw
    integration is still described as an external compatibility
    adapter; only the placeholder npm name goes away.
  - 46 files touched, 86 literal references replaced via a single
    sed pass; rg confirms zero remaining @opencoven/coven references
    in docs/ or scripts/.

Verification:
  - node --test scripts/publish-npm-test.mjs -> 40/40 pass
  - rg "@opencoven/coven" docs/ scripts/ -> 0 hits

@opencoven/coven was never successfully published to npm (E404'd on
the first attempt because the new package needed Trusted Publisher
setup we never finished). Nothing to unpublish.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants