create-kumiko-app 0.4.20 → 0.4.23

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "source": "samples/apps/use-all-bundled APP_FEATURES (composeFeatures includeBundled)",
3
- "featureCount": 42,
3
+ "featureCount": 44,
4
4
  "features": [
5
5
  {
6
6
  "name": "audit",
@@ -584,6 +584,58 @@
584
584
  "recommended": false
585
585
  }
586
586
  },
587
+ {
588
+ "name": "folders",
589
+ "description": "Generic, host-agnostic hierarchical folders for any entity. Owns two event-sourced entities — the per-tenant `folder` tree (`read_folders`, self-referential via parentId) and SINGLE-membership `folder-assignment` rows keyed by (entityType, entityId) (`read_folder_assignments`) — so filing an entity adds NO column to the host and needs no relational pivot or JOIN. The folder catalog uses the generic entity handlers (create, update [= rename, optimistic-locked], delete, list, detail); set-folder puts/moves an entity into a folder (one folder per entity) and clear-folder unfiles it (both idempotent). Read which folder an entity is in, or which entities a folder holds, by listing `folder-assignment` filtered on `entityId` or `folderId`. Every path uses one access rule — adopt the host's model with createFoldersFeature({ access: { openToAll: true } }) or pin roles. Pass { toggleable: { default: false } } to make the whole feature tier-gatable via the tier-engine (no host hook).",
590
+ "toggleableDefault": null,
591
+ "requires": [],
592
+ "optionalRequires": [],
593
+ "configReads": [],
594
+ "exposesApis": [],
595
+ "usesApis": [],
596
+ "extensionsUsed": [],
597
+ "configKeys": [],
598
+ "secrets": [],
599
+ "writeHandlers": [
600
+ "folders:write:clear-folder",
601
+ "folders:write:folder:create",
602
+ "folders:write:folder:delete",
603
+ "folders:write:folder:update",
604
+ "folders:write:set-folder"
605
+ ],
606
+ "uiHints": {
607
+ "displayLabel": "Folders",
608
+ "category": "data",
609
+ "recommended": false
610
+ }
611
+ },
612
+ {
613
+ "name": "folders-user-data",
614
+ "description": "GDPR (Art. 20 export / Art. 17 erasure) coverage for the `folders` feature's `folder` + `folder-assignment` entities. Mounts the EXT_USER_DATA export + delete hooks so a tenant's folder tree and its entity-to-folder assignments are included in the user-data export bundle and erased on a tenant-scoped forget (single-user tenants only; multi-user + anonymize are no-ops since folder rows carry no per-user PII). Kept separate from `folders` so folder consumers without the user-data-rights pipeline don't pull a hard dependency — requires `user-data-rights`, optionalRequires `folders`.",
615
+ "toggleableDefault": null,
616
+ "requires": [
617
+ "user-data-rights"
618
+ ],
619
+ "optionalRequires": [
620
+ "folders"
621
+ ],
622
+ "configReads": [],
623
+ "exposesApis": [],
624
+ "usesApis": [],
625
+ "extensionsUsed": [
626
+ {
627
+ "extensionName": "userData",
628
+ "entityName": "folder"
629
+ },
630
+ {
631
+ "extensionName": "userData",
632
+ "entityName": "folder-assignment"
633
+ }
634
+ ],
635
+ "configKeys": [],
636
+ "secrets": [],
637
+ "writeHandlers": []
638
+ },
587
639
  {
588
640
  "name": "jobs",
589
641
  "description": "Persistence and operator tooling for background jobs registered via `r.job(...)`. Every job execution appends `run-started`, `run-completed`, and `run-failed` events to the `jobRun` aggregate stream, which two inline projections materialize into `read_job_runs` (current status + duration) and `read_job_run_logs` (per-line log rows). Exposes `jobs:write:trigger` (manual run) and `jobs:write:retry` (operator retry of a failed run), plus `jobs:query:list` and `jobs:query:details` for the operator UI.",
@@ -1604,7 +1656,7 @@
1604
1656
  },
1605
1657
  {
1606
1658
  "name": "user-data-rights",
1607
- "description": "Implements GDPR Art. 15 (access / `my-audit-log` query), Art. 17 (erasure / `request-deletion` + `cancel-deletion`, plus the anonymous email-verified `request-deletion-by-email` + `confirm-deletion-by-token` flow for lockout-safe self-service, + cron cleanup with grace period), Art. 18 (restriction / `restrict-account` + `lift-restriction`), and Art. 20 (portability / async `request-export` → ZIP via `file-foundation`, Magic-Link download) as first-class HTTP handlers and cron jobs. Each domain feature opts in by calling `r.useExtension(EXT_USER_DATA, \"<entity>\", { export, delete })` — the feature then orchestrates the export and forget pipelines across all registered hooks automatically. Requires `user`, `data-retention`, `compliance-profiles`, and `sessions`.",
1659
+ "description": "Implements GDPR Art. 15 (access / `my-audit-log` query), Art. 17 (erasure / `request-deletion` + `cancel-deletion`, plus the anonymous email-verified `request-deletion-by-email` + `confirm-deletion-by-token` flow for lockout-safe self-service, + cron cleanup with grace period), Art. 18 (restriction / `restrict-account` + `lift-restriction`), and Art. 20 (portability / async `request-export` → ZIP via `file-foundation`, Magic-Link download) as first-class HTTP handlers and cron jobs. Each domain feature opts in by calling `r.useExtension(EXT_USER_DATA, \"<entity>\", { export, delete })` — the feature then orchestrates the export and forget pipelines across all registered hooks automatically. When `mail-foundation` and a `mail-transport-*` are mounted, it also sends the four GDPR notifications (export ready/failed, deletion requested/executed) itself with no app callback code, rendered in each recipient’s locale. Requires `user`, `data-retention`, `compliance-profiles`, and `sessions`.",
1608
1660
  "toggleableDefault": null,
1609
1661
  "requires": [
1610
1662
  "user",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-kumiko-app",
3
- "version": "0.4.20",
3
+ "version": "0.4.23",
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>",
@@ -30,8 +30,8 @@
30
30
  "vendor:manifest": "bun run scripts/vendor-manifest.ts"
31
31
  },
32
32
  "dependencies": {
33
- "@cosmicdrift/kumiko-dev-server": "0.89.0",
34
- "@cosmicdrift/kumiko-framework": "0.89.0",
33
+ "@cosmicdrift/kumiko-dev-server": "0.90.2",
34
+ "@cosmicdrift/kumiko-framework": "0.90.2",
35
35
  "@inquirer/prompts": "^7.4.0"
36
36
  },
37
37
  "publishConfig": {