vibe64 0.1.47 → 0.1.49

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 (150) hide show
  1. package/bin/run.js +1734 -1687
  2. package/bin/server.js +75 -75
  3. package/bin/upgrade-state.js +4539 -4471
  4. package/dist/assets/GithubBrowserTabs-BwpiRS2u.js +1 -0
  5. package/dist/assets/{LocalDatabaseServer-6VzPWZxG.js → LocalDatabaseServer-u_Ky7bNS.js} +1 -1
  6. package/dist/assets/{Vibe64AuthSettingsButton-TLwqAxDo.js → Vibe64AuthSettingsButton-BCwswT1G.js} +1 -1
  7. package/dist/assets/{Vibe64DashboardShell-B4dQ-oHD.js → Vibe64DashboardShell-CWlgrR2B.js} +1 -1
  8. package/dist/assets/{Vibe64DatabaseWorkspace-Bh5WIPOj.js → Vibe64DatabaseWorkspace-Dhs8_H0P.js} +1 -1
  9. package/dist/assets/Vibe64OutputControls-Dn548CZa.js +8 -0
  10. package/dist/assets/{Vibe64RepositoryWorkspace-idDg94lc.js → Vibe64RepositoryWorkspace-C-8S4JUF.js} +1 -1
  11. package/dist/assets/{Vibe64SessionFiles-Z9zxosyl.js → Vibe64SessionFiles-Cx6J7DDN.js} +2 -3
  12. package/dist/assets/{Vibe64UiStoryboardView-CrCDWMdR.js → Vibe64UiStoryboardView-DHyhJiWS.js} +1 -1
  13. package/dist/assets/{Vibe64UnavailableSessions-TqsxvGSf.js → Vibe64UnavailableSessions-Da4RxIhA.js} +1 -1
  14. package/dist/assets/{_sessionId_-7F1VGOou.js → _sessionId_-DCpgDPSI.js} +1 -1
  15. package/dist/assets/_slug_-BbEWp01a.js +25 -0
  16. package/dist/assets/{_slug_-B16mTWjj.css → _slug_-DerKOisL.css} +1 -1
  17. package/dist/assets/{access-Cx9RH95J.js → access-D4di2sCr.js} +1 -1
  18. package/dist/assets/{app-DPx4KKOa.js → app-Adr9Iz8p.js} +1 -1
  19. package/dist/assets/asyncModuleRecovery-DJsn5NrL.js +1 -0
  20. package/dist/assets/{changes-DYsuQLFW.js → changes-3Dd1O8Lu.js} +1 -1
  21. package/dist/assets/client-BAXHGUOC.js +1 -0
  22. package/dist/assets/{client-BYsDPxR3.js → client-CCZIu6yc.js} +1 -1
  23. package/dist/assets/{conversation-3ln-WnbL.css → conversation-CSDHdGDb.css} +1 -1
  24. package/dist/assets/conversation-DG9lp25w.js +8 -0
  25. package/dist/assets/conversation-ErAO1CmH.js +13 -0
  26. package/dist/assets/{dashboard-CWswAbYP.js → dashboard-0tCzDYCX.js} +1 -1
  27. package/dist/assets/english-definitions-DeiQ-jTT.js +1 -0
  28. package/dist/assets/env-DsyQ2MFX.js +1 -0
  29. package/dist/assets/{health-C0f6s-G1.js → health-DyTXU-nb.js} +1 -1
  30. package/dist/assets/{history-BQjETNB9.js → history-BXGAdPMI.js} +1 -1
  31. package/dist/assets/{incoming-COpY201m.js → incoming-yajkdGBY.js} +1 -1
  32. package/dist/assets/{index-MWACm8Pp.css → index-B-dukXUB.css} +1 -1
  33. package/dist/assets/index-CGz4Yow6.js +136 -0
  34. package/dist/assets/{integrations-BBkvNRHu.js → integrations-BMrXET36.js} +10 -2
  35. package/dist/assets/issues-kc1XBZCK.js +1 -0
  36. package/dist/assets/{learning-B8_wHoe1.js → learning-CIE5ghYv.js} +1 -1
  37. package/dist/assets/linkPath-Ch9eft18.js +1 -0
  38. package/dist/assets/{placement-DXvgK433.js → placement-BNmlke_j.js} +1 -1
  39. package/dist/assets/placement-DYM3JJ-F.js +1 -0
  40. package/dist/assets/publish-DTh6amqi.js +3 -0
  41. package/dist/assets/pull-requests-CbfGSSIh.js +1 -0
  42. package/dist/assets/{repository-BNPt7UWc.js → repository-BstMh-bG.js} +1 -1
  43. package/dist/assets/settings-Bf8C6dls.js +1 -0
  44. package/dist/assets/{studioGateApi-BVdclhPL.js → studioGateApi-mkX1eOTX.js} +1 -1
  45. package/dist/assets/{studioUrls-CGKCbM_d.js → studioUrls-B0-GdWh8.js} +1 -1
  46. package/dist/assets/useArchivedVibe64Sessions-DIOpfUxD.js +1 -0
  47. package/dist/assets/useCommand-CVuya6vG.js +1 -0
  48. package/dist/assets/useEndpointResource-7-YDfAxX.js +1 -0
  49. package/dist/assets/usePaths-Y6UuQxmI.js +1 -0
  50. package/dist/assets/{useUiFeedback-B51xtCAK.js → useUiFeedback-Bd3rao6E.js} +1 -1
  51. package/dist/assets/useVibe64ConversationLog-ChJOU2SD.js +1 -0
  52. package/dist/assets/{useVibe64DatabaseTools-BE_yXZFn.js → useVibe64DatabaseTools-DKV-TeNJ.js} +1 -1
  53. package/dist/assets/{useVibe64ProjectScope-D7b8n1gx.js → useVibe64ProjectScope-DXjsKKhl.js} +1 -1
  54. package/dist/assets/useVibe64SessionData-BkIHUrP5.js +1 -0
  55. package/dist/assets/useVibe64SessionSelection-N8wX5oqo.js +1 -0
  56. package/dist/assets/{useVibe64SystemGraph-CDDcsye4.js → useVibe64SystemGraph-Db_eD-X8.js} +1 -1
  57. package/dist/assets/{useVibe64Terminal-Zr3Mig2L.js → useVibe64Terminal-B9EWJ9Ba.js} +2 -2
  58. package/dist/assets/vibe64ProjectScope.local-l5_-E6pq.js +1 -0
  59. package/dist/assets/vibe64RepositoryRealtime-CHT4-6VN.js +1 -0
  60. package/dist/assets/vibe64SessionFocus-CS6Ex53G.js +1 -0
  61. package/dist/assets/vibe64SessionFocus-CSm4YJQD.css +1 -0
  62. package/dist/assets/vibe64SessionRequestConfig-xIx-5jxQ.js +1 -0
  63. package/dist/index.html +26 -22
  64. package/docs/colleague-usage/ai-accounts.md +6 -2
  65. package/docs/colleague-usage/ai-balance-and-allowance.md +15 -2
  66. package/docs/colleague-usage/coding-agent-failures.md +2 -1
  67. package/docs/colleague-usage/coding-agent-goals.md +8 -3
  68. package/docs/colleague-usage/coding-agents.md +16 -0
  69. package/docs/colleague-usage/github-work.md +14 -0
  70. package/docs/colleague-usage/preview-browser-checks.md +5 -3
  71. package/docs/colleague-usage/project-setup.md +6 -3
  72. package/docs/colleague-usage/running-vibe64-on-your-computer.md +3 -1
  73. package/docs/colleague-usage/sessions.md +35 -7
  74. package/docs/colleague-usage/starter-apps.md +3 -0
  75. package/docs/colleague-usage/temporary-chat-context.md +2 -1
  76. package/docs/colleague-usage/temporary-chats.md +17 -5
  77. package/node_modules/@jskit-ai/assistant-core/CHANGELOG.md +539 -0
  78. package/node_modules/@jskit-ai/assistant-core/locales/en.json +383 -0
  79. package/node_modules/@jskit-ai/assistant-core/package.json +3 -2
  80. package/node_modules/@jskit-ai/assistant-runtime/CHANGELOG.md +138 -0
  81. package/node_modules/@jskit-ai/assistant-runtime/README.md +2 -1
  82. package/node_modules/@jskit-ai/assistant-runtime/locales/en.json +137 -0
  83. package/node_modules/@jskit-ai/assistant-runtime/package.json +3 -2
  84. package/node_modules/@jskit-ai/assistant-runtime/src/server/repositories/assistantConfigRepository.js +223 -203
  85. package/node_modules/@jskit-ai/assistant-runtime/src/server/repositories/conversationsRepository.js +286 -266
  86. package/node_modules/@jskit-ai/assistant-runtime/src/server/repositories/messagesRepository.js +270 -250
  87. package/node_modules/@jskit-ai/assistant-voice/locales/en.json +182 -0
  88. package/node_modules/@jskit-ai/assistant-voice/package.json +3 -2
  89. package/node_modules/@jskit-ai/connector-google-calendar/CHANGELOG.md +83 -0
  90. package/node_modules/@jskit-ai/connector-google-calendar/locales/en.json +91 -0
  91. package/node_modules/@jskit-ai/connector-google-calendar/package.json +4 -3
  92. package/node_modules/@jskit-ai/connectors-catalog/CHANGELOG.md +1722 -0
  93. package/node_modules/@jskit-ai/connectors-catalog/README.md +11 -0
  94. package/node_modules/@jskit-ai/connectors-catalog/locales/en.json +3139 -0
  95. package/node_modules/@jskit-ai/connectors-catalog/package.json +5 -4
  96. package/node_modules/@jskit-ai/connectors-core/CHANGELOG.md +183 -0
  97. package/node_modules/@jskit-ai/connectors-core/locales/en.json +92 -0
  98. package/node_modules/@jskit-ai/connectors-core/package.json +3 -2
  99. package/node_modules/@jskit-ai/http-runtime/CHANGELOG.md +31 -0
  100. package/node_modules/@jskit-ai/http-runtime/locales/en.json +14 -0
  101. package/node_modules/@jskit-ai/http-runtime/package.json +3 -2
  102. package/node_modules/@jskit-ai/kernel/CHANGELOG.md +182 -0
  103. package/node_modules/@jskit-ai/kernel/locales/en.json +94 -0
  104. package/node_modules/@jskit-ai/kernel/package.json +6 -2
  105. package/node_modules/@jskit-ai/payments-core/CHANGELOG.md +128 -0
  106. package/node_modules/@jskit-ai/payments-core/locales/en.json +77 -0
  107. package/node_modules/@jskit-ai/payments-core/package.json +3 -2
  108. package/node_modules/@jskit-ai/realtime/CHANGELOG.md +20 -0
  109. package/node_modules/@jskit-ai/realtime/locales/en.json +14 -0
  110. package/node_modules/@jskit-ai/realtime/package.json +3 -2
  111. package/node_modules/@jskit-ai/resource-core/package.json +1 -1
  112. package/node_modules/@jskit-ai/resource-crud-core/package.json +1 -1
  113. package/node_modules/@jskit-ai/uploads-runtime/CHANGELOG.md +35 -0
  114. package/node_modules/@jskit-ai/uploads-runtime/locales/en.json +15 -0
  115. package/node_modules/@jskit-ai/uploads-runtime/package.json +3 -2
  116. package/node_modules/@local/vibe64-execution/src/host/execHelper.js +49 -48
  117. package/node_modules/@local/vibe64-execution/src/server/gitTurnCheckpointCommand.js +1327 -0
  118. package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +430 -390
  119. package/node_modules/@local/vibe64-genesis/src/server/index.js +45 -45
  120. package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +119 -119
  121. package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +57 -57
  122. package/node_modules/@local/vibe64-sessions/package.json +2 -1
  123. package/node_modules/@local/vibe64-terminals/src/server/opencodeSessionEnvironmentPlugin.js +195 -175
  124. package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1385 -1362
  125. package/package.json +15 -15
  126. package/server.bundle.mjs +44206 -42825
  127. package/dist/assets/GithubBrowserTabs-D-Z3TlA8.js +0 -1
  128. package/dist/assets/Vibe64OutputControls-DtybwgL3.js +0 -8
  129. package/dist/assets/_slug_-Bq84T_Iv.js +0 -24
  130. package/dist/assets/conversation-Bn7wpATa.js +0 -2
  131. package/dist/assets/conversation-CNcCrV-R.js +0 -16
  132. package/dist/assets/definitions-CEbi4qae.js +0 -1
  133. package/dist/assets/env-X7EOFLtl.js +0 -1
  134. package/dist/assets/index-CBo1BEk6.js +0 -138
  135. package/dist/assets/issues-BiSiUd5o.js +0 -1
  136. package/dist/assets/placement-B5T1LR7m.js +0 -1
  137. package/dist/assets/publish-CeLZE2AG.js +0 -3
  138. package/dist/assets/pull-requests-pTdQOT7i.js +0 -1
  139. package/dist/assets/settings-lecRzZ-r.js +0 -1
  140. package/dist/assets/useArchivedVibe64Sessions-DHYRnyJD.js +0 -1
  141. package/dist/assets/useCommand-Epd2yHhQ.js +0 -1
  142. package/dist/assets/useEndpointResource-DBRQISI_.js +0 -1
  143. package/dist/assets/usePaths-DdAnjVDj.js +0 -1
  144. package/dist/assets/useVibe64ConversationLog-DboM3tYN.js +0 -1
  145. package/dist/assets/useVibe64SessionData-CreWtQAO.js +0 -1
  146. package/dist/assets/useVibe64SessionSelection-CDaX4uwY.js +0 -1
  147. package/dist/assets/vibe64ProjectScope.local-BxTBYuRg.js +0 -1
  148. package/dist/assets/vibe64RepositoryRealtime-C-J0I5jY.js +0 -1
  149. package/dist/assets/vibe64SessionFocus-DSW5Irm6.css +0 -1
  150. package/dist/assets/vibe64SessionFocus-DzqbVq60.js +0 -1
