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
@@ -1,78 +1,178 @@
1
- # Practice projects in standalone lessons
2
-
3
- Some lessons need a practice application. In Learning → **Courses**, use
4
- **Start**, **Start next lesson** or **Start lesson** for a new lesson, or
5
- **Continue**/**Resume saved lesson** for your saved one (see
6
- [Choosing lessons and Learning conversations](learning-mode-ui.md)). If the installation reports that exercise preparation is
7
- unavailable, keep the saved attempt and ask the owner to provide preparation
8
- support before retrying. That refusal means preparation did not start.
9
-
10
- Supported preparation uses the exercise bundled with your saved lesson and keeps
11
- its reserved practice project and session when you resume. Workspace setup may
12
- continue after the start request finishes. When that setup run succeeds, the
13
- lesson becomes ready on its own; you do not need to press **Resume saved lesson**
14
- first. Failed setup needs its existing recovery, then **Resume saved lesson**;
15
- setup success does not mean Preview is running or a practical has passed.
16
- Standalone setup uses the installation's actual resources; it does not create a
17
- hosted development database by default.
18
-
19
- The saved lesson and progress remain intact. Keep mismatched or unsafe practice
20
- storage intact and ask the owner to inspect the reported error. An unrelated
21
- Working project cannot replace this saved attempt's practice project.
22
-
23
- Colleague can explain the error and use supported lesson controls when asked.
24
-
25
- In a practice lesson, **Preview** shows the practice app as soon as it
26
- reports ready, including after the app starts while you are on the **Learning**
27
- pane. **Stop preview** stops the practice app cleanly and keeps it stopped, even
28
- after a reload, until you choose **Restart preview**. Switching between
29
- **Preview**, **Dashboard** and the graduation-cap **Learning** option keeps the same running app without reloading it.
30
- Standalone exercise conversations in Learning, their Preview and practical
31
- assessment are still being integrated; prepared source alone does not make that
32
- complete flow available.
33
-
34
- A local installation normally serves only the project you selected. It also
35
- opens your own active lesson's practice project by its address (for example
36
- when Colleague navigates there or you open **Account settings** from it): the
37
- page, **Preview** and **Dashboard** load the same way as on a hosted workspace.
38
- That address gives viewing and Preview control only; start new coding work from
39
- the lesson in **Learning**. The lesson's own conversation stays in **Learning**:
40
- the project's ordinary (Working) session list and settings do not show it. Another person's practice project, or a practice
41
- address with no saved lesson behind it, still reports "Local editor mode only
42
- serves the selected project."
43
-
44
- ## Instructing your teacher-agent
45
-
46
- In a lesson with a practice project, the teacher in the lesson's conversation is
47
- also your Vibe64 agent for that project, as in normal Vibe64. Ask it to make a
48
- change and it does the work in the practice project. It also teaches you to
49
- instruct it well: say the goal, where the change belongs, and how you will check
50
- it. Then check the result yourself in the real interface: **Preview**, and in the
51
- lesson **Dashboard** the **Files**, **Current changes**, **Git log**,
52
- **Architecture**, **Env** and **Database** → **ERD** views. These are the ordinary
53
- Dashboard sections, limited to this practice project and lesson session; see
54
- [Choosing lessons and Learning conversations](learning-mode-ui.md) for which
55
- sections a lesson shows.
56
-
57
- Work the teacher does for you is a demonstration. It never counts as your
58
- practical evidence, and the teacher does not do a graded task for you before you
59
- try it. When a lesson is about instructing the agent, your own explanation or
60
- instruction is what is assessed.
61
-
62
- While a code question is open, the teacher will not edit that question's files,
63
- even if you ask; any agent edit there voids the attempt and **Check my code**
64
- then reports that an independent attempt is needed. Make those edits yourself in
65
- the lesson Dashboard's **Files** tool. The teacher also never deploys, publishes,
66
- pushes to real remotes, changes Git remotes, or touches other projects or folders
67
- outside this practice project. Lesson 0 and other lessons without a practice
68
- project keep a conversation-only teacher that does no project work.
69
-
70
- A lesson you started before Learning moved onto the real Vibe64 app picks up
71
- the current teacher instructions with your next message. Its earlier replies may
72
- still say **Workspace** or **Code tab**; those are the old names for the header's
73
- **Preview** | **Dashboard** options and the Dashboard's **Files** section.
74
-
75
- Opening supported practice teaching retains the reserved initial conversation,
76
- source and history. An ownership or lesson-binding error needs owner inspection;
77
- do not create a replacement or switch it to an unrelated Working project. An
78
- older prepared conversation is not silently converted by resuming the lesson.
1
+ # Lessons in progress, practice projects and archives
2
+
3
+ Vibe64 has two modes: **Develop**, for your own projects, and **Learn**, for
4
+ lessons. **L** switches between them (see
5
+ [The Learning environment (L)](learning-environment.md)). This guide covers
6
+ what a lesson keeps while it is in progress, and what happens when you finish,
7
+ restart or delete it.
8
+
9
+ ## One lesson in progress
10
+
11
+ Starting a lesson (**Courses**, then **Start**) begins one run of it, called an
12
+ attempt. The attempt owns:
13
+
14
+ - its step results,
15
+ - its teacher conversation with Colleague,
16
+ - its practice project, when the lesson needs a practice application.
17
+ A lesson without one has no project.
18
+
19
+ You have at most one lesson in progress. It stays in progress until you finish,
20
+ restart or delete it. Switching to Develop, or opening another page, only
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.
23
+
24
+ If you start a different lesson while one is in progress, Vibe64 asks once
25
+ whether to archive the current lesson first. Confirming archives it (see
26
+ below) and starts the new lesson. Cancelling changes nothing and keeps the
27
+ current lesson in progress. Starting the lesson that is already in progress
28
+ just opens it.
29
+
30
+ ## Practice projects
31
+
32
+ Some lessons need a practice application. Starting such a lesson creates a
33
+ practice project for it. If the installation reports that exercise preparation
34
+ is unavailable, ask the owner to provide preparation support before retrying.
35
+ That refusal means preparation did not start.
36
+
37
+ Preparation uses the exercise bundled with the lesson. Workspace setup may
38
+ continue after the start request finishes; when it succeeds the lesson becomes
39
+ ready on its own. Failed setup needs its existing recovery; then ask Colleague
40
+ to resume the lesson's preparation. Setup success does not mean Preview is running or a step has
41
+ passed. Standalone setup uses the installation's actual resources; it does not
42
+ create a hosted development database by default.
43
+
44
+ Practice projects live in your own learning space, apart from your projects.
45
+ In Develop mode they never appear in the project lists, the project switcher or
46
+ Management → **Projects**, and opening one says
47
+ "This is a practice project. Press L to switch to Learn." In Learn mode only
48
+ your practice projects open; opening one of your own projects says
49
+ "You're in Learn mode. Press L to go back to your projects." Only you see your
50
+ practice projects; the workspace owner does not.
51
+
52
+ This separation is part of Vibe64, not of the computer. Vibe64 keeps the two
53
+ apart in where it stores them, what it lists and what it opens. It is not a
54
+ security boundary: agents and the practice application run on the same machine,
55
+ with the same system access, as your other projects. Treat a practice project
56
+ like any of your projects and do not put secrets in it.
57
+
58
+ Before an agent turn, Vibe64 writes its agent guidance (the `.agents`,
59
+ `.claude`, `.codex` and `.opencode` folders) into the project. In a practice
60
+ project these folders stay out of **Current changes** and out of what **Save**
61
+ commits, so you see and save only your own changes; every lesson gets this
62
+ without anything in its exercise. In your own projects they appear as changes
63
+ to save, as before.
64
+
65
+ A practice project is a complete project. Its chat, **Preview**, **Dashboard**
66
+ and sessions work as in any project. The session that lesson preparation
67
+ creates in it is an ordinary session.
68
+
69
+ ## In progress and Archived
70
+
71
+ In Learn mode, **Courses** (on the lesson step bar, or in the project menu beside **L**) has an **In progress** list and an
72
+ **Archived** list. Until your lessons are read, each list shows **Loading your
73
+ lesson…** or **Loading archived lessons…** instead of staying blank.
74
+
75
+ **In progress** shows the lesson in progress, if any: its title and its
76
+ practice project's name (or **No practice project**). Without one it says
77
+ **No lesson in progress. Start one from Courses.** The row has three buttons:
78
+
79
+ - **Open** closes Courses and opens the lesson in the **Lesson** tab of its
80
+ practice project (or, for a lesson without one, of the page with no project
81
+ selected).
82
+ - **Restart** turns into **Archive and restart**; press that to archive this
83
+ attempt and start the same lesson again with a new practice project, a new
84
+ teacher conversation and no step results.
85
+ - **Delete** turns into **Delete for good**; press that to delete the lesson
86
+ in progress for good: its practice project (files, sessions and Preview) and
87
+ its teacher conversation go, with no archive. A lesson you completed before
88
+ stays completed.
89
+
90
+ **Archived** lists your archived lessons, newest first, with the lesson title,
91
+ whether it was finished or archived, and the date. Each row has a delete
92
+ icon, then **Delete for good**, which removes that archive for good. You can keep at most 20 archived lessons;
93
+ finishing, restarting or archiving another lesson is refused until you delete
94
+ one. Archived lessons cannot be reopened from Vibe64; use **Start lesson** again to
95
+ redo a lesson.
96
+
97
+ An archive keeps the attempt's record and step results, its teacher
98
+ conversation and its practice project's source, sessions and state, but leaves
99
+ out dependencies that can be rebuilt, such as `node_modules`. A lesson without
100
+ a practice project keeps only its record and conversation.
101
+
102
+ To limit disk use, only your 3 newest archived lessons with a practice project
103
+ keep it (they show **with practice project** in the list). When archiving
104
+ another lesson's project would make 4, the oldest of them loses its practice
105
+ project, on its own; it keeps its record, step results and teacher
106
+ conversation. Lessons without a practice project do not count. This never
107
+ touches the lesson in progress, however long it stays paused, or your own
108
+ projects.
109
+
110
+ ## Finishing a lesson
111
+
112
+ 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
114
+ archived as one bundle (its record, practice project and conversation). The
115
+ screen then offers **Next lesson** and **Back to courses**. **Start lesson** on
116
+ the course page starts a new attempt with a fresh project, teacher and results; the
117
+ course list still shows the lesson as completed.
118
+
119
+ ## When something refuses or stops
120
+
121
+ If a session in the practice project is pinned, finishing, restarting,
122
+ archiving or deleting refuses with a message that names the session. Nothing
123
+ was changed. Open the session, choose **Unpin session**, and try again. A full
124
+ archive (20 lessons) or too little storage also refuses with nothing changed.
125
+
126
+ If archiving or deleting stops part-way, the lesson stays in progress (a
127
+ stopped removal shows **Being deleted**). Press the same button again; it
128
+ continues from the step that failed. **Delete** also finishes a stopped archive.
129
+ If it keeps failing, the error says why; ask the person who runs this Vibe64
130
+ to inspect it.
131
+
132
+ ## What Colleague can do
133
+
134
+ Colleague can list the lesson in progress and the archived lessons, and switch
135
+ between Learn and Develop when you ask. It restarts or finishes a lesson only
136
+ when you ask, and deletes the lesson in progress or an archive only when you
137
+ ask and then confirm that exact deletion; an offer is not a request. Starting a
138
+ different lesson while one is in progress needs your confirmation to archive
139
+ the current one first.
140
+
141
+ ## A practice project open elsewhere
142
+
143
+ If a practice project that was archived or deleted is still open in another tab
144
+ or window, that page switches by itself (no reload needed) to **This practice
145
+ project is gone** instead of an error. The page's requests answer not found with
146
+ the code `vibe64_practice_project_deleted`. Colleague can explain this.
147
+
148
+ ## How a practice project is named
149
+
150
+ A practice project keeps its address (`/app/project/training-…`), but Vibe64
151
+ names it after its lesson: in the project header, in **Courses** and by
152
+ Colleague. The name is **Practice:** followed by the lesson title, otherwise the
153
+ lesson code, for example **Practice: V64-START-02**. Hover the header name on a
154
+ computer to see the address too.
155
+
156
+ On a phone the header name shortens with **…** so it never covers the other
157
+ header buttons. While Preview's controls are showing on a very narrow phone, or
158
+ beside a local project's Git branch and GitHub controls on a phone narrower than
159
+ about 540px, there may be no room for it at all; the name is then hidden rather
160
+ than squeezed. With Preview shown, **Show chat** brings it back; otherwise turn
161
+ the phone sideways or use a wider screen. On phones narrower than about 480px the button that switches
162
+ between **Preview** and **Dashboard** shows that pane's icon instead of the word
163
+ (its name is still **Go to dashboard** or **Go to preview**).
164
+
165
+ ## Working in the practice project
166
+
167
+ The practice project's session has an ordinary Vibe64 agent, without lesson
168
+ instructions. Ask it to make a change and it works in the practice project, as
169
+ in any project; Colleague teaches you to instruct it well (say the goal, where
170
+ the change belongs and how you will check it). Then check the result yourself in
171
+ **Preview** and the **Dashboard** sections.
172
+
173
+ Work an agent does for you never counts as your own work. While a code step is
174
+ open, make the edits to its files yourself in
175
+ **Dashboard → Files**: your saves there are recorded for the lesson, and any
176
+ other writer's edit in those files means the step's **Check now** asks for an
177
+ independent attempt (see [Answering a code question in a lesson](learning-code-questions.md)).
178
+ Hosted workspaces record these saves the same way.
@@ -1,52 +1,74 @@
1
1
  # Learning teacher guide
2
2
 
3
- During a practice lesson, the lesson teacher (Main) shows you where things are in
4
- the real Vibe64 workspace. By default it *points*: it rings the real control you
5
- should click next, with a short caption such as **Dashboard → Database → ERD**.
6
- You then click it yourself.
3
+ Colleague teaches your lessons and shows you where things are in the real
4
+ Vibe64 app. By default it *points*: it rings the real control you should click
5
+ next, with a short caption such as **Dashboard → Database → ERD** or the
6
+ lesson's own caption. You then click it yourself.
7
7
 
8
8
  ## What you see
9
9
 
10
10
  - The rest of the screen dims slightly, and a ring with a gentle ripple sits on
11
- one real tab, Dashboard section or button. A caption with the whole path points
12
- at it; a thin bar on the caption shows the time left.
11
+ one real tab, Dashboard section or button. A caption points at it; a thin bar
12
+ on the caption shows the time left.
13
13
  - The ring is on the next step from where you are. On **Preview**, a path to the
14
14
  ERD rings the **Dashboard** tab; once you are in **Dashboard → Database**, it
15
- rings the **ERD** button.
15
+ rings the **ERD** button. When you are already at the place (for example
16
+ Preview or **Dashboard → Files** is open), the ring goes around that open
17
+ pane, with the caption inside its top edge when the pane fills the screen.
16
18
  - The ring lasts about 8 seconds, or until you click or press a key. It never
17
19
  blocks your click, and it holds still when your device asks for reduced motion.
20
+ - If Learning is open above the app when Colleague points at an app place,
21
+ Learning is minimised first (your lesson and step are kept) so you can see it.
18
22
 
19
- ## Places the teacher can point at
23
+ ## Places Colleague can point at
20
24
 
21
25
  **Preview**, **Dashboard**, **Dashboard → Database → ERD** or **Data**,
22
26
  **Dashboard → Files** (and one file in it), **Current changes**, **Git log**,
23
- **Session info**, **Architecture**, and the graduation-cap (Learning) option beside Preview and Dashboard. A Dashboard section
24
- the lesson does not show cannot be ringed.
27
+ **Session info**, **Architecture**, and the **L** (Learning) button. A Dashboard
28
+ section the project does not show cannot be ringed.
25
29
 
26
30
  ## On a phone
27
31
 
28
- A phone shows the chat or one pane at a time, so the next tab is often hidden.
29
- The ring then sits on the header's pane switch: the arrow button that shows the
30
- project panes from the chat, or the next-pane button (for example **Dashboard ›**)
31
- that steps **Preview → Dashboard → Learning**. The caption still shows the whole
32
- path. Tap the switch; when the next step becomes visible, the teacher can ring it
33
- directly.
32
+ A phone shows the chat or one pane at a time, so the Preview/Dashboard tabs and
33
+ the Dashboard menu are hidden. Colleague's full-screen chat minimises itself
34
+ first so the ring is visible. Then:
35
+
36
+ - If the place's pane is already showing (for example Preview, or Files in the
37
+ Dashboard), the ring goes around that pane.
38
+ - In the Dashboard, a Dashboard section that is not open rings the
39
+ **Dashboard section** select at the top; choose the section there.
40
+ - When Files, Database, Architecture or Current changes fills the Dashboard
41
+ and the place is another Dashboard section, the ring goes around that pane's
42
+ **Back to dashboard** button (in Files or Database it may read **Back to
43
+ Architecture**). Tap it, then follow the next ring.
44
+ - Only when the place is in the other pane (Preview instead of Dashboard, or
45
+ the reverse), or the chat is showing, does the ring sit on the header's pane
46
+ switch: the arrow button that shows the project
47
+ panes from the chat, or the next-pane button (for example **Dashboard ›**;
48
+ on phones narrower than about 480px it shows only the Dashboard or Preview
49
+ icon).
50
+ Tap it; when the next step becomes visible, Colleague can ring it directly.
51
+
52
+ The caption always shows the whole path. Reopen Colleague with its avatar
53
+ button.
34
54
 
35
55
  ## When nothing is ringed
36
56
 
37
57
  If neither a step on the path nor the pane switch is visible, nothing is drawn.
38
- The teacher is told so and gives you the path in words instead; follow it with the
39
- visible controls.
58
+ Colleague is told so, never claims a highlight, and gives you the path in words
59
+ instead; follow it with the visible controls.
40
60
 
41
61
  ## "Show me"
42
62
 
43
- Ask the teacher to "show me" and it opens the place itself (for a file, in the
44
- lesson's **Dashboard → Files** editor) and rings it there. A view the teacher opens is
45
- a demonstration, not your step; when a lesson asks you to find a place, click it
46
- yourself so **Watch me** observes your own navigation.
63
+ Ask Colleague to "show me" and it opens the place itself in your project (for a
64
+ file, in **Dashboard → Files**) and rings it there. For the Learning place it
65
+ opens Learning. A view Colleague opens is a demonstration, not your step: it never
66
+ passes a lesson step. When a lesson asks you to find a place, click it yourself.
47
67
 
48
- ## What Colleague can do
68
+ ## Opening your lesson
49
69
 
50
- Colleague can explain these steps. It cannot draw the teacher's ring; it can open
51
- the lesson project's **Preview** or **Dashboard → Database → ERD** for you when you
52
- ask, which is also a demonstration.
70
+ Colleague can show your current lesson step in the Learn page's **Lesson** tab,
71
+ and open the **Courses** catalogue or close it so you can see the app, without
72
+ 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,
74
+ Colleague's chat minimises so the step is visible).