Skip to content

v1 - #1165

Draft
yamcodes wants to merge 216 commits into
devfrom
v1
Draft

v1#1165
yamcodes wants to merge 216 commits into
devfrom
v1

Conversation

@yamcodes

@yamcodes yamcodes commented Jun 5, 2026

Copy link
Copy Markdown
Owner

@changeset-bot

changeset-bot Bot commented Jun 5, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 821ac20

The changes in this PR will be included in the next version bump.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

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

@pkg-pr-new

pkg-pr-new Bot commented Jun 5, 2026

Copy link
Copy Markdown

Open in StackBlitz

arkenv

npm i https://pkg.pr.new/arkenv@1165

@arkenv/build

npm i https://pkg.pr.new/@arkenv/build@1165

@arkenv/bun-plugin

npm i https://pkg.pr.new/@arkenv/bun-plugin@1165

@arkenv/core

npm i https://pkg.pr.new/@arkenv/core@1165

@arkenv/fumadocs-ui

npm i https://pkg.pr.new/@arkenv/fumadocs-ui@1165

@arkenv/nextjs

npm i https://pkg.pr.new/@arkenv/nextjs@1165

@arkenv/nuxt

npm i https://pkg.pr.new/@arkenv/nuxt@1165

@arkenv/standard

npm i https://pkg.pr.new/@arkenv/standard@1165

@arkenv/vite-plugin

npm i https://pkg.pr.new/@arkenv/vite-plugin@1165

commit: 5a2d91e

@yamcodes yamcodes mentioned this pull request Jun 6, 2026
yamcodes added 3 commits June 10, 2026 23:14
…pre-coercion model (#1193)

Fixes #1178

Unifies the coercion execution model between the default `arkenv` and
`arkenv/standard` entry points. Uses a pre-coercion flow that
shallow-copies the env object and applies coercion prior to validation
against the unmodified schema.

### Changes
- Replace ArkType's `.pipe()` coercion wrapper with pre-coercion flow
using `findCoercionPaths` + `applyCoercion` directly in
`packages/arkenv/src/arktype/index.ts`
- Delete the redundant wrapper file
`packages/arkenv/src/arktype/coercion/coerce.ts` and its re-export
- Update `coerce.test.ts` unit tests to use a local helper mapping the
pre-coercion flow
- Update coercion documentation, FAQ, Standard Schema docs, and ADR-0002
@github-actions github-actions Bot added docs Adds or changes documentation, or acts as documentation in and of itself arkenv Changes to the `arkenv` npm package. www Improvements or additions to arkenv.js.org tests This issue or PR is about adding, removing or changing tests labels Jun 12, 2026
@arkenv-bot

arkenv-bot Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

📦 Bundle Size Report

Package Size Limit Diff Status
@arkenv/bun-plugin 916 B 3.13 kB -63.9%
arkenv 2.02 kB 2.15 kB 0.0%
arkenv/standard 2.19 kB 2.25 kB 0.0%
arkenv/core 441 B 500 B 0.0%
@arkenv/vite-plugin 308 B 2.93 kB -84.8%
@arkenv/standard 3.46 kB 3.52 kB -
@arkenv/nextjs 1.21 kB 2.93 kB -8.3%
@arkenv/nextjs/shared 1.03 kB 1.46 kB -10.4%
@arkenv/nextjs/server 1.11 kB 1.95 kB -8.3%
@arkenv/nextjs/client 1.1 kB 1.95 kB -9.1%
@arkenv/nextjs/config 3.69 kB 3.91 kB +7.3%
@arkenv/core 2.6 kB 2.64 kB -

All size limits passed!

@arkenv-bot arkenv-bot Bot mentioned this pull request Jun 12, 2026
yamcodes and others added 9 commits July 22, 2026 01:18
)

## Summary
- Remove outdated “requires ArkType” callouts from Next/Nuxt/Vite/Bun
intros; present `@arkenv/core` vs `@arkenv/standard` as a choose-one
install.
- Lead Zod/Valibot pages with Standard Mode (`/standard`,
codegen/`standard/config` for Next, `standard/module` for Nuxt); shrink
mixing-with-ArkType to a short secondary section.
- Add dedicated “Do I need to install `arktype`?” FAQs (core + Next +
Nuxt), Nuxt peer-engine FAQ parity, delete leftover
`nuxt/layouts/simple.mdx` (redirect already exists), and lightly update
package READMEs.

