Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
64f56d4
chore: re-enter prerelease mode [skip ci]
May 6, 2026
dbe4bbf
chore: add changeset for cli workspace dep bundling fix
May 7, 2026
aa973e5
fix: remove zod internals from .d.ts; update stale scaffold versions …
perasperaactual May 7, 2026
26942dd
chore: bump prerelease versions [skip ci]
invalid-email-address May 7, 2026
b51c27c
fix(types): export ZodLike and widen issues[].path to PropertyKey[] (…
perasperaactual May 8, 2026
bdf4555
chore: bump prerelease versions [skip ci]
invalid-email-address May 8, 2026
c18b6a1
fix: add workspace:* publish guards to all packages (#405)
perasperaactual May 8, 2026
24ff421
chore: bump prerelease versions [skip ci]
invalid-email-address May 8, 2026
496aebb
fix(types): move CollectionProvider interfaces from collections to ty…
perasperaactual May 9, 2026
ee8b8b6
chore: bump prerelease versions [skip ci]
invalid-email-address May 9, 2026
b9a482b
fix(types): move scaffold hook interfaces from hooks-registry to type…
perasperaactual May 12, 2026
ebaa4b2
chore: bump prerelease versions [skip ci]
invalid-email-address May 12, 2026
b673520
chore(deps-dev): bump @types/node from 24.12.2 to 25.6.2 (#395)
dependabot[bot] May 12, 2026
792a581
chore(deps-dev): bump @vitest/ui from 4.1.4 to 4.1.6 (#394)
dependabot[bot] May 12, 2026
5085652
chore(deps): bump maplibre-gl from 4.7.1 to 5.24.0 (#393)
dependabot[bot] May 12, 2026
3c0ce6b
chore(deps-dev): bump typescript from 5.9.3 to 6.0.3 in /packages/nex…
dependabot[bot] May 12, 2026
f8766ff
chore(deps-dev): bump eslint-config-next from 16.2.3 to 16.2.6 (#380)
dependabot[bot] May 12, 2026
c0be05a
docs(claude): always use date CLI command for current date (#409)
perasperaactual May 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .changeset/collection-provider-interfaces-to-types.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
"@stackwright/types": minor
"@stackwright/collections": patch
"@stackwright/core": patch
---

Move `CollectionProvider`, `CollectionEntry`, `CollectionListOptions`, and
`CollectionListResult` interface contracts from `@stackwright/collections` into
`@stackwright/types`.

`@stackwright/collections` re-exports all four types from `@stackwright/types`
so existing imports are fully backwards-compatible — no consumer changes required.

This makes the interface contract accessible to Pro packages and other consumers
without requiring a dependency on any implementing package.
5 changes: 5 additions & 0 deletions .changeset/fix-cli-bundle-workspace-deps.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@stackwright/cli": patch
---

Bundle internal `@stackwright/*` workspace dependencies into the CLI binary via tsup `noExternal`. This fixes `ERR_PNPM_WORKSPACE_PKG_NOT_FOUND` when installing `@stackwright/cli` via `pnpm dlx` outside a monorepo. Also adds a `prepublishOnly` guard to catch any future `workspace:*` leakage before publish.
31 changes: 31 additions & 0 deletions .changeset/fix-core-dts-zod-compat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
"@stackwright/core": patch
---

fix(core): remove zod internals from published .d.ts

The generated `dist/index.d.ts` previously embedded zod-version-specific
internal types (`z.ZodTypeAny`, `z.core.$strip`, `z.ZodObject` generics)
directly into the exported API surface. This caused TypeScript errors in
consumer projects whose installed zod version differed from the one used
at build time — particularly the zod@3 → zod@4 upgrade — forcing them to
maintain `stackwright-core.d.ts` module-override stubs as workarounds.

Two root causes fixed:

1. `ContentTypeEntry.schema` and the `registerContentType` / `getContentTypeSchema`
signatures now use a local `ZodSchema` structural interface instead of
`z.ZodTypeAny`. Any real Zod schema satisfies `ZodSchema` via duck-typing,
so existing call-sites are unaffected.

2. `siteDefaults.ts` was importing `SiteConfig` via a relative path to the
`@stackwright/types` source file, causing tsup to inline the entire
`siteConfigSchema: z.ZodObject<{..., z.core.$strip}>` declaration into the
bundled d.ts. Changed to `import type { SiteConfig } from '@stackwright/types'`
so tsup treats it as an external package reference.

Additionally, `@stackwright/types`, `@stackwright/themes`, and
`@stackwright/collections` are now listed in tsup's `external` array as a
defensive measure against future inlining regressions.

Consumer projects can now delete any `stackwright-core.d.ts` stub override files.
26 changes: 26 additions & 0 deletions .changeset/fix-scaffold-template-versions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
"@stackwright/cli": patch
---

fix(cli): update stale scaffold template package versions

`buildPackageJson()` in `template-processor.ts` was pinning scaffolded
projects to package versions that were 4+ releases behind:

- `@stackwright/core`: `^0.7.0` → `^0.8.0`
- `@stackwright/nextjs`: `^0.3.1` → `^0.5.0`
- `@stackwright/icons`: `^0.3.0` → `^0.5.0`
- `@stackwright/build-scripts`: `^0.4.0` → `^0.7.0` ← **critical**
- `@stackwright/ui-shadcn`: `^0.1.0` → `^0.1.2`
- `@stackwright/otters`: `^0.2.0-alpha.0` → `^0.2.0`

The `build-scripts` version was the critical failure: the plugin API
(`PrebuildPlugin`, `beforeBuild`, `contentItemSchemas`) was introduced in
0.5.0, but scaffolded projects installed 0.4.0 — a version that has no
plugin system at all. This caused Pro plugin hooks to silently fail or
crash in freshly scaffolded projects.

Also adds `scripts/sync-versions.mjs` — a Node ESM utility that reads
workspace `package.json` versions and rewrites the VERSIONS constant
automatically. Run `node scripts/sync-versions.mjs` before cutting releases
to prevent version drift.
19 changes: 19 additions & 0 deletions .changeset/fix-types-prebuild-plugin-zod-compat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
"@stackwright/types": patch
---

fix(types): remove zod internals from PrebuildPlugin public interface

`PrebuildPlugin.configSchema` was typed as `z.ZodSchema` and
`contentItemSchemas` as `z.ZodTypeAny[]`. These zod-version-specific
types bled into the published `.d.ts`, causing TypeScript errors in Pro
packages that implemented `PrebuildPlugin` when their installed zod version
differed from what `@stackwright/types` was built with.

Both fields now use a local structural `ZodLike` interface
(`{ safeParse(data: unknown): { success: boolean; error?: unknown } }`)
which any real Zod schema satisfies via duck-typing. Existing plugin
implementations are unaffected.

This is the same fix applied to `@stackwright/core`'s `ContentTypeEntry`
in the companion changeset.
34 changes: 34 additions & 0 deletions .changeset/pre.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"mode": "pre",
"tag": "alpha",
"initialVersions": {
"stackwright-docs": "0.1.3",
"@stackwright/build-scripts": "0.6.0",
"@stackwright/cli": "0.8.2",
"@stackwright/collections": "0.1.0",
"@stackwright/core": "0.8.1",
"@stackwright/e2e": "0.3.0",
"@stackwright/hooks-registry": "0.1.0",
"@stackwright/icons": "0.5.1",
"launch-stackwright": "0.2.2",
"@stackwright/maplibre": "2.0.1",
"@stackwright/mcp": "0.4.2",
"@stackwright/nextjs": "0.5.0",
"@stackwright/otters": "0.2.0",
"@stackwright/sbom-generator": "0.2.0",
"@stackwright/scaffold-core": "0.3.0",
"@stackwright/themes": "0.5.2",
"@stackwright/types": "1.3.0",
"@stackwright/ui-shadcn": "0.1.2"
},
"changesets": [
"collection-provider-interfaces-to-types",
"fix-cli-bundle-workspace-deps",
"fix-core-dts-zod-compat",
"fix-scaffold-template-versions",
"fix-types-prebuild-plugin-zod-compat",
"scaffold-hook-interfaces-to-types",
"workspace-publish-guards",
"zodlike-export-path-fix"
]
}
17 changes: 17 additions & 0 deletions .changeset/scaffold-hook-interfaces-to-types.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
"@stackwright/types": patch
"@stackwright/hooks-registry": patch
---

fix(types): move scaffold hook interfaces from hooks-registry to types

Moves `ScaffoldHookType`, `ScaffoldHook`, `ScaffoldHookContext`, and the new
`HookHandler` type alias into `@stackwright/types` — the canonical home for
interface contracts in the OSS stack.

`@stackwright/hooks-registry` re-exports all four types unchanged, so existing
imports from `hooks-registry` or `scaffold-core` continue to work without any
consumer changes required.

This eliminates the last remaining case where a framework contract was defined
in an implementing package rather than in `@stackwright/types`.
21 changes: 21 additions & 0 deletions .changeset/workspace-publish-guards.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
"@stackwright/core": patch
"@stackwright/build-scripts": patch
"@stackwright/collections": patch
"@stackwright/hooks-registry": patch
"@stackwright/icons": patch
"launch-stackwright": patch
"@stackwright/maplibre": patch
"@stackwright/mcp": patch
"@stackwright/nextjs": patch
"@stackwright/otters": patch
"@stackwright/scaffold-core": patch
"@stackwright/sbom-generator": patch
"@stackwright/themes": patch
"@stackwright/types": patch
"@stackwright/ui-shadcn": patch
---

Add `prepublishOnly` workspace protocol guard to all publishable packages to prevent accidentally publishing with unresolved `workspace:*` specifiers.

Also removes a stale `@stackwright/collections` dependency from `@stackwright/core` (never imported, caused `ERR_PNPM_WORKSPACE_PKG_NOT_FOUND` when installing the published package), and fixes `@stackwright/maplibre` peer dependency on `@stackwright/core` from `workspace:*` to `>=0.8.0`.
5 changes: 5 additions & 0 deletions .changeset/zodlike-export-path-fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@stackwright/types": patch
---

Export `ZodLike` from `@stackwright/types` so plugin authors can reference it by name without index-access workarounds. Also widens `ZodLike.issues[].path` from `(string | number)[]` to `PropertyKey[]` to match Zod v4's actual `$ZodIssue.path` type, fixing a nominal TypeScript incompatibility where real Zod schemas did not satisfy `ZodLike` at the type level.
2 changes: 1 addition & 1 deletion .github/workflows/prerelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ jobs:
if npm view "${PKG_NAME}@${PKG_VERSION}" > /dev/null 2>&1; then
echo "↳ Already published — skipping"
else
npm publish --access public --tag alpha
pnpm publish --access public --tag alpha --no-git-checks
fi
cd - > /dev/null
fi
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ jobs:
if npm view "${PKG_NAME}@${PKG_VERSION}" > /dev/null 2>&1; then
echo "↳ Already published — skipping"
else
npm publish --access public
pnpm publish --access public --no-git-checks
fi
cd - > /dev/null
fi
Expand Down
4 changes: 4 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@ Commit early and often at logical checkpoints.

## Commands

> **⚠️ Always use `date` for the current date.**
> Never guess or hard-code a date in documentation, commit messages, changelogs, or coordination files.
> Run `date` (or `date -I` for `YYYY-MM-DD` format) in the terminal and use the value it returns.

```bash
# Install dependencies
pnpm install
Expand Down
25 changes: 25 additions & 0 deletions examples/stackwright-docs/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,30 @@
# stackwright-docs

## 0.1.6-alpha.2

### Patch Changes

- @stackwright/core@0.8.4-alpha.2
- @stackwright/nextjs@0.5.3-alpha.2

## 0.1.6-alpha.1

### Patch Changes

- Updated dependencies [496aebb]
- @stackwright/core@0.8.4-alpha.1
- @stackwright/nextjs@0.5.3-alpha.1

## 0.1.6-alpha.0

### Patch Changes

- Updated dependencies [c18b6a1]
- @stackwright/core@0.8.4-alpha.0
- @stackwright/icons@0.5.2-alpha.0
- @stackwright/nextjs@0.5.3-alpha.0
- @stackwright/ui-shadcn@0.1.3-alpha.0

## 0.1.5

### Patch Changes
Expand Down
6 changes: 3 additions & 3 deletions examples/stackwright-docs/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "stackwright-docs",
"version": "0.1.5",
"version": "0.1.6-alpha.2",
"private": true,
"scripts": {
"prebuild": "stackwright-prebuild",
Expand Down Expand Up @@ -32,11 +32,11 @@
"@playwright/browser-chromium": "^1.58.2",
"@stackwright/build-scripts": "workspace:*",
"@types/js-yaml": "^4.0.9",
"@types/node": "^24.10.13",
"@types/node": "^25.6.2",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"eslint": "^9.39.2",
"eslint-config-next": "^16.2.2",
"eslint-config-next": "^16.2.6",
"playwright": "^1.58.2",
"typescript": "^5.9.3"
},
Expand Down
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,12 +87,13 @@
"undici": "^7.0.0",
"tar": ">=6.2.1",
"flatted": ">=3.4.2",
"next": ">=16.1.7",
"next": ">=16.2.5",
"hono": ">=4.12.14",
"@hono/node-server": ">=1.19.10",
"basic-ftp": ">=5.3.1",
"express-rate-limit": ">=8.2.2",
"uuid": ">=14.0.0"
"uuid": ">=14.0.0",
"fast-uri": ">=3.1.2"
},
"onlyBuiltDependencies": [
"@swc/core",
Expand Down
26 changes: 26 additions & 0 deletions packages/build-scripts/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,31 @@
# @stackwright/build-scripts

## 0.7.2-alpha.2

### Patch Changes

- Updated dependencies [b9a482b]
- @stackwright/types@1.5.0-alpha.2

## 0.7.2-alpha.1

### Patch Changes

- Updated dependencies [496aebb]
- @stackwright/types@1.5.0-alpha.1

## 0.7.2-alpha.0

### Patch Changes

- c18b6a1: Add `prepublishOnly` workspace protocol guard to all publishable packages to prevent accidentally publishing with unresolved `workspace:*` specifiers.

Also removes a stale `@stackwright/collections` dependency from `@stackwright/core` (never imported, caused `ERR_PNPM_WORKSPACE_PKG_NOT_FOUND` when installing the published package), and fixes `@stackwright/maplibre` peer dependency on `@stackwright/core` from `workspace:*` to `>=0.8.0`.

- Updated dependencies [c18b6a1]
- @stackwright/sbom-generator@0.2.1-alpha.0
- @stackwright/types@1.4.2-alpha.0

## 0.7.1

### Patch Changes
Expand Down
6 changes: 3 additions & 3 deletions packages/build-scripts/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@stackwright/build-scripts",
"version": "0.7.1",
"version": "0.7.2-alpha.2",
"description": "Build-time scripts for Stackwright projects (prebuild image processing, YAML compilation)",
"license": "MIT",
"repository": {
Expand All @@ -25,7 +25,7 @@
"build": "tsup",
"dev": "tsup --watch",
"test": "vitest run",
"prepublishOnly": "pnpm run build",
"prepublishOnly": "pnpm run build && node -e \"const p=require('./package.json');const fields=[...Object.values(p.dependencies||{}),...Object.values(p.peerDependencies||{})];const bad=fields.filter(v=>String(v).includes('workspace:'));if(bad.length){console.error('ERR: workspace: specifiers found in publishable dep fields:',bad);process.exit(1)}\"",
"test:coverage": "vitest run --coverage"
},
"dependencies": {
Expand All @@ -36,7 +36,7 @@
},
"devDependencies": {
"@types/js-yaml": "^4.0",
"@types/node": "^25.4.0",
"@types/node": "^25.6.2",
"tsup": "^8.5.1",
"typescript": "^5.8.3",
"vitest": "^4.0.18"
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
"@stackwright/types": "workspace:*",
"@types/fs-extra": "^11.0",
"@types/js-yaml": "^4.0",
"@types/node": "^25.4",
"@types/node": "^25.6",
"tsup": "^8.5",
"typescript": "^5.0",
"vitest": "^4.0.18"
Expand Down
32 changes: 32 additions & 0 deletions packages/collections/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,37 @@
# @stackwright/collections

## 0.1.1-alpha.2

### Patch Changes

- Updated dependencies [b9a482b]
- @stackwright/types@1.5.0-alpha.2

## 0.1.1-alpha.1

### Patch Changes

- 496aebb: Move `CollectionProvider`, `CollectionEntry`, `CollectionListOptions`, and
`CollectionListResult` interface contracts from `@stackwright/collections` into
`@stackwright/types`.

`@stackwright/collections` re-exports all four types from `@stackwright/types`
so existing imports are fully backwards-compatible — no consumer changes required.

This makes the interface contract accessible to Pro packages and other consumers
without requiring a dependency on any implementing package.

- Updated dependencies [496aebb]
- @stackwright/types@1.5.0-alpha.1

## 0.1.1-alpha.0

### Patch Changes

- c18b6a1: Add `prepublishOnly` workspace protocol guard to all publishable packages to prevent accidentally publishing with unresolved `workspace:*` specifiers.

Also removes a stale `@stackwright/collections` dependency from `@stackwright/core` (never imported, caused `ERR_PNPM_WORKSPACE_PKG_NOT_FOUND` when installing the published package), and fixes `@stackwright/maplibre` peer dependency on `@stackwright/core` from `workspace:*` to `>=0.8.0`.

## 0.1.0

### Minor Changes
Expand Down
Loading
Loading