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
@@ -8,7 +8,7 @@ restart or delete it.
8
8
 
9
9
  ## One lesson in progress
10
10
 
11
- Starting a lesson (**Courses**, then **Start**) begins one run of it, called an
11
+ Starting a lesson (**Courses**, then **Start lesson**) begins one run of it, called an
12
12
  attempt. The attempt owns:
13
13
 
14
14
  - its step results,
@@ -19,7 +19,10 @@ attempt. The attempt owns:
19
19
  You have at most one lesson in progress. It stays in progress until you finish,
20
20
  restart or delete it. Switching to Develop, or opening another page, only
21
21
  pauses it: its project, results and conversation are all kept, for as long as
22
- you like. Press **L** to come back to it.
22
+ you like. Press **L** to come back to it. Like any project, a practice project
23
+ left without activity for about 30 minutes is closed by idle cleanup: its
24
+ Preview and assistant stop, while its files, results and conversation stay.
25
+ Coming back to the lesson opens it again; start Preview again if you need it.
23
26
 
24
27
  If you start a different lesson while one is in progress, Vibe64 asks once
25
28
  whether to archive the current lesson first. Confirming archives it (see
@@ -66,6 +69,14 @@ A practice project is a complete project. Its chat, **Preview**, **Dashboard**
66
69
  and sessions work as in any project. The session that lesson preparation
67
70
  creates in it is an ordinary session.
68
71
 
72
+ Which AI the practice project's chat uses depends on who you are. The workspace
73
+ owner's lessons (and yours on Vibe64 on your own computer) run on the owner's
74
+ main AI, as in any project. A team member's lesson runs on the team setup's
75
+ Workspace-use models and their messages are sent straight away, without the
76
+ owner's approval: the composer reads "Message your lesson's AI — *model* (team
77
+ AI)". A personal plan is never used for a team member's lesson; see
78
+ **Lessons** in [Team AI access](team-ai-access.md).
79
+
69
80
  ## In progress and Archived
70
81
 
71
82
  In Learn mode, **Courses** (on the lesson step bar, or in the project menu beside **L**) has an **In progress** list and an
@@ -76,7 +87,7 @@ lesson…** or **Loading archived lessons…** instead of staying blank.
76
87
  practice project's name (or **No practice project**). Without one it says
77
88
  **No lesson in progress. Start one from Courses.** The row has three buttons:
78
89
 
79
- - **Open** closes Courses and opens the lesson in the **Lesson** tab of its
90
+ - **Open** closes Courses and opens the lesson (its **Lesson** toggle on) over its
80
91
  practice project (or, for a lesson without one, of the page with no project
81
92
  selected).
82
93
  - **Restart** turns into **Archive and restart**; press that to archive this
@@ -110,7 +121,7 @@ projects.
110
121
  ## Finishing a lesson
111
122
 
112
123
  When every required step has passed, the lesson's **Lesson finished** screen,
113
- in the page's **Lesson** tab, finishes it: the lesson counts as completed for good, and the attempt is
124
+ in the page's **Lesson** sheet, finishes it: the lesson counts as completed for good, and the attempt is
114
125
  archived as one bundle (its record, practice project and conversation). The
115
126
  screen then offers **Next lesson** and **Back to courses**. **Start lesson** on
116
127
  the course page starts a new attempt with a fresh project, teacher and results; the
@@ -10,8 +10,13 @@ lesson's own caption. You then click it yourself.
10
10
  - The rest of the screen dims slightly, and a ring with a gentle ripple sits on
11
11
  one real tab, Dashboard section or button. A caption points at it; a thin bar
12
12
  on the caption shows the time left.
13
+ - The caption sits beside the control when there is room (right, else left),
14
+ otherwise below or above it. It stays off the yellow lesson step bar whenever
15
+ another place fits, so the step text stays readable; on a narrow phone screen
16
+ it may have to cover part of the bar. The caption is slightly see-through and
17
+ clicks pass through it to whatever is underneath.
13
18
  - The ring is on the next step from where you are. On **Preview**, a path to the
14
- ERD rings the **Dashboard** tab; once you are in **Dashboard → Database**, it
19
+ ERD rings the **Dash** (Dashboard) tab; once you are in **Dashboard → Database**, it
15
20
  rings the **ERD** button. When you are already at the place (for example
16
21
  Preview or **Dashboard → Files** is open), the ring goes around that open
17
22
  pane, with the caption inside its top edge when the pane fills the screen.
@@ -29,7 +34,7 @@ section the project does not show cannot be ringed.
29
34
 
30
35
  ## On a phone
31
36
 
32
- A phone shows the chat or one pane at a time, so the Preview/Dashboard tabs and
37
+ A phone shows the chat or one pane at a time, so the Preview/Dash tabs and
33
38
  the Dashboard menu are hidden. Colleague's full-screen chat minimises itself
34
39
  first so the ring is visible. Then:
35
40
 
@@ -67,8 +72,9 @@ passes a lesson step. When a lesson asks you to find a place, click it yourself.
67
72
 
68
73
  ## Opening your lesson
69
74
 
70
- Colleague can show your current lesson step in the Learn page's **Lesson** tab,
75
+ Colleague can show your current lesson step in the Learn page's **Lesson** pane
76
+ (turning the **Lesson** toggle on),
71
77
  and open the **Courses** catalogue or close it so you can see the app, without
72
78
  ending the lesson. While the lesson is going, the **Step N/M** button in
73
- Colleague's header shows the current step in the Lesson tab (on a phone,
79
+ Colleague's header shows the current step in the Lesson pane (on a phone,
74
80
  Colleague's chat minimises so the step is visible).
@@ -24,14 +24,18 @@ each, and the one you see always follows the mode:
24
24
  keep being followed while you are in Learn; their updates wait in Develop's
25
25
  conversation until you return. **Start fresh** and **Previous conversations**
26
26
  work within the conversation you are in.
27
- - In Learn, Colleague does not create assignments or watches; in Develop it does
28
- not teach, read lessons or your teacher notes.
27
+ - In Learn, Colleague does not create assignments, and it watches only your
28
+ lesson's practice project: ask "tell me when the agent answers" or, where
29
+ your Vibe64 can watch it, "tell me when my app is live". The watch only
30
+ reports; the step's own check still decides the step, and the watch ends with
31
+ the lesson attempt (finish, restart or delete). In Develop it does not teach,
32
+ read lessons or your teacher notes.
29
33
 
30
34
  ## Colleague as your teacher
31
35
 
32
36
  In Learn mode, **Courses** (on the lesson step bar, or in the project menu beside **L**) is the catalogue
33
37
  where you choose and start lessons; your current lesson is read on the Learn
34
- page itself, in its **Lesson** tab beside Colleague (see `learning-environment`).
38
+ page itself, in its **Lesson** sheet beside Colleague (the **Lesson** toggle) (see `learning-environment`).
35
39
  You can read lessons yourself without AI. Choose **Teach me** on a lesson step,
36
40
  or ask Colleague about your lesson, and Colleague teaches the current step.
37
41
  **Teach me** opens Colleague beside the step and sends "Teach me this step.";
@@ -47,12 +51,12 @@ passes the step for you:
47
51
  arrive in pages; Colleague reads every page before claiming a step's text is
48
52
  missing.
49
53
  - It points at, or with "show me" opens, the real Vibe64 places the step uses,
50
- replays the step's diagram, can show your current step in the **Lesson** tab,
54
+ replays the step's diagram, can show your current step in the **Lesson** sheet (turning the toggle on),
51
55
  and can open **Courses** or close it so you see the app. Courses keeps its
52
56
  place while closed.
53
57
  - In Learn mode with a lesson in progress, Colleague's header shows a small
54
58
  yellow **Step N/M** button (a check once the step passed). Pressing it shows
55
- that step in the page's **Lesson** tab (see `learning-environment`); on a
59
+ that step in the page's **Lesson** sheet (see `learning-environment`); on a
56
60
  phone Colleague's full-screen chat also minimises so the step is visible, and
57
61
  its avatar button brings Colleague back. It appears on the desktop panel, the
58
62
  phone's full-screen chat and during voice chat. Develop shows no step button.
@@ -66,7 +70,7 @@ passes the step for you:
66
70
  On a phone, Colleague's full-screen chat minimises itself when it opens Courses,
67
71
  shows a lesson step or rings a control, so you can see it; reopen Colleague with
68
72
  its avatar button. **Teach me** on a phone opens Colleague's full-screen chat
69
- over the Lesson tab, which stays underneath.
73
+ over the Lesson pane, which stays underneath.
70
74
 
71
75
  ## Colleague never judges
72
76
 
@@ -83,8 +87,8 @@ A step passes only through your own action in the lesson:
83
87
  now**; a response check first needs your own press of the App's control in this
84
88
  lesson's Preview.
85
89
  - **Review check**: the step shows its rubric, what your finished work must
86
- show. Only your own **Check my work** asks your own AI (your Helper route in
87
- **AI Accounts → Model routing**) to review your practice work against it;
90
+ show. Only your own **Check my work** asks your own AI (your **Explain &
91
+ check** model in **AI Accounts → Models**) to review your practice work against it;
88
92
  Colleague never runs a review for you. A review answers **Passed** (final) or
89
93
  **Not yet** with a comment and a hint. While the coding agent is still
90
94
  working it says "Wait until the agent finishes"; with nothing changed yet it
@@ -1,7 +1,7 @@
1
- # Author a lesson and publish its source
1
+ # Author a lesson and save its source
2
2
 
3
3
  Ask Colleague to coordinate a coding agent, review the lesson in the same session,
4
- and publish its source through the existing Save or pull-request workflow.
4
+ and save its source through the existing Save or pull-request workflow.
5
5
  Colleague can operate those controls when requested; it does not edit files or
6
6
  run a shell itself. Git publication, pinned course material and installation are
7
7
  separate results. The current Getting started course has four step-based lessons
@@ -32,7 +32,7 @@ text needs a new immutable topic/course pin, keeping earlier learners’ version
32
32
 
33
33
  For example: “In this lesson-authoring project and session, improve the introduction's
34
34
  wording, keep its step IDs, checks and App/diagram contracts, validate and bundle it,
35
- arrange a review, then publish the source as a draft PR. Do not install or enable it.”
35
+ arrange a review, then save the source as a draft PR. Do not install or enable it.”
36
36
  This is an example instruction, never authority to execute it without the person's
37
37
  actual request. A how-to question makes no edits, assignment or external write.
38
38
 
@@ -58,21 +58,21 @@ it does not mean published or installed. A preview can be published as preview
58
58
  source when requested. Pedagogical trial, real exercise and animation acceptance
59
59
  remain explicit requirements before claiming a reviewed course release.
60
60
 
61
- ## Publish through the native repository workflow
61
+ ## Save through the native repository workflow
62
62
 
63
63
  After coding settles, inspect **Changes** and the exact repository/branch
64
64
  reported by the session. **Save** captures ALL current work, not selected files.
65
65
  A managed Vibe64 Git Save updates its canonical project; a GitHub Save pushes to
66
66
  the reviewed repository branch. Colleague can request native Save after an explicit
67
- Save/publication instruction and passes its unchanged destination review. It
67
+ Save instruction and passes its unchanged destination review. It
68
68
  cannot bypass active-agent, stale-source, account or required-PR rules, or discard
69
- unrelated work to make publication pass. An ambiguous target stays unresolved.
69
+ unrelated work to make Save pass. An ambiguous target stays unresolved.
70
70
  On mobile, reveal the project and use its Dashboard section chooser for Changes
71
71
  or Pull requests. The same native Save/PR permissions and review apply.
72
72
 
73
73
  For a required or requested PR workflow, Colleague can use the existing PR creation
74
74
  operation with the reviewed destination and requested title/body; draft is the
75
- default. PR creation saves and publishes the session's work. An already bound PR
75
+ default. PR creation saves and pushes the session's work. An already bound PR
76
76
  is returned rather than silently edited. **Pull requests** shows actual remote
77
77
  source/base commits, checks and review blockers. Marking a draft ready or merging
78
78
  requires the person's corresponding instruction and the original fresh review;
@@ -80,10 +80,10 @@ creating a PR does not authorise merge. Use only a repository-enabled merge meth
80
80
  covered by that instruction. Save, PR creation or merge never deploys Vibe64.
81
81
 
82
82
  After success, report the actual saved destination or returned PR and current
83
- remote status. A coding agent's “pushed” message is not publication proof. After
83
+ remote status. A coding agent's “pushed” message is not proof that Save pushed. After
84
84
  an uncertain result, inspect the original operation/PR before a deliberate retry;
85
- `published_needs_reconcile` means publication happened and local reconciliation
86
- still needs recovery. Do not republish automatically. Existing **Update this
85
+ `published_needs_reconcile` means the push happened and local reconciliation
86
+ still needs recovery. Do not push again automatically. Existing **Update this
87
87
  session (rebase)** and coding-agent conflict repair apply only when requested.
88
88
 
89
89
  ## Validate, bundle and pin
@@ -189,8 +189,8 @@ own snapshots, and for disabling a release.
189
189
  In supported hosted installations, ask Colleague to admit your exact clean
190
190
  committed snapshot from the authorized authoring session. Then open Learning with
191
191
  **L**; on its **Courses** tab the **Author trial** card shows the snapshot's lesson
192
- and release, and **Resume author trial** opens it in the ordinary lesson reader, the page's **Lesson** tab. This saved trial has isolated progress; it is not an
193
- enabled learner course. Ordinary **Start** still requires a published lesson in
192
+ and release, and **Resume author trial** opens it in the ordinary lesson reader, the page's **Lesson** sheet. This saved trial has isolated progress; it is not an
193
+ enabled learner course. Ordinary **Start lesson** still requires a published lesson in
194
194
  an enabled release. Local validation/bundling alone admits no trial. Do not change
195
195
  a draft's status to bypass that guard or report a trial as published progress.
196
196
 
@@ -198,7 +198,7 @@ Internal snapshot acquisition also retains the authoring session's normal
198
198
  source protections: AI work, pending review or cleanup, and Workspace setup
199
199
  must finish before its committed content can be captured. A closing, renewing
200
200
  or unavailable source is refused. The saved trial control captures no source,
201
- automatically stops no work and does not publish the source.
201
+ automatically stops no work and does not save or push the source.
202
202
 
203
203
  A workspace operator can now provision approved local lesson content through the
204
204
  terminal commands documented in [Local operator provisioning](../training-content.md#local-operator-provisioning).
@@ -1,31 +1,44 @@
1
1
  # The lesson step bar
2
2
 
3
3
  The yellow lesson step bar above the project page plays the current lesson
4
- step: its position, beats, **Step** and **Courses**. The rest of
4
+ step: its position, beats, **Back** and **Next**, and **Courses**. The rest of
5
5
  Learn mode is in [The Learning environment](learning-environment.md).
6
6
 
7
7
  In Learn mode, while your lesson is loaded, a yellow bar above the project page
8
- names the lesson and shows **Step N of M** with the step's title and status.
9
- **Previous step** and **Next step** (arrow buttons) move through the steps.
10
- **Step** (the ≡ button) opens the whole current step right under the bar, in
11
- place, with everything the Lesson tab offers for it: its text, diagram and
12
- **Play**, **Done**, **Mark as done**, its question or **Check now**, **Show me**,
13
- **Teach me** and **Previous step**/**Next step**. It covers the top of the page
14
- (at most about two thirds of the screen, scrolling inside); **Step** again or
15
- Escape closes it, and **Show me** closes it so the place it shows is in view.
16
- This tab remembers whether it is open. To read the step in the page's
17
- **Lesson** tab, select that tab (see [The Lesson tab](learning-environment.md#the-lesson-tab));
18
- the bar has no separate Open button. **Courses**, at its right end (a book icon
19
- on a phone), opens the Courses overlay to choose another lesson. The bar is
20
- always shown in full; it cannot be collapsed or hidden. On a phone the lesson
21
- name is hidden.
8
+ names the lesson and shows **Step N of M** (this step's number among all the
9
+ lesson's steps) with the step's title and status.
10
+
11
+ **Moving through the lesson.** One labelled pair of buttons, with the same
12
+ names for screen readers and the keyboard:
13
+
14
+ - **Back** goes back one part of this step, or into the previous step from its
15
+ first part. It is greyed out at the very start of the lesson.
16
+ - The forward button says exactly what it does: **Next** while this step has
17
+ more parts, **Next step** on its last part (and on a step without parts),
18
+ and **Finish** on the last step once every required step is done (it shows
19
+ the **Lesson finished** screen). On the last step before that there is no
20
+ forward button. There is no second **Next step** button.
21
+
22
+ On a practice project the **Lesson** toggle is in the header beside **Preview**
23
+ | **Dash** (see [The Lesson pane](learning-environment.md#the-lesson-pane)); on
24
+ Management and other screens outside any project it is on the bar, between
25
+ the forward button and **Courses**. Press it to show the lesson (it turns
26
+ yellow with its switch on); press it again to hide it. On a lesson without a
27
+ practice project the lesson is already the whole page, so there is no toggle.
28
+
29
+ Away from the lesson's practice project (for example on Management), the bar
30
+ also offers **Open practice project**, which goes back to that project's
31
+ editor. **Courses**, at its right end (a book icon on a phone), opens the
32
+ Courses overlay to choose another lesson. The bar is always shown in full; it
33
+ cannot be collapsed or hidden. On a phone the lesson name is hidden.
22
34
 
23
35
  ### Steps with beats
24
36
 
25
37
  Some steps walk you through the real page from the bar itself, one short line
26
38
  (a *beat*) at a time, while the lesson stays where it is. The bar then shows
27
- the lesson name, **N/M** (the step) and a dot per beat (the filled dot is the
28
- current one), then the beat's line:
39
+ the lesson name, **Step N of M** and a dot per beat, the parts of this step
40
+ (the filled dot is the current one; hovering the dots says, for example,
41
+ **This step: part 2 of 4**), then the beat's line:
29
42
 
30
43
  - A *show* line rings the place it names (for example the **Preview** tab or the
31
44
  coding chat) and moves on by itself after a few seconds; a thin line under
@@ -50,8 +63,8 @@ current one), then the beat's line:
50
63
  it opens the place (or the file), reveals and focuses the coding chat, opens
51
64
  Courses or Colleague (without asking it anything), reloads the Preview, or
52
65
  sends the line's quoted prompt as your next message in the practice
53
- project's Main chat. That message shows a **Sent by the lesson** chip under
54
- it. On a **Save** line it only points at **Save**: saving stays yours. On a
66
+ project's Main chat (for a team member, on the team AI, with no owner
67
+ approval). That message shows a **Sent by the lesson** chip under it. On a **Save** line it only points at **Save**: saving stays yours. On a
55
68
  line about waiting for the agent, pressing the App's button, minimising
56
69
  Colleague or pressing **L** there is no Do it for me (for **L** it shows
57
70
  where the button is). If it cannot be done here (for example the chat cannot take a
@@ -62,25 +75,25 @@ current one), then the beat's line:
62
75
  **Set up your AI**; see `learning-mode-ui`.
63
76
  - On a step you would finish with **Done**, doing every *do* line of it marks
64
77
  the step done by itself.
65
- - **Back** and **Next** (arrows) move one beat, and into the previous or next
66
- step at either end.
78
+ - **Back** and **Next** move one beat; on the step's last beat the forward
79
+ button reads **Next step** and goes into the next step.
67
80
  - After the last beat the bar shows the step's own control: **Done**, **Mark as
68
81
  done**, **Check my work** (an automatic check, or a review; a check that does
69
- not pass says why under the line) or **Answer in Step** for a question, which opens the
70
- step under the bar. When the step has passed it shows **Next step**. **I'm stuck**
82
+ not pass says why under the line) or **Answer in Lesson** for a question, which shows the
83
+ step in the Lesson pane, beside a quieter **Next step**. **I'm stuck**
71
84
  (on a *do* line, and after the last beat of a step that **Check my work**
72
- decides, until the step passes; also in **Step** beside **Teach me**) opens
85
+ decides, until the step passes; also in the Lesson pane beside **Teach me**) opens
73
86
  Colleague and asks it for help with this step (see `learning-with-colleague`).
74
87
  On a phone a *do* line keeps only **Do it for me** on the bar; **I'm stuck**
75
- is then in **Step**.
88
+ is then in the Lesson pane.
76
89
  A step never moves on by itself.
77
- - **Show me** on such a step (in the bar's step or the Lesson tab) plays its
90
+ - **Show me** on such a step (in the Lesson pane) plays its
78
91
  beats again from the first one.
79
92
 
80
93
  **Check my work on a reviewed step.** Some steps are checked by a review of
81
- your work: the bar's line (and the step under **Step**) shows what the review
82
- looks for. **Check my work** uses your own AI (the Lesson review route in AI
83
- Accounts → Model routing) to look at the changes in your practice project
94
+ your work: the bar's line (and the step in the Lesson pane) shows what the review
95
+ looks for. **Check my work** uses your own AI (the **Explain & check** model in
96
+ AI Accounts → Models) to look at the changes in your practice project
84
97
  (and, when the step says so, your coding chat); the line says **Checking your
85
98
  work with your AI…** for up to about a minute, without a Cancel. **Passed ✓**
86
99
  with the reviewer's comment passes the step for good. **Not yet:** says what
@@ -92,7 +105,8 @@ why, nothing is recorded, and you can press **Check again**. Colleague never
92
105
  runs a review or passes a step for you.
93
106
 
94
107
  This tab remembers the beat and the pause; another tab or device starts the
95
- step at its first beat. On a phone the bar has two lines: the position and arrows above,
96
- the beat's line and its one button below; **Step** and **Courses** show only
97
- their icons, and the open step fills the width. A step without beats shows its title
98
- and status as before, and **Show me** when it can point at a place.
108
+ step at its first beat. On a phone the bar has three tidy rows: the position
109
+ with the icon buttons (**Courses**, **Open practice project** and, off a
110
+ project, **Lesson**), then the beat's line and its one button, then **Back**
111
+ at the left and the forward button at the right. A step without beats shows
112
+ its title and status as before, and **Show me** when it can point at a place.
@@ -0,0 +1,150 @@
1
+ # Main chat messages that wait for the owner's approval
2
+
3
+ A project's Main chat always runs on the workspace owner's AI. When a team
4
+ member writes in Main chat, the message does not reach the assistant straight
5
+ away: it waits in **Messages for approval** until the owner approves, edits or
6
+ declines it. The owner's own messages are sent as usual and never wait.
7
+
8
+ Temporary chats, Colleague and the other assistants a member uses run on that
9
+ member's own team setup; only Main chat waits for approval.
10
+
11
+ A team member's own lesson is the exception. A practice project is private to
12
+ its learner, so its Main chat runs on the team setup and the member's messages
13
+ (and the lesson's **Do it for me** prompts) are sent straight away, with no
14
+ approval. The composer then reads "Message your lesson's AI — *model* (team
15
+ AI)". See **Lessons** in [Team AI access](team-ai-access.md). The owner's own
16
+ lessons are unchanged. Messages sent by
17
+ another session (project messages) are not person requests and never wait.
18
+
19
+ ## Send a message as a team member
20
+
21
+ 1. Open the project's coding session. Main chat shows the hint
22
+ "Main chat runs on {owner}'s AI. {owner} approves each message." and the
23
+ placeholder "Message main chat — {owner} approves before it's sent".
24
+ 2. Type the message and choose **Send for approval**. The button keeps that
25
+ label while the assistant is working; members have no separate Steer button.
26
+ 3. A card appears directly above the composer: **You** with the time, the line
27
+ "Waiting for {owner} to approve", the message and a **Waiting** chip.
28
+
29
+ Messages for approval are text only: the member composer has no attachment
30
+ button. A request that carries attachments is refused with "Messages for
31
+ approval are text only. Remove the attachments and send again."
32
+
33
+ You can have up to 5 messages waiting in one session. A sixth is refused with
34
+ "You have 5 messages waiting. Wait for {owner} to review them, or withdraw one."
35
+
36
+ If the assistant was working when you sent the message, the card adds: "Sent
37
+ while the assistant was working. It joins the current turn if it's still running
38
+ when {owner} approves." Otherwise the approved message starts a new request.
39
+
40
+ ### Change or withdraw a waiting message
41
+
42
+ - **Edit** replaces the text with a box. Change it and choose **Save**, or
43
+ **Cancel** to keep the original. An empty text is refused with "Write a
44
+ message, or withdraw it."
45
+ - **Withdraw** removes the message from the queue. It stays as the one-line row
46
+ "Withdrawn by you".
47
+
48
+ Only the sender can edit or withdraw, and only while the message is waiting.
49
+ If the owner has already decided, the change fails with "This message was
50
+ already sent." (or declined or withdrawn); if it is being sent, with "This
51
+ message is being sent."
52
+
53
+ ### What you see after the owner decides
54
+
55
+ While the chat is open you get a snackbar: "{owner} approved and sent your
56
+ message" or "{owner} declined your message". The card becomes a one-line row:
57
+
58
+ - **Sent by {owner} · time**, with "· Edited by {owner}" when the owner changed
59
+ the text first, and **Show in chat**, which scrolls the conversation to the
60
+ delivered message.
61
+ - **Declined by {owner} · time**, with the owner's note quoted underneath when
62
+ they wrote one.
63
+
64
+ Under each row is the start of the message on one line. On a declined or
65
+ withdrawn row, select it to show the whole text, to copy, rework and send it
66
+ again.
67
+
68
+ The delivered message appears in Main chat as an ordinary user message with the
69
+ line "{sender} · approved by {owner}" under its text. The assistant's reply is
70
+ visible to everyone with access to the project.
71
+
72
+ Decided rows stay for 24 hours; at most three show at once and the rest are
73
+ behind **Show earlier (n)**.
74
+
75
+ ## Review messages as the owner
76
+
77
+ New messages announce themselves in several places:
78
+
79
+ - In any open tab where you have that project's Main chat open, a snackbar
80
+ "{sender} sent a message for your approval in {project}" with **Review**,
81
+ which selects the session and scrolls to the waiting messages.
82
+ - A **{n} waiting** chip in the Main chat header; choose it to reveal the queue.
83
+ - The browser tab title starts with "({n}) " while any messages wait.
84
+ - Project lists that support it show a **{n} waiting** badge on the project.
85
+
86
+ Each waiting card shows "{sender} wants to send · time", the message and these
87
+ actions:
88
+
89
+ - **Approve & send** sends the message unchanged.
90
+ - **Edit then send** opens a box with the message. Change it and choose **Send**,
91
+ or **Cancel**. The sender sees "Edited by {owner}" on the Sent row.
92
+ - **Decline** opens "Add a note for {sender} (optional)", up to 500 characters.
93
+ Choose **Decline** to confirm, or **Cancel**.
94
+
95
+ While your approval is being delivered the chip reads **Sending…** and the
96
+ buttons are disabled. The owner cannot edit or withdraw a member's message other than by
97
+ approving it with edited text.
98
+
99
+ ### How an approved message is delivered
100
+
101
+ Approving sends the message exactly as if you had sent it yourself, on your AI:
102
+
103
+ - No turn running: it starts a new request (in Auto, the Router classifies it).
104
+ - A turn is running that accepts guidance (including Auto working or an active
105
+ goal): it joins that turn as guidance.
106
+ - A turn is running that cannot take guidance, a delivery is uncertain, or
107
+ recovery is in progress: the send fails, the message goes back to **Waiting**
108
+ and the card shows "Couldn't send: {error} Try again." Choose
109
+ **Approve & send** again when the turn finishes.
110
+
111
+ If a page reload interrupts a send, the card may stay on **Sending…** with
112
+ **Send again**. Sending again reuses the same delivery, so the message is never
113
+ delivered twice. Its text can't be edited while it is sending; an edited text
114
+ is always a new delivery.
115
+
116
+ If the sender edited the message after you opened it, your action fails with
117
+ "{sender} changed this message. Review it again." Read the new text and decide
118
+ again.
119
+
120
+ ## Other team members
121
+
122
+ Members who did not send a message see the same cards, headed "{sender}", with
123
+ "Waiting for {owner} to approve" and no actions.
124
+
125
+ ## Phone
126
+
127
+ On a phone the queue collapses to a bar above the composer, "{n} messages
128
+ waiting for approval" (or "Messages for approval" when only decided rows
129
+ remain). Tap it to open the **Messages for approval** sheet with the same cards;
130
+ buttons stack full width and Edit or Decline open inside the sheet. Close the
131
+ sheet with its close button or by tapping outside it.
132
+
133
+ ## What Colleague can do
134
+
135
+ Colleague can explain all of this. When a team member asks Colleague to send a
136
+ message to Main chat, it goes through the same queue and waits for the owner;
137
+ Colleague must say so rather than claim it was delivered. In the member's own
138
+ lesson there is no queue: the message is sent to the lesson's team AI. Approving, editing,
139
+ declining and withdrawing are human-only: Colleague cannot do them, so it should
140
+ point the person to the buttons above.
141
+
142
+ ## Errors
143
+
144
+ | Message | Meaning |
145
+ |---|---|
146
+ | Only the workspace owner can approve messages. | A member tried to approve or decline. |
147
+ | Only {sender} can change this message. | Someone else tried to edit or withdraw it. |
148
+ | {sender} changed this message. Review it again. | The text changed since you looked. |
149
+ | This message was already sent. / declined. / withdrawn. | It has been decided. |
150
+ | This message is being sent. | Delivery is in progress; wait for it. |
@@ -49,7 +49,11 @@ matching managed runtime. A version error is a test-runtime blocker; interactive
49
49
  checks can use the existing managed Preview browser. Report the exact required
50
50
  version to the platform operator instead of installing a separate browser.
51
51
  On a computer without managed browser runtimes, the agent runs the project's own
52
- Playwright (`npx playwright test`). If that browser is missing, the agent reports
52
+ Playwright (`npx playwright test`). Interactive Preview checks (screenshot, eval)
53
+ use the project's own Playwright, or else the `playwright` command installed on
54
+ this computer, so a project in another language needs no Playwright package. If
55
+ neither exists, the agent asks you to install Playwright on the computer rather
56
+ than adding it to a non-Node.js project. If that browser is missing, the agent reports
53
57
  it and asks you before running `npx playwright install chromium`; installing it
54
58
  is your decision.
55
59
 
@@ -3,7 +3,7 @@
3
3
  This continues [Previewing a web application](preview.md).
4
4
 
5
5
  In an empty project's **Preview**, choose **Use this starter** on the desired
6
- Basic, Database, or Accounts app. On mobile, open **Show project** first. Import
6
+ starter, such as Basic app, App with no users, but a database, or App with users. On mobile, open **Show project** first. Import
7
7
  adds source to this session; review it and use **Save** to keep it in the project.
8
8
  Setup and running the app are separate operations.
9
9
 
@@ -19,6 +19,15 @@ apply one. After you choose a starter and accept its offer or directly request
19
19
  it, Colleague can use the existing onboarding action and recheck the result.
20
20
  A successful import does not mean dependencies are prepared or Preview is running.
21
21
 
22
+ When a starter needs a resource such as its database, Preview waits for it and
23
+ says so instead of starting. Where the host supplies that resource (hosted
24
+ Vibe64's managed databases), Preview says "Vibe64 is still setting up this
25
+ app's database" until workspace setup finishes; press **Check again** then.
26
+ Where you supply it, Preview names the variables to set, for example "set
27
+ DB_DATABASE in Env (in Dash, under Development)": open **Dash → Env**, choose
28
+ **Development**, add the value (see [Development Env](development-env.md)) and
29
+ press **Check again**.
30
+
22
31
  For recurring **Preview could not load an application resource** errors, enable
23
32
  Preview diagnostics in the affected Studio browser before reproducing: add
24
33
  `vibe64_preview_debug=1` to the page URL, or set
@@ -20,7 +20,16 @@ onboarding does not offer PostgreSQL variants yet (for example
20
20
  `django-postgresql`); it offers the MySQL or SQLite variant instead.
21
21
 
22
22
  If **Preparing workspace** fails, expand its output, correct the reported cause
23
- and choose **Retry**. If Preview cannot start, use **Show run output**. On mobile,
23
+ and choose **Retry**. On your own computer, the panel also lists the tools that
24
+ step uses: each one that runs shows its version and where it was found; one that
25
+ is missing or didn't start shows one sentence, the install command for this
26
+ computer with a copy button, **Check again** and **Other ways**. Language
27
+ runtimes install with mise (`mise use -g ruby@3.4`, `mise use -g python@3.13`,
28
+ `mise use -g java@temurin-25`), which needs no administrator password; build
29
+ tools and libraries for native packages (`cpp`) use `sudo apt install …` on
30
+ Debian/Ubuntu or `brew install …` on macOS. **Other ways** opens the setup
31
+ guide for this computer ([Linux](set-up-linux.md), including Fedora and Arch,
32
+ or [macOS](set-up-macos.md)), which also explains adding mise to your shell. Coming back to the tab checks again. If Preview cannot start, use **Show run output**. On mobile,
24
33
  open **Show project** first. A missing runtime needs installation by the host
25
34
  administrator; changing the declaration to `shell` does not supply the missing
26
35
  tool. Standalone users install/configure the missing tool in their own environment
@@ -31,6 +40,11 @@ interpreter installed does not prove that the project consumes the selected
31
40
  library: the project's declared verification must demonstrate that. Normal
32
41
  release inputs and unrelated sessions keep their own source selection.
33
42
 
43
+ When a runtime is missing, the coding agent stops and says which one, pointing
44
+ to the tool row's command. It never runs `sudo` and never installs a runtime into
45
+ the project folder (for example with `mise use` without `-g`).
46
+
34
47
  Colleague can explain preparation errors and offer its supported status/retry
35
- actions. These instructions do not give it shell access or permission to install
48
+ actions. On your own computer it can also check whether a named tool runs now,
49
+ for example after you ran an install command. These instructions do not give it shell access or permission to install
36
50
  host software. The coding agent can repair project commands after being asked.
@@ -19,7 +19,7 @@ Gradle, NuGet (.NET) or custom; it is independent of the relationship.
19
19
  Custom requires a Preparation script path relative to this project, with its
20
20
  runtime declared in Stack. Every other type disables and clears the script; the
21
21
  project's own declared Verify command, not Vibe64, treats that source.
22
- Use **Save connected projects** for the list; ordinary project Save publishes
22
+ Use **Save connected projects** for the list; ordinary project Save pushes
23
23
  that source edit. See **Configure connected projects** for access and recovery.
24
24
 
25
25
  Hosted repository settings can also specify whether GitHub Save permits direct
@@ -34,8 +34,9 @@ which should be the default. Supply an email, login or user ID, not a password.
34
34
  The agent should reuse answers you already gave and wait for your choices.
35
35
  Choosing a name such as “admin” does not grant that account administrator rights.
36
36
 
37
- The coding agent can implement the application's Preview identity adapter after
38
- you accept that work. It can also save the named accounts you give or confirm
37
+ An application with login accounts gets a Preview identity adapter by
38
+ default: when it is missing, the coding agent sets it up as part of the work
39
+ rather than asking first. It can also save the named accounts you give or confirm
39
40
  (for example `admin` and `user` with their emails) and then verify each in Preview;
40
41
  it never creates accounts or changes roles for this. To configure them yourself,
41
42
  open **Dashboard > App access** and use **Managed app access > Add identity**. Enter **Name**, **App identifier**
@@ -55,15 +56,24 @@ work. Public applications and non-web projects do not need preview accounts.
55
56
  ## New project
56
57
 
57
58
  1. Open the project and create or select its coding session. At **What would you
58
- like to build with?**, review the available starter cards. The installed JSKIT
59
- starters include **JSKIT · Public app** (no accounts or database) and
60
- **JSKIT · Accounts and database** (sign-up, login and MySQL persistence).
61
- Available starters depend on the installation; do not assume an absent card exists.
59
+ like to build with?**, review the available starter cards, grouped by
60
+ technology. The official catalogue lists JSKIT first: **JSKIT · Basic app**
61
+ (no accounts or database), **JSKIT · App with no users, but a database** (MySQL) and
62
+ **JSKIT · App with users** (sign-up, login and MySQL). Then one **Basic app**
63
+ each for Django, Rails, Spring Boot, Express and Next.js: a small notes form
64
+ saved to SQLite (MySQL/MariaDB for Spring Boot), with ready tests. Only the
65
+ Rails starter has sign-in, with a seeded development account
66
+ (`developer@example.com` / `developer`); for the others, ask the agent to add
67
+ accounts. Available starters depend on the installation; do not assume an
68
+ absent card exists.
62
69
  2. Choose **Use this starter →** on the intended card only when it matches the
63
70
  product you want. Preparation adds it to this session; use the session's
64
71
  **Save** control to keep the work in the project. A failed application reports
65
72
  its error and preserves existing work.
66
- 3. Alternatively, choose **Start through conversation** to open Temporary AI for
73
+ 3. You can also describe the app directly in the session's main chat. In an
74
+ empty folder that was never set up, the coding agent first initializes Genesis,
75
+ then proposes a Blueprint and the matching Stack components for your answer.
76
+ 4. Alternatively, choose **Start through conversation** to open Temporary AI for
67
77
  project creation. Discuss what you want, who uses it and its first useful
68
78
  outcome before choosing technology. If no starters are configured, this
69
79
  conversation route is still offered when a coding assistant is available.