smoodly 0.0.11 → 0.0.12
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/README.md +40 -13
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -312,11 +312,14 @@ Implemented:
|
|
|
312
312
|
admin no longer derives a path of its own.
|
|
313
313
|
- `smoodly/image` — the site's media components: `<SmoodlyImage>`,
|
|
314
314
|
`<SmoodlyVideo>`, `imageUrl(image, { width, quality? }, loader?)`,
|
|
315
|
-
`frameFor`/`boxAspectOf` (the crop math)
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
is one.
|
|
315
|
+
`frameFor`/`boxAspectOf` (the crop math). Server-safe, no `"use client"`.
|
|
316
|
+
- `smoodly/image/config` — `smoodlyImages()` for `next.config`'s `images`:
|
|
317
|
+
the Supabase host as a remote pattern, plus `dangerouslyAllowLocalIP`
|
|
318
|
+
when that host is loopback or private — Next 16's optimizer refuses a
|
|
319
|
+
private upstream otherwise, and the local stack is one. Its own entry
|
|
320
|
+
because Next loads `next.config.ts` in plain Node, where anything that
|
|
321
|
+
reaches `next/image` fails to resolve (next@16 has no `exports` map);
|
|
322
|
+
`smoodly/image` still re-exports the helper for code the bundler sees.
|
|
320
323
|
|
|
321
324
|
- Locked zones are usable: `fillLockedZones` (a pure tree op) materializes
|
|
322
325
|
the one node of every empty locked zone from the component's `sample`
|
|
@@ -370,17 +373,41 @@ is open is hiding a section by a locale-dependent condition).
|
|
|
370
373
|
|
|
371
374
|
## Releasing
|
|
372
375
|
|
|
373
|
-
Both packages move together.
|
|
376
|
+
Both packages move together. Bump before build (the CLI's templates are
|
|
377
|
+
regenerated from `examples/site` in the build and pin `smoodly@<version>`),
|
|
378
|
+
the user runs the two publishes (npm 2FA is a browser passkey), tag only
|
|
379
|
+
after both are on the registry. From the repo root:
|
|
374
380
|
|
|
375
|
-
npm version 0.0.
|
|
381
|
+
npm version 0.0.12 -w smoodly -w create-smoodly-app --no-git-tag-version
|
|
376
382
|
npm run build
|
|
377
|
-
npm publish -w smoodly --
|
|
378
|
-
npm publish -w
|
|
379
|
-
|
|
383
|
+
npm publish -w smoodly --dry-run && npm publish -w create-smoodly-app --dry-run
|
|
384
|
+
npm publish -w smoodly --access public # user; first, the scaffold pins it
|
|
385
|
+
npm publish -w create-smoodly-app --access public # user
|
|
386
|
+
npm view smoodly@0.0.12 version # 404s for a minute or two after a good publish; poll
|
|
387
|
+
npm view create-smoodly-app@0.0.12 version
|
|
388
|
+
git commit -am "release: 0.0.12 — <changes since 0.0.11>" && git tag v0.0.12 && git push --tags origin main
|
|
380
389
|
|
|
381
|
-
`prepublishOnly` rebuilds each package
|
|
382
|
-
|
|
383
|
-
|
|
390
|
+
`prepublishOnly` rebuilds each package. The Claude Code skill
|
|
391
|
+
`.claude/skills/releasing-smoodly` carries the same order with its checks.
|
|
392
|
+
|
|
393
|
+
## Follow-ups (logged 2026-09-08, tooling session)
|
|
394
|
+
|
|
395
|
+
- **CI live job red since e09a632, 0.0.11 fresh install broken — fixed
|
|
396
|
+
2026-09-08, released as 0.0.12: `smoodly/image/config` is the entry
|
|
397
|
+
`next.config.ts` imports; `test/image-config-entry.test.ts` loads the
|
|
398
|
+
built file under bare node.** The
|
|
399
|
+
scaffolded `next.config.ts` imports `smoodlyImages` from `smoodly/image`,
|
|
400
|
+
whose index re-exports `SmoodlyImage.tsx` and its `import Image from
|
|
401
|
+
"next/image"`. Next loads the config in plain Node ESM and next@16.3.4
|
|
402
|
+
has no `exports` map, so the extensionless specifier fails
|
|
403
|
+
(`ERR_MODULE_NOT_FOUND ... Did you mean "next/image.js"?`) before
|
|
404
|
+
`next build` starts; the bundler resolves it, which is why nothing else
|
|
405
|
+
caught it. Reproduce from `examples/site`:
|
|
406
|
+
`node --input-type=module -e "await import('smoodly/image')"`. Fix: a
|
|
407
|
+
component-free entry for the config helper (the template and the
|
|
408
|
+
example comment then import from it), a plain-Node import test, then
|
|
409
|
+
release 0.0.12. Appending `.js` alone is weaker: Node hands back the
|
|
410
|
+
CommonJS `module.exports` object as the default, not the component.
|
|
384
411
|
|
|
385
412
|
## Follow-ups (logged 2026-09-08, client routing spec)
|
|
386
413
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "smoodly",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"description": "Open-source, code-first CMS for Next.js on Supabase: define a component once, it becomes a typed, editable building block.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -24,6 +24,10 @@
|
|
|
24
24
|
"types": "./dist/image/index.d.ts",
|
|
25
25
|
"default": "./dist/image/index.js"
|
|
26
26
|
},
|
|
27
|
+
"./image/config": {
|
|
28
|
+
"types": "./dist/image/next-config.d.ts",
|
|
29
|
+
"default": "./dist/image/next-config.js"
|
|
30
|
+
},
|
|
27
31
|
"./admin": {
|
|
28
32
|
"types": "./dist/admin/index.d.ts",
|
|
29
33
|
"default": "./dist/admin/index.js"
|