create-kumiko-app 0.4.196 → 0.4.197

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 CHANGED
@@ -40,5 +40,5 @@ bun run boot
40
40
 
41
41
  The picker reads a vendored copy of `feature-manifest.json` from the
42
42
  framework's `samples/apps/use-all-bundled` workspace. A CI drift-test
43
- fails if the vendored copy goes stale — run `bun run vendor:manifest`
44
- inside this package to refresh.
43
+ fails if the vendored copy goes stale — run `bun run gen:manifest`
44
+ inside `samples/apps/use-all-bundled` to refresh both copies.
@@ -626,7 +626,7 @@
626
626
  },
627
627
  {
628
628
  "name": "file-derivatives",
629
- "description": "Declares the `derivativeRenderer` extension point. `ctx.derivatives.variant(fileRefId, spec, name)` derives a variant of a tracked FileRef the first time it's requested and reuses the stored result afterwards (derive-on-first-use, keyed by a hash of the spec). Mount at least one `derivatives-*` renderer feature alongside this one — without a registered renderer for the FileRef's MIME type, every `variant(...)` call throws.",
629
+ "description": "Declares the `derivativeRenderer` extension point. `ctx.derivatives.variant(fileRefId, spec, name)` derives a variant of a tracked FileRef the first time it's requested and reuses the stored result afterwards (derive-on-first-use, keyed by a hash of the spec). Mount at least one `derivatives-*` renderer feature alongside this one — without a registered renderer for the FileRef's MIME type, every `variant(...)` call throws. Also declares the `derivativePublicPredicate` extension point (`r.useExtension(EXT_DERIVATIVE_PUBLIC_PREDICATE, '<entityType>', { isPublic })`) and, when `createFileDerivativesFeature({resolveApexTenant})` is passed a host-resolver, mounts an anonymous `GET {basePath}/:fileRefId/:variant` route that serves ONE of the 4 fixed presets (thumb/card/hero/full) for a FileRef whose entityType has a registered predicate returning true — default-deny (404) otherwise, same as an unknown FileRef.",
630
630
  "toggleableDefault": null,
631
631
  "requires": [
632
632
  "file-foundation"
@@ -950,10 +950,10 @@
950
950
  "name": "form-draft",
951
951
  "description": "Per-user, per-tenant working copy of an in-progress form, saved BEFORE the real domain entity exists. Owns one event-sourced entity, `form-draft` (`read_form_drafts`), keyed by a caller-assigned draftKey (typically screenId + optional hostEntityId), unique per (tenant, owner, draftKey). `save` upserts the draft blob ({ values, stepIndex, savedAt } — savedAt stamped server-side), `discard` deletes it (called once the real submit succeeds), `get` resumes it, `list` finds a user's open drafts for a given screenId (draftKey prefix match) — the fallback when a client-generated draftId is lost. Ownership is enforced by a per-row owner filter in every handler, not by roles — a foreign user's save/discard/get/list for someone else's draftKey never sees or touches that row. Never holds anything that already lives in a domain stream; the consuming app is responsible for discarding once the domain write succeeds. A daily cron job hard-deletes drafts past a configurable retention window (`form-draft:config:retention-days`, SystemAdmin-writable, default 30 days).",
952
952
  "toggleableDefault": null,
953
- "requires": [
953
+ "requires": [],
954
+ "optionalRequires": [
954
955
  "config"
955
956
  ],
956
- "optionalRequires": [],
957
957
  "configReads": [],
958
958
  "exposesApis": [],
959
959
  "usesApis": [],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-kumiko-app",
3
- "version": "0.4.196",
3
+ "version": "0.4.197",
4
4
  "description": "`bun create kumiko-app <name>` — scaffold a new Kumiko app with an interactive feature picker.",
5
5
  "license": "BUSL-1.1",
6
6
  "author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
@@ -26,13 +26,10 @@
26
26
  "default": "./src/index.ts"
27
27
  }
28
28
  },
29
- "scripts": {
30
- "vendor:manifest": "bun run scripts/vendor-manifest.ts"
31
- },
32
29
  "dependencies": {
33
- "@cosmicdrift/kumiko-dev-server": "0.192.0",
34
- "@cosmicdrift/kumiko-framework": "0.192.0",
35
- "@cosmicdrift/kumiko-server-runtime": "0.192.0",
30
+ "@cosmicdrift/kumiko-dev-server": "0.193.0",
31
+ "@cosmicdrift/kumiko-framework": "0.193.0",
32
+ "@cosmicdrift/kumiko-server-runtime": "0.193.0",
36
33
  "@inquirer/core": "^10.0.0",
37
34
  "@inquirer/prompts": "^7.4.0"
38
35
  },
@@ -1,7 +1,8 @@
1
1
  // Vendored manifest.json must match the source-of-truth in
2
2
  // samples/apps/use-all-bundled/feature-manifest.json. The picker reads
3
3
  // the vendored copy at runtime; a stale copy lets the picker show old
4
- // features or miss new ones. Refresh with `bun run vendor:manifest`.
4
+ // features or miss new ones. Refresh by running `bun run gen:manifest`
5
+ // inside samples/apps/use-all-bundled (writes both copies at once).
5
6
 
6
7
  import { describe, expect, test } from "bun:test";
7
8
  import { readFileSync } from "node:fs";
package/src/manifest.ts CHANGED
@@ -1,8 +1,9 @@
1
- // Loads the vendored feature-manifest.json (copied from
2
- // samples/apps/use-all-bundled by scripts/vendor-manifest.ts) at runtime.
3
- // The published package ships the JSON next to package.json so the picker
4
- // works without network access the source-of-truth at build time is the
5
- // sample-app's manifest, kept in sync via a CI drift-test.
1
+ // Loads the vendored feature-manifest.json (written alongside
2
+ // samples/apps/use-all-bundled/feature-manifest.json by that package's
3
+ // scripts/gen-feature-manifest.ts) at runtime. The published package
4
+ // ships the JSON next to package.json so the picker works without
5
+ // network access the source-of-truth at build time is the sample-app's
6
+ // manifest, kept in sync via a CI drift-test.
6
7
 
7
8
  import { readFileSync } from "node:fs";
8
9
  import { dirname, resolve } from "node:path";