create-kumiko-app 0.412.0 → 0.413.0
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 +67 -67
- package/package.json +5 -5
- package/src/index.ts +5 -6
package/feature-manifest.json
CHANGED
|
@@ -694,73 +694,6 @@
|
|
|
694
694
|
"recommended": true
|
|
695
695
|
}
|
|
696
696
|
},
|
|
697
|
-
{
|
|
698
|
-
"name": "contact",
|
|
699
|
-
"description": "Contact inbox: an anonymous browser client (GET /contact/client.js) submits questions, contact requests, bug reports and wishes behind a honeypot, a minimum submit time and a single-use proof-of-work challenge; signed-in users file reports from the admin. Every request is stored platform-wide and every SystemAdmin is notified by mail, optionally also in a Telegram chat (option `telegram`, off by default); the notification names only the kind, the app and a link, never name, address, phone, subject or message, because mail and Telegram cannot be shredded. SystemAdmins reply by mail (Reply-To set, attachments, quoting the original) and mark requests done; a website sender gets a fixed acknowledgement, a signed-in reporter a copy and an in-app note. Personal data is crypto-shredding-ready and the EXT_USER_DATA hooks export and erase a user's requests.",
|
|
700
|
-
"toggleableDefault": null,
|
|
701
|
-
"adoptsBundledLists": true,
|
|
702
|
-
"requires": [
|
|
703
|
-
"config",
|
|
704
|
-
"delivery",
|
|
705
|
-
"user-data-rights",
|
|
706
|
-
"files",
|
|
707
|
-
"notes-history"
|
|
708
|
-
],
|
|
709
|
-
"optionalRequires": [
|
|
710
|
-
"channel-telegram"
|
|
711
|
-
],
|
|
712
|
-
"configReads": [],
|
|
713
|
-
"exposesApis": [],
|
|
714
|
-
"usesApis": [],
|
|
715
|
-
"extensionsUsed": [
|
|
716
|
-
{
|
|
717
|
-
"extensionName": "userData",
|
|
718
|
-
"entityName": "contact-request"
|
|
719
|
-
},
|
|
720
|
-
{
|
|
721
|
-
"extensionName": "userData",
|
|
722
|
-
"entityName": "contact-reply"
|
|
723
|
-
}
|
|
724
|
-
],
|
|
725
|
-
"configKeys": [
|
|
726
|
-
{
|
|
727
|
-
"key": "reply-to",
|
|
728
|
-
"qualifiedName": "contact:config:reply-to",
|
|
729
|
-
"type": "text",
|
|
730
|
-
"scope": "system",
|
|
731
|
-
"default": "",
|
|
732
|
-
"encrypted": false,
|
|
733
|
-
"computed": false,
|
|
734
|
-
"validated": false,
|
|
735
|
-
"options": null,
|
|
736
|
-
"bounds": null,
|
|
737
|
-
"pattern": {
|
|
738
|
-
"regex": "^$|^[^\\s@<>]{1,64}@[^\\s@<>]{1,200}\\.[^\\s@<>]{2,24}$"
|
|
739
|
-
},
|
|
740
|
-
"writeRoles": [
|
|
741
|
-
"SystemAdmin"
|
|
742
|
-
],
|
|
743
|
-
"readRoles": [
|
|
744
|
-
"SystemAdmin"
|
|
745
|
-
]
|
|
746
|
-
}
|
|
747
|
-
],
|
|
748
|
-
"secrets": [],
|
|
749
|
-
"writeHandlers": [
|
|
750
|
-
"contact:write:forward-request",
|
|
751
|
-
"contact:write:mark-done",
|
|
752
|
-
"contact:write:notify-reporter-in-app",
|
|
753
|
-
"contact:write:reply",
|
|
754
|
-
"contact:write:report",
|
|
755
|
-
"contact:write:send-reply-mail",
|
|
756
|
-
"contact:write:submit"
|
|
757
|
-
],
|
|
758
|
-
"uiHints": {
|
|
759
|
-
"displayLabel": "Contact",
|
|
760
|
-
"category": "communication",
|
|
761
|
-
"recommended": false
|
|
762
|
-
}
|
|
763
|
-
},
|
|
764
697
|
{
|
|
765
698
|
"name": "crypto-shredding",
|
|
766
699
|
"description": "Operator-level crypto-shredding trigger. `forget-subject` erases a user or tenant subject key in the configured KMS adapter, making every PII field encrypted under it permanently unreadable (reads render the `[[erased]]` sentinel), and appends a `subject-forgotten` audit event. Requires a KMS adapter (`runProdApp({ kms })`). The automated Art.-17 deletion pipeline in `user-data-rights` erases keys itself; this command covers manual forgets (authority requests, operator recovery, tenant destroy).",
|
|
@@ -1466,6 +1399,73 @@
|
|
|
1466
1399
|
"secrets": [],
|
|
1467
1400
|
"writeHandlers": []
|
|
1468
1401
|
},
|
|
1402
|
+
{
|
|
1403
|
+
"name": "helpdesk",
|
|
1404
|
+
"description": "Helpdesk inbox: an anonymous browser client (GET /helpdesk/client.js) submits questions, contact requests, bug reports and wishes behind a honeypot, a minimum submit time and a single-use proof-of-work challenge; signed-in users file reports from the admin. Every request is stored platform-wide and every SystemAdmin is notified by mail, optionally also in a Telegram chat (option `telegram`, off by default); the notification names only the kind, the app and a link, never name, address, phone, subject or message, because mail and Telegram cannot be shredded. SystemAdmins reply by mail (Reply-To set, attachments, quoting the original) and mark requests done; a website sender gets a fixed acknowledgement, a signed-in reporter a copy and an in-app note. Personal data is crypto-shredding-ready and the EXT_USER_DATA hooks export and erase a user's requests.",
|
|
1405
|
+
"toggleableDefault": null,
|
|
1406
|
+
"adoptsBundledLists": true,
|
|
1407
|
+
"requires": [
|
|
1408
|
+
"config",
|
|
1409
|
+
"delivery",
|
|
1410
|
+
"user-data-rights",
|
|
1411
|
+
"files",
|
|
1412
|
+
"notes-history"
|
|
1413
|
+
],
|
|
1414
|
+
"optionalRequires": [
|
|
1415
|
+
"channel-telegram"
|
|
1416
|
+
],
|
|
1417
|
+
"configReads": [],
|
|
1418
|
+
"exposesApis": [],
|
|
1419
|
+
"usesApis": [],
|
|
1420
|
+
"extensionsUsed": [
|
|
1421
|
+
{
|
|
1422
|
+
"extensionName": "userData",
|
|
1423
|
+
"entityName": "helpdesk-request"
|
|
1424
|
+
},
|
|
1425
|
+
{
|
|
1426
|
+
"extensionName": "userData",
|
|
1427
|
+
"entityName": "helpdesk-reply"
|
|
1428
|
+
}
|
|
1429
|
+
],
|
|
1430
|
+
"configKeys": [
|
|
1431
|
+
{
|
|
1432
|
+
"key": "reply-to",
|
|
1433
|
+
"qualifiedName": "helpdesk:config:reply-to",
|
|
1434
|
+
"type": "text",
|
|
1435
|
+
"scope": "system",
|
|
1436
|
+
"default": "",
|
|
1437
|
+
"encrypted": false,
|
|
1438
|
+
"computed": false,
|
|
1439
|
+
"validated": false,
|
|
1440
|
+
"options": null,
|
|
1441
|
+
"bounds": null,
|
|
1442
|
+
"pattern": {
|
|
1443
|
+
"regex": "^$|^[^\\s@<>]{1,64}@[^\\s@<>]{1,200}\\.[^\\s@<>]{2,24}$"
|
|
1444
|
+
},
|
|
1445
|
+
"writeRoles": [
|
|
1446
|
+
"SystemAdmin"
|
|
1447
|
+
],
|
|
1448
|
+
"readRoles": [
|
|
1449
|
+
"SystemAdmin"
|
|
1450
|
+
]
|
|
1451
|
+
}
|
|
1452
|
+
],
|
|
1453
|
+
"secrets": [],
|
|
1454
|
+
"writeHandlers": [
|
|
1455
|
+
"helpdesk:write:forward-request",
|
|
1456
|
+
"helpdesk:write:mark-done",
|
|
1457
|
+
"helpdesk:write:notify-reporter-in-app",
|
|
1458
|
+
"helpdesk:write:reply",
|
|
1459
|
+
"helpdesk:write:report",
|
|
1460
|
+
"helpdesk:write:send-reply-mail",
|
|
1461
|
+
"helpdesk:write:submit"
|
|
1462
|
+
],
|
|
1463
|
+
"uiHints": {
|
|
1464
|
+
"displayLabel": "Helpdesk",
|
|
1465
|
+
"category": "communication",
|
|
1466
|
+
"recommended": false
|
|
1467
|
+
}
|
|
1468
|
+
},
|
|
1469
1469
|
{
|
|
1470
1470
|
"name": "host-routing",
|
|
1471
1471
|
"description": "Host- and path-based tenant routing: an authoritative tenant resolver from the subdomain (tenantBy host), a tenant existence check against enabled, active tenants, and the tenant-key query behind createHostDispatch, which picks the HTML file, CSP, locale redirect or 404 per host for runProdApp's hostDispatch.",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-kumiko-app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.413.0",
|
|
4
4
|
"description": "`bun create kumiko-app <name>` — scaffold a new Kumiko app with an interactive feature picker.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@cosmicdrift/kumiko-dev-server": "0.
|
|
31
|
-
"@cosmicdrift/kumiko-framework": "0.
|
|
32
|
-
"@cosmicdrift/kumiko-server-runtime": "0.
|
|
33
|
-
"@cosmicdrift/kumiko-testing": "0.
|
|
30
|
+
"@cosmicdrift/kumiko-dev-server": "0.413.0",
|
|
31
|
+
"@cosmicdrift/kumiko-framework": "0.413.0",
|
|
32
|
+
"@cosmicdrift/kumiko-server-runtime": "0.413.0",
|
|
33
|
+
"@cosmicdrift/kumiko-testing": "0.413.0",
|
|
34
34
|
"@inquirer/core": "^10.3.2",
|
|
35
35
|
"@inquirer/prompts": "^7.10.1"
|
|
36
36
|
},
|
package/src/index.ts
CHANGED
|
@@ -4,12 +4,7 @@
|
|
|
4
4
|
// --print-manifest / --yes) → resolve deps → map to scaffold entries →
|
|
5
5
|
// scaffoldApp() → print next-steps.
|
|
6
6
|
|
|
7
|
-
import {
|
|
8
|
-
type ScaffoldFeatureEntry,
|
|
9
|
-
type ScaffoldStarter,
|
|
10
|
-
scaffoldApp,
|
|
11
|
-
} from "@cosmicdrift/kumiko-dev-server";
|
|
12
|
-
import { renderTestSetup } from "@cosmicdrift/kumiko-testing/scaffold";
|
|
7
|
+
import type { ScaffoldFeatureEntry, ScaffoldStarter } from "@cosmicdrift/kumiko-dev-server";
|
|
13
8
|
import { resolveDeps } from "./dep-resolver";
|
|
14
9
|
import { FEATURE_CONSTRUCTORS } from "./feature-constructors";
|
|
15
10
|
import { loadManifest, type Manifest } from "./manifest";
|
|
@@ -78,6 +73,10 @@ export async function runCreate(args: CliArgs): Promise<number> {
|
|
|
78
73
|
`→ Scaffolding ${features.length} feature${features.length === 1 ? "" : "s"} into ./${args.name}/ …`,
|
|
79
74
|
);
|
|
80
75
|
|
|
76
|
+
// The dev-server barrel pulls in framework, server-runtime and renderer (~0.6 s cold);
|
|
77
|
+
// loading it here keeps --help and --print-manifest fast.
|
|
78
|
+
const { scaffoldApp } = await import("@cosmicdrift/kumiko-dev-server");
|
|
79
|
+
const { renderTestSetup } = await import("@cosmicdrift/kumiko-testing/scaffold");
|
|
81
80
|
const result = await scaffoldApp({
|
|
82
81
|
name: args.name,
|
|
83
82
|
cwd: args.cwd,
|