## Why `v1`
Documents the `@arkenv/core` / `@arkenv/standard` packaging split. `dev`
still uses `arkenv` / `arkenv/standard`, so this belongs on `v1` only.

## Test plan
- [ ] Spot-check Next/Nuxt intro + validators pages for Standard Mode
first, no requires-ArkType callout
- [ ] Confirm FAQs answer “Do I need to install arktype?” and link
correctly
- [ ] Confirm `/docs/nuxt/layouts/simple` still redirects to flat
- [ ] Sanity-check Vite/Bun intros still show both install paths


Made with [Cursor](https://cursor.com)

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
…1422)

Fixes #1414

## Summary
- Register `#arkenv/shared-schema` alias in `@arkenv/nuxt/module` for
strict layout (alongside existing `#arkenv/client-env`)
- Auto-extend `SharedSchema` from `env/internal/shared.ts` in
`@arkenv/nuxt/client` and `@arkenv/nuxt/standard/client` when `extends`
is omitted
- Keep explicit `extends` (including `[]` and property presence) as an
opt-out; fail clearly when shared file or `SharedSchema` export is
missing
- Simplify Nuxt strict CLI scaffolds, docs, playground, and example
client entries

## Test plan
- [x] `pnpm run typecheck`
- [x] `pnpm run test`
- [x] `pnpm run fix`
- [ ] Verify `apps/playgrounds/nuxt-strict` builds with simplified
`env/client.ts`
- [ ] Confirm manual `extends: [SharedSchema]` still works as an opt-out


