uniweb 0.25.1 → 0.25.2

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.25.1",
3
+ "version": "0.25.2",
4
4
  "description": "Create structured Vite + React sites with content/code separation",
5
5
  "type": "module",
6
6
  "bin": {
@@ -41,15 +41,15 @@
41
41
  "js-yaml": "^4.1.0",
42
42
  "prompts": "^2.4.2",
43
43
  "tar": "^7.0.0",
44
- "@uniweb/semantic-parser": "^1.2.3",
44
+ "@uniweb/core": "^0.10.1",
45
45
  "@uniweb/kit": "^0.12.3",
46
- "@uniweb/runtime": "^0.12.1",
47
- "@uniweb/core": "^0.10.1"
46
+ "@uniweb/semantic-parser": "^1.2.3",
47
+ "@uniweb/runtime": "^0.12.2"
48
48
  },
49
49
  "peerDependencies": {
50
- "@uniweb/build": "^0.24.1",
50
+ "@uniweb/semantic-parser": "^1.2.3",
51
51
  "@uniweb/content-reader": "^1.2.3",
52
- "@uniweb/semantic-parser": "^1.2.3"
52
+ "@uniweb/build": "^0.24.2"
53
53
  },
54
54
  "peerDependenciesMeta": {
55
55
  "@uniweb/build": {
@@ -87,6 +87,7 @@ import {
87
87
  bringExtensionsAlong
88
88
  } from '../backend/foundation-bring-along.js'
89
89
  import { settlePaymentIfNeeded } from '../backend/payment-handoff.js'
90
+ import { reportSchemalessCollections } from '../utils/schemaless-report.js'
90
91
 
91
92
  const c = {
92
93
  reset: '\x1b[0m',
@@ -481,6 +482,10 @@ export async function publish(args = []) {
481
482
  return { exitCode: 1 }
482
483
  }
483
484
  const schemalessNames = (probe.schemaless || []).map((col) => col.name)
485
+ // A product decision the author is usually making unknowingly — say it at warn
486
+ // level, not dim among everything else. See the helper for what the old
487
+ // message got wrong.
488
+ reportSchemalessCollections(probe.schemaless, say)
484
489
  const localAssets = probe.localAssets || []
485
490
 
486
491
  // 3a. A clone with no `$uuid` is bound to no backend site, so every cached map
@@ -68,6 +68,7 @@ import { updateAssetMap, ASSET_MAP_FILE } from '@uniweb/build/uwx'
68
68
  import { BackendClient } from '../backend/client.js'
69
69
  import { resolveSiteDir, resolveSiteBackend } from './deploy.js'
70
70
  import { warnIfContentDoesNotConform } from '../utils/conformance.js'
71
+ import { reportSchemalessCollections } from '../utils/schemaless-report.js'
71
72
  import { readOrgFlag } from '../utils/args.js'
72
73
  import { checkFlags } from '../utils/flag-guard.js'
73
74
  import {
@@ -104,6 +105,7 @@ const success = (m) => log(`${colors.green}✓${colors.reset} ${m}`)
104
105
  const error = (m) => console.error(`${colors.red}✗${colors.reset} ${m}`)
105
106
  const info = (m) => log(`${colors.blue}→${colors.reset} ${m}`)
106
107
  const note = (m) => log(` ${colors.dim}${m}${colors.reset}`)
108
+ const warn = (m) => log(`${colors.yellow}\u26a0${colors.reset} ${m}`)
107
109
 
108
110
  function flagValue(args, name) {
109
111
  const eq = args.find((a) => a.startsWith(`${name}=`))
@@ -362,6 +364,8 @@ export async function push(args = [], deps = {}) {
362
364
  const { siteContent, collections, siteContentUuid, warnings, skipped } = pkg
363
365
  log('')
364
366
  for (const w of warnings) note(`! ${w}`)
367
+ // Warn level, not dim: this is the author choosing entities vs static files.
368
+ reportSchemalessCollections(pkg.schemaless, { warn, dim: note })
365
369
 
366
370
  const totalEntities =
367
371
  (siteContent?.entityCount || 0) + (collections?.entityCount || 0)
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "generatedAt": "2026-08-18T13:23:47.915Z",
3
+ "generatedAt": "2026-08-18T16:05:00.154Z",
4
4
  "packages": {
5
5
  "@uniweb/build": {
6
- "version": "0.24.1",
6
+ "version": "0.24.2",
7
7
  "path": "framework/build",
8
8
  "deps": [
9
9
  "@uniweb/content-reader",
@@ -76,7 +76,7 @@
76
76
  ]
77
77
  },
78
78
  "@uniweb/runtime": {
79
- "version": "0.12.1",
79
+ "version": "0.12.2",
80
80
  "path": "framework/runtime",
81
81
  "deps": [
82
82
  "@uniweb/core",
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Report collections publishing without a data schema.
3
+ *
4
+ * ⭐ This is a PRODUCT decision the author is making, usually without knowing:
5
+ * entities or static files. It is reported at warn level for that reason — the
6
+ * producer deliberately emits a structured entry rather than a prose warning so
7
+ * this can say what the trade actually is.
8
+ *
9
+ * The old line said `"… — not synced"`, dim, among everything else. The data IS
10
+ * delivered (as static files), so that read as "my data did not upload" to
11
+ * anyone who did not skim past it. Neither reading tells an author what they
12
+ * gave up or how to get it back.
13
+ *
14
+ * @param {Array<{name: string, model?: string}>} schemaless
15
+ * @param {{ warn: (m: string) => void, dim: (m: string) => void }} out
16
+ */
17
+ export function reportSchemalessCollections(schemaless, out) {
18
+ if (!schemaless?.length) return
19
+ const names = schemaless.map((c) => c.name)
20
+ const label = names.length === 1 ? 'collection' : 'collections'
21
+ out.warn(
22
+ `${names.length} ${label} shipping as STATIC FILES, not entities: ${names.join(', ')}`
23
+ )
24
+ out.dim('No queries, no editor, no detail projection — and a republish to change the data.')
25
+ out.dim(
26
+ `Declare a data schema to get entities. Each resolves its schema by subfolder name (${schemaless
27
+ .map((c) => `${c.name} → ${c.model || c.name}`)
28
+ .join(', ')}), or set \`schema:\` on the collection.`
29
+ )
30
+ }