create-kumiko-app 0.4.111 → 0.4.113
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 +80 -4
- 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": 55,
|
|
4
4
|
"features": [
|
|
5
5
|
{
|
|
6
6
|
"name": "admin-shell",
|
|
@@ -98,6 +98,82 @@
|
|
|
98
98
|
]
|
|
99
99
|
}
|
|
100
100
|
},
|
|
101
|
+
{
|
|
102
|
+
"name": "auth-mfa",
|
|
103
|
+
"description": "TOTP-based two-factor authentication: enable/disable flow with QR-code setup, 8 single-use recovery codes, and (once wired into a login flow) a second login step after password verification. Secrets are envelope-encrypted at rest via the same MasterKeyProvider as `secrets`/`config`.",
|
|
104
|
+
"toggleableDefault": null,
|
|
105
|
+
"requires": [
|
|
106
|
+
"user",
|
|
107
|
+
"config"
|
|
108
|
+
],
|
|
109
|
+
"optionalRequires": [],
|
|
110
|
+
"configReads": [],
|
|
111
|
+
"exposesApis": [],
|
|
112
|
+
"usesApis": [],
|
|
113
|
+
"extensionsUsed": [],
|
|
114
|
+
"configKeys": [
|
|
115
|
+
{
|
|
116
|
+
"key": "required",
|
|
117
|
+
"qualifiedName": "auth-mfa:config:required",
|
|
118
|
+
"type": "select",
|
|
119
|
+
"scope": "tenant",
|
|
120
|
+
"default": "optional",
|
|
121
|
+
"encrypted": false,
|
|
122
|
+
"computed": false,
|
|
123
|
+
"options": [
|
|
124
|
+
"optional",
|
|
125
|
+
"admins",
|
|
126
|
+
"all"
|
|
127
|
+
],
|
|
128
|
+
"bounds": null,
|
|
129
|
+
"pattern": null,
|
|
130
|
+
"writeRoles": [
|
|
131
|
+
"TenantAdmin",
|
|
132
|
+
"Admin",
|
|
133
|
+
"SystemAdmin"
|
|
134
|
+
],
|
|
135
|
+
"readRoles": [
|
|
136
|
+
"all"
|
|
137
|
+
]
|
|
138
|
+
}
|
|
139
|
+
],
|
|
140
|
+
"secrets": [],
|
|
141
|
+
"writeHandlers": [
|
|
142
|
+
"auth-mfa:write:disable",
|
|
143
|
+
"auth-mfa:write:enable-confirm",
|
|
144
|
+
"auth-mfa:write:enable-start",
|
|
145
|
+
"auth-mfa:write:regenerate-recovery",
|
|
146
|
+
"auth-mfa:write:verify"
|
|
147
|
+
],
|
|
148
|
+
"uiHints": {
|
|
149
|
+
"displayLabel": "2FA / TOTP",
|
|
150
|
+
"category": "identity",
|
|
151
|
+
"recommended": true
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"name": "auth-mfa-user-data",
|
|
156
|
+
"description": "GDPR (Art. 20 export / Art. 17 erasure) coverage for the `auth-mfa` feature's `user-mfa` entity. Mounts the EXT_USER_DATA export + delete hooks so 2FA enrollment status is included in the user-data export bundle and a user's TOTP secret + recovery codes are hard-deleted (via executor.forget, rebuild-safe) on a data-subject erasure request. Kept separate from `auth-mfa` so consumers without the user-data-rights pipeline don't pull a hard dependency — requires `user-data-rights`, optionalRequires `auth-mfa`.",
|
|
157
|
+
"toggleableDefault": null,
|
|
158
|
+
"requires": [
|
|
159
|
+
"user-data-rights"
|
|
160
|
+
],
|
|
161
|
+
"optionalRequires": [
|
|
162
|
+
"auth-mfa"
|
|
163
|
+
],
|
|
164
|
+
"configReads": [],
|
|
165
|
+
"exposesApis": [],
|
|
166
|
+
"usesApis": [],
|
|
167
|
+
"extensionsUsed": [
|
|
168
|
+
{
|
|
169
|
+
"extensionName": "userData",
|
|
170
|
+
"entityName": "user-mfa"
|
|
171
|
+
}
|
|
172
|
+
],
|
|
173
|
+
"configKeys": [],
|
|
174
|
+
"secrets": [],
|
|
175
|
+
"writeHandlers": []
|
|
176
|
+
},
|
|
101
177
|
{
|
|
102
178
|
"name": "billing-foundation",
|
|
103
179
|
"description": "Plugin host for subscription billing — manages the `read_subscriptions` projection table and exposes 5 domain events (subscription created/updated/canceled, invoice paid/failed) appended by the foundation's own `billing-foundation:write:process-event` write-handler after provider plugins verify and normalize each webhook. Also ships `billing-foundation:write:create-checkout-session` and `billing-foundation:write:create-portal-session` write-handlers, a `billing-foundation:query:subscription:list` query handler, and a `createSubscriptionWebhookHandler` factory for the `/api/subscription/webhook/:providerName` route. Low-level building block — use `subscription-stripe` or `subscription-mollie` unless you are writing a new payment provider.",
|
|
@@ -1054,7 +1130,7 @@
|
|
|
1054
1130
|
},
|
|
1055
1131
|
{
|
|
1056
1132
|
"name": "managed-pages",
|
|
1057
|
-
"description": "Tenant-editable, server-rendered public pages with per-tenant branding. Stores one Markdown `page` per `(tenantId, slug, lang)` in the `read_pages` entity table with a `published` gate plus `description`/`ogImage` SEO meta. Registers an anonymous `GET {basePath}/:slug` route that resolves the tenant from the request Host via the app-supplied `resolveApexTenant`, serves only published pages (drafts → 404), renders Markdown through the hardened `page-render` core, and isolates per-tenant content with `Vary: Host`. Ships TenantAdmin/SystemAdmin admin screens (`entityList` + `entityEdit`) backed by convention CRUD handlers (`managed-pages:write:page:{create,update,delete}`, `managed-pages:query:page:{list,detail}`); the app wires nav/workspace onto `managed-pages:screen:page-list`. Also exposes `managed-pages:query:by-tenant-published` (anonymous, SQL-filtered on `published`) for sitemap/discovery consumers such as the `seo` feature. Branding (via `config`, scope tenant): `branding-{title,description,site-url,accent-color,logo-url,layout-preset}` keys with write-time validation (hex color, https URLs), a `configEdit` self-service screen (`managed-pages:screen:branding-settings`), and a `managed-pages:query:branding` read that the render path applies as scoped `:root` CSS vars + a logo/title header. Also exposes `managed-pages:write:set` (idempotent slug-keyed upsert, SystemAdmin cross-tenant via `tenantIdOverride`) as a provisioning API. Requires `config` + `anonymousAccess` wired at app bootstrap.",
|
|
1133
|
+
"description": "Tenant-editable, server-rendered public pages with per-tenant branding. Stores one Markdown `page` per `(tenantId, slug, lang)` in the `read_pages` entity table with a `published` gate plus `description`/`ogImage` SEO meta. Registers an anonymous `GET {basePath}/:slug` route that resolves the tenant from the request Host via the app-supplied `resolveApexTenant`, serves only published pages (drafts → 404), renders Markdown through the hardened `page-render` core, and isolates per-tenant content with `Vary: Host`. Ships TenantAdmin/SystemAdmin admin screens (`entityList` + `entityEdit`) backed by convention CRUD handlers (`managed-pages:write:page:{create,update,delete}`, `managed-pages:query:page:{list,detail}`); the app wires nav/workspace onto `managed-pages:screen:page-list`. Also exposes `managed-pages:query:by-tenant-published` (anonymous, SQL-filtered on `published`) for sitemap/discovery consumers such as the `seo` feature. Branding (via `config`, scope tenant): `branding-{title,description,site-url,accent-color,logo-url,layout-preset,custom-css}` keys with write-time validation (hex color, https URLs), a `configEdit` self-service screen (`managed-pages:screen:branding-settings`), and a `managed-pages:query:branding` read that the render path applies as scoped `:root` CSS vars + a logo/title header. Also exposes `managed-pages:write:set` (idempotent slug-keyed upsert, SystemAdmin cross-tenant via `tenantIdOverride`) as a provisioning API. Requires `config` + `anonymousAccess` wired at app bootstrap.",
|
|
1058
1134
|
"toggleableDefault": null,
|
|
1059
1135
|
"requires": [
|
|
1060
1136
|
"config"
|
|
@@ -1616,7 +1692,7 @@
|
|
|
1616
1692
|
"type": "text",
|
|
1617
1693
|
"scope": "system",
|
|
1618
1694
|
"default": null,
|
|
1619
|
-
"encrypted":
|
|
1695
|
+
"encrypted": true,
|
|
1620
1696
|
"computed": false,
|
|
1621
1697
|
"options": null,
|
|
1622
1698
|
"bounds": null,
|
|
@@ -1659,7 +1735,7 @@
|
|
|
1659
1735
|
"type": "text",
|
|
1660
1736
|
"scope": "system",
|
|
1661
1737
|
"default": null,
|
|
1662
|
-
"encrypted":
|
|
1738
|
+
"encrypted": true,
|
|
1663
1739
|
"computed": false,
|
|
1664
1740
|
"options": null,
|
|
1665
1741
|
"bounds": null,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-kumiko-app",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.113",
|
|
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.147.
|
|
34
|
-
"@cosmicdrift/kumiko-framework": "0.147.
|
|
33
|
+
"@cosmicdrift/kumiko-dev-server": "0.147.3",
|
|
34
|
+
"@cosmicdrift/kumiko-framework": "0.147.3",
|
|
35
35
|
"@inquirer/core": "^10.0.0",
|
|
36
36
|
"@inquirer/prompts": "^7.4.0"
|
|
37
37
|
},
|