uniweb 0.16.2 → 0.16.4

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.16.2",
3
+ "version": "0.16.4",
4
4
  "description": "Create structured Vite + React sites with content/code separation",
5
5
  "type": "module",
6
6
  "bin": {
@@ -41,14 +41,14 @@
41
41
  "js-yaml": "^4.1.0",
42
42
  "prompts": "^2.4.2",
43
43
  "tar": "^7.0.0",
44
- "@uniweb/core": "0.8.2",
45
- "@uniweb/runtime": "0.11.2",
46
- "@uniweb/kit": "0.11.0"
44
+ "@uniweb/core": "^0.8.4",
45
+ "@uniweb/kit": "^0.11.2",
46
+ "@uniweb/runtime": "^0.11.4"
47
47
  },
48
48
  "peerDependencies": {
49
- "@uniweb/content-reader": "1.2.2",
50
- "@uniweb/build": "0.18.2",
51
- "@uniweb/semantic-parser": "1.2.1"
49
+ "@uniweb/build": "^0.18.4",
50
+ "@uniweb/content-reader": "^1.2.2",
51
+ "@uniweb/semantic-parser": "^1.2.1"
52
52
  },
53
53
  "peerDependenciesMeta": {
54
54
  "@uniweb/build": {
@@ -1986,13 +1986,21 @@ Platform-specific configuration that doesn't belong in npm-standard fields. All
1986
1986
  | `namespace` | `uniweb register` | none | Legacy explicit org-namespace override; equivalent to a scoped `package.json::name`. Rarely needed. |
1987
1987
  | `runtimePolicy` | `dist/runtime-pin.json` | unset | Declares how far past the recorded runtime version a host may move a site. |
1988
1988
 
1989
- **Runtime policy** (foundation authors only sites don't set this). At build time a foundation records the `@uniweb/runtime` version it linked against into `dist/runtime-pin.json`, and carries `uniweb.runtimePolicy` alongside it when you set one: `exact` (stay on the recorded version), `auto-patch` (within `MAJOR.MINOR.x`), `auto-minor` (within `MAJOR.x.y`). Leaving it unset is the normal case and the one to prefer the runtime is backwards-compatible at the minor level by convention. Set `exact` only if you depend on undocumented runtime internals or have audited against one release. Site owners cannot override your choice.
1989
+ **Runtime updates handled for you.** Your foundation's code links against the runtime: it externalizes `react`, `react-dom`, `react-dom/server`, both JSX runtimes and `@uniweb/core`, and the runtime supplies all of them at load time. So a build is bound to *that* React and *that* core API.
1990
1990
 
1991
- ⚠️ **The pin is a compatibility FLOOR, not a selector.** It records what your build binds to; it does not choose the runtime a site runs, and it cannot: a site loads your foundation **plus any extensions**, each emitting its own pin, while a site has exactly **one** runtime. Pins are plural, the choice is singular. The runtime a site runs is selected by `site.yml::runtime`.
1991
+ You don't declare anything for this. At build time your foundation records the `@uniweb/runtime` version it actually linked against (read from `node_modules`, not chosen) into `dist/runtime-pin.json`, and `uniweb register` sends it with your foundation, so the version you built against travels with it. **Whether two runtime versions are compatible is our determination, not a setting** you have no way to know whether we changed anything your code can reach, so we don't ask you to guess.
1992
1992
 
1993
- `uniweb register` reads the pin and sends it with your foundation, so the floor you built against travels with it. Its use is **validation**checking a site's chosen runtime against the floors of *every* foundation that site loads, which only something holding all of them can do. **That check is not implemented anywhere yet**, so today the floor is stated and carried but not enforced. Set `runtimePolicy` to declare your intent for when it is; don't design around it having an effect now.
1993
+ ⚠️ **Nothing acts on the recorded version yet** — today it is stated and carried, not enforced. Don't design around it having an effect.
1994
1994
 
1995
- **Why this is yours and not the site's.** A published site ships **no JS** — content, config, data and assets only. Your foundation is the only part that contains code linking against the runtime, and that link is wider than it looks: a foundation externalizes `react`, `react-dom`, `react-dom/server`, both JSX runtimes and `@uniweb/core`, all supplied by the runtime at load time. So a foundation built against a runtime is bound to *that* React and *that* core API. The general rule, which also explains why the reverse holds: **each policy is declared by whoever's code binds to the thing being updated** — you declare the runtime policy because your code links against the runtime; the site declares its foundation policy because its content binds to your section types.
1995
+ **The escape hatch,** for the one thing only you can know: if your foundation reaches into undocumented runtime internals, or you have audited it against exactly one runtime build and want no movement at all, set
1996
+
1997
+ ```json
1998
+ { "uniweb": { "runtimePolicy": "exact" } }
1999
+ ```
2000
+
2001
+ That freezes sites using your foundation on the recorded version. Only reach for it if one of those two things is actually true — a frozen foundation stops receiving runtime fixes, including security ones. Sites cannot override your choice.
2002
+
2003
+ > Older releases documented `auto-patch` and `auto-minor` here as well. They asked you to pick a compatibility rule out of our version numbers, which was never something you were in a position to evaluate — that determination is ours. Both values are still accepted so existing foundations keep working; neither is worth setting.
1996
2004
 
1997
2005
  `@uniweb/runtime` arrives **transitively** through `@uniweb/build`, so your foundation pins a runtime version without declaring one — that's intentional. **Don't add `@uniweb/runtime` to your foundation's dependencies**; to bump the pinned version, bump `@uniweb/build`. If `@uniweb/runtime` isn't resolvable at build time the pin is simply not emitted, and the build still succeeds — nothing in the toolchain requires it.
1998
2006
 
@@ -210,11 +210,22 @@ export async function publish(args = []) {
210
210
  installed.length &&
211
211
  !installed.includes(siteYml.runtime)
212
212
  ) {
213
+ // ⚠️ Leads with REMOVING the pin, deliberately. A site ships no JS, so it
214
+ // has no basis for holding a runtime version, and `runtime:` is an
215
+ // operator-level override that is no longer part of the documented
216
+ // authoring surface. This message used to say "pin one of these in
217
+ // site.yml" — which pushed a reader deeper into a mechanism they should
218
+ // not be using, and named a key the docs no longer describe. Keep the
219
+ // installed list (it is the actionable part when a pin IS intended), but
220
+ // do not restore pin-first phrasing.
213
221
  say.err(
214
- `Runtime ${siteYml.runtime} (from site.yml) is not installed on the backend.`
222
+ `Runtime ${siteYml.runtime} (pinned in site.yml) is not installed on the backend.`
215
223
  )
216
224
  say.dim(
217
- `Installed: ${installed.join(', ') || '(none)'} pin one of these in site.yml (\`runtime:\`), or have it installed on the backend.`
225
+ `Remove the \`runtime:\` pin and the backend chooses a site ships no code, so it has no reason to hold one.`
226
+ )
227
+ say.dim(
228
+ `Installed: ${installed.join(', ') || '(none)'} — or pin one of those, or have ${siteYml.runtime} installed.`
218
229
  )
219
230
  if (!dryRun) return { exitCode: 1 }
220
231
  }
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "generatedAt": "2026-08-09T03:10:52.817Z",
3
+ "generatedAt": "2026-08-11T13:40:25.377Z",
4
4
  "packages": {
5
5
  "@uniweb/build": {
6
- "version": "0.18.2",
6
+ "version": "0.18.4",
7
7
  "path": "framework/build",
8
8
  "deps": [
9
9
  "@uniweb/content-reader",
@@ -28,7 +28,7 @@
28
28
  "deps": []
29
29
  },
30
30
  "@uniweb/core": {
31
- "version": "0.8.2",
31
+ "version": "0.8.4",
32
32
  "path": "framework/core",
33
33
  "deps": [
34
34
  "@uniweb/semantic-parser",
@@ -46,7 +46,7 @@
46
46
  "deps": []
47
47
  },
48
48
  "@uniweb/kit": {
49
- "version": "0.11.0",
49
+ "version": "0.11.2",
50
50
  "path": "framework/kit",
51
51
  "deps": [
52
52
  "@uniweb/core",
@@ -65,7 +65,7 @@
65
65
  "deps": []
66
66
  },
67
67
  "@uniweb/projections": {
68
- "version": "0.2.5",
68
+ "version": "0.2.7",
69
69
  "path": "framework/projections",
70
70
  "deps": [
71
71
  "@uniweb/content-writer",
@@ -73,7 +73,7 @@
73
73
  ]
74
74
  },
75
75
  "@uniweb/runtime": {
76
- "version": "0.11.2",
76
+ "version": "0.11.4",
77
77
  "path": "framework/runtime",
78
78
  "deps": [
79
79
  "@uniweb/core",
@@ -111,7 +111,7 @@
111
111
  "deps": []
112
112
  },
113
113
  "@uniweb/unipress": {
114
- "version": "0.8.1",
114
+ "version": "0.8.3",
115
115
  "path": "framework/unipress",
116
116
  "deps": [
117
117
  "@uniweb/build",