create-kumiko-app 0.4.20 → 0.4.21
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/feature-manifest.json +53 -1
- package/package.json +3 -3
package/feature-manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"source": "samples/apps/use-all-bundled APP_FEATURES (composeFeatures includeBundled)",
|
|
3
|
-
"featureCount":
|
|
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.",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-kumiko-app",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.21",
|
|
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.
|
|
34
|
-
"@cosmicdrift/kumiko-framework": "0.
|
|
33
|
+
"@cosmicdrift/kumiko-dev-server": "0.90.0",
|
|
34
|
+
"@cosmicdrift/kumiko-framework": "0.90.0",
|
|
35
35
|
"@inquirer/prompts": "^7.4.0"
|
|
36
36
|
},
|
|
37
37
|
"publishConfig": {
|