vibe64 0.1.39 → 0.1.41

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 (262) hide show
  1. package/bin/run.js +1955 -1855
  2. package/bin/server.js +136 -112
  3. package/bin/upgrade-state.js +5514 -5343
  4. package/dist/assets/GithubBrowserTabs-YvIe2BdE.js +1 -0
  5. package/dist/assets/LocalDatabaseServer-BWAvRlUl.css +1 -0
  6. package/dist/assets/LocalDatabaseServer-CVsGChHh.js +2 -0
  7. package/dist/assets/StudioErrorNotice-C_jbvp9V.js +1 -0
  8. package/dist/assets/VAlert-gwuhYlYb.js +1 -0
  9. package/dist/assets/VAutocomplete-D7Vk5wq_.js +1 -0
  10. package/dist/assets/VAvatar-DvRBcmqv.js +1 -0
  11. package/dist/assets/VBtn-BhVEwXLX.js +1 -0
  12. package/dist/assets/VCard-C3Hx769y.js +1 -0
  13. package/dist/assets/VCheckbox-DyCGSN0H.js +1 -0
  14. package/dist/assets/VCheckboxBtn-DCyuVH7W.css +1 -0
  15. package/dist/assets/VCheckboxBtn-DYcQU2Pn.js +1 -0
  16. package/dist/assets/VChip-VVdtjfq-.js +1 -0
  17. package/dist/assets/VDialog-CQDhjRiV.js +1 -0
  18. package/dist/assets/VDivider-Dq25WsKu.js +1 -0
  19. package/dist/assets/VExpansionPanels-C1y-myl5.js +1 -0
  20. package/dist/assets/VMenu-CDcBLYWR.js +1 -0
  21. package/dist/assets/VOverlay-Cp4rFk6g.js +1 -0
  22. package/dist/assets/VRadioGroup-CAjNZwF7.js +1 -0
  23. package/dist/assets/VRow-BskP28jR.js +1 -0
  24. package/dist/assets/VSelect-D3oLvCcB.js +2 -0
  25. package/dist/assets/VSheet-DxYEFfnM.js +1 -0
  26. package/dist/assets/VSkeletonLoader-Cync3lZZ.js +1 -0
  27. package/dist/assets/VSpacer-CgWOWvBh.js +1 -0
  28. package/dist/assets/VSwitch-BxGuGypi.js +1 -0
  29. package/dist/assets/VTextField-C0b_0cSa.js +1 -0
  30. package/dist/assets/VTextField-F6unyhrS.css +1 -0
  31. package/dist/assets/VTextarea-B7sZd1JY.js +1 -0
  32. package/dist/assets/{Vibe64AsyncModuleState-Do9EqX3S.js → Vibe64AsyncModuleState-syuPcpGx.js} +1 -1
  33. package/dist/assets/{Vibe64AuthSettingsButton-M44SSmZ9.css → Vibe64AuthSettingsButton-D2lltUhi.css} +1 -1
  34. package/dist/assets/Vibe64AuthSettingsButton-DLdfT68V.js +5 -0
  35. package/dist/assets/Vibe64CopyCommand-CYiZcy0d.js +1 -0
  36. package/dist/assets/Vibe64CopyCommand-ClbQLYZi.css +1 -0
  37. package/dist/assets/{Vibe64DashboardBackButton-BH_8j_VR.js → Vibe64DashboardBackButton-Go_MJuIK.js} +1 -1
  38. package/dist/assets/{Vibe64DashboardPageHeader-BXQR00HK.js → Vibe64DashboardPageHeader-BMrdRph6.js} +1 -1
  39. package/dist/assets/Vibe64DashboardPageHeader-CdlzsyKQ.css +1 -0
  40. package/dist/assets/Vibe64DashboardShell-DMPz6fIx.js +1 -0
  41. package/dist/assets/{Vibe64DatabaseWorkspace-CEml9BWn.js → Vibe64DatabaseWorkspace-BCEIOlSg.js} +3 -3
  42. package/dist/assets/{Vibe64DatabaseWorkspace-DPDMxhAW.css → Vibe64DatabaseWorkspace-DePBDUMy.css} +1 -1
  43. package/dist/assets/{Vibe64OutputControls-Co5YzwcK.css → Vibe64OutputControls-CeBzZPUT.css} +1 -1
  44. package/dist/assets/Vibe64OutputControls-DMoqL0VD.js +8 -0
  45. package/dist/assets/{Vibe64RepositoryWorkspace-obZFXkoG.js → Vibe64RepositoryWorkspace-BdwRwbxp.js} +2 -2
  46. package/dist/assets/{Vibe64RepositoryWorkspace-Agyt4O-V.css → Vibe64RepositoryWorkspace-Bw9W691N.css} +1 -1
  47. package/dist/assets/{Vibe64SessionFiles-CQzs6fee.js → Vibe64SessionFiles-ChJWUOqm.js} +4 -4
  48. package/dist/assets/Vibe64SessionFiles-DsPb8hOe.css +1 -0
  49. package/dist/assets/{Vibe64TemporaryAiFixAction-BiuIE9mC.js → Vibe64TemporaryAiFixAction-CIePbdW8.js} +1 -1
  50. package/dist/assets/{Vibe64UiStoryboardView-BhKRpL0N.js → Vibe64UiStoryboardView-Bp9STItF.js} +1 -1
  51. package/dist/assets/{Vibe64UnavailableSessions-Ca5nC7KH.js → Vibe64UnavailableSessions-JBgHzM-j.js} +1 -1
  52. package/dist/assets/{_sessionId_-CKkGH3Rx.js → _sessionId_-Bw0KfJeR.js} +1 -1
  53. package/dist/assets/{_sessionTool_-1V-z6Pbp.js → _sessionTool_-BV1AwpUx.js} +1 -1
  54. package/dist/assets/_slug_-CAmuBm-M.css +1 -0
  55. package/dist/assets/_slug_-q9prK_gX.js +25 -0
  56. package/dist/assets/{access-WlhPvPgy.js → access-C05Nkq6r.js} +1 -1
  57. package/dist/assets/app-D1CGY9Xm.js +1 -0
  58. package/dist/assets/assistantRouting-DeE8jvtE.js +3 -0
  59. package/dist/assets/{changes-CHJjrZAc.js → changes-D17XpgGz.js} +1 -1
  60. package/dist/assets/client-BxGiylrJ.js +2 -0
  61. package/dist/assets/client-C8jwAMY9.css +1 -0
  62. package/dist/assets/{conversation-B90ERX9h.js → conversation-DZW4-Wck.js} +2 -2
  63. package/dist/assets/{conversation-vxJGwmtW.css → conversation-TK6EmDk4.css} +1 -1
  64. package/dist/assets/{createSimpleFunctional-CZTGuNuR.js → createSimpleFunctional-zlXZooQW.js} +1 -1
  65. package/dist/assets/{dashboard-CuutW8iv.js → dashboard-BXXgeQ0Q.js} +1 -1
  66. package/dist/assets/definitions-SNvFDEFS.js +1 -0
  67. package/dist/assets/dialog-transition-D2vqGksQ.js +1 -0
  68. package/dist/assets/env-B5V1EC4M.css +1 -0
  69. package/dist/assets/env-sXAQqKWk.js +1 -0
  70. package/dist/assets/health-92hh8xXh.css +1 -0
  71. package/dist/assets/health-Cr34pf2p.js +1 -0
  72. package/dist/assets/{history-1_NU8azF.js → history-N1iRZaab.js} +1 -1
  73. package/dist/assets/incoming-Bdqo8z25.css +1 -0
  74. package/dist/assets/incoming-CNwZa_yD.js +2 -0
  75. package/dist/assets/{index-irlMYzLh.css → index-B17d4wpZ.css} +1 -1
  76. package/dist/assets/index-Mxalhei8.js +138 -0
  77. package/dist/assets/{integrations-BMzWQQpa.js → integrations-BmwFvHgZ.js} +10 -10
  78. package/dist/assets/integrations-Co8WvCiD.css +1 -0
  79. package/dist/assets/issues-BbiG7dCV.js +1 -0
  80. package/dist/assets/layout-B2Ap07aa.js +1 -0
  81. package/dist/assets/{lazy-NHSwD9FS.js → lazy-BjyT2XvW.js} +1 -1
  82. package/dist/assets/{learning-Bdi3XRS7.js → learning-CUCuuoHM.js} +1 -1
  83. package/dist/assets/mdi-Bt90Ns76.js +1 -0
  84. package/dist/assets/placement-CQy46H3H.js +1 -0
  85. package/dist/assets/publish-4r_4K5IY.js +3 -0
  86. package/dist/assets/publish-BFTsAMCF.css +1 -0
  87. package/dist/assets/pull-requests-BjwokcU0.css +1 -0
  88. package/dist/assets/pull-requests-DY9jg3cE.js +1 -0
  89. package/dist/assets/{repository-BL_2bgzC.js → repository-DhXdoMP6.js} +1 -1
  90. package/dist/assets/ripple-EFNA8EBu.js +11 -0
  91. package/dist/assets/rolldown-runtime-DBalRfVu.js +1 -0
  92. package/dist/assets/{session-BdhKrcX4.js → session-BGpiZThC.js} +1 -1
  93. package/dist/assets/{settings-1rpuL7eR.js → settings-Cj4u-76p.js} +1 -1
  94. package/dist/assets/settings-D8x4KUqV.css +1 -0
  95. package/dist/assets/shared-DZETtWRH.js +2 -0
  96. package/dist/assets/studioGateApi-BXHVBVEc.js +1 -0
  97. package/dist/assets/studioUrls-DpSS-0z1.js +1 -0
  98. package/dist/assets/useArchivedVibe64Sessions-BXNg8oES.js +1 -0
  99. package/dist/assets/useCommand-nWFczmJy.js +1 -0
  100. package/dist/assets/useEndpointResource-Ds8EDBZ2.js +1 -0
  101. package/dist/assets/useRealtimeEvent-DrOiU8lJ.js +1 -0
  102. package/dist/assets/{useUiFeedback-BPBF_0bp.js → useUiFeedback-CMwE4MLs.js} +1 -1
  103. package/dist/assets/useVibe64ConversationLog-C1xjhFtS.js +1 -0
  104. package/dist/assets/{useVibe64DatabaseTools-4o6S8eXq.js → useVibe64DatabaseTools-H6H-YJQX.js} +1 -1
  105. package/dist/assets/useVibe64ProjectScope-B5ogg6jd.js +1 -0
  106. package/dist/assets/useVibe64SessionData-CnDOFFHb.js +1 -0
  107. package/dist/assets/{useVibe64SessionSelection-BzL1y_Vq.js → useVibe64SessionSelection-J87nJ9p5.js} +1 -1
  108. package/dist/assets/{useVibe64SystemGraph-B4RmsC9Y.js → useVibe64SystemGraph-DbSfrYF8.js} +1 -1
  109. package/dist/assets/{useVibe64Terminal-Cg3idMcy.js → useVibe64Terminal-I7Sf6xMW.js} +1 -1
  110. package/dist/assets/vibe64ProjectScope.local-B06ABkhI.js +1 -0
  111. package/dist/assets/vibe64SavedEnvValues-B_QE9aAj.js +1 -0
  112. package/dist/assets/vibe64SessionFocus-CA-sk8Ri.css +1 -0
  113. package/dist/assets/vibe64SessionFocus-DlN8NwcE.js +1 -0
  114. package/dist/assets/{vibe64SessionInfo-BuBUdL-e.js → vibe64SessionInfo-B0uItVOK.js} +1 -1
  115. package/dist/assets/{vibe64SessionToolDefinitions-BJaJH5LR.js → vibe64SessionToolDefinitions-Dsn8WYmO.js} +1 -1
  116. package/dist/index.html +56 -46
  117. package/docs/colleague-usage/account-profile-and-appearance.md +1 -1
  118. package/docs/colleague-usage/{ai-accounts-and-routing.md → ai-accounts.md} +41 -114
  119. package/docs/colleague-usage/ai-model-setups.md +159 -0
  120. package/docs/colleague-usage/ai-onboarding.md +97 -22
  121. package/docs/colleague-usage/ai-personal-use.md +41 -0
  122. package/docs/colleague-usage/auto-workflow.md +8 -3
  123. package/docs/colleague-usage/codex-context-recovery.md +2 -1
  124. package/docs/colleague-usage/coding-agent-goals.md +7 -4
  125. package/docs/colleague-usage/coding-agents.md +8 -5
  126. package/docs/colleague-usage/colleague-watches.md +15 -4
  127. package/docs/colleague-usage/colleague.md +21 -5
  128. package/docs/colleague-usage/connected-contributions.md +13 -13
  129. package/docs/colleague-usage/connected-projects.md +2 -2
  130. package/docs/colleague-usage/conversation-context.md +1 -1
  131. package/docs/colleague-usage/dashboard-navigation.md +5 -3
  132. package/docs/colleague-usage/development-env.md +21 -4
  133. package/docs/colleague-usage/file-interfaces.md +1 -1
  134. package/docs/colleague-usage/github-work.md +8 -8
  135. package/docs/colleague-usage/health-checks.md +52 -18
  136. package/docs/colleague-usage/incoming-changes.md +3 -3
  137. package/docs/colleague-usage/integrations.md +5 -3
  138. package/docs/colleague-usage/learning-course-catalogue.md +3 -3
  139. package/docs/colleague-usage/learning-environment.md +78 -56
  140. package/docs/colleague-usage/learning-mode-ui.md +31 -19
  141. package/docs/colleague-usage/learning-practice-projects.md +15 -4
  142. package/docs/colleague-usage/learning-teacher-guide.md +10 -4
  143. package/docs/colleague-usage/learning-with-colleague.md +12 -8
  144. package/docs/colleague-usage/lesson-authoring.md +13 -13
  145. package/docs/colleague-usage/lesson-step-bar.md +47 -33
  146. package/docs/colleague-usage/main-chat-approvals.md +150 -0
  147. package/docs/colleague-usage/preview-browser-checks.md +5 -1
  148. package/docs/colleague-usage/preview-starting-application.md +10 -1
  149. package/docs/colleague-usage/project-language-tools.md +16 -2
  150. package/docs/colleague-usage/project-settings.md +1 -1
  151. package/docs/colleague-usage/project-setup.md +17 -7
  152. package/docs/colleague-usage/publishing.md +187 -0
  153. package/docs/colleague-usage/running-vibe64-on-your-computer.md +54 -6
  154. package/docs/colleague-usage/sessions.md +18 -10
  155. package/docs/colleague-usage/set-up-linux.md +254 -0
  156. package/docs/colleague-usage/set-up-macos.md +199 -0
  157. package/docs/colleague-usage/set-up-windows.md +76 -0
  158. package/docs/colleague-usage/starter-apps.md +23 -6
  159. package/docs/colleague-usage/teaching-content.md +2 -2
  160. package/docs/colleague-usage/team-ai-access.md +108 -0
  161. package/docs/colleague-usage/temporary-chats.md +9 -7
  162. package/docs/colleague-usage/workspace-preparation.md +50 -1
  163. package/docs/templates/learn-topic/README.md +3 -3
  164. package/docs/templates/learn-topic/training/lessons/TOPIC-01/lesson.json +2 -1
  165. package/docs/training-content.md +37 -15
  166. package/node_modules/@jskit-ai/assistant-core/package.json +1 -1
  167. package/node_modules/@jskit-ai/assistant-runtime/package.json +1 -1
  168. package/node_modules/@jskit-ai/assistant-voice/package.json +1 -1
  169. package/node_modules/@jskit-ai/connector-google-calendar/package.json +1 -1
  170. package/node_modules/@jskit-ai/connectors-catalog/package.json +1 -1
  171. package/node_modules/@jskit-ai/connectors-catalog/patterns/oauth-connection/PATTERN.md +25 -0
  172. package/node_modules/@jskit-ai/connectors-core/package.json +1 -1
  173. package/node_modules/@jskit-ai/http-runtime/package.json +1 -1
  174. package/node_modules/@jskit-ai/kernel/package.json +1 -1
  175. package/node_modules/@jskit-ai/realtime/package.json +1 -1
  176. package/node_modules/@jskit-ai/resource-core/package.json +1 -1
  177. package/node_modules/@jskit-ai/resource-crud-core/package.json +1 -1
  178. package/node_modules/@jskit-ai/uploads-runtime/package.json +1 -1
  179. package/node_modules/@local/vibe64-accounts/package.json +2 -1
  180. package/node_modules/@local/vibe64-core/package.json +4 -1
  181. package/node_modules/@local/vibe64-execution/src/host/execHelper.js +82 -81
  182. package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +83 -82
  183. package/node_modules/@local/vibe64-genesis/package.json +1 -0
  184. package/node_modules/@local/vibe64-genesis/src/server/agentSpecs.js +118 -68
  185. package/node_modules/@local/vibe64-genesis/src/server/index.js +536 -449
  186. package/node_modules/@local/vibe64-genesis/src/server/packaging.js +105 -0
  187. package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +144 -145
  188. package/node_modules/@local/vibe64-packaging/package.json +26 -0
  189. package/node_modules/@local/vibe64-packaging/src/server/packers/capacitor/ShellIcons.java +112 -0
  190. package/node_modules/@local/vibe64-project/package.json +3 -1
  191. package/node_modules/@local/vibe64-publishing/package.json +12 -0
  192. package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +7 -7
  193. package/node_modules/@local/vibe64-runtime/src/shared/assistantRoutingScores.json +25 -22
  194. package/node_modules/@local/vibe64-terminals/package.json +2 -1
  195. package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1341 -1300
  196. package/node_modules/@local/vibe64-training/package.json +2 -1
  197. package/package.json +19 -15
  198. package/server.bundle.mjs +43109 -41089
  199. package/dist/assets/GithubBrowserTabs-C2NO5l8g.js +0 -1
  200. package/dist/assets/StudioErrorNotice-CSrUw1QV.js +0 -1
  201. package/dist/assets/VAlert-P256xaE0.js +0 -1
  202. package/dist/assets/VAutocomplete-BDb95qJX.js +0 -1
  203. package/dist/assets/VAvatar-DPzqDH4r.js +0 -1
  204. package/dist/assets/VBtn-B2MBK2DL.js +0 -1
  205. package/dist/assets/VCard-mXy0k4aS.js +0 -1
  206. package/dist/assets/VCheckbox-C7A1ZW4D.js +0 -1
  207. package/dist/assets/VChip-CcI-Oo2J.js +0 -1
  208. package/dist/assets/VDialog-Bu3EfKb1.js +0 -1
  209. package/dist/assets/VDivider-BMEqUoAB.js +0 -1
  210. package/dist/assets/VExpansionPanels-Dgjrop0V.js +0 -1
  211. package/dist/assets/VMenu-C_x18lwb.js +0 -1
  212. package/dist/assets/VOverlay-CeMZurIN.js +0 -1
  213. package/dist/assets/VRadioGroup-CUu2-KIP.js +0 -1
  214. package/dist/assets/VRow-Cpw7OHQV.js +0 -1
  215. package/dist/assets/VSelect-DL3HaA5m.js +0 -2
  216. package/dist/assets/VSheet-DZWsu0kL.js +0 -1
  217. package/dist/assets/VSkeletonLoader-CttxM1tw.js +0 -1
  218. package/dist/assets/VSpacer-Dhmsvk4t.js +0 -1
  219. package/dist/assets/VSwitch-BRHeDJkH.js +0 -1
  220. package/dist/assets/VTextField-BR2eZeFT.js +0 -1
  221. package/dist/assets/VTextField-BiatYyd3.css +0 -1
  222. package/dist/assets/VTextarea-DbqamXJd.js +0 -1
  223. package/dist/assets/Vibe64AuthSettingsButton-fY4ZiIFF.js +0 -5
  224. package/dist/assets/Vibe64DashboardPageHeader-Gm1IvlHx.css +0 -1
  225. package/dist/assets/Vibe64DashboardShell-BSq7uXEW.js +0 -1
  226. package/dist/assets/Vibe64OutputControls-_zhGX9ne.js +0 -8
  227. package/dist/assets/Vibe64SessionFiles-Bl8wJ5Sk.css +0 -1
  228. package/dist/assets/_slug_-BclonbST.js +0 -24
  229. package/dist/assets/_slug_-CZ1bxO9C.css +0 -1
  230. package/dist/assets/app-BNP_n_Tt.js +0 -1
  231. package/dist/assets/assistantRouting-D4XpXcEf.js +0 -3
  232. package/dist/assets/client-BWV84wi2.js +0 -2
  233. package/dist/assets/client-DGrP-2AJ.css +0 -1
  234. package/dist/assets/definitions-BrMvu6yV.js +0 -1
  235. package/dist/assets/env-BzRtyO0w.css +0 -1
  236. package/dist/assets/env-D3KQGvRe.js +0 -1
  237. package/dist/assets/health-BJvooRnJ.css +0 -1
  238. package/dist/assets/health-BhoO1d4h.js +0 -1
  239. package/dist/assets/incoming-DWDrmxyH.css +0 -1
  240. package/dist/assets/incoming-DzADFGqp.js +0 -2
  241. package/dist/assets/index-dNxr4Lg9.js +0 -138
  242. package/dist/assets/integrations-Cq1x-Di9.css +0 -1
  243. package/dist/assets/issues-Bywux4s7.js +0 -1
  244. package/dist/assets/mdi-CG9pWOSj.js +0 -1
  245. package/dist/assets/placement-BF-zIEhA.js +0 -1
  246. package/dist/assets/pull-requests-CdbhyFOv.css +0 -1
  247. package/dist/assets/pull-requests-ncmKT3sS.js +0 -1
  248. package/dist/assets/ripple-BVltMmyV.js +0 -11
  249. package/dist/assets/settings-BopLnpB0.css +0 -1
  250. package/dist/assets/shared-DpMvYJO3.js +0 -2
  251. package/dist/assets/studioGateApi-DcCqiD9V.js +0 -1
  252. package/dist/assets/studioUrls-DmMMIScP.js +0 -1
  253. package/dist/assets/useArchivedVibe64Sessions-_LB2XxEa.js +0 -1
  254. package/dist/assets/useCommand-Bqxb-naz.js +0 -1
  255. package/dist/assets/useEndpointResource-DWoQ2keu.js +0 -1
  256. package/dist/assets/useRealtimeEvent-Bwapstla.js +0 -1
  257. package/dist/assets/useVibe64ConversationLog-BqUI0S5n.js +0 -1
  258. package/dist/assets/useVibe64Learning-DyqXkpLw.js +0 -1
  259. package/dist/assets/useVibe64ProjectScope-Bp1ImZlz.js +0 -1
  260. package/dist/assets/useVibe64SessionData-B686lToN.js +0 -1
  261. package/dist/assets/vibe64SessionFocus-CqZNTvYF.js +0 -1
  262. package/dist/assets/vibe64SessionFocus-OJ2toBd9.css +0 -1