Made with [Cursor](https://cursor.com)

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
feat(v1): Guard that integration /standard entries never pull arktype
## Summary
- Forward-ports [#1464](#1464)
onto `v1`: triage skill records ArkEnv rejects in `docs/adr/` (or a
closing comment), never a root `.out-of-scope/` folder.
- Same paths on both branches (`skills/triage/*`); no package remapping
or changeset.

## Source
- Dev PR: #1464
- Merge commit: `874b95a8`

## Test plan
- [x] Cherry-pick applied cleanly on `origin/v1`
- [ ] Spot-check `skills/triage/SKILL.md` and `OUT-OF-SCOPE.md` for the
ArkEnv override
- [ ] No need for package typecheck/tests (skills markdown only)


Made with [Cursor](https://cursor.com)

Co-authored-by: Cursor <cursoragent@cursor.com>
Fixes #1329

## Summary
- Add dual-mode `@arkenv/bun-plugin`: `arkenv()` / zero-config default
rewrites `env.ts` in browser bundles (inlined coerced `BUN_PUBLIC_*`
literals + server-key guards); `arkenv(schema)` keeps SPA `process.env`
rewriting
- Server/`Bun.serve` continues to execute `env.ts` as-is for boot-time
validation against the real environment (plugin is `target: "browser"`)
- Extend `with-bun-react` with a server-only `DATABASE_URL` and shared
`import { env } from "./env"` on client and server

## Test plan
- [ ] `pnpm --filter @arkenv/bun-plugin test` passes (helpers +
transform onLoad + SPA regression)
- [ ] Client `Bun.build` bundle contains inlined literals / guard stub
and no validator imports
- [ ] `bun run` / `Bun.serve` fails fast when required env is missing
- [ ] SPA `arkenv(schema)` + `ProcessEnvAugmented` path still works


Made with [Cursor](https://cursor.com)

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
## Summary
- Remove embedded ArkType/Zod starters from Bun hybrid missing-schema
errors (short message + `arkenv init` hint) for parity with
Vite/Next/Nuxt config errors
- When the Nuxt module is registered but no schema is found, emit a
build warning and skip setup instead of failing silently
- Closes #1465 as superseded (we are not adding Vite starters; walking
back Bun instead)

## Test plan
- [x] `pnpm exec vitest run packages/nuxt/src/module.test.ts
packages/bun-plugin/src --run`
- [x] `pnpm --filter @arkenv/bun-plugin --filter @arkenv/nuxt run
typecheck`
- [ ] Confirm Bun hybrid missing-schema error has no code fence / Zod /
ArkType sample
- [ ] Confirm Nuxt with module registered and no `env.ts` warns once and
still builds


Made with [Cursor](https://cursor.com)

Co-authored-by: Cursor <cursoragent@cursor.com>
…lient env (#1458)

Fixes #1424

## Summary
- Add a Nitro boot gate (registered by `@arkenv/nuxt/module`) that
validates/coerces schema keys into `runtimeConfig` (including `public`)
after `NUXT_*` / `NUXT_PUBLIC_*` string overrides
- Make server and client `arkenv()` entries thin readers of that coerced
payload; client package entries no longer import `@arkenv/core` /
`arktype`
- Keep build-time `validate: true` as a core call via schema capture
(not thin `arkenv()` side effects)
- Update docs/example to show coerced public number/boolean values

## Test plan
- [x] `pnpm --filter @arkenv/nuxt typecheck`
- [x] `pnpm --filter @arkenv/nuxt exec vitest run` (49 tests, including
boot-gate coercion + client bundle isolation)
- [ ] Override `NUXT_PUBLIC_PORT` at Nitro boot in `examples/with-nuxt`
and confirm coerced `number` on server and client
- [ ] Confirm invalid `NUXT_PUBLIC_*` overrides fail fast on the server
- [ ] Confirm server-only keys remain unreadable on the client


Made with [Cursor](https://cursor.com)

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Fixes #1452

Forward-port hosting presets Phase 4 from #1450 onto `v1`: Cloudflare,
Railway, Render, and Fly.io presets for `arkenv init` / `arkenv add
host`, with matching docs, tests, and an `arkenv` changeset.


Made with [Cursor](https://cursor.com)

Co-authored-by: Cursor <cursoragent@cursor.com>
Preserve the warn-and-skip contract so no Vite/Nitro hooks register without a schema.

Co-authored-by: Cursor <cursoragent@cursor.com>
@arkenv-bot arkenv-bot Bot mentioned this pull request Jul 22, 2026
yamcodes and others added 20 commits July 23, 2026 01:03
Fixes #1470

Forward-port of #1472 onto `v1`.

## Summary
- Replace Nuxt **warn-and-skip** (from #1468) with **throw** when no
schema is found
- Keep Bun / Vite / Next throw behavior unchanged
- Update module tests (including the warn-specific case from #1468)
- Changeset: `@arkenv/nuxt` major (**BREAKING CHANGE**)

## Test plan
- [x] `pnpm run typecheck`
- [x] `pnpm run test -- --run` (1062 passed)
- [x] `pnpm run fix`


Made with [Cursor](https://cursor.com)

Co-authored-by: Cursor <cursoragent@cursor.com>
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/nuxt@1.0.0-alpha.10

### Major Changes

- #### Throw when the Nuxt module cannot resolve an env schema
_[`#1473`](#1473)
[`0763a92`](0763a92)
[@yamcodes](https://github.com/yamcodes)_

**BREAKING CHANGE**: The `@arkenv/nuxt` module now throws when no schema
file is found (auto-discovery or `schemaPath`), instead of warning and
skipping setup. Create an `env.ts` (or `src/env.ts`) schema, or set
`arkenv.schemaPath` in `nuxt.config.ts`.

  ```ts
  // nuxt.config.ts
  export default defineNuxtConfig({
    modules: ["@arkenv/nuxt/module"],
    arkenv: {
schemaPath: "./env.ts", // required if auto-discovery cannot find a
schema
    },
  });
  ```

### Minor Changes

- #### Auto-extend shared schema in Nuxt strict-layout client entry
_[`#1422`](#1422)
[`b1d8bad`](b1d8bad)
[@yamcodes](https://github.com/yamcodes)_

**`@arkenv/nuxt`:** When the module runs in strict layout, omitting
`extends` in `env/client.ts` auto-merges `SharedSchema` from
`env/internal/shared.ts` via `#arkenv/shared-schema`. Applies to both
`@arkenv/nuxt/client` and `@arkenv/nuxt/standard/client`. The server
entry continues to auto-merge the composed client env.

**`arkenv` (CLI):** The Nuxt strict scaffold now emits that simplified
client template (no manual `SharedSchema` import or `extends` block).
Next.js scaffolds remain unchanged.

  Usage:

  ```ts
  import arkenv from "@arkenv/nuxt/client";

  export const env = arkenv({
    NUXT_PUBLIC_API_URL: "string",
  });
  ```

Auto-merge only runs when the `extends` key is omitted. Any explicit
`extends` - including `extends: []` or a custom list - is used as-is and
opts out of auto-merge. Strict layout still requires
`env/internal/shared.ts` with a `SharedSchema` export — that schema may
be empty (`type({})`) when you have no shared variables. A missing file
or unusable export fails with a clear diagnostic (rather than silently
treating shared as empty).

### Patch Changes

- #### Coerce Nuxt public env overrides instead of leaving them as
strings _[`#1458`](#1458)
[`3667b7e`](3667b7e)
[@yamcodes](https://github.com/yamcodes)_

**Bug:** With a numeric (or boolean) public schema key, setting a
deploy-time override made Nitro put a _string_ into
`runtimeConfig.public`. That string won, so `env` lied about the type on
server and client.

  ```diff
    // env.ts
    export const env = arkenv({
      NUXT_PUBLIC_PORT: "number",
    });

    // Deploy / Nitro boot: NUXT_PUBLIC_PORT=4000
  - env.NUXT_PUBLIC_PORT; // "4000" (string) — schema said number
  + env.NUXT_PUBLIC_PORT; // 4000 (number) — coerced after the override
  ```

Same import surface. As a side effect, `@arkenv/nuxt` /
`@arkenv/nuxt/client` no longer ship the validator into the browser
bundle.

- Skip all Nuxt module setup (including boot-gate hooks) when no schema
file is found, matching the warn-and-bail contract.
_[`#1165`](#1165)
[`882c0ce`](882c0ce)
[@yamcodes](https://github.com/yamcodes)_
- #### Drop embedded env.ts starters and warn when the Nuxt module finds
no schema _[`#1468`](#1468)
[`0150e73`](0150e73)
[@yamcodes](https://github.com/yamcodes)_

Keep missing-schema guidance short and host-parity consistent: Bun no
longer embeds ArkType/Zod starters in the hybrid discovery error (prefer
`arkenv init` / docs). When the Nuxt module is registered but no schema
file is found, log a build warning and skip setup instead of failing
silently.
## arkenv@1.0.0-alpha.10

### Minor Changes

- #### Add hosting presets for Cloudflare, Railway, Render, and Fly.io
_[`#1469`](#1469)
[`a64bd57`](a64bd57)
[@yamcodes](https://github.com/yamcodes)_

Add hosting presets for Cloudflare, Railway, Render, and Fly.io to the
interactive prompt selections in both `arkenv init` and `arkenv add
host`.

  Usage:

  ```bash
  npx arkenv@latest add host cloudflare
  ```

  or

  ```bash
  npx arkenv@latest init --host-preset cloudflare
  ```

- #### Support `arkenv add host` for strict multi-file layouts
_[`#1434`](#1434)
[`a3d93be`](a3d93be)
[@yamcodes](https://github.com/yamcodes)_

Support `arkenv add host [provider]` in projects with strict multi-file
layouts (`client.ts` and `server.ts`). Automatically partition preset
variables into client-prefixed keys for `client.ts` and server-only keys
for `server.ts`. Align help text and docs so `add host` is not described
as flat-`env.ts`-only.

  Usage:

  ```bash
  npx arkenv@latest add host [provider]
  ```

- #### Auto-extend shared schema in Nuxt strict-layout client entry
_[`#1422`](#1422)
[`b1d8bad`](b1d8bad)
[@yamcodes](https://github.com/yamcodes)_

**`@arkenv/nuxt`:** When the module runs in strict layout, omitting
`extends` in `env/client.ts` auto-merges `SharedSchema` from
`env/internal/shared.ts` via `#arkenv/shared-schema`. Applies to both
`@arkenv/nuxt/client` and `@arkenv/nuxt/standard/client`. The server
entry continues to auto-merge the composed client env.

**`arkenv` (CLI):** The Nuxt strict scaffold now emits that simplified
client template (no manual `SharedSchema` import or `extends` block).
Next.js scaffolds remain unchanged.

  Usage:

  ```ts
  import arkenv from "@arkenv/nuxt/client";

  export const env = arkenv({
    NUXT_PUBLIC_API_URL: "string",
  });
  ```

Auto-merge only runs when the `extends` key is omitted. Any explicit
`extends` - including `extends: []` or a custom list - is used as-is and
opts out of auto-merge. Strict layout still requires
`env/internal/shared.ts` with a `SharedSchema` export — that schema may
be empty (`type({})`) when you have no shared variables. A missing file
or unusable export fails with a clear diagnostic (rather than silently
treating shared as empty).
## @arkenv/bun-plugin@1.0.0-alpha.7

### Minor Changes

- #### Add `env.ts` transform for Bun fullstack apps
_[`#1459`](#1459)
[`5fc1c6a`](5fc1c6a)
[@yamcodes](https://github.com/yamcodes)_

Let the Bun plugin discover your `env.ts` and expose a shared `env`
object that works in both client and server code. On the client
(`Bun.build` / `[serve.static]`), public (`BUN_PUBLIC_*`) values are
inlined at build time and server-only keys throw if read; on the server
(`bun run` / `Bun.serve`), `env.ts` still runs normally and validates
against the real environment at boot. The plugin does not rewrite your
`env.ts` file on disk.

  Works with `@arkenv/bun-plugin` and `@arkenv/bun-plugin/standard`.

  Usage:

  ```ts
  // bunfig.toml — zero-config browser transform
  // [serve.static]
  // plugins = ["@arkenv/bun-plugin"]

  // or explicitly in Bun.build:
  import arkenv from "@arkenv/bun-plugin";

  await Bun.build({
    entrypoints: ["./src/index.html"],
    target: "browser",
    plugins: [arkenv], // finds src/env.ts or env.ts
// or: arkenv({ schemaPath: "src/env.ts", clientPrefix: "BUN_PUBLIC_" })
  });
  ```

  ```ts
  // src/env.ts
  import arkenv from "@arkenv/core";

  export const env = arkenv({
    DATABASE_URL: "string",
    BUN_PUBLIC_API_URL: "string",
  });
  ```

  ```ts
  import { env } from "./env";

  env.BUN_PUBLIC_API_URL; // available on client and server
  env.DATABASE_URL; // server only — throws if read in the browser
  ```

Passing a schema to `arkenv(schema)` (the previous `process.env` rewrite
API) continues to work unchanged as SPA mode.

### Patch Changes

- #### Clarify Standard Mode missing-schema guidance with a Zod example
_[`#1457`](#1457)
[`6cca0cf`](6cca0cf)
[@yamcodes](https://github.com/yamcodes)_

When `@arkenv/bun-plugin/standard` cannot find `env.ts`, show an
illustrative Zod starter (any Standard Schema validator works — Zod is
just the most common):

  ```ts
  import arkenv from "@arkenv/standard";
  import { z } from "zod";

  export default arkenv({
    BUN_PUBLIC_API_URL: z.string(),
    BUN_PUBLIC_DEBUG: z.enum(["true", "false"]),
  });
  ```

- #### Drop embedded env.ts starters and warn when the Nuxt module finds
no schema _[`#1468`](#1468)
[`0150e73`](0150e73)
[@yamcodes](https://github.com/yamcodes)_

Keep missing-schema guidance short and host-parity consistent: Bun no
longer embeds ArkType/Zod starters in the hybrid discovery error (prefer
`arkenv init` / docs). When the Nuxt module is registered but no schema
file is found, log a build warning and skip setup instead of failing
silently.
## @arkenv/vite-plugin@1.0.0-alpha.7

### Minor Changes

- #### Add `env.ts` transform for Vite fullstack apps
_[`#1423`](#1423)
[`e1cf6db`](e1cf6db)
[@yamcodes](https://github.com/yamcodes)_

Let the Vite plugin discover your `env.ts` and expose a shared `env`
object that works in both client and server code. On the client, public
(`VITE_*`) values are inlined at build time and server-only keys throw
if read; on the server/SSR, `env.ts` still runs normally and validates
against the real environment at boot. The plugin does not rewrite your
`env.ts` file on disk.

  Works with `@arkenv/vite-plugin` and `@arkenv/vite-plugin/standard`.

  Usage:

  ```ts
  // vite.config.ts
  import arkenv from "@arkenv/vite-plugin";

  export default {
    plugins: [arkenv()], // finds src/env.ts or env.ts
    // or: arkenv({ schemaPath: "src/env.ts", clientPrefix: "VITE_" })
  };
  ```

  ```ts
  // src/env.ts
  import arkenv from "@arkenv/core";

  export const env = arkenv({
    DATABASE_URL: "string",
    VITE_API_URL: "string",
  });
  ```

  ```ts
  import { env } from "./env";

  env.VITE_API_URL; // available on client and server
  env.DATABASE_URL; // server only — throws if read in the browser
  ```

Passing a schema to `arkenv(schema)` (the previous `import.meta.env`
define API) continues to work unchanged.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
## Summary
- Ports [#1481](#1481) (`dev`) to
`v1`: `pull_request_target` for labeled PR previews so fork PRs receive
Vercel secrets.
- Keeps secret hygiene (checkout PR HEAD with `persist-credentials:
false`; inject `VERCEL_*` only on Vercel CLI steps).
- Updates CONTRIBUTING preview section to match; no package/changeset
changes (workflows + docs only).

## Test plan
- [ ] Same-repo / fork PRs targeting `v1` with `preview` get a green
Actions Deploy-Preview after this merges
- [ ] Unlabeled fork PRs do not deploy


Made with [Cursor](https://cursor.com)

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
chore: verify v1 branch domain deploy (#1460)
ci: forward-port Vercel branch-domain alias wiring to v1 (#1460)
## Summary
- Forward-port of [#1490](#1490)
(`dev`) onto `v1`
- Centralize missing-schema text in `formatMissingSchemaError`
(`@arkenv/build`)
- Wire **Bun, Vite, Next, and Nuxt** through the shared helper (Vite
included on `v1` because it has a discovery miss path; `dev` Vite does
not)
- Mock registry fetch in CLI init tests (same flake fix as #1490)

## Test plan
- [x] `pnpm exec vitest run packages/build
packages/bun-plugin/src/env-module.test.ts
packages/vite-plugin/src/env-module.test.ts
packages/nuxt/src/module.test.ts
packages/arkenv/src/cli/commands/init.test.ts --run`
- [x] `pnpm run typecheck`
- [x] `pnpm run fix`
- [x] `pnpm run test -- --run` (1066 passed)


Made with [Cursor](https://cursor.com)

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
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@1.0.0-alpha.11

### Patch Changes

- #### Split `--help` options into Global and `init` sections
_[`#1487`](#1487)
[`f86887c`](f86887c)
[@yamcodes](https://github.com/yamcodes)_

List shared flags under **Global options** and scaffolding flags under
**init options**, matching the multi-command `/docs/cli` taxonomy.

  ```bash
  npx arkenv@alpha --help
  ```

  ```text
  Usage:
    arkenv init [project-name]    ...
    arkenv add host [provider]    ...

  Global options:
    --yes, -y      Skip prompts and use defaults ...
    --quiet, -q    Quiet mode ...
    --json, -j     Output structured JSON ...
    --agent        Enable non-interactive, machine-readable mode ...
    --help, -h     Show this help message

  init options:
    --example                     Specify an example name ...
    --force, -f                   Bypass checks and force scaffolding
--no-codegen Disable automatic env.gen.ts code generation ...
    --host-preset, -H <preset>    Specify a hosting provider preset ...
  ```
## @arkenv/build@0.0.2-alpha.2

### Patch Changes

- #### Make missing-schema errors short and actionable across hosts
_[`#1495`](#1495)
[`3785c6b`](3785c6b)
[@yamcodes](https://github.com/yamcodes)_

When a host cannot find an env schema, throw a consistent message that
names the expected path / `schemaPath` and points to `npx arkenv@latest
init`, without embedding a starter `env.ts` module.

  Example:

  ```text
[ArkEnv] Could not find schema file at src/env.ts or env.ts. Please
specify 'schemaPath' in ArkEnv options (or run `npx arkenv@latest
init`).
  ```

- #### Make `env/internal/shared.ts` optional in strict layout
_[`#1505`](#1505)
[`9bfe1c4`](9bfe1c4)
[@yamcodes](https://github.com/yamcodes)_

Strict layout now works with just `client.ts` and `server.ts`. Omit
`internal/shared.ts` when you have nothing to share — shared keys are
treated as empty.

  ```ts
  // env/client.ts + env/server.ts alone is enough
  export default withArkEnv(nextConfig, {
    layout: "strict",
  });
  ```

  The CLI still scaffolds `shared.ts` by default for convenience.
## @arkenv/bun-plugin@1.0.0-alpha.8

### Patch Changes

- #### Make missing-schema errors short and actionable across hosts
_[`#1495`](#1495)
[`3785c6b`](3785c6b)
[@yamcodes](https://github.com/yamcodes)_

When a host cannot find an env schema, throw a consistent message that
names the expected path / `schemaPath` and points to `npx arkenv@latest
init`, without embedding a starter `env.ts` module.

  Example:

  ```text
[ArkEnv] Could not find schema file at src/env.ts or env.ts. Please
specify 'schemaPath' in ArkEnv options (or run `npx arkenv@latest
init`).
  ```

<details><summary>Updated 1 dependency</summary>

<small>


[`3785c6b`](3785c6b)
[`9bfe1c4`](9bfe1c4)

</small>

- `@arkenv/build@0.0.2-alpha.2`

</details>
## @arkenv/nextjs@1.0.0-alpha.9

### Patch Changes

- #### Align missing-schema errors with short, actionable host guidance
_[`#1488`](#1488)
[`9d5bdbb`](9d5bdbb)
[@yamcodes](https://github.com/yamcodes)_

Point missing-schema errors at checked paths / `schemaPath` and `arkenv
init`, matching the Bun plugin style, without embedding starter `env.ts`
modules.

- #### Make missing-schema errors short and actionable across hosts
_[`#1495`](#1495)
[`3785c6b`](3785c6b)
[@yamcodes](https://github.com/yamcodes)_

When a host cannot find an env schema, throw a consistent message that
names the expected path / `schemaPath` and points to `npx arkenv@latest
init`, without embedding a starter `env.ts` module.

  Example:

  ```text
[ArkEnv] Could not find schema file at src/env.ts or env.ts. Please
specify 'schemaPath' in ArkEnv options (or run `npx arkenv@latest
init`).
  ```

- #### Make `env/internal/shared.ts` optional in strict layout
_[`#1505`](#1505)
[`9bfe1c4`](9bfe1c4)
[@yamcodes](https://github.com/yamcodes)_

Strict layout now works with just `client.ts` and `server.ts`. Omit
`internal/shared.ts` when you have nothing to share — shared keys are
treated as empty.

  ```ts
  // env/client.ts + env/server.ts alone is enough
  export default withArkEnv(nextConfig, {
    layout: "strict",
  });
  ```

  The CLI still scaffolds `shared.ts` by default for convenience.

<details><summary>Updated 1 dependency</summary>

<small>


[`3785c6b`](3785c6b)
[`9bfe1c4`](9bfe1c4)

</small>

- `@arkenv/build@0.0.2-alpha.2`

</details>
## @arkenv/nuxt@1.0.0-alpha.11

### Patch Changes

- #### Align missing-schema errors with short, actionable host guidance
_[`#1488`](#1488)
[`9d5bdbb`](9d5bdbb)
[@yamcodes](https://github.com/yamcodes)_

Point missing-schema errors at checked paths / `schemaPath` and `arkenv
init`, matching the Bun plugin style, without embedding starter `env.ts`
modules.

- #### Make missing-schema errors short and actionable across hosts
_[`#1495`](#1495)
[`3785c6b`](3785c6b)
[@yamcodes](https://github.com/yamcodes)_

When a host cannot find an env schema, throw a consistent message that
names the expected path / `schemaPath` and points to `npx arkenv@latest
init`, without embedding a starter `env.ts` module.

  Example:

  ```text
[ArkEnv] Could not find schema file at src/env.ts or env.ts. Please
specify 'schemaPath' in ArkEnv options (or run `npx arkenv@latest
init`).
  ```

- #### Make `env/internal/shared.ts` optional in strict layout
_[`#1505`](#1505)
[`9bfe1c4`](9bfe1c4)
[@yamcodes](https://github.com/yamcodes)_

Strict layout now works with just `client.ts` and `server.ts`. Omit
`internal/shared.ts` when you have nothing to share — shared keys are
treated as empty.

  ```ts
  // env/client.ts + env/server.ts alone is enough
  export default withArkEnv(nextConfig, {
    layout: "strict",
  });
  ```

  The CLI still scaffolds `shared.ts` by default for convenience.

<details><summary>Updated 1 dependency</summary>

<small>


[`3785c6b`](3785c6b)
[`9bfe1c4`](9bfe1c4)

</small>

- `@arkenv/build@0.0.2-alpha.2`

</details>
## @arkenv/vite-plugin@1.0.0-alpha.8

### Patch Changes

- #### Align missing-schema errors with short, actionable host guidance
_[`#1488`](#1488)
[`9d5bdbb`](9d5bdbb)
[@yamcodes](https://github.com/yamcodes)_

Point missing-schema errors at checked paths / `schemaPath` and `arkenv
init`, matching the Bun plugin style, without embedding starter `env.ts`
modules.

- #### Make missing-schema errors short and actionable across hosts
_[`#1495`](#1495)
[`3785c6b`](3785c6b)
[@yamcodes](https://github.com/yamcodes)_

When a host cannot find an env schema, throw a consistent message that
names the expected path / `schemaPath` and points to `npx arkenv@latest
init`, without embedding a starter `env.ts` module.

  Example:

  ```text
[ArkEnv] Could not find schema file at src/env.ts or env.ts. Please
specify 'schemaPath' in ArkEnv options (or run `npx arkenv@latest
init`).
  ```

<details><summary>Updated 1 dependency</summary>

<small>


[`3785c6b`](3785c6b)
[`9bfe1c4`](9bfe1c4)

</small>

- `@arkenv/build@0.0.2-alpha.2`

</details>

---------

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>
## Summary
- Redesign the arkenv.js.org landing page into an Aurora workbench
layout focused on agents
- Add Command / Prompt install switcher, Geist-only type stack (Geist ·
Geist Mono · Geist Pixel Grid), and a quieter product demo frame
- Update hero copy, floating pill nav, and compatibility rails for the
new structure

## Test plan
- [ ] Open `/` and confirm hero copy, summary sizing, and Pixel Grid
styling on “built for agents”
- [ ] Toggle Command / Prompt tabs; copy both and verify clipboard +
toast
- [ ] Check floating nav (icon-only logo), mobile layout at 320–768px,
and theme toggle
- [ ] Confirm docs routes still render with Geist fonts and are
unaffected in content


Made with [Cursor](https://cursor.com)

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

@arkenv/bun-plugin Issues or Pull Requests involving the Bun plugin for ArkEnv @arkenv/cli Issues or Pull Requests involving the ArkEnv CLI @arkenv/fumadocs-ui Issues or Pull Requests involving the ArkEnv Fumadocs UI theme @arkenv/nextjs Issues or Pull Requests involving the Next.js integration for ArkEnv @arkenv/nuxt Issues or Pull Requests involving the Nuxt integration for ArkEnv @arkenv/vite-plugin Issues or Pull Requests involving the Vite plugin for ArkEnv arkenv Changes to the `arkenv` npm package. docs Adds or changes documentation, or acts as documentation in and of itself example Issues or Pull Requests concerning at least one ArkEnv example. (Found in the `examples/` directory) github actions Pull requests that update GitHub Actions code playground Issues or Pull Requests concerning a playground. (Found in the `apps/playgrounds/` directory) tests This issue or PR is about adding, removing or changing tests www Improvements or additions to arkenv.js.org

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant