@voltro/cli 0.37.0 → 0.39.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 (183) hide show
  1. package/CHANGELOG.md +316 -0
  2. package/THIRD-PARTY-NOTICES.md +80 -45
  3. package/dist/{addCommand-BNeoeSxe.js → addCommand-C05L9tZh.js} +2 -2
  4. package/dist/addCommand-C3MdJG-a.js +2 -0
  5. package/dist/{agentsMd-mhQMF1bx.js → agentsMd-7zI2h5l9.js} +3 -3
  6. package/dist/agentsMd-BFCXh2gl.js +2 -0
  7. package/dist/apiBuild-2GvK8CUB.js +2 -0
  8. package/dist/{apiBuild-DGsShRuF.js → apiBuild-DGalUk9v.js} +3 -3
  9. package/dist/baselineCommand-CXv680Dc.js +2 -0
  10. package/dist/{baselineCommand-C6NMt-oa.js → baselineCommand-Ck2Xm8M7.js} +18 -18
  11. package/dist/bin.js +1 -1
  12. package/dist/bootRefusal-pgvDxlrU.js +7 -0
  13. package/dist/{build-CiFA-E19.js → build-CfF6t0UM.js} +88 -81
  14. package/dist/{capabilitiesCommand-nq_pz5xd.js → capabilitiesCommand-D5gucwYa.js} +8 -8
  15. package/dist/{checkCommand-CIPYyNyc.js → checkCommand-BV56Pcc1.js} +1 -1
  16. package/dist/{checkCommand-CLPTzYqM.js → checkCommand-CBtynBKW.js} +34 -34
  17. package/dist/{cloudCmd-NQSwe_Qk.js → cloudCmd-C42gaO8s.js} +16 -16
  18. package/dist/{clusterCmd-D5wsCmA_.js → clusterCmd-DrVFCzSj.js} +8 -4
  19. package/dist/{codegen-GYYcdpCg.js → codegen-CbpGCWLG.js} +1 -1
  20. package/dist/codegen-i8QGcHsi.js +2 -0
  21. package/dist/codegenCommand-W7SDdiAQ.js +129 -0
  22. package/dist/{codemodRunner-cyqu5oxr.js → codemodRunner-D-jTyvWo.js} +679 -495
  23. package/dist/{commands-BwG9A9Vv.js → commands-BD9eBRY3.js} +48 -48
  24. package/dist/{connectionConfig-UFlIEiys.js → connectionConfig-Bk9IC7D0.js} +1 -1
  25. package/dist/{dashboardCommand-C7U146xQ.js → dashboardCommand-7qGylm0F.js} +3 -3
  26. package/dist/{dataCommand-BOwd8_aJ.js → dataCommand-C_F2DYxe.js} +14 -11
  27. package/dist/{dbCommand-C4UW8cVN.js → dbCommand-DSwGv9wS.js} +50 -49
  28. package/dist/dbCommand-DcqEyxju.js +2 -0
  29. package/dist/dev-alhkKoEX.js +3 -0
  30. package/dist/{dev-bwDgSObH.js → dev-gqpnzVhI.js} +2357 -2280
  31. package/dist/{dialectDriver-CgXnDfec.js → dialectDriver-czCHYpeH.js} +2 -1
  32. package/dist/{doctorCommand-BXyrtN2l.js → doctorCommand-Bvs-BQrM.js} +242 -238
  33. package/dist/doctorCommand-CVXfRrng.js +2 -0
  34. package/dist/{dormancyCommand-BDdRRLsa.js → dormancyCommand-B-PPHc9Q.js} +1 -1
  35. package/dist/{e2eCmd-BRabZww-.js → e2eCmd-uFHig1hV.js} +8 -2
  36. package/dist/{embeddingsCommand-CjWGcAE6.js → embeddingsCommand-OKY6XjUf.js} +6 -6
  37. package/dist/{envCommand-B_TeG297.js → envCommand-B1-Zm85H.js} +2 -2
  38. package/dist/{evolveCommand-D6N-WfA4.js → evolveCommand-C4-NlFbd.js} +6 -8
  39. package/dist/{generateCommand-DbgcUpGw.js → generateCommand-CcyvH2ve.js} +1 -1
  40. package/dist/index.js +1 -1
  41. package/dist/{infoCommand-BHKTprrx.js → infoCommand-CTo8Jnhq.js} +7 -7
  42. package/dist/inspect-B7U7Cl_Z.js +1192 -0
  43. package/dist/inspect-DUze25t0.js +2 -0
  44. package/dist/{inspectCmd-EHFZ9yYu.js → inspectCmd-niF97fAq.js} +5 -5
  45. package/dist/inspectGateHint-BjnFubmH.js +7 -0
  46. package/dist/{logFileSink-C_D2wRN1.js → logFileSink-B4uP8pvf.js} +1 -1
  47. package/dist/{logsCmd-D36xK7Zu.js → logsCmd-B6oNsfaZ.js} +10 -7
  48. package/dist/{manifestBuild-hpPLaGxV.js → manifestBuild-BK42hu0k.js} +1 -1
  49. package/dist/manifestBuild-j0n109tt.js +2 -0
  50. package/dist/{metaCommands-CIoQNlaQ.js → metaCommands-DUYR--Ts.js} +1 -1
  51. package/dist/{migrate-RwgUWXfc.js → migrate-BnPw2zC8.js} +7 -4
  52. package/dist/{packageCommand-Cug_3Ogl.js → packageCommand-9SVyvsSo.js} +3 -2
  53. package/dist/{probeCommand-BPEpwT32.js → probeCommand-C9gazU0H.js} +35 -24
  54. package/dist/{projectScaffold-CxgtJvlb.js → projectScaffold-BEhhHjPr.js} +1 -1
  55. package/dist/{projectScaffold-DDgWbNLe.js → projectScaffold-BvhLOrLq.js} +17 -15
  56. package/dist/{runtimeTrace-WYV7qYvz.js → runtimeTrace-DzZOCd94.js} +1 -1
  57. package/dist/{scheduleManifestCmd-D2x0CTTY.js → scheduleManifestCmd-kmWzrO_w.js} +6 -9
  58. package/dist/{sdkgen-TM5sSdf7.js → sdkgen-C4roLErM.js} +4 -4
  59. package/dist/{seedRunner-ZmLSqNe2.js → seedRunner-IdHEprqf.js} +1 -4
  60. package/dist/serveCommand-B6TATyCj.js +1770 -0
  61. package/dist/serveCommand-CNR0gI9V.js +2 -0
  62. package/dist/serveEntry.js +2 -2
  63. package/dist/{serverlessCommand-CfJZy6dS.js → serverlessCommand-DbJ7Plg9.js} +3 -3
  64. package/dist/{start-BgN62boB.js → start-BNuTWdRd.js} +1 -1
  65. package/dist/{start-T4VesWiM.js → start-ft_KzFTd.js} +240 -237
  66. package/dist/startEntry.js +1 -1
  67. package/dist/startup.d.ts +40 -1
  68. package/dist/startup.js +2 -2
  69. package/dist/startupRunner-CEqQq7ax.js +108 -0
  70. package/dist/{test-DIQ0jlkQ.js → test-CLYXrZ2F.js} +1 -1
  71. package/dist/{tracesCmd-DStmCJPi.js → tracesCmd-DgtgOUdi.js} +7 -4
  72. package/dist/{typecheckCommand-BlsWiCNq.js → typecheckCommand-BuCtT92o.js} +7 -7
  73. package/dist/updateCommand-6FMU2klq.js +2 -0
  74. package/dist/{updateCommand-9GHHsmDf.js → updateCommand-CHBmCB17.js} +5 -3
  75. package/dist/{webDev-Dybxew86.js → webDev-CTpSY-e_.js} +892 -856
  76. package/dist/webDev-id3I5PvG.js +2 -0
  77. package/dist/{webhookDiscovery-D7VaeMlz.js → webhookDiscovery-CphsQe59.js} +4 -6
  78. package/dist/{webhookDiscovery-CrGAfhIG.js → webhookDiscovery-il9ti-HE.js} +1 -1
  79. package/dist/{webhooksCommand-CHWSPk5z.js → webhooksCommand-BVvOtZ1B.js} +1 -1
  80. package/package.json +39 -21
  81. package/templates/AGENTS.md +2 -2
  82. package/templates/agent-docs/_index.md +2 -2
  83. package/templates/agent-docs/_manifest.json +2 -2
  84. package/templates/agent-docs/authentication.md +30 -0
  85. package/templates/agent-docs/cli.md +17 -13
  86. package/templates/agent-docs/data.md +44 -1
  87. package/templates/agent-docs/database/migrations.md +2 -2
  88. package/templates/agent-docs/database/seedsdialects.md +2 -2
  89. package/templates/agent-docs/deployment.md +21 -7
  90. package/templates/agent-docs/internationalization.md +10 -3
  91. package/templates/agent-docs/local-first-mobile.md +141 -20
  92. package/templates/agent-docs/plugins/audit.md +4 -0
  93. package/templates/agent-docs/plugins/auth.md +4 -6
  94. package/templates/agent-docs/plugins/mail.md +1 -1
  95. package/templates/agent-docs/plugins/ratelimit.md +1 -1
  96. package/templates/agent-docs/plugins.md +3 -1
  97. package/templates/agent-docs/reference.md +3 -2
  98. package/templates/agent-docs/releases.md +130 -1
  99. package/templates/agent-docs/routing.md +34 -2
  100. package/templates/agent-docs/templates/apibackends.md +1 -1
  101. package/templates/agent-docs/templates/mobile.md +1 -1
  102. package/templates/agent-docs/whats-new.md +178 -44
  103. package/templates/apps/api-ai/package.json +7 -7
  104. package/templates/apps/api-auth/package.json +8 -8
  105. package/templates/apps/api-backend/package.json +7 -7
  106. package/templates/apps/api-backend-deactivation/package.json +7 -7
  107. package/templates/apps/api-backend-mail/package.json +8 -8
  108. package/templates/apps/api-backend-mariadb/package.json +9 -9
  109. package/templates/apps/api-backend-sqlite/package.json +8 -8
  110. package/templates/apps/api-backend-storage/package.json +8 -8
  111. package/templates/apps/api-cms/package.json +10 -10
  112. package/templates/apps/api-cms/tests/content.write.test.ts +16 -2
  113. package/templates/apps/api-collab/mutations/documents.setBody.mutation.server.ts +11 -5
  114. package/templates/apps/api-collab/package.json +8 -8
  115. package/templates/apps/api-collab/tests/documents.setBody.test.ts +8 -2
  116. package/templates/apps/api-data-advanced/package.json +8 -8
  117. package/templates/apps/api-durable/package.json +8 -8
  118. package/templates/apps/api-feature-flags/package.json +9 -9
  119. package/templates/apps/api-governance/package.json +8 -8
  120. package/templates/apps/api-kv/package.json +8 -8
  121. package/templates/apps/api-moderation/package.json +8 -8
  122. package/templates/apps/api-observability/package.json +8 -8
  123. package/templates/apps/api-ratelimit/package.json +8 -8
  124. package/templates/apps/api-rbac/authz.ts +16 -1
  125. package/templates/apps/api-rbac/package.json +8 -8
  126. package/templates/apps/api-rest/package.json +7 -7
  127. package/templates/apps/api-saas/package.json +11 -11
  128. package/templates/apps/api-saas-starter/package.json +10 -10
  129. package/templates/apps/api-search/package.json +8 -8
  130. package/templates/apps/api-status/package.json +8 -8
  131. package/templates/apps/api-versioning/mutations/documents.update.mutation.server.ts +7 -5
  132. package/templates/apps/api-versioning/package.json +8 -8
  133. package/templates/apps/api-webhooks/package.json +9 -9
  134. package/templates/apps/changelog/package.json +6 -6
  135. package/templates/apps/edge-functions/package.json +2 -2
  136. package/templates/apps/frontend-admin/package.json +8 -8
  137. package/templates/apps/frontend-app/package.json +9 -9
  138. package/templates/apps/frontend-auth/package.json +8 -8
  139. package/templates/apps/frontend-blank/package.json +7 -7
  140. package/templates/apps/frontend-cms/package.json +9 -9
  141. package/templates/apps/frontend-collab/package.json +10 -10
  142. package/templates/apps/frontend-contact/package.json +7 -7
  143. package/templates/apps/frontend-dashboard/package.json +7 -7
  144. package/templates/apps/frontend-docs/package.json +7 -7
  145. package/templates/apps/frontend-i18n/package.json +6 -6
  146. package/templates/apps/frontend-landing/package.json +7 -7
  147. package/templates/apps/frontend-portal/package.json +8 -8
  148. package/templates/apps/frontend-saas/package.json +8 -8
  149. package/templates/apps/frontend-spa/package.json +7 -7
  150. package/templates/apps/frontend-ssr/package.json +7 -7
  151. package/templates/apps/frontend-ssr-api/package.json +8 -8
  152. package/templates/apps/frontend-static-blog/package.json +6 -6
  153. package/templates/apps/frontend-status/package.json +8 -8
  154. package/templates/apps/mobile-app/README.md +41 -17
  155. package/templates/apps/mobile-app/app.config.ts +1 -1
  156. package/templates/apps/mobile-app/package.json +15 -11
  157. package/templates/apps/mobile-app/src/app/_layout.tsx +44 -13
  158. package/templates/apps/mobile-app/src/app/index.tsx +1 -1
  159. package/templates/apps/mobile-app/src/app/settings.tsx +4 -1
  160. package/templates/apps/mobile-app/src/client.ts +74 -57
  161. package/templates/apps/mobile-app/src/lib/api.ts +4 -4
  162. package/templates/apps/mobile-app/src/lib/deeplinks.ts +6 -6
  163. package/templates/apps/mobile-app/src/persistence.ts +24 -3
  164. package/templates/apps/mobile-app/tsconfig.json +17 -3
  165. package/templates/patches/@effect__cluster@0.60.0.patch +51 -3
  166. package/dist/addCommand-aXSQveak.js +0 -2
  167. package/dist/agentsMd-BTchIZku.js +0 -2
  168. package/dist/apiBuild-D0f6hYbH.js +0 -2
  169. package/dist/baselineCommand-Cfw2Afwm.js +0 -2
  170. package/dist/codegen-uYrrDzQv.js +0 -2
  171. package/dist/codegenCommand-BxS3sCeJ.js +0 -30
  172. package/dist/dbCommand-CC-qNzpz.js +0 -2
  173. package/dist/dev-BV6XNYKf.js +0 -3
  174. package/dist/doctorCommand-C4L61G_L.js +0 -2
  175. package/dist/inspect-CjTYzAs_.js +0 -1190
  176. package/dist/inspect-P4pxoMaV.js +0 -2
  177. package/dist/inspectGateHint-BF6608UT.js +0 -4
  178. package/dist/manifestBuild-COkJoyAr.js +0 -2
  179. package/dist/serveCommand-CyZsXL1l.js +0 -1766
  180. package/dist/serveCommand-qumm7jdF.js +0 -2
  181. package/dist/startupRunner-DPGFchOa.js +0 -71
  182. package/dist/updateCommand-BN0tkl9-.js +0 -2
  183. package/dist/webDev-BcykISYQ2.js +0 -2