@@ -0,0 +1,199 @@
1
+ # Set up a Mac for Vibe64
2
+
3
+ A step-by-step setup for running Vibe64 on your own Mac. Do the steps up to
4
+ **An AI tool** once. The project steps only matter when a project needs them, and
5
+ Vibe64 tells you when: a row with the exact command appears where the work
6
+ needs the tool.
7
+
8
+ Paste each command into **Terminal** (in Applications → Utilities) and press
9
+ Enter. A command that asks for your Mac password shows nothing while you type;
10
+ press Enter when done.
11
+
12
+ ## Basic tools
13
+
14
+ Apple's command line tools give you Git, a compiler and Make:
15
+
16
+ ```sh
17
+ xcode-select --install
18
+ ```
19
+
20
+ A window opens; choose **Install** and wait for it to finish. Check:
21
+ `git --version` prints a version. Until they are installed, `git`, `python3`
22
+ and `cc` on a Mac only open that install window, so Vibe64 shows this one row
23
+ first and checks nothing else that depends on it.
24
+
25
+ ## Homebrew
26
+
27
+ [Homebrew](https://brew.sh/) installs the programs that need more than your
28
+ home folder, such as database servers. Its first install asks for your Mac
29
+ password, so use an administrator account:
30
+
31
+ ```sh
32
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
33
+ ```
34
+
35
+ When it finishes, make it available in every terminal:
36
+
37
+ ```sh
38
+ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
39
+ ```
40
+
41
+ That is the folder on Apple silicon Macs; Homebrew prints the right line for
42
+ your Mac at the end of its install, so you can copy it from there. After this
43
+ first install, `brew install …` needs no password. Homebrew supports macOS 15
44
+ (Sequoia) and newer.
45
+
46
+ ## Node.js and mise
47
+
48
+ Vibe64 needs **Node.js 26**. Install it with [mise](https://mise.jdx.dev/),
49
+ which installs languages into your home folder without a password:
50
+
51
+ ```sh
52
+ curl -fsSL https://mise.run | sh
53
+ echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc
54
+ echo 'eval "$(~/.local/bin/mise activate zsh --shims)"' >> ~/.zprofile
55
+ ~/.local/bin/mise use -g node@26
56
+ ```
57
+
58
+ These lines are for zsh, the Mac's standard shell. If you use bash, write
59
+ `activate bash` into `~/.bashrc` and `activate bash --shims` into
60
+ `~/.bash_profile` instead.
61
+
62
+ Close Terminal and open it again. Check: `node --version` prints `v26…`. Always
63
+ keep the `-g`: without it, mise writes a `mise.toml` file into whatever folder
64
+ you are in.
65
+
66
+ ## Start Vibe64
67
+
68
+ In the folder you want to work on, run `npx vibe64`. See
69
+ [Running Vibe64 on your computer](running-vibe64-on-your-computer.md) for the
70
+ options and where Vibe64 keeps its data.
71
+
72
+ ## Git
73
+
74
+ Tell Git who you are, once, so your commits carry your name:
75
+
76
+ ```sh
77
+ git config --global user.name "Your Name"
78
+ git config --global user.email "you@example.com"
79
+ ```
80
+
81
+ Without them Vibe64 still saves your work, using a stand-in name ending in
82
+ “via Vibe64”, and **Health** reminds you. To work with GitHub, connect it in
83
+ **Account settings → GitHub**; signing in fills in your name and email only
84
+ when Git has none.
85
+
86
+ ## An AI tool
87
+
88
+ Vibe64 works through one AI tool on this computer. One is enough; each installs
89
+ into your home folder:
90
+
91
+ | AI | Command |
92
+ |---|---|
93
+ | Claude Code | `curl -fsSL https://claude.ai/install.sh \| bash` |
94
+ | Codex (ChatGPT and OpenAI keys) | `curl -fsSL https://chatgpt.com/codex/install.sh \| sh` |
95
+ | opencode (providers connected through OpenCode) | `curl -fsSL https://opencode.ai/install \| bash` |
96
+
97
+ Then choose **Set up your AI** in Vibe64 and sign in. See
98
+ [AI accounts](ai-accounts.md).
99
+
100
+ ## Project languages
101
+
102
+ Only when a project needs one. When **Preparing workspace** fails because a
103
+ language is missing, the panel shows its row with the command for this Mac.
104
+ These install with mise, without a password:
105
+
106
+ | Language | Command |
107
+ |---|---|
108
+ | Python | `mise use -g python@3.13` |
109
+ | Ruby | `mise use -g ruby@3.4` |
110
+ | Java | `mise use -g java@temurin-25` |
111
+ | Go | `mise use -g go` |
112
+ | Rust | `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \| sh` |
113
+ | PHP and Composer | `/bin/bash -c "$(curl -fsSL https://php.new/install/mac)"` |
114
+
115
+ After installing, choose **Check again** on the row; no restart is needed.
116
+
117
+ The Mac's own Ruby and Python are old, and `/usr/bin/java` only says that no
118
+ Java is installed. Vibe64 looks in mise's folders before the system ones, so
119
+ the versions you install with mise win; each row shows the version and folder it
120
+ found. `brew install ruby` or `brew install python` also work, if you prefer
121
+ Homebrew.
122
+
123
+ ## Build tools
124
+
125
+ Some packages compile native code (Rails gems such as `psych` and `mysql2`,
126
+ Python's `mysqlclient`), so they need Apple's command line tools (step one)
127
+ and a few libraries. The row is called **Build tools**:
128
+
129
+ ```sh
130
+ brew install pkg-config libyaml openssl@3 gmp
131
+ ```
132
+
133
+ For MySQL drivers, also run `brew install mariadb`: the drivers build against
134
+ it. Don't install `mysql-client` for this; its newer versions can't sign in to
135
+ MariaDB users. Vibe64 adds Homebrew's PostgreSQL folder to the PATH of the commands it
136
+ runs, so PostgreSQL drivers find what they need in the server you install
137
+ below.
138
+
139
+ ## Databases
140
+
141
+ Only when a project uses MySQL or PostgreSQL. SQLite needs nothing. You run the
142
+ database server yourself; one you already have is fine. Vibe64 never starts it
143
+ for you.
144
+
145
+ **Install and start it**, once:
146
+
147
+ | Database | Command |
148
+ |---|---|
149
+ | MySQL-compatible (MariaDB) | `brew install mariadb && brew services start mariadb` |
150
+ | PostgreSQL | `brew install postgresql@18 && brew services start postgresql@18` |
151
+
152
+ `brew services` starts the server now and every time you log in. To stop it:
153
+ `brew services stop mariadb` (or `postgresql@18`).
154
+
155
+ **Give the project its own login.** In the failed step's **database server**
156
+ panel, choose **Suggest a user and password**, open **Create a login and
157
+ database**, copy the command and paste it into Terminal. Then choose **Save
158
+ and check**. When the panel says connected, choose **Retry**. See
159
+ [Workspace preparation](workspace-preparation.md).
160
+
161
+ If you already run Oracle MySQL, keep it: put its host, port, user and password
162
+ in the panel or in **Env**. Don't install Homebrew's MariaDB next to it; the two
163
+ conflict.
164
+
165
+ ## Extras
166
+
167
+ Nice to have; nothing depends on them.
168
+
169
+ | Tool | Command |
170
+ |---|---|
171
+ | GitHub CLI | `brew install gh` |
172
+ | ripgrep (faster search) | `brew install ripgrep` |
173
+ | Browser for automated checks | `npx playwright install chromium` |
174
+
175
+ ## Check your setup
176
+
177
+ Open **Dashboard → Health**. The top line says **Vibe64 has what it needs.**
178
+ when Node.js, Git and an AI tool all run. Each missing tool shows its command
179
+ with a copy button and **Check again**. A tool counts only when it actually
180
+ starts, so a broken install shows as **didn't start**, not as ready.
181
+
182
+ If a tool works in Terminal but Vibe64 can't find it, it is probably installed
183
+ somewhere only your interactive shell knows. Check the `mise` and Homebrew
184
+ lines above, then start Vibe64 again from a new Terminal window.
185
+
186
+ ## Ask Colleague
187
+
188
+ Colleague can walk you through any step here and explain what a row or message
189
+ means. It can also do the safe parts for you, when you ask:
190
+
191
+ - check whether a tool runs now (“is Ruby installed?”), or run all of
192
+ **Health**;
193
+ - check the project's database server with the current values, and save the
194
+ host, port, database name and user name you tell it into **Env**;
195
+ - retry the session's **Preparing workspace**, and open **Health** or **Env**.
196
+
197
+ You run the install commands yourself, in Terminal: Colleague never uses
198
+ `sudo`, never edits your shell files and never installs anything. Never type a
199
+ password into chat; enter it in the panel's password field or in **Env**.
@@ -0,0 +1,76 @@
1
+ # Set up Windows for Vibe64 (WSL)
2
+
3
+ Vibe64 runs on Windows inside **WSL**, Windows' built-in Linux, with Ubuntu.
4
+ It doesn't run in PowerShell or Command Prompt: there, `npx vibe64` stops and
5
+ points here. Once Ubuntu is set up, everything else is the same as on Linux.
6
+
7
+ You need Windows 11, or Windows 10 version 2004 or newer.
8
+
9
+ ## Install WSL and Ubuntu
10
+
11
+ 1. Right-click **Start**, choose **Terminal (Admin)** or **Windows PowerShell
12
+ (Admin)**, and run:
13
+
14
+ ```powershell
15
+ wsl --install
16
+ ```
17
+
18
+ 2. Restart Windows when it asks.
19
+ 3. Open **Ubuntu** from the Start menu. The first start takes a minute, then
20
+ asks for a **username and password**. They are for Ubuntu only and don't
21
+ have to match your Windows ones. Remember the password: Ubuntu asks for it
22
+ whenever a command starts with `sudo`. Nothing shows while you type it.
23
+
24
+ If `wsl --install` only prints help text, WSL is already there: run
25
+ `wsl --install -d Ubuntu` instead. Microsoft's
26
+ [install page](https://learn.microsoft.com/en-us/windows/wsl/install) has the
27
+ details.
28
+
29
+ ## Set up Ubuntu
30
+
31
+ From now on, type every command in the **Ubuntu** window, not in PowerShell.
32
+ Follow [Set up Linux](set-up-linux.md) from the start, using the lines for
33
+ **Ubuntu, Debian, WSL**: the basic tools, Node.js with mise, Git, an AI tool,
34
+ and later whatever your projects need. Install the AI tools inside Ubuntu too;
35
+ copies installed on the Windows side don't work from Ubuntu.
36
+
37
+ Two checks after the Node.js step, in a new Ubuntu window:
38
+
39
+ - `which node npx` must print paths that start with `/home/`. A path starting
40
+ with `/mnt/c/` is the Windows Node.js leaking in; it doesn't work with
41
+ Vibe64. Make sure the mise lines are in `~/.bashrc` and `~/.profile`, then
42
+ open a new Ubuntu window.
43
+ - `node --version` prints `v26…`.
44
+
45
+ ## Keep projects inside Ubuntu
46
+
47
+ Put your projects in your Ubuntu home folder (for example `~/Vibe64`, where
48
+ Vibe64 creates new ones), not under `/mnt/c/`:
49
+
50
+ - **Clone inside Ubuntu.** A project cloned with Git for Windows has Windows
51
+ line endings, and its scripts then fail with errors like
52
+ `/usr/bin/env: 'ruby\r': No such file or directory`.
53
+ - **Speed.** Files under `/mnt/c/` are much slower for Linux programs.
54
+
55
+ To see a project's files in Windows, run `explorer.exe .` in its folder.
56
+
57
+ ## Start Vibe64
58
+
59
+ In the Ubuntu window, go to your project folder and run `npx vibe64`. Open the
60
+ address it shows in your normal Windows browser: WSL passes `localhost` through
61
+ to Windows. See [Running Vibe64 on your computer](running-vibe64-on-your-computer.md).
62
+
63
+ ## Databases
64
+
65
+ Install and start them inside Ubuntu, with the Ubuntu lines in
66
+ [Set up Linux](set-up-linux.md#databases). A database server installed on the
67
+ Windows side also works: put its address in the project's **Env** (from inside
68
+ WSL, Windows is not always reachable at `localhost`, so this is the harder
69
+ route).
70
+
71
+ ## Ask Colleague
72
+
73
+ Colleague can explain each step and check what is installed inside Ubuntu (it
74
+ runs **Health** and checks single tools when you ask). Installing WSL, Ubuntu
75
+ and the tools happens in your own terminal; Colleague never runs commands with
76
+ `sudo` or in PowerShell. Never type a password into chat.
@@ -1,16 +1,33 @@
1
1
  # Choose a starter with ready tests
2
2
 
3
- In an empty project's onboarding, choose the JSKIT starter that matches the app:
3
+ In an empty project's onboarding, starters are grouped by technology. Choose
4
+ the JSKIT starter that matches the app:
4
5
 
5
6
  - **Basic app**: responsive shell, server/client/browser tests, no database or login.
6
- - **Database app**: the same shell plus MySQL migrations and isolated database
7
+ - **App with no users, but a database**: the same shell plus MySQL migrations and isolated database
7
8
  tests, without accounts.
8
- - **Accounts app**: sign-up, login, private pages and persisted profiles, plus
9
+ - **App with users**: sign-up, login, private pages and persisted profiles, plus
9
10
  account-persistence and browser tests.
10
11
 
12
+ For another framework, each of Django, Rails, Spring Boot, Express and Next.js
13
+ offers one **Basic app**: a home page whose notes form saves to SQLite
14
+ (MySQL/MariaDB for Spring Boot), with unit and HTTP tests and the starter's own
15
+ `docs/colleague-usage/starting-app.md`. Only Rails has sign-in, with the seeded
16
+ development account `developer@example.com` / `developer`; for the others, ask
17
+ the coding agent to add accounts. These starters do not declare **Browser test
18
+ app**.
19
+
20
+ When the installation does not supply their database itself, Preview stops at
21
+ **Set up your project's environment** and names the missing value: `DB_NAME`
22
+ for Django and Next.js, `DB_DATABASE` for Rails and Express, the `DB_*` server
23
+ values for Spring Boot. Choose **Open Env**, enter an absolute SQLite file path
24
+ outside the project (or the MySQL/MariaDB details) and **Save**; preparation
25
+ then continues and the app starts.
26
+
11
27
  The same choices appear on desktop and mobile. Applying a starter imports its
12
- source. Finish **Prepare workspace** to install dependencies and provision its
13
- declared resources and migrations; a failed preparation offers **Retry**.
28
+ source and starts **Prepare workspace** at once: it installs dependencies,
29
+ provisions the declared resources (an installation that supplies the database
30
+ does so here) and runs migrations; a failed preparation offers **Retry**.
14
31
  The coding agent can then follow the first feature request using the existing
15
32
  test commands documented in the starter's `docs/colleague-usage/testing.md`.
16
33
 
@@ -25,6 +42,6 @@ managed projects use the provided browser rather than installing another one.
25
42
  Colleague can explain the choices and offer coding-agent help. A how-to question
26
43
  alone does not authorize starter import, resource preparation or fixture reset.
27
44
  Applying to an existing application is unavailable; it does not replace authored
28
- source. These are three complete starters; optional packs are not part of this flow.
45
+ source. These are complete starters; optional packs are not part of this flow.
29
46
  OpenCode's generated, ignored plugin-install files alone do not make a blank
30
47
  project an existing application. Custom OpenCode files still prevent import.
@@ -3,7 +3,7 @@
3
3
  This topic explains verified lesson content, private progress and owner recovery.
4
4
  For host-registered learner controls and assessment, read **Learn with Colleague**
5
5
  (`learning-with-colleague`). For authoring and Git publication, read **Author a
6
- lesson and publish its source** (`lesson-authoring`). The underlying facilities
6
+ lesson and save its source** (`lesson-authoring`). The underlying facilities
7
7
  below do not by themselves add learner controls or grant Colleague source access;
8
8
  available operations depend on the host registrations described in those topics.
9
9
 
@@ -49,7 +49,7 @@ The application also has a server-side verified-snapshot installation facility.
49
49
  For official catalogue courses it is reached through **Install** and **Update**
50
50
  in Learning's **Courses** pane, or Colleague's `course.install` on a direct
51
51
  request (see [Installing and updating Learning courses](learning-course-catalogue.md)).
52
- For other content, the local operator commands in **Author a lesson and publish its source**
52
+ For other content, the local operator commands in **Author a lesson and save its source**
53
53
  invoke the original installation owner.
54
54
  An admitted owner operation must select the canonical local source and exact
55
55
  course pin. Colleague can explain this boundary and offer to help contact the
@@ -0,0 +1,108 @@
1
+ # Team AI access: when team members can open projects
2
+
3
+ A workspace can have one owner and other people (team members). Team members
4
+ never use the owner's AI directly: main chat runs on the owner's setup (a team
5
+ member's messages wait for approval), and everything else a team member does
6
+ with AI (their Colleague, Fix it with AI, Explain & check and the quick
7
+ helpers) runs on the **team setup**, the second setup in AI setup. A team
8
+ member's own lesson is the one place where main chat runs on the team setup
9
+ too; see **Lessons** below. The team setup may use only **Workspace-use** models,
10
+ never a personal plan such as the owner's Claude or ChatGPT subscription (see
11
+ [Personal-use AI subscriptions](ai-personal-use.md)).
12
+
13
+ So that a team member is never dropped into a project whose AI cannot work for
14
+ them, Vibe64 checks one thing when they open a project: **does the team setup
15
+ have at least one Workspace-use model?** Until it does, team members cannot
16
+ open any project in the workspace.
17
+
18
+ ## Who is checked
19
+
20
+ - **Team members** are checked every time they open a project, including
21
+ practice (Learning) projects.
22
+ - **The workspace owner is never checked.** The owner can always open every
23
+ project, whatever the team setup holds.
24
+ - On Vibe64 running on your own computer there is only you, the owner, so the
25
+ check never applies.
26
+ - Work that runs without a person (an AI turn already running, scheduled
27
+ checks) is not checked.
28
+
29
+ ## What counts as ready
30
+
31
+ The team setup is ready when at least one of its roles (Colleague, Fix it with
32
+ AI, Explain & check, Quick helper) uses a model whose connection is Workspace
33
+ use and currently connected, for example DeepSeek through an API key. A role set
34
+ to **Same as** another role counts as the model of the role it follows. A role
35
+ that is off, a role that follows an empty role, a personal plan, or a
36
+ disconnected connection does not count.
37
+
38
+ The fastest way to get there is the team card in AI setup: **Let your team use
39
+ this workspace: add a DeepSeek key (runs inside Claude Code)**. One key fills
40
+ the team setup with the recommended DeepSeek models.
41
+
42
+ ## What a team member sees
43
+
44
+ Opening a project before the team setup is ready shows **Team AI isn't set up
45
+ yet** instead of the project:
46
+
47
+ - "*Owner* needs to set up AI for team members before you can open projects
48
+ here." (*Owner* is the owner's name, or "The workspace owner" when the
49
+ workspace has no name for them.)
50
+ - A highlighted line to pass on: **Ask *owner* to set up AI for team members.**
51
+ - **Check again** re-reads the project once the owner says it is done. It opens
52
+ the project as soon as the team setup is ready.
53
+ - **Back to projects** returns to the project list, where the workspace has one.
54
+
55
+ The screen is the same on a phone, with the buttons full width and stacked.
56
+ Nothing about the project changes while a team member waits, and their Account
57
+ and AI Accounts pages stay open to them.
58
+
59
+ ## What the owner sees
60
+
61
+ While the workspace has team members and the team setup is not ready, the
62
+ owner's project list (where the workspace has one) shows **Team members can't
63
+ open projects yet — Set up AI for team members so they can work here.** with
64
+ **Set up team AI**, which opens AI setup at the team setup. The prompt disappears once the team setup has a
65
+ Workspace-use model, or when the workspace has no team members.
66
+
67
+ Project rows in the list can also show **N waiting**: messages team members
68
+ sent to main chat that wait for the owner's approval.
69
+
70
+ ## Inside a project
71
+
72
+ Once a team member is in, their AI work uses the team setup, and their messages
73
+ to main chat wait for the owner's approval before they are sent (see
74
+ [Main chat messages that wait for the owner's approval](main-chat-approvals.md)). If the owner
75
+ later removes the last Workspace-use model, the team member's next project
76
+ open shows the waiting screen again.
77
+
78
+ ## Lessons
79
+
80
+ A lesson's practice project is private to its learner, so a team member's
81
+ lesson does not wait for the owner. In their own practice project, a team
82
+ member's main chat runs on the team setup and their messages go straight to it:
83
+
84
+ - **Senior** and **Junior** use the team **Colleague** model, and Auto's Router
85
+ uses the team **Quick helper** model. **Custom** in **Chat mode** lists only
86
+ Workspace-use models, so the member may choose any of them for the lesson.
87
+ - The composer says which AI it is: the placeholder "Message your lesson's AI —
88
+ *model* (team AI)" and, in **Chat mode**, "This lesson runs on the team AI:
89
+ *model*. Only you see this chat."
90
+ - **Do it for me** (which sends a line's prompt to the lesson's main chat),
91
+ Check my work reviews and the lesson's Colleague use the same team setup.
92
+ - A personal plan, such as the owner's Claude or ChatGPT subscription, is never
93
+ used, even when the team setup has no Colleague model. Then main chat says
94
+ "The workspace owner hasn't chosen a Colleague model for team members yet."
95
+ and the owner adds one in AI setup.
96
+ - The owner's own lessons run on the owner's setup as before. Main chat in
97
+ every ordinary project still waits for the owner's approval.
98
+
99
+ ## What Colleague can do
100
+
101
+ Colleague can explain this screen and the team setup. It cannot change the team
102
+ setup for a team member: only the owner edits AI setup. A team member's Colleague
103
+ itself needs the team setup, so Colleague can answer only once the team setup is
104
+ ready; until then, ask the owner directly.
105
+
106
+ Related topics: [AI model setups](ai-model-setups.md),
107
+ [Personal-use AI subscriptions](ai-personal-use.md),
108
+ [AI onboarding](ai-onboarding.md) and [Colleague](colleague.md).
@@ -9,9 +9,11 @@ first chat. If another temporary or host conversation was selected, it stays
9
9
  selected with its draft intact. Dismissing the dialog has the same effect; no
10
10
  chat is created and no message is sent. This applies on desktop and narrow screens.
11
11
 
12
- Ordinary temporary chats offer **Custom**, **Senior** and **Junior**. Choose
13
- **Custom** to open the **Orchestrator**, **Model** and **Thinking** fields. Select
14
- an available connection and model, then **Apply**. The next message uses that
12
+ Ordinary temporary chats offer **Fix it with AI**, **Custom**, **Senior** and
13
+ **Junior**; a team member's offer **Fix it with AI** and **Custom**. **Fix it with
14
+ AI** uses the model AI setup chose for fixes, which may run in a different tool
15
+ from Main chat. Choose **Custom** to open the **Orchestrator**, **Model** and
16
+ **Thinking** fields. Select an available connection and model, then **Apply**. The next message uses that
15
17
  choice and the existing conversation history. Main chat's selection is unchanged.
16
18
 
17
19
  ## Rename a temporary chat
@@ -70,10 +72,10 @@ message; uncertain delivery is checked before any resend.
70
72
 
71
73
  ## Hand a merge repair to another model
72
74
 
73
- **Fix it with AI** for an Update conflict opens a temporary repair using Senior
74
- and sends the repair instructions once. Its reply appears in that temporary
75
- chat; Main chat's history is unchanged.
76
- Merge repair always retains the Senior role. To hand it to Codex:
75
+ **Fix it with AI** for an Update conflict opens a temporary repair on the Fix it
76
+ with AI model and sends the repair instructions once. Its reply appears in that
77
+ temporary chat; Main chat's history is unchanged.
78
+ Merge repair stays in Fix it with AI mode or on a model you choose. To hand it to Codex:
77
79
 
78
80
  1. If it is still working, press **Stop** and wait for it to stop.
79
81
  2. Open its **Chat mode** icon and choose **Choose model**.
@@ -7,7 +7,7 @@ steps come from the project's setup contract.
7
7
 
8
8
  Select **Prepare workspace**. The notice shows progress while those steps run.
9
9
  Use **Expand** to inspect output, or **Dismiss** to hide an inactive notice.
10
- Preparation does not publish the project.
10
+ Preparation does not save or push the project.
11
11
 
12
12
  To rerun preparation after success, select **Prepare workspace** (the wrench)
13
13
  in the session header. On narrow screens, open **Session actions** (three dots)
@@ -99,6 +99,55 @@ Colleague can explain this recovery; installing a local tool and restarting the
99
99
  local editor require the person to use their terminal.
100
100
 
101
101
 
102
+ ## A tool the step needs
103
+
104
+ When a step fails because a program it runs isn't installed, the failed step
105
+ says so in one sentence ("Vibe64 couldn't find bundle on this computer, so this
106
+ step couldn't run.") and **This step needs a tool that isn't working** lists the
107
+ missing runtime with its install command, **Check again** and **Other ways**.
108
+ A long failure (a stack trace) shows as three lines; **Expand** shows all of it.
109
+ The database server panel below waits until no tool is missing, so there is one
110
+ thing to fix at a time.
111
+
112
+ ## A database server you run
113
+
114
+ When the project's Stack declares a MySQL/MariaDB or PostgreSQL database and
115
+ this computer supplies none itself, the person runs that server: one they
116
+ already have, or one they install. After a preparation step fails, a
117
+ **database server** panel appears under the failed step. It says whether
118
+ Vibe64 could sign in, in one sentence: nothing answering at the host and port,
119
+ a wrong user or password, a user that can only sign in from the computer's
120
+ administrator account (such as `root` on a fresh MariaDB, or `postgres`), a
121
+ missing database, or no access to it.
122
+
123
+ The panel's fields are the project's Env values under the exact names the
124
+ Stack declares (for example `DB_HOST`, `DB_PORT`, `DB_NAME` or `DB_DATABASE`,
125
+ `DB_USER` or `DB_USERNAME`, `DB_PASSWORD`). **Save and check** saves them in
126
+ Env and signs in for real with the drivers Vibe64 bundles; **Check again**
127
+ repeats the sign-in. A saved password is never shown or sent back; an empty
128
+ password field keeps it. Env values always win over the Stack's defaults, and a
129
+ variable exported in the shell that started Vibe64 does not count.
130
+
131
+ **Install or start** shows the command for this computer (Debian, Ubuntu and
132
+ WSL, or macOS with Homebrew); its link opens the Databases step of the setup
133
+ guide, which also has the Fedora and Arch lines ([Linux](set-up-linux.md#databases),
134
+ [macOS](set-up-macos.md#databases)). **Create a login and
135
+ database** shows one command that creates a project user, its database and,
136
+ for PostgreSQL, the right to create test databases. **Suggest a user and
137
+ password** fills in a project user and a strong password first; the command
138
+ shows the password as dots but copies the real one. The person runs these
139
+ commands in their own terminal; Vibe64 never starts a database server or runs
140
+ them. While nothing answers, the panel leads with **Install or start** and
141
+ folds the settings into one line, "Looking for it at host:port · database ·
142
+ user", with **Change** to edit them. When the panel says connected, choose
143
+ **Finish preparing** on it (or **Retry** on the failed step).
144
+
145
+ Colleague can explain the panel and each message. When asked, it can check the
146
+ server again with the current values and save the non-secret ones the person
147
+ gives (host, port, database name, user name) in Env. It must not ask for,
148
+ repeat or save a password, and it never runs `sudo` or creates databases
149
+ itself; the password goes in the panel's password field.
150
+
102
151
  ## Resource recovery after a daemon restart
103
152
 
104
153
  When the host supports database preservation checks, reopening a previously
@@ -1,6 +1,6 @@
1
1
  # Copyable teaching topic template
2
2
 
3
- This is a complete directory template for an **incomplete draft topic**. It has one draft lesson in lesson format v2 (schemaVersion `2`): optional notes and three steps — a reading step (`none`), a multiple-choice step (`choice`) and a learner-ticked step (`self`) — with no exercise, automatic check or visual. Do not teach it or mark it published before human review. Check verdicts are final and come from each step's declared check (a lesson with an exercise may also use a `review` check, the learner's own AI judging their work against a rubric); Colleague never passes a step.
3
+ This is a complete directory template for an **incomplete draft topic**. It has one draft lesson in lesson format v3 (schemaVersion `3`, stage `studio`: taught outside any project, since it has no exercise): optional notes and three steps — a reading step (`none`), a multiple-choice step (`choice`) and a learner-ticked step (`self`) — with no exercise, automatic check or visual. Do not teach it or mark it published before human review. Check verdicts are final and come from each step's declared check (a lesson with an exercise may also use a `review` check, the learner's own AI judging their work against a rubric); Colleague never passes a step.
4
4
 
5
5
  ## Copy and adapt
6
6
 
@@ -11,7 +11,7 @@ This is a complete directory template for an **incomplete draft topic**. It has
11
11
  ```
12
12
 
13
13
  Work in the copy. No dependency install or new application framework is needed for these content files.
14
- 2. In the copied `package.json`, replace `name` with your `learn-` repository name, `vibe64Training.topicId` with a permanent topic ID, `domainId` with the intended domain ID, and `title` with the topic title. Keep version `0.1.0`, the topic manifest's schemaVersion `1` and status `preview` while drafting (lessons declare their own schemaVersion `2`). IDs start with a letter, contain only letters, digits or hyphens, and have at most 64 characters.
14
+ 2. In the copied `package.json`, replace `name` with your `learn-` repository name, `vibe64Training.topicId` with a permanent topic ID, `domainId` with the intended domain ID, and `title` with the topic title. Keep version `0.1.0`, the topic manifest's schemaVersion `1` and status `preview` while drafting (lessons declare their own schemaVersion `3` and `stage`). IDs start with a letter, contain only letters, digits or hyphens, and have at most 64 characters.
15
15
  3. Replace `TOPIC-01` with your permanent first lesson code: rename its directory and update the root manifest's `lessons[0].code` and `descriptor`, the lesson descriptor's `code`, the notes title and outline row. Keep the root entry `draft` and `required:true`.
16
16
  4. Write the outline's learner, prerequisites, final ability and lesson outcomes. Replace `notes.md` and each `steps/*.md` body with real text a learner can follow without AI. Edit `steps` in `lesson.json`: each step has a unique `id`, `title`, `body`, `check` and `required`. Use `choice` (`question`, 2–8 `options`, `answer` as 0-based option indexes), `self` (learner ticks **Done**), `none` (reading only, never required) or `auto` (a declared check; needs an exercise). At least one step must be required. Optional `guide` points at a real Vibe64 place and optional `visual` plays declared commands. Instead of a guide, a step body may end with a fenced `beats` block that the lesson step bar plays one line at a time (for example `show lesson-bar: This bar walks you through each step.`); see "Beats" in `docs/training-content.md`.
17
17
  5. To add lessons, copy the lesson directory to a new permanent code, update its code, title and steps, and append a `draft` entry with the correct descriptor path to the root manifest and outline. Declare earlier lesson prerequisites as `{ "code": "YOUR-01" }` and topic prerequisites as `{ "topicId": "another-topic" }`. Referenced lessons must exist, precede their dependants and have no cycles. A published lesson cannot require a draft lesson.
@@ -28,7 +28,7 @@ This is a complete directory template for an **incomplete draft topic**. It has
28
28
  ```
29
29
 
30
30
  Validation and bundling do not execute content, publish Git, install a topic or make drafts teachable. In a public Vibe64 development checkout, `node bin/run.js training ...` accepts the same arguments; run it from that checkout with the copied topic's absolute path.
31
- 7. Add an exercise, an `auto` step or a visual only when you have a real source and a working check. Follow the installed `docs/training-content.md` reference (section **Lesson format v2: steps**) for exercise/check/visual descriptors, exact relative paths and declared auxiliary `assets`. Never point a step body, notes, visual or exercise at `lesson.json`: it holds the choice answers and is refused. Do not add fake readiness or capabilities to make a draft appear runnable.
31
+ 7. Add an exercise (then set the lesson's `stage` to `project`), an `auto` step or a visual only when you have a real source and a working check. Follow the installed `docs/training-content.md` reference (sections **Lesson format v3: stage and facts** and **Lesson format v2: steps**) for exercise/check/visual descriptors, exact relative paths and declared auxiliary `assets`. Never point a step body, notes, visual or exercise at `lesson.json`: it holds the choice answers and is refused. Do not add fake readiness or capabilities to make a draft appear runnable.
32
32
  8. Trial and review the lesson with a human learner, including mistakes, assistance, recovery and relevant desktop/mobile controls. Only then change its root entry to `published`. Keep the topic `preview` until every required lesson is reviewed and published. A `released` topic cannot contain required draft lessons.
33
33
 
34
34
  Before generating a course lock, add the real source repository as root `repository.url` in the format `https://github.com/<owner>/learn-<topic>.git`, commit the intended topic and leave it clean. Use the installed publishing guide for `vibe64 training publish-manifest`; local lock generation does not create or publish a remote repository. A course chooses this whole topic, not a subset of its lessons.
@@ -1,7 +1,8 @@
1
1
  {
2
- "schemaVersion": 2,
2
+ "schemaVersion": 3,
3
3
  "code": "TOPIC-01",
4
4
  "title": "Replace with the learner task",
5
+ "stage": "studio",
5
6
  "notes": "notes.md",
6
7
  "prerequisites": [],
7
8
  "estimatedMinutes": 15,