vibe64 0.1.35 → 0.1.37

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 (210) hide show
  1. package/bin/run.js +1984 -1685
  2. package/bin/server.js +158 -111
  3. package/bin/upgrade-state.js +5754 -5522
  4. package/dist/assets/GithubBrowserTabs-BykoCFfz.js +1 -0
  5. package/dist/assets/{StudioErrorNotice-sQfmeR-z.js → StudioErrorNotice-CSrUw1QV.js} +1 -1
  6. package/dist/assets/{Vibe64AsyncModuleState-Dx7YKRPp.js → Vibe64AsyncModuleState-Do9EqX3S.js} +1 -1
  7. package/dist/assets/Vibe64AuthSettingsButton-CIwtchKm.js +5 -0
  8. package/dist/assets/Vibe64AuthSettingsButton-M44SSmZ9.css +1 -0
  9. package/dist/assets/{Vibe64DashboardBackButton-yE6cyYg2.js → Vibe64DashboardBackButton-BH_8j_VR.js} +1 -1
  10. package/dist/assets/Vibe64DashboardShell-DXVDJUAY.js +1 -0
  11. package/dist/assets/{Vibe64DashboardShell-MBkUHjs-.css → Vibe64DashboardShell-De2mbdpI.css} +1 -1
  12. package/dist/assets/{Vibe64DatabaseWorkspace-BONJdxBS.js → Vibe64DatabaseWorkspace-Ca8IHSRq.js} +3 -3
  13. package/dist/assets/{Vibe64DatabaseWorkspace-CR4pzzcf.css → Vibe64DatabaseWorkspace-DPDMxhAW.css} +1 -1
  14. package/dist/assets/Vibe64OutputControls-Co5YzwcK.css +1 -0
  15. package/dist/assets/Vibe64OutputControls-DngQNTTt.js +8 -0
  16. package/dist/assets/{Vibe64RepositoryWorkspace-CVHcT93M.css → Vibe64RepositoryWorkspace-Agyt4O-V.css} +1 -1
  17. package/dist/assets/{Vibe64RepositoryWorkspace-ByQlZbyO.js → Vibe64RepositoryWorkspace-BfsZozSJ.js} +2 -2
  18. package/dist/assets/Vibe64SessionFiles-Bl8wJ5Sk.css +1 -0
  19. package/dist/assets/Vibe64SessionFiles-n87RqqY6.js +41 -0
  20. package/dist/assets/{Vibe64TemporaryAiFixAction-BGlcrq4d.js → Vibe64TemporaryAiFixAction-BiuIE9mC.js} +1 -1
  21. package/dist/assets/{Vibe64UiStoryboardView-Brlwdvqi.js → Vibe64UiStoryboardView-BhKRpL0N.js} +1 -1
  22. package/dist/assets/{Vibe64UnavailableSessions-zwlWlcZD.js → Vibe64UnavailableSessions-Ca5nC7KH.js} +1 -1
  23. package/dist/assets/{_sessionId_-CvOkQbVy.js → _sessionId_-B_TTRB4c.js} +1 -1
  24. package/dist/assets/{_sessionTool_-Dwod5ns9.js → _sessionTool_-1V-z6Pbp.js} +1 -1
  25. package/dist/assets/_slug_-Buxpw0T4.css +1 -0
  26. package/dist/assets/_slug_-DsqilUs_.js +24 -0
  27. package/dist/assets/{access-BVu5XYm2.js → access-tl4ht_d8.js} +1 -1
  28. package/dist/assets/app-CZu7oxUO.css +1 -0
  29. package/dist/assets/app-DT4_MliP.js +1 -0
  30. package/dist/assets/{assistantRouting-CwbwfkwB.js → assistantRouting-D4XpXcEf.js} +1 -1
  31. package/dist/assets/{changes-olY8cnFK.js → changes-DZWHZguL.js} +1 -1
  32. package/dist/assets/client-BWV84wi2.js +2 -0
  33. package/dist/assets/client-DGrP-2AJ.css +1 -0
  34. package/dist/assets/conversation-B90ERX9h.js +17 -0
  35. package/dist/assets/conversation-vxJGwmtW.css +1 -0
  36. package/dist/assets/{dashboard-BnXD-H4R.js → dashboard-iREwhGqv.js} +1 -1
  37. package/dist/assets/definitions-CNu5E87y.js +1 -0
  38. package/dist/assets/{env-DJhnLOH7.css → env-BzRtyO0w.css} +1 -1
  39. package/dist/assets/env-D5KpTEw7.js +1 -0
  40. package/dist/assets/health-BJvooRnJ.css +1 -0
  41. package/dist/assets/health-BhoO1d4h.js +1 -0
  42. package/dist/assets/{history-BxlpB-YH.js → history-DVURy45X.js} +1 -1
  43. package/dist/assets/{incoming-BOxRVlOM.js → incoming-DzADFGqp.js} +1 -1
  44. package/dist/assets/index-GBRpNZLy.js +138 -0
  45. package/dist/assets/index-irlMYzLh.css +1 -0
  46. package/dist/assets/{integrations-BFltGDVI.js → integrations-Dy5jIiJ5.js} +2 -2
  47. package/dist/assets/issues-lh7R775d.js +1 -0
  48. package/dist/assets/learning-_O1PEaam.js +1 -0
  49. package/dist/assets/mdi-CG9pWOSj.js +1 -0
  50. package/dist/assets/placement-BF-zIEhA.js +1 -0
  51. package/dist/assets/pull-requests-ByE-Dvk7.js +1 -0
  52. package/dist/assets/{repository-JWLVST3D.js → repository-BUfUAyS9.js} +1 -1
  53. package/dist/assets/roboto-latin-wght-normal-ccAYIvAh.woff2 +0 -0
  54. package/dist/assets/{session-C5Nj8Dlq.js → session-BdhKrcX4.js} +1 -1
  55. package/dist/assets/settings-CzhIcn9K.js +1 -0
  56. package/dist/assets/shared-DpMvYJO3.js +2 -0
  57. package/dist/assets/studioGateApi-DcCqiD9V.js +1 -0
  58. package/dist/assets/studioUrls-DmMMIScP.js +1 -0
  59. package/dist/assets/useArchivedVibe64Sessions-CLHJOyeW.js +1 -0
  60. package/dist/assets/useCommand-Bqxb-naz.js +1 -0
  61. package/dist/assets/useEndpointResource-DWoQ2keu.js +1 -0
  62. package/dist/assets/useRealtimeEvent-Bwapstla.js +1 -0
  63. package/dist/assets/{useUiFeedback-0FqKuZRP.js → useUiFeedback-BPBF_0bp.js} +1 -1
  64. package/dist/assets/useVibe64ConversationLog-B4JgmxUf.js +1 -0
  65. package/dist/assets/useVibe64DatabaseTools-4o6S8eXq.js +1 -0
  66. package/dist/assets/useVibe64Learning-DyqXkpLw.js +1 -0
  67. package/dist/assets/useVibe64ProjectScope-Bp1ImZlz.js +1 -0
  68. package/dist/assets/useVibe64SessionData-YhhE_5pC.js +1 -0
  69. package/dist/assets/useVibe64SessionSelection-CuZCzAcY.js +1 -0
  70. package/dist/assets/useVibe64SystemGraph-B4RmsC9Y.js +1 -0
  71. package/dist/assets/{useVibe64Terminal-BPnN25WH.js → useVibe64Terminal-Cg3idMcy.js} +1 -1
  72. package/dist/assets/vibe64AssistantHost-CP6oxv5b.js +1 -0
  73. package/dist/assets/{vibe64SessionFocus-kqPOPaOH.js → vibe64SessionFocus-Cz5Vq1re.js} +1 -1
  74. package/dist/assets/{vibe64SessionInfo-BHxtTrLX.js → vibe64SessionInfo-BuBUdL-e.js} +1 -1
  75. package/dist/assets/{vibe64SessionPanelModel-BMf64fv7.js → vibe64SessionPanelModel-DDorOuiL.js} +1 -1
  76. package/dist/assets/{vibe64SessionToolDefinitions-NfLd1HZI.js → vibe64SessionToolDefinitions-BJaJH5LR.js} +1 -1
  77. package/dist/index.html +21 -20
  78. package/docs/colleague-usage/account-profile-and-appearance.md +8 -2
  79. package/docs/colleague-usage/ai-accounts-and-routing.md +127 -16
  80. package/docs/colleague-usage/ai-onboarding.md +229 -0
  81. package/docs/colleague-usage/coding-agent-goal-pause.md +5 -5
  82. package/docs/colleague-usage/coding-agents.md +21 -0
  83. package/docs/colleague-usage/colleague-watches.md +4 -23
  84. package/docs/colleague-usage/colleague.md +10 -2
  85. package/docs/colleague-usage/connected-projects.md +10 -2
  86. package/docs/colleague-usage/conversation-context.md +2 -0
  87. package/docs/colleague-usage/dashboard-navigation.md +19 -27
  88. package/docs/colleague-usage/database.md +6 -11
  89. package/docs/colleague-usage/development-copies.md +2 -1
  90. package/docs/colleague-usage/development-env.md +6 -0
  91. package/docs/colleague-usage/github-work.md +9 -0
  92. package/docs/colleague-usage/health-checks.md +11 -5
  93. package/docs/colleague-usage/integrations.md +3 -1
  94. package/docs/colleague-usage/learning-code-questions.md +23 -51
  95. package/docs/colleague-usage/learning-course-catalogue.md +8 -6
  96. package/docs/colleague-usage/learning-environment.md +337 -0
  97. package/docs/colleague-usage/learning-history.md +70 -101
  98. package/docs/colleague-usage/learning-mode-ui.md +129 -214
  99. package/docs/colleague-usage/learning-practice-projects.md +178 -78
  100. package/docs/colleague-usage/learning-teacher-guide.md +48 -26
  101. package/docs/colleague-usage/learning-with-colleague.md +195 -216
  102. package/docs/colleague-usage/lesson-authoring.md +41 -24
  103. package/docs/colleague-usage/lesson-step-bar.md +99 -0
  104. package/docs/colleague-usage/managed-app-access.md +7 -0
  105. package/docs/colleague-usage/message-delivery-recovery.md +7 -6
  106. package/docs/colleague-usage/preview-browser-checks.md +9 -1
  107. package/docs/colleague-usage/preview-starting-application.md +0 -1
  108. package/docs/colleague-usage/preview.md +12 -1
  109. package/docs/colleague-usage/project-messages.md +2 -2
  110. package/docs/colleague-usage/project-setup.md +9 -2
  111. package/docs/colleague-usage/running-vibe64-on-your-computer.md +61 -0
  112. package/docs/colleague-usage/sessions.md +25 -33
  113. package/docs/colleague-usage/teaching-content.md +14 -40
  114. package/docs/colleague-usage/temporary-chats.md +23 -2
  115. package/docs/colleague-usage/voice-chat.md +5 -10
  116. package/docs/colleague-usage/voice-face-and-speaking-voice.md +6 -8
  117. package/docs/colleague-usage/voice-recovery.md +3 -2
  118. package/docs/templates/learn-topic/README.md +6 -6
  119. package/docs/templates/learn-topic/training/lessons/TOPIC-01/lesson.json +28 -7
  120. package/docs/templates/learn-topic/training/lessons/TOPIC-01/notes.md +19 -0
  121. package/docs/templates/learn-topic/training/lessons/TOPIC-01/steps/check-understanding.md +3 -0
  122. package/docs/templates/learn-topic/training/lessons/TOPIC-01/steps/explain-idea.md +3 -0
  123. package/docs/templates/learn-topic/training/lessons/TOPIC-01/steps/try-it.md +3 -0
  124. package/docs/templates/learn-topic/training/outline.md +1 -1
  125. package/docs/training-content.md +319 -66
  126. package/node_modules/@jskit-ai/assistant-core/package.json +1 -1
  127. package/node_modules/@jskit-ai/assistant-runtime/package.json +1 -1
  128. package/node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/PATTERN.md +3 -2
  129. package/node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/example/integrations.json +3 -2
  130. package/node_modules/@jskit-ai/assistant-voice/package.json +1 -1
  131. package/node_modules/@jskit-ai/connectors-catalog/package.json +1 -1
  132. package/node_modules/@jskit-ai/connectors-catalog/patterns/ai-connections/PATTERN.md +4 -3
  133. package/node_modules/@jskit-ai/connectors-catalog/src/shared/ai-models.json +0 -1
  134. package/node_modules/@local/vibe64-accounts/package.json +1 -0
  135. package/node_modules/@local/vibe64-colleague/package.json +2 -1
  136. package/node_modules/@local/vibe64-core/package.json +3 -0
  137. package/node_modules/@local/vibe64-execution/package.json +1 -0
  138. package/node_modules/@local/vibe64-execution/src/host/execHelper.js +171 -174
  139. package/node_modules/@local/vibe64-execution/src/server/engines/stdioBridge.js +9 -9
  140. package/node_modules/@local/vibe64-execution/src/server/hostProfile.js +12 -0
  141. package/node_modules/@local/vibe64-genesis/README.md +10 -37
  142. package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +790 -779
  143. package/node_modules/@local/vibe64-genesis/package.json +1 -0
  144. package/node_modules/@local/vibe64-genesis/src/server/agentSpecs.js +255 -0
  145. package/node_modules/@local/vibe64-genesis/src/server/index.js +473 -450
  146. package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +148 -148
  147. package/node_modules/@local/vibe64-project/package.json +2 -1
  148. package/node_modules/@local/vibe64-runtime/package.json +1 -2
  149. package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +526 -512
  150. package/node_modules/@local/vibe64-runtime/src/shared/assistantRoutingScores.json +0 -1
  151. package/node_modules/@local/vibe64-source-editor/package.json +1 -0
  152. package/node_modules/@local/vibe64-terminals/package.json +2 -0
  153. package/node_modules/@local/vibe64-terminals/src/server/opencodeSessionEnvironmentPlugin.js +129 -131
  154. package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1508 -1456
  155. package/node_modules/@local/vibe64-training/package.json +16 -27
  156. package/package.json +7 -7
  157. package/server.bundle.mjs +41339 -41635
  158. package/dist/assets/GithubBrowserTabs-DO5PHon-.js +0 -1
  159. package/dist/assets/GithubMarkdown-BQ6MfCDJ.js +0 -3
  160. package/dist/assets/GithubMarkdown-U7-j-qNI.css +0 -1
  161. package/dist/assets/Vibe64DashboardShell-CuCVMhOc.js +0 -1
  162. package/dist/assets/Vibe64OutputControls-DAAmA09l.js +0 -8
  163. package/dist/assets/Vibe64OutputControls-DPBsyDZM.css +0 -1
  164. package/dist/assets/Vibe64SessionFiles-B0u9HKdF.js +0 -107
  165. package/dist/assets/Vibe64SessionFiles-NjOMVwPR.css +0 -1
  166. package/dist/assets/_slug_-B31c15cc.css +0 -1
  167. package/dist/assets/_slug_-Dy35qLo1.js +0 -1
  168. package/dist/assets/app-DRXCcv05.css +0 -1
  169. package/dist/assets/app-zt7HwQKT.js +0 -1
  170. package/dist/assets/client-BrV4QPwG.js +0 -2
  171. package/dist/assets/client-C1bwIlu6.css +0 -1
  172. package/dist/assets/definitions-DaOPIkyB.js +0 -1
  173. package/dist/assets/env-DN0vW4EI.js +0 -1
  174. package/dist/assets/health-7oIQODer.css +0 -1
  175. package/dist/assets/health-Z6m96GDr.js +0 -1
  176. package/dist/assets/index-BUq-MczL.js +0 -86
  177. package/dist/assets/index-DtmBqE3h.css +0 -1
  178. package/dist/assets/issues-1iS5zoed.js +0 -1
  179. package/dist/assets/layout-BkWVNT37.js +0 -1
  180. package/dist/assets/mdi-C54lQ0i_.js +0 -1
  181. package/dist/assets/placement-DLsU3pCW.js +0 -1
  182. package/dist/assets/pull-requests-BJOwNL4k.js +0 -1
  183. package/dist/assets/settings-c273Ikrm.js +0 -1
  184. package/dist/assets/shared-YZb7ocaK.js +0 -2
  185. package/dist/assets/studioGateApi-DhA9IJGZ.js +0 -1
  186. package/dist/assets/studioUrls-Dj8rXeXO.js +0 -1
  187. package/dist/assets/useArchivedVibe64Sessions-CVZx2Rtm.js +0 -1
  188. package/dist/assets/useCommand-DWuxfAV0.js +0 -1
  189. package/dist/assets/useEndpointResource-MWVNfmMa.js +0 -1
  190. package/dist/assets/useVibe64ConversationLog-8cKh1eDm.js +0 -1
  191. package/dist/assets/useVibe64DatabaseTools-BcRG1s3i.js +0 -1
  192. package/dist/assets/useVibe64LearningMode-Bl0dGdCh.js +0 -28
  193. package/dist/assets/useVibe64LearningMode-C3PcXdVg.css +0 -1
  194. package/dist/assets/useVibe64ProjectScope-DOEVkBqX.js +0 -1
  195. package/dist/assets/useVibe64SessionData-DFTyLzci.js +0 -1
  196. package/dist/assets/useVibe64SessionSelection-j9lsllx4.js +0 -1
  197. package/dist/assets/useVibe64SystemGraph-tNkIwSBQ.js +0 -1
  198. package/dist/assets/vibe64AssistantHost-DdE_-lZF.js +0 -1
  199. package/dist/assets/vibe64LessonDashboard-DlKYjisq.js +0 -1
  200. package/dist/assets/vibe64ProjectScope.local-DqT6e5un.js +0 -1
  201. package/docs/colleague-usage/learning-chat-retention.md +0 -74
  202. package/docs/colleague-usage/learning-diagrams-and-voice.md +0 -97
  203. package/docs/colleague-usage/learning-lesson-watch.md +0 -95
  204. package/docs/colleague-usage/learning-native-session.md +0 -206
  205. package/docs/colleague-usage/learning-practical-exercises.md +0 -71
  206. package/docs/colleague-usage/learning-practical-gestures.md +0 -48
  207. package/docs/colleague-usage/learning-session-creation.md +0 -95
  208. package/docs/colleague-usage/lesson-practical-assessment.md +0 -54
  209. package/docs/colleague-usage/preview-lesson-presentation.md +0 -56
  210. package/docs/templates/learn-topic/training/lessons/TOPIC-01/lesson.md +0 -44