@@ -12,12 +12,12 @@
12
12
  "test": "voltro test"
13
13
  },
14
14
  "dependencies": {
15
- "@voltro/changelog": "0.37.0",
16
- "@voltro/cli": "0.37.0",
17
- "@voltro/client": "0.37.0",
18
- "@voltro/env": "0.37.0",
19
- "@voltro/i18n": "0.37.0",
20
- "@voltro/web": "0.37.0",
15
+ "@voltro/changelog": "0.39.0",
16
+ "@voltro/cli": "0.39.0",
17
+ "@voltro/client": "0.39.0",
18
+ "@voltro/env": "0.39.0",
19
+ "@voltro/i18n": "0.39.0",
20
+ "@voltro/web": "0.39.0",
21
21
  "react": "^19.0.0",
22
22
  "react-dom": "^19.0.0"
23
23
  },
@@ -12,8 +12,8 @@
12
12
  },
13
13
  "dependencies": {
14
14
  "@effect/platform": "^0.97.0",
15
- "@voltro/cli": "0.37.0",
16
- "@voltro/serverless": "0.37.0",
15
+ "@voltro/cli": "0.39.0",
16
+ "@voltro/serverless": "0.39.0",
17
17
  "effect": "^3.22.0"
18
18
  },
19
19
  "devDependencies": {
@@ -12,18 +12,18 @@
12
12
  "test": "voltro test"
13
13
  },
