uniweb 0.66.0 → 0.67.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uniweb",
3
- "version": "0.66.0",
3
+ "version": "0.67.0",
4
4
  "description": "Create structured Vite + React sites with content/code separation",
5
5
  "type": "module",
6
6
  "bin": {
@@ -41,17 +41,17 @@
41
41
  "js-yaml": "^4.1.0",
42
42
  "prompts": "^2.4.2",
43
43
  "tar": "^7.0.0",
44
- "@uniweb/kit": "^0.19.4",
45
- "@uniweb/runtime": "^0.27.4",
46
44
  "@uniweb/content-writer": "^0.3.4",
47
- "@uniweb/schemas": "^0.5.0",
48
45
  "@uniweb/core": "^0.29.8",
46
+ "@uniweb/kit": "^0.19.4",
47
+ "@uniweb/schemas": "^0.6.0",
48
+ "@uniweb/runtime": "^0.27.4",
49
49
  "@uniweb/semantic-parser": "^1.4.1"
50
50
  },
51
51
  "peerDependencies": {
52
+ "@uniweb/build": "^0.61.0",
52
53
  "@uniweb/content-reader": "^1.2.5",
53
- "@uniweb/semantic-parser": "^1.4.1",
54
- "@uniweb/build": "^0.60.0"
54
+ "@uniweb/semantic-parser": "^1.4.1"
55
55
  },
