Skip to content

feat: add unscoped Primitree launcher - #14

Merged
marklearst merged 4 commits into
mainfrom
feat/unscoped-primitree-launcher
Aug 17, 2026
Merged

marklearst merged 4 commits into
mainfrom
feat/unscoped-primitree-launcher

Conversation

@marklearst

@marklearst marklearst commented Aug 16, 2026 •

Copy link
Copy Markdown
Owner

What changed

  • add the CLI-only unscoped primitree package and forward its executable to @primitree/cli/bin
  • move all six public packages onto the fixed 1.0.0-next.0 Changesets prerelease train
  • make release packing, npm publication, GitHub Releases, and CI support stable and next channels
  • repair and recheck any prerelease assigned to latest before publishing the next package, while preserving a stable latest
  • verify a launcher-only public install through both the exact wrapper and .bin/primitree before the broader six-package consumer
  • include the prerelease contract in the required root test command and document the already-versioned initial release candidate
  • upload all five package LCOV files without whitespace-corrupted Codecov paths
  • make the existing governance interaction test wait for the component's client-ready state before clicking
  • update package, docs, launch, and maintainer guidance for npx primitree@next

Why

The short npm name should be the public command while the scoped package remains the implementation and programmatic API. The first release must remain on next, preserve any stable package on latest, and prove that installing only primitree exposes the intended command.

User and maintainer impact

  • users can run npx primitree@next check and npx primitree@next build
  • consumers that need the config API continue to install @primitree/cli@next
  • the release creates six tarballs plus the manifest and checksums in dependency order
  • each accepted prerelease is normalized before publication can advance to a dependent package
  • this pull request does not publish to npm, create a GitHub Release, or change repository visibility

Release safeguards

  • registry polling, requests, and smoke commands have explicit bounds; temporary npm homes, configuration, caches, and consumers are removed through cleanup paths
  • publication requires the exact tag, commit, registry, OIDC identity or reviewed bootstrap token, provenance statement, and package identity
  • any prerelease assigned to latest is removed and re-inspected before publication advances; a stable latest is preserved
  • the launcher-only consumer installs only primitree@VERSION and invokes both the wrapper and .bin/primitree before the six-package consumer runs
  • the required root test command includes the prerelease contract

Verification

  • pnpm run format:check
  • pnpm run lint: exit 0; existing warnings only
  • pnpm run typecheck: 15/15 Turbo tasks
  • pnpm run test: 147 root tests, 100 artifact tests, 66 release-workflow tests, and 15/15 workspace tasks
  • pnpm run test:coverage: 11/11 Turbo tasks; all five LCOV files are present and non-empty
  • pnpm run test:e2e: 49/49 browser tests
  • pnpm run check:release: six packages at 1.0.0-next.0, eight exact artifacts, packed consumer, public metadata, built prose, brand checks, and hooks size limit
  • node scripts/release-publish.mjs packed-consumer: passed against the real packed artifacts
  • packed primitree-1.0.0-next.0.tgz contains only the launcher, README, changelog, license, and manifest; its dependency is rewritten to @primitree/cli: 1.0.0-next.0
  • git diff --check

@vercel

vercel Bot commented Aug 16, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
primitree Ready Ready Preview Aug 17, 2026 2:27am

Request Review

@codecov

codecov Bot commented Aug 16, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 83.74%. Comparing base (b347113) to head (55a474e).

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #14      +/-   ##
==========================================
+ Coverage   82.05%   83.74%   +1.69%     
==========================================
  Files          16       77      +61     
  Lines        1326     6367    +5041     
  Branches      415     1774    +1359     
==========================================
+ Hits         1088     5332    +4244     
- Misses        120      540     +420     
- Partials      118      495     +377     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@marklearst
marklearst marked this pull request as ready for review August 16, 2026 14:53
Copilot AI lite review requested due to automatic review settings August 16, 2026 14:53
@cursor

cursor Bot commented Aug 16, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_8b107af5-f865-4aed-b7ac-8c7529503337)

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Adds a public, unscoped primitree launcher package that delegates to @primitree/cli, and updates the release tooling/contracts so the monorepo can publish coordinated 1.0.0-next.0 prereleases on the next channel while protecting latest from accidental prerelease tagging.

Changes:

  • Introduces packages/primitree (unscoped) with a primitree bin that forwards execution to @primitree/cli/bin.
  • Extends release tooling to support vMAJOR.MINOR.PATCH-next.N tags, next dist-tag publication, and prerelease-specific validation/cleanup (including removing an unexpected latest dist-tag on prereleases).
  • Updates tests, docs, CI, and Changesets config to enforce the prerelease train and document npx primitree@next usage.

Reviewed changes

Copilot reviewed 53 out of 55 changed files in this pull request and generated no comments.

