(v1) Internal vs. Published Packages Strategy for Build-time and Runtime Code - #1202
Conversation
🦋 Changeset detectedLatest commit: 57b30a5 The changes in this PR will be included in the next version bump. This PR includes changesets to release 4 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
f329ce9 to
8e35d3c
Compare
arkenv
@arkenv/build
@arkenv/bun-plugin
@arkenv/cli
@arkenv/fumadocs-ui
@arkenv/nextjs
@arkenv/nuxt
@arkenv/vite-plugin
commit: |
…erate the commit message for you.
… arkenv as a peer dependency
…tion to v1+ SemVer rules
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes — establishes the distribution and versioning strategy for ArkEnv v1 by moving arkenv to peer dependencies in all framework plugins, documenting 3 architecture decisions, and updating the changeset skill for standard SemVer.
- Lock
arkenvand@arkenv/cliin version lockstep via changesetfixedconfig per ADR 0011 — ensures CLI codegen output stays compatible with core engine internals. - Move
arkenvtopeerDependenciesin all 4 framework plugins (@arkenv/nextjs,@arkenv/nuxt,@arkenv/vite-plugin,@arkenv/bun-plugin) — usesworkspace:^for published caret range, preventing duplicate engine instances that break ArkType structural typing. - Add
arkenvtodevDependencieswithworkspace:*in all plugins — maintains local monorepo development while keeping consumers lean. - Add ADR 0007 documenting the asymmetric packaging strategy — split engines into separate packages (
@arkenv/core/@arkenv/standard) but keep plugins as single packages with subpath exports. - Add ADR 0010 documenting the inlined internal packages strategy —
@repo/*packages bundled at publish time viatsdownto avoid public utility packages and cascading version bumps. - Add ADR 0011 documenting the hybrid versioning model — fixed inner circle (
arkenv+@arkenv/cli), independent outer ring (framework plugins + build utilities), withworkspace:*/workspace:^/workspace:~protocol guidance. - Update changeset skill for v1+ standard SemVer —
majorfor breaking changes,minorfor new features,patchfor fixes. - Fix "Arkenv" → "ArkEnv" typo in historic CLI changelog entries.
DeepSeek Pro (free via Pullfrog for OSS) | 𝕏
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
ℹ️ The ADR rewrite is clean but left a few stale references to the old hybrid model in the
ContextandConsequencessections — see inline comments.
Reviewed changes — renames ADR 0011 from "Hybrid Versioning Strategy" to "Independent Versioning Strategy" and removes the fixed lockstep between arkenv and @arkenv/cli from the changeset config.
- Drop
fixedversion lockstep betweenarkenvand@arkenv/cliin.changeset/config.json— the CLI is now treated as an independent package that versions on its own schedule. - Rewrite ADR 0011 Decision section to fully independent versioning — removes the "Inner Circle (Fixed / Locked)" section, adds
@arkenv/clito the independent outer ring, and explains the CLI doesn't depend on deeparkenvinternals.
DeepSeek Pro (free via Pullfrog for OSS) | 𝕏
|
Addressed all review comments:
|
… and consequences
…er dependencies with hardcoded range
There was a problem hiding this comment.
ℹ️ No critical issues — one minor suggestion inline.
Reviewed changes — switches peer dependencies from workspace:^ to the hardcoded ^1.0.0 range (Wide Peer strategy) across all 4 framework plugins and updates ADR 0007 documentation to match.
- Switch peer deps to hardcoded
^1.0.0in@arkenv/nextjs,@arkenv/nuxt,@arkenv/vite-plugin, and@arkenv/bun-plugin— solves the Artificial Floor problem whereworkspace:^would pin published plugins to the monorepo's currentarkenvversion. - Update ADR 0007 table and rationale to document the Wide Peer strategy — explains why hardcoding the minimum version decouples plugin releases from core engine version churn.
DeepSeek Pro (free via Pullfrog for OSS) | 𝕏
…ement-standard-mode-packaging-strategy # Conflicts: # apps/www/content/docs/nextjs/layouts/simple.mdx
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes — merges the v1 base branch into the feature branch, bringing in upstream changes from other PRs that have landed on v1 since the branch was last synced.
- Merged
v1branch — brings in upstream renames (createEnv→arkenv), version bumps to1.0.0-alpha.1across packages, changelog entries, coercion model unification, documentation updates, and agent context file updates. All merge cleanly with no conflicts against this PR's changes. - Removed stale changesets —
.changeset/init-v1.md,pre.json,rename-create-env-to-arkenv.md, andunify-coercion.mdwere cleaned up by the upstream v1 branch.
DeepSeek Pro (free via Pullfrog for OSS) | 𝕏
There was a problem hiding this comment.
✅ All prior feedback addressed — no new issues found.
Reviewed changes — one commit addressing the open review thread from the prior Pullfrog review.
- Fixed changeset version range —
.changeset/epg3nspi.mdupdated from^1.0.0-alpha.1to^1.0.0to match the actualpeerDependenciesrange in all 4 pluginpackage.jsonfiles. - Fixed
AutoTypeTablepath —options.mdxupdated fromcreate-env.tstoarkenv.tsto match the upstream file rename.
DeepSeek Pro (free via Pullfrog for OSS) | 𝕏
This PR was opened by the [Changesets release](https://github.com/changesets/action) 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 v1, this PR will be updated.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ `v1` is currently in **pre mode** so this branch has prereleases rather than normal releases. If you want to exit prereleases, run `changeset pre exit` on `v1`.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ # Releases ## @arkenv/bun-plugin@1.0.0-alpha.3 ### Major Changes - #### Move `arkenv` to peer dependencies in framework plugins _[`#1202`](#1202) [`763270c`](763270c) [@yamcodes](https://github.com/yamcodes)_ Framework plugins no longer declare `arkenv` as a regular dependency. `arkenv` is now declared as a `peerDependency` with a caret range (`^1.0.0`), ensuring a single shared instance across all plugins and the host application. This change prevents duplicate instances of `arkenv` in `node_modules`, which could break ArkType structural typing and schema validation at runtime. Plugins affected: - `@arkenv/nextjs` - `@arkenv/nuxt` - `@arkenv/vite-plugin` - `@arkenv/bun-plugin` Before: ```bash npm install @arkenv/nextjs ``` After: ```bash npm install arkenv @arkenv/nextjs ``` **BREAKING CHANGE:** Users must now install `arkenv` alongside the plugin. Previously, `arkenv` was automatically pulled in as a regular dependency. ## @arkenv/nextjs@1.0.0-alpha.3 ### Major Changes - #### Move `arkenv` to peer dependencies in framework plugins _[`#1202`](#1202) [`763270c`](763270c) [@yamcodes](https://github.com/yamcodes)_ Framework plugins no longer declare `arkenv` as a regular dependency. `arkenv` is now declared as a `peerDependency` with a caret range (`^1.0.0`), ensuring a single shared instance across all plugins and the host application. This change prevents duplicate instances of `arkenv` in `node_modules`, which could break ArkType structural typing and schema validation at runtime. Plugins affected: - `@arkenv/nextjs` - `@arkenv/nuxt` - `@arkenv/vite-plugin` - `@arkenv/bun-plugin` Before: ```bash npm install @arkenv/nextjs ``` After: ```bash npm install arkenv @arkenv/nextjs ``` **BREAKING CHANGE:** Users must now install `arkenv` alongside the plugin. Previously, `arkenv` was automatically pulled in as a regular dependency. ## @arkenv/nuxt@1.0.0-alpha.1 ### Major Changes - #### Move `arkenv` to peer dependencies in framework plugins _[`#1202`](#1202) [`763270c`](763270c) [@yamcodes](https://github.com/yamcodes)_ Framework plugins no longer declare `arkenv` as a regular dependency. `arkenv` is now declared as a `peerDependency` with a caret range (`^1.0.0`), ensuring a single shared instance across all plugins and the host application. This change prevents duplicate instances of `arkenv` in `node_modules`, which could break ArkType structural typing and schema validation at runtime. Plugins affected: - `@arkenv/nextjs` - `@arkenv/nuxt` - `@arkenv/vite-plugin` - `@arkenv/bun-plugin` Before: ```bash npm install @arkenv/nextjs ``` After: ```bash npm install arkenv @arkenv/nextjs ``` **BREAKING CHANGE:** Users must now install `arkenv` alongside the plugin. Previously, `arkenv` was automatically pulled in as a regular dependency. ## @arkenv/vite-plugin@1.0.0-alpha.3 ### Major Changes - #### Move `arkenv` to peer dependencies in framework plugins _[`#1202`](#1202) [`763270c`](763270c) [@yamcodes](https://github.com/yamcodes)_ Framework plugins no longer declare `arkenv` as a regular dependency. `arkenv` is now declared as a `peerDependency` with a caret range (`^1.0.0`), ensuring a single shared instance across all plugins and the host application. This change prevents duplicate instances of `arkenv` in `node_modules`, which could break ArkType structural typing and schema validation at runtime. Plugins affected: - `@arkenv/nextjs` - `@arkenv/nuxt` - `@arkenv/vite-plugin` - `@arkenv/bun-plugin` Before: ```bash npm install @arkenv/nextjs ``` After: ```bash npm install arkenv @arkenv/nextjs ``` **BREAKING CHANGE:** Users must now install `arkenv` alongside the plugin. Previously, `arkenv` was automatically pulled in as a regular dependency. --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

Closes #1197