vibe64 0.1.39 → 0.1.40
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.
- package/bin/run.js +1942 -1846
- package/bin/server.js +136 -112
- package/bin/upgrade-state.js +5023 -4860
- package/dist/assets/GithubBrowserTabs-BoDkGFtY.js +1 -0
- package/dist/assets/LocalDatabaseServer-BWAvRlUl.css +1 -0
- package/dist/assets/LocalDatabaseServer-CVsGChHh.js +2 -0
- package/dist/assets/StudioErrorNotice-C_jbvp9V.js +1 -0
- package/dist/assets/VAlert-gwuhYlYb.js +1 -0
- package/dist/assets/VAutocomplete-D7Vk5wq_.js +1 -0
- package/dist/assets/VAvatar-DvRBcmqv.js +1 -0
- package/dist/assets/VBtn-BhVEwXLX.js +1 -0
- package/dist/assets/VCard-C3Hx769y.js +1 -0
- package/dist/assets/VCheckbox-DyCGSN0H.js +1 -0
- package/dist/assets/VCheckboxBtn-DCyuVH7W.css +1 -0
- package/dist/assets/VCheckboxBtn-DYcQU2Pn.js +1 -0
- package/dist/assets/VChip-VVdtjfq-.js +1 -0
- package/dist/assets/VDialog-CQDhjRiV.js +1 -0
- package/dist/assets/VDivider-Dq25WsKu.js +1 -0
- package/dist/assets/VExpansionPanels-C1y-myl5.js +1 -0
- package/dist/assets/VMenu-CDcBLYWR.js +1 -0
- package/dist/assets/VOverlay-Cp4rFk6g.js +1 -0
- package/dist/assets/VRadioGroup-CAjNZwF7.js +1 -0
- package/dist/assets/VRow-BskP28jR.js +1 -0
- package/dist/assets/VSelect-D3oLvCcB.js +2 -0
- package/dist/assets/VSheet-DxYEFfnM.js +1 -0
- package/dist/assets/VSkeletonLoader-Cync3lZZ.js +1 -0
- package/dist/assets/VSpacer-CgWOWvBh.js +1 -0
- package/dist/assets/VSwitch-BxGuGypi.js +1 -0
- package/dist/assets/VTextField-C0b_0cSa.js +1 -0
- package/dist/assets/VTextField-F6unyhrS.css +1 -0
- package/dist/assets/VTextarea-B7sZd1JY.js +1 -0
- package/dist/assets/{Vibe64AsyncModuleState-Do9EqX3S.js → Vibe64AsyncModuleState-syuPcpGx.js} +1 -1
- package/dist/assets/Vibe64AuthSettingsButton-CmiidAs5.js +5 -0
- package/dist/assets/{Vibe64AuthSettingsButton-M44SSmZ9.css → Vibe64AuthSettingsButton-D2lltUhi.css} +1 -1
- package/dist/assets/Vibe64CopyCommand-CYiZcy0d.js +1 -0
- package/dist/assets/Vibe64CopyCommand-ClbQLYZi.css +1 -0
- package/dist/assets/{Vibe64DashboardBackButton-BH_8j_VR.js → Vibe64DashboardBackButton-Go_MJuIK.js} +1 -1
- package/dist/assets/{Vibe64DashboardPageHeader-BXQR00HK.js → Vibe64DashboardPageHeader-BMrdRph6.js} +1 -1
- package/dist/assets/Vibe64DashboardPageHeader-CdlzsyKQ.css +1 -0
- package/dist/assets/Vibe64DashboardShell-MCzEQCWu.js +1 -0
- package/dist/assets/{Vibe64DatabaseWorkspace-CEml9BWn.js → Vibe64DatabaseWorkspace-DM9V017v.js} +3 -3
- package/dist/assets/{Vibe64DatabaseWorkspace-DPDMxhAW.css → Vibe64DatabaseWorkspace-DePBDUMy.css} +1 -1
- package/dist/assets/Vibe64OutputControls-CU9H0Dur.js +8 -0
- package/dist/assets/{Vibe64OutputControls-Co5YzwcK.css → Vibe64OutputControls-CeBzZPUT.css} +1 -1
- package/dist/assets/{Vibe64RepositoryWorkspace-Agyt4O-V.css → Vibe64RepositoryWorkspace-Bw9W691N.css} +1 -1
- package/dist/assets/{Vibe64RepositoryWorkspace-obZFXkoG.js → Vibe64RepositoryWorkspace-DaAChLA8.js} +2 -2
- package/dist/assets/{Vibe64SessionFiles-CQzs6fee.js → Vibe64SessionFiles-CM2EzXBf.js} +4 -4
- package/dist/assets/Vibe64SessionFiles-DsPb8hOe.css +1 -0
- package/dist/assets/{Vibe64TemporaryAiFixAction-BiuIE9mC.js → Vibe64TemporaryAiFixAction-CIePbdW8.js} +1 -1
- package/dist/assets/{Vibe64UiStoryboardView-BhKRpL0N.js → Vibe64UiStoryboardView-Bp9STItF.js} +1 -1
- package/dist/assets/{Vibe64UnavailableSessions-Ca5nC7KH.js → Vibe64UnavailableSessions-JBgHzM-j.js} +1 -1
- package/dist/assets/{_sessionId_-CKkGH3Rx.js → _sessionId_-DVHd6D5V.js} +1 -1
- package/dist/assets/{_sessionTool_-1V-z6Pbp.js → _sessionTool_-BV1AwpUx.js} +1 -1
- package/dist/assets/_slug_-DsfaE8Vh.js +25 -0
- package/dist/assets/_slug_-_qfQqdHb.css +1 -0
- package/dist/assets/{access-WlhPvPgy.js → access-BbzSuMt5.js} +1 -1
- package/dist/assets/app-BNh2oZg-.js +1 -0
- package/dist/assets/assistantRouting-DeE8jvtE.js +3 -0
- package/dist/assets/{changes-CHJjrZAc.js → changes-D8Koqrqg.js} +1 -1
- package/dist/assets/client-CybfBKCn.js +2 -0
- package/dist/assets/client-D6UGamrv.css +1 -0
- package/dist/assets/{conversation-B90ERX9h.js → conversation-DZW4-Wck.js} +2 -2
- package/dist/assets/{conversation-vxJGwmtW.css → conversation-TK6EmDk4.css} +1 -1
- package/dist/assets/{createSimpleFunctional-CZTGuNuR.js → createSimpleFunctional-zlXZooQW.js} +1 -1
- package/dist/assets/{dashboard-CuutW8iv.js → dashboard-DLrmf5ed.js} +1 -1
- package/dist/assets/definitions-DgyQJgn-.js +1 -0
- package/dist/assets/dialog-transition-D2vqGksQ.js +1 -0
- package/dist/assets/env-B5V1EC4M.css +1 -0
- package/dist/assets/env-rVQwLtYr.js +1 -0
- package/dist/assets/health-92hh8xXh.css +1 -0
- package/dist/assets/health-B6r9LLrd.js +1 -0
- package/dist/assets/{history-1_NU8azF.js → history-C6xLWUxL.js} +1 -1
- package/dist/assets/incoming-Bdqo8z25.css +1 -0
- package/dist/assets/incoming-CNwZa_yD.js +2 -0
- package/dist/assets/index-B9P6KjvH.js +138 -0
- package/dist/assets/{index-irlMYzLh.css → index-BC29JK2e.css} +1 -1
- package/dist/assets/{integrations-BMzWQQpa.js → integrations-CcrqPXxj.js} +10 -10
- package/dist/assets/integrations-Co8WvCiD.css +1 -0
- package/dist/assets/issues-DEjIlMdl.js +1 -0
- package/dist/assets/layout-B2Ap07aa.js +1 -0
- package/dist/assets/{lazy-NHSwD9FS.js → lazy-BjyT2XvW.js} +1 -1
- package/dist/assets/{learning-Bdi3XRS7.js → learning-BP1xvd8w.js} +1 -1
- package/dist/assets/mdi-Bt90Ns76.js +1 -0
- package/dist/assets/placement-CQy46H3H.js +1 -0
- package/dist/assets/publish-CPWnztCc.css +1 -0
- package/dist/assets/publish-CVXolnAG.js +3 -0
- package/dist/assets/pull-requests-BjwokcU0.css +1 -0
- package/dist/assets/pull-requests-DdgzLzY_.js +1 -0
- package/dist/assets/{repository-BL_2bgzC.js → repository-5S0LzRq3.js} +1 -1
- package/dist/assets/ripple-EFNA8EBu.js +11 -0
- package/dist/assets/rolldown-runtime-DBalRfVu.js +1 -0
- package/dist/assets/{session-BdhKrcX4.js → session-BGpiZThC.js} +1 -1
- package/dist/assets/{settings-1rpuL7eR.js → settings-BKP_eQ3F.js} +1 -1
- package/dist/assets/settings-D8x4KUqV.css +1 -0
- package/dist/assets/shared-DZETtWRH.js +2 -0
- package/dist/assets/studioGateApi-BXHVBVEc.js +1 -0
- package/dist/assets/studioUrls-DpSS-0z1.js +1 -0
- package/dist/assets/useArchivedVibe64Sessions-D8DWpcSy.js +1 -0
- package/dist/assets/useCommand-nWFczmJy.js +1 -0
- package/dist/assets/useEndpointResource-Ds8EDBZ2.js +1 -0
- package/dist/assets/useRealtimeEvent-DrOiU8lJ.js +1 -0
- package/dist/assets/{useUiFeedback-BPBF_0bp.js → useUiFeedback-CMwE4MLs.js} +1 -1
- package/dist/assets/useVibe64ConversationLog-D-Vkq0sK.js +1 -0
- package/dist/assets/{useVibe64DatabaseTools-4o6S8eXq.js → useVibe64DatabaseTools-Dpm53ruL.js} +1 -1
- package/dist/assets/useVibe64ProjectScope-B5ogg6jd.js +1 -0
- package/dist/assets/useVibe64SessionData-CGJXj3r7.js +1 -0
- package/dist/assets/{useVibe64SessionSelection-BzL1y_Vq.js → useVibe64SessionSelection-BEqKR412.js} +1 -1
- package/dist/assets/{useVibe64SystemGraph-B4RmsC9Y.js → useVibe64SystemGraph-DbSfrYF8.js} +1 -1
- package/dist/assets/{useVibe64Terminal-Cg3idMcy.js → useVibe64Terminal-I7Sf6xMW.js} +1 -1
- package/dist/assets/vibe64ProjectScope.local-B06ABkhI.js +1 -0
- package/dist/assets/vibe64SavedEnvValues-B_QE9aAj.js +1 -0
- package/dist/assets/vibe64SessionFocus-CA-sk8Ri.css +1 -0
- package/dist/assets/vibe64SessionFocus-tv2wz7_H.js +1 -0
- package/dist/assets/{vibe64SessionInfo-BuBUdL-e.js → vibe64SessionInfo-B0uItVOK.js} +1 -1
- package/dist/assets/{vibe64SessionToolDefinitions-BJaJH5LR.js → vibe64SessionToolDefinitions-Dsn8WYmO.js} +1 -1
- package/dist/index.html +56 -46
- package/docs/colleague-usage/account-profile-and-appearance.md +1 -1
- package/docs/colleague-usage/{ai-accounts-and-routing.md → ai-accounts.md} +41 -114
- package/docs/colleague-usage/ai-model-setups.md +159 -0
- package/docs/colleague-usage/ai-onboarding.md +94 -21
- package/docs/colleague-usage/ai-personal-use.md +41 -0
- package/docs/colleague-usage/auto-workflow.md +8 -3
- package/docs/colleague-usage/codex-context-recovery.md +2 -1
- package/docs/colleague-usage/coding-agent-goals.md +7 -4
- package/docs/colleague-usage/coding-agents.md +8 -5
- package/docs/colleague-usage/colleague-watches.md +15 -4
- package/docs/colleague-usage/colleague.md +21 -5
- package/docs/colleague-usage/connected-contributions.md +13 -13
- package/docs/colleague-usage/connected-projects.md +2 -2
- package/docs/colleague-usage/conversation-context.md +1 -1
- package/docs/colleague-usage/dashboard-navigation.md +5 -3
- package/docs/colleague-usage/development-env.md +21 -4
- package/docs/colleague-usage/file-interfaces.md +1 -1
- package/docs/colleague-usage/github-work.md +8 -8
- package/docs/colleague-usage/health-checks.md +52 -18
- package/docs/colleague-usage/incoming-changes.md +3 -3
- package/docs/colleague-usage/integrations.md +5 -3
- package/docs/colleague-usage/learning-course-catalogue.md +3 -3
- package/docs/colleague-usage/learning-environment.md +55 -47
- package/docs/colleague-usage/learning-mode-ui.md +13 -10
- package/docs/colleague-usage/learning-practice-projects.md +13 -2
- package/docs/colleague-usage/learning-teacher-guide.md +9 -4
- package/docs/colleague-usage/learning-with-colleague.md +9 -5
- package/docs/colleague-usage/lesson-authoring.md +12 -12
- package/docs/colleague-usage/lesson-step-bar.md +22 -22
- package/docs/colleague-usage/main-chat-approvals.md +150 -0
- package/docs/colleague-usage/preview-browser-checks.md +5 -1
- package/docs/colleague-usage/project-language-tools.md +16 -2
- package/docs/colleague-usage/project-settings.md +1 -1
- package/docs/colleague-usage/project-setup.md +17 -7
- package/docs/colleague-usage/publishing.md +185 -0
- package/docs/colleague-usage/running-vibe64-on-your-computer.md +54 -6
- package/docs/colleague-usage/sessions.md +18 -10
- package/docs/colleague-usage/set-up-linux.md +254 -0
- package/docs/colleague-usage/set-up-macos.md +199 -0
- package/docs/colleague-usage/set-up-windows.md +76 -0
- package/docs/colleague-usage/starter-apps.md +21 -4
- package/docs/colleague-usage/teaching-content.md +2 -2
- package/docs/colleague-usage/team-ai-access.md +108 -0
- package/docs/colleague-usage/temporary-chats.md +9 -7
- package/docs/colleague-usage/workspace-preparation.md +50 -1
- package/docs/templates/learn-topic/README.md +3 -3
- package/docs/templates/learn-topic/training/lessons/TOPIC-01/lesson.json +2 -1
- package/docs/training-content.md +37 -15
- package/node_modules/@jskit-ai/assistant-core/package.json +1 -1
- package/node_modules/@jskit-ai/assistant-runtime/package.json +1 -1
- package/node_modules/@jskit-ai/assistant-voice/package.json +1 -1
- package/node_modules/@jskit-ai/connector-google-calendar/package.json +1 -1
- package/node_modules/@jskit-ai/connectors-catalog/package.json +1 -1
- package/node_modules/@jskit-ai/connectors-catalog/patterns/oauth-connection/PATTERN.md +25 -0
- package/node_modules/@jskit-ai/connectors-core/package.json +1 -1
- package/node_modules/@jskit-ai/http-runtime/package.json +1 -1
- package/node_modules/@jskit-ai/kernel/package.json +1 -1
- package/node_modules/@jskit-ai/realtime/package.json +1 -1
- package/node_modules/@jskit-ai/resource-core/package.json +1 -1
- package/node_modules/@jskit-ai/resource-crud-core/package.json +1 -1
- package/node_modules/@jskit-ai/uploads-runtime/package.json +1 -1
- package/node_modules/@local/vibe64-accounts/package.json +2 -1
- package/node_modules/@local/vibe64-core/package.json +4 -1
- package/node_modules/@local/vibe64-execution/src/host/execHelper.js +82 -81
- package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +73 -69
- package/node_modules/@local/vibe64-genesis/package.json +1 -0
- package/node_modules/@local/vibe64-genesis/src/server/agentSpecs.js +118 -68
- package/node_modules/@local/vibe64-genesis/src/server/index.js +501 -415
- package/node_modules/@local/vibe64-genesis/src/server/packaging.js +105 -0
- package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +143 -139
- package/node_modules/@local/vibe64-packaging/package.json +26 -0
- package/node_modules/@local/vibe64-packaging/src/server/packers/capacitor/ShellIcons.java +112 -0
- package/node_modules/@local/vibe64-project/package.json +3 -1
- package/node_modules/@local/vibe64-publishing/package.json +12 -0
- package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +7 -7
- package/node_modules/@local/vibe64-runtime/src/shared/assistantRoutingScores.json +25 -22
- package/node_modules/@local/vibe64-terminals/package.json +2 -1
- package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1340 -1300
- package/node_modules/@local/vibe64-training/package.json +2 -1
- package/package.json +19 -15
- package/server.bundle.mjs +42890 -40887
- package/dist/assets/GithubBrowserTabs-C2NO5l8g.js +0 -1
- package/dist/assets/StudioErrorNotice-CSrUw1QV.js +0 -1
- package/dist/assets/VAlert-P256xaE0.js +0 -1
- package/dist/assets/VAutocomplete-BDb95qJX.js +0 -1
- package/dist/assets/VAvatar-DPzqDH4r.js +0 -1
- package/dist/assets/VBtn-B2MBK2DL.js +0 -1
- package/dist/assets/VCard-mXy0k4aS.js +0 -1
- package/dist/assets/VCheckbox-C7A1ZW4D.js +0 -1
- package/dist/assets/VChip-CcI-Oo2J.js +0 -1
- package/dist/assets/VDialog-Bu3EfKb1.js +0 -1
- package/dist/assets/VDivider-BMEqUoAB.js +0 -1
- package/dist/assets/VExpansionPanels-Dgjrop0V.js +0 -1
- package/dist/assets/VMenu-C_x18lwb.js +0 -1
- package/dist/assets/VOverlay-CeMZurIN.js +0 -1
- package/dist/assets/VRadioGroup-CUu2-KIP.js +0 -1
- package/dist/assets/VRow-Cpw7OHQV.js +0 -1
- package/dist/assets/VSelect-DL3HaA5m.js +0 -2
- package/dist/assets/VSheet-DZWsu0kL.js +0 -1
- package/dist/assets/VSkeletonLoader-CttxM1tw.js +0 -1
- package/dist/assets/VSpacer-Dhmsvk4t.js +0 -1
- package/dist/assets/VSwitch-BRHeDJkH.js +0 -1
- package/dist/assets/VTextField-BR2eZeFT.js +0 -1
- package/dist/assets/VTextField-BiatYyd3.css +0 -1
- package/dist/assets/VTextarea-DbqamXJd.js +0 -1
- package/dist/assets/Vibe64AuthSettingsButton-fY4ZiIFF.js +0 -5
- package/dist/assets/Vibe64DashboardPageHeader-Gm1IvlHx.css +0 -1
- package/dist/assets/Vibe64DashboardShell-BSq7uXEW.js +0 -1
- package/dist/assets/Vibe64OutputControls-_zhGX9ne.js +0 -8
- package/dist/assets/Vibe64SessionFiles-Bl8wJ5Sk.css +0 -1
- package/dist/assets/_slug_-BclonbST.js +0 -24
- package/dist/assets/_slug_-CZ1bxO9C.css +0 -1
- package/dist/assets/app-BNP_n_Tt.js +0 -1
- package/dist/assets/assistantRouting-D4XpXcEf.js +0 -3
- package/dist/assets/client-BWV84wi2.js +0 -2
- package/dist/assets/client-DGrP-2AJ.css +0 -1
- package/dist/assets/definitions-BrMvu6yV.js +0 -1
- package/dist/assets/env-BzRtyO0w.css +0 -1
- package/dist/assets/env-D3KQGvRe.js +0 -1
- package/dist/assets/health-BJvooRnJ.css +0 -1
- package/dist/assets/health-BhoO1d4h.js +0 -1
- package/dist/assets/incoming-DWDrmxyH.css +0 -1
- package/dist/assets/incoming-DzADFGqp.js +0 -2
- package/dist/assets/index-dNxr4Lg9.js +0 -138
- package/dist/assets/integrations-Cq1x-Di9.css +0 -1
- package/dist/assets/issues-Bywux4s7.js +0 -1
- package/dist/assets/mdi-CG9pWOSj.js +0 -1
- package/dist/assets/placement-BF-zIEhA.js +0 -1
- package/dist/assets/pull-requests-CdbhyFOv.css +0 -1
- package/dist/assets/pull-requests-ncmKT3sS.js +0 -1
- package/dist/assets/ripple-BVltMmyV.js +0 -11
- package/dist/assets/settings-BopLnpB0.css +0 -1
- package/dist/assets/shared-DpMvYJO3.js +0 -2
- package/dist/assets/studioGateApi-DcCqiD9V.js +0 -1
- package/dist/assets/studioUrls-DmMMIScP.js +0 -1
- package/dist/assets/useArchivedVibe64Sessions-_LB2XxEa.js +0 -1
- package/dist/assets/useCommand-Bqxb-naz.js +0 -1
- package/dist/assets/useEndpointResource-DWoQ2keu.js +0 -1
- package/dist/assets/useRealtimeEvent-Bwapstla.js +0 -1
- package/dist/assets/useVibe64ConversationLog-BqUI0S5n.js +0 -1
- package/dist/assets/useVibe64Learning-DyqXkpLw.js +0 -1
- package/dist/assets/useVibe64ProjectScope-Bp1ImZlz.js +0 -1
- package/dist/assets/useVibe64SessionData-B686lToN.js +0 -1
- package/dist/assets/vibe64SessionFocus-CqZNTvYF.js +0 -1
- package/dist/assets/vibe64SessionFocus-OJ2toBd9.css +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# Author a lesson and
|
|
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
|
|
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
|
|
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
|
-
##
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
86
|
-
still needs recovery. Do not
|
|
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
|
|
@@ -190,7 +190,7 @@ 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
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
|
|
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
|
|
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,21 +1,21 @@
|
|
|
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, **
|
|
4
|
+
step: its position, beats, **Lesson** 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
8
|
names the lesson and shows **Step N of M** with the step's title and status.
|
|
9
9
|
**Previous step** and **Next step** (arrow buttons) move through the steps.
|
|
10
|
-
**
|
|
11
|
-
|
|
12
|
-
**Play**, **Done**, **Mark as done**, its question or **Check
|
|
13
|
-
**Teach me** and **Previous step**/**Next
|
|
14
|
-
(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
10
|
+
**Lesson** (a school-cap icon), on a lesson with a practice project, shows the
|
|
11
|
+
lesson in the project pane at its current step, with everything for it: its
|
|
12
|
+
text, diagram and **Play**, **Done**, **Mark as done**, its question or **Check
|
|
13
|
+
now**, **Show me**, **Teach me**, **I'm stuck** and **Previous step**/**Next
|
|
14
|
+
step** (see [The Lesson pane](learning-environment.md#the-lesson-pane)). It
|
|
15
|
+
stays pressed while the lesson shows, and the header's **Preview** or **Dash**
|
|
16
|
+
leaves it. On a lesson without a practice project the lesson is already the
|
|
17
|
+
whole page, so the bar has no **Lesson** button.
|
|
18
|
+
**Courses**, at its right end (a book icon
|
|
19
19
|
on a phone), opens the Courses overlay to choose another lesson. The bar is
|
|
20
20
|
always shown in full; it cannot be collapsed or hidden. On a phone the lesson
|
|
21
21
|
name is hidden.
|
|
@@ -50,8 +50,8 @@ current one), then the beat's line:
|
|
|
50
50
|
it opens the place (or the file), reveals and focuses the coding chat, opens
|
|
51
51
|
Courses or Colleague (without asking it anything), reloads the Preview, or
|
|
52
52
|
sends the line's quoted prompt as your next message in the practice
|
|
53
|
-
project's Main chat
|
|
54
|
-
it. On a **Save** line it only points at **Save**: saving stays yours. On a
|
|
53
|
+
project's Main chat (for a team member, on the team AI, with no owner
|
|
54
|
+
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
55
|
line about waiting for the agent, pressing the App's button, minimising
|
|
56
56
|
Colleague or pressing **L** there is no Do it for me (for **L** it shows
|
|
57
57
|
where the button is). If it cannot be done here (for example the chat cannot take a
|
|
@@ -66,21 +66,21 @@ current one), then the beat's line:
|
|
|
66
66
|
step at either end.
|
|
67
67
|
- After the last beat the bar shows the step's own control: **Done**, **Mark as
|
|
68
68
|
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
|
|
70
|
-
step
|
|
69
|
+
not pass says why under the line) or **Answer in Lesson** for a question, which shows the
|
|
70
|
+
step in the Lesson pane. When the step has passed it shows **Next step**. **I'm stuck**
|
|
71
71
|
(on a *do* line, and after the last beat of a step that **Check my work**
|
|
72
|
-
decides, until the step passes; also in
|
|
72
|
+
decides, until the step passes; also in the Lesson pane beside **Teach me**) opens
|
|
73
73
|
Colleague and asks it for help with this step (see `learning-with-colleague`).
|
|
74
74
|
On a phone a *do* line keeps only **Do it for me** on the bar; **I'm stuck**
|
|
75
|
-
is then in
|
|
75
|
+
is then in the Lesson pane.
|
|
76
76
|
A step never moves on by itself.
|
|
77
|
-
- **Show me** on such a step (in the
|
|
77
|
+
- **Show me** on such a step (in the Lesson pane) plays its
|
|
78
78
|
beats again from the first one.
|
|
79
79
|
|
|
80
80
|
**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
|
|
82
|
-
looks for. **Check my work** uses your own AI (the
|
|
83
|
-
Accounts →
|
|
81
|
+
your work: the bar's line (and the step in the Lesson pane) shows what the review
|
|
82
|
+
looks for. **Check my work** uses your own AI (the **Explain & check** model in
|
|
83
|
+
AI Accounts → Models) to look at the changes in your practice project
|
|
84
84
|
(and, when the step says so, your coding chat); the line says **Checking your
|
|
85
85
|
work with your AI…** for up to about a minute, without a Cancel. **Passed ✓**
|
|
86
86
|
with the reviewer's comment passes the step for good. **Not yet:** says what
|
|
@@ -93,6 +93,6 @@ runs a review or passes a step for you.
|
|
|
93
93
|
|
|
94
94
|
This tab remembers the beat and the pause; another tab or device starts the
|
|
95
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; **
|
|
97
|
-
|
|
96
|
+
the beat's line and its one button below; **Courses** shows only its icon
|
|
97
|
+
and **Lesson** its icon and name. A step without beats shows its title
|
|
98
98
|
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`).
|
|
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
|
|
|
@@ -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**.
|
|
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.
|
|
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
|
|
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
|
-
|
|
38
|
-
|
|
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
|
|
59
|
-
|
|
60
|
-
**JSKIT ·
|
|
61
|
-
|
|
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 · Database app** (MySQL, no accounts) and
|
|
62
|
+
**JSKIT · Accounts app** (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.
|
|
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.
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# Publish your project as an app or package (Publish)
|
|
2
|
+
|
|
3
|
+
**Dashboard → Publish** is where a project becomes something people install: an
|
|
4
|
+
app on your own phone, or a package on a registry. On a phone, open Dashboard,
|
|
5
|
+
then choose **Publish** from the **Dashboard section** menu.
|
|
6
|
+
|
|
7
|
+
The page has four parts:
|
|
8
|
+
|
|
9
|
+
- **Releases use your saved work**: the saved commit and branch a release
|
|
10
|
+
would use, whether it is pushed, whether the project's checks passed on it,
|
|
11
|
+
and each package from Packaging with its current version.
|
|
12
|
+
- **Targets**: one card per place a release goes, followed by an **Add
|
|
13
|
+
target** tile. With no targets yet, the page offers the destinations, those
|
|
14
|
+
this project can use first: **Install on my phone**, **GitHub Releases**,
|
|
15
|
+
**npm** and **PyPI**. One that cannot be used yet says why (for example
|
|
16
|
+
"Needs a Python package in Packaging" or "Needs this project's repository
|
|
17
|
+
on GitHub"). Each shows what it needs, how long the first and later releases
|
|
18
|
+
take, and what it costs.
|
|
19
|
+
- **History**: every release and dry run with each step, each target's outcome
|
|
20
|
+
and its proof, and **Full log**. A running release updates live; you can
|
|
21
|
+
leave the page and it carries on.
|
|
22
|
+
- **Accounts & keys** (top right) and **Release** (top right).
|
|
23
|
+
|
|
24
|
+
If the project has no `## Packaging` section yet, the page says **Tell Vibe64
|
|
25
|
+
what to build** instead of showing targets. Ask Colleague or a coding
|
|
26
|
+
conversation, for example "Set up packaging so I can install this app on my
|
|
27
|
+
phone", review the change and Save it.
|
|
28
|
+
|
|
29
|
+
### Publishing keys and accounts
|
|
30
|
+
|
|
31
|
+
**Accounts & keys** keeps every sign-in and install key Vibe64 uses for
|
|
32
|
+
publishing in one file in your home folder, encrypted under a passphrase of at
|
|
33
|
+
least 12 characters (an `age` file any age tool can open). Create it once;
|
|
34
|
+
afterwards **Unlock** it for 15 minutes when you add accounts or publish, and
|
|
35
|
+
**Lock** it any time. Vibe64 cannot recover a forgotten passphrase.
|
|
36
|
+
|
|
37
|
+
- **Add account**: npm (an access token and the registry address), PyPI (an
|
|
38
|
+
API token and the upload address) or GitHub (**Use my GitHub CLI sign-in**,
|
|
39
|
+
or paste a token). Tokens go straight into the keys file; the page and
|
|
40
|
+
Colleague only ever see the account's name and address.
|
|
41
|
+
- **Replace token** (the key icon on an account) keeps the account's name and
|
|
42
|
+
address, so targets using it keep working with the new token.
|
|
43
|
+
- **Recovery kit**: **Save kit** (or **Manage**) downloads every key as one file under a second
|
|
44
|
+
passphrase; keep both off this computer. **Restore** brings them back on a
|
|
45
|
+
new computer. The panel says when a key is newer than your last kit.
|
|
46
|
+
|
|
47
|
+
### Add a target
|
|
48
|
+
|
|
49
|
+
**Add target** (or a destination tile) asks where the release goes, then which
|
|
50
|
+
package (only packages that destination can publish are offered) and which
|
|
51
|
+
account. **What it needs** marks what this project and your keys already have.
|
|
52
|
+
npm also takes an optional tag such as `next`; empty means `latest`. When the
|
|
53
|
+
dialog asks for an account, **Add account** opens Accounts & keys and, when you
|
|
54
|
+
press Done, comes back to the same target. A card's **⋮** menu switches the
|
|
55
|
+
target to another account of the same kind or removes it. Targets are kept by
|
|
56
|
+
Vibe64 for this project on this computer, not in the project's files.
|
|
57
|
+
|
|
58
|
+
### Release
|
|
59
|
+
|
|
60
|
+
1. **Release → Version**: each package offers its saved version **as saved**
|
|
61
|
+
while no release has published it, then the next patch, minor and major.
|
|
62
|
+
Releasing as saved needs no session. A new version needs one: **Write
|
|
63
|
+
1.4.3** puts the version bump and a `CHANGELOG.md` entry (drafted from the
|
|
64
|
+
saved commits in **What's new**) into the session as an ordinary change;
|
|
65
|
+
review it and **Save** it. Without a session the dialog says so and offers
|
|
66
|
+
**Release as saved** while the saved version is still unpublished.
|
|
67
|
+
2. **Review & publish**: choose targets, unlock your keys if asked, and read
|
|
68
|
+
**Before publishing**: saved and pushed work, Packaging, tags still free,
|
|
69
|
+
checks passed, every sign-in valid, install key and recovery kit, Android
|
|
70
|
+
requirements. What needs attention comes first; the rest folds into **All
|
|
71
|
+
N checks passed**. A red line stops the release and the footer says so; an
|
|
72
|
+
amber one (a changed toolchain) needs **I understand**. Failed checks name
|
|
73
|
+
the check, **Show output** shows the end of its output and **Run again**
|
|
74
|
+
reruns it; a refused sign-in offers **Fix sign-in**; saved work that is
|
|
75
|
+
not on the remote yet offers **Push to origin** (fast-forward only, never
|
|
76
|
+
forced; it is the person's button, not a Colleague tool). **What happens** lists
|
|
77
|
+
the steps in order: build each package once, tag the saved commit, publish
|
|
78
|
+
to each target (with its account and address), under a short plan id such
|
|
79
|
+
as `Plan 3f9c`.
|
|
80
|
+
3. **Dry run** builds once and asks each destination what would happen;
|
|
81
|
+
nothing is tagged or uploaded. It appears in History as a dry run.
|
|
82
|
+
4. **Publish…** opens the confirmation: exactly which package goes where at
|
|
83
|
+
which version, the saved commit and tag. **Publish** there (with your
|
|
84
|
+
passphrase if the keys locked meanwhile) builds each package once, then
|
|
85
|
+
tags the saved commit and pushes the tag, then sends the same files to
|
|
86
|
+
every target and reads each back. A failed build therefore leaves no tag
|
|
87
|
+
behind. If the saved work, targets, the account a target signs in with, or
|
|
88
|
+
tools changed since you reviewed, it refuses and shows the new plan. Builds use the saved commit without the
|
|
89
|
+
project's Genesis and agent folders (`genesis/`, `.genesis/`, `.agents/`,
|
|
90
|
+
`.claude/`, `.codex/`, `.opencode/`), so packages never ship them. Builds
|
|
91
|
+
and **Run checks** run the project's own code the way Vibe64 runs any other
|
|
92
|
+
project command, with a throwaway home folder and none of your sign-ins.
|
|
93
|
+
|
|
94
|
+
While a release runs each of its target cards shows **Publishing 1.4.3…**;
|
|
95
|
+
afterwards a card shows the version people get, **Live · published …** and a
|
|
96
|
+
**Verified** checksum read back from the destination: npm's integrity value,
|
|
97
|
+
or for PyPI and GitHub Releases each file's own sha256 (the value pip and the
|
|
98
|
+
release page show). The Publish page's
|
|
99
|
+
**Checks** line runs the checks on the saved commit at any time and, when they
|
|
100
|
+
fail, shows which check failed with **Show output**.
|
|
101
|
+
|
|
102
|
+
When a build or upload fails, the target card says **Last release failed**
|
|
103
|
+
with the reason; pressing it opens that release in History with the tool's
|
|
104
|
+
own error output (credentials removed) and **Full log**. A release where some
|
|
105
|
+
targets failed shows **Partly published**; fix the cause and **Finish this
|
|
106
|
+
release** retries only the unfinished targets of the same plan (published
|
|
107
|
+
targets are not sent again). If the fix changed the saved work, the button
|
|
108
|
+
reads **Release the new saved work** and starts a new release instead; if the
|
|
109
|
+
plan itself changed (for example a check or setting), **Finish this release**
|
|
110
|
+
opens a new release with a note saying why. Long tool output keeps its start
|
|
111
|
+
and end. Checks that fail without blocking show in amber. Errors appear as a
|
|
112
|
+
short message at the bottom of the page.
|
|
113
|
+
|
|
114
|
+
### Colleague and publishing
|
|
115
|
+
|
|
116
|
+
Colleague can read the Publish state, suggest and write a version bump into
|
|
117
|
+
the session, read the plan and preflight, start a dry run, read history and
|
|
118
|
+
logs, and **ask** to publish. Asking only shows a banner, **Your Colleague asked
|
|
119
|
+
to publish plan …**, with **Review** and **Dismiss**; **Review** opens the same
|
|
120
|
+
confirmation. Only your **Publish** press publishes. Colleague never sees a
|
|
121
|
+
token, key, passphrase or file path, and cannot add accounts, unlock keys,
|
|
122
|
+
accept a licence or confirm.
|
|
123
|
+
|
|
124
|
+
How publishing works underneath:
|
|
125
|
+
|
|
126
|
+
Package registries Vibe64 releases to:
|
|
127
|
+
|
|
128
|
+
- **npm**: an `npm` package is packed once with `npm pack`; a dry run shows the
|
|
129
|
+
exact files and what changed since the version people install today. Proof
|
|
130
|
+
is the registry's own integrity value. Undo means moving `latest` back to an
|
|
131
|
+
earlier version (npm versions cannot be replaced).
|
|
132
|
+
- **PyPI** (or TestPyPI): a `python-dist` package's sdist and wheel pass
|
|
133
|
+
`twine check` first. Versions use PyPI's spelling, so `1.5.0-rc.1` is
|
|
134
|
+
published as `1.5.0rc1`. Undo means yanking the release on pypi.org, which
|
|
135
|
+
Vibe64 links to; a file name can never be reused.
|
|
136
|
+
- **GitHub Releases**: the built files are attached to the release of the tag
|
|
137
|
+
Vibe64 put on your saved commit, as draft, prerelease or latest. Undo means
|
|
138
|
+
making an earlier release latest again.
|
|
139
|
+
- Re-running a release that already reached a registry is safe: the same
|
|
140
|
+
version with the same files counts as done. The same version with different
|
|
141
|
+
files is refused; choose a new version instead.
|
|
142
|
+
- A project that already versions with Changesets, release-please,
|
|
143
|
+
setuptools-scm or similar keeps that tool; its Packaging says
|
|
144
|
+
`Version from: external` and Vibe64 only reads the version.
|
|
145
|
+
|
|
146
|
+
**Install on my phone** (Android, no store account):
|
|
147
|
+
|
|
148
|
+
- The app's web client is a `web-bundle` package and the phone app a
|
|
149
|
+
`capacitor` package with an id such as `com.example.notes` (permanent once
|
|
150
|
+
people install it), a name, a 1024×1024 PNG icon with no transparency, and
|
|
151
|
+
one `Permission` line with a plain reason per capability (camera,
|
|
152
|
+
microphone, location, notifications, photos, contacts, calendar, bluetooth,
|
|
153
|
+
vibration). Native plugins are ordinary dependencies of the client at the
|
|
154
|
+
exact versions in its `package-lock.json`, on Capacitor 8; Vibe64 builds
|
|
155
|
+
with exactly those and stops if the lockfile disagrees.
|
|
156
|
+
- The build needs Java 21 and the Android SDK (platform 36). Vibe64 shows the
|
|
157
|
+
Android SDK licence; only after **you** accept it does it download the SDK
|
|
158
|
+
into a folder in your home directory. It never accepts the licence for you.
|
|
159
|
+
The first build downloads about 2 GB in all and needs about 2 GB of free
|
|
160
|
+
memory; later builds take a minute or two.
|
|
161
|
+
- The card lists three one-time tasks in order. **Android build tools → Set
|
|
162
|
+
up** shows Google's licence in full; **Accept and download** records your
|
|
163
|
+
acceptance and downloads Java and the SDK into your user cache folder.
|
|
164
|
+
**Install key → Create** makes the app's **install key** in your publishing
|
|
165
|
+
keys. **Recovery kit → Save kit** downloads a kit that includes it. Preflight
|
|
166
|
+
stops a phone release until all three are done.
|
|
167
|
+
- Phones install an update only when it is signed with the same install key: a
|
|
168
|
+
lost key (and no recovery kit) means everyone must uninstall and reinstall.
|
|
169
|
+
On the command line, `vibe64-publish keygen app --out <folder>` creates a key
|
|
170
|
+
as two private files.
|
|
171
|
+
- Every build gets a build number one higher than the last; it is never stored
|
|
172
|
+
in the project. After a release the card shows **Install on phone**: a QR
|
|
173
|
+
code your phone scans on the same Wi-Fi. Opened on an Android phone itself,
|
|
174
|
+
it offers **Download** directly, with **Show a QR code for another phone**. This computer shares only that one
|
|
175
|
+
APK, at an unguessable address, for 10 minutes or until you close the
|
|
176
|
+
dialog. **Download APK** saves it here instead; History offers both for
|
|
177
|
+
earlier releases.
|
|
178
|
+
- Phones that installed this APK must uninstall it before installing the same
|
|
179
|
+
app from Google Play later (a different signing line). Since 30 September
|
|
180
|
+
2026, phones in Brazil, Indonesia, Singapore and Thailand install apps only
|
|
181
|
+
from developers verified by Google; this goes worldwide in 2027. Preflight
|
|
182
|
+
says so before a release.
|
|
183
|
+
|
|
184
|
+
Colleague can open **Publish** for you and explain these steps. It cannot
|
|
185
|
+
publish, confirm a release or see any credential.
|