14
14
  "dependencies": {
15
- "@{{projectName}}/api": "0.37.0",
16
- "@voltro/cli": "0.37.0",
17
- "@voltro/client": "0.37.0",
18
- "@voltro/env": "0.37.0",
19
- "@voltro/i18n": "0.37.0",
20
- "@voltro/ui-shadcn": "0.37.0",
21
- "@voltro/web": "0.37.0",
15
+ "@{{projectName}}/api": "0.39.0",
16
+ "@voltro/cli": "0.39.0",
17
+ "@voltro/client": "0.39.0",
18
+ "@voltro/env": "0.39.0",
19
+ "@voltro/i18n": "0.39.0",
20
+ "@voltro/ui-shadcn": "0.39.0",
21
+ "@voltro/web": "0.39.0",
22
22
  "react": "^19.0.0",
23
23
  "react-dom": "^19.0.0"
24
24
  },
25
25
  "devDependencies": {
26
- "@voltro/devtools": "0.37.0",
26
+ "@voltro/devtools": "0.39.0",
27
27
  "@types/react": "^19.0.0",
28
28
  "@types/react-dom": "^19.0.0",
29
29
  "jsdom": "^30.0.0",
@@ -12,19 +12,19 @@
12
12
  "typecheck": "tsc --noEmit"
13
13
  },
