Skip to content
Closed

v1 #1165

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
219 commits
Select commit Hold shift + click to select a range
427ced6
fix: tackle issue #709
yamcodes Jun 3, 2026
ca7c067
fix: resolve biome formatting and sync examples issues
yamcodes Jun 4, 2026
df34eed
Merge branch 'dev' into 709-unify-error-normalization-and-formatting
yamcodes Jun 5, 2026
94f275f
fix: address PR review comments on error formatters and sensitive key…
yamcodes Jun 5, 2026
083837c
fix: resolve size-limit failures by splitting redact utilities and op…
yamcodes Jun 5, 2026
b2b2e85
fix: resolve exactOptionalPropertyTypes errors in parse-standard.ts
yamcodes Jun 5, 2026
938931e
chore: enter next pre-release phase
yamcodes Jun 5, 2026
820a4cf
Merge branch 'dev' into v1
yamcodes Jun 5, 2026
acb0954
[autofix.ci] apply automated fixes
autofix-ci[bot] Jun 5, 2026
8fd59bc
Merge branch 'dev' into v1
yamcodes Jun 5, 2026
c0a5415
Merge branch 'v1' into 709-unify-error-normalization-and-formatting
yamcodes Jun 5, 2026
01543c3
Merge branch 'dev' into v1
yamcodes Jun 10, 2026
7c98681
Merge branch 'dev' into v1
yamcodes Jun 10, 2026
b666698
fix: Simplify coercion: unify ArkType and Standard Schema paths with …
yamcodes Jun 12, 2026
1e17c90
docs: centralize changeset pre-release workflow and naming convention…
yamcodes Jun 12, 2026
fd03e21
docs: add formatting and whitespace cleanup to Changesets pre-release…
yamcodes Jun 12, 2026
bd48038
chore: update changeset pre-mode tag from next to alpha
yamcodes Jun 12, 2026
0e86f0d
chore: initialize v1.0.0-alpha pre-release changesets for all packages
yamcodes Jun 12, 2026
b0e1bb9
Version Packages (alpha)
github-actions[bot] Jun 12, 2026
85d831d
[autofix.ci] apply automated fixes
autofix-ci[bot] Jun 12, 2026
2f7ea63
Merge pull request #1195 from yamcodes/changeset-release/v1
yamcodes Jun 12, 2026
16c884a
Merge branch 'dev' into v1
yamcodes Jun 12, 2026
235ad48
Merge pull request #1203 from yamcodes/tackle-issue-1200
yamcodes Jun 16, 2026
7c55a40
feat: rename createEnv to arkenv and simplify schema configuration in…
yamcodes Jun 16, 2026
347eaa9
Version Packages (alpha)
github-actions[bot] Jun 16, 2026
d0c437d
[autofix.ci] apply automated fixes
autofix-ci[bot] Jun 16, 2026
2b50ca9
Merge pull request #1213 from yamcodes/changeset-release/v1
yamcodes Jun 16, 2026
3f12978
Merge branch 'dev' into v1
yamcodes Jun 16, 2026
7b89c57
fix(nuxt): use arkenv core export and update generated playground con…
yamcodes Jun 16, 2026
f7c8924
chore: update arkenv dependencies to 1.0.0-alpha.1 across all examples
yamcodes Jun 16, 2026
751cb11
Merge branch 'dev' into v1
yamcodes Jun 16, 2026
f97590e
chore: update dependencies in Nuxt example lockfile
yamcodes Jun 16, 2026
d42ded2
Merge branch 'dev' into v1
yamcodes Jun 16, 2026
99c91e5
Merge branch 'v1' into 709-unify-error-normalization-and-formatting
yamcodes Jun 19, 2026
2321b1c
refactor: reorder internal imports and exports for improved consistency
yamcodes Jun 19, 2026
6a8da0c
fix: validate rawVal type in parse-standard and update bundle size li…
yamcodes Jun 19, 2026
dd03fe5
refactor: extract getProp helper and add code-review skill definition
yamcodes Jun 19, 2026
160e78f
refactor: centralize error mapping and metadata extraction for ArkTyp…
yamcodes Jun 19, 2026
f187548
fix(review): remove test file .ts extensions, restructure changeset, …
yamcodes Jun 19, 2026
2aa8a93
docs(skill): clarify that gh pr view completely omits inline code rev…
yamcodes Jun 19, 2026
52ff00c
refactor: remove redundant index file references from import paths ac…
yamcodes Jun 19, 2026
e51c73b
docs(changeset): elaborate on breaking change error message details
yamcodes Jun 19, 2026
0658e96
refactor: migrate root entrypoint imports from @/ to @ and update tsc…
yamcodes Jun 19, 2026
9b4eb34
refactor: use @ instead of @/index in dynamic import in isolation test
yamcodes Jun 19, 2026
fe83263
refactor: resolve second round of PR comments on error formatting and…
yamcodes Jun 19, 2026
40432cf
[autofix.ci] apply automated fixes
autofix-ci[bot] Jun 19, 2026
df87424
refactor: use imperative verb form and remove implementation details …
yamcodes Jun 19, 2026
e6ffea9
refactor: consolidate environment coercion logic and standardize path…
yamcodes Jun 19, 2026
4539b0a
refactor: replace Record<string, unknown> with Dict<string> in enviro…
yamcodes Jun 19, 2026
c90f532
refactor: move coerceEnvironment to dedicated module and update error…
yamcodes Jun 19, 2026
ad54a52
feat: upgrade arkenv to major version and document breaking API chang…
yamcodes Jun 19, 2026
53ba7dc
feat: import Dict type from repo types for shared coercion utilities
yamcodes Jun 20, 2026
c3fc46a
chore: add job execution logs and update package dependencies
yamcodes Jun 20, 2026
979c137
docs(review): resolve PR #1157 review comments, document safeArkEnv
yamcodes Jun 20, 2026
5d4e876
docs: document architectural design decisions regarding module isolat…
yamcodes Jun 20, 2026
aefb0d7
feat: add documentation for hiding internal comments from .d.ts files…
yamcodes Jun 20, 2026
63fa480
docs: address review comments
yamcodes Jun 21, 2026
101fbc9
refactor: update safeArkEnv return type to provide issues directly in…
yamcodes Jun 21, 2026
da4c544
refactor: replace safeArkEnv utility with a safe option in the arkenv…
yamcodes Jun 21, 2026
f922185
[autofix.ci] apply automated fixes
autofix-ci[bot] Jun 21, 2026
16e4d27
feat: add { safe: true } configuration option to arkenv for non-throw…
yamcodes Jun 21, 2026
6737534
refactor: remove engine-specific metadata from EnvIssue and deprecate…
yamcodes Jun 21, 2026
5066f2a
style: fix minor whitespace inconsistencies and clean up code formatting
yamcodes Jun 21, 2026
de18bbc
feat: disable strict validation by setting safe: false in plugin conf…
yamcodes Jun 21, 2026
43c7858
refactor: omit safe property from ArkEnvConfig in vite and bun plugin…
yamcodes Jun 21, 2026
3dd42d7
docs: clarify that the safe option is unsupported in bun and vite plu…
yamcodes Jun 21, 2026
ceb0496
docs: document the safe option and its limitations in framework integ…
yamcodes Jun 21, 2026
10a2103
refactor: enforce strict type safety for error code mappings using sa…
yamcodes Jun 21, 2026
befc6c9
fix: ensure type safety when accessing error maps by using the 'in' o…
yamcodes Jun 21, 2026
43206f2
fix: update error code mappings to support comprehensive ArkType vali…
yamcodes Jun 21, 2026
0ca680b
docs: remove safe parsing documentation from quickstart guide
yamcodes Jun 21, 2026
c9532d0
refactor: rename executeSafe to safeExecute for consistent naming con…
yamcodes Jun 21, 2026
11999c9
feat: remove safe option from integrations and enforce safe: false in…
yamcodes Jun 21, 2026
df221c2
chore: ignore job_logs.txt and clear existing log entries
yamcodes Jun 21, 2026
ea0dbd6
Merge pull request #1157 from yamcodes/709-unify-error-normalization-…
yamcodes Jun 21, 2026
b93f5ab
Merge branch 'dev' into v1
yamcodes Jun 21, 2026
cd7ea13
Version Packages (alpha)
github-actions[bot] Jun 21, 2026
71001eb
[autofix.ci] apply automated fixes
autofix-ci[bot] Jun 21, 2026
b2b5681
Merge pull request #1219 from yamcodes/changeset-release/v1
yamcodes Jun 21, 2026
1770587
docs: update warning syntax and add superset configuration file
yamcodes Jun 21, 2026
b6be375
docs: add titles to callout blocks across documentation pages
yamcodes Jun 21, 2026
825a229
[autofix.ci] apply automated fixes
autofix-ci[bot] Jun 21, 2026
21944fd
Merge remote-tracking branch 'origin/dev' into v1
yamcodes Jun 23, 2026
6697cb5
Merge branch 'dev' into v1
yamcodes Jun 23, 2026
763270c
(v1) Internal vs. Published Packages Strategy for Build-time and Runt…
yamcodes Jun 23, 2026
a5589a5
Version Packages (alpha) (#1224)
arkenv-bot[bot] Jun 23, 2026
44c840f
(v1) split core and standard (#1225)
yamcodes Jun 25, 2026
7d45313
Merge branch 'dev' into v1
yamcodes Jun 25, 2026
653abb2
Version Packages (alpha)
github-actions[bot] Jun 25, 2026
803a2d6
[autofix.ci] apply automated fixes
autofix-ci[bot] Jun 25, 2026
276e8ec
refactor: rename arkenv to @arkenv/core and @arkenv/cli to arkenv
yamcodes Jun 25, 2026
17bd835
refactor: move cli package source files to new core package and updat…
yamcodes Jun 25, 2026
ed52721
chore: ignore packages/core/README.md in mdxlint and update pnpm lock…
yamcodes Jun 25, 2026
fce4cfc
Merge branch 'v1' into changeset-release/v1
yamcodes Jun 25, 2026
da3c5a1
refactor: rename packages/arkenv to packages/core and establish packa…
yamcodes Jun 25, 2026
31c4037
Merge branch 'v1' into changeset-release/v1
yamcodes Jun 25, 2026
fd09b53
Merge pull request #1227 from yamcodes/changeset-release/v1
yamcodes Jun 25, 2026
d92e75d
Merge branch 'dev' into v1
yamcodes Jun 25, 2026
3df0fa3
feat: implement new Next.js features, expand framework documentation,…
yamcodes Jun 27, 2026
b93d652
style: fix typo in warning block and apply prettier formatting to con…
yamcodes Jun 27, 2026
be493fc
Merge branch 'dev' into v1
yamcodes Jun 27, 2026
48d760c
feat: improve generated environment return types and update @arkenv p…
yamcodes Jun 27, 2026
75d9c5a
feat: update type inference to support StandardSchemaV1 and set packa…
yamcodes Jun 27, 2026
a6ed115
feat(standard): support flat layout overload in Next.js and Nuxt stan…
yamcodes Jun 29, 2026
868e02f
Version Packages (alpha) (#1254)
arkenv-bot[bot] Jun 29, 2026
a63a170
docs: remove obsolete ADR 0001 and update status for ADRs 0004 and 0010
yamcodes Jun 30, 2026
6cc91de
docs: update ADR references for runtime shared logic and flat layout …
yamcodes Jun 30, 2026
e12ef02
docs: standardize ADR file format and update the introductory record …
yamcodes Jun 30, 2026
9e57887
chore: standardize ADR document structure and formatting across the r…
yamcodes Jun 30, 2026
e3fe66e
docs: add status and context headers to all Architectural Decision Re…
yamcodes Jun 30, 2026
b0fbc38
docs: add attribution to Michael Nygard for ADR template and methodology
yamcodes Jun 30, 2026
9e7acbc
docs: add credits section to ADR template citing Michael Nygard
yamcodes Jun 30, 2026
6a1f055
docs: update ADR reasoning count and fix Markdown escaping in Next.js…
yamcodes Jun 30, 2026
ecdaa16
docs: add manual installation instructions and peer dependency guidan…
yamcodes Jun 30, 2026
aa7fb93
[autofix.ci] apply automated fixes
autofix-ci[bot] Jun 30, 2026
77ca035
docs: simplify installation instructions and clarify package requirem…
yamcodes Jun 30, 2026
62aa98e
docs: add FAQ entry explaining why core validation packages are optio…
yamcodes Jun 30, 2026
930cbd1
docs: remove horizontal rule separators from Next.js FAQ documentation
yamcodes Jun 30, 2026
f835e39
docs: add missing whitespace for improved readability across document…
yamcodes Jun 30, 2026
cd2ed7e
chore: fix formatting and markdown syntax across documentation and ex…
yamcodes Jun 30, 2026
12bc635
chore: align monorepo package metadata and lockstep versioning (#1271)
yamcodes Jul 5, 2026
3184e97
Delete .changeset/kind-crews-warn.md
yamcodes Jul 5, 2026
3cdbac9
fix: Reconcile v0 features (#1281, #1282) into v1 roadmap (#1292)
yamcodes Jul 11, 2026
434cf61
refactor: introduce shared log helpers in @arkenv/build and standardi…
yamcodes Jul 11, 2026
90ac1e1
fix: Forward-port flat layout from dev to v1 branch (#1299)
yamcodes Jul 11, 2026
68ed78e
fix: (v1) Remove framework /shared exports; keep /client and /server …
yamcodes Jul 11, 2026
327993a
fix: (v1) Move log helpers to @repo/utils and finish console.* migrat…
yamcodes Jul 11, 2026
e613917
Forward-port OG text fix from dev to v1 (#1308)
yamcodes Jul 12, 2026
90c1df6
docs: (v1) Add root README.md for v1 branch GitHub landing page (#1310)
yamcodes Jul 12, 2026
9ee78fe
Version Packages (alpha) (#1293)
arkenv-bot[bot] Jul 12, 2026
a16e2ec
feat: (v1) Injectable logger API across ArkEnv packages (#1312)
yamcodes Jul 15, 2026
3ad32a9
fix: (v1) Refactor CLI scaffolding using Strategy pattern for Validat…
yamcodes Jul 15, 2026
108cff5
refactor: deepen scaffold dialects, layouts, and codegen seams (#1316)
yamcodes Jul 15, 2026
c81cc31
feat: (v1) Add clientPrefix to all FrameworkStrategy implementations …
yamcodes Jul 15, 2026
6aa4262
feat: (v1) Forward-port hosting presets from #1288 (#1323)
yamcodes Jul 16, 2026
cf74ee1
feat: (v1) Forward-port machine-actionable error codes from #1325 (#1…
yamcodes Jul 16, 2026
d059b66
chore: bump arkenv error-codes changeset to minor (v1 follows standar…
yamcodes Jul 16, 2026
e8f4fd2
Version Packages (alpha) (#1315)
arkenv-bot[bot] Jul 16, 2026
c5aa1f5
docs: (v1) document supported validators in root README
yamcodes Jul 16, 2026
cc6f277
Merge pull request #1341 from yamcodes/v1-document-supported-validato…
yamcodes Jul 16, 2026
bb00745
chore: sync contributors (plugin/tool categories, add abhimanyutiwari…
yamcodes Jul 16, 2026
d22b40c
docs(core): Forward-port RuntimeEnvironment type-DX fix from dev to v…
yamcodes Jul 17, 2026
e5f5914
feat(cli): Forward-port trim short-flag aliases (-C, -a) from dev to …
yamcodes Jul 17, 2026
016c456
docs: Forward-port validator-agnostic README refresh from dev to v1 (…
yamcodes Jul 17, 2026
e55697e
docs: Forward-port ModuleOptions JSDoc from dev to v1 (#1361)
yamcodes Jul 17, 2026
a2de7b9
feat: Forward-port hosting-presets docs and `--host-preset` -H alias …
yamcodes Jul 17, 2026
5fa00b2
Clarify contributor guide and triage labels for human contributors (v…
yamcodes Jul 17, 2026
ccfbc85
Version Packages (alpha) (#1360)
arkenv-bot[bot] Jul 17, 2026
f067027
[autofix.ci] apply automated fixes
autofix-ci[bot] Jul 17, 2026
ffe7d92
Revise changelog for arkenv command alias updates
yamcodes Jul 17, 2026
96411dc
feat: (v1) Forward-port drop `-e` short alias for `--example` from #1…
yamcodes Jul 17, 2026
823c1fa
chore: (v1) bump drop-example-e-alias changeset to major
yamcodes Jul 17, 2026
8725d78
feat(nuxt): Forward-port `arkenv` config-key typing from #1371 to v1 …
yamcodes Jul 17, 2026
73e508b
feat: (v1) Forward-port improved npm keywords from #1383 (#1387)
yamcodes Jul 17, 2026
befc1a1
fix: Forward-port opt-in preview deployments; remove broken deploy-bu…
yamcodes Jul 17, 2026
45c7050
feat: Forward-port with-valibot example from dev (#1389)
yamcodes Jul 17, 2026
6fef91e
Version Packages (alpha) (#1381)
arkenv-bot[bot] Jul 17, 2026
e71574e
fix: Forward-port skip autofix.ci on Version Packages pushes from #13…
yamcodes Jul 17, 2026
192cb04
fix: Forward-port unescapeMarkers scoping from #1393 (#1394)
yamcodes Jul 17, 2026
7625db7
docs: Forward-port autofix ↔ release safeguard docs from #1395 (#1397)
yamcodes Jul 17, 2026
5e2aa88
fix: Forward-port drop Playwright Docker container from Linux e2e CI …
yamcodes Jul 18, 2026
a2c04c9
docs: reconcile v1 ADR numbering and supersession stubs (#1408)
yamcodes Jul 18, 2026
6cfa69a
docs: drop ADR slug/number index (#1412)
yamcodes Jul 18, 2026
01382cb
docs: Forward-port strict layout complexity budget ADR from #1404 (#1…
yamcodes Jul 18, 2026
db45891
feat: Forward-port ArkEnv keywords docs from #1413 (#1415)
yamcodes Jul 18, 2026
3530105
docs: address keywords docs review notes from #1405
yamcodes Jul 18, 2026
e306798
feat(v1): Auto-extend client env in Nuxt strict layout via virtual mo…
yamcodes Jul 18, 2026
b7565b5
Version Packages (alpha) (#1416)
arkenv-bot[bot] Jul 18, 2026
e1cf6db
feat: tackle issue #1328
yamcodes Jul 20, 2026
7f7237b
chore: sync examples from playgrounds
yamcodes Jul 20, 2026
0a559ce
feat: Forward-port add host command from #1324 (#1419)
yamcodes Jul 20, 2026
33f3f52
docs: align SolidStart READMEs with transform mode
yamcodes Jul 20, 2026
1ce6c66
Merge branch 'v1' into 1328-env-module-transform
yamcodes Jul 20, 2026
e14d34f
Forward-port AGENTS.md from dev to v1 (#1426)
yamcodes Jul 20, 2026
46ab573
Merge branch 'v1' into 1328-env-module-transform
yamcodes Jul 20, 2026
21375f3
docs: Forward-port multi-command CLI intro from dev
yamcodes Jul 20, 2026
6be63f7
fix: Forward-port Nuxt proxy coercion lock from #1420 (#1429)
yamcodes Jul 20, 2026
01b09bf
Version Packages (alpha) (#1427)
arkenv-bot[bot] Jul 20, 2026
a3d93be
feat: Forward-port add host strict layouts and docs from #1430/#1433 …
yamcodes Jul 21, 2026
0a32b97
refactor: address PR review for env-module transform
yamcodes Jul 21, 2026
85a7221
Merge branch 'v1' into 1328-env-module-transform
yamcodes Jul 21, 2026
859e6de
fix: sync examples after v1 merge and correct core package path
yamcodes Jul 21, 2026
1d0ce6f
docs: rewrite vite-plugin transform changeset for consumers
yamcodes Jul 21, 2026
bf796ce
Merge pull request #1423 from yamcodes/1328-env-module-transform
yamcodes Jul 21, 2026
fe6b20e
docs: convert remaining GitHub callouts to Fumadocs syntax (#1441)
yamcodes Jul 21, 2026
4032cc5
docs: park schema/define stance language (gates #1333)
yamcodes Jul 21, 2026
f67200b
docs: port env-object ADR to v1 (0021) + Nuxt #1424 glossary
yamcodes Jul 21, 2026
54017b3
docs(v1): frame Standard Mode as ArkType-free across integrations (#1…
yamcodes Jul 21, 2026
b1d8bad
feat: (v1) Auto-extend shared env in Nuxt strict-layout client entry …
yamcodes Jul 21, 2026
6cca0cf
Merge pull request #1457 from yamcodes/1439-standard-isolation-guards
yamcodes Jul 22, 2026
5e36906
docs: Forward-port triage out-of-scope skill fix from #1464 (#1467)
yamcodes Jul 22, 2026
5fc1c6a
feat: (v1) env-module transform — canonical env object surface (#1459)
yamcodes Jul 22, 2026
0150e73
fix(v1): drop env.ts starters; warn when Nuxt finds no schema (#1468)
yamcodes Jul 22, 2026
3667b7e
feat: (v1) boot-time coercion into runtime payload + validator-free c…
yamcodes Jul 22, 2026
a64bd57
feat: (v1) Forward-port: hosting presets Phase 4 (#1450) (#1469)
yamcodes Jul 22, 2026
882c0ce
fix(v1): bail Nuxt setup before boot-gate hooks when schema is missing
yamcodes Jul 22, 2026
0763a92
fix: (v1) Align missing-schema severity — Nuxt throws (#1473)
yamcodes Jul 22, 2026
b77a6ab
Version Packages (alpha) (#1435)
arkenv-bot[bot] Jul 22, 2026
98da6ac
fix: Forward-port fork Deploy-Preview secrets fix from #1481 (#1485)
yamcodes Jul 24, 2026
01480f3
[autofix.ci] apply automated fixes
autofix-ci[bot] Jul 24, 2026
f86887c
fix: Forward-port split CLI `--help` Global/init options from dev (#1…
yamcodes Jul 24, 2026
9d5bdbb
fix: Forward-port align missing-schema errors from #1482 (#1488)
yamcodes Jul 24, 2026
2049b3f
Update split-help-global-init-options.md
yamcodes Jul 24, 2026
97291a5
chore: add deploy-probe.txt on v1 for #1460 verification
yamcodes Jul 25, 2026
cb0bd21
Merge pull request #1499 from yamcodes/verify/1460-v1-probe
yamcodes Jul 25, 2026
586e31e
ci: forward-port Actions Vercel branch-domain wiring to v1 (#1460)
yamcodes Jul 25, 2026
f7ab30f
ci: forward-port Actions Vercel branch-domain wiring to v1 (#1460)
yamcodes Jul 25, 2026
928acfd
ci: forward-port Actions Vercel branch-domain wiring to v1 (#1460)
yamcodes Jul 25, 2026
4541e98
ci: forward-port Actions Vercel branch-domain wiring to v1 (#1460)
yamcodes Jul 25, 2026
9d00559
Merge pull request #1501 from yamcodes/verify/1460-v1-workflows
yamcodes Jul 25, 2026
3785c6b
fix: Forward-port shared missing-schema errors from #1490 (#1495)
yamcodes Jul 25, 2026
0f41e3f
chore: remove #1460 deploy probe file
yamcodes Jul 25, 2026
df7a10b
ci: Forward-port manual SHA deploy escape hatch from #1502 (#1504)
yamcodes Jul 25, 2026
9bfe1c4
feat: (v1) Make env/internal/shared.ts optional in strict layout (#1505)
yamcodes Jul 25, 2026
5a2d91e
Version Packages (alpha) (#1489)
arkenv-bot[bot] Jul 30, 2026
821ac20
(v1) Redesign website (#1509)
yamcodes Aug 5, 2026
31a8435
fix(ci): fix biome lint errors and playwright e2e accessibility issues
yamcodes Aug 7, 2026
919be4b
Update README description for clarity
yamcodes Aug 7, 2026
5a8f0fc
Update description for ArkEnv documentation
yamcodes Aug 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
20 changes: 20 additions & 0 deletions .agents/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,23 @@ Custom vocabulary mapped to GitHub labels (e.g., `needs triage`, `needs more inf
### Domain docs

Single-context layout with `CONTEXT.md` in the `docs/` directory. See `.agent/docs/domain.md`.

### v1 Roadmap package migration rules

For all work transitioning or porting features from the `v0` (dev) branch to the `v1` branch, follow these policies:

1. **Changeset Translation Matrix (Dual-Tracking)**:
- When importing changesets from `v0` to `v1`, you must translate the package names in the YAML frontmatter:
- If the change is in the CLI/Scaffolding: `@arkenv/cli` (v0) ➔ `arkenv` (v1)
- If the change is in the Core Validation engine: `arkenv` (v0) ➔ `@arkenv/core` (v1)

2. **Changelog Identity Swaps**:
- `packages/cli/CHANGELOG.md` maps to `packages/arkenv/CHANGELOG.md`.
- `packages/arkenv/CHANGELOG.md` (the old core) maps to `packages/core/CHANGELOG.md`.

3. **Changelog Epoch Warnings (Right before v1.0.0 release)**:
- In `packages/arkenv/CHANGELOG.md`, prepend a prominent warning alerting users that `arkenv` is now the CLI, not the library.
- In `packages/core/CHANGELOG.md`, prepend a welcome header explaining that the core library has moved from `arkenv` to `@arkenv/core`.

4. **CLI Import Restriction**:
- The `arkenv` CLI package (`packages/arkenv`) must throw a clear error at runtime if imported or required as a library (using `require.main !== module`) to prevent accidental usage by users upgrading from `v0`.
14 changes: 7 additions & 7 deletions .agents/docs/CONTEXT.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ The main goal is to provide a developer-friendly way to validate and type-check

**Naming Conventions:**

- **Files**: kebab-case (`create-env.ts`)
- **Functions**: camelCase (`createEnv`)
- **Files**: kebab-case (`arkenv.ts`)
- **Functions**: camelCase (`arkenvInternal`, `myFunction`)
- **Types**: PascalCase (`ArkEnvError`)
- **Constants**: UPPER_SNAKE_CASE for environment variables

Expand All @@ -83,9 +83,9 @@ The main goal is to provide a developer-friendly way to validate and type-check
**Monorepo Structure:**

- **Packages** (`packages/`) - Published npm packages
- `arkenv` - Core library package
- `@arkenv/core` - Core library package
- `@arkenv/vite-plugin` - Vite plugin package
- `@arkenv/cli` - Interactive CLI for scaffolding and project mutation
- `arkenv` - Interactive CLI for scaffolding and project mutation
- **Apps** (`apps/`) - Applications and testing suites (not published)
- `www` - Next.js documentation site
- `playgrounds/*` - Test playgrounds for different runtimes
Expand All @@ -95,7 +95,7 @@ The main goal is to provide a developer-friendly way to validate and type-check
**Package Architecture:**

- **Core Package** (`arkenv`):
- Main export: `createEnv` function (also exported as default `arkenv`)
- Main export: `arkenv` function (also exported as default export)
- Uses ArkType's `scope` system for type validation
- Custom types: `string.host`, `number.port`, `boolean`
- Error handling via `ArkEnvError` class
Expand Down Expand Up @@ -200,7 +200,7 @@ pnpm run test:e2e # E2E tests
- **Vite**: Integrated via `@arkenv/vite-plugin`. Validates environment variables at build-time and inlines `import.meta.env` variables for **client-side** (browser) usage.
- **Next.js**: Integrated via `@arkenv/nextjs`. Provides two layout patterns:
- **3-File Layout (Strict)**: Uses separate environment files for client, server, and shared scopes (`env/client.ts`, `env/server.ts`, and `env/internal/shared.ts`) for compile-time locking of secrets from browser bundles using package conditional exports (`react-server` vs. `default`) and `server-only`.
- **Unified 1-File Layout**: Uses a single `env.ts` schema file. In Next.js, client-side environment variables must be statically destructured in a `runtimeEnv` block to allow static inlining by the Next.js compiler. To automate this, `@arkenv/nextjs/config` exposes a `withArkEnv` wrapper for `next.config.js` that performs static analysis on `env.ts` to locate `client` and `shared` keys, then automatically generates a tailored `createEnv` factory in `generated/env.gen.ts` that pre-fills `runtimeEnv`. It enforces strict client-side prefixing (`NEXT_PUBLIC_`) and prevents server secrets from leaking to client components.
- **Unified 1-File Layout**: Uses a single `env.ts` schema file. In Next.js, client-side environment variables must be statically destructured in a `runtimeEnv` block to allow static inlining by the Next.js compiler. To automate this, `@arkenv/nextjs/config` exposes a `withArkEnv` wrapper for `next.config.js` that performs static analysis on `env.ts` to locate `client` and `shared` keys, then automatically generates a tailored `arkenv` factory in `generated/env.gen.ts` that pre-fills `runtimeEnv`. It enforces strict client-side prefixing (`NEXT_PUBLIC_`) and prevents server secrets from leaking to client components.
- **Bun fullstack dev server**:
- **Bun.serve**: An HTTP server runtime that integrates with Bun's built-in bundler to scan HTML files, trigger on-demand bundling, and serve resulting assets. It does not perform bundling itself; rather, it coordinates with Bun's bundler (configured via `@arkenv/bun-plugin` in `bunfig.toml`) to inline environment variables (e.g., using a `PUBLIC_` prefix) via static replacement. Primarily used for **client-side** bundling integration.
- **Bun.build**: Bun's programmatic bundling API. Integrated via `@arkenv/bun-plugin` in the `Bun.build` plugins array. Used for custom build scripts targeting the browser in a fullstack context.
Expand All @@ -218,7 +218,7 @@ pnpm run test:e2e # E2E tests

- Uses `const` type parameters for better type inference
- Leverages ArkType's `type.infer` and `type.validate` utilities
- Typesafe environment object returned from `createEnv`
- Typesafe environment object returned from `arkenv`

**Error Handling:**

Expand Down
16 changes: 8 additions & 8 deletions .agents/docs/triage-labels.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

The skills speak in terms of five canonical triage roles. This file maps those roles to the actual label strings used in this repo's issue tracker.

| Label in mattpocock/skills | Label in our tracker | Meaning |
| -------------------------- | -------------------- | ---------------------------------------- |
| `needs-triage` | `needs triage` | Maintainer needs to evaluate this issue |
| `needs-info` | `needs more info` | Waiting on reporter for more information |
| `ready-for-agent` | `ready for agent` | Fully specified, ready for an AFK agent |
| `ready-for-human` | `ready for human` | Requires human implementation |
| `wontfix` | `wontfix` | Will not be actioned |
| `meta` | `meta` | Living docs (dashboards, roadmaps) |
| Label in mattpocock/skills | Label in our tracker | Meaning |
| -------------------------- | -------------------- | ------------------------------------------------------------- |
| `needs-triage` | `needs triage` | Maintainer needs to evaluate this issue |
| `needs-info` | `needs more info` | Waiting on reporter for more information |
| `ready-for-agent` | `ready for agent` | Fully specified, ready for immediate implementation |
| `ready-for-human` | `ready for human` | Needs a judgment call or design decision before implementation |
| `wontfix` | `wontfix` | Will not be actioned |
| `meta` | `meta` | Living docs (dashboards, roadmaps) |

When a skill mentions a role (e.g. "apply the ready for agent triage label"), use the corresponding label string from this table.

Expand Down
4 changes: 2 additions & 2 deletions .agents/platforms/.cursor/rules/arktype.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Define environment variable schemas using ArkType syntax:
```typescript
import { type } from "arktype";

const env = createEnv({
const env = arkenv({
HOST: "string.host", // Custom host type
PORT: "number.port", // Custom port type
NODE_ENV: "'development' | 'production' | 'test'", // Union type
Expand All @@ -49,7 +49,7 @@ import { $ } from "./scope";
## Type Inference

- Use `type.infer` to extract TypeScript types from schemas
- The return type of `createEnv` is inferred from the schema
- The return type of `arkenv` is inferred from the schema
- No manual type definitions needed

## Error Handling
Expand Down
4 changes: 2 additions & 2 deletions .agents/platforms/.cursor/rules/coding-guidelines.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ This project uses [Biome](https://biomejs.dev/) for formatting and linting. The

## Naming Conventions

- **Files**: Use kebab-case for files (`create-env.ts`)
- **Functions**: Use camelCase (`createEnv`)
- **Files**: Use kebab-case for files (`arkenv-internal.ts`)
- **Functions**: Use camelCase (`arkenv`, `myFunction`)
- **Types**: Use PascalCase (`ArkEnvError`)
- **Constants**: Use UPPER_SNAKE_CASE for environment variables and constants

Expand Down
12 changes: 6 additions & 6 deletions .agents/platforms/.cursor/rules/test-patterns.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ alwaysApply: true
- Fast execution (< 100ms per test)
- Mocked external dependencies (clipboard, network, etc.)
- Focused on single unit behavior
- Co-locate with source: `create-env.ts` → `create-env.test.ts`
- Co-locate with source: `arkenv.ts` → `arkenv.test.ts`

### Integration Tests (`*.integration.test.ts` or `*.integration.test.tsx`)
**What:** Test how multiple units (components, hooks, functions) work together without mocking their interactions.
Expand All @@ -45,8 +45,8 @@ alwaysApply: true
- State synchronization across boundaries

**Examples:**
- `custom-types.integration.test.ts` - Tests `createEnv` + `scope` + custom types working together
- `error.integration.test.ts` - Tests error propagation through `createEnv` + `formatErrors` + `ArkEnvError`
- `custom-types.integration.test.ts` - Tests `arkenv` + `scope` + custom types working together
- `error.integration.test.ts` - Tests error propagation through `arkenv` + `formatErrors` + `ArkEnvError`
- `copy-button.integration.test.tsx` - Tests `CopyButton` + `useToast` + `Toaster` as a complete flow
- `heading.integration.test.tsx` - Tests `Heading` + `useIsMobile` responding to viewport changes
- `toaster.integration.test.tsx` - Tests `useToast` hook + `Toaster` component state synchronization
Expand Down Expand Up @@ -98,12 +98,12 @@ alwaysApply: true

```typescript
import { describe, expect, it } from "vitest";
import { createEnv } from "./create-env";
import arkenv from "./arkenv";

describe("createEnv", () => {
describe("arkenv", () => {
it("should validate string env variables", () => {
process.env.TEST_STRING = "hello";
const env = createEnv({
const env = arkenv({
TEST_STRING: "string",
});
expect(env.TEST_STRING).toBe("hello");
Expand Down
8 changes: 4 additions & 4 deletions .agents/platforms/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,14 +56,14 @@ The project uses modern tooling:

The core package provides:

1. **`createEnv(schema)`** - Main function to create validated environment objects. Also available as the default export, typically imported as `arkenv`.
1. **`arkenv(schema)`** - Main function to create validated environment objects. Exposed as default export, and also as named export `arkenv`.
2. **Built-in validators** - Common validators like `host`, `port`, `url`, etc.
3. **ArkType integration** - Uses ArkType for schema definition and validation
4. **Type inference** - Full TypeScript type inference from schemas

### Key files

- `src/create-env.ts` - Core `createEnv` implementation
- `src/arkenv.ts` - Core `arkenv` implementation
- `src/types.ts` - Built-in type validators (host, port, url, etc.)
- `src/errors.ts` - Error handling and formatting
- `src/utils.ts` - Utility functions
Expand Down Expand Up @@ -113,7 +113,7 @@ The project uses three types of tests:

Tests are located alongside source files with `.test.ts` suffix:

- `create-env.test.ts` - Tests for main `createEnv` functionality
- `arkenv.test.ts` - Tests for main `arkenv` functionality
- `types.test.ts` - Tests for built-in validators
- `errors.test.ts` - Tests for error handling
- `utils.test.ts` - Tests for utility functions
Expand All @@ -131,7 +131,7 @@ Tests are located alongside source files with `.test.ts` suffix:

**Examples:**

- `custom-types.integration.test.ts` - Tests `createEnv` + `scope` + custom types working together
- `custom-types.integration.test.ts` - Tests `arkenv` + `scope` + custom types working together
- `error.integration.test.ts` - Tests error propagation through validation pipeline
- `copy-button.integration.test.tsx` - Tests `CopyButton` + `useToast` + `Toaster` flow
- `heading.integration.test.tsx` - Tests `Heading` + `useIsMobile` responsive behavior
Expand Down
23 changes: 21 additions & 2 deletions .all-contributorsrc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
"projectName": "arkenv",
"projectOwner": "yamcodes",
"files": [
"packages/arkenv/README.md"
"README.md",
"packages/core/README.md"
],
"commitType": "docs",
"commitConvention": "angular",
Expand All @@ -22,6 +23,8 @@
"bug",
"example",
"infra",
"plugin",
"tool",
"test"
]
},
Expand Down Expand Up @@ -52,6 +55,7 @@
"avatar_url": "https://avatars.githubusercontent.com/u/44430251?v=4",
"profile": "https://github.com/danciudev",
"contributions": [
"plugin",
"code"
]
},
Expand All @@ -62,6 +66,7 @@
"profile": "https://joakim.beng.se",
"contributions": [
"code",
"plugin",
"doc"
]
},
Expand All @@ -71,7 +76,21 @@
"avatar_url": "https://avatars.githubusercontent.com/u/166608075?v=4",
"profile": "https://fresh-accordion-06a.notion.site/Jiayi-Du-1817075e92978076b95cf9d90fb5eceb",
"contributions": [
"doc"
"doc",
"tool"
]
},
{
"login": "abhimanyutiwaribot",
"name": "Abhimanyu Tiwari",
"avatar_url": "https://avatars.githubusercontent.com/u/181746977?v=4",
"profile": "https://abhimanyutiwaribot.vercel.app",
"contributions": [
"code",
"doc",
"example",
"test",
"tool"
]
}
]
Expand Down
15 changes: 15 additions & 0 deletions .changeset/add-host-preset-add-command.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
"arkenv": minor
---

#### Add `add host` command to CLI for adding hosting presets to existing schemas

Support adding a hosting provider preset (Vercel or Netlify) to an existing `env.ts` configuration file:

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

- Prompts interactively to select Vercel or Netlify if the provider is omitted.
- Auto-detects the framework (Next.js, Nuxt, Vite, Bun) and the validator engine (Zod, Valibot, or ArkType) to inject the preset fields with the correct syntax.
- Fallback to logging the generated variable schemas to stdout with manual configuration instructions if `env.ts` is missing or unparseable.
19 changes: 19 additions & 0 deletions .changeset/add-host-presets-phase-4.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
"arkenv": minor
---

#### Add hosting presets for Cloudflare, Railway, Render, and Fly.io

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
```
13 changes: 13 additions & 0 deletions .changeset/add-host-strict-layouts-forward-port.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
"arkenv": minor
---

#### Support `arkenv add host` for strict multi-file layouts

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]
```
9 changes: 9 additions & 0 deletions .changeset/align-missing-schema-host-hints.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"@arkenv/vite-plugin": patch
"@arkenv/nextjs": patch
"@arkenv/nuxt": patch
---

#### Align missing-schema errors with short, actionable host guidance

Point missing-schema errors at checked paths / `schemaPath` and `arkenv init`, matching the Bun plugin style, without embedding starter `env.ts` modules.
17 changes: 17 additions & 0 deletions .changeset/align-missing-schema-throw.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
"@arkenv/nuxt": major
---

#### Throw when the Nuxt module cannot resolve an env schema

**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
},
});
```
17 changes: 17 additions & 0 deletions .changeset/align-v1-shared-missing-schema-errors.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
"@arkenv/build": patch
"@arkenv/bun-plugin": patch
"@arkenv/vite-plugin": patch
"@arkenv/nextjs": patch
"@arkenv/nuxt": patch
---

#### Make missing-schema errors short and actionable across hosts

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`).
```
46 changes: 46 additions & 0 deletions .changeset/bun-env-module-transform.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
"@arkenv/bun-plugin": minor
---

#### Add `env.ts` transform for Bun fullstack apps

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.
Loading
Loading