create-convex-monorepo 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CONTRIBUTING.md CHANGED
@@ -46,7 +46,7 @@ Use Conventional Commits for commits and PR titles. For example, `feat(cli): ini
46
46
 
47
47
  Use `fix:` for a patch, `feat:` for a minor, and `!` for a breaking change, such as `feat(cli)!: change application selection flags`. Explain breaking changes and migration steps in the PR body. These rules also apply before v1.0, so a breaking change from 0.1.0 proposes 1.0.0. `perf:` also triggers a patch; other ordinary maintenance commits do not trigger a release alone.
48
48
 
49
- Release-please maintains a PR with the next version and changelog. Do not add changeset files or manually bump versions for normal changes. Maintainers review and merge the release PR to create a GitHub release, which starts the npm publishing workflow. It verifies the release commit and publishes the tested tarball using a bootstrap token for the first release and trusted publishing afterward. See [release setup and publishing](docs/releases.md).
49
+ Release-please maintains a PR with the next version and changelog. Do not add changeset files or manually bump versions for normal changes. Maintainers review and merge the release PR to create a GitHub release, which starts the npm publishing workflow. It verifies the release commit and publishes the tested tarball using npm trusted publishing without a stored npm token. See [release setup and publishing](docs/releases.md).
50
50
 
51
51
  ## Reporting problems
52
52
 
package/README.md CHANGED
@@ -24,7 +24,7 @@ npx create-convex-monorepo@latest
24
24
 
25
25
  Both commands run the same CLI. You can also install it globally with `npm install --global create-convex-monorepo` and run `create-convex-monorepo` directly. Running through npx does not change the generated workspace's package manager, which is pnpm.
26
26
 
27
- The first npm publication is being prepared. These registry commands become available after that release is published. Contributors can run the checkout with `pnpm dev`; see [CONTRIBUTING.md](CONTRIBUTING.md).
27
+ Contributors can run the checkout with `pnpm dev`; see [CONTRIBUTING.md](CONTRIBUTING.md).
28
28
 
29
29
  ## Interactive usage
30
30
 
package/docs/releases.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Releases
2
2
 
3
- This repository uses Conventional Commits and release-please for versions, changelogs, release PRs, and GitHub releases. GitHub Actions tests and publishes the release tarball to npm. The first publication uses a bootstrap token; subsequent releases use trusted publishing. This follows the publishing model in [convex-cloudflare-email](https://github.com/adamtrip-solutions/convex-cloudflare-email/blob/main/.github/workflows/release.yml).
3
+ This repository uses Conventional Commits and release-please for versions, changelogs, release PRs, and GitHub releases. GitHub Actions tests and publishes the release tarball to npm. The first publication used a bootstrap token. The workflow now uses trusted publishing without a token fallback. This follows the publishing model in [convex-cloudflare-email](https://github.com/adamtrip-solutions/convex-cloudflare-email/blob/main/.github/workflows/release.yml).
4
4
 
5
5
  ## Version policy
6
6
 
@@ -15,7 +15,7 @@ This repository uses Conventional Commits and release-please for versions, chang
15
15
 
16
16
  A `BREAKING CHANGE:` commit footer also requests a major bump. Explain migration steps when using it. The two pre-major downgrade options are explicitly disabled, so breaking changes still request a major before 1.0. For several commits, the largest requested bump wins. This follows the [release-please versioning strategy](https://github.com/googleapis/release-please/blob/main/src/versioning-strategies/default.ts).
17
17
 
18
- The manifest records 0.1.0 as the existing baseline. `bootstrap-sha` points to the last committed v0.1 work, `0373d22b000dc9cba036a1d2f1cff689b217fd8b`, so initial history is not replayed as new features. This does not publish 0.1.0 or create a historical release. After the first automated release, release-please uses release history. See its [manifest documentation](https://github.com/googleapis/release-please/blob/main/docs/manifest-releaser.md).
18
+ The initial manifest recorded 0.1.0 as the existing baseline. `bootstrap-sha` points to the last committed v0.1 work, `0373d22b000dc9cba036a1d2f1cff689b217fd8b`, so initial history is not replayed as new features. This does not publish 0.1.0 or create a historical release. After the first automated release, release-please uses release history. See its [manifest documentation](https://github.com/googleapis/release-please/blob/main/docs/manifest-releaser.md).
19
19
 
20
20
  ## GitHub configuration
21
21
 
@@ -24,36 +24,29 @@ The public repository is `adamtrip-solutions/create-convex-monorepo`. The packag
24
24
  - Use `main` as the release branch. Enable Actions and allow GitHub Actions to create pull requests.
25
25
  - Enable squash merging with the PR title as the commit title. Require the Conventional PR title check and `CI passed` before merging.
26
26
  - Create a GitHub environment named `npm`. Restrict deployments to tags matching `v*`. Protect release tags against updates and deletion.
27
- - Configure `NPM_BOOTSTRAP_TOKEN` in the `npm` environment before the first release, or configure npm trusted publishing if the package already exists. No publishing-enable variable is required.
27
+ - Configure npm trusted publishing as described below. No npm secret or publishing-enable variable is required.
28
28
 
29
29
  The release workflow uses `GITHUB_TOKEN` by default. GitHub may require approval before running CI on a bot-created release PR. An optional `RELEASE_PLEASE_TOKEN` with repository contents, issues and pull-request write permissions can avoid that interruption. The npm dispatch step always uses `GITHUB_TOKEN` with `actions: write`; it does not require Actions permission on the optional token. [GitHub token event rules](https://docs.github.com/en/actions/concepts/security/github_token).
30
30
 
31
31
  ## First npm publication
32
32
 
33
- 1. Use your existing npm account with a verified email and two-factor authentication. The package is unscoped, so a separate npm organization is not required.
34
- 2. Create a short-lived granular npm token with Read and write package permissions that allow creation of `create-convex-monorepo`. Enable Bypass two-factor authentication for this first unattended publish. A token limited to the existing `convex-cloudflare-email` package cannot create this new package.
35
- 3. Save it as `NPM_BOOTSTRAP_TOKEN` in this repository's [npm environment](https://github.com/adamtrip-solutions/create-convex-monorepo/settings/environments). Use GitHub's secret UI, or run the following command in your own terminal and paste the token at its hidden prompt:
33
+ Version 0.2.0 created the package through GitHub Actions using `NPM_BOOTSTRAP_TOKEN`. The workflow no longer reads that secret. Subsequent releases authenticate through npm trusted publishing.
36
34
 
37
- ```sh
38
- gh secret set NPM_BOOTSTRAP_TOKEN --env npm --repo adamtrip-solutions/create-convex-monorepo
39
- ```
35
+ ## Trusted publisher configuration
40
36
 
41
- GitHub secrets are write-only; a stored token in another repository cannot be read back and copied. Do not paste it into chat or commit it.
37
+ In the npm package settings, add a GitHub Actions trusted publisher with these exact values:
42
38
 
43
- 4. Merge the first release-please PR after CI passes. The release workflow creates the version tag and dispatches **Publish npm package**. It tests the release commit and automatically publishes the verified archive with provenance. There is no local `npm publish` or archive download step.
44
- 5. After that first publication succeeds, configure a GitHub Actions trusted publisher in the npm package settings:
39
+ | Field | Value |
40
+ | ----------------- | --------------------------- |
41
+ | Organization/user | `adamtrip-solutions` |
42
+ | Repository | `create-convex-monorepo` |
43
+ | Workflow filename | `publish.yml` |
44
+ | Environment | `npm` |
45
+ | Allowed action | Enable direct `npm publish` |
45
46
 
46
- | Field | Value |
47
- | ----------------- | ------------------------------------------------------- |
48
- | Organization/user | `adamtrip-solutions` |
49
- | Repository | `create-convex-monorepo` |
50
- | Workflow filename | `publish.yml` |
51
- | Environment | `npm` |
52
- | Allowed action | Enable direct `npm publish`, not only staged publishing |
47
+ The workflow requests a short-lived OIDC credential from GitHub. npm verifies the repository, workflow, and environment against this configuration. There is no stored npm token in the publishing step. [npm trusted publishing](https://docs.npmjs.com/trusted-publishers/).
53
48
 
54
- 6. Delete the `NPM_BOOTSTRAP_TOKEN` GitHub secret and revoke that npm token. Subsequent releases use OIDC without a stored npm credential. Once OIDC is configured, npm can require two-factor authentication and disallow token-based publishing.
55
-
56
- The bootstrap token is available only to the final publish step, after all validation jobs pass. Current npm documentation requires the package to exist before configuring its trusted publisher; the bootstrap token lets CI create it. [Token setup](https://docs.npmjs.com/creating-and-viewing-access-tokens/), [trusted publisher configuration](https://docs.npmjs.com/trusted-publishers/).
49
+ Verify the migration with a new release through the workflow. Retrying an already published version skips publication and does not test authentication. After an OIDC publication succeeds, delete the old GitHub bootstrap secret and revoke the corresponding npm token. If that token is shared with another package, migrate that package or replace its credential before revoking it.
57
50
 
58
51
  ## Automated release flow
59
52
 
@@ -75,4 +68,4 @@ gh workflow run publish.yml --repo adamtrip-solutions/create-convex-monorepo --r
75
68
 
76
69
  Select the tag in the Actions UI when triggering manually. Running from a branch is rejected. If npm already contains that exact tarball, the publish step skips it. A version with different contents fails explicitly; release a new version instead of moving tags or trying to overwrite npm history. If the workflow itself needs a code fix, include it in a new release because retries execute the workflow stored at the original tag.
77
70
 
78
- Normal changes do not need manual version edits. If the release PR stalls, inspect the workflow logs, token permissions and `autorelease` labels. Keep release-please's generated title and body intact. After the first successful npm publication, remove the prepublication notice in README.md.
71
+ Normal changes do not need manual version edits. If the release PR stalls, inspect the workflow logs, token permissions and `autorelease` labels. Keep release-please's generated title and body intact.
@@ -75,4 +75,16 @@ Fresh review checked the release dispatch, provenance commit identity, bootstrap
75
75
 
76
76
  Compared both the local checkout and GitHub workflow of `adamtrip-solutions/convex-cloudflare-email`, whose first npm release workflow succeeded. Its publish step supports `NPM_BOOTSTRAP_TOKEN` for initial package creation. This repository now supports the same token-to-OIDC transition and no longer gates publishing behind `NPM_PUBLISHING_ENABLED`. The token is passed only to the final npm publish step. No secret values were read or transferred from the reference repository, and this package has not been published.
77
77
 
78
- A later Windows run exposed an intermittent cancellation failure: setup rejected on the child's abort error before the process closed, leaving the backend directory locked during cleanup. The regression test reproduced the early return locally. Setup now waits for the child close event before settling, preserving the original error. The corrected test and all 98 repository tests passed, together with typecheck, lint, formatting, build, and package smoke checks. Hosted Windows confirmation of this fix is pending.
78
+ A later Windows run exposed an intermittent cancellation failure: setup rejected on the child's abort error before the process closed, leaving the backend directory locked during cleanup. The regression test reproduced the early return locally. Setup now waits for the child close event before settling, preserving the original error. The corrected test and all 98 repository tests passed, together with typecheck, lint, formatting, build, and package smoke checks. Hosted [CI run 34416758903](https://github.com/adamtrip-solutions/create-convex-monorepo/actions/runs/34416758903) confirmed the fix on Windows and passed every generated-project build.
79
+
80
+ ## First npm publication
81
+
82
+ GitHub Actions [run 34417030866](https://github.com/adamtrip-solutions/create-convex-monorepo/actions/runs/34417030866) published `create-convex-monorepo@0.2.0` from release commit `406b6dec137ba521a23ebc6d78965f0373e1ba98`. The release ran all 98 tests on Windows and Linux, package smoke checks, and the complete generated-project build matrix before publishing the tested tarball. The registry reports `latest` as `0.2.0` and includes a provenance attestation.
83
+
84
+ Registry checks ran outside the source checkout:
85
+
86
+ - `pnpm create convex-monorepo@0.2.0 smoke --apps next,expo --auth clerk --example none --no-install --no-git` generated the blank workspace successfully.
87
+ - `npx --yes create-convex-monorepo@0.2.0 --version` returned `0.2.0`, using both the default npm cache and a fresh cache.
88
+ - `npx --yes create-convex-monorepo@0.2.0 npx-smoke --apps next,vite,tanstack-start,expo --auth none --no-install --no-git` generated all four apps successfully.
89
+
90
+ An initial npx invocation from inside this package's own checkout failed to find the executable. The same registry command succeeded from the temporary directory. These post-publication smoke checks skipped generated dependency installation; the release workflow had already tested the generated builds. The bootstrap token authenticated the first publish. Token-free OIDC publishing still needs npm trusted-publisher configuration and verification.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-convex-monorepo",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Generate typed Convex monorepos with composable frontend and authentication adapters.",
5
5
  "license": "MIT",
6
6
  "type": "module",