create-kumiko-app 0.406.0 → 0.410.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "source": "samples/apps/use-all-bundled APP_FEATURES (composeFeatures includeBundled + signup)",
3
- "featureCount": 90,
3
+ "featureCount": 92,
4
4
  "features": [
5
5
  {
6
6
  "name": "account-security",
@@ -694,6 +694,73 @@
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
+ },
697
764
  {
698
765
  "name": "crypto-shredding",
699
766
  "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).",
@@ -3164,6 +3231,37 @@
3164
3231
  "recommended": false
3165
3232
  }
3166
3233
  },
3234
+ {
3235
+ "name": "tenant-inactivity",
3236
+ "description": "Deletes abandoned free accounts: warns the tenant owners before the deadline, then files the regular tenant-lifecycle deletion request. Activity or the keep-account link restarts the period; tiers without a rule are exempt.",
3237
+ "toggleableDefault": null,
3238
+ "requires": [
3239
+ "sessions",
3240
+ "tenant",
3241
+ "tenant-lifecycle",
3242
+ "delivery"
3243
+ ],
3244
+ "optionalRequires": [],
3245
+ "configReads": [],
3246
+ "exposesApis": [],
3247
+ "usesApis": [],
3248
+ "extensionsUsed": [
3249
+ {
3250
+ "extensionName": "tenantData",
3251
+ "entityName": "tenant-inactivity-state"
3252
+ }
3253
+ ],
3254
+ "configKeys": [],
3255
+ "secrets": [],
3256
+ "writeHandlers": [
3257
+ "tenant-inactivity:write:keep-account"
3258
+ ],
3259
+ "uiHints": {
3260
+ "displayLabel": "Tenant Inactivity · Deletion",
3261
+ "category": "compliance",
3262
+ "recommended": false
3263
+ }
3264
+ },
3167
3265
  {
3168
3266
  "name": "tenant-lifecycle",
3169
3267
  "description": "Tenant-destroy lifecycle: request/cancel destruction with compliance-profile grace, auth 410 gate for teardown states, cron trigger after grace, and staged destroy runner (extension fan-out, subject-key erase, tenant tombstone).",
@@ -3173,7 +3271,8 @@
3173
3271
  "compliance-profiles"
3174
3272
  ],
3175
3273
  "optionalRequires": [
3176
- "sessions"
3274
+ "sessions",
3275
+ "data-retention"
3177
3276
  ],
3178
3277
  "configReads": [],
3179
3278
  "exposesApis": [
@@ -3183,6 +3282,18 @@
3183
3282
  "compliance.forTenant"
3184
3283
  ],
3185
3284
  "extensionsUsed": [
3285
+ {
3286
+ "extensionName": "tenantDestructionHold",
3287
+ "entityName": "tenant-lifecycle"
3288
+ },
3289
+ {
3290
+ "extensionName": "tenantData",
3291
+ "entityName": "tenant-compliance-profile"
3292
+ },
3293
+ {
3294
+ "extensionName": "tenantData",
3295
+ "entityName": "tenant-retention-override"
3296
+ },
3186
3297
  {
3187
3298
  "extensionName": "tenantLifecycleStatus",
3188
3299
  "entityName": "tenant-lifecycle"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-kumiko-app",
3
- "version": "0.406.0",
3
+ "version": "0.410.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.406.0",
31
- "@cosmicdrift/kumiko-framework": "0.406.0",
32
- "@cosmicdrift/kumiko-server-runtime": "0.406.0",
33
- "@cosmicdrift/kumiko-testing": "0.406.0",
30
+ "@cosmicdrift/kumiko-dev-server": "0.410.0",
31
+ "@cosmicdrift/kumiko-framework": "0.410.0",
32
+ "@cosmicdrift/kumiko-server-runtime": "0.410.0",
33
+ "@cosmicdrift/kumiko-testing": "0.410.0",
34
34
  "@inquirer/core": "^10.3.2",
35
35
  "@inquirer/prompts": "^7.10.1"
36
36
  },
package/src/changes.json CHANGED
@@ -1,4 +1,10 @@
1
1
  [
2
+ {
3
+ "version": "0.409.0",
4
+ "type": "improvement",
5
+ "title": "Feature manifest lists contact and its new options",
6
+ "detail": "`feature-manifest.json` describes the bundled feature `contact` with its config keys and dependencies (`config`, `delivery`, `user-data-rights`, `files`; `channel-telegram` with option `telegram`), so scaffolding and `kumiko check` know it."
7
+ },
2
8
  {
3
9
  "version": "0.363.0",
4
10
  "type": "improvement",