@@ -0,0 +1,94 @@
1
+ {
2
+ "jskit": {
3
+ "errors": {
4
+ "internal_server_error": "Internal server error.",
5
+ "request_failed": "Request failed.",
6
+ "validation_failed": "Validation failed.",
7
+ "FST_ERR_VALIDATION": "Validation failed.",
8
+ "not_found": "Not found.",
9
+ "conflict": "Conflict.",
10
+ "domain_validation_failed": "Domain validation failed.",
11
+ "AUTHENTICATION_REQUIRED": "Authentication required.",
12
+ "PERMISSION_DENIED": "Forbidden.",
13
+ "ACTION_AUTHENTICATION_REQUIRED": "Authentication required.",
14
+ "ACTION_CHANNEL_FORBIDDEN": "Forbidden.",
15
+ "ACTION_PERMISSION_DENIED": "Forbidden.",
16
+ "ACTION_SURFACE_FORBIDDEN": "Forbidden.",
17
+ "ACTION_NOT_FOUND": "Not found.",
18
+ "ACTION_VALIDATION_FAILED": "Validation failed.",
19
+ "ACTION_IDEMPOTENCY_KEY_REQUIRED": "Validation failed.",
20
+ "ACTION_ID_REQUIRED": "Validation failed.",
21
+ "ACTION_STREAM_KIND_REQUIRED": "Validation failed.",
22
+ "ACTION_VERSION_INVALID": "Validation failed.",
23
+ "ACTION_OUTPUT_VALIDATION_FAILED": "Action output validation failed.",
24
+ "unsupported_media_type": "Content-Type must be {contentType}."
25
+ },
26
+ "kernel": {
27
+ "validation": {
28
+ "required": "must have required property '{missingProperty}'",
29
+ "type": "must be {type}",
30
+ "minLength": "must NOT have fewer than {limit} characters",
31
+ "maxLength": "must NOT have more than {limit} characters",
32
+ "minimum": "must be >= {limit}",
33
+ "maximum": "must be <= {limit}",
34
+ "exclusiveMinimum": "must be > {limit}",
35
+ "exclusiveMaximum": "must be < {limit}",
36
+ "multipleOf": "must be multiple of {multipleOf}",
37
+ "pattern": "must match pattern \"{pattern}\"",
38
+ "format": "must match format \"{format}\"",
39
+ "enum": "must be equal to one of the allowed values",
40
+ "const": "must be equal to constant",
41
+ "minItems": "must NOT have fewer than {limit} items",
42
+ "maxItems": "must NOT have more than {limit} items",
43
+ "additionalItems": "must NOT have more than {limit} items",
44
+ "uniqueItems": "must NOT have duplicate items (items ## {j} and {i} are identical)",
45
+ "minProperties": "must NOT have fewer than {limit} properties",
46
+ "maxProperties": "must NOT have more than {limit} properties",
47
+ "additionalProperties": "must NOT have additional properties",
48
+ "propertyNames": "property name must be valid",
49
+ "oneOf": "must match exactly one schema in oneOf",
50
+ "anyOf": "must match a schema in anyOf",
51
+ "not": "must NOT be valid",
52
+ "if": "must match \"{failingKeyword}\" schema",
53
+ "invalid": "Invalid value.",
54
+ "schemaFailed": "Schema validation failed.",
55
+ "recordIdInvalid": "Record id must be a canonical positive integer string.",
56
+ "field": {
57
+ "required": "Field is required",
58
+ "typeCastFailed": "Value could not be cast to the required type.",
59
+ "notNullable": "Field cannot be null",
60
+ "minLength": "Length must be at least {min} characters.",
61
+ "maxLength": "Length must be no more than {max} characters.",
62
+ "minValue": "Value must be at least {min}.",
63
+ "maxValue": "Value must be no more than {max}.",
64
+ "pattern": "Value does not match the required pattern.",
65
+ "enumValue": "Value must match one of the allowed enum values.",
66
+ "notAllowed": "Field not allowed",
67
+ "strictBoolean": "Value must be a boolean.",
68
+ "rangeExceeded": "Numeric value is out of the allowed character range.",
69
+ "notEmpty": "Field cannot be empty."
70
+ }
71
+ },
72
+ "action": {
73
+ "versionInvalid": "version must be an integer >= 1.",
74
+ "idRequired": "actionId is required.",
75
+ "idempotencyKeyRequired": "Idempotency key is required for this action."
76
+ },
77
+ "route": {
78
+ "handlerUnavailable": "Route handler is not available in this runtime profile."
79
+ },
80
+ "surface": {
81
+ "pathNotServed": "Path {path} is not served by {surface} surface server."
82
+ },
83
+ "moduleLoad": {
84
+ "appModuleNotDownloaded": "App module did not download. The app may have been updated, or the network request failed.",
85
+ "appModuleFailed": "App module could not load.",
86
+ "pageNotDownloaded": "Page did not download. The app may have been updated, or the network request failed.",
87
+ "pageFailed": "Page could not load.",
88
+ "notDownloaded": "{label} did not download. The app may have been updated, or the network request failed.",
89
+ "failed": "{label} could not load.",
90
+ "reloadUnavailable": "The app cannot reload because the app server is not reachable. Restart the server, then click Retry or Reload."
91
+ }
92
+ }
93
+ }
94
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/kernel",
3
- "version": "0.1.246",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./_testable": "./_testable/index.js",
@@ -16,12 +16,14 @@
16
16
  "types": "./client/pageRedirects.d.ts",
17
17
  "default": "./client/pageRedirects.js"
18
18
  },