@@ -0,0 +1,99 @@
1
+ # The lesson step bar
2
+
3
+ The yellow lesson step bar above the project page plays the current lesson
4
+ step: its position, beats, **Step**, **Open** and **Courses**. The rest of
5
+ Learn mode is in [The Learning environment](learning-environment.md).
6
+
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. **Open** shows the step in the page's
17
+ **Lesson** tab (see [The Lesson tab](learning-environment.md#the-lesson-tab)); **Open** is hidden while the Lesson tab is showing. **Courses**, at its right end (a book icon
18
+ on a phone), opens the Courses overlay to choose another lesson; it stays
19
+ there when the bar is collapsed. The chevron at its left collapses it to one
20
+ line (**Hide the lesson step**) and expands it again (**Show the lesson step**);
21
+ this tab remembers the choice. On a phone the lesson name is hidden, and
22
+ **Open** shows the project side of the page (instead of the chat) on the Lesson
23
+ tab, also when the page is already on the Lesson tab, for example after
24
+ pressing **L** twice or **Show chat**.
25
+
26
+ ### Steps with beats
27
+
28
+ Some steps walk you through the real page from the bar itself, one short line
29
+ (a *beat*) at a time, while the lesson stays where it is. The bar then shows
30
+ the lesson name, **N/M** (the step) and a dot per beat (the filled dot is the
31
+ current one), then the beat's line:
32
+
33
+ - A *show* line rings the place it names (for example the **Preview** tab or the
34
+ coding chat) and moves on by itself after a few seconds; a thin line under
35
+ the bar shows the time left. **Pause** (and **Play**) stops and resumes it;
36
+ it also waits while your pointer or keyboard focus is on the bar, while
37
+ Courses is open, while the bar is collapsed or the tab is hidden. With
38
+ reduced motion turned on in your system it never moves by itself: press
39
+ **Next**.
40
+ - A *do* line waits for you to do what it says, in this lesson's practice
41
+ project: be at a place (for example open **Files**), send a message in the
42
+ coding chat, wait for the agent to finish, open a file, press the practice
43
+ App's button, open or minimise Colleague, press **Save** or **Reload
44
+ preview**, or press **L** (it counts once you are back in Learn). When the
45
+ page sees you do it, the line says **✓ Done.** (or **✓ You're already here.**
46
+ when you already are) and the next beat plays after a moment. **Next** skips
47
+ it. Only what you do after the line appears counts.
48
+ - **Do it for me** on a *do* line does it through the page's own controls:
49
+ it opens the place (or the file), reveals and focuses the coding chat, opens
50
+ Courses or Colleague (without asking it anything), reloads the Preview, or
51
+ sends the line's quoted prompt as your next message in the practice
52
+ project's Main chat. That message shows a **Sent by the lesson** chip under
53
+ it. On a **Save** line it only points at **Save**: saving stays yours. On a
54
+ line about waiting for the agent, pressing the App's button, minimising
55
+ Colleague or pressing **L** there is no Do it for me (for **L** it shows
56
+ where the button is). If it cannot be done here (for example the chat cannot take a
57
+ message now), the bar says so; do it yourself or press **Next**, or, with
58
+ no AI connected, **Set up your AI**.
59
+ - While the lesson waits for your AI (its practice project could not be
60
+ prepared without one), the bar plays no beats and says so instead, with
61
+ **Set up your AI**; see `learning-mode-ui`.
62
+ - On a step you would finish with **Done**, doing every *do* line of it marks
63
+ the step done by itself.
64
+ - **Back** and **Next** (arrows) move one beat, and into the previous or next
65
+ step at either end.
66
+ - After the last beat the bar shows the step's own control: **Done**, **Mark as
67
+ done**, **Check my work** (an automatic check, or a review; a check that does
68
+ not pass says why under the line) or **Answer in Step** for a question, which opens the
69
+ step under the bar. When the step has passed it shows **Next step**. **I'm stuck**
70
+ (on a *do* line, and after the last beat of a step that **Check my work**
71
+ decides, until the step passes; also in **Step** beside **Teach me**) opens
72
+ Colleague and asks it for help with this step (see `learning-with-colleague`).
73
+ On a phone a *do* line keeps only **Do it for me** on the bar; **I'm stuck**
74
+ is then in **Step**.
75
+ A step never moves on by itself.
76
+ - **Show me** on such a step (in the bar's step or the Lesson tab) plays its
77
+ beats again from the first one.
78
+
79
+ **Check my work on a reviewed step.** Some steps are checked by a review of
80
+ your work: the bar's line (and the step under **Step**) shows what the review
81
+ looks for. **Check my work** uses your own AI (the Lesson review route in AI
82
+ Accounts → Model routing) to look at the changes in your practice project
83
+ (and, when the step says so, your coding chat); the line says **Checking your
84
+ work with your AI…** for up to about a minute, without a Cancel. **Passed ✓**
85
+ with the reviewer's comment passes the step for good. **Not yet:** says what
86
+ is missing, often with a **Hint:**; change your work and press **Check
87
+ again**. Checking unchanged work again repeats the saved answer without using
88
+ your AI. With no changes yet it says so and uses nothing. If the review cannot
89
+ run (the agent is still working, no AI route, a provider error), the bar says
90
+ why, nothing is recorded, and you can press **Check again**. Colleague never
91
+ runs a review or passes a step for you.
92
+
93
+ This tab remembers the beat and the pause; another tab or device starts the
94
+ step at its first beat. Collapsing the bar leaves only the step position and
95
+ its dots. 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, **Open** is left out (**Step** shows the whole step, and the
98
+ **Lesson** tab is one tap away), and the open step fills the width. A step without beats shows its title
99
+ and status as before, and **Show me** when it can point at a place.
@@ -26,6 +26,13 @@ account creation and browser sign-in have distinct effects. If the application
26
26
  cannot resolve an identity, check that account and the declared exchange rather
27
27
  than inventing another selector type. A failed save retains recoverable feedback.
28
28
 
29
+ The coding agent can also save this list for you in its session. Tell it which
30
+ existing accounts to use, or confirm the names and accounts it proposes from the
31
+ application's existing accounts. It saves only what you asked for or confirmed,
32
+ never creates application accounts or changes roles, and then signs in as each
33
+ name in Preview to verify access. The saved list appears here and in Preview's
34
+ identity menu; use the session's normal Save to keep it.
35
+
29
36
  Colleague can read the available identity metadata and make an explicitly requested
30
37
  configuration change, including a selective removal, through the native owner.
31
38
  It can open App access and delegate application-account investigation to a coding
@@ -37,12 +37,13 @@ unknown delivery or claim a failed request was delivered.
37
37
 
38
38
  ## When a turn finishes while you send
39
39
 
40
- Sending a new instruction while Claude works uses its targeted **Send now**
41
- control when supported by the installed Claude version. Background agents and
42
- background tasks continue; foreground work may be interrupted to read your
43
- instruction. This also applies to **Set goal** and **Resume goal** during active
44
- work. **Stop** keeps its cancellation behavior. Older Claude versions retain
45
- their previous interruption behavior. These controls work on desktop and mobile.
40
+ Sending a new instruction while Claude works never interrupts it. Claude queues
41
+ the message, lets the running command finish (for example a long deploy or test
42
+ run), then reads your instruction before continuing. Background agents and
43
+ background tasks also continue. A short question such as "status?" therefore
44
+ gets its answer once the current command completes, not immediately. This also
45
+ applies to **Set goal** and **Resume goal** during active work. Use **Stop** when
46
+ you want to cancel the current work. These controls work on desktop and mobile.
46
47
 
47
48
  If you send a steering message just as Claude or Codex finishes, the queue can
48
49
  submit those same words and attachments as the next ordinary request. This happens
@@ -39,11 +39,19 @@ Other tool dependencies still need their own declared runtime support. A fixture
39
39
  setup failure does not count as a failed application assertion or a passing check.
40
40
 
41
41
  The coding agent can read `vibe64-helper playwright --help` before a project has
42
- browser tests or a matching test runtime. Help starts neither Preview nor a browser.
42
+ browser tests or a matching test runtime. `vibe64-helper preview --help` (also
43
+ `preview browser --help`) works even while the assistant's Preview control is
44
+ disconnected; it lists every browser command, including `browser storage-state`,
45
+ and the fields of the status, screenshot and eval JSON. Help starts neither
46
+ Preview nor a browser.
43
47
  An actual suite still requires the project's installed Playwright version and a
44
48
  matching managed runtime. A version error is a test-runtime blocker; interactive
45
49
  checks can use the existing managed Preview browser. Report the exact required
46
50
  version to the platform operator instead of installing a separate browser.
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
53
+ it and asks you before running `npx playwright install chromium`; installing it
54
+ is your decision.
47
55
 
48
56
  Before a suite, the coding agent can run `vibe64-helper playwright readiness`.
49
57
  It distinguishes absent tests, uninstalled dependencies, an unsupported exact
@@ -64,7 +64,6 @@ The same diagnostic record family separates slow conversation access checks into
64
64
  fresh user lookup, saved learning-attempt validation, practice scope, project
65
65
  access and project-context resolution. It records the elapsed phases even when
66
66
  access fails; repeated checks keep their existing authorization behavior.
67
- These access timings also apply to standalone Learning conversations.
68
67
  Concurrent Learning readers share verification of the same pinned course files
69
68
  while that verification is running. Completed results are not cached: later
70
69
  reads still reject missing or changed installed files, with the same reinstall
@@ -53,6 +53,17 @@ If the previewed application shows its own login screen, enter that application'
53
53
  credentials. Its login and realtime connection run through the Preview address.
54
54
  HTTPS previews retain the HTTPS scheme for applications that use it to set
55
55
  secure login cookies and redirects.
56
+ Preview tells the application its browser-facing address through the standard
57
+ forwarded headers. An application configured to trust its local proxy then
58
+ builds absolute links, asset URLs and callbacks on the Preview address. If pages
59
+ load without styles or links point to `127.0.0.1`, the application does not
60
+ trust the proxy yet; ask the agent to configure trusted proxies for its
61
+ framework. A page returned by a form post also keeps its links on the Preview
62
+ address. Preview tells the application the visitor's address in
63
+ `X-Forwarded-For`; a value the browser sends itself is not passed on. Form posts
64
+ and realtime connections from the Preview page reach the application on its
65
+ local address, so its allowed hosts must include that local address as well as
66
+ the Preview address.
56
67
  In the local editor, Preview keeps the editor's loopback hostname through login
57
68
  and page navigation, so opening the editor on `localhost` also works. If a tab
58
69
  shows an expired Preview access error after a restart, use **Reload preview**
@@ -168,6 +179,6 @@ controller.
168
179
  For managed browser checks, test ownership and recovery, read
169
180
  [Browser checks from chat](preview-browser-checks.md).
170
181
 
171
- For lesson diagrams shown over Preview, see [Lesson presentation in Preview](preview-lesson-presentation.md).
182
+ Lesson diagrams play in the Learning environment, not over Preview; see [The Learning environment (L)](learning-environment.md).
172
183
 
173
184
  To choose which application Preview starts, see [Choose a starting application](preview-starting-application.md).
@@ -9,7 +9,7 @@ review the changes, publish if already authorized, and ping this project with
9
9
  the package versions.” The coding assistant uses:
10
10
 
11
11
  ```sh
12
- vibe64-helper session message-project jskit-ai "Review the changes, then ping vibe64-online with the result and published versions."
12
+ vibe64-helper session message-project jskit-ai "Review the changes, then ping my-app with the result and published versions."
13
13
  ```
14
14
 
15
15
  Without `--session`, the destination's **currently selected session** receives the
@@ -98,7 +98,7 @@ Host-specific guidance shares the same bounded instruction budget; adding it mus
98
98
  not prevent either conversation from starting.
99
99
 
100
100
  Installed host instructions reach coding assistants through the host environment
101
- filter. On a configured VPS they include the local update and SSH restore commands;
101
+ filter. A host that offers its own update or restore commands includes them there;
102
102
  hosts without that facility do not advertise it.
103
103
 
104
104
  If the destination has a pinned source session, that is its server-selected
@@ -16,6 +16,11 @@ You need access to the project and an available coding assistant for delegated w
16
16
  4. When output controls replace setup, select the intended output and use its
17
17
  normal Run control. A successful setup request alone does not mean it is running.
18
18
 
19
+ The agent writes the setup and output declarations in the project's
20
+ `genesis/stack.md`. Their exact grammar comes from Vibe64 itself: the agent reads
21
+ it with `vibe64-helper spec workspace-setup` and `vibe64-helper spec outputs`
22
+ (see [coding agents](coding-agents.md)). A setup error names the spec to read.
23
+
19
24
  The existing source and Git history are retained. If preparation fails, read the
20
25
  reported step and use the offered retry after addressing its cause. Do not apply
21
26
  a starter over an existing repository to repair it.
@@ -30,8 +35,10 @@ The agent should reuse answers you already gave and wait for your choices.
30
35
  Choosing a name such as “admin” does not grant that account administrator rights.
31
36
 
32
37
  The coding agent can implement the application's Preview identity adapter after
33
- you accept that work. To configure named accounts, open **Dashboard > App access**
34
- and use **Managed app access > Add identity**. Enter **Name**, **App identifier**
38
+ you accept that work. It can also save the named accounts you give or confirm
39
+ (for example `admin` and `user` with their emails) and then verify each in Preview;
40
+ it never creates accounts or changes roles for this. To configure them yourself,
41
+ open **Dashboard > App access** and use **Managed app access > Add identity**. Enter **Name**, **App identifier**
35
42
  and **Application value**, choose **Make default** if needed, then **Save**.
36
43
  On mobile, use **Show project** to reach Dashboard. Colleague can explain these
37
44
  fields and, when asked, save the supported identity settings; application code
@@ -0,0 +1,61 @@
1
+ # Running Vibe64 on your computer
2
+
3
+ Start Vibe64 from a terminal in the folder you want to work on:
4
+
5
+ ```sh
6
+ npx vibe64
7
+ ```
8
+
9
+ Vibe64 opens in your browser. To start it for a different folder, run
10
+ `npx vibe64 --project /path/to/folder`. To start it without opening a browser,
11
+ run `PORT=3001 npx vibe64 --no-open` and open `http://127.0.0.1:3001` yourself.
12
+
13
+ Nothing needs configuring. Vibe64 runs as you, with your own tools and folders.
14
+
15
+ ## Tools Vibe64 uses
16
+
17
+ Vibe64 runs the tools already installed on your computer: the ones your
18
+ terminal finds on its `PATH`, plus Homebrew's `/opt/homebrew/bin` on macOS.
19
+ That includes Node.js, npm, Git and any language tools your projects need.
20
+ Install or upgrade them the way you normally would; Vibe64 uses the new version
21
+ the next time it runs a command.
22
+
23
+ - **AI agents.** Claude Code, Codex and opencode are used through their own
24
+ commands, so each must be installed on this computer before you can use it.
25
+ See [AI accounts](ai-accounts-and-routing.md) for what to install and how to
26
+ check again.
27
+ - **npm global installs** go wherever your own npm configuration puts them.
28
+ - **Playwright** uses its own browser cache. If **Health** reports that
29
+ Playwright or its Chromium is missing, install Playwright, then run
30
+ `playwright install chromium`.
31
+
32
+ ## Where Vibe64 keeps things
33
+
34
+ | What | Linux | macOS |
35
+ |---|---|---|
36
+ | Projects Vibe64 creates for you | `~/Vibe64` | `~/Vibe64` |
37
+ | Vibe64's own data (sessions, settings, history) | `~/.local/state/vibe64` (or `$XDG_STATE_HOME/vibe64`) | `~/Library/Application Support/Vibe64` |
38
+
39
+ Vibe64 creates its data folder (private to you) when it starts, unless you
40
+ set `VIBE64_SYSTEM_ROOT` to a folder of your own, which must already exist.
41
+ A folder you open with `npx vibe64` stays where it is; Vibe64 does not move it.
42
+
43
+ ### Moving data from an earlier version on macOS
44
+
45
+ Earlier versions kept data in `~/.local/state/vibe64` on macOS too. If that
46
+ folder exists and the new one does not, Vibe64 stops at startup and prints the
47
+ exact command to move it, for example:
48
+
49
+ ```sh
50
+ mv ~/.local/state/vibe64 ~/Library/Application\ Support/Vibe64
51
+ ```
52
+
53
+ Run the printed command, then start Vibe64 again. Vibe64 never moves the folder
54
+ itself. To keep using the old location instead, start Vibe64 with
55
+ `VIBE64_SYSTEM_ROOT` set to it.
56
+
57
+ ## Colleague
58
+
59
+ Colleague can explain where Vibe64 keeps things and which tools it uses, and can
60
+ open **Health** to check them. Installing tools, moving folders and restarting
61
+ Vibe64 happen in your own terminal; Colleague cannot run them for you.
@@ -1,14 +1,22 @@
1
1
  # Create and switch sessions
2
2
 
3
3
  Use **New session** (+), or **Create session** when there are no open sessions,
4
- to open **Start an AI session**. Choose an available orchestrator, review any
5
- branch choice, then select **Create session** (or **Create branch & session**).
6
- While **Creating session…** is shown, the dialog shows a progress bar and
7
- explains that it is copying the project source. It stays open: clicking outside,
4
+ to open **Start an AI session**. It lists **Claude Code** first, then **Codex**,
5
+ then **OpenCode**, and preselects the first available one. Choose an available
6
+ orchestrator, review any branch choice, then select **Create session** (or
7
+ **Create branch & session**). While **Creating session…** is shown, the dialog
8
+ shows a progress bar and explains that it is copying the project source. It stays open: clicking outside,
8
9
  pressing Escape, Close and Cancel cannot dismiss it. On success it closes and
9
10
  opens the new session. If creation fails, review the error and retry or dismiss
10
11
  the dialog. This works the same way on desktop and mobile.
11
12
 
13
+ On a phone the session's header controls (**New session** (+), a local
14
+ project's Git branch button and the session's GitHub account) sit beside the
15
+ project name while the chat pane is shown. With Preview or Dashboard shown they
16
+ make room for that pane's controls; choose **Show chat** to reach them again.
17
+ On a phone the GitHub account shows only its GitHub icon; on a computer hover
18
+ it to see which account the session's GitHub commands run as.
19
+
12
20
  For a project with connected projects, the dialog closes once the session's own
13
21
  source is ready. The session then shows **Preparing workspace…** while Vibe64
14
22
  prepares the connected projects together, naming those still in progress (for
@@ -83,34 +91,18 @@ address. If the error persists, report the project, session and exact error.
83
91
  On phones, open the chat pane to find the same control. Colleague can explain
84
92
  recovery and open the session; the person selects **Reload chat**.
85
93
 
86
- ## Working and Learning session navigation
87
-
88
- The prepared mode filter uses the same session tabs and chat panel for Working
89
- and Learning sessions. Older sessions without a purpose remain Working. Hiding
90
- a session from navigation preserves its running work, mounted conversation and
91
- draft; it does not stop or archive anything. A selected session of the other
92
- purpose is hidden without opening a different session automatically. The yellow
93
- **L** plate in the app header switches the filter (see
94
- [Choosing lessons and Learning conversations](learning-mode-ui.md)). The filter does not create a lesson, authorize an
95
- attempt or turn an ordinary session into a teacher. Desktop and mobile use the
96
- same navigation contract. Colleague can explain the mode; changing it does not
97
- authorize starting or ending a lesson.
98
-
99
- Each mode remembers
100
- its own selected conversation. A Working conversation that finishes opening
101
- while you view Learning stays with its original project and does not replace the
102
- lesson you are viewing. Switching modes preserves hidden conversations and
103
- unsent drafts; it does not stop their work.
104
-
105
- If Learning updates fail temporarily, the last confirmed lesson conversations
106
- remain visible. Wait for a successful refresh before selecting another lesson.
107
- If access is denied or your account changes, another learner's conversations
108
- must not remain available. If a conflicting-conversation error appears, retain
109
- your work and ask the owner to inspect it. Colleague can explain these states;
110
- it cannot grant access or repair saved identities. Ordinary **New session** and
111
- **Archive session** are Working operations, not ways to start or end a lesson.
112
- These rules apply on desktop and mobile. Start, resume and end lessons through
113
- Learning → **Courses** and Colleague instead.
94
+ ## Lessons and session navigation
95
+
96
+ The session tabs and chat panel list the project's ordinary sessions. The **L**
97
+ button opens the Learning environment above the page without changing the
98
+ selected session (see [Choosing lessons and courses](learning-mode-ui.md)).
99
+
100
+ A lesson's practice sessions are ordinary sessions of its practice project and
101
+ appear with its other sessions. **New session** and **Archive session** are
102
+ ordinary session operations, not ways to start or end a lesson: start, resume
103
+ and end lessons through Learning → **Courses** and Colleague. Colleague can
104
+ explain this; it cannot grant access or repair saved identities. These rules
105
+ apply on desktop and mobile.
114
106
 
115
107
  ## Keep the fresh session's link after renewal
116
108
 
@@ -233,7 +225,7 @@ the reported error; it cannot grant another learner's access or silently replace
233
225
  the saved lesson with newer content.
234
226
 
235
227
  Start such a lesson from Learning → **Courses** (see
236
- [Choosing lessons and Learning conversations](learning-mode-ui.md)); the ordinary
228
+ [Choosing lessons and courses](learning-mode-ui.md)); the ordinary
237
229
  **New session** control still creates a working session with source.
238
230
 
239
231
  ## Pin a source session
@@ -11,25 +11,11 @@ The internal orientation check reads the lesson's exact installed check and runs
11
11
  it against the current App server. It does not run a mutable copy from the
12
12
  learner's project and is not a Colleague shell tool. A successful check confirms
13
13
  only that server's matching button response; the lesson still requires the
14
- learner's own observed interaction and explanation before assessment. If the App
14
+ learner's own observed interaction. If the App
15
15
  restarts or the response expires, repeat the actual button interaction. If native
16
16
  execution cleanup is uncertain, report that failure for operator recovery rather
17
17
  than claiming success or resending an old observation.
18
18
 
19
- Opening or minimising Colleague during workspace-navigation is ordinary chat
20
- use, not an assessment step; it preserves the question and accepted steps. Only
21
- return-to-Colleague collects actual minimise/restore gestures. After its saved
22
- pass is confirmed against the native accepted-answer and evaluation receipt,
23
- normal launcher use no longer arms that completed question, including after a
24
- restart. Explicitly requested practice uses a new delivered question; earlier
25
- passes stay saved. Unconfirmed current tasks still require the original order.
26
- Continue project → Main coding conversation → Preview under the same question.
27
-
28
- On a phone, after minimising Colleague, **Show project** counts as the workspace
29
- step when it reveals the selected **Preview**. Reopen Colleague with its dedicated
30
- avatar launcher under the same pending question. Dashboard, automatic attention,
31
- swipes and programmatic navigation do not create Preview evidence.
32
-
33
19
  A lesson version must remain pinned to the content the learner started. If its
34
20
  content is reported missing or invalid, ask the workspace owner to restore that
35
21
  exact verified revision. A newer bundle or a draft is not a substitute for the
@@ -55,16 +41,9 @@ loader, and leaves placement to the existing Preview host. It does not by itself
55
41
  authenticated learner control, a Colleague tool or saved learner progress. Colleague
56
42
  must not claim an animation played or obtain controller source or screenshots.
57
43
 
58
- In a prepared lesson, the Preview host saves the real diagram's semantic state
59
- after a completed command or a confirmed pause. Reopening that same attempt
60
- restores its last confirmed state, paused flag and labels into a new player; it
61
- does not replay motion, narration or a completed cue. Snapshot reads alone save
62
- nothing. If **Retry diagram checkpoint** appears, retry the retained exact save.
63
- **Save current diagram** captures a fresh state after a rejected revision conflict.
64
- Keep the diagram open until confirmation; a hard reload can recover only the last
65
- confirmed checkpoint. These saves preserve the question and earlier assessments,
66
- and never grant a pass. If a concurrent assessment conflicts, read its saved
67
- result and retry its existing operation with the current revision.
44
+ A lesson diagram plays from its beginning with **Play** in the Learning
45
+ environment; diagram states saved by earlier-format lessons stay in the lesson
46
+ record.
68
47
 
69
48
  The application also has a server-side verified-snapshot installation facility.
70
49
  For official catalogue courses it is reached through **Install** and **Update**
@@ -140,25 +119,20 @@ neither catalogue failure nor publishing a newer release resets the reservation.
140
119
  An unconfirmed catalogue save requires reading its actual current revision before
141
120
  the owner deliberately retries. It is not evidence that enablement changed.
142
121
 
143
- The private lesson record can now retain a pending question, teaching position,
144
- diagram state and assessment results for the saved lesson version. These storage methods alone add no
145
- quiz/start/resume control or Colleague grading tool. A pass requires an admitted actual learner answer or a native
146
- practical observation tied to that learner's prepared project/session. An assistant
122
+ The private lesson record retains step results, the reader position and, for
123
+ earlier-format lessons, their assessment results for the saved lesson version. Colleague has no grading tool. A pass requires the
124
+ learner's own step action: a choice answer, **Done** on a self-check step,
125
+ **Mark as done** on a reading step, an
126
+ automatic check tied to that learner's practice project, or **Check my work**
127
+ on a review step (the learner's own AI reviewing their practice work against
128
+ the author's rubric; Colleague can read that work with `step.evidence.read`
129
+ but never runs a review). An assistant
147
130
  paraphrase, demonstration or animation is not evidence of a learner pass. Completion
148
- requires every required pinned assessment to pass; preparation alone does not count.
131
+ requires every required pinned step (or, for an earlier lesson, assessment) to
132
+ pass; preparation alone does not count.
149
133
  Colleague can explain this boundary and offer supported assistance, but cannot
150
134
  assert trusted observations, fabricate results or erase history by retrying.
151
135
 
152
- After starting or resuming, Colleague must read the fresh teaching brief, recap
153
- its exact pinned passed and remaining assessment IDs, and normally continue a
154
- remaining task. The saved `resume.pendingQuestion` is the last checkpoint; it may
155
- belong to an assessment that already passed. Explicitly requested practice or
156
- reassessment remains supported and keeps the earlier pass. A request to resume,
157
- open the project, inspect setup or navigate is not an answer to grade. A fresh
158
- conversation must prepare and actually deliver its next question before assessing
159
- a new learner answer; it cannot reattach old messages or infer missing provenance.
160
- These read-only progress facts preserve the checkpoint, visual state and history.
161
-
162
136
  If a future result/resume save is unconfirmed, read or retry its exact submission
163
137
  or current checkpoint identity. A changed revision requires reading current state
164
138
  before another write. A reused evidence reference or conflicting identity requires
@@ -14,6 +14,24 @@ Ordinary temporary chats offer **Custom**, **Senior** and **Junior**. Choose
14
14
  an available connection and model, then **Apply**. The next message uses that
15
15
  choice and the existing conversation history. Main chat's selection is unchanged.
16
16
 
17
+ ## Rename a temporary chat
18
+
19
+ New temporary chats are named **Temporary 1**, **Temporary 2** and so on. Each
20
+ number is given once, when the chat is created, and is not reused while the
21
+ session keeps that chat; closing a chat or reloading does not renumber others.
22
+
23
+ To rename a chat, select its tab, then select the pencil (**Rename …**) beside
24
+ its name. Enter a name of up to 80 characters and select **Rename**, or press
25
+ Enter. Line breaks and extra spaces become single spaces. Leave the name empty
26
+ to return to its numbered name. **Cancel** or Escape keeps the current name.
27
+ The new name is saved immediately, survives reload and appears in the session's
28
+ other open tabs. Renaming works while the assistant is working and does not send
29
+ a message or change the conversation. The pencil appears only on the selected
30
+ tab, on desktop and on a phone.
31
+
32
+ Colleague can rename a temporary chat through its temporary-conversation update
33
+ action when you ask it to.
34
+
17
35
  ## Send and steer
18
36
 
19
37
  Temporary chat uses Main's round Send arrow and square Stop control. While a
@@ -29,8 +47,9 @@ so other viewers and a later reopen see them with their actual timing.
29
47
  The same controls remain available in narrow layouts. Goals are not offered in
30
48
  Temporary chat.
31
49
 
32
- Steering can interrupt an unfinished reply. Any partial reply remains attached
33
- to its original request; the follow-up response belongs to the new request.
50
+ Guidance sent to a working Claude chat does not interrupt it: Claude reads the
51
+ guidance after its current command finishes. Output already shown remains
52
+ attached to its original request; the follow-up response belongs to the new request.
34
53
  Reloading the chat preserves that relationship and the recorded AI labels.
35
54
  After **Stop** confirms a Claude reply has stopped, text already shown remains
36
55
  under **Show all … progress updates** on its original request. It is an
@@ -107,6 +126,8 @@ again; do not resend a message whose delivery is uncertain.
107
126
  A temporary chat opened in one browser tab or window appears in the session's
108
127
  other open tabs once it is saved, which happens when it is created or its first
109
128
  message is sent. A tab that lost its connection catches up when it reconnects.
129
+ Every open tab shows the same progress: when the reply arrives, “AI is working…”
130
+ clears in each tab, including tabs that did not send the message.
110
131
 
111
132
  Leaving the view does not stop work or close a chat. Use **Stop** to interrupt
112
133
  work while retaining the conversation, or **Close** to remove that chat after
@@ -50,8 +50,9 @@ Main's microphone and speaker controls sit with the expanded face, outside the
50
50
  original message buttons. Before speech is connected, the speaker button opens
51
51
  Main's speech connection and changes spoken replies without recording.
52
52
  Main defaults to spoken replies on when no choice is saved; Colleague defaults
53
- off. An explicit saved choice takes precedence. In Vibe64 Online, the speaker
54
- choice is personal and separate for Colleague and coding assistants. Both idle controls stay available while
53
+ off. An explicit saved choice takes precedence. A host with saved speech
54
+ preferences keeps the speaker choice personal and separate for Colleague and
55
+ coding assistants. Both idle controls stay available while
55
56
  Talk is connecting. The fourth small round button, the minus after microphone,
56
57
  speaker and settings, tucks away the face; speech continues. The collapsed anonymous icon in the
57
58
  top-right corner is **Show avatar** and restores it. While hidden, a passive
@@ -159,14 +160,8 @@ Open voice for a different conversation to switch. Unfinished words require
159
160
  completion or **Discard and switch**; **Stay here** keeps the original target.
160
161
  There is only one voice window and one active capture/playback owner.
161
162
 
162
- On installations with speech configured, a source-less Learning conversation
163
- uses Main's same microphone, spoken replies and review controls; it does not
164
- require an invented project. Its voice target is labelled **Lesson** and the
165
- actual conversation name. Capture stays attached to that person's saved attempt
166
- and conversation. Switching attempts does not resend or redirect words. Reading
167
- lesson history does not authorize new teaching work: each Send still checks the
168
- current saved lesson and access. Without a speech service, use the same typed
169
- Main conversation; voice availability is optional.
163
+ Lessons have no voice of their own: use Colleague's voice to learn with a
164
+ lesson.
170
165
 
171
166
  Signing out, losing access to the target, or leaving the page releases its
172
167
  resources. A project agent remains the selected voice target even if its text
@@ -6,7 +6,7 @@ This is part of [Voice chat with Colleague or a project agent](voice-chat.md).
6
6
 
7
7
  Colleague and the project agent show an illustrated face that blinks, moves and
8
8
  animates its mouth while listening, thinking and speaking. Colleague starts with
9
- **Merc · male**; project agents, including the Learning teacher, start with
9
+ **Merc · male**; project agents start with
10
10
  **Yu · female**. To change one, open that assistant's **Voice settings** cog
11
11
  beside the microphone and speaker controls (below its face when expanded) and
12
12
  choose **Avatar**. Colleague and project agents keep separate choices. A project
@@ -25,13 +25,11 @@ Open the same **Voice settings** cog and choose **Speaking voice**.
25
25
  Opening settings loads the installed choices without recording. The
26
26
  change applies to the next spoken reply. In standalone Vibe64 it lasts for the
27
27
  current voice session; a host with saved speech preferences can replace this
28
- selector and retain the choice across sessions. Vibe64 Online saves your avatar
29
- and voice personally, separately for Colleague and coding assistants across
30
- projects. Its Management → **Speech and Colleague** page changes only the shared
31
- Colleague name; use each assistant's cog for your own avatar and voice.
32
- The personal cog's **Speak replies** choice controls output for that target.
33
- In Vibe64 Online, older browser-only speaker choices are not copied into personal
34
- settings; check **Speak replies** when first using your personal controls.
28
+ selector and retain the choice across sessions, saving your avatar and voice
29
+ personally, separately for Colleague and coding assistants. On such a host the
30
+ personal cog's **Speak replies** choice controls output for that target; check
31
+ it when first using your personal controls, because older browser-only speaker
32
+ choices are not copied into personal settings.
35
33
  While that choice saves, the speaker control briefly waits; microphone capture
36
34
  and typed chat remain available.
37
35
  For coding assistants, **Read thinking**, **Read progress** and **Thinking sounds**
@@ -40,11 +40,12 @@ started speaking, including after navigation or a failed-send retry. The normal
40
40
  default still sends completed speech automatically, and input and playback stay
41
41
  independent. There is no new settings control for this retained choice.
42
42
 
43
- Online waits for your saved settings before opening a new voice target. An existing
43
+ A host with saved speech preferences waits for your saved settings before
44
+ opening a new voice target. An existing
44
45
  voice target stays owned while those settings load. If loading fails, retry opening
45
46
  voice or use typed chat; your words are not automatically submitted. Reopening an
46
47
  already active target does not add a new microphone readiness gate.
47
48
 
48
- A temporary Online settings refresh error keeps an already loaded saved review
49
+ A temporary settings refresh error keeps an already loaded saved review
49
50
  choice for the same account. It does not silently switch that active microphone
50
51
  to automatic sending. A new voice target still waits for its settings to load.