diff --git a/.changeset/config.json b/.changeset/config.json
index dd45a21..439ce1a 100644
--- a/.changeset/config.json
+++ b/.changeset/config.json
@@ -7,9 +7,9 @@
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
- "ignore": ["example-kitchen-sink", "example-simple"],
+ "ignore": ["example-kitchen-sink", "example-simple", "zpress-vscode"],
"privatePackages": {
- "version": true,
- "tag": true
+ "version": false,
+ "tag": false
}
}
diff --git a/.changeset/diff-watch-asset-roots.md b/.changeset/diff-watch-asset-roots.md
new file mode 100644
index 0000000..66335c0
--- /dev/null
+++ b/.changeset/diff-watch-asset-roots.md
@@ -0,0 +1,5 @@
+---
+"@zpress/cli": patch
+---
+
+diff command now watches top-level root directories so asset and image changes are detected
diff --git a/examples/kitchen-sink/.gitignore b/examples/kitchen-sink/.gitignore
new file mode 100644
index 0000000..730ad1e
--- /dev/null
+++ b/examples/kitchen-sink/.gitignore
@@ -0,0 +1 @@
+.zpress/
diff --git a/examples/kitchen-sink/.zpress/README.md b/examples/kitchen-sink/.zpress/README.md
deleted file mode 100644
index db02793..0000000
--- a/examples/kitchen-sink/.zpress/README.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# .zpress
-
-This directory is managed by zpress. It contains the
-materialized documentation site — synced content, build artifacts, and static assets.
-
-| Directory | Description |
-| ----------- | ---------------------------------------------- |
-| `content/` | Synced markdown pages and generated config |
-| `public/` | Static assets (logos, icons, banners) |
-| `dist/` | Build output |
-| `cache/` | Build cache |
-
-## Commands
-
-```bash
-zpress sync # Sync docs into content/
-zpress dev # Start dev server
-zpress build # Build static site
-```
-
-> **Do not edit files in `content/`** — they are regenerated on every sync.
-> Edit the source markdown in your workspace packages instead.
diff --git a/examples/kitchen-sink/.zpress/public/banner.svg b/examples/kitchen-sink/.zpress/public/banner.svg
deleted file mode 100644
index 4dc436e..0000000
--- a/examples/kitchen-sink/.zpress/public/banner.svg
+++ /dev/null
@@ -1,135 +0,0 @@
-
diff --git a/examples/kitchen-sink/.zpress/public/icons/guides.svg b/examples/kitchen-sink/.zpress/public/icons/guides.svg
deleted file mode 100644
index 1637431..0000000
--- a/examples/kitchen-sink/.zpress/public/icons/guides.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
diff --git a/examples/kitchen-sink/.zpress/public/icons/reference.svg b/examples/kitchen-sink/.zpress/public/icons/reference.svg
deleted file mode 100644
index 40ff208..0000000
--- a/examples/kitchen-sink/.zpress/public/icons/reference.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/examples/kitchen-sink/.zpress/public/icons/security.svg b/examples/kitchen-sink/.zpress/public/icons/security.svg
deleted file mode 100644
index 68d6efa..0000000
--- a/examples/kitchen-sink/.zpress/public/icons/security.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/examples/kitchen-sink/.zpress/public/icons/standards.svg b/examples/kitchen-sink/.zpress/public/icons/standards.svg
deleted file mode 100644
index c665349..0000000
--- a/examples/kitchen-sink/.zpress/public/icons/standards.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
diff --git a/examples/kitchen-sink/.zpress/public/logo.svg b/examples/kitchen-sink/.zpress/public/logo.svg
deleted file mode 100644
index c819f61..0000000
--- a/examples/kitchen-sink/.zpress/public/logo.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-
diff --git a/examples/kitchen-sink/.zpress/public/logos/blaxel.png b/examples/kitchen-sink/.zpress/public/logos/blaxel.png
deleted file mode 100644
index b36d9dc..0000000
Binary files a/examples/kitchen-sink/.zpress/public/logos/blaxel.png and /dev/null differ
diff --git a/examples/kitchen-sink/.zpress/public/logos/nango.svg b/examples/kitchen-sink/.zpress/public/logos/nango.svg
deleted file mode 100644
index 1f54175..0000000
--- a/examples/kitchen-sink/.zpress/public/logos/nango.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-
diff --git a/examples/kitchen-sink/.zpress/public/logos/trigger.svg b/examples/kitchen-sink/.zpress/public/logos/trigger.svg
deleted file mode 100644
index fb50975..0000000
--- a/examples/kitchen-sink/.zpress/public/logos/trigger.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
diff --git a/examples/kitchen-sink/.zpress/public/logos/vercel.svg b/examples/kitchen-sink/.zpress/public/logos/vercel.svg
deleted file mode 100644
index 16403c2..0000000
--- a/examples/kitchen-sink/.zpress/public/logos/vercel.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/examples/simple/.gitignore b/examples/simple/.gitignore
new file mode 100644
index 0000000..730ad1e
--- /dev/null
+++ b/examples/simple/.gitignore
@@ -0,0 +1 @@
+.zpress/
diff --git a/examples/simple/.zpress/README.md b/examples/simple/.zpress/README.md
deleted file mode 100644
index 366fde0..0000000
--- a/examples/simple/.zpress/README.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# .zpress
-
-This directory is managed by zpress. It contains the
-materialized documentation site — synced content, build artifacts, and static assets.
-
-| Directory | Description | Tracked |
-| ----------- | ---------------------------------------------- | ------- |
-| `content/` | Synced markdown pages and generated config | No |
-| `public/` | Static assets (logos, icons, banners) | Yes |
-| `dist/` | Build output | No |
-| `cache/` | Build cache | No |
-
-## Commands
-
-```bash
-zpress sync # Sync docs into content/
-zpress dev # Start dev server
-zpress build # Build static site
-```
-
-> **Do not edit files in `content/`** — they are regenerated on every sync.
-> Edit the source markdown in your workspace packages instead.
diff --git a/examples/simple/.zpress/public/icons/guides.svg b/examples/simple/.zpress/public/icons/guides.svg
deleted file mode 100644
index 1637431..0000000
--- a/examples/simple/.zpress/public/icons/guides.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
diff --git a/examples/simple/.zpress/public/icons/reference.svg b/examples/simple/.zpress/public/icons/reference.svg
deleted file mode 100644
index 40ff208..0000000
--- a/examples/simple/.zpress/public/icons/reference.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/examples/simple/.zpress/public/icons/security.svg b/examples/simple/.zpress/public/icons/security.svg
deleted file mode 100644
index 68d6efa..0000000
--- a/examples/simple/.zpress/public/icons/security.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/examples/simple/.zpress/public/icons/standards.svg b/examples/simple/.zpress/public/icons/standards.svg
deleted file mode 100644
index c665349..0000000
--- a/examples/simple/.zpress/public/icons/standards.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
diff --git a/examples/simple/.zpress/public/logo.svg b/examples/simple/.zpress/public/logo.svg
deleted file mode 100644
index c819f61..0000000
--- a/examples/simple/.zpress/public/logo.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-
diff --git a/examples/simple/.zpress/public/logos/blaxel.png b/examples/simple/.zpress/public/logos/blaxel.png
deleted file mode 100644
index b36d9dc..0000000
Binary files a/examples/simple/.zpress/public/logos/blaxel.png and /dev/null differ
diff --git a/examples/simple/.zpress/public/logos/nango.svg b/examples/simple/.zpress/public/logos/nango.svg
deleted file mode 100644
index 1f54175..0000000
--- a/examples/simple/.zpress/public/logos/nango.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-
diff --git a/examples/simple/.zpress/public/logos/trigger.svg b/examples/simple/.zpress/public/logos/trigger.svg
deleted file mode 100644
index fb50975..0000000
--- a/examples/simple/.zpress/public/logos/trigger.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
diff --git a/examples/simple/.zpress/public/logos/vercel.svg b/examples/simple/.zpress/public/logos/vercel.svg
deleted file mode 100644
index 16403c2..0000000
--- a/examples/simple/.zpress/public/logos/vercel.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/extensions/vscode/package.json b/extensions/vscode/package.json
index e4c6919..1272ba9 100644
--- a/extensions/vscode/package.json
+++ b/extensions/vscode/package.json
@@ -2,7 +2,6 @@
"name": "zpress-vscode",
"displayName": "zpress",
"version": "0.2.2",
- "private": true,
"description": "Run zpress dev server and preview documentation from VS Code",
"categories": [
"Other"
diff --git a/packages/cli/src/commands/diff.ts b/packages/cli/src/commands/diff.ts
index 749d81f..2b9cdbf 100644
--- a/packages/cli/src/commands/diff.ts
+++ b/packages/cli/src/commands/diff.ts
@@ -102,8 +102,9 @@ export const diffCommand = command({
* @returns Deduplicated array of directory paths to watch
*/
function collectWatchPaths(config: ZpressConfig): readonly string[] {
- const dirs = flattenIncludePaths(config.sections)
- return uniq([...dirs.map(toDirectory), ...CONFIG_GLOBS])
+ const dirs = flattenIncludePaths(config.sections).map(toDirectory)
+ const roots = dirs.map(toTopLevelRoot).filter((r) => r.length > 0)
+ return uniq([...dirs, ...roots, ...CONFIG_GLOBS])
}
/**
@@ -155,6 +156,25 @@ function toDirectory(from: string): string {
return from
}
+/**
+ * Extract the top-level root directory from a path (the first segment).
+ *
+ * For example, `docs/getting-started` → `docs/`, `packages/cli` → `packages/`.
+ * This ensures that sibling directories (e.g. asset folders) within the same
+ * root are also watched for changes.
+ *
+ * @private
+ * @param dir - A directory path
+ * @returns The top-level root directory with trailing slash, or empty string for root paths
+ */
+function toTopLevelRoot(dir: string): string {
+ const idx = dir.indexOf('/')
+ if (idx === -1) {
+ return ''
+ }
+ return dir.slice(0, idx + 1)
+}
+
/**
* Separator used by `git status --short` for renamed/copied entries.
*
diff --git a/packages/config/schemas/schema.json b/packages/config/schemas/schema.json
index 04135aa..87d675d 100644
--- a/packages/config/schemas/schema.json
+++ b/packages/config/schemas/schema.json
@@ -1,6 +1,6 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "https://raw.githubusercontent.com/joggrdocs/zpress/v0.3.0/packages/config/schemas/schema.json",
+ "$id": "https://raw.githubusercontent.com/joggrdocs/zpress/v0.4.0/packages/config/schemas/schema.json",
"title": "Zpress Configuration",
"description": "Configuration file for zpress documentation framework",
"$ref": "#/definitions/ZpressConfig",
diff --git a/vercel.json b/vercel.json
index 3b63b42..ab1f066 100644
--- a/vercel.json
+++ b/vercel.json
@@ -3,5 +3,5 @@
"outputDirectory": ".zpress/dist",
"framework": null,
"installCommand": "pnpm install",
- "ignoreCommand": "git diff HEAD^ HEAD --quiet vercel.json zpress.config.ts docs/ contributing/ packages/*/README.md"
+ "ignoreCommand": "if [ \"$VERCEL_GIT_COMMIT_REF\" = \"changeset-release/main\" ]; then exit 0; fi; [ -z \"$(pnpm zpress diff)\" ]"
}