19
+ "./client/i18n": "./client/i18n.js",
19
20
  "./client/moduleBootstrap": "./client/moduleBootstrap.js",
20
21
  "./client/vite": "./client/vite/index.js",
21
22
  "./server/actions": "./server/actions/index.js",
22
23
  "./server/actions/actionContributorHelpers": "./server/actions/actionContributorHelpers.js",
23
24
  "./server/features": "./server/features/index.js",
24
25
  "./server/http": "./server/http/index.js",
26
+ "./server/i18n": "./server/i18n.js",
25
27
  "./server/platform": "./server/platform/index.js",
26
28
  "./server/runtime": "./server/runtime/index.js",
27
29
  "./server/runtime/errors": "./server/runtime/errors.js",
@@ -44,8 +46,10 @@
44
46
  "./shared/support/visibility": "./shared/support/visibility.js",
45
47
  "./shared/support/linkPath": "./shared/support/linkPath.js",
46
48
  "./shared/surface": "./shared/surface/index.js",
49
+ "./shared/i18n": "./shared/i18n/index.js",
47
50
  "./shared/surface/paths": "./shared/surface/paths.js",
48
51
  "./shared/surface/runtime": "./shared/surface/runtime.js",
49
- "./shared/surface/registry": "./shared/surface/registry.js"
52
+ "./shared/surface/registry": "./shared/surface/registry.js",
53
+ "./locales/en.json": "./locales/en.json"
50
54
  }