56
56
  "peerDependenciesMeta": {
57
57
  "@uniweb/build": {
@@ -1870,7 +1870,7 @@ fetch:
1870
1870
 
1871
1871
  **Component-side fetching.** When a component genuinely needs to fetch on its own (a search box, "load more", a lazy popover), use the kit hooks — `useFetched`, `useCacheEntry`, `useWholeRecord`. They share the framework's cache and dispatcher with declarative fetches; same-key requests dedupe automatically.
1872
1872
 
1873
- **Validate before shipping.** `uniweb validate` checks file-based data against your declared schemas — missing required fields, type/enum/format mismatches, nested fields. A violation fails it (`--lax` only reports); it checks every record file in `records/`, and `push` / `publish` refuse the same findings before sending anything. Distinct from `uniweb doctor` (project structure): `validate` checks your *data* against the schemas you *declared*. External queries (`url:`), `ref`/`options`, and rich `sections`-form inputs are reported deferred.
1873
+ **Validate before shipping.** `uniweb validate` checks file-based data against your declared schemas — missing required fields, type/enum/format mismatches, nested fields. A violation fails it (`--lax` only reports); it checks every record file in `records/`, and `push` / `publish` refuse the same findings before sending anything. Distinct from `uniweb doctor` (project structure): `validate` checks your *data* against the schemas you *declared*. External queries (`url:`) are reported as deferred — their data isn't in the project; the value of a `ref`/`options` field is not checked against the entity it names.
1874
1874
 
1875
1875
  ### Fetching from other sources (`fetcher:`)
1876
1876
 
@@ -2609,7 +2609,7 @@ Foundations have their own free path too: `uniweb add ci --target foundation` pu
2609
2609
 
2610
2610
  Either side can publish. Nothing about this changes how you build: the same foundation and the same site run under `uniweb dev`, `uniweb export`, or a CI deploy with no account at all.
2611
2611
 
2612
- **Publishing vs registering.** Foundations on Uniweb Cloud live in the catalog as `@org/name@version` — `name` from the foundation's `main.js`. When a foundation powers a single site, **don't run `uniweb register` yourself** — `uniweb publish` from the site directory releases the local foundation to the catalog (when its code changed) and goes live in one step. A registered version is immutable, so when the foundation's code changed under a version already registered, `push` and `publish` release the change under the next version and write it into the foundation's `package.json` — commit that file (`--no-release` sends the content without the code). They stop when the registry holds a version newer than yours, released from another copy: pull that change first, or pass `--bump` to release yours above it. Register deliberately only when the foundation is a product meant for multiple sites; consuming sites then pin `foundation: '@org/name@1.2.3'`. **The catalog is private and access-segregated, not a public package registry** — people see only the foundations licensed to sites they own or edit. The *site* carries the license, and it rides along with site ownership when a developer hands a site to a client. Don't describe publishing as making a foundation publicly discoverable. Schemas can also be registered on their own from a schemas-only package (`@uniweb/schemas`, any `@org/schemas`, or a bare folder of `schemas/*.{yml,json,js}`) — that's how `@std` schemas are published. Auth via `uniweb login` (`uniweb login --backend <url> --token <bearer>` without a terminal) or `UNIWEB_TOKEN`; preview with `--dry-run`.
2612
+ **Publishing vs registering.** Foundations on Uniweb Cloud live in the catalog as `@org/name@version` — `name` from the foundation's `main.js`. When a foundation powers a single site, **don't run `uniweb register` yourself** — `uniweb publish` from the site directory releases the local foundation to the catalog (when its code changed) and goes live in one step. A registered version is immutable, so when the foundation's code changed under a version already registered, `push` and `publish` release the change under the next version and write it into the foundation's `package.json` — commit that file (`--no-release` sends the content without the code). The version it picks is always the next patch: for a change that is not backwards compatible, set a higher minor or major version in the foundation's `package.json` yourself before you push. They stop when the registry holds a version newer than yours, released from another copy: pull that change first, or pass `--bump` to release yours above it. Register deliberately only when the foundation is a product meant for multiple sites; consuming sites then pin `foundation: '@org/name@1.2.3'`. **The catalog is private and access-segregated, not a public package registry** — people see only the foundations licensed to sites they own or edit. The *site* carries the license, and it rides along with site ownership when a developer hands a site to a client. Don't describe publishing as making a foundation publicly discoverable. Schemas can also be registered on their own from a schemas-only package (`@uniweb/schemas`, any `@org/schemas`, or a bare folder of `schemas/*.{yml,json,js}`) — that's how `@std` schemas are published. Auth via `uniweb login` (`uniweb login --backend <url> --token <bearer>` without a terminal) or `UNIWEB_TOKEN`; preview with `--dry-run`.
2613
2613
 
2614
2614
  ### Staying current
2615
2615
 
@@ -20,9 +20,10 @@
20
20
  * above the registered one, written into the package's `package.json` first. ⛔ This
21
21
  * reverses the version-bump release gate of 2026-06-23, whose reasoning — a deliberate,
22
22
  * npm-style release — fits a foundation other sites use as a product; those sites pin
23
- * a catalog ref and never reach this code. (A library's own demo site, which names it
24
- * by path, does — whether such a foundation should declare its releases deliberate is
25
- * open.)
23
+ * a catalog ref and never reach this code. Its author's demo site, which names it by
24
+ * path, does — and gets the same default, by ruling [Diego, 2026-09-24]. The release is
25
+ * always the next patch, so a change that is not backwards compatible needs a higher
26
+ * version set in `package.json` by hand.
26
27
  *
27
28
  * ⛔ **A NEWER registered version still stops it.** It was released from another copy
28
29
  * of the project, whose code this one may not have, and releasing above it would make
@@ -12,9 +12,10 @@
12
12
  * ⭐ A violation fails it (exit 1); `--lax` reports without failing. It warned by
13
13
  * default until 2026-09-24, with `--strict` to fail — a gate that passes is one
14
14
  * nobody reads, and `push` / `publish` now refuse the same findings. The live render
15
- * path stays tolerant. Dynamic (remote) inputs and entity references can't be
16
- * resolved without a running backend, so they're reported as deferred, never
17
- * silently skipped.
15
+ * path stays tolerant. Remote (`url:`) inputs are not in the project, so they're
16
+ * reported as deferred, never silently skipped. The value of an entity reference is
17
+ * not checked against the entity it names. ⛔ This said references were "reported as
18
+ * deferred" until 2026-09-24; no check ever reported them.
18
19
  */
19
20
 
20
21
  import { existsSync, readFileSync } from 'node:fs'
@@ -171,7 +172,7 @@ function printSiteHuman(result) {
171
172
  }
172
173
 
173
174
  if (deferred.length > 0) {
174
- log(` ${colors.dim}↪ deferred (not statically checkable):${colors.reset}`)
175
+ log(` ${colors.dim}↪ deferred (not checked):${colors.reset}`)
175
176
  for (const d of deferred) {
176
177
  const extra = d.url
177
178
  ? ` ${colors.dim}(${d.url})${colors.reset}`
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "generatedAt": "2026-09-24T15:29:04.711Z",
3
+ "generatedAt": "2026-09-24T19:00:27.393Z",
4
4
  "packages": {
5
5
  "@uniweb/api": {
6
6
  "version": "0.6.1",
@@ -10,7 +10,7 @@
10
10
  ]
11
11
  },
12
12
  "@uniweb/build": {
13
- "version": "0.60.0",
13
+ "version": "0.61.0",
14
14
  "path": "framework/build",
15
15
  "deps": [
16
16
  "@uniweb/content-reader",
@@ -96,7 +96,7 @@
96
96
  "deps": []
97
97
  },
98
98
  "@uniweb/schemas": {
99
- "version": "0.5.0",
99
+ "version": "0.6.0",
100
100
  "path": "framework/schemas",
101
101
  "deps": []
102
102
  },
@@ -126,7 +126,7 @@
126
126
  "deps": []
127
127
  },
128
128
  "@uniweb/unipress": {
129
- "version": "0.10.3",
129
+ "version": "0.10.4",
130
130
  "path": "framework/unipress",
131
131
  "deps": [
132
132
  "@uniweb/build",
package/src/index.js CHANGED
@@ -1697,9 +1697,9 @@ project against framework conventions.
1697
1697
 
1698
1698
  Every record file is checked against the schema its folder names, whether or
1699
1699
  not a section reads it. A violation fails the run; \`push\` and \`publish\` refuse
1700
- the same findings. The live render path stays tolerant. Dynamic (\`url:\`)
1701
- inputs and entity references can't be resolved without a running backend, so
1702
- they're reported as deferred, never silently skipped.
1700
+ the same findings. The live render path stays tolerant. Remote (\`url:\`)
1701
+ inputs are not in the project, so they're reported as deferred, never silently
1702
+ skipped. A reference field's value is not checked against the entity it names.
1703
1703
 
1704
1704
  ${colors.bright}Options:${colors.reset}
1705
1705
  --lax Report violations without failing (exit 0)