Show a summary per file
File Description
tests/e2e/docs-home-governance.spec.ts Stabilizes governance e2e by waiting for the UI readiness stage before clicking.
scripts/release-publish.test.mjs Expands workflow tests for next tagging, dist-tag cleanup, and launcher-only consumer installs/smoke checks.
scripts/release-publish.mjs Implements next/latest channel selection, prerelease latest dist-tag cleanup, and launcher-only consumer smoke path.
scripts/release-config.mjs Adds version→channel helpers and registers the new primitree package plus CLI ./bin export expectations.
scripts/release-artifacts.test.mjs Updates artifact expectations to include the new unscoped tarball and -next.N versions.
scripts/release-artifacts.mjs Supports -next.N versions, correct tarball naming for primitree, and channel-aware publish dry-runs.
scripts/prerelease-contract.test.mjs Adds a root-level contract test enforcing Changesets prerelease/fixed-group coordination.
scripts/github-release.test.mjs Extends GitHub release tests for prerelease tags and complete asset sets including primitree.
scripts/github-release.mjs Marks -next.N releases as GitHub prereleases and validates tag patterns/asset inventory generically.
scripts/check-release.test.mjs Updates release/runbook/CI assertions for 6 packages, prerelease tag/channel semantics, and launcher inventory.
scripts/check-release.mjs Allows -next.N versions/tags and renames required workspace root name to primitree-workspace.
scripts/check-prose.test.mjs Makes declaration-file checks tolerant of packages (launcher) with no declared types.
scripts/check-brand.test.mjs Allows migration references in the new prerelease launch notes doc.
scripts/brand-rules.mjs Whitelists the new prerelease launch notes path for approved references.
README.md Updates primary usage examples to npx primitree@next … and documents the new launcher package.
pnpm-lock.yaml Updates lockfile for the new workspace package and related dependency graph changes.
packages/primitree/README.md Documents the launcher package purpose and @next usage.
packages/primitree/package.json Defines the unscoped package metadata, bin entrypoint, files list, and dependency on @primitree/cli.
packages/primitree/LICENSE Adds license file for the new package.
packages/primitree/CHANGELOG.md Adds launcher changelog aligned with the 1.0.0-next.0 train.
packages/primitree/bin/primitree.js Implements the forwarding launcher (import '@primitree/cli/bin').
packages/mcp/README.md Updates changelog link text to 1.0.0-next.0.
packages/mcp/package.json Moves @primitree/mcp to 1.0.0-next.0.
packages/mcp/CHANGELOG.md Finalizes prerelease changelog content for 1.0.0-next.0.
packages/hooks/README.md Updates install/build examples to use @next / primitree@next.
packages/hooks/package.json Moves @primitree/hooks to 1.0.0-next.0.
packages/hooks/CHANGELOG.md Finalizes prerelease changelog content for 1.0.0-next.0.
packages/dtcg/README.md Updates install and changelog references to @next / 1.0.0-next.0.
packages/dtcg/package.json Moves @primitree/dtcg to 1.0.0-next.0.
packages/dtcg/CHANGELOG.md Finalizes prerelease changelog content for 1.0.0-next.0.
packages/core/README.md Updates install and changelog references to @next / 1.0.0-next.0.
packages/core/package.json Moves @primitree/core to 1.0.0-next.0.
packages/core/CHANGELOG.md Finalizes prerelease changelog content for 1.0.0-next.0.
packages/cli/tests/public-copy.test.ts Asserts the new CLI ./bin export is present.
packages/cli/tests/launcher-package.test.ts Adds a test verifying the unscoped launcher forwards to the scoped CLI.
packages/cli/README.md Updates usage and install instructions to primitree@next / @primitree/cli@next.
packages/cli/package.json Moves CLI to 1.0.0-next.0 and adds the ./bin export.
packages/cli/CHANGELOG.md Finalizes prerelease changelog content for 1.0.0-next.0.
package.json Renames workspace root and requires the prerelease contract test in the root test script.
docs/releasing.md Updates the release runbook for 6 packages, prerelease next semantics, and latest protection/cleanup.
docs/launch/v1.0.0-next.0.md Adds prerelease launch notes describing the launcher and next channel behavior.
docs/launch/announcement.md Updates announcement draft copy for prerelease and npx primitree@next examples.
apps/docs/content/docs/mcp/index.mdx Updates npx @primitree/mcp example to @next.
apps/docs/content/docs/index.mdx Updates CLI install instructions to @primitree/cli@next.
apps/docs/content/docs/hooks/migration.mdx Updates migration install command to @primitree/hooks@next.
apps/docs/content/docs/hooks/local-tokens.mdx Updates build example to primitree@next.
apps/docs/content/docs/hooks/index.mdx Updates hooks install example to @primitree/hooks@next.
apps/docs/content/docs/getting-started/index.mdx Updates CLI install instructions to @primitree/cli@next.
apps/docs/content/docs/cli/index.mdx Updates CLI install instructions to @primitree/cli@next.
apps/docs/content/docs/cli/check.mdx Updates CLI install instructions to @primitree/cli@next.
.github/workflows/ci.yml Accepts prerelease tag patterns and fixes Codecov file list formatting.
.changeset/README.md Updates Changesets guidance to include the unscoped launcher in the fixed group.
.changeset/primitree-one.md Adds the launch changeset covering all six public packages.
.changeset/pre.json Enables prerelease mode (next) and initializes versions for all six packages.
.changeset/config.json Extends the fixed version group to include primitree.
Files not reviewed (1)
  • pnpm-lock.yaml: Generated file

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 245a2e9b4e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/release-publish.mjs
Comment thread .changeset/pre.json
@cursor

cursor Bot commented Aug 17, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_b2adcb15-729c-4259-b04c-becd2fbc4807)

@marklearst

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 049502ce21

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/prerelease-contract.test.mjs Outdated
@marklearst
marklearst merged commit b01c8da into main Aug 17, 2026
8 checks passed

This branch was successfully deployed

1 active deployment
Preview — 55a474e9 Deployed Aug 17, 2026 by vercel[bot]
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