51
55
  }
@@ -0,0 +1,128 @@
1
+ # Changelog
2
+
3
+ ## 0.2.0 - 2026-10-29
4
+
5
+ - Translation ready: every user-visible text is a message key with its English in `locales/en.json`, so an app translates it by supplying translation files only. With no translations, texts and behaviour are unchanged. See the guide "Translating a JSKIT app".
6
+ - `PaymentError` takes `{ messageCode, messageParams }` as its fourth argument; existing `payment_*` codes keep their values.
7
+
8
+ ### New message keys (53)
9
+
10
+ All keys in `locales/en.json` (exported as `./locales/en.json`) are new in this version.
11
+
12
+ <details><summary>Key list</summary>
13
+
14
+ - `jskit.errors.payment_plan_unknown`
15
+ - `jskit.errors.payment_readiness_invalid`
16
+ - `jskit.errors.payment_forbidden`
17
+ - `jskit.errors.payment_operation_conflict`
18
+ - `jskit.errors.payment_request_invalid`
19
+ - `jskit.errors.payment_subscription_exists`
20
+ - `jskit.errors.payment_history_unavailable`
21
+ - `jskit.errors.payment_customer_missing`
22
+ - `jskit.errors.payment_reconciliation_required`
23
+ - `jskit.errors.payment_customer_conflict`
24
+ - `jskit.errors.payment_catalogue_pending`
25
+ - `jskit.errors.payment_catalogue_uncertain`
26
+ - `jskit.errors.payment_balance_limit`
27
+ - `jskit.errors.payment_feature_required`
28
+ - `jskit.errors.payment_insufficient_credits`
29
+ - `jskit.errors.payment_debit_missing`
30
+ - `jskit.errors.payment_customer_unbound`
31
+ - `jskit.payments.scope.readinessMismatch`
32
+ - `jskit.payments.scope.catalogueMismatch`
33
+ - `jskit.payments.scope.merchantMismatch`
34
+ - `jskit.payments.operation.unfinished`
35
+ - `jskit.payments.operation.mayHaveSucceeded`
36
+ - `jskit.payments.input.billingEmail`
37
+ - `jskit.payments.input.historyPage`
38
+ - `jskit.payments.input.historyCollection`
39
+ - `jskit.payments.input.recoveryObjectId`
40
+ - `jskit.payments.input.reference`
41
+ - `jskit.payments.input.creditQuantity`
42
+ - `jskit.payments.input.timestamp`
43
+ - `jskit.payments.reference.otherPlan`
44
+ - `jskit.payments.reference.differentInputs`
45
+ - `jskit.payments.provider.checkAccount`
46
+ - `jskit.payments.provider.unsupportedEvent`
47
+ - `jskit.payments.provider.objectIdMissing`
48
+ - `jskit.payments.provider.subscriptionBinding`
49
+ - `jskit.payments.provider.renewalBinding`
50
+ - `jskit.payments.webhook.rawBodyRequired`
51
+ - `jskit.payments.webhook.verificationFailed`
52
+ - `jskit.payments.configuration.invalid`
53
+ - `jskit.payments.configuration.taxCategoryUnpublishable`
54
+ - `jskit.payments.configuration.sharedConnectionRequired`
55
+ - `jskit.payments.configuration.paddleEnvironment`
56
+ - `jskit.payments.configuration.paddleTaxCategory`
57
+ - `jskit.payments.configuration.paddleClientToken`
58
+ - `jskit.payments.catalogue.reviewFirst`
59
+ - `jskit.payments.catalogue.publicationChanged`
60
+ - `jskit.payments.catalogue.planChanged`
61
+ - `jskit.payments.catalogue.productChanged`
62
+ - `jskit.payments.catalogue.priceChanged`
63
+ - `jskit.payments.catalogue.pendingCatalogueRequestChanged`
64
+ - `jskit.payments.catalogue.recoveryReviewChanged`
65
+ - `jskit.payments.catalogue.pendingRequestChanged`
66
+ - `jskit.payments.catalogue.objectMismatch`
67
+
68
+ </details>
69
+
70
+ ### Codes (53)
71
+
72
+ Error, field-error and message codes this package sends, with their English. Undotted codes kept their existing values and render from `jskit.errors.<code>`.
73
+
74
+ | Code | English |
75
+ | --- | --- |
76
+ | `payment_plan_unknown` | Select a published payment plan. |
77
+ | `payment_readiness_invalid` | App readiness checks must return bounded status and safe explanatory text. |
78
+ | `payment_forbidden` | You cannot manage this billable account. |
79
+ | `payment_operation_conflict` | The pending payment operation changed. |
80
+ | `payment_request_invalid` | Supply a stable checkout request identifier. |
81
+ | `payment_subscription_exists` | Manage the existing subscription through billing instead of starting another checkout. |
82
+ | `payment_history_unavailable` | Billing history could not be loaded. Check provider access and retry. |
83
+ | `payment_customer_missing` | Create a billing account first. |
84
+ | `payment_reconciliation_required` | Provider inspection did not resolve this request. |
85
+ | `payment_customer_conflict` | This provider customer is already bound to a different billable subject. |
86
+ | `payment_catalogue_pending` | Another catalogue request needs resolution. |
87
+ | `payment_catalogue_uncertain` | Catalogue publication stopped. Inspect the pending provider request before retrying; completed items are preserved. |
88
+ | `payment_balance_limit` | Credit balance exceeds the supported integer range. |
89
+ | `payment_feature_required` | Your subscription does not include this feature. |
90
+ | `payment_insufficient_credits` | Not enough credits for this action. |
91
+ | `payment_debit_missing` | No debit exists for this reference. |
92
+ | `payment_customer_unbound` | Bind this provider customer before processing its events. |
93
+ | `payments.scope.readinessMismatch` | Readiness returned a different payment account or environment. |
94
+ | `payments.scope.catalogueMismatch` | Catalogue scope does not match its configured environment. |
95
+ | `payments.scope.merchantMismatch` | The payment scope does not match this environment's merchant configuration. |
96
+ | `payments.operation.unfinished` | Inspect the unfinished provider request before retrying. |
97
+ | `payments.operation.mayHaveSucceeded` | Inspect this account's provider activity before retrying; the request may have succeeded. |
98
+ | `payments.input.billingEmail` | Supply the authenticated billing contact's email. |
99
+ | `payments.input.historyPage` | Select billing subscriptions or transactions and a valid page cursor. |
100
+ | `payments.input.historyCollection` | Select a billing history collection. |
101
+ | `payments.input.recoveryObjectId` | Supply the exact provider object ID to recover. |
102
+ | `payments.input.reference` | Use a nonempty business reference of at most 150 characters. |
103
+ | `payments.input.creditQuantity` | Use a positive integer credit quantity, at most one billion. |
104
+ | `payments.input.timestamp` | Use an integer UTC timestamp in milliseconds. |
105
+ | `payments.reference.otherPlan` | The checkout request already selected another plan. |
106
+ | `payments.reference.differentInputs` | This business reference was already used with different inputs. |
107
+ | `payments.provider.checkAccount` | Check the {provider} account, price mapping and subscription shape. |
108
+ | `payments.provider.unsupportedEvent` | The event is not a supported subscription payment for this customer. |
109
+ | `payments.provider.objectIdMissing` | The provider did not return an object ID. |
110
+ | `payments.provider.subscriptionBinding` | Check the provider subscription and logical price binding. |
111
+ | `payments.provider.renewalBinding` | Check the renewal's logical price binding. |
112
+ | `payments.webhook.rawBodyRequired` | Supply the unmodified webhook request bytes. |
113
+ | `payments.webhook.verificationFailed` | {provider} webhook verification failed. |
114
+ | `payments.configuration.invalid` | Check the application's payment configuration. |
115
+ | `payments.configuration.taxCategoryUnpublishable` | Set the application's Paddle product tax category before publishing. |
116
+ | `payments.configuration.sharedConnectionRequired` | Select a shared Stripe or Paddle connection with a backend API-key Env reference for {environment}. |
117
+ | `payments.configuration.paddleEnvironment` | Select a Paddle connection configured for {environment}. |
118
+ | `payments.configuration.paddleTaxCategory` | Choose the Paddle tax category for the products this app sells. |
119
+ | `payments.configuration.paddleClientToken` | Set the Env reference for this environment's Paddle public client token. |
120
+ | `payments.catalogue.reviewFirst` | Review the current catalogue and resolve provider drift or unfinished requests first. |
121
+ | `payments.catalogue.publicationChanged` | Another publication changed the catalogue; review again. |
122
+ | `payments.catalogue.planChanged` | This plan changed; review again. |
123
+ | `payments.catalogue.productChanged` | This product changed; review again. |
124
+ | `payments.catalogue.priceChanged` | This price changed; review again. |
125
+ | `payments.catalogue.pendingCatalogueRequestChanged` | The pending catalogue request changed. |
126
+ | `payments.catalogue.recoveryReviewChanged` | The recovery review changed. Inspect the current pending operation first. |
127
+ | `payments.catalogue.pendingRequestChanged` | The pending request changed. |
128
+ | `payments.catalogue.objectMismatch` | The provider object does not match the pending operation. |
@@ -0,0 +1,77 @@
1
+ {
2
+ "jskit": {
3
+ "errors": {
4
+ "payment_plan_unknown": "Select a published payment plan.",
5
+ "payment_readiness_invalid": "App readiness checks must return bounded status and safe explanatory text.",
6
+ "payment_forbidden": "You cannot manage this billable account.",
7
+ "payment_operation_conflict": "The pending payment operation changed.",
8
+ "payment_request_invalid": "Supply a stable checkout request identifier.",
9
+ "payment_subscription_exists": "Manage the existing subscription through billing instead of starting another checkout.",
10
+ "payment_history_unavailable": "Billing history could not be loaded. Check provider access and retry.",
11
+ "payment_customer_missing": "Create a billing account first.",
12
+ "payment_reconciliation_required": "Provider inspection did not resolve this request.",
13
+ "payment_customer_conflict": "This provider customer is already bound to a different billable subject.",
14
+ "payment_catalogue_pending": "Another catalogue request needs resolution.",
15
+ "payment_catalogue_uncertain": "Catalogue publication stopped. Inspect the pending provider request before retrying; completed items are preserved.",
16
+ "payment_balance_limit": "Credit balance exceeds the supported integer range.",
17
+ "payment_feature_required": "Your subscription does not include this feature.",
18
+ "payment_insufficient_credits": "Not enough credits for this action.",
19
+ "payment_debit_missing": "No debit exists for this reference.",
20
+ "payment_customer_unbound": "Bind this provider customer before processing its events."
21
+ },
22
+ "payments": {
23
+ "scope": {
24
+ "readinessMismatch": "Readiness returned a different payment account or environment.",
25
+ "catalogueMismatch": "Catalogue scope does not match its configured environment.",
26
+ "merchantMismatch": "The payment scope does not match this environment's merchant configuration."
27
+ },
28
+ "operation": {
29
+ "unfinished": "Inspect the unfinished provider request before retrying.",
30
+ "mayHaveSucceeded": "Inspect this account's provider activity before retrying; the request may have succeeded."
31
+ },
32
+ "input": {
33
+ "billingEmail": "Supply the authenticated billing contact's email.",
34
+ "historyPage": "Select billing subscriptions or transactions and a valid page cursor.",
35
+ "historyCollection": "Select a billing history collection.",
36
+ "recoveryObjectId": "Supply the exact provider object ID to recover.",
37
+ "reference": "Use a nonempty business reference of at most 150 characters.",
38
+ "creditQuantity": "Use a positive integer credit quantity, at most one billion.",
39
+ "timestamp": "Use an integer UTC timestamp in milliseconds."
40
+ },
41
+ "reference": {
42
+ "otherPlan": "The checkout request already selected another plan.",
43
+ "differentInputs": "This business reference was already used with different inputs."
44
+ },
45
+ "provider": {
46
+ "checkAccount": "Check the {provider} account, price mapping and subscription shape.",
47
+ "unsupportedEvent": "The event is not a supported subscription payment for this customer.",
48
+ "objectIdMissing": "The provider did not return an object ID.",
49
+ "subscriptionBinding": "Check the provider subscription and logical price binding.",
50
+ "renewalBinding": "Check the renewal's logical price binding."
51
+ },
52
+ "webhook": {
53
+ "rawBodyRequired": "Supply the unmodified webhook request bytes.",
54
+ "verificationFailed": "{provider} webhook verification failed."
55
+ },
56
+ "configuration": {
57
+ "invalid": "Check the application's payment configuration.",
58
+ "taxCategoryUnpublishable": "Set the application's Paddle product tax category before publishing.",
59
+ "sharedConnectionRequired": "Select a shared Stripe or Paddle connection with a backend API-key Env reference for {environment}.",
60
+ "paddleEnvironment": "Select a Paddle connection configured for {environment}.",
61
+ "paddleTaxCategory": "Choose the Paddle tax category for the products this app sells.",
62
+ "paddleClientToken": "Set the Env reference for this environment's Paddle public client token."
63
+ },
64
+ "catalogue": {
65
+ "reviewFirst": "Review the current catalogue and resolve provider drift or unfinished requests first.",
66
+ "publicationChanged": "Another publication changed the catalogue; review again.",
67
+ "planChanged": "This plan changed; review again.",
68
+ "productChanged": "This product changed; review again.",
69
+ "priceChanged": "This price changed; review again.",
70
+ "pendingCatalogueRequestChanged": "The pending catalogue request changed.",
71
+ "recoveryReviewChanged": "The recovery review changed. Inspect the current pending operation first.",
72
+ "pendingRequestChanged": "The pending request changed.",
73
+ "objectMismatch": "The provider object does not match the pending operation."
74
+ }
75
+ }
76
+ }
77
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/payments-core",
3
- "version": "0.1.62",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./shared": "./src/shared/configuration.js",
@@ -14,6 +14,7 @@
14
14
  "./server/stripe": "./src/server/stripe.js",
15
15
  "./server/paddle": "./src/server/paddle.js",
16
16
  "./server/catalogue": "./src/server/catalogue.js",
17
- "./server/readiness": "./src/server/readiness.js"
17
+ "./server/readiness": "./src/server/readiness.js",
18
+ "./locales/en.json": "./locales/en.json"
18
19
  }
19
20
  }
@@ -0,0 +1,20 @@
1
+ # Changelog
2
+
3
+ ## 0.2.0 - 2026-10-29
4
+
5
+ - Translation ready: every user-visible text is a message key with its English in `locales/en.json`, so an app translates it by supplying translation files only. With no translations, texts and behaviour are unchanged. See the guide "Translating a JSKIT app".
6
+
7
+ ### New message keys (6)
8
+
9
+ All keys in `locales/en.json` (exported as `./locales/en.json`) are new in this version.
10
+
11
+ <details><summary>Key list</summary>
12
+
13
+ - `jskit.realtime.indicator.connected`
14
+ - `jskit.realtime.indicator.connectedTooltip`
15
+ - `jskit.realtime.indicator.disconnected`
16
+ - `jskit.realtime.indicator.disconnectedTooltip`
17
+ - `jskit.realtime.indicator.reconnect`
18
+ - `jskit.realtime.indicator.unavailableTooltip`
19
+
20
+ </details>
@@ -0,0 +1,14 @@
1
+ {
2
+ "jskit": {
3
+ "realtime": {
4
+ "indicator": {
5
+ "connected": "Realtime connected",
6
+ "connectedTooltip": "Realtime is connected. Live updates are active.",
7
+ "disconnected": "Realtime disconnected",
8
+ "disconnectedTooltip": "Live updates are disconnected. Click to reconnect. If your session expired, sign in again.",
9
+ "reconnect": "Reconnect live updates",
10
+ "unavailableTooltip": "Realtime is unavailable. Live updates are disabled for this page."
11
+ }
12
+ }
13
+ }
14
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/realtime",
3
- "version": "0.1.246",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./server/RealtimeProvider": "./src/server/RealtimeProvider.js",
@@ -8,6 +8,7 @@
8
8
  "./client": "./src/client/RealtimeClientProvider.js",
9
9
  "./client/RealtimeClientProvider": "./src/client/RealtimeClientProvider.js",
10
10
  "./client/composables/useRealtimeEvent": "./src/client/composables/useRealtimeEvent.js",
11
- "./client/runtime": "./src/client/runtime.js"
11
+ "./client/runtime": "./src/client/runtime.js",
12
+ "./locales/en.json": "./locales/en.json"
12
13
  }
13
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/resource-core",
3
- "version": "0.1.188",
3
+ "version": "0.1.191",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./shared/resource": "./src/shared/resource.js"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/resource-crud-core",
3
- "version": "0.1.188",
3
+ "version": "0.1.191",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./shared/crudFieldContract": "./src/shared/crudFieldContract.js",
@@ -0,0 +1,35 @@
1
+ # Changelog
2
+
3
+ ## 0.2.0 - 2026-10-29
4
+
5
+ - Translation ready: every user-visible text is a message key with its English in `locales/en.json`, so an app translates it by supplying translation files only. With no translations, texts and behaviour are unchanged. See the guide "Translating a JSKIT app".
6
+
7
+ ### New message keys (7)
8
+
9
+ All keys in `locales/en.json` (exported as `./locales/en.json`) are new in this version.
10
+
11
+ <details><summary>Key list</summary>
12
+
13
+ - `jskit.uploads.file.invalid`
14
+ - `jskit.uploads.file.tooLarge`
15
+ - `jskit.uploads.file.empty`
16
+ - `jskit.uploads.file.typeNotAllowed`
17
+ - `jskit.uploads.file.tooMany`
18
+ - `jskit.uploads.file.required`
19
+ - `jskit.uploads.file.fieldNotAllowed`
20
+
21
+ </details>
22
+
23
+ ### Codes (7)
24
+
25
+ Error, field-error and message codes this package sends, with their English. Undotted codes kept their existing values and render from `jskit.errors.<code>`.
26
+
27
+ | Code | English |
28
+ | --- | --- |
29
+ | `uploads.file.invalid` | Upload is invalid. |
30
+ | `uploads.file.tooLarge` | {label} file is too large. Maximum allowed size is {maxMb}MB. |
31
+ | `uploads.file.empty` | {label} file is empty. |
32
+ | `uploads.file.typeNotAllowed` | {label} must be one of: {types}. |
33
+ | `uploads.file.tooMany` | {label} upload allows only one file. |
34
+ | `uploads.file.required` | {label} file is required. |
35
+ | `uploads.file.fieldNotAllowed` | {label} field "{field}" is not allowed. |
@@ -0,0 +1,15 @@
1
+ {
2
+ "jskit": {
3
+ "uploads": {
4
+ "file": {
5
+ "invalid": "Upload is invalid.",
6
+ "tooLarge": "{label} file is too large. Maximum allowed size is {maxMb}MB.",
7
+ "empty": "{label} file is empty.",
8
+ "typeNotAllowed": "{label} must be one of: {types}.",
9
+ "tooMany": "{label} upload allows only one file.",
10
+ "required": "{label} file is required.",
11
+ "fieldNotAllowed": "{label} field \"{field}\" is not allowed."
12
+ }
13
+ }
14
+ }
15
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/uploads-runtime",
3
- "version": "0.1.221",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./client": "./src/client/index.js",
@@ -9,6 +9,7 @@
9
9
  "./server/multipart/registerMultipartSupport": "./src/server/multipart/registerMultipartSupport.js",
10
10
  "./server/multipart/readSingleMultipartFile": "./src/server/multipart/readSingleMultipartFile.js",
11
11
  "./server/policy/uploadPolicy": "./src/server/policy/uploadPolicy.js",
12
- "./server/storage/createUploadStorageService": "./src/server/storage/createUploadStorageService.js"
12
+ "./server/storage/createUploadStorageService": "./src/server/storage/createUploadStorageService.js",
13
+ "./locales/en.json": "./locales/en.json"
13
14
  }
14
15
  }