@cosmicdrift/kumiko-samples 0.378.0 → 0.380.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.
Files changed (509) hide show
  1. package/package.json +1 -1
  2. package/packages/bundled-features/package.json +18 -17
  3. package/packages/bundled-features/src/account-security/feature.ts +2 -2
  4. package/packages/bundled-features/src/account-security/index.ts +8 -8
  5. package/packages/bundled-features/src/account-security/{constants.ts → web/constants.ts} +0 -2
  6. package/packages/bundled-features/src/account-security/{i18n.ts → web/i18n.ts} +0 -1
  7. package/packages/bundled-features/src/admin-shell/feature.ts +10 -9
  8. package/packages/bundled-features/src/admin-shell/index.ts +8 -8
  9. package/packages/bundled-features/src/admin-shell/web/client-plugin.tsx +2 -3
  10. package/packages/bundled-features/src/admin-shell/{constants.ts → web/constants.ts} +0 -1
  11. package/packages/bundled-features/src/admin-shell/web/default-translations.ts +10 -0
  12. package/packages/bundled-features/src/admin-shell/web/i18n.ts +51 -9
  13. package/packages/bundled-features/src/admin-shell/web/index.ts +0 -1
  14. package/packages/bundled-features/src/audit/changes.json +7 -0
  15. package/packages/bundled-features/src/audit/feature.ts +72 -64
  16. package/packages/bundled-features/src/audit/handlers/audit-events.ts +153 -0
  17. package/packages/bundled-features/src/audit/handlers/audit-system-db.ts +13 -0
  18. package/packages/bundled-features/src/audit/handlers/details-all-tenants.query.ts +26 -0
  19. package/packages/bundled-features/src/audit/handlers/details.query.ts +11 -39
  20. package/packages/bundled-features/src/audit/handlers/list-all-tenants.query.ts +47 -0
  21. package/packages/bundled-features/src/audit/handlers/list.query.ts +16 -123
  22. package/packages/bundled-features/src/audit/handlers/resolve-audit-tenant.ts +21 -7
  23. package/packages/bundled-features/src/audit/index.ts +1 -1
  24. package/packages/bundled-features/src/audit/run-escape-hatch-retention.ts +4 -4
  25. package/packages/bundled-features/src/audit/screens.ts +82 -0
  26. package/packages/bundled-features/src/audit/web/client-plugin.tsx +2 -3
  27. package/packages/bundled-features/src/audit/{constants.ts → web/constants.ts} +11 -1
  28. package/packages/bundled-features/src/audit/web/default-translations.ts +7 -0
  29. package/packages/bundled-features/src/audit/web/i18n.ts +33 -7
  30. package/packages/bundled-features/src/audit/web/index.ts +0 -2
  31. package/packages/bundled-features/src/auth-email-password/bootstrap.ts +6 -6
  32. package/packages/bundled-features/src/auth-email-password/changes.json +6 -0
  33. package/packages/bundled-features/src/auth-email-password/errors.ts +1 -1
  34. package/packages/bundled-features/src/auth-email-password/feature.ts +2 -2
  35. package/packages/bundled-features/src/auth-email-password/handlers/confirm-account-unlock.write.ts +1 -1
  36. package/packages/bundled-features/src/auth-email-password/handlers/invite-accept-with-login.write.ts +4 -4
  37. package/packages/bundled-features/src/auth-email-password/handlers/invite-create.write.ts +3 -3
  38. package/packages/bundled-features/src/auth-email-password/handlers/invite-info.query.ts +1 -1
  39. package/packages/bundled-features/src/auth-email-password/handlers/login.write.ts +38 -4
  40. package/packages/bundled-features/src/auth-email-password/handlers/request-account-unlock.write.ts +1 -1
  41. package/packages/bundled-features/src/auth-email-password/handlers/request-email-verification.write.ts +1 -1
  42. package/packages/bundled-features/src/auth-email-password/handlers/request-password-reset.write.ts +1 -1
  43. package/packages/bundled-features/src/auth-email-password/handlers/reset-password.write.ts +1 -1
  44. package/packages/bundled-features/src/auth-email-password/handlers/verify-email.write.ts +1 -1
  45. package/packages/bundled-features/src/auth-email-password/index.ts +6 -1
  46. package/packages/bundled-features/src/auth-email-password/mail-notifications.ts +1 -1
  47. package/packages/bundled-features/src/auth-email-password/signup-activation.ts +1 -1
  48. package/packages/bundled-features/src/auth-email-password/web/auth-client.ts +0 -1
  49. package/packages/bundled-features/src/auth-email-password/web/auth-form-logic.ts +0 -1
  50. package/packages/bundled-features/src/auth-email-password/web/auth-form-primitives.tsx +0 -1
  51. package/packages/bundled-features/src/auth-email-password/web/auth-gate.tsx +0 -1
  52. package/packages/bundled-features/src/auth-email-password/web/auth-redirect.ts +0 -1
  53. package/packages/bundled-features/src/auth-email-password/web/client-actions.ts +0 -1
  54. package/packages/bundled-features/src/auth-email-password/web/client-plugin.ts +1 -2
  55. package/packages/bundled-features/src/auth-email-password/web/confirm-account-unlock-screen.tsx +0 -1
  56. package/packages/bundled-features/src/auth-email-password/{constants.ts → web/constants.ts} +3 -6
  57. package/packages/bundled-features/src/auth-email-password/web/default-topbar-actions.tsx +0 -1
  58. package/packages/bundled-features/src/auth-email-password/web/forgot-password-screen.tsx +0 -1
  59. package/packages/bundled-features/src/auth-email-password/{i18n.ts → web/i18n.ts} +3 -4
  60. package/packages/bundled-features/src/auth-email-password/web/index.ts +1 -2
  61. package/packages/bundled-features/src/auth-email-password/web/invite-accept-screen.tsx +2 -3
  62. package/packages/bundled-features/src/auth-email-password/web/login-screen.tsx +0 -1
  63. package/packages/bundled-features/src/auth-email-password/{mail-i18n.ts → web/mail-i18n.ts} +0 -1
  64. package/packages/bundled-features/src/auth-email-password/web/request-account-unlock-screen.tsx +0 -1
  65. package/packages/bundled-features/src/auth-email-password/web/reset-password-screen.tsx +0 -1
  66. package/packages/bundled-features/src/auth-email-password/web/session-bootstrap-error.tsx +0 -1
  67. package/packages/bundled-features/src/auth-email-password/web/session.tsx +0 -1
  68. package/packages/bundled-features/src/auth-email-password/web/signup-complete-screen.tsx +2 -3
  69. package/packages/bundled-features/src/auth-email-password/web/signup-screen.tsx +0 -1
  70. package/packages/bundled-features/src/auth-email-password/web/tenant-menu-items.tsx +0 -1
  71. package/packages/bundled-features/src/auth-email-password/web/tenant-switcher.tsx +0 -1
  72. package/packages/bundled-features/src/auth-email-password/web/use-shell-user.ts +0 -1
  73. package/packages/bundled-features/src/auth-email-password/web/user-menu.tsx +0 -1
  74. package/packages/bundled-features/src/auth-email-password/web/verify-email-screen.tsx +0 -1
  75. package/packages/bundled-features/src/auth-mfa/changes.json +6 -0
  76. package/packages/bundled-features/src/auth-mfa/errors.ts +2 -2
  77. package/packages/bundled-features/src/auth-mfa/handlers/enable-confirm-preauth.write.ts +1 -1
  78. package/packages/bundled-features/src/auth-mfa/handlers/enable-start-preauth.write.ts +1 -1
  79. package/packages/bundled-features/src/auth-mfa/handlers/enable-start.write.ts +1 -1
  80. package/packages/bundled-features/src/auth-mfa/handlers/verify.write.ts +1 -1
  81. package/packages/bundled-features/src/auth-mfa/index.ts +8 -8
  82. package/packages/bundled-features/src/auth-mfa/mfa-status-checker.ts +4 -4
  83. package/packages/bundled-features/src/auth-mfa/screens.ts +1 -1
  84. package/packages/bundled-features/src/auth-mfa/web/client-plugin.ts +0 -1
  85. package/packages/bundled-features/src/auth-mfa/{constants.ts → web/constants.ts} +0 -1
  86. package/packages/bundled-features/src/auth-mfa/web/i18n.ts +0 -1
  87. package/packages/bundled-features/src/auth-mfa/web/index.ts +0 -1
  88. package/packages/bundled-features/src/auth-mfa/web/mfa-client.ts +0 -1
  89. package/packages/bundled-features/src/auth-mfa/web/mfa-disable-dialog.tsx +1 -2
  90. package/packages/bundled-features/src/auth-mfa/web/mfa-recovery-codes-reveal.tsx +0 -1
  91. package/packages/bundled-features/src/auth-mfa/web/mfa-regenerate-recovery-dialog.tsx +1 -2
  92. package/packages/bundled-features/src/auth-mfa/web/mfa-setup-preauth-screen.tsx +21 -23
  93. package/packages/bundled-features/src/auth-mfa/web/mfa-verify-screen.tsx +0 -1
  94. package/packages/bundled-features/src/billing-foundation/changes.json +18 -0
  95. package/packages/bundled-features/src/billing-foundation/checkout-core.ts +3 -3
  96. package/packages/bundled-features/src/billing-foundation/consumer-protection/consent-text.ts +2 -2
  97. package/packages/bundled-features/src/billing-foundation/consumer-protection/issue-confirmation.ts +11 -3
  98. package/packages/bundled-features/src/billing-foundation/consumer-protection/mail-notifications.ts +11 -1
  99. package/packages/bundled-features/src/billing-foundation/consumer-protection/register-consent.ts +1 -1
  100. package/packages/bundled-features/src/billing-foundation/consumer-protection/register-termination.ts +12 -1
  101. package/packages/bundled-features/src/billing-foundation/consumer-protection/stored-user-email.ts +12 -0
  102. package/packages/bundled-features/src/billing-foundation/consumer-protection/termination-mail.ts +6 -1
  103. package/packages/bundled-features/src/billing-foundation/consumer-protection/termination-notify.ts +1 -1
  104. package/packages/bundled-features/src/billing-foundation/consumer-protection/termination-pages.ts +167 -28
  105. package/packages/bundled-features/src/billing-foundation/consumer-protection/termination-record.ts +102 -3
  106. package/packages/bundled-features/src/billing-foundation/consumer-protection/termination-request.ts +43 -12
  107. package/packages/bundled-features/src/billing-foundation/consumer-protection/termination-revoke.ts +202 -0
  108. package/packages/bundled-features/src/billing-foundation/consumer-protection/termination-texts.ts +70 -0
  109. package/packages/bundled-features/src/billing-foundation/events.ts +20 -2
  110. package/packages/bundled-features/src/billing-foundation/feature.ts +5 -5
  111. package/packages/bundled-features/src/billing-foundation/handlers/process-event.write.ts +82 -9
  112. package/packages/bundled-features/src/billing-foundation/handlers/switch-plan.write.ts +1 -1
  113. package/packages/bundled-features/src/billing-foundation/handlers/sync-subscription.write.ts +1 -1
  114. package/packages/bundled-features/src/billing-foundation/index.ts +27 -27
  115. package/packages/bundled-features/src/billing-foundation/plan-catalog.ts +7 -7
  116. package/packages/bundled-features/src/billing-foundation/screens.ts +1 -1
  117. package/packages/bundled-features/src/billing-foundation/subscription-tier-sync.ts +1 -1
  118. package/packages/bundled-features/src/billing-foundation/types.ts +17 -3
  119. package/packages/bundled-features/src/billing-foundation/validate-options.ts +3 -3
  120. package/packages/bundled-features/src/billing-foundation/web/billing-contact-plan.tsx +1 -3
  121. package/packages/bundled-features/src/billing-foundation/web/billing-plans-panel.tsx +5 -7
  122. package/packages/bundled-features/src/billing-foundation/web/cancel-contract-dialog.tsx +1 -3
  123. package/packages/bundled-features/src/billing-foundation/web/checkout-consent-dialog.tsx +1 -3
  124. package/packages/bundled-features/src/billing-foundation/web/client-plugin.tsx +1 -2
  125. package/packages/bundled-features/src/billing-foundation/{constants.ts → web/constants.ts} +37 -31
  126. package/packages/bundled-features/src/billing-foundation/{consumer-protection → web/consumer-protection}/consent-locale.ts +0 -1
  127. package/packages/bundled-features/src/billing-foundation/{contact-card.ts → web/contact-card.ts} +0 -2
  128. package/packages/bundled-features/src/billing-foundation/web/index.ts +14 -15
  129. package/packages/bundled-features/src/billing-foundation/web/localized-params.ts +0 -2
  130. package/packages/bundled-features/src/billing-foundation/webhook-handler.ts +5 -2
  131. package/packages/bundled-features/src/cap-overview/feature.ts +1 -1
  132. package/packages/bundled-features/src/cap-overview/handlers/caps-usage.query.ts +1 -1
  133. package/packages/bundled-features/src/cap-overview/handlers/tenant-caps-list.query.ts +2 -2
  134. package/packages/bundled-features/src/cap-overview/index.ts +9 -9
  135. package/packages/bundled-features/src/cap-overview/screens.ts +2 -2
  136. package/packages/bundled-features/src/cap-overview/web/cap-cards-panel.tsx +1 -2
  137. package/packages/bundled-features/src/cap-overview/web/cap-usage-bar.tsx +1 -2
  138. package/packages/bundled-features/src/cap-overview/web/cap-usage-cell.tsx +0 -2
  139. package/packages/bundled-features/src/cap-overview/web/client-plugin.tsx +3 -4
  140. package/packages/bundled-features/src/cap-overview/{constants.ts → web/constants.ts} +0 -1
  141. package/packages/bundled-features/src/cap-overview/web/index.ts +0 -1
  142. package/packages/bundled-features/src/cap-overview/{usage-math.ts → web/usage-math.ts} +1 -2
  143. package/packages/bundled-features/src/compliance-profiles/feature.ts +5 -5
  144. package/packages/bundled-features/src/compliance-profiles/index.ts +6 -6
  145. package/packages/bundled-features/src/compliance-profiles/web/client-plugin.tsx +2 -3
  146. package/packages/bundled-features/src/compliance-profiles/web/compliance-profile-catalog.tsx +1 -2
  147. package/packages/bundled-features/src/compliance-profiles/{constants.ts → web/constants.ts} +0 -1
  148. package/packages/bundled-features/src/compliance-profiles/web/i18n.ts +0 -1
  149. package/packages/bundled-features/src/compliance-profiles/web/index.ts +0 -1
  150. package/packages/bundled-features/src/config/index.ts +6 -6
  151. package/packages/bundled-features/src/config/web/client-plugin.ts +1 -2
  152. package/packages/bundled-features/src/config/{constants.ts → web/constants.ts} +0 -1
  153. package/packages/bundled-features/src/config/web/i18n.ts +0 -1
  154. package/packages/bundled-features/src/config/web/index.ts +1 -3
  155. package/packages/bundled-features/src/config/write-helpers.ts +1 -1
  156. package/packages/bundled-features/src/custom-fields/feature.ts +8 -8
  157. package/packages/bundled-features/src/custom-fields/handlers/clear-custom-field.write.ts +1 -1
  158. package/packages/bundled-features/src/custom-fields/handlers/define-tenant-field.write.ts +1 -1
  159. package/packages/bundled-features/src/custom-fields/handlers/delete-system-field.write.ts +1 -1
  160. package/packages/bundled-features/src/custom-fields/handlers/delete-tenant-field.write.ts +4 -4
  161. package/packages/bundled-features/src/custom-fields/handlers/set-custom-field.write.ts +1 -1
  162. package/packages/bundled-features/src/custom-fields/handlers/update-tenant-field.write.ts +1 -1
  163. package/packages/bundled-features/src/custom-fields/index.ts +8 -8
  164. package/packages/bundled-features/src/custom-fields/lib/value-schema.ts +1 -1
  165. package/packages/bundled-features/src/custom-fields/schemas.ts +1 -1
  166. package/packages/bundled-features/src/custom-fields/web/client-plugin.tsx +1 -2
  167. package/packages/bundled-features/src/custom-fields/{constants.ts → web/constants.ts} +18 -19
  168. package/packages/bundled-features/src/custom-fields/web/custom-fields-form-section.tsx +1 -2
  169. package/packages/bundled-features/src/custom-fields/web/i18n.ts +0 -1
  170. package/packages/bundled-features/src/custom-fields/web/index.ts +2 -3
  171. package/packages/bundled-features/src/custom-fields/wire-for-entity.ts +1 -2
  172. package/packages/bundled-features/src/delivery/address-opt-out.ts +1 -1
  173. package/packages/bundled-features/src/delivery/attempt-log-retention.ts +24 -8
  174. package/packages/bundled-features/src/delivery/changes.json +6 -0
  175. package/packages/bundled-features/src/delivery/constants.ts +2 -2
  176. package/packages/bundled-features/src/delivery/i18n.ts +1 -1
  177. package/packages/bundled-features/src/delivery/unsubscribe-page.ts +1 -1
  178. package/packages/bundled-features/src/delivery/web/client-plugin.tsx +6 -7
  179. package/packages/bundled-features/src/delivery/web/delivery-channel-cell.tsx +0 -1
  180. package/packages/bundled-features/src/delivery/web/delivery-error-cell.tsx +0 -1
  181. package/packages/bundled-features/src/delivery/web/delivery-status-cell.tsx +1 -2
  182. package/packages/bundled-features/src/delivery/web/delivery-time-cell.tsx +0 -1
  183. package/packages/bundled-features/src/delivery/web/delivery-type-cell.tsx +0 -1
  184. package/packages/bundled-features/src/delivery/web/index.ts +0 -1
  185. package/packages/bundled-features/src/delivery/{public-names.ts → web/public-names.ts} +0 -1
  186. package/packages/bundled-features/src/document-ingest-foundation/changes.json +6 -0
  187. package/packages/bundled-features/src/document-ingest-foundation/events.ts +4 -0
  188. package/packages/bundled-features/src/document-ingest-foundation/executor.ts +2 -1
  189. package/packages/bundled-features/src/document-ingest-foundation/feature.ts +18 -4
  190. package/packages/bundled-features/src/document-ingest-foundation/index.ts +1 -0
  191. package/packages/bundled-features/src/feature-toggles/feature.ts +7 -7
  192. package/packages/bundled-features/src/feature-toggles/global-feature-state-table.ts +14 -13
  193. package/packages/bundled-features/src/feature-toggles/handlers/list.query.ts +1 -1
  194. package/packages/bundled-features/src/feature-toggles/handlers/registered.query.ts +1 -1
  195. package/packages/bundled-features/src/feature-toggles/handlers/set.write.ts +3 -3
  196. package/packages/bundled-features/src/feature-toggles/index.ts +6 -6
  197. package/packages/bundled-features/src/feature-toggles/web/client-plugin.tsx +1 -2
  198. package/packages/bundled-features/src/feature-toggles/{constants.ts → web/constants.ts} +0 -1
  199. package/packages/bundled-features/src/feature-toggles/web/i18n.ts +0 -1
  200. package/packages/bundled-features/src/feature-toggles/web/index.ts +0 -1
  201. package/packages/bundled-features/src/files/changes.json +7 -0
  202. package/packages/bundled-features/src/folders/feature.ts +1 -1
  203. package/packages/bundled-features/src/folders/handlers/clear-folder.write.ts +1 -1
  204. package/packages/bundled-features/src/folders/handlers/delete-folder.write.ts +1 -1
  205. package/packages/bundled-features/src/folders/handlers/set-folder.write.ts +1 -1
  206. package/packages/bundled-features/src/folders/index.ts +8 -8
  207. package/packages/bundled-features/src/folders/web/client-plugin.tsx +1 -3
  208. package/packages/bundled-features/src/folders/{constants.ts → web/constants.ts} +0 -1
  209. package/packages/bundled-features/src/folders/web/folder-manager.tsx +1 -2
  210. package/packages/bundled-features/src/folders/web/folder-section.tsx +1 -2
  211. package/packages/bundled-features/src/folders/web/i18n.ts +0 -1
  212. package/packages/bundled-features/src/folders/web/index.ts +1 -2
  213. package/packages/bundled-features/src/folders/web/tree.ts +0 -1
  214. package/packages/bundled-features/src/form-draft/changes.json +7 -0
  215. package/packages/bundled-features/src/form-draft/db/queries/cleanup.ts +25 -11
  216. package/packages/bundled-features/src/form-draft/decrypt-draft.ts +24 -0
  217. package/packages/bundled-features/src/form-draft/entity.ts +6 -9
  218. package/packages/bundled-features/src/form-draft/feature.ts +1 -1
  219. package/packages/bundled-features/src/form-draft/handlers/cleanup.job.ts +26 -5
  220. package/packages/bundled-features/src/form-draft/handlers/discard.write.ts +1 -1
  221. package/packages/bundled-features/src/form-draft/handlers/get.query.ts +6 -7
  222. package/packages/bundled-features/src/form-draft/handlers/list.query.ts +13 -7
  223. package/packages/bundled-features/src/form-draft/handlers/save.write.ts +5 -5
  224. package/packages/bundled-features/src/form-draft/index.ts +8 -8
  225. package/packages/bundled-features/src/form-draft/lookup.ts +10 -4
  226. package/packages/bundled-features/src/form-draft/schemas.ts +1 -1
  227. package/packages/bundled-features/src/form-draft/{constants.ts → web/constants.ts} +0 -1
  228. package/packages/bundled-features/src/form-draft-user-data/hooks.ts +2 -2
  229. package/packages/bundled-features/src/inbound-mail-foundation/retention-sweep.ts +10 -10
  230. package/packages/bundled-features/src/jobs/feature.ts +7 -7
  231. package/packages/bundled-features/src/jobs/handlers/retry.write.ts +1 -1
  232. package/packages/bundled-features/src/jobs/handlers/trigger.write.ts +1 -1
  233. package/packages/bundled-features/src/jobs/index.ts +1 -1
  234. package/packages/bundled-features/src/jobs/job-run-table.ts +4 -3
  235. package/packages/bundled-features/src/jobs/web/client-plugin.tsx +2 -3
  236. package/packages/bundled-features/src/jobs/{constants.ts → web/constants.ts} +0 -1
  237. package/packages/bundled-features/src/jobs/web/default-translations.ts +7 -0
  238. package/packages/bundled-features/src/jobs/web/i18n.ts +53 -7
  239. package/packages/bundled-features/src/jobs/web/index.ts +0 -1
  240. package/packages/bundled-features/src/ledger/changes.json +7 -0
  241. package/packages/bundled-features/src/ledger/entity.ts +1 -1
  242. package/packages/bundled-features/src/ledger/feature.ts +1 -1
  243. package/packages/bundled-features/src/ledger/handlers/confirm-schedule-period.write.ts +2 -10
  244. package/packages/bundled-features/src/ledger/handlers/create-transaction.write.ts +1 -1
  245. package/packages/bundled-features/src/ledger/handlers/reports.query.ts +1 -1
  246. package/packages/bundled-features/src/ledger/handlers/reverse-transaction.write.ts +1 -1
  247. package/packages/bundled-features/src/ledger/index.ts +13 -13
  248. package/packages/bundled-features/src/ledger/recurring.ts +1 -1
  249. package/packages/bundled-features/src/ledger/reports.ts +1 -1
  250. package/packages/bundled-features/src/ledger/schemas.ts +1 -1
  251. package/packages/bundled-features/src/ledger/{constants.ts → web/constants.ts} +0 -1
  252. package/packages/bundled-features/src/ledger/web/index.ts +11 -12
  253. package/packages/bundled-features/src/legal-pages/README.md +1 -1
  254. package/packages/bundled-features/src/legal-pages/feature.ts +5 -5
  255. package/packages/bundled-features/src/legal-pages/index.ts +11 -11
  256. package/packages/bundled-features/src/legal-pages/lib/boot-check.ts +1 -1
  257. package/packages/bundled-features/src/legal-pages/lib/validate-routes.ts +1 -1
  258. package/packages/bundled-features/src/legal-pages/web/client-plugin.ts +1 -2
  259. package/packages/bundled-features/src/legal-pages/{constants.ts → web/constants.ts} +6 -8
  260. package/packages/bundled-features/src/legal-pages/web/index.ts +0 -1
  261. package/packages/bundled-features/src/managed-pages/feature.ts +1 -1
  262. package/packages/bundled-features/src/managed-pages/web/client-plugin.tsx +1 -2
  263. package/packages/bundled-features/src/managed-pages/web/default-translations.ts +17 -0
  264. package/packages/bundled-features/src/managed-pages/web/i18n.ts +59 -16
  265. package/packages/bundled-features/src/managed-pages/web/index.ts +1 -2
  266. package/packages/bundled-features/src/metrics/compute.ts +1 -1
  267. package/packages/bundled-features/src/metrics/feature.ts +6 -6
  268. package/packages/bundled-features/src/metrics/index.ts +8 -8
  269. package/packages/bundled-features/src/metrics/types.ts +1 -1
  270. package/packages/bundled-features/src/metrics/validate.ts +1 -1
  271. package/packages/bundled-features/src/metrics/{constants.ts → web/constants.ts} +0 -1
  272. package/packages/bundled-features/src/metrics/window.ts +1 -1
  273. package/packages/bundled-features/src/notes-history/feature.ts +1 -1
  274. package/packages/bundled-features/src/notes-history/handlers/add-note.write.ts +1 -1
  275. package/packages/bundled-features/src/notes-history/index.ts +8 -8
  276. package/packages/bundled-features/src/notes-history/web/client-plugin.tsx +1 -3
  277. package/packages/bundled-features/src/notes-history/{constants.ts → web/constants.ts} +0 -1
  278. package/packages/bundled-features/src/notes-history/web/i18n.ts +0 -1
  279. package/packages/bundled-features/src/notes-history/web/index.ts +2 -3
  280. package/packages/bundled-features/src/notes-history/web/notes-section.tsx +2 -3
  281. package/packages/bundled-features/src/personal-access-tokens/feature.ts +12 -10
  282. package/packages/bundled-features/src/personal-access-tokens/handlers/available-scopes.query.ts +1 -1
  283. package/packages/bundled-features/src/personal-access-tokens/handlers/create.write.ts +1 -1
  284. package/packages/bundled-features/src/personal-access-tokens/handlers/revoke.write.ts +1 -1
  285. package/packages/bundled-features/src/personal-access-tokens/hash.ts +1 -1
  286. package/packages/bundled-features/src/personal-access-tokens/i18n.ts +2 -2
  287. package/packages/bundled-features/src/personal-access-tokens/index.ts +5 -5
  288. package/packages/bundled-features/src/personal-access-tokens/resolver.ts +1 -1
  289. package/packages/bundled-features/src/personal-access-tokens/schema/api-token.ts +3 -3
  290. package/packages/bundled-features/src/personal-access-tokens/screens.ts +2 -2
  291. package/packages/bundled-features/src/personal-access-tokens/{constants.ts → web/constants.ts} +0 -1
  292. package/packages/bundled-features/src/personal-access-tokens/{scopes.ts → web/scopes.ts} +0 -1
  293. package/packages/bundled-features/src/presets/changes.json +7 -0
  294. package/packages/bundled-features/src/presets/index.ts +0 -1
  295. package/packages/bundled-features/src/presets/security-baseline.ts +1 -1
  296. package/packages/bundled-features/src/renderer-foundation/types.ts +1 -1
  297. package/packages/bundled-features/src/secrets/feature.ts +1 -1
  298. package/packages/bundled-features/src/secrets/handlers/delete.write.ts +1 -1
  299. package/packages/bundled-features/src/secrets/handlers/list.query.ts +1 -1
  300. package/packages/bundled-features/src/secrets/handlers/set.write.ts +1 -1
  301. package/packages/bundled-features/src/secrets/i18n.ts +1 -1
  302. package/packages/bundled-features/src/secrets/index.ts +8 -8
  303. package/packages/bundled-features/src/secrets/{constants.ts → web/constants.ts} +0 -1
  304. package/packages/bundled-features/src/secrets/write-gate.ts +1 -1
  305. package/packages/bundled-features/src/sessions/feature.ts +7 -4
  306. package/packages/bundled-features/src/sessions/schema/user-session.ts +2 -3
  307. package/packages/bundled-features/src/sessions/{i18n.ts → web/i18n.ts} +0 -1
  308. package/packages/bundled-features/src/shared/index.ts +6 -1
  309. package/packages/bundled-features/src/shared/purge-files-reaching-subject.ts +10 -2
  310. package/packages/bundled-features/src/shared/web/translate-or-raw.ts +0 -1
  311. package/packages/bundled-features/src/subscription-stripe/feature.ts +2 -0
  312. package/packages/bundled-features/src/subscription-stripe/plugin-methods.ts +19 -0
  313. package/packages/bundled-features/src/subscription-stripe/verify-webhook.ts +1 -0
  314. package/packages/bundled-features/src/tags/changes.json +6 -0
  315. package/packages/bundled-features/src/tags/feature.ts +1 -1
  316. package/packages/bundled-features/src/tags/handlers/assign-tag.write.ts +11 -7
  317. package/packages/bundled-features/src/tags/handlers/create-tag.write.ts +1 -1
  318. package/packages/bundled-features/src/tags/handlers/delete-tag.write.ts +4 -1
  319. package/packages/bundled-features/src/tags/handlers/remove-tag.write.ts +1 -1
  320. package/packages/bundled-features/src/tags/handlers/update-tag.write.ts +1 -1
  321. package/packages/bundled-features/src/tags/index.ts +12 -12
  322. package/packages/bundled-features/src/tags/screens.ts +1 -1
  323. package/packages/bundled-features/src/tags/web/client-plugin.tsx +1 -3
  324. package/packages/bundled-features/src/tags/{constants.ts → web/constants.ts} +4 -1
  325. package/packages/bundled-features/src/tags/web/entity-tags.tsx +1 -2
  326. package/packages/bundled-features/src/tags/web/i18n.ts +2 -2
  327. package/packages/bundled-features/src/tags/web/index.ts +2 -3
  328. package/packages/bundled-features/src/tags/web/tag-chip.tsx +0 -1
  329. package/packages/bundled-features/src/tags/web/tag-filter.tsx +1 -2
  330. package/packages/bundled-features/src/tags/web/tag-manager.tsx +5 -4
  331. package/packages/bundled-features/src/tags/web/tag-picker.tsx +0 -1
  332. package/packages/bundled-features/src/tags/web/tag-section.tsx +1 -2
  333. package/packages/bundled-features/src/tags/web/tags-cell.tsx +1 -2
  334. package/packages/bundled-features/src/template-resolver/README.md +1 -1
  335. package/packages/bundled-features/src/template-resolver/api.ts +75 -28
  336. package/packages/bundled-features/src/template-resolver/changes.json +43 -0
  337. package/packages/bundled-features/src/template-resolver/compile-document-body.ts +1 -1
  338. package/packages/bundled-features/src/template-resolver/compile-steps-block.ts +2 -2
  339. package/packages/bundled-features/src/template-resolver/document-ops.ts +5 -5
  340. package/packages/bundled-features/src/template-resolver/document-sanitizer.ts +4 -4
  341. package/packages/bundled-features/src/template-resolver/feature.ts +13 -4
  342. package/packages/bundled-features/src/template-resolver/handlers/by-slug.query.ts +6 -1
  343. package/packages/bundled-features/src/template-resolver/handlers/by-tenant.query.ts +6 -2
  344. package/packages/bundled-features/src/template-resolver/handlers/collection-item.query.ts +1 -1
  345. package/packages/bundled-features/src/template-resolver/handlers/collection-list.query.ts +1 -1
  346. package/packages/bundled-features/src/template-resolver/handlers/collection-set.write.ts +19 -2
  347. package/packages/bundled-features/src/template-resolver/handlers/copy-locale.write.ts +2 -2
  348. package/packages/bundled-features/src/template-resolver/handlers/diff-to-system.query.ts +7 -1
  349. package/packages/bundled-features/src/template-resolver/handlers/discard-draft.write.ts +1 -1
  350. package/packages/bundled-features/src/template-resolver/handlers/document-base.ts +8 -2
  351. package/packages/bundled-features/src/template-resolver/handlers/document-blocks.query.ts +2 -2
  352. package/packages/bundled-features/src/template-resolver/handlers/export-bundle.query.ts +5 -2
  353. package/packages/bundled-features/src/template-resolver/handlers/find-by-id.query.ts +4 -2
  354. package/packages/bundled-features/src/template-resolver/handlers/layout-source.query.ts +10 -5
  355. package/packages/bundled-features/src/template-resolver/handlers/list.query.ts +5 -2
  356. package/packages/bundled-features/src/template-resolver/handlers/overview.query.ts +68 -10
  357. package/packages/bundled-features/src/template-resolver/handlers/patch-draft.write.ts +1 -1
  358. package/packages/bundled-features/src/template-resolver/handlers/resource-shared.ts +1 -1
  359. package/packages/bundled-features/src/template-resolver/handlers/resource-upload.write.ts +1 -1
  360. package/packages/bundled-features/src/template-resolver/handlers/send-test.write.ts +2 -2
  361. package/packages/bundled-features/src/template-resolver/handlers/set.write.ts +1 -1
  362. package/packages/bundled-features/src/template-resolver/handlers/shared.ts +1 -1
  363. package/packages/bundled-features/src/template-resolver/handlers/template-gates.ts +6 -6
  364. package/packages/bundled-features/src/template-resolver/handlers/template-write.ts +2 -2
  365. package/packages/bundled-features/src/template-resolver/handlers/usage.query.ts +8 -2
  366. package/packages/bundled-features/src/template-resolver/handlers/validate.query.ts +4 -2
  367. package/packages/bundled-features/src/template-resolver/i18n.ts +25 -0
  368. package/packages/bundled-features/src/template-resolver/index.ts +60 -59
  369. package/packages/bundled-features/src/template-resolver/layout-appearance.ts +1 -1
  370. package/packages/bundled-features/src/template-resolver/layout-regions.ts +1 -1
  371. package/packages/bundled-features/src/template-resolver/seeding.ts +16 -7
  372. package/packages/bundled-features/src/template-resolver/store-template-resource.ts +2 -2
  373. package/packages/bundled-features/src/template-resolver/table.ts +1 -1
  374. package/packages/bundled-features/src/template-resolver/template-bundle.ts +2 -2
  375. package/packages/bundled-features/src/template-resolver/template-delivery-policy.ts +82 -0
  376. package/packages/bundled-features/src/template-resolver/template-draft.ts +1 -1
  377. package/packages/bundled-features/src/template-resolver/template-edit-policy.ts +2 -2
  378. package/packages/bundled-features/src/template-resolver/template-meta.ts +2 -2
  379. package/packages/bundled-features/src/template-resolver/template-preview.ts +14 -10
  380. package/packages/bundled-features/src/template-resolver/template-usage.ts +1 -1
  381. package/packages/bundled-features/src/template-resolver/template-validation.ts +2 -2
  382. package/packages/bundled-features/src/template-resolver/testing.ts +2 -2
  383. package/packages/bundled-features/src/template-resolver/user-content-table.ts +1 -1
  384. package/packages/bundled-features/src/template-resolver/web/client-plugin.tsx +4 -5
  385. package/packages/bundled-features/src/template-resolver/{constants.ts → web/constants.ts} +7 -10
  386. package/packages/bundled-features/src/template-resolver/{document-blocks.ts → web/document-blocks.ts} +0 -1
  387. package/packages/bundled-features/src/template-resolver/web/document-editor-extensions.ts +2 -3
  388. package/packages/bundled-features/src/template-resolver/web/document-editor.tsx +0 -1
  389. package/packages/bundled-features/src/template-resolver/{document-images.ts → web/document-images.ts} +0 -1
  390. package/packages/bundled-features/src/template-resolver/{document-schema.ts → web/document-schema.ts} +0 -1
  391. package/packages/bundled-features/src/template-resolver/{document-steps.ts → web/document-steps.ts} +0 -1
  392. package/packages/bundled-features/src/template-resolver/web/document-tiptap-editor.tsx +6 -7
  393. package/packages/bundled-features/src/template-resolver/web/document-toolbar-blocks.ts +2 -3
  394. package/packages/bundled-features/src/template-resolver/web/editor-handle.ts +1 -2
  395. package/packages/bundled-features/src/template-resolver/web/i18n.ts +2 -1
  396. package/packages/bundled-features/src/template-resolver/web/index.ts +13 -14
  397. package/packages/bundled-features/src/template-resolver/{mail-constants.ts → web/mail-constants.ts} +0 -1
  398. package/packages/bundled-features/src/template-resolver/{pdf-constants.ts → web/pdf-constants.ts} +0 -1
  399. package/packages/bundled-features/src/template-resolver/web/placeholder-line-editor-lazy.tsx +0 -1
  400. package/packages/bundled-features/src/template-resolver/web/placeholder-line-editor.tsx +5 -4
  401. package/packages/bundled-features/src/template-resolver/{placeholder-text.ts → web/placeholder-text.ts} +0 -1
  402. package/packages/bundled-features/src/template-resolver/{qualified-names.ts → web/qualified-names.ts} +0 -1
  403. package/packages/bundled-features/src/template-resolver/web/use-stable-by-key.ts +0 -1
  404. package/packages/bundled-features/src/tenant/handlers/add-member.write.ts +1 -1
  405. package/packages/bundled-features/src/tenant/index.ts +7 -7
  406. package/packages/bundled-features/src/tenant/invitation-table.ts +1 -1
  407. package/packages/bundled-features/src/tenant/invited-membership.ts +1 -1
  408. package/packages/bundled-features/src/tenant/last-tenant-admin.ts +1 -1
  409. package/packages/bundled-features/src/tenant/member-role-options.ts +1 -1
  410. package/packages/bundled-features/src/tenant/screens.ts +2 -2
  411. package/packages/bundled-features/src/tenant/web/client-plugin.tsx +1 -2
  412. package/packages/bundled-features/src/tenant/{constants.ts → web/constants.ts} +3 -6
  413. package/packages/bundled-features/src/tenant/web/index.ts +0 -1
  414. package/packages/bundled-features/src/tenant/web/member-roles-cell.tsx +0 -1
  415. package/packages/bundled-features/src/tenant/web/member-status-cell.tsx +0 -1
  416. package/packages/bundled-features/src/tenant-lifecycle/stages.ts +2 -2
  417. package/packages/bundled-features/src/tier-engine/entity.ts +1 -1
  418. package/packages/bundled-features/src/tier-engine/feature.ts +7 -7
  419. package/packages/bundled-features/src/tier-engine/handlers/set-tenant-tier.write.ts +1 -1
  420. package/packages/bundled-features/src/tier-engine/index.ts +8 -8
  421. package/packages/bundled-features/src/tier-engine/web/client-plugin.tsx +2 -3
  422. package/packages/bundled-features/src/tier-engine/{constants.ts → web/constants.ts} +2 -3
  423. package/packages/bundled-features/src/tier-engine/{i18n.ts → web/i18n.ts} +0 -1
  424. package/packages/bundled-features/src/tier-engine/web/index.ts +0 -1
  425. package/packages/bundled-features/src/user/handlers/create.write.ts +1 -1
  426. package/packages/bundled-features/src/user/handlers/update-roles.ts +1 -1
  427. package/packages/bundled-features/src/user/handlers/update.write.ts +1 -1
  428. package/packages/bundled-features/src/user/index.ts +1 -1
  429. package/packages/bundled-features/src/user/invited-global-roles.ts +1 -1
  430. package/packages/bundled-features/src/user/schema/user.ts +1 -1
  431. package/packages/bundled-features/src/user/{constants.ts → web/constants.ts} +0 -1
  432. package/packages/bundled-features/src/user-data-rights/changes.json +14 -0
  433. package/packages/bundled-features/src/user-data-rights/env.ts +1 -1
  434. package/packages/bundled-features/src/user-data-rights/feature.ts +9 -9
  435. package/packages/bundled-features/src/user-data-rights/index.ts +1 -1
  436. package/packages/bundled-features/src/user-data-rights/lib/resolve-tenant-model.ts +1 -1
  437. package/packages/bundled-features/src/user-data-rights/mail-notifications.ts +1 -1
  438. package/packages/bundled-features/src/user-data-rights/web/client-plugin.tsx +2 -3
  439. package/packages/bundled-features/src/user-data-rights/web/confirm-deletion-screen.tsx +0 -1
  440. package/packages/bundled-features/src/user-data-rights/{constants.ts → web/constants.ts} +11 -12
  441. package/packages/bundled-features/src/user-data-rights/web/default-translations.ts +91 -0
  442. package/packages/bundled-features/src/user-data-rights/web/i18n.ts +41 -91
  443. package/packages/bundled-features/src/user-data-rights/web/index.ts +1 -2
  444. package/packages/bundled-features/src/user-data-rights/web/privacy-center-screen.tsx +1 -2
  445. package/packages/bundled-features/src/user-data-rights/web/public-deletion-gate.tsx +0 -1
  446. package/packages/bundled-features/src/user-data-rights/web/request-deletion-screen.tsx +0 -1
  447. package/packages/bundled-features/src/user-data-rights-defaults/hooks/file-ref.userdata-hook.ts +10 -1
  448. package/packages/bundled-features/src/user-profile/feature.ts +2 -2
  449. package/packages/bundled-features/src/user-profile/handlers/change-email.write.ts +1 -1
  450. package/packages/bundled-features/src/user-profile/index.ts +3 -2
  451. package/packages/bundled-features/src/user-profile/web/client-plugin.ts +2 -3
  452. package/packages/bundled-features/src/user-profile/{constants.ts → web/constants.ts} +0 -1
  453. package/packages/bundled-features/src/user-profile/{i18n.ts → web/i18n.ts} +0 -1
  454. package/packages/bundled-features/src/user-profile/web/profile-screen.tsx +2 -3
  455. package/packages/bundled-features/src/waitlist/changes.json +6 -0
  456. package/packages/bundled-features/src/waitlist/entity.ts +1 -1
  457. package/packages/bundled-features/src/waitlist/feature.ts +5 -5
  458. package/packages/bundled-features/src/waitlist/handlers/export-purge.write.ts +3 -3
  459. package/packages/bundled-features/src/waitlist/handlers/invite.write.ts +5 -1
  460. package/packages/bundled-features/src/waitlist/handlers/reject.write.ts +1 -1
  461. package/packages/bundled-features/src/waitlist/handlers/submit.write.ts +3 -3
  462. package/packages/bundled-features/src/waitlist/import.ts +1 -1
  463. package/packages/bundled-features/src/waitlist/index.ts +11 -11
  464. package/packages/bundled-features/src/waitlist/legacy-migrate.ts +1 -1
  465. package/packages/bundled-features/src/waitlist/link-on-signup.ts +1 -1
  466. package/packages/bundled-features/src/waitlist/mail.ts +7 -6
  467. package/packages/bundled-features/src/waitlist/payloads.ts +1 -1
  468. package/packages/bundled-features/src/waitlist/screens.ts +1 -1
  469. package/packages/bundled-features/src/waitlist/{constants.ts → web/constants.ts} +0 -1
  470. package/samples/apps/styleguide/src/features/content/web.tsx +0 -1
  471. package/samples/apps/ui-walkthrough/src/app/client.tsx +2 -0
  472. package/samples/apps/ui-walkthrough/src/app/seed-rental.ts +17 -1
  473. package/samples/apps/ui-walkthrough/src/app/seed-templates.ts +11 -0
  474. package/samples/apps/ui-walkthrough/src/app/server.ts +2 -1
  475. package/samples/apps/ui-walkthrough/src/features/billing/feature.ts +35 -7
  476. package/samples/apps/ui-walkthrough/src/features/billing/i18n.ts +6 -0
  477. package/samples/apps/ui-walkthrough/src/features/rental/entities.ts +27 -0
  478. package/samples/apps/ui-walkthrough/src/features/rental/feature.ts +61 -7
  479. package/samples/apps/ui-walkthrough/src/features/rental/i18n.ts +48 -24
  480. package/samples/apps/ui-walkthrough/src/features/rental/invoice-receive.ts +0 -1
  481. package/samples/apps/ui-walkthrough/src/features/rental/lease-support.ts +17 -1
  482. package/samples/apps/ui-walkthrough/src/features/rental/qualified-names.ts +3 -0
  483. package/samples/apps/ui-walkthrough/src/features/rental/receipts-upload.ts +70 -0
  484. package/samples/apps/ui-walkthrough/src/features/rental/screens.ts +90 -13
  485. package/samples/apps/ui-walkthrough/src/features/rental/web/index.ts +0 -2
  486. package/samples/apps/ui-walkthrough/src/features/subscription-plans/feature.ts +103 -0
  487. package/samples/apps/ui-walkthrough/src/features/subscription-plans/i18n.ts +36 -0
  488. package/samples/apps/ui-walkthrough/src/features/subscription-plans/index.ts +2 -0
  489. package/samples/apps/ui-walkthrough/src/features/subscription-plans/seed.ts +21 -0
  490. package/samples/apps/ui-walkthrough/src/run-config.ts +11 -0
  491. package/samples/apps/use-all-bundled/e2e-billing-gallery/server.ts +1 -1
  492. package/samples/apps/use-all-bundled/feature-manifest.json +4 -4
  493. package/samples/apps/use-all-bundled/scripts/check-coverage.ts +1 -1
  494. package/samples/apps/use-all-bundled/src/app/dev-app-options.ts +3 -1
  495. package/samples/recipes/compose-stacks/README.md +1 -2
  496. package/samples/recipes/embedded/README.md +5 -5
  497. package/samples/recipes/embedded/src/handlers/invoice-receive.write.ts +0 -1
  498. package/samples/recipes/embedded/src/screens/invoice-receive.screen.ts +9 -12
  499. package/samples/recipes/legal-pages/README.md +2 -2
  500. package/samples/recipes/legal-pages/src/feature.ts +1 -1
  501. package/samples/recipes/reference-data/src/feature.ts +3 -7
  502. package/packages/bundled-features/src/admin-shell/i18n.ts +0 -54
  503. package/packages/bundled-features/src/audit/i18n.ts +0 -25
  504. package/packages/bundled-features/src/auth-mfa/web/qrcode-browser.d.ts +0 -11
  505. package/packages/bundled-features/src/jobs/i18n.ts +0 -55
  506. package/packages/bundled-features/src/managed-pages/i18n.ts +0 -63
  507. package/packages/bundled-features/src/presets/dsgvo-self-service.ts +0 -35
  508. package/packages/bundled-features/src/user-data-rights/i18n.ts +0 -44
  509. package/samples/apps/ui-walkthrough/src/features/rental/web/upload-standard-layout.tsx +0 -61
@@ -0,0 +1,7 @@
1
+ import {
2
+ type TranslationsByLocale,
3
+ translationsByLocaleFromKeys,
4
+ } from "@cosmicdrift/kumiko-renderer";
5
+ import { AUDIT_I18N } from "./i18n.ts";
6
+
7
+ export const defaultTranslations: TranslationsByLocale = translationsByLocaleFromKeys(AUDIT_I18N);
@@ -1,8 +1,34 @@
1
- // @runtime client
2
- import {
3
- type TranslationsByLocale,
4
- translationsByLocaleFromKeys,
5
- } from "@cosmicdrift/kumiko-renderer";
6
- import { AUDIT_I18N } from "../i18n.ts";
1
+ // Server + client i18n for audit (nav labels + audit-log/-detail screens).
7
2
 
8
- export const defaultTranslations: TranslationsByLocale = translationsByLocaleFromKeys(AUDIT_I18N);
3
+ type LocalizedString = { readonly en: string };
4
+
5
+ export const AUDIT_I18N: Readonly<Record<string, LocalizedString>> = {
6
+ "screen:audit-log.title": { en: "Audit log" },
7
+ "screen:audit-log-detail.title": { en: "Event" },
8
+ "audit.log.description": {
9
+ en: "All events of this tenant. A row opens the details.",
10
+ },
11
+ "audit.log.allTenants.description": {
12
+ en: "All events of all tenants. A row opens the details.",
13
+ },
14
+ "audit.log.detail.subtitle": {
15
+ en: "One event with its actor, time and stored data.",
16
+ },
17
+ "audit.errors.systemScopeRequiresSystemAdmin": {
18
+ en: "Only SystemAdmin may read system events.",
19
+ },
20
+ "screen:audit-log-all-tenants.title": { en: "Audit log (all tenants)" },
21
+ "screen:audit-log-all-tenants-detail.title": { en: "Event" },
22
+ "audit:nav.auditLog": { en: "Audit" },
23
+ "audit:nav.auditLogAllTenants": { en: "Audit log (all tenants)" },
24
+ "audit.log.col.tenant": { en: "Tenant" },
25
+ "audit.log.col.when": { en: "When" },
26
+ "audit.log.col.type": { en: "Event" },
27
+ "audit.log.col.aggregateType": { en: "Aggregate type" },
28
+ "audit.log.col.aggregateId": { en: "Aggregate ID" },
29
+ "audit.log.col.actor": { en: "Actor" },
30
+ "audit.log.details": { en: "Details" },
31
+ "audit.log.detail.payload": { en: "Event payload" },
32
+ "audit.log.detail.metadata": { en: "Metadata" },
33
+ "audit.log.detail.field.id": { en: "Event ID" },
34
+ };
@@ -1,3 +1 @@
1
- // @runtime client
2
-
3
1
  export { type AuditClientOptions, auditClient } from "./client-plugin.tsx";
@@ -24,23 +24,23 @@ import type { EnvelopeCipher } from "@cosmicdrift/kumiko-framework/secrets";
24
24
  import { parseRoles } from "@cosmicdrift/kumiko-framework/utils";
25
25
  import type { Redis } from "ioredis";
26
26
  // kumiko-lint-ignore cross-feature-import bootstrap sets per-tenant config through the config feature's write handler
27
- import { ConfigHandlers } from "../config/constants.ts";
27
+ import { ConfigHandlers } from "../config/web/constants.ts";
28
28
  // kumiko-lint-ignore cross-feature-import bootstrap compares against the stored config row to stay idempotent
29
29
  import { configRowHoldsValue, findConfigRow } from "../config/write-helpers.ts";
30
30
  // kumiko-lint-ignore cross-feature-import bootstrap provisions tenant + invitation rows owned by the tenant feature
31
- import { TenantHandlers } from "../tenant/constants.ts";
32
- // kumiko-lint-ignore cross-feature-import bootstrap provisions tenant + invitation rows owned by the tenant feature
33
31
  import { INVITATION_STATUS, tenantInvitationsTable } from "../tenant/invitation-table.ts";
34
32
  // kumiko-lint-ignore cross-feature-import bootstrap checks existing memberships
35
33
  import { tenantMembershipsTable } from "../tenant/membership-table.ts";
36
34
  // kumiko-lint-ignore cross-feature-import bootstrap checks for an existing tenant
37
35
  import { tenantTable } from "../tenant/schema/tenant.ts";
38
- // kumiko-lint-ignore cross-feature-import global-role options are owned by the user feature
39
- import type { GlobalRole } from "../user/constants.ts";
36
+ // kumiko-lint-ignore cross-feature-import bootstrap provisions tenant + invitation rows owned by the tenant feature
37
+ import { TenantHandlers } from "../tenant/web/constants.ts";
40
38
  // kumiko-lint-ignore cross-feature-import bootstrap skips already activated users
41
39
  import { userTable } from "../user/schema/user.ts";
42
- import { AuthHandlers } from "./constants.ts";
40
+ // kumiko-lint-ignore cross-feature-import global-role options are owned by the user feature
41
+ import type { GlobalRole } from "../user/web/constants.ts";
43
42
  import { hasLiveInviteToken } from "./invite-token-store.ts";
43
+ import { AuthHandlers } from "./web/constants.ts";
44
44
 
45
45
  export type BootstrapInvite = {
46
46
  readonly email: string;
@@ -1,4 +1,10 @@
1
1
  [
2
+ {
3
+ "version": "0.379.0",
4
+ "type": "fix",
5
+ "title": "Unknown e-mail addresses count towards the login lockout",
6
+ "detail": "Failed logins for unknown or deleted addresses are counted under a keyed digest of the normalized address (ctx.rateLimitDigest, derived from the JWT secret), so after the threshold they answer account_locked like a registered address and the lock no longer reveals which addresses exist. Without a digest key the old invalid_credentials answer stays."
7
+ },
2
8
  {
3
9
  "version": "0.374.0",
4
10
  "type": "improvement",
@@ -1,5 +1,5 @@
1
1
  import { UnprocessableError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
2
- import { AuthErrors } from "./constants.ts";
2
+ import { AuthErrors } from "./web/constants.ts";
3
3
 
4
4
  // @wrapper-known error-helper
5
5
  export function invalidCredentials() {
@@ -1,7 +1,6 @@
1
1
  import { defineFeature, type FeatureDefinition } from "@cosmicdrift/kumiko-framework/engine";
2
2
  import { type FeatureWithEnvSchema, featureWithEnvSchema } from "@cosmicdrift/kumiko-framework/env";
3
3
  import * as z from "zod";
4
- import { MIN_HMAC_SECRET_LENGTH } from "./constants.ts";
5
4
  import type { AuthMailLocale } from "./email-templates.ts";
6
5
  import { changePasswordWrite } from "./handlers/change-password.write.ts";
7
6
  import { createConfirmAccountUnlockHandler } from "./handlers/confirm-account-unlock.write.ts";
@@ -31,13 +30,14 @@ import {
31
30
  } from "./handlers/signup-request.write.ts";
32
31
  import { createSwitchTenantMfaGateHandler } from "./handlers/switch-tenant-mfa-gate.write.ts";
33
32
  import { createVerifyEmailHandler } from "./handlers/verify-email.write.ts";
34
- import { AUTH_EMAIL_PASSWORD_MAIL_I18N } from "./mail-i18n.ts";
35
33
  import {
36
34
  AUTH_MAIL_VARIABLES,
37
35
  authMailLocalizedTemplate,
38
36
  INVITE_MAIL_VARIABLES,
39
37
  sendsMagicLinkMail,
40
38
  } from "./mail-notifications.ts";
39
+ import { MIN_HMAC_SECRET_LENGTH } from "./web/constants.ts";
40
+ import { AUTH_EMAIL_PASSWORD_MAIL_I18N } from "./web/mail-i18n.ts";
41
41
 
42
42
  /**
43
43
  * Env-vars contract for the `auth-email-password` feature.
@@ -5,10 +5,10 @@ import {
5
5
  writeFailure,
6
6
  } from "@cosmicdrift/kumiko-framework/errors";
7
7
  import * as z from "zod";
8
- import { AuthErrors } from "../constants.ts";
9
8
  import { invalidUnlockToken } from "../errors.ts";
10
9
  import { clearLockoutState } from "../lockout-store.ts";
11
10
  import { verifyUnlockToken } from "../unlock-token.ts";
11
+ import { AuthErrors } from "../web/constants.ts";
12
12
 
13
13
  export type ConfirmAccountUnlockOptions = {
14
14
  readonly hmacSecret: string;
@@ -52,10 +52,6 @@ import {
52
52
  } from "../../user/invited-global-roles.ts";
53
53
  // kumiko-lint-ignore cross-feature-import login-style password-check
54
54
  import { userTable } from "../../user/schema/user.ts";
55
- import {
56
- AUTH_LOCKOUT_DEFAULT_DURATION_MINUTES,
57
- AUTH_LOCKOUT_DEFAULT_MAX_FAILED_ATTEMPTS,
58
- } from "../constants.ts";
59
55
  import { invalidCredentials, invalidInviteToken, inviteEmailMismatch } from "../errors.ts";
60
56
  import {
61
57
  burnInviteToken,
@@ -64,6 +60,10 @@ import {
64
60
  unburnInviteToken,
65
61
  } from "../invite-token-store.ts";
66
62
  import { passwordSchema } from "../password-policy.ts";
63
+ import {
64
+ AUTH_LOCKOUT_DEFAULT_DURATION_MINUTES,
65
+ AUTH_LOCKOUT_DEFAULT_MAX_FAILED_ATTEMPTS,
66
+ } from "../web/constants.ts";
67
67
  import {
68
68
  gateEnforceAccountStatus,
69
69
  gateEnforceEmailVerified,
@@ -50,16 +50,16 @@ import {
50
50
  reservedMembershipRoleError,
51
51
  unassignableMembershipRoleError,
52
52
  } from "../../tenant/membership-roles.ts";
53
- // kumiko-lint-ignore cross-feature-import global-role options are owned by the user feature
54
- import { GLOBAL_ROLE_OPTIONS, type GlobalRole } from "../../user/constants.ts";
55
53
  // kumiko-lint-ignore cross-feature-import invitee lookup by email reads the user row
56
54
  import { userTable } from "../../user/schema/user.ts";
57
- import { AUTH_INVITE_DEFAULT_TTL_MINUTES } from "../constants.ts";
55
+ // kumiko-lint-ignore cross-feature-import global-role options are owned by the user feature
56
+ import { GLOBAL_ROLE_OPTIONS, type GlobalRole } from "../../user/web/constants.ts";
58
57
  import type { AuthMailLocale } from "../email-templates.ts";
59
58
  import { inviteAlreadyAccepted } from "../errors.ts";
60
59
  import { invalidateExistingInviteToken, storeInviteToken } from "../invite-token-store.ts";
61
60
  import { dispatchMagicLinkMail, resolveHandlerMailLocale } from "../magic-link-mail.ts";
62
61
  import { AuthMailNotificationTypes } from "../mail-notifications.ts";
62
+ import { AUTH_INVITE_DEFAULT_TTL_MINUTES } from "../web/constants.ts";
63
63
 
64
64
  const InviteCreateSchema = z.object({
65
65
  email: z.email(),
@@ -14,8 +14,8 @@ import { decryptStoredPii } from "../../shared/index.ts";
14
14
  import { INVITATION_STATUS, tenantInvitationsTable } from "../../tenant/invitation-table.ts";
15
15
  // kumiko-lint-ignore cross-feature-import login-style account lookup, same as invite-accept-with-login
16
16
  import { userTable } from "../../user/schema/user.ts";
17
- import { AuthErrors } from "../constants.ts";
18
17
  import { getInvitationIdForToken } from "../invite-token-store.ts";
18
+ import { AuthErrors } from "../web/constants.ts";
19
19
 
20
20
  const InviteInfoSchema = z.object({
21
21
  token: z.string().min(1),
@@ -14,10 +14,6 @@ import * as z from "zod";
14
14
  import { verifyDummyPassword, verifyPassword } from "../../shared/index.ts";
15
15
  import { USER_STATUS, UserQueries } from "../../user/index.ts";
16
16
  import { type AuthUserRow, parseAuthUserRow } from "../auth-user-row.ts";
17
- import {
18
- AUTH_LOCKOUT_DEFAULT_DURATION_MINUTES,
19
- AUTH_LOCKOUT_DEFAULT_MAX_FAILED_ATTEMPTS,
20
- } from "../constants.ts";
21
17
  import {
22
18
  accountLocked,
23
19
  accountRestricted,
@@ -26,6 +22,10 @@ import {
26
22
  noMembership,
27
23
  } from "../errors.ts";
28
24
  import { clearLockoutState, getLockoutState, recordFailedAttempt } from "../lockout-store.ts";
25
+ import {
26
+ AUTH_LOCKOUT_DEFAULT_DURATION_MINUTES,
27
+ AUTH_LOCKOUT_DEFAULT_MAX_FAILED_ATTEMPTS,
28
+ } from "../web/constants.ts";
29
29
 
30
30
  export type LoginHandlerOptions = {
31
31
  // When true, a valid (email + password) login fails with email_not_verified
@@ -105,6 +105,31 @@ export async function gateResolveAuthUser(
105
105
  return ok({ ...found, passwordHash: found.passwordHash });
106
106
  }
107
107
 
108
+ // Unknown and deleted addresses are counted too, under a keyed digest of the
109
+ // address exactly as findForAuth looks it up (no own normalization: a differently
110
+ // cased spelling is a different, unknown address and must not share a counter with a
111
+ // registered one). ctx.rateLimitDigest is derived from the JWT secret, so that after the
112
+ // threshold they answer account_locked exactly like a registered address.
113
+ // Without a digest key (no rate-limit wiring) they stay plain invalid_credentials.
114
+ function unknownEmailLockoutSubject(ctx: HandlerContext, email: string): string | undefined {
115
+ const digest = ctx.rateLimitDigest?.(email);
116
+ return digest === undefined ? undefined : `email:${digest}`;
117
+ }
118
+
119
+ export async function gateCountUnknownUser(
120
+ ctx: HandlerContext,
121
+ email: string,
122
+ maxFailedAttempts: number,
123
+ lockoutDurationMinutes: number,
124
+ ): Promise<GateOutcome<undefined>> {
125
+ const subject = unknownEmailLockoutSubject(ctx, email);
126
+ if (!ctx.redis || subject === undefined) return ok(undefined);
127
+ const locked = await gateEnforceLockout(ctx, subject);
128
+ if (!locked.ok) return locked;
129
+ await recordFailedAttempt(ctx.redis, subject, maxFailedAttempts, lockoutDurationMinutes);
130
+ return ok(undefined);
131
+ }
132
+
108
133
  /**
109
134
  * Lockout BEFORE password verify — locked accounts can't be password-probed.
110
135
  * Fail-open without Redis (IP rate-limit still covers partially).
@@ -295,6 +320,15 @@ export function createLoginHandler(opts: LoginHandlerOptions = {}) {
295
320
  const foundRow = parseAuthUserRow(
296
321
  await ctx.queryAs(systemUser, UserQueries.findForAuth, { email: event.payload.email }),
297
322
  );
323
+ if (!foundRow?.passwordHash || foundRow.isDeleted) {
324
+ const unknown = await gateCountUnknownUser(
325
+ ctx,
326
+ event.payload.email,
327
+ maxFailedAttempts,
328
+ lockoutDurationMinutes,
329
+ );
330
+ if (!unknown.ok) return unknown.result;
331
+ }
298
332
  const userGate = await gateResolveAuthUser(foundRow, event.payload.password);
299
333
  if (!userGate.ok) return userGate.result;
300
334
  const found = userGate.value;
@@ -1,6 +1,6 @@
1
- import { AUTH_UNLOCK_DEFAULT_TTL_MINUTES, AuthErrors } from "../constants.ts";
2
1
  import { AuthMailNotificationTypes } from "../mail-notifications.ts";
3
2
  import { signUnlockToken } from "../unlock-token.ts";
3
+ import { AUTH_UNLOCK_DEFAULT_TTL_MINUTES, AuthErrors } from "../web/constants.ts";
4
4
  import {
5
5
  createTokenRequestHandler,
6
6
  type TokenRequestData,
@@ -1,6 +1,6 @@
1
- import { AUTH_VERIFY_DEFAULT_TTL_MINUTES, AuthErrors } from "../constants.ts";
2
1
  import { AuthMailNotificationTypes } from "../mail-notifications.ts";
3
2
  import { signVerificationToken } from "../verification-token.ts";
3
+ import { AUTH_VERIFY_DEFAULT_TTL_MINUTES, AuthErrors } from "../web/constants.ts";
4
4
  import {
5
5
  createTokenRequestHandler,
6
6
  type TokenRequestData,
@@ -1,6 +1,6 @@
1
- import { AUTH_RESET_DEFAULT_TTL_MINUTES, AuthErrors } from "../constants.ts";
2
1
  import { AuthMailNotificationTypes } from "../mail-notifications.ts";
3
2
  import { signResetToken } from "../reset-token.ts";
3
+ import { AUTH_RESET_DEFAULT_TTL_MINUTES, AuthErrors } from "../web/constants.ts";
4
4
  import {
5
5
  createTokenRequestHandler,
6
6
  type TokenRequestData,
@@ -2,10 +2,10 @@ import { defineWriteHandler } from "@cosmicdrift/kumiko-framework/engine";
2
2
  import { UnprocessableError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
3
3
  import * as z from "zod";
4
4
  import { hashPassword } from "../../shared/index.ts";
5
- import { AuthErrors } from "../constants.ts";
6
5
  import { invalidResetToken } from "../errors.ts";
7
6
  import { passwordSchema } from "../password-policy.ts";
8
7
  import { verifyResetToken } from "../reset-token.ts";
8
+ import { AuthErrors } from "../web/constants.ts";
9
9
  import { runConfirmTokenFlow } from "./confirm-token-flow.ts";
10
10
 
11
11
  export type ResetPasswordOptions = {
@@ -1,9 +1,9 @@
1
1
  import { defineWriteHandler } from "@cosmicdrift/kumiko-framework/engine";
2
2
  import { UnprocessableError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
3
3
  import * as z from "zod";
4
- import { AuthErrors } from "../constants.ts";
5
4
  import { invalidVerificationToken } from "../errors.ts";
6
5
  import { verifyVerificationToken } from "../verification-token.ts";
6
+ import { AuthErrors } from "../web/constants.ts";
7
7
  import { runConfirmTokenFlow } from "./confirm-token-flow.ts";
8
8
 
9
9
  export type VerifyEmailOptions = {
@@ -20,7 +20,6 @@ export type {
20
20
  BootstrapTenantOutcome,
21
21
  } from "./bootstrap.ts";
22
22
  export { BootstrapPlanError, BootstrapWriteError, bootstrapTenants } from "./bootstrap.ts";
23
- export { AUTH_EMAIL_PASSWORD_FEATURE, AuthErrors, AuthHandlers, AuthQueries } from "./constants.ts";
24
23
  export type { AuthMailLocale } from "./email-templates.ts";
25
24
  export type {
26
25
  AccountLockoutOptions,
@@ -55,3 +54,9 @@ export {
55
54
  SIGNUP_TOKEN_KEY_PREFIXES,
56
55
  storeSignupToken,
57
56
  } from "./signup-token-store.ts";
57
+ export {
58
+ AUTH_EMAIL_PASSWORD_FEATURE,
59
+ AuthErrors,
60
+ AuthHandlers,
61
+ AuthQueries,
62
+ } from "./web/constants.ts";
@@ -12,7 +12,7 @@ import {
12
12
  resolveMailLocale,
13
13
  } from "@cosmicdrift/kumiko-framework/i18n";
14
14
  import { escapeHtml, escapeHtmlAttr } from "@cosmicdrift/kumiko-renderer/headless";
15
- import { AUTH_EMAIL_PASSWORD_FEATURE } from "./constants.ts";
15
+ import { AUTH_EMAIL_PASSWORD_FEATURE } from "./web/constants.ts";
16
16
 
17
17
  export const AUTH_MAIL_KINDS = {
18
18
  passwordReset: { name: "password-reset", translationKey: "reset" },
@@ -8,7 +8,6 @@ import { generateToken } from "@cosmicdrift/kumiko-framework/api";
8
8
  import type { NotifyFn } from "@cosmicdrift/kumiko-framework/engine";
9
9
  import { Temporal } from "@cosmicdrift/kumiko-types/temporal";
10
10
  import type { Redis } from "ioredis";
11
- import { AUTH_SIGNUP_DEFAULT_TTL_MINUTES } from "./constants.ts";
12
11
  import { dispatchMagicLinkMail } from "./magic-link-mail.ts";
13
12
  import { AuthMailNotificationTypes } from "./mail-notifications.ts";
14
13
  import {
@@ -16,6 +15,7 @@ import {
16
15
  normalizeEmail,
17
16
  storeSignupToken,
18
17
  } from "./signup-token-store.ts";
18
+ import { AUTH_SIGNUP_DEFAULT_TTL_MINUTES } from "./web/constants.ts";
19
19
 
20
20
  export const SIGNUP_ACTIVATION_NOTIFICATION_TYPE = AuthMailNotificationTypes.signupActivation;
21
21
 
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Browser-Seite der Auth-Routes. Dünne fetch-Wrapper um /api/auth/*
3
2
  // mit Cookie-Transport: JWT lebt im HttpOnly kumiko_auth-Cookie,
4
3
  // Double-Submit-CSRF-Token im JS-lesbaren kumiko_csrf-Cookie. Alle
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Pure form helpers shared by auth screens. Extracted so unit tests can
3
2
  // pin password / rate-limit / redirect rules without mounting React.
4
3
 
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Shared Web-Primitives für die Auth-Screens. Nur noch Layout/Style-
3
2
  // Helpers — Form/Field/Input/Button/Banner kommen jetzt über
4
3
  // usePrimitives() aus dem Framework-Vertrag, damit Native dieselben
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Auth-Gate: rendert den LoginScreen solange der Session-Status
3
2
  // "unauthenticated" ist, sonst die Kinder. "loading" zeigt einen
4
3
  // minimalen Placeholder — die initiale Refresh-Runde liefert in der
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Redirect targets for external login pages. `next` travels through the query
3
2
  // string, so anything read back from it is untrusted: only same-origin
4
3
  // root-relative paths pass (no "//host", no "/\host", no scheme).
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Handlers for RowAction `kind: "clientAction"`: an admin screen lists users and
3
2
  // triggers the same public mail flows the login screens use.
4
3
 
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Client-Feature-Factory für auth-email-password. Wird vom App-Code
3
2
  // in createKumikoApp({ clientFeatures: [emailPasswordClient()] })
4
3
  // eingehängt und bringt Session-Context + AuthGate + Default-UI-
@@ -7,7 +6,6 @@
7
6
 
8
7
  import type { ClientActionHandler, TranslationsByLocale } from "@cosmicdrift/kumiko-renderer";
9
8
  import type { ComponentType, ReactNode } from "react";
10
- import { defaultTranslations, mergeTranslations } from "../i18n.ts";
11
9
  import {
12
10
  type AuthGateOptions,
13
11
  type MfaSetupComponentProps,
@@ -15,6 +13,7 @@ import {
15
13
  makeSessionAuthGate,
16
14
  } from "./auth-gate.tsx";
17
15
  import { emailPasswordClientActions } from "./client-actions.ts";
16
+ import { defaultTranslations, mergeTranslations } from "./i18n.ts";
18
17
  import type { LoginScreenProps } from "./login-screen.tsx";
19
18
 
20
19
  export type EmailPasswordClientOptions = {
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // ConfirmAccountUnlockScreen — reads `?token=...` from the URL, auto-posts
3
2
  // it to /api/auth/confirm-account-unlock on mount, shows success/error.
4
3
  // Idempotent server-side (clearLockoutState is a no-op when already
@@ -1,9 +1,6 @@
1
- // @runtime client
2
- // Pure string constants — no DB/Node builtins. Marked `@runtime client` so
3
- // browser code (Members screen etc.) can import them too without the
4
- // runtime-isolation guard complaining. Runtime may import "client" files
5
- // (see RUNTIME_RULES), so server-side access (handlers, dispatcher) stays
6
- // intact as well.
1
+ // Pure string constants — no DB/Node builtins. They live under web/ so browser
2
+ // code (Members screen etc.) can import them without the runtime-isolation
3
+ // guard complaining; runtime may import client files, so handlers keep using them.
7
4
  export const AUTH_EMAIL_PASSWORD_FEATURE = "auth-email-password" as const;
8
5
 
9
6
  // Minimum length for reset/verify hmacSecret — mirrors the ≥32-char
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Standard-Topbar-Actions Komposition für Apps mit Auth + Workspaces.
3
2
  // Bündelt das Pattern das jeder App-Sample sonst hand-ausschreibt:
4
3
  // TenantSwitcher (links) → optional Extras (z.B. LanguageSwitcher) →
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // ForgotPasswordScreen — Form mit email-input. Submit triggert
3
2
  // /api/auth/request-password-reset (silent-success, kein account-
4
3
  // enumeration). UI zeigt unconditional ein "Wenn Account existiert,
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // English UI copy for this feature. emailPasswordClient() mounts it as a
3
2
  // LocaleProvider fallback. Apps override keys via
4
3
  // `emailPasswordClient({ translations })`. German/Spanish ship in
@@ -150,7 +149,7 @@ export const defaultTranslations: TranslationsByLocale = {
150
149
  },
151
150
  };
152
151
 
153
- // Kanonische Implementierung lebt jetzt im Renderer (neben
154
- // TranslationsByLocale) — Re-Export hält die bestehende Import-Surface
155
- // (auth-email-password/web) stabil.
152
+ // The canonical implementation lives in the renderer (next to
153
+ // TranslationsByLocale); the re-export keeps the existing import surface
154
+ // (auth-email-password/web) stable.
156
155
  export { mergeTranslations } from "@cosmicdrift/kumiko-renderer";
@@ -1,11 +1,9 @@
1
- // @runtime client
2
1
  // Public exports für die Browser-Seite des auth-email-password Features.
3
2
  // Wird über den Sub-Path-Export `@cosmicdrift/kumiko-bundled-features/auth-email-
4
3
  // password/web` konsumiert — die Server-Seite (defineFeature) lebt in
5
4
  // `@cosmicdrift/kumiko-bundled-features/auth-email-password` und hat keine
6
5
  // React-/DOM-Deps. Trennung bleibt sauber so wie renderer vs renderer/web.
7
6
 
8
- export { defaultTranslations, mergeTranslations } from "../i18n.ts";
9
7
  export type {
10
8
  AuthTokenFailure,
11
9
  CurrentUserProfile,
@@ -56,6 +54,7 @@ export type { DefaultTopbarActionsProps } from "./default-topbar-actions.tsx";
56
54
  export { DefaultTopbarActions } from "./default-topbar-actions.tsx";
57
55
  export type { ForgotPasswordScreenProps } from "./forgot-password-screen.tsx";
58
56
  export { ForgotPasswordScreen } from "./forgot-password-screen.tsx";
57
+ export { defaultTranslations, mergeTranslations } from "./i18n.ts";
59
58
  export type { InviteAcceptScreenProps } from "./invite-accept-screen.tsx";
60
59
  export { InviteAcceptScreen } from "./invite-accept-screen.tsx";
61
60
  export type { AuthLegalLink, LoginScreenProps } from "./login-screen.tsx";
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // InviteAcceptScreen — Magic-Link-Accept für Tenant-Invitations.
3
2
  //
4
3
  // Liest `?token=...` aus der URL und branched intern je nach session-state:
@@ -30,8 +29,8 @@ export type InviteAcceptScreenProps = {
30
29
  * `(data) => "/${data.tenantId}/"`. Function-form receives the roles this
31
30
  * flow grants in the target tenant; branch 1 reports the invitation's
32
31
  * role, which for an existing member is not their full role set there.
33
- * @deprecated Configure auth.postAuthLanding on the server; its landingPath wins.
34
- * Kept as fallback. */
32
+ * @deprecated Removed in 0.390.0. Configure auth.postAuthLanding on the server; its landingPath wins.
33
+ * Kept as fallback until 0.390.0. */
35
34
  readonly loggedInHref?:
36
35
  | string
37
36
  | ((args: { tenantId: string; roles: readonly string[] }) => string);
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Default-LoginScreen. Reine E-Mail-+-Passwort-Form, zentriert, Card-
3
2
  // Layout. Texte kommen aus `useTranslation()` — die Default-Bundles
4
3
  // (de+en) liefert das Feature selber mit (translations.ts); Apps die
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Server-registered so the document designer names the seeded auth mails.
3
2
  export const AUTH_EMAIL_PASSWORD_MAIL_I18N: Readonly<Record<string, { readonly en: string }>> = {
4
3
  "auth-email-password:feature.label": { en: "Sign-in" },
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // RequestAccountUnlockScreen — form with an email input. Submit triggers
3
2
  // /api/auth/request-account-unlock (silent-success, no account
4
3
  // enumeration). UI unconditionally shows an "if your account is locked,
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // ResetPasswordScreen — liest `?token=...` aus der URL, zeigt Form mit
3
2
  // new + confirm-password. Submit triggert /api/auth/reset-password mit
4
3
  // dem Token. Server collapses alle Token-Verify-Failures auf einen
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Rendered by auth-gate's LoginRoute when the session bootstrap failed for a reason other than "not logged in".
3
2
 
4
3
  import { usePrimitives, useTranslation } from "@cosmicdrift/kumiko-renderer";
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Session-State für den Browser-Renderer. Hält den aktuell eingeloggten
3
2
  // User (Profile + aktive Tenant-Zuordnung + Memberships), reagiert auf
4
3
  // Login/Logout/Switch-Tenant und refresh't die Daten automatisch.
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // SignupCompleteScreen — Magic-Link-Self-Signup, Step 2.
3
2
  //
4
3
  // Reads `?token=...` from the URL, shows a form with password + confirm.
@@ -31,8 +30,8 @@ export type SignupCompleteScreenProps = {
31
30
  /** Where to send the user after activation. Function-form receives the tenantKey, the
32
31
  * roles granted by this flow in that tenant, and the claimed `handover` entity when
33
32
  * signup claimed a try-first grant. Default "/".
34
- * @deprecated Configure auth.postAuthLanding on the server; its landingPath wins.
35
- * Kept as fallback. */
33
+ * @deprecated Removed in 0.390.0. Configure auth.postAuthLanding on the server; its landingPath wins.
34
+ * Kept as fallback until 0.390.0. */
36
35
  readonly loggedInHref?:
37
36
  | string
38
37
  | ((args: {
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // SignupScreen — Magic-Link-Self-Signup, Step 1.
3
2
  //
4
3
  // Form mit Email-Input. Submit triggert /api/auth/signup-request
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Tenant choices as dropdown entries — the TenantSwitcher's list for a user
3
2
  // menu that carries the shell controls. Renders nothing for a single tenant.
4
3
 
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // TenantSwitcher — kleines Dropdown, zeigt den aktiven Tenant und
3
2
  // erlaubt Wechsel zu anderen Memberships. Auf Radix-DropdownMenu für
4
3
  // konsistentes Verhalten (Click-outside/Escape/Keyboard-Nav).
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Liest den eingeloggten User + die Rollen aus dem aktiven Tenant aus
3
2
  // der Session. Der Hook ist die Standard-Brücke zwischen Session-State
4
3
  // und Layout-Komponenten (WorkspaceShell.user, DefaultAppShell-Gates,
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // UserMenu — Avatar-Dropdown für die Topbar (variant="pill", Default) oder den
3
2
  // Sidebar-Footer (variant="sidebar" = die sidebar-07-NavUser-Row). Zeigt
4
3
  // Name/Email + Logout. Auf Radix-DropdownMenu, damit Click-outside, Escape,
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // VerifyEmailScreen — liest `?token=...` aus URL, schickt ihn auto an
3
2
  // /api/auth/verify-email beim Mount, zeigt success/error. Idempotent
4
3
  // auf Server-Seite (mehrfaches Klicken setzt emailVerified=true erneut),
@@ -1,4 +1,10 @@
1
1
  [
2
+ {
3
+ "version": "0.379.0",
4
+ "type": "fix",
5
+ "title": "MFA setup uses the shared QR secret primitive",
6
+ "detail": "The pre-auth MFA setup screen renders the QR code and secret through the renderer's QR secret primitive instead of its own markup."
7
+ },
2
8
  {
3
9
  "version": "0.370.0",
4
10
  "type": "improvement",