14
14
  "dependencies": {
15
- "@{{projectName}}/api": "0.37.0",
16
- "@voltro/cli": "0.37.0",
17
- "@voltro/client": "0.37.0",
18
- "@voltro/env": "0.37.0",
19
- "@voltro/i18n": "0.37.0",
20
- "@voltro/ui-shadcn": "0.37.0",
21
- "@voltro/web": "0.37.0",
15
+ "@{{projectName}}/api": "0.39.0",
16
+ "@voltro/cli": "0.39.0",
17
+ "@voltro/client": "0.39.0",
18
+ "@voltro/env": "0.39.0",
19
+ "@voltro/i18n": "0.39.0",
20
+ "@voltro/ui-shadcn": "0.39.0",
21
+ "@voltro/web": "0.39.0",
22
22
  "react": "^19.0.0",
23
23
  "react-dom": "^19.0.0"
24
24
  },
25
25
  "devDependencies": {
26
- "@voltro/devtools": "0.37.0",
27
- "@voltro/testing": "0.37.0",
26
+ "@voltro/devtools": "0.39.0",
27
+ "@voltro/testing": "0.39.0",
28
28
  "@types/react": "^19.0.0",
29
29
  "@types/react-dom": "^19.0.0",
30
30
  "jsdom": "^30.0.0",
@@ -12,18 +12,18 @@
12
12
  "test": "voltro test"
13
13
  },
14
14
  "dependencies": {
15
- "@{{projectName}}/api": "0.37.0",
16
- "@voltro/cli": "0.37.0",
17
- "@voltro/client": "0.37.0",
18
- "@voltro/env": "0.37.0",
19
- "@voltro/i18n": "0.37.0",
20
- "@voltro/ui-shadcn": "0.37.0",
21
- "@voltro/web": "0.37.0",
15
+ "@{{projectName}}/api": "0.39.0",
16
+ "@voltro/cli": "0.39.0",
17
+ "@voltro/client": "0.39.0",
18
+ "@voltro/env": "0.39.0",
19
+ "@voltro/i18n": "0.39.0",
20
+ "@voltro/ui-shadcn": "0.39.0",
21
+ "@voltro/web": "0.39.0",
22
22
  "react": "^19.0.0",
23
23
  "react-dom": "^19.0.0"
24
24
  },
25
25
  "devDependencies": {
26
- "@voltro/devtools": "0.37.0",
26
+ "@voltro/devtools": "0.39.0",
27
27
  "@types/react": "^19.0.0",
28
28
  "@types/react-dom": "^19.0.0",
29
29
  "jsdom": "^30.0.0",
@@ -12,17 +12,17 @@
12
12
  "typecheck": "tsc --noEmit"
13
13
  },
14
14
  "dependencies": {
15
- "@voltro/cli": "0.37.0",
16
- "@voltro/client": "0.37.0",
17
- "@voltro/env": "0.37.0",
18
- "@voltro/i18n": "0.37.0",
19
- "@voltro/ui-shadcn": "0.37.0",
20
- "@voltro/web": "0.37.0",
15
+ "@voltro/cli": "0.39.0",
16
+ "@voltro/client": "0.39.0",
17
+ "@voltro/env": "0.39.0",
18
+ "@voltro/i18n": "0.39.0",
19
+ "@voltro/ui-shadcn": "0.39.0",
20
+ "@voltro/web": "0.39.0",
21
21
  "react": "^19.0.0",
22
22
  "react-dom": "^19.0.0"
23
23
  },
24
24
  "devDependencies": {
25
- "@voltro/devtools": "0.37.0",
25
+ "@voltro/devtools": "0.39.0",
26
26
  "@types/react": "^19.0.0",
27
27
  "@types/react-dom": "^19.0.0",
28
28
  "jsdom": "^30.0.0",
@@ -12,19 +12,19 @@
12
12
  "test": "voltro test"
13
13
  },
14
14
  "dependencies": {
15
- "@{{projectName}}/api": "0.37.0",
16
- "@voltro/cli": "0.37.0",
17
- "@voltro/client": "0.37.0",
18
- "@voltro/cms": "0.37.0",
19
- "@voltro/env": "0.37.0",
20
- "@voltro/i18n": "0.37.0",
21
- "@voltro/ui-shadcn": "0.37.0",
22
- "@voltro/web": "0.37.0",
15
+ "@{{projectName}}/api": "0.39.0",
16
+ "@voltro/cli": "0.39.0",
17
+ "@voltro/client": "0.39.0",
18
+ "@voltro/cms": "0.39.0",
19
+ "@voltro/env": "0.39.0",
20
+ "@voltro/i18n": "0.39.0",
21
+ "@voltro/ui-shadcn": "0.39.0",
22
+ "@voltro/web": "0.39.0",
23
23
  "react": "^19.0.0",
24
24
  "react-dom": "^19.0.0"
25
25
  },
26
26
  "devDependencies": {
27
- "@voltro/devtools": "0.37.0",
27
+ "@voltro/devtools": "0.39.0",
28
28
  "@types/react": "^19.0.0",
29
29
  "@types/react-dom": "^19.0.0",
30
30
  "jsdom": "^30.0.0",
@@ -12,20 +12,20 @@
12
12
  "typecheck": "tsc --noEmit"
13
13
  },
14
14
  "dependencies": {
15
- "@{{projectName}}/api": "0.37.0",
16
- "@voltro/cli": "0.37.0",
17
- "@voltro/client": "0.37.0",
18
- "@voltro/env": "0.37.0",
19
- "@voltro/i18n": "0.37.0",
20
- "@voltro/local-first": "0.37.0",
21
- "@voltro/ui-shadcn": "0.37.0",
22
- "@voltro/web": "0.37.0",
15
+ "@{{projectName}}/api": "0.39.0",
16
+ "@voltro/cli": "0.39.0",
17
+ "@voltro/client": "0.39.0",
18
+ "@voltro/env": "0.39.0",
19
+ "@voltro/i18n": "0.39.0",
20
+ "@voltro/local-first": "0.39.0",
21
+ "@voltro/ui-shadcn": "0.39.0",
22
+ "@voltro/web": "0.39.0",
23
23
  "react": "^19.0.0",
24
24
  "react-dom": "^19.0.0"
25
25
  },
26
26
  "devDependencies": {
27
- "@voltro/devtools": "0.37.0",
28
- "@voltro/testing": "0.37.0",
27
+ "@voltro/devtools": "0.39.0",
28
+ "@voltro/testing": "0.39.0",
29
29
  "@types/react": "^19.0.0",
30
30
  "@types/react-dom": "^19.0.0",
31
31
  "jsdom": "^30.0.0",
@@ -15,18 +15,18 @@
15
15
  },
16
16
  "dependencies": {
17
17
  "@effect/platform": "^0.97.0",
18
- "@voltro/cli": "0.37.0",
19
- "@voltro/client": "0.37.0",
20
- "@voltro/env": "0.37.0",
21
- "@voltro/i18n": "0.37.0",
22
- "@voltro/serverless": "0.37.0",
23
- "@voltro/web": "0.37.0",
18
+ "@voltro/cli": "0.39.0",
19
+ "@voltro/client": "0.39.0",
20
+ "@voltro/env": "0.39.0",
21
+ "@voltro/i18n": "0.39.0",
22
+ "@voltro/serverless": "0.39.0",
23
+ "@voltro/web": "0.39.0",
24
24
  "effect": "^3.22.0",
25
25
  "react": "^19.0.0",
26
26
  "react-dom": "^19.0.0"
27
27
  },
28
28
  "devDependencies": {
29
- "@voltro/devtools": "0.37.0",
29
+ "@voltro/devtools": "0.39.0",
30
30
  "@types/react": "^19.0.0",
31
31
  "@types/react-dom": "^19.0.0",
32
32
  "jsdom": "^30.0.0",
@@ -12,17 +12,17 @@
12
12
  "test": "voltro test"
13
13
  },
14
14
  "dependencies": {
15
- "@voltro/cli": "0.37.0",
16
- "@voltro/client": "0.37.0",
17
- "@voltro/env": "0.37.0",
18
- "@voltro/i18n": "0.37.0",
19
- "@voltro/ui-shadcn": "0.37.0",
20
- "@voltro/web": "0.37.0",
15
+ "@voltro/cli": "0.39.0",
16
+ "@voltro/client": "0.39.0",
17
+ "@voltro/env": "0.39.0",
18
+ "@voltro/i18n": "0.39.0",
19
+ "@voltro/ui-shadcn": "0.39.0",
20
+ "@voltro/web": "0.39.0",
21
21
  "react": "^19.0.0",
22
22
  "react-dom": "^19.0.0"
23
23
  },
24
24
  "devDependencies": {
25
- "@voltro/devtools": "0.37.0",
25
+ "@voltro/devtools": "0.39.0",
26
26
  "@types/react": "^19.0.0",
27
27
  "@types/react-dom": "^19.0.0",
28
28
  "jsdom": "^30.0.0",
@@ -12,17 +12,17 @@
12
12
  "test": "voltro test"
13
13
  },
14
14
  "dependencies": {
15
- "@voltro/cli": "0.37.0",
16
- "@voltro/client": "0.37.0",
17
- "@voltro/env": "0.37.0",
18
- "@voltro/i18n": "0.37.0",
19
- "@voltro/ui-shadcn": "0.37.0",
20
- "@voltro/web": "0.37.0",
15
+ "@voltro/cli": "0.39.0",
16
+ "@voltro/client": "0.39.0",
17
+ "@voltro/env": "0.39.0",
18
+ "@voltro/i18n": "0.39.0",
19
+ "@voltro/ui-shadcn": "0.39.0",
20
+ "@voltro/web": "0.39.0",
21
21
  "react": "^19.0.0",
22
22
  "react-dom": "^19.0.0"
23
23
  },
24
24
  "devDependencies": {
25
- "@voltro/devtools": "0.37.0",
25
+ "@voltro/devtools": "0.39.0",
26
26
  "@types/react": "^19.0.0",
27
27
  "@types/react-dom": "^19.0.0",
28
28
  "jsdom": "^30.0.0",
@@ -12,16 +12,16 @@
12
12
  "test": "voltro test"
13
13
  },
14
14
  "dependencies": {
15
- "@voltro/cli": "0.37.0",
16
- "@voltro/client": "0.37.0",
17
- "@voltro/env": "0.37.0",
18
- "@voltro/i18n": "0.37.0",
19
- "@voltro/web": "0.37.0",
15
+ "@voltro/cli": "0.39.0",
16
+ "@voltro/client": "0.39.0",
17
+ "@voltro/env": "0.39.0",
18
+ "@voltro/i18n": "0.39.0",
19
+ "@voltro/web": "0.39.0",
20
20
  "react": "^19.0.0",
21
21
  "react-dom": "^19.0.0"
22
22
  },
23
23
  "devDependencies": {
24
- "@voltro/devtools": "0.37.0",
24
+ "@voltro/devtools": "0.39.0",
25
25
  "@types/react": "^19.0.0",
26
26
  "@types/react-dom": "^19.0.0",
27
27
  "jsdom": "^30.0.0",
@@ -12,17 +12,17 @@
12
12
  "typecheck": "tsc --noEmit"
13
13
  },
14
14
  "dependencies": {
15
- "@voltro/cli": "0.37.0",
16
- "@voltro/client": "0.37.0",
17
- "@voltro/env": "0.37.0",
18
- "@voltro/i18n": "0.37.0",
19
- "@voltro/ui-shadcn": "0.37.0",
20
- "@voltro/web": "0.37.0",
15
+ "@voltro/cli": "0.39.0",
16
+ "@voltro/client": "0.39.0",
17
+ "@voltro/env": "0.39.0",
18
+ "@voltro/i18n": "0.39.0",
19
+ "@voltro/ui-shadcn": "0.39.0",
20
+ "@voltro/web": "0.39.0",
21
21
  "react": "^19.0.0",
22
22
  "react-dom": "^19.0.0"
23
23
  },
24
24
  "devDependencies": {
25
- "@voltro/devtools": "0.37.0",
25
+ "@voltro/devtools": "0.39.0",
26
26
  "@types/react": "^19.0.0",
27
27
  "@types/react-dom": "^19.0.0",
28
28
  "jsdom": "^30.0.0",
@@ -12,18 +12,18 @@
12
12
  "test": "voltro test"
13
13
  },
14
14
  "dependencies": {
15
- "@{{projectName}}/api": "0.37.0",
16
- "@voltro/cli": "0.37.0",
17
- "@voltro/client": "0.37.0",
18
- "@voltro/env": "0.37.0",
19
- "@voltro/i18n": "0.37.0",
20
- "@voltro/ui-shadcn": "0.37.0",
21
- "@voltro/web": "0.37.0",
15
+ "@{{projectName}}/api": "0.39.0",
16
+ "@voltro/cli": "0.39.0",
17
+ "@voltro/client": "0.39.0",
18
+ "@voltro/env": "0.39.0",
19
+ "@voltro/i18n": "0.39.0",
20
+ "@voltro/ui-shadcn": "0.39.0",
21
+ "@voltro/web": "0.39.0",
22
22
  "react": "^19.0.0",
23
23
  "react-dom": "^19.0.0"
24
24
  },
25
25
  "devDependencies": {
26
- "@voltro/devtools": "0.37.0",
26
+ "@voltro/devtools": "0.39.0",
27
27
  "@types/react": "^19.0.0",
28
28
  "@types/react-dom": "^19.0.0",
29
29
  "jsdom": "^30.0.0",
@@ -12,18 +12,18 @@
12
12
  "test": "voltro test"
13
13
  },
14
14
  "dependencies": {
15
- "@{{projectName}}/api": "0.37.0",
16
- "@voltro/cli": "0.37.0",
17
- "@voltro/client": "0.37.0",
18
- "@voltro/env": "0.37.0",
19
- "@voltro/i18n": "0.37.0",
20
- "@voltro/ui-shadcn": "0.37.0",
21
- "@voltro/web": "0.37.0",
15
+ "@{{projectName}}/api": "0.39.0",
16
+ "@voltro/cli": "0.39.0",
17
+ "@voltro/client": "0.39.0",
18
+ "@voltro/env": "0.39.0",
19
+ "@voltro/i18n": "0.39.0",
20
+ "@voltro/ui-shadcn": "0.39.0",
21
+ "@voltro/web": "0.39.0",
22
22
  "react": "^19.0.0",
23
23
  "react-dom": "^19.0.0"
24
24
  },
25
25
  "devDependencies": {
26
- "@voltro/devtools": "0.37.0",
26
+ "@voltro/devtools": "0.39.0",
27
27
  "@types/react": "^19.0.0",
28
28
  "@types/react-dom": "^19.0.0",
29
29
  "jsdom": "^30.0.0",
@@ -12,17 +12,17 @@
12
12
  "typecheck": "tsc --noEmit"
13
13
  },
14
14
  "dependencies": {
15
- "@voltro/cli": "0.37.0",
16
- "@voltro/client": "0.37.0",
17
- "@voltro/env": "0.37.0",
18
- "@voltro/i18n": "0.37.0",
19
- "@voltro/ui-shadcn": "0.37.0",
20
- "@voltro/web": "0.37.0",
15
+ "@voltro/cli": "0.39.0",
16
+ "@voltro/client": "0.39.0",
17
+ "@voltro/env": "0.39.0",
18
+ "@voltro/i18n": "0.39.0",
19
+ "@voltro/ui-shadcn": "0.39.0",
20
+ "@voltro/web": "0.39.0",
21
21
  "react": "^19.0.0",
22
22
  "react-dom": "^19.0.0"
23
23
  },
24
24
  "devDependencies": {
25
- "@voltro/devtools": "0.37.0",
25
+ "@voltro/devtools": "0.39.0",
26
26
  "@types/react": "^19.0.0",
27
27
  "@types/react-dom": "^19.0.0",
28
28
  "jsdom": "^30.0.0",
@@ -12,17 +12,17 @@
12
12
  "test": "voltro test"
13
13
  },
14
14
  "dependencies": {
15
- "@voltro/cli": "0.37.0",
16
- "@voltro/client": "0.37.0",
17
- "@voltro/env": "0.37.0",
18
- "@voltro/i18n": "0.37.0",
19
- "@voltro/ui-shadcn": "0.37.0",
20
- "@voltro/web": "0.37.0",
15
+ "@voltro/cli": "0.39.0",
16
+ "@voltro/client": "0.39.0",
17
+ "@voltro/env": "0.39.0",
18
+ "@voltro/i18n": "0.39.0",
19
+ "@voltro/ui-shadcn": "0.39.0",
20
+ "@voltro/web": "0.39.0",
21
21
  "react": "^19.0.0",
22
22
  "react-dom": "^19.0.0"
23
23
  },
24
24
  "devDependencies": {
25
- "@voltro/devtools": "0.37.0",
25
+ "@voltro/devtools": "0.39.0",
26
26
  "@types/react": "^19.0.0",
27
27
  "@types/react-dom": "^19.0.0",
28
28
  "jsdom": "^30.0.0",
@@ -12,18 +12,18 @@
12
12
  "test": "voltro test"
13
13
  },
14
14
  "dependencies": {
15
- "@{{projectName}}/api": "0.37.0",
16
- "@voltro/cli": "0.37.0",
17
- "@voltro/client": "0.37.0",
18
- "@voltro/env": "0.37.0",
19
- "@voltro/i18n": "0.37.0",
20
- "@voltro/ui-shadcn": "0.37.0",
21
- "@voltro/web": "0.37.0",
15
+ "@{{projectName}}/api": "0.39.0",
16
+ "@voltro/cli": "0.39.0",
17
+ "@voltro/client": "0.39.0",
18
+ "@voltro/env": "0.39.0",
19
+ "@voltro/i18n": "0.39.0",
20
+ "@voltro/ui-shadcn": "0.39.0",
21
+ "@voltro/web": "0.39.0",
22
22
  "react": "^19.0.0",
23
23
  "react-dom": "^19.0.0"
24
24
  },
25
25
  "devDependencies": {
26
- "@voltro/devtools": "0.37.0",
26
+ "@voltro/devtools": "0.39.0",
27
27
  "@types/react": "^19.0.0",
28
28
  "@types/react-dom": "^19.0.0",
29
29
  "jsdom": "^30.0.0",
@@ -12,16 +12,16 @@
12
12
  "test": "voltro test"
13
13
  },
14
14
  "dependencies": {
15
- "@voltro/cli": "0.37.0",
16
- "@voltro/client": "0.37.0",
17
- "@voltro/env": "0.37.0",
18
- "@voltro/i18n": "0.37.0",
19
- "@voltro/web": "0.37.0",
15
+ "@voltro/cli": "0.39.0",
16
+ "@voltro/client": "0.39.0",
17
+ "@voltro/env": "0.39.0",
18
+ "@voltro/i18n": "0.39.0",
19
+ "@voltro/web": "0.39.0",
20
20
  "react": "^19.0.0",
21
21
  "react-dom": "^19.0.0"
22
22
  },
23
23
  "devDependencies": {
24
- "@voltro/devtools": "0.37.0",
24
+ "@voltro/devtools": "0.39.0",
25
25
  "@types/react": "^19.0.0",
26
26
  "@types/react-dom": "^19.0.0",
27
27
  "jsdom": "^30.0.0",
@@ -12,18 +12,18 @@
12
12
  "test": "voltro test"
13
13
  },
14
14
  "dependencies": {
15
- "@{{projectName}}/api": "0.37.0",
16
- "@voltro/cli": "0.37.0",
17
- "@voltro/client": "0.37.0",
18
- "@voltro/env": "0.37.0",
19
- "@voltro/i18n": "0.37.0",
20
- "@voltro/ui-shadcn": "0.37.0",
21
- "@voltro/web": "0.37.0",
15
+ "@{{projectName}}/api": "0.39.0",
16
+ "@voltro/cli": "0.39.0",
17
+ "@voltro/client": "0.39.0",
18
+ "@voltro/env": "0.39.0",
19
+ "@voltro/i18n": "0.39.0",
20
+ "@voltro/ui-shadcn": "0.39.0",
21
+ "@voltro/web": "0.39.0",
22
22
  "react": "^19.0.0",
23
23
  "react-dom": "^19.0.0"
24
24
  },
25
25
  "devDependencies": {
26
- "@voltro/devtools": "0.37.0",
26
+ "@voltro/devtools": "0.39.0",
27
27
  "@types/react": "^19.0.0",
28
28
  "@types/react-dom": "^19.0.0",
29
29
  "jsdom": "^30.0.0",
@@ -15,12 +15,14 @@ registration for push.
15
15
  # 1. In one shell — the api (scaffold it with --api=api-backend):
16
16
  voltro dev
17
17
 
18
- # 2. Point this app at the api. On a simulator/device use your machine's LAN
19
- # address, NOT localhost:
20
- export EXPO_PUBLIC_API_URL="http://192.168.x.x:4000"
21
-
22
- # 3. In another shell — the app:
18
+ # 2. In another shell the app. `pnpm ios` runs `voltro codegen` first, which
19
+ # writes this app's api binding from voltro.mobile.ts.
23
20
  pnpm ios # or: pnpm android · pnpm start (Expo Go)
21
+
22
+ # The ws URL is derived from the host running Metro, so a device on the same
23
+ # wifi reaches your machine. Override it for a deployed api:
24
+ # export EXPO_PUBLIC_API_WS_URL="wss://api.example.com/ws"
25
+ # export EXPO_PUBLIC_API_PORT=4000 # if your api is not on 4000
24
26
  ```
25
27
 
26
28
  ## What's here
@@ -31,25 +33,32 @@ pnpm ios # or: pnpm android · pnpm start (Expo Go)
31
33
  | `src/lib/deeplinks.ts` | the typed deep-link table + pure resolver (**tested**) |
32
34
  | `src/lib/sync.ts` | the background-sync decision layer (**tested**) |
33
35
  | `src/lib/notifications.ts` | build a `_voltro_devices` row from a push token (**tested**) |
34
- | `src/client.ts` | the Voltro client + the **M0 seam** (read its header) |
36
+ | `src/client.ts` | the Voltro client: generated api binding + supervisor + persistence |
35
37
  | `src/persistence.ts` | RN key-value with the secure/plain split |
36
38
  | `src/app/*` | Expo Router screens (list, detail, settings) |
37
39
  | `voltro.mobile.ts` | which api(s) this app consumes |
38
40
 
39
41
  ## Honest status (read before you expect the loop to work on a device)
40
42
 
41
- The **pure logic** in `src/lib/*` is real and unit-tested (`pnpm test`). The
42
- **client wiring** building the runtime + subscription cache + rpc client that
43
- the hooks read is **not yet implemented for React Native**: on the web it lives
44
- in `@voltro/web`'s web-coupled boot. Wiring an RN-safe equivalent is Phase **M0**
45
- in the framework's mobile plan (`plans/open/mobile/`). Until it lands,
46
- `buildApiHandles()` in `src/client.ts` returns an empty map and the screens show
47
- their loading state deliberately, not a crash. `src/client.ts`'s header spells
48
- out exactly what M0 must build.
43
+ The client is wired: `voltro codegen` writes this app's api binding from
44
+ `voltro.mobile.ts`, and `src/client.ts` connects it through the SAME reconnect
45
+ supervisor the web client uses, with persisted stores hydrated before the first
46
+ render. The start scripts run codegen, so `pnpm ios` needs no separate step.
47
+
48
+ What is NOT verified in this repository is the one thing only a device can tell
49
+ you: that the loop runs under Metro on a simulator or a phone. There is no
50
+ iOS/Android toolchain in the framework's sandbox, so booting the app is your
51
+ Expo/EAS CI step. The unit tests here run without one and deliberately do not
52
+ pretend otherwise.
53
+
54
+ Two things to check first if a device shows loading forever:
49
55
 
50
- The tests here run without a simulator. Booting the app on a device (`expo
51
- run:ios`) is your Expo/EAS CI step there is no iOS/Android toolchain in the
52
- framework repo's sandbox.
56
+ - **`localhost` on a phone is the phone.** The ws URL is derived from the host
57
+ running Metro (`resolveDevWsUrl`), which works on a device on the same wifi.
58
+ Set `EXPO_PUBLIC_API_WS_URL` to point somewhere else.
59
+ - **The api must be running.** `voltro dev` in the project root boots it; this
60
+ app is deliberately not part of that orchestration, because Expo owns its own
61
+ dev server.
53
62
 
54
63
  ## Tests
55
64
 
@@ -57,3 +66,18 @@ framework repo's sandbox.
57
66
  pnpm test # the pure lib — no simulator needed
58
67
  pnpm typecheck # tsc over the app (needs Expo/RN types installed)
59
68
  ```
69
+
70
+ ### Why this app's `tsconfig.json` overrides Expo's base
71
+
72
+ Three overrides, each for a reason that shows up as a hard error without it:
73
+
74
+ - **`moduleResolution: "bundler"`** — Expo's base sets `node` (node10), which
75
+ TypeScript 6 rejects outright. `bundler` is also the honest description of
76
+ Metro.
77
+ - **`types: ["node", "react"]`** — `process.env.EXPO_PUBLIC_*` is Expo's own
78
+ idiom for build-time config, and `process` needs a type. Listing the types
79
+ explicitly keeps everything else out.
80
+ - **`@types/node` as a devDependency** — the other half of the same line.
81
+
82
+ Run `pnpm typecheck` after `voltro codegen`, in that order: the generated api
83
+ binding is a real import and the app does not typecheck without it.
@@ -4,7 +4,7 @@
4
4
  // mobile app is not run by `voltro dev` — Expo owns Metro and the simulator
5
5
  // (`expo start` / `expo run:ios`). The sibling api this app consumes still runs
6
6
  // under `voltro dev`; the app connects to it over HTTP/WebSocket via
7
- // `EXPO_PUBLIC_API_URL` (see src/client.ts).
7
+ // `EXPO_PUBLIC_API_WS_URL` / `EXPO_PUBLIC_API_PORT` (see src/client.ts).
8
8
  //
9
9
  // `scheme` is the custom URL scheme that makes deep links open THIS app
10
10
  // (`{{appName}}://orders/42`). Keep it in sync with the deep-link table in