@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
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  //
3
2
  // tiptap-backed implementation behind DocumentContentEditor's lazy() boundary —
4
3
  // never import this file statically, tiptap must only load when a "document"
@@ -41,6 +40,10 @@ import {
41
40
  } from "lucide-react";
42
41
  import { Fragment, type ReactNode, useEffect, useMemo, useState } from "react";
43
42
  import { createPortal } from "react-dom";
43
+ import {
44
+ createDocumentEditorExtensions,
45
+ DOCUMENT_BLOCK_ATTRIBUTE,
46
+ } from "./document-editor-extensions.ts";
44
47
  import {
45
48
  DOCUMENT_TEXT_ALIGNMENTS,
46
49
  type DocumentTextAlignment,
@@ -48,12 +51,8 @@ import {
48
51
  isDocumentPlaceholderHref,
49
52
  isDocumentReferenceName,
50
53
  isDocumentResourceKey,
51
- } from "../document-schema.ts";
52
- import { parseDocumentStepsInput } from "../document-steps.ts";
53
- import {
54
- createDocumentEditorExtensions,
55
- DOCUMENT_BLOCK_ATTRIBUTE,
56
- } from "./document-editor-extensions.ts";
54
+ } from "./document-schema.ts";
55
+ import { parseDocumentStepsInput } from "./document-steps.ts";
57
56
  import {
58
57
  type DocumentEditorProps,
59
58
  type DocumentResourcePreview,
@@ -1,7 +1,6 @@
1
- // @runtime client
2
1
  import type { ContentEditorProps } from "@cosmicdrift/kumiko-renderer";
3
2
  import type { ReactNode } from "react";
4
- import type { DocumentToolbarBlock } from "../document-blocks.ts";
3
+ import type { DocumentToolbarBlock } from "./document-blocks.ts";
5
4
 
6
5
  /** Imperative access for an outside panel (placeholder list, resource list). */
7
6
  export type DocumentEditorHandle = {
@@ -48,4 +47,4 @@ export {
48
47
  documentBlocksForKind,
49
48
  MAIL_DOCUMENT_BLOCKS,
50
49
  PDF_DOCUMENT_BLOCKS,
51
- } from "../document-blocks.ts";
50
+ } from "./document-blocks.ts";
@@ -1,6 +1,5 @@
1
- // @runtime client
2
1
  import type { Editor } from "@tiptap/core";
3
- import { isDocumentReferenceName, isDocumentResourceKey } from "../document-schema.ts";
2
+ import { isDocumentReferenceName, isDocumentResourceKey } from "./document-schema.ts";
4
3
  import type { DocumentEditorHandle } from "./document-toolbar-blocks.ts";
5
4
 
6
5
  export function createEditorHandle(editor: Editor): DocumentEditorHandle {
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Default translation bundle for the text-block editor. textBlocksClient()
3
2
  // hangs it into the LocaleProvider as a fallback bundle — apps override
4
3
  // individual keys via mergeTranslations at the createKumikoApp level.
@@ -128,6 +127,8 @@ export const defaultTranslations: TranslationsByLocale = {
128
127
  "Only the platform maintains this template; it cannot be overridden per tenant.",
129
128
  "templateResolver.errors.templateNotTenantEditable":
130
129
  "Only the platform may edit this template.",
130
+ "templateResolver.overview.lockedOverride":
131
+ "Own version stored but not delivered: the template is not unlocked for tenants.",
131
132
  "templateResolver.errors.template.invalidMeta": "The template settings are invalid.",
132
133
  "templateResolver.errors.template.meta.subject.required": "The subject is missing.",
133
134
  "templateResolver.errors.template.meta.subject.invalid":
@@ -1,23 +1,9 @@
1
- // @runtime client
2
1
  // Public exports for the browser side of template-resolver. Consumed through
3
2
  // the sub-path export `@cosmicdrift/kumiko-bundled-features/template-resolver/web`
4
3
  // — the server side (defineFeature) lives in
5
4
  // `@cosmicdrift/kumiko-bundled-features/template-resolver` and has no React or
6
5
  // DOM deps.
7
6
 
8
- export { MAIL_TONES, type MailTone } from "../mail-constants.ts";
9
- export {
10
- PDF_DEFAULT_MARGIN_MM,
11
- PDF_FOOTER_MARGIN_MM,
12
- PDF_HEADER_MARGIN_MM,
13
- PDF_ORIENTATIONS,
14
- PDF_PAGE_FORMATS,
15
- } from "../pdf-constants.ts";
16
- export {
17
- TemplateResolverErrors,
18
- TemplateResolverHandlers,
19
- TemplateResolverQueries,
20
- } from "../qualified-names.ts";
21
7
  export { textBlocksClient } from "./client-plugin.tsx";
22
8
  export { DocumentContentEditor } from "./document-editor.tsx";
23
9
  export {
@@ -29,7 +15,20 @@ export {
29
15
  MAIL_DOCUMENT_BLOCKS,
30
16
  PDF_DOCUMENT_BLOCKS,
31
17
  } from "./document-toolbar-blocks.ts";
18
+ export { MAIL_TONES, type MailTone } from "./mail-constants.ts";
19
+ export {
20
+ PDF_DEFAULT_MARGIN_MM,
21
+ PDF_FOOTER_MARGIN_MM,
22
+ PDF_HEADER_MARGIN_MM,
23
+ PDF_ORIENTATIONS,
24
+ PDF_PAGE_FORMATS,
25
+ } from "./pdf-constants.ts";
32
26
  export {
33
27
  PlaceholderLineEditor,
34
28
  type PlaceholderLineEditorProps,
35
29
  } from "./placeholder-line-editor-lazy.tsx";
30
+ export {
31
+ TemplateResolverErrors,
32
+ TemplateResolverHandlers,
33
+ TemplateResolverQueries,
34
+ } from "./qualified-names.ts";
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // No imports: web/ re-exports these, and template-meta.ts pulls in zod and the framework engine.
3
2
  export const MAIL_TONES = ["accent", "info", "success", "warning", "danger", "neutral"] as const;
4
3
  export type MailTone = (typeof MAIL_TONES)[number];
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // No imports: web/ re-exports these, and constants.ts pulls in the framework engine.
3
2
  export const PDF_PAGE_FORMATS = ["A4", "Letter"] as const;
4
3
  export type PdfPageFormat = (typeof PDF_PAGE_FORMATS)[number];
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  //
3
2
  // Lazy boundary for the placeholder line editor: tiptap loads with the chunk,
4
3
  // the fallback is a plain text input holding the same `{{name}}` text.
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  //
3
2
  // Single-line editor for plain-text fields that carry {{placeholders}}
4
3
  // (subject, preheader). The stored value stays plain text; placeholders show
@@ -10,11 +9,11 @@ import { Placeholder, UndoRedo } from "@tiptap/extensions";
10
9
  import { EditorContent, useEditor } from "@tiptap/react";
11
10
  import StarterKit from "@tiptap/starter-kit";
12
11
  import { type ReactNode, useMemo, useState } from "react";
13
- import { DocumentVariable } from "../document-schema.ts";
14
- import { contentToLine, lineToContent, singleLine } from "../placeholder-text.ts";
15
12
  import { createVariableView } from "./document-editor-extensions.ts";
13
+ import { DocumentVariable } from "./document-schema.ts";
16
14
  import type { DocumentEditorHandle } from "./document-toolbar-blocks.ts";
17
15
  import { createEditorHandle } from "./editor-handle.ts";
16
+ import { contentToLine, lineToContent, singleLine } from "./placeholder-text.ts";
18
17
  import { useStableByKey } from "./use-stable-by-key.ts";
19
18
 
20
19
  export type PlaceholderLineEditorProps = {
@@ -132,7 +131,9 @@ function LineEditorBody({
132
131
  flat ? "min-h-10" : "min-h-9 rounded-md border border-input px-3",
133
132
  "[&_.ProseMirror]:w-full [&_.ProseMirror]:whitespace-nowrap [&_.ProseMirror]:outline-none",
134
133
  "[&_p]:m-0",
135
- "[&_.is-editor-empty]:before:pointer-events-none [&_.is-editor-empty]:before:float-left [&_.is-editor-empty]:before:h-0 [&_.is-editor-empty]:before:text-muted-foreground [&_.is-editor-empty]:before:content-[attr(data-placeholder)]",
134
+ // Absolute and truncated: a hint longer than the field ends in an ellipsis instead of
135
+ // running past the frame or over the text below it.
136
+ "[&_.is-editor-empty]:relative [&_.is-editor-empty]:before:pointer-events-none [&_.is-editor-empty]:before:absolute [&_.is-editor-empty]:before:inset-x-0 [&_.is-editor-empty]:before:truncate [&_.is-editor-empty]:before:text-muted-foreground [&_.is-editor-empty]:before:content-[attr(data-placeholder)]",
136
137
  readOnly && "opacity-60",
137
138
  )}
138
139
  />
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  import type { JSONContent } from "@tiptap/core";
3
2
  import { isDocumentReferenceName } from "./document-schema.ts";
4
3
 
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Feature name + qualified handler/query names (QN: scope:type:name).
3
2
  export const TEMPLATE_RESOLVER_FEATURE = "template-resolver" as const;
4
3
 
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  import { useState } from "react";
3
2
 
4
3
  // Callers often pass fresh object literals every render; this keeps the first
@@ -12,9 +12,9 @@ import {
12
12
  writeFailure,
13
13
  } from "@cosmicdrift/kumiko-framework/errors";
14
14
  import * as z from "zod";
15
- import { TenantErrors } from "../constants.ts";
16
15
  import { findForbiddenMembershipRole, reservedMembershipRoleError } from "../membership-roles.ts";
17
16
  import { tenantMembershipEntity, tenantMembershipsTable } from "../membership-table.ts";
17
+ import { TenantErrors } from "../web/constants.ts";
18
18
 
19
19
  const executor = createEventStoreExecutor(tenantMembershipsTable, tenantMembershipEntity, {
20
20
  entityName: "tenant-membership",
@@ -1,12 +1,5 @@
1
1
  export { cancelPendingInvitation } from "./cancel-pending-invitation.ts";
2
2
  export { TenantCommandSchemas } from "./command-schemas.ts";
3
- export {
4
- OWNER_INVITE_ROLE_OPTIONS,
5
- TENANT_FEATURE,
6
- TenantErrors,
7
- TenantHandlers,
8
- TenantQueries,
9
- } from "./constants.ts";
10
3
  export { decryptTenantNames } from "./decrypt-tenant-names.ts";
11
4
  export { collectAssignableAppRoles, createTenantFeature } from "./feature.ts";
12
5
  export type { InvitationStatus } from "./invitation-table.ts";
@@ -24,3 +17,10 @@ export {
24
17
  tenantEntity,
25
18
  tenantTable,
26
19
  } from "./schema/tenant.ts";
20
+ export {
21
+ OWNER_INVITE_ROLE_OPTIONS,
22
+ TENANT_FEATURE,
23
+ TenantErrors,
24
+ TenantHandlers,
25
+ TenantQueries,
26
+ } from "./web/constants.ts";
@@ -32,7 +32,7 @@ import {
32
32
  createTimestampField,
33
33
  } from "@cosmicdrift/kumiko-framework/engine";
34
34
  // kumiko-lint-ignore cross-feature-import global-role options are owned by the user feature
35
- import { GLOBAL_ROLE_OPTIONS } from "../user/constants.ts";
35
+ import { GLOBAL_ROLE_OPTIONS } from "../user/web/constants.ts";
36
36
 
37
37
  // Status-const-Object damit Handler-Code keine Magic-Strings nutzt.
38
38
  // Bei rename (z.B. "cancelled" → "revoked") fällt jeder caller auf
@@ -9,10 +9,10 @@ import { createSystemUser, type TenantId } from "@cosmicdrift/kumiko-framework/e
9
9
  import { ConflictError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
10
10
  import { parseRoles } from "@cosmicdrift/kumiko-framework/utils";
11
11
  import { Temporal } from "@cosmicdrift/kumiko-types/temporal";
12
- import { TenantErrors } from "./constants.ts";
13
12
  import { findForbiddenMembershipRole, reservedMembershipRoleError } from "./membership-roles.ts";
14
13
  import { tenantMembershipEntity, tenantMembershipsTable } from "./membership-table.ts";
15
14
  import { seedTenantMembership } from "./seeding.ts";
15
+ import { TenantErrors } from "./web/constants.ts";
16
16
 
17
17
  const membershipExecutor = createEventStoreExecutor(
18
18
  tenantMembershipsTable,
@@ -1,8 +1,8 @@
1
1
  import { acquireNamespacedAdvisoryLock, selectMany } from "@cosmicdrift/kumiko-framework/db";
2
2
  import { ConflictError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
3
3
  import { parseRoles } from "@cosmicdrift/kumiko-framework/utils";
4
- import { TenantErrors } from "./constants.ts";
5
4
  import { tenantMembershipsTable } from "./membership-table.ts";
5
+ import { TenantErrors } from "./web/constants.ts";
6
6
 
7
7
  // Serializes last-TenantAdmin demotion/removal checks per tenant inside the write TX
8
8
  // (dispatcher batch wraps handlers in transaction — xact lock holds through update).
@@ -1,5 +1,5 @@
1
1
  import type { AssignableAppRoles } from "@cosmicdrift/kumiko-framework/engine";
2
- import { OWNER_INVITE_ROLE_OPTIONS } from "./constants.ts";
2
+ import { OWNER_INVITE_ROLE_OPTIONS } from "./web/constants.ts";
3
3
 
4
4
  export function memberRoleOptions(assignableAppRoles: AssignableAppRoles): readonly string[] {
5
5
  return [...OWNER_INVITE_ROLE_OPTIONS, ...assignableAppRoles.keys()];
@@ -8,6 +8,7 @@ import {
8
8
  isAssignableByRole,
9
9
  type ScreenDefinition,
10
10
  } from "@cosmicdrift/kumiko-framework/engine";
11
+ import { memberRoleOptions } from "./member-role-options.ts";
11
12
  import {
12
13
  DEFAULT_INVITE_ROLE_OPTIONS,
13
14
  INVITE_CREATE_SCREEN_ID,
@@ -17,8 +18,7 @@ import {
17
18
  MEMBERS_SCREEN_ID,
18
19
  TenantHandlers,
19
20
  TenantQueries,
20
- } from "./constants.ts";
21
- import { memberRoleOptions } from "./member-role-options.ts";
21
+ } from "./web/constants.ts";
22
22
 
23
23
  // Cross-tenant SystemAdmin platform view of the tenants themselves. The tenant
24
24
  // feature runs with `r.systemScope()`, so the entityList returns every tenant.
@@ -1,11 +1,10 @@
1
- // @runtime client
2
1
  import { mergeTranslations, type TranslationsByLocale } from "@cosmicdrift/kumiko-renderer";
3
2
  import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer/web";
4
3
  import {
5
4
  MEMBER_ROLES_CELL_COMPONENT,
6
5
  MEMBER_STATUS_CELL_COMPONENT,
7
6
  TENANT_FEATURE,
8
- } from "../constants.ts";
7
+ } from "./constants.ts";
9
8
  import { MemberRolesCell } from "./member-roles-cell.tsx";
10
9
  import { MemberStatusCell } from "./member-status-cell.tsx";
11
10
 
@@ -1,8 +1,5 @@
1
- // @runtime client
2
- // Pure string constants — `@runtime client` so browser code (e.g. the
3
- // MemberStatusCell column renderer) can import them too (see
4
- // auth-email-password/constants.ts for the rationale). Runtime imports
5
- // client → server can keep using them as well.
1
+ // Pure string constants, client-safe because they live under web/ (see
2
+ // auth-email-password/web/constants.ts); server code may import them too.
6
3
 
7
4
  // Feature name
8
5
  export const TENANT_FEATURE = "tenant" as const;
@@ -64,7 +61,7 @@ export const TenantQueries = {
64
61
  tenantDirectory: "tenant:query:tenant-directory",
65
62
  activeTenantIds: "tenant:query:active-tenant-ids",
66
63
  resolveUserIds: "tenant:query:resolve-user-ids",
67
- // Pending Invitations für den aktuellen Tenant (Admin-UI-Liste).
64
+ // Pending invitations of the current tenant (admin UI list).
68
65
  invitations: "tenant:query:invitations",
69
66
  // Combined active-members + pending-invitations list backing /members.
70
67
  teamList: "tenant:query:team:list",
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  export { type TenantClientOptions, tenantClient } from "./client-plugin.tsx";
3
2
  export { MemberRolesCell } from "./member-roles-cell.tsx";
4
3
  export { MemberStatusCell } from "./member-status-cell.tsx";
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Column-renderer for the /members screen's roles column — `roles` is a
3
2
  // `readonly string[]` on TeamRow (see team-list.query.ts), and DataTable has
4
3
  // no default array-to-cell formatting, so this joins it into one string.
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Column-renderer for the /members screen's status column, registered via
3
2
  // `tenantClient()`'s `columnRenderers` map (screen.columns[].renderer in
4
3
  // screens.ts). The list frame itself is the generic declarative
@@ -5,6 +5,7 @@ import {
5
5
  } from "@cosmicdrift/kumiko-framework/crypto";
6
6
  import {
7
7
  createEventStoreExecutor,
8
+ createTenantDataDestroyDb,
8
9
  createTenantDb,
9
10
  type DbRunner,
10
11
  selectMany,
@@ -143,10 +144,9 @@ async function runTenantDataHooks(ctx: DestructionStageCtx): Promise<StageRunOut
143
144
  log: ctx.escapeHatchAuditLog ?? createFallbackLogger("tenant-lifecycle"),
144
145
  });
145
146
  const hookCtx: TenantDataHookCtx = {
146
- db: createTenantDb({
147
+ db: createTenantDataDestroyDb({
147
148
  db: ctx.db,
148
149
  tenantId: ctx.tenantId,
149
- mode: "tenant",
150
150
  grants: {
151
151
  unsafeRaw: reason !== undefined ? { reason } : undefined,
152
152
  report,
@@ -3,7 +3,7 @@ import {
3
3
  createSelectField,
4
4
  createTextField,
5
5
  } from "@cosmicdrift/kumiko-framework/engine";
6
- import { type TierAssignmentSource, TierAssignmentSources } from "./constants.ts";
6
+ import { type TierAssignmentSource, TierAssignmentSources } from "./web/constants.ts";
7
7
 
8
8
  // tier-assignment — pro Plattform-Tenant genau ein Aggregat. Aggregate-ID
9
9
  // wird deterministisch aus tenantId abgeleitet (uuidv5, siehe aggregate-id.ts).
@@ -76,18 +76,18 @@ import * as z from "zod";
76
76
  import { tenantTable } from "../tenant/index.ts";
77
77
  import { tierAssignmentAggregateId } from "./aggregate-id.ts";
78
78
  import type { TierMap } from "./compose-app.ts";
79
- import {
80
- TIER_ADMIN_SCREEN_ID,
81
- TIER_ENGINE_FEATURE,
82
- TierAssignmentSources,
83
- TierEngineHandlers,
84
- } from "./constants.ts";
85
79
  import { tierAssignmentEntity } from "./entity.ts";
86
80
  import { getActiveTierQuery } from "./handlers/active-tier.query.ts";
87
81
  import { getTenantTierQuery } from "./handlers/get-tenant-tier.query.ts";
88
82
  import { createSetTenantTierWrite } from "./handlers/set-tenant-tier.write.ts";
89
- import { TIER_ENGINE_I18N } from "./i18n.ts";
90
83
  import { isTrialActive, type TrialPolicy } from "./trial.ts";
84
+ import {
85
+ TIER_ADMIN_SCREEN_ID,
86
+ TIER_ENGINE_FEATURE,
87
+ TierAssignmentSources,
88
+ TierEngineHandlers,
89
+ } from "./web/constants.ts";
90
+ import { TIER_ENGINE_I18N } from "./web/i18n.ts";
91
91
 
92
92
  // Drizzle-table for the tier-assignment-entity. Built once at module-load
93
93
  // from the entity definition — same shape buildEntityTable would produce
@@ -7,8 +7,8 @@ import { defineWriteHandler, type TenantId } from "@cosmicdrift/kumiko-framework
7
7
  import * as z from "zod";
8
8
  import { requireForTenant } from "../../shared/index.ts";
9
9
  import { tierAssignmentAggregateId } from "../aggregate-id.ts";
10
- import { type TierAssignmentSource, TierAssignmentSources } from "../constants.ts";
11
10
  import { type TierAssignmentRow, tierAssignmentEntity } from "../entity.ts";
11
+ import { type TierAssignmentSource, TierAssignmentSources } from "../web/constants.ts";
12
12
 
13
13
  // SystemAdmin setzt das Tier eines BELIEBIGEN Tenants — manueller Grant ohne
14
14
  // Billing. Cross-tenant, daher SystemAdmin-only (kein TenantAdmin: sonst
@@ -17,14 +17,6 @@ export {
17
17
  type TierDefinition,
18
18
  type TierMap,
19
19
  } from "./compose-app.ts";
20
- export {
21
- isTierAssignmentSource,
22
- TIER_ENGINE_FEATURE,
23
- type TierAssignmentSource,
24
- TierAssignmentSources,
25
- TierEngineHandlers,
26
- TierEngineQueries,
27
- } from "./constants.ts";
28
20
  export { tierAssignmentEntity } from "./entity.ts";
29
21
  export {
30
22
  type CreateTierEngineOptions,
@@ -43,3 +35,11 @@ export {
43
35
  type TierResolverDeps,
44
36
  } from "./tier-resolver.ts";
45
37
  export { isTrialActive, type TrialPolicy } from "./trial.ts";
38
+ export {
39
+ isTierAssignmentSource,
40
+ TIER_ENGINE_FEATURE,
41
+ type TierAssignmentSource,
42
+ TierAssignmentSources,
43
+ TierEngineHandlers,
44
+ TierEngineQueries,
45
+ } from "./web/constants.ts";
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Client-feature factory for tier-engine. Supplies the default translations
3
2
  // for the declarative tier-admin actionForm (registered server-side via
4
3
  // r.screen in the feature); the app places the screen only via r.nav.
@@ -9,8 +8,8 @@ import {
9
8
  translationsByLocaleFromKeys,
10
9
  } from "@cosmicdrift/kumiko-renderer";
11
10
  import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer/web";
12
- import { TIER_ENGINE_FEATURE } from "../constants.ts";
13
- import { TIER_ENGINE_I18N } from "../i18n.ts";
11
+ import { TIER_ENGINE_FEATURE } from "./constants.ts";
12
+ import { TIER_ENGINE_I18N } from "./i18n.ts";
14
13
 
15
14
  const defaultTranslations: TranslationsByLocale = translationsByLocaleFromKeys(TIER_ENGINE_I18N);
16
15
 
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Pure string-literal QNs/ids — imported by both server (feature.ts) and
3
2
  // client (web/client-plugin.tsx). Marked `client`, the most permissive
4
3
  // category in the kumiko isolation model (runtime may import client, client
@@ -39,6 +38,6 @@ export const TierEngineQueries = {
39
38
  tierOptions: "tier-engine:query:tier-options",
40
39
  } as const;
41
40
 
42
- // Screen-id für den manuellen Tier-Grant-Screen. Apps referenzieren ihn
43
- // qualifiziert in r.nav: `tier-engine:screen:tier-admin`.
41
+ // Screen id of the manual tier-grant screen. Apps reference it qualified in
42
+ // r.nav: `tier-engine:screen:tier-admin`.
44
43
  export const TIER_ADMIN_SCREEN_ID = "tier-admin" as const;
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Server + client i18n for the tier-admin actionForm. Single source of
3
2
  // truth: r.translations({ keys: TIER_ENGINE_I18N }) registers these
4
3
  // server-side, web/client-plugin derives the client-side locale bundle
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Public exports für die Browser-Seite des tier-engine Features. Konsumiert
3
2
  // über `@cosmicdrift/kumiko-bundled-features/tier-engine/web` — die
4
3
  // Server-Seite (createTierEngineFeature) lebt unter
@@ -14,9 +14,9 @@ import { canonicalizeLocaleTag, isValidLocaleTag } from "@cosmicdrift/kumiko-fra
14
14
  import { isValidIanaTimeZone } from "@cosmicdrift/kumiko-framework/time";
15
15
  import { parseRoles } from "@cosmicdrift/kumiko-framework/utils";
16
16
  import * as z from "zod";
17
- import { UserErrors } from "../constants.ts";
18
17
  import { rolesInputSchema } from "../roles-input-schema.ts";
19
18
  import { userEntity, userTable } from "../schema/user.ts";
19
+ import { UserErrors } from "../web/constants.ts";
20
20
 
21
21
  const crud = createEventStoreExecutor(userTable, userEntity, { entityName: "user" });
22
22
 
@@ -22,8 +22,8 @@ import {
22
22
  writeFailure,
23
23
  } from "@cosmicdrift/kumiko-framework/errors";
24
24
  import { parseRoles } from "@cosmicdrift/kumiko-framework/utils";
25
- import { UserErrors } from "../constants.ts";
26
25
  import { USER_STATUS, userEntity, userTable } from "../schema/user.ts";
26
+ import { UserErrors } from "../web/constants.ts";
27
27
 
28
28
  const crud = createEventStoreExecutor(userTable, userEntity, { entityName: "user" });
29
29
 
@@ -8,9 +8,9 @@ import {
8
8
  import { canonicalizeLocaleTag, isValidLocaleTag } from "@cosmicdrift/kumiko-framework/i18n";
9
9
  import { isValidIanaTimeZone } from "@cosmicdrift/kumiko-framework/time";
10
10
  import * as z from "zod";
11
- import { UserErrors } from "../constants.ts";
12
11
  import { rolesInputSchema } from "../roles-input-schema.ts";
13
12
  import { userEntity, userTable } from "../schema/user.ts";
13
+ import { UserErrors } from "../web/constants.ts";
14
14
  import { applyUserRolesUpdate } from "./update-roles.ts";
15
15
 
16
16
  const crud = createEventStoreExecutor(userTable, userEntity, { entityName: "user" });
@@ -1,5 +1,4 @@
1
1
  export { UserCommandSchemas } from "./command-schemas.ts";
2
- export { USER_FEATURE, UserErrors, UserHandlers, UserQueries } from "./constants.ts";
3
2
  export {
4
3
  backfillUserStreamTenants,
5
4
  type UserStreamBackfillResult,
@@ -22,3 +21,4 @@ export {
22
21
  userEntity,
23
22
  userTable,
24
23
  } from "./schema/user.ts";
24
+ export { USER_FEATURE, UserErrors, UserHandlers, UserQueries } from "./web/constants.ts";
@@ -7,8 +7,8 @@ import {
7
7
  import { createSystemUser, SYSTEM_TENANT_ID } from "@cosmicdrift/kumiko-framework/engine";
8
8
  import { NotFoundError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
9
9
  import { parseRoles } from "@cosmicdrift/kumiko-framework/utils";
10
- import { GLOBAL_ROLE_OPTIONS, type GlobalRole } from "./constants.ts";
11
10
  import { userEntity, userTable } from "./schema/user.ts";
11
+ import { GLOBAL_ROLE_OPTIONS, type GlobalRole } from "./web/constants.ts";
12
12
 
13
13
  const userExecutor = createEventStoreExecutor(userTable, userEntity, { entityName: "user" });
14
14
 
@@ -10,7 +10,7 @@ import {
10
10
  createTimestampField,
11
11
  createTzField,
12
12
  } from "@cosmicdrift/kumiko-framework/engine";
13
- import { GLOBAL_ROLE_OPTIONS } from "../constants.ts";
13
+ import { GLOBAL_ROLE_OPTIONS } from "../web/constants.ts";
14
14
 
15
15
  /**
16
16
  * User-Lifecycle-Status (S2.U1). Single source of truth — Auth-Middleware
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Feature name
3
2
  export const USER_FEATURE = "user" as const;
4
3
 
@@ -1,4 +1,18 @@
1
1
  [
2
+ {
3
+ "version": "0.379.0",
4
+ "type": "improvement",
5
+ "title": "Client files of a feature live under web/",
6
+ "detail": "Files that carried a runtime-client marker moved into <feature>/web/ (constants.ts, i18n.ts, qualified-names and similar), so the runtime-isolation guard reads the runtime from the path. Export subpaths such as ./tenant/constants are unchanged; only relative imports into the old file locations break. The web-side translation glue of user-data-rights, managed-pages, admin-shell, audit, jobs and the document designer is now web/default-translations.ts.",
7
+ "migration": "Run bun kumiko-upgrade --apply, or bun kumiko codemod feature-layout . --write. It moves every file marked as runtime client from src/features/<feature>/ into src/features/<feature>/web/, rewrites the relative imports and drops the marker. Add --check to list what is left.",
8
+ "codemod": "scripts/codemod/feature-layout.ts"
9
+ },
10
+ {
11
+ "version": "0.379.0",
12
+ "type": "fix",
13
+ "title": "DELETION_TOKEN_SECRET description corrected",
14
+ "detail": "The env description no longer claims a fallback to JWT_SECRET; without the secret the anonymous deletion-confirmation flow stays off."
15
+ },
2
16
  {
3
17
  "version": "0.376.0",
4
18
  "type": "improvement",
@@ -9,7 +9,7 @@ export const deletionTokenSecretEnvSchema = z.object({
9
9
  .min(MIN_DELETION_TOKEN_SECRET_LENGTH)
10
10
  .optional()
11
11
  .describe(
12
- "Dedicated HMAC secret for the anonymous deletion-confirmation links. Unset: derived from JWT_SECRET.",
12
+ "Dedicated HMAC secret for the anonymous deletion-confirmation links. At least 32 characters. Unset: the anonymous deletion-confirmation flow stays off; there is no fallback to JWT_SECRET.",
13
13
  )
14
14
  .meta({ kumiko: { pulumi: { generator: "openssl rand -hex 24", secret: true } } }),
15
15
  });
@@ -18,13 +18,6 @@ import {
18
18
  import { isPlainObject } from "@cosmicdrift/kumiko-types/type-guards";
19
19
  import { createConfigAccessor } from "../config/index.ts";
20
20
  import { validateGdprHookCompleteness, validateGdprPiiHookCoverage } from "./boot-checks.ts";
21
- import {
22
- EXPORT_SECTION_EXTENSION_NAME,
23
- PRIVACY_CENTER_SCREEN_ID,
24
- STATUS_OPTION_KEY_PREFIX,
25
- USER_ME_QUERY,
26
- UserDataRightsHandlers,
27
- } from "./constants.ts";
28
21
  import { deletionTokenSecretEnvSchema } from "./env.ts";
29
22
  import { cancelDeletionWrite } from "./handlers/cancel-deletion.write.ts";
30
23
  import { createConfirmDeletionByTokenHandler } from "./handlers/confirm-deletion-by-token.write.ts";
@@ -48,7 +41,6 @@ import {
48
41
  import { requestExportWrite } from "./handlers/request-export.write.ts";
49
42
  import { restrictAccountWrite } from "./handlers/restrict-account.write.ts";
50
43
  import { createRunForgetCleanupHandler } from "./handlers/run-forget-cleanup.write.ts";
51
- import { USER_DATA_RIGHTS_I18N } from "./i18n.ts";
52
44
  import {
53
45
  type GdprMailDefaults,
54
46
  isGdprMailDeliveryAvailable,
@@ -82,6 +74,14 @@ import {
82
74
  exportJobDetailScreen,
83
75
  exportJobListScreen,
84
76
  } from "./screens.ts";
77
+ import {
78
+ EXPORT_SECTION_EXTENSION_NAME,
79
+ PRIVACY_CENTER_SCREEN_ID,
80
+ STATUS_OPTION_KEY_PREFIX,
81
+ USER_ME_QUERY,
82
+ UserDataRightsHandlers,
83
+ } from "./web/constants.ts";
84
+ import { USER_DATA_RIGHTS_I18N } from "./web/i18n.ts";
85
85
 
86
86
  // user-data-rights — DSGVO Art. 15 (Auskunft) + Art. 17 (Löschung) +
87
87
  // Art. 18 (Restriction) + Art. 20 (Portabilität) als Core-Feature.
@@ -343,7 +343,7 @@ export function createUserDataRightsFeature(opts: UserDataRightsOptions = {}): F
343
343
  r.translations({ keys: USER_DATA_RIGHTS_I18N });
344
344
  registerGdprMails(r);
345
345
  // Privacy-center dot-form labels (i18nKey()-marked below), duplicated in
346
- // web/i18n.ts's client bundle since privacy-center-screen.tsx renders
346
+ // web/default-translations.ts's client bundle since privacy-center-screen.tsx renders
347
347
  // them client-side.
348
348
  r.translations({
349
349
  keys: {