vibe64 0.1.39 → 0.1.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/bin/run.js +1955 -1855
  2. package/bin/server.js +136 -112
  3. package/bin/upgrade-state.js +5514 -5343
  4. package/dist/assets/GithubBrowserTabs-YvIe2BdE.js +1 -0
  5. package/dist/assets/LocalDatabaseServer-BWAvRlUl.css +1 -0
  6. package/dist/assets/LocalDatabaseServer-CVsGChHh.js +2 -0
  7. package/dist/assets/StudioErrorNotice-C_jbvp9V.js +1 -0
  8. package/dist/assets/VAlert-gwuhYlYb.js +1 -0
  9. package/dist/assets/VAutocomplete-D7Vk5wq_.js +1 -0
  10. package/dist/assets/VAvatar-DvRBcmqv.js +1 -0
  11. package/dist/assets/VBtn-BhVEwXLX.js +1 -0
  12. package/dist/assets/VCard-C3Hx769y.js +1 -0
  13. package/dist/assets/VCheckbox-DyCGSN0H.js +1 -0
  14. package/dist/assets/VCheckboxBtn-DCyuVH7W.css +1 -0
  15. package/dist/assets/VCheckboxBtn-DYcQU2Pn.js +1 -0
  16. package/dist/assets/VChip-VVdtjfq-.js +1 -0
  17. package/dist/assets/VDialog-CQDhjRiV.js +1 -0
  18. package/dist/assets/VDivider-Dq25WsKu.js +1 -0
  19. package/dist/assets/VExpansionPanels-C1y-myl5.js +1 -0
  20. package/dist/assets/VMenu-CDcBLYWR.js +1 -0
  21. package/dist/assets/VOverlay-Cp4rFk6g.js +1 -0
  22. package/dist/assets/VRadioGroup-CAjNZwF7.js +1 -0
  23. package/dist/assets/VRow-BskP28jR.js +1 -0
  24. package/dist/assets/VSelect-D3oLvCcB.js +2 -0
  25. package/dist/assets/VSheet-DxYEFfnM.js +1 -0
  26. package/dist/assets/VSkeletonLoader-Cync3lZZ.js +1 -0
  27. package/dist/assets/VSpacer-CgWOWvBh.js +1 -0
  28. package/dist/assets/VSwitch-BxGuGypi.js +1 -0
  29. package/dist/assets/VTextField-C0b_0cSa.js +1 -0
  30. package/dist/assets/VTextField-F6unyhrS.css +1 -0
  31. package/dist/assets/VTextarea-B7sZd1JY.js +1 -0
  32. package/dist/assets/{Vibe64AsyncModuleState-Do9EqX3S.js → Vibe64AsyncModuleState-syuPcpGx.js} +1 -1
  33. package/dist/assets/{Vibe64AuthSettingsButton-M44SSmZ9.css → Vibe64AuthSettingsButton-D2lltUhi.css} +1 -1
  34. package/dist/assets/Vibe64AuthSettingsButton-DLdfT68V.js +5 -0
  35. package/dist/assets/Vibe64CopyCommand-CYiZcy0d.js +1 -0
  36. package/dist/assets/Vibe64CopyCommand-ClbQLYZi.css +1 -0
  37. package/dist/assets/{Vibe64DashboardBackButton-BH_8j_VR.js → Vibe64DashboardBackButton-Go_MJuIK.js} +1 -1
  38. package/dist/assets/{Vibe64DashboardPageHeader-BXQR00HK.js → Vibe64DashboardPageHeader-BMrdRph6.js} +1 -1
  39. package/dist/assets/Vibe64DashboardPageHeader-CdlzsyKQ.css +1 -0
  40. package/dist/assets/Vibe64DashboardShell-DMPz6fIx.js +1 -0
  41. package/dist/assets/{Vibe64DatabaseWorkspace-CEml9BWn.js → Vibe64DatabaseWorkspace-BCEIOlSg.js} +3 -3
  42. package/dist/assets/{Vibe64DatabaseWorkspace-DPDMxhAW.css → Vibe64DatabaseWorkspace-DePBDUMy.css} +1 -1
  43. package/dist/assets/{Vibe64OutputControls-Co5YzwcK.css → Vibe64OutputControls-CeBzZPUT.css} +1 -1
  44. package/dist/assets/Vibe64OutputControls-DMoqL0VD.js +8 -0
  45. package/dist/assets/{Vibe64RepositoryWorkspace-obZFXkoG.js → Vibe64RepositoryWorkspace-BdwRwbxp.js} +2 -2
  46. package/dist/assets/{Vibe64RepositoryWorkspace-Agyt4O-V.css → Vibe64RepositoryWorkspace-Bw9W691N.css} +1 -1
  47. package/dist/assets/{Vibe64SessionFiles-CQzs6fee.js → Vibe64SessionFiles-ChJWUOqm.js} +4 -4
  48. package/dist/assets/Vibe64SessionFiles-DsPb8hOe.css +1 -0
  49. package/dist/assets/{Vibe64TemporaryAiFixAction-BiuIE9mC.js → Vibe64TemporaryAiFixAction-CIePbdW8.js} +1 -1
  50. package/dist/assets/{Vibe64UiStoryboardView-BhKRpL0N.js → Vibe64UiStoryboardView-Bp9STItF.js} +1 -1
  51. package/dist/assets/{Vibe64UnavailableSessions-Ca5nC7KH.js → Vibe64UnavailableSessions-JBgHzM-j.js} +1 -1
  52. package/dist/assets/{_sessionId_-CKkGH3Rx.js → _sessionId_-Bw0KfJeR.js} +1 -1
  53. package/dist/assets/{_sessionTool_-1V-z6Pbp.js → _sessionTool_-BV1AwpUx.js} +1 -1
  54. package/dist/assets/_slug_-CAmuBm-M.css +1 -0
  55. package/dist/assets/_slug_-q9prK_gX.js +25 -0
  56. package/dist/assets/{access-WlhPvPgy.js → access-C05Nkq6r.js} +1 -1
  57. package/dist/assets/app-D1CGY9Xm.js +1 -0
  58. package/dist/assets/assistantRouting-DeE8jvtE.js +3 -0
  59. package/dist/assets/{changes-CHJjrZAc.js → changes-D17XpgGz.js} +1 -1
  60. package/dist/assets/client-BxGiylrJ.js +2 -0
  61. package/dist/assets/client-C8jwAMY9.css +1 -0
  62. package/dist/assets/{conversation-B90ERX9h.js → conversation-DZW4-Wck.js} +2 -2
  63. package/dist/assets/{conversation-vxJGwmtW.css → conversation-TK6EmDk4.css} +1 -1
  64. package/dist/assets/{createSimpleFunctional-CZTGuNuR.js → createSimpleFunctional-zlXZooQW.js} +1 -1
  65. package/dist/assets/{dashboard-CuutW8iv.js → dashboard-BXXgeQ0Q.js} +1 -1
  66. package/dist/assets/definitions-SNvFDEFS.js +1 -0
  67. package/dist/assets/dialog-transition-D2vqGksQ.js +1 -0
  68. package/dist/assets/env-B5V1EC4M.css +1 -0
  69. package/dist/assets/env-sXAQqKWk.js +1 -0
  70. package/dist/assets/health-92hh8xXh.css +1 -0
  71. package/dist/assets/health-Cr34pf2p.js +1 -0
  72. package/dist/assets/{history-1_NU8azF.js → history-N1iRZaab.js} +1 -1
  73. package/dist/assets/incoming-Bdqo8z25.css +1 -0
  74. package/dist/assets/incoming-CNwZa_yD.js +2 -0
  75. package/dist/assets/{index-irlMYzLh.css → index-B17d4wpZ.css} +1 -1
  76. package/dist/assets/index-Mxalhei8.js +138 -0
  77. package/dist/assets/{integrations-BMzWQQpa.js → integrations-BmwFvHgZ.js} +10 -10
  78. package/dist/assets/integrations-Co8WvCiD.css +1 -0
  79. package/dist/assets/issues-BbiG7dCV.js +1 -0
  80. package/dist/assets/layout-B2Ap07aa.js +1 -0
  81. package/dist/assets/{lazy-NHSwD9FS.js → lazy-BjyT2XvW.js} +1 -1
  82. package/dist/assets/{learning-Bdi3XRS7.js → learning-CUCuuoHM.js} +1 -1
  83. package/dist/assets/mdi-Bt90Ns76.js +1 -0
  84. package/dist/assets/placement-CQy46H3H.js +1 -0
  85. package/dist/assets/publish-4r_4K5IY.js +3 -0
  86. package/dist/assets/publish-BFTsAMCF.css +1 -0
  87. package/dist/assets/pull-requests-BjwokcU0.css +1 -0
  88. package/dist/assets/pull-requests-DY9jg3cE.js +1 -0
  89. package/dist/assets/{repository-BL_2bgzC.js → repository-DhXdoMP6.js} +1 -1
  90. package/dist/assets/ripple-EFNA8EBu.js +11 -0
  91. package/dist/assets/rolldown-runtime-DBalRfVu.js +1 -0
  92. package/dist/assets/{session-BdhKrcX4.js → session-BGpiZThC.js} +1 -1
  93. package/dist/assets/{settings-1rpuL7eR.js → settings-Cj4u-76p.js} +1 -1
  94. package/dist/assets/settings-D8x4KUqV.css +1 -0
  95. package/dist/assets/shared-DZETtWRH.js +2 -0
  96. package/dist/assets/studioGateApi-BXHVBVEc.js +1 -0
  97. package/dist/assets/studioUrls-DpSS-0z1.js +1 -0
  98. package/dist/assets/useArchivedVibe64Sessions-BXNg8oES.js +1 -0
  99. package/dist/assets/useCommand-nWFczmJy.js +1 -0
  100. package/dist/assets/useEndpointResource-Ds8EDBZ2.js +1 -0
  101. package/dist/assets/useRealtimeEvent-DrOiU8lJ.js +1 -0
  102. package/dist/assets/{useUiFeedback-BPBF_0bp.js → useUiFeedback-CMwE4MLs.js} +1 -1
  103. package/dist/assets/useVibe64ConversationLog-C1xjhFtS.js +1 -0
  104. package/dist/assets/{useVibe64DatabaseTools-4o6S8eXq.js → useVibe64DatabaseTools-H6H-YJQX.js} +1 -1
  105. package/dist/assets/useVibe64ProjectScope-B5ogg6jd.js +1 -0
  106. package/dist/assets/useVibe64SessionData-CnDOFFHb.js +1 -0
  107. package/dist/assets/{useVibe64SessionSelection-BzL1y_Vq.js → useVibe64SessionSelection-J87nJ9p5.js} +1 -1
  108. package/dist/assets/{useVibe64SystemGraph-B4RmsC9Y.js → useVibe64SystemGraph-DbSfrYF8.js} +1 -1
  109. package/dist/assets/{useVibe64Terminal-Cg3idMcy.js → useVibe64Terminal-I7Sf6xMW.js} +1 -1
  110. package/dist/assets/vibe64ProjectScope.local-B06ABkhI.js +1 -0
  111. package/dist/assets/vibe64SavedEnvValues-B_QE9aAj.js +1 -0
  112. package/dist/assets/vibe64SessionFocus-CA-sk8Ri.css +1 -0
  113. package/dist/assets/vibe64SessionFocus-DlN8NwcE.js +1 -0
  114. package/dist/assets/{vibe64SessionInfo-BuBUdL-e.js → vibe64SessionInfo-B0uItVOK.js} +1 -1
  115. package/dist/assets/{vibe64SessionToolDefinitions-BJaJH5LR.js → vibe64SessionToolDefinitions-Dsn8WYmO.js} +1 -1
  116. package/dist/index.html +56 -46
  117. package/docs/colleague-usage/account-profile-and-appearance.md +1 -1
  118. package/docs/colleague-usage/{ai-accounts-and-routing.md → ai-accounts.md} +41 -114
  119. package/docs/colleague-usage/ai-model-setups.md +159 -0
  120. package/docs/colleague-usage/ai-onboarding.md +97 -22
  121. package/docs/colleague-usage/ai-personal-use.md +41 -0
  122. package/docs/colleague-usage/auto-workflow.md +8 -3
  123. package/docs/colleague-usage/codex-context-recovery.md +2 -1
  124. package/docs/colleague-usage/coding-agent-goals.md +7 -4
  125. package/docs/colleague-usage/coding-agents.md +8 -5
  126. package/docs/colleague-usage/colleague-watches.md +15 -4
  127. package/docs/colleague-usage/colleague.md +21 -5
  128. package/docs/colleague-usage/connected-contributions.md +13 -13
  129. package/docs/colleague-usage/connected-projects.md +2 -2
  130. package/docs/colleague-usage/conversation-context.md +1 -1
  131. package/docs/colleague-usage/dashboard-navigation.md +5 -3
  132. package/docs/colleague-usage/development-env.md +21 -4
  133. package/docs/colleague-usage/file-interfaces.md +1 -1
  134. package/docs/colleague-usage/github-work.md +8 -8
  135. package/docs/colleague-usage/health-checks.md +52 -18
  136. package/docs/colleague-usage/incoming-changes.md +3 -3
  137. package/docs/colleague-usage/integrations.md +5 -3
  138. package/docs/colleague-usage/learning-course-catalogue.md +3 -3
  139. package/docs/colleague-usage/learning-environment.md +78 -56
  140. package/docs/colleague-usage/learning-mode-ui.md +31 -19
  141. package/docs/colleague-usage/learning-practice-projects.md +15 -4
  142. package/docs/colleague-usage/learning-teacher-guide.md +10 -4
  143. package/docs/colleague-usage/learning-with-colleague.md +12 -8
  144. package/docs/colleague-usage/lesson-authoring.md +13 -13
  145. package/docs/colleague-usage/lesson-step-bar.md +47 -33
  146. package/docs/colleague-usage/main-chat-approvals.md +150 -0
  147. package/docs/colleague-usage/preview-browser-checks.md +5 -1
  148. package/docs/colleague-usage/preview-starting-application.md +10 -1
  149. package/docs/colleague-usage/project-language-tools.md +16 -2
  150. package/docs/colleague-usage/project-settings.md +1 -1
  151. package/docs/colleague-usage/project-setup.md +17 -7
  152. package/docs/colleague-usage/publishing.md +187 -0
  153. package/docs/colleague-usage/running-vibe64-on-your-computer.md +54 -6
  154. package/docs/colleague-usage/sessions.md +18 -10
  155. package/docs/colleague-usage/set-up-linux.md +254 -0
  156. package/docs/colleague-usage/set-up-macos.md +199 -0
  157. package/docs/colleague-usage/set-up-windows.md +76 -0
  158. package/docs/colleague-usage/starter-apps.md +23 -6
  159. package/docs/colleague-usage/teaching-content.md +2 -2
  160. package/docs/colleague-usage/team-ai-access.md +108 -0
  161. package/docs/colleague-usage/temporary-chats.md +9 -7
  162. package/docs/colleague-usage/workspace-preparation.md +50 -1
  163. package/docs/templates/learn-topic/README.md +3 -3
  164. package/docs/templates/learn-topic/training/lessons/TOPIC-01/lesson.json +2 -1
  165. package/docs/training-content.md +37 -15
  166. package/node_modules/@jskit-ai/assistant-core/package.json +1 -1
  167. package/node_modules/@jskit-ai/assistant-runtime/package.json +1 -1
  168. package/node_modules/@jskit-ai/assistant-voice/package.json +1 -1
  169. package/node_modules/@jskit-ai/connector-google-calendar/package.json +1 -1
  170. package/node_modules/@jskit-ai/connectors-catalog/package.json +1 -1
  171. package/node_modules/@jskit-ai/connectors-catalog/patterns/oauth-connection/PATTERN.md +25 -0
  172. package/node_modules/@jskit-ai/connectors-core/package.json +1 -1
  173. package/node_modules/@jskit-ai/http-runtime/package.json +1 -1
  174. package/node_modules/@jskit-ai/kernel/package.json +1 -1
  175. package/node_modules/@jskit-ai/realtime/package.json +1 -1
  176. package/node_modules/@jskit-ai/resource-core/package.json +1 -1
  177. package/node_modules/@jskit-ai/resource-crud-core/package.json +1 -1
  178. package/node_modules/@jskit-ai/uploads-runtime/package.json +1 -1
  179. package/node_modules/@local/vibe64-accounts/package.json +2 -1
  180. package/node_modules/@local/vibe64-core/package.json +4 -1
  181. package/node_modules/@local/vibe64-execution/src/host/execHelper.js +82 -81
  182. package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +83 -82
  183. package/node_modules/@local/vibe64-genesis/package.json +1 -0
  184. package/node_modules/@local/vibe64-genesis/src/server/agentSpecs.js +118 -68
  185. package/node_modules/@local/vibe64-genesis/src/server/index.js +536 -449
  186. package/node_modules/@local/vibe64-genesis/src/server/packaging.js +105 -0
  187. package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +144 -145
  188. package/node_modules/@local/vibe64-packaging/package.json +26 -0
  189. package/node_modules/@local/vibe64-packaging/src/server/packers/capacitor/ShellIcons.java +112 -0
  190. package/node_modules/@local/vibe64-project/package.json +3 -1
  191. package/node_modules/@local/vibe64-publishing/package.json +12 -0
  192. package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +7 -7
  193. package/node_modules/@local/vibe64-runtime/src/shared/assistantRoutingScores.json +25 -22
  194. package/node_modules/@local/vibe64-terminals/package.json +2 -1
  195. package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1341 -1300
  196. package/node_modules/@local/vibe64-training/package.json +2 -1
  197. package/package.json +19 -15
  198. package/server.bundle.mjs +43109 -41089
  199. package/dist/assets/GithubBrowserTabs-C2NO5l8g.js +0 -1
  200. package/dist/assets/StudioErrorNotice-CSrUw1QV.js +0 -1
  201. package/dist/assets/VAlert-P256xaE0.js +0 -1
  202. package/dist/assets/VAutocomplete-BDb95qJX.js +0 -1
  203. package/dist/assets/VAvatar-DPzqDH4r.js +0 -1
  204. package/dist/assets/VBtn-B2MBK2DL.js +0 -1
  205. package/dist/assets/VCard-mXy0k4aS.js +0 -1
  206. package/dist/assets/VCheckbox-C7A1ZW4D.js +0 -1
  207. package/dist/assets/VChip-CcI-Oo2J.js +0 -1
  208. package/dist/assets/VDialog-Bu3EfKb1.js +0 -1
  209. package/dist/assets/VDivider-BMEqUoAB.js +0 -1
  210. package/dist/assets/VExpansionPanels-Dgjrop0V.js +0 -1
  211. package/dist/assets/VMenu-C_x18lwb.js +0 -1
  212. package/dist/assets/VOverlay-CeMZurIN.js +0 -1
  213. package/dist/assets/VRadioGroup-CUu2-KIP.js +0 -1
  214. package/dist/assets/VRow-Cpw7OHQV.js +0 -1
  215. package/dist/assets/VSelect-DL3HaA5m.js +0 -2
  216. package/dist/assets/VSheet-DZWsu0kL.js +0 -1
  217. package/dist/assets/VSkeletonLoader-CttxM1tw.js +0 -1
  218. package/dist/assets/VSpacer-Dhmsvk4t.js +0 -1
  219. package/dist/assets/VSwitch-BRHeDJkH.js +0 -1
  220. package/dist/assets/VTextField-BR2eZeFT.js +0 -1
  221. package/dist/assets/VTextField-BiatYyd3.css +0 -1
  222. package/dist/assets/VTextarea-DbqamXJd.js +0 -1
  223. package/dist/assets/Vibe64AuthSettingsButton-fY4ZiIFF.js +0 -5
  224. package/dist/assets/Vibe64DashboardPageHeader-Gm1IvlHx.css +0 -1
  225. package/dist/assets/Vibe64DashboardShell-BSq7uXEW.js +0 -1
  226. package/dist/assets/Vibe64OutputControls-_zhGX9ne.js +0 -8
  227. package/dist/assets/Vibe64SessionFiles-Bl8wJ5Sk.css +0 -1
  228. package/dist/assets/_slug_-BclonbST.js +0 -24
  229. package/dist/assets/_slug_-CZ1bxO9C.css +0 -1
  230. package/dist/assets/app-BNP_n_Tt.js +0 -1
  231. package/dist/assets/assistantRouting-D4XpXcEf.js +0 -3
  232. package/dist/assets/client-BWV84wi2.js +0 -2
  233. package/dist/assets/client-DGrP-2AJ.css +0 -1
  234. package/dist/assets/definitions-BrMvu6yV.js +0 -1
  235. package/dist/assets/env-BzRtyO0w.css +0 -1
  236. package/dist/assets/env-D3KQGvRe.js +0 -1
  237. package/dist/assets/health-BJvooRnJ.css +0 -1
  238. package/dist/assets/health-BhoO1d4h.js +0 -1
  239. package/dist/assets/incoming-DWDrmxyH.css +0 -1
  240. package/dist/assets/incoming-DzADFGqp.js +0 -2
  241. package/dist/assets/index-dNxr4Lg9.js +0 -138
  242. package/dist/assets/integrations-Cq1x-Di9.css +0 -1
  243. package/dist/assets/issues-Bywux4s7.js +0 -1
  244. package/dist/assets/mdi-CG9pWOSj.js +0 -1
  245. package/dist/assets/placement-BF-zIEhA.js +0 -1
  246. package/dist/assets/pull-requests-CdbhyFOv.css +0 -1
  247. package/dist/assets/pull-requests-ncmKT3sS.js +0 -1
  248. package/dist/assets/ripple-BVltMmyV.js +0 -11
  249. package/dist/assets/settings-BopLnpB0.css +0 -1
  250. package/dist/assets/shared-DpMvYJO3.js +0 -2
  251. package/dist/assets/studioGateApi-DcCqiD9V.js +0 -1
  252. package/dist/assets/studioUrls-DmMMIScP.js +0 -1
  253. package/dist/assets/useArchivedVibe64Sessions-_LB2XxEa.js +0 -1
  254. package/dist/assets/useCommand-Bqxb-naz.js +0 -1
  255. package/dist/assets/useEndpointResource-DWoQ2keu.js +0 -1
  256. package/dist/assets/useRealtimeEvent-Bwapstla.js +0 -1
  257. package/dist/assets/useVibe64ConversationLog-BqUI0S5n.js +0 -1
  258. package/dist/assets/useVibe64Learning-DyqXkpLw.js +0 -1
  259. package/dist/assets/useVibe64ProjectScope-Bp1ImZlz.js +0 -1
  260. package/dist/assets/useVibe64SessionData-B686lToN.js +0 -1
  261. package/dist/assets/vibe64SessionFocus-CqZNTvYF.js +0 -1
  262. package/dist/assets/vibe64SessionFocus-OJ2toBd9.css +0 -1
@@ -1,4 +1,4 @@
1
- import{Zn as __toESM,d as VProgressLinear,h as VIcon,qn as __commonJSMin}from"./ripple-BVltMmyV.js";import{D as createVNode,E as createTextVNode,Ht as watch,On as unref,Pt as useId,Zn as normalizeClass,_ as createBaseVNode,b as createElementBlock,bt as renderList,ct as onMounted,er as normalizeStyle,g as computed,gn as reactive,it as onBeforeUnmount,mt as openBlock,o as Fragment,pn as onScopeDispose,qt as withCtx,tr as toDisplayString,v as createBlock,vn as ref,w as createSlots,y as createCommentVNode}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{n as useRealtimeEvent,p as getHttpWebClient}from"./useRealtimeEvent-Bwapstla.js";import{t as VChip}from"./VChip-CcI-Oo2J.js";import{Ct as mdiFileCompare,H as mdiClockOutline,I as mdiChevronRight,K as mdiCloudRefreshOutline,U as mdiClose,er as mdiSourceBranchSync,ir as mdiSourceRepository,nr as mdiSourceMerge,o as mdiAccountOutline,tr as mdiSourceCommit}from"./mdi-CG9pWOSj.js";import{t as VBtn}from"./VBtn-B2MBK2DL.js";import{t as VAlert}from"./VAlert-P256xaE0.js";import{t as VDivider}from"./VDivider-BMEqUoAB.js";import{t as VSheet}from"./VSheet-DZWsu0kL.js";import{t as VDialog}from"./VDialog-Bu3EfKb1.js";import{i as VCardTitle,n as VCardText,o as VCardActions,t as VCard}from"./VCard-mXy0k4aS.js";import{t as VSpacer}from"./VSpacer-Dhmsvk4t.js";import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper-DNW4j-dv.js";import{t as StudioErrorNotice_default}from"./StudioErrorNotice-CSrUw1QV.js";import{r as writeLocalStorageJson,t as readLocalStorageJson}from"./browserLocalStorage-B4C7rHrs.js";import"./shared-BEwrtWSp.js";import{n as vibe64ApiResponseError}from"./vibe64ApiResponses-DNLY1Kel.js";import{D as VIBE64_SESSION_CHANGED_EVENT,J as vibe64RepositoryVersionFilesPath,K as vibe64RepositoryHistoryPath,O as VIBE64_SOURCE_EDITOR_FILE_CHANGED_EVENT,X as vibe64SessionChangesPath,Y as vibe64SessionChangeDiffPath,Z as vibe64SessionCheckUpdatesPath,q as vibe64RepositoryVersionDiffPath,y as readRefOrGetterValue}from"./index-dNxr4Lg9.js";import{t as Vibe64TemporaryAiFixAction_default}from"./Vibe64TemporaryAiFixAction-BiuIE9mC.js";import{n as diffWordsWithSpace,r as diffChars}from"./libesm-CR-iGldz.js";import{n as repositoryStatusRealtimeShouldRefresh,r as repositoryStatusSessionId,t as repositoryStatusRealtimeNeedsCanonicalCheck}from"./vibe64RepositoryRealtime-DXk0Jai3.js";import{t as Vibe64DashboardPageHeader_default}from"./Vibe64DashboardPageHeader-BXQR00HK.js";function nonnegativeInteger(value){const number=Number(value);return Number.isSafeInteger(number)&&number>=0?number:0}function repositoryUpdateRelationship(aheadValue=0,behindValue=0){const ahead=nonnegativeInteger(aheadValue);const behind=nonnegativeInteger(behindValue);if(ahead>0&&behind>0)return`diverged`;if(behind>0)return`behind`;if(ahead>0)return`ahead`;return`current`}var LineType;(function(LineType){LineType[`INSERT`]=`insert`;LineType[`DELETE`]=`delete`;LineType[`CONTEXT`]=`context`})(LineType||(LineType={}));var OutputFormatType={LINE_BY_LINE:`line-by-line`,SIDE_BY_SIDE:`side-by-side`};var LineMatchingType={LINES:`lines`,WORDS:`words`,NONE:`none`};var DiffStyleType={WORD:`word`,CHAR:`char`};var ColorSchemeType;(function(ColorSchemeType){ColorSchemeType[`AUTO`]=`auto`;ColorSchemeType[`DARK`]=`dark`;ColorSchemeType[`LIGHT`]=`light`})(ColorSchemeType||(ColorSchemeType={}));var regex=RegExp(`[`+[`-`,`[`,`]`,`/`,`{`,`}`,`(`,`)`,`*`,`+`,`?`,`.`,`\\`,`^`,`$`,`|`].join(`\\`)+`]`,`g`);function escapeForRegExp(str){return str.replace(regex,`\\$&`)}function unifyPath(path){return path?path.replace(/\\/g,`/`):path}function hashCode(text){let i,chr,len;let hash=0;for(i=0,len=text.length;i<len;i++){chr=text.charCodeAt(i);hash=(hash<<5)-hash+chr;hash|=0}return hash}function max(arr){const length=arr.length;let max=-Infinity;for(let i=0;i<length;i++)max=Math.max(max,arr[i]);return max}function getExtension(filename,language){const filenameParts=filename.split(`.`);return filenameParts.length>1?filenameParts[filenameParts.length-1]:language}function startsWithAny(str,prefixes){return prefixes.reduce((startsWith,prefix)=>startsWith||str.startsWith(prefix),false)}var baseDiffFilenamePrefixes=[`a/`,`b/`,`i/`,`w/`,`c/`,`o/`];function getFilename(line,linePrefix,extraPrefix){const prefixes=extraPrefix!==void 0?[...baseDiffFilenamePrefixes,extraPrefix]:baseDiffFilenamePrefixes;const[,filename=``]=(linePrefix?new RegExp(`^${escapeForRegExp(linePrefix)} "?(.+?)"?$`):new RegExp(`^"?(.+?)"?$`)).exec(line)||[];const matchingPrefix=prefixes.find(p=>filename.indexOf(p)===0);return(matchingPrefix?filename.slice(matchingPrefix.length):filename).replace(/\s+\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(?:\.\d+)? [+-]\d{4}.*$/,``)}function getSrcFilename(line,srcPrefix){return getFilename(line,`---`,srcPrefix)}function getDstFilename(line,dstPrefix){return getFilename(line,`+++`,dstPrefix)}function parse(diffInput,config={}){const files=[];let currentFile=null;let currentBlock=null;let oldLine=null;let oldLine2=null;let newLine=null;let possibleOldName=null;let possibleNewName=null;const oldFileNameHeader=`--- `;const newFileNameHeader=`+++ `;const hunkHeaderPrefix=`@@`;const oldMode=/^old mode (\d{6})/;const newMode=/^new mode (\d{6})/;const deletedFileMode=/^deleted file mode (\d{6})/;const newFileMode=/^new file mode (\d{6})/;const copyFrom=/^copy from "?(.+)"?/;const copyTo=/^copy to "?(.+)"?/;const renameFrom=/^rename from "?(.+)"?/;const renameTo=/^rename to "?(.+)"?/;const similarityIndex=/^similarity index (\d+)%/;const dissimilarityIndex=/^dissimilarity index (\d+)%/;const index=/^index ([\da-z]+)\.\.([\da-z]+)\s*(\d{6})?/;const binaryFiles=/^Binary files (.*) and (.*) differ/;const binaryDiff=/^GIT binary patch/;const combinedIndex=/^index ([\da-z]+),([\da-z]+)\.\.([\da-z]+)/;const combinedMode=/^mode (\d{6}),(\d{6})\.\.(\d{6})/;const combinedNewFile=/^new file mode (\d{6})/;const combinedDeletedFile=/^deleted file mode (\d{6}),(\d{6})/;const diffLines=diffInput.replace(/\/g,``).replace(/\r\n?/g,`
1
+ import{a as __toESM,t as __commonJSMin}from"./rolldown-runtime-DBalRfVu.js";import{D as createVNode,E as createTextVNode,Ht as watch,On as unref,Pt as useId,Zn as normalizeClass,_ as createBaseVNode,b as createElementBlock,bt as renderList,ct as onMounted,er as normalizeStyle,g as computed,gn as reactive,it as onBeforeUnmount,mt as openBlock,o as Fragment,pn as onScopeDispose,qt as withCtx,tr as toDisplayString,v as createBlock,vn as ref,w as createSlots,y as createCommentVNode}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{d as VProgressLinear,h as VIcon}from"./ripple-EFNA8EBu.js";import{u as getHttpWebClient}from"./vibe64ProjectScope.local-B06ABkhI.js";import{t as VChip}from"./VChip-VVdtjfq-.js";import{Sr as mdiSourceMerge,U as mdiChevronRight,X as mdiClose,Y as mdiClockOutline,br as mdiSourceBranchSync,c as mdiAccountOutline,et as mdiCloudRefreshOutline,jt as mdiFileCompare,wr as mdiSourceRepository,xr as mdiSourceCommit}from"./mdi-Bt90Ns76.js";import{t as VBtn}from"./VBtn-BhVEwXLX.js";import{t as VAlert}from"./VAlert-gwuhYlYb.js";import{t as VDivider}from"./VDivider-Dq25WsKu.js";import{t as VSheet}from"./VSheet-DxYEFfnM.js";import{t as VDialog}from"./VDialog-CQDhjRiV.js";import{i as VCardTitle,n as VCardText,o as VCardActions,t as VCard}from"./VCard-C3Hx769y.js";import{t as VSpacer}from"./VSpacer-CgWOWvBh.js";import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper-DNW4j-dv.js";import{n as useRealtimeEvent}from"./useRealtimeEvent-DrOiU8lJ.js";import{t as StudioErrorNotice_default}from"./StudioErrorNotice-C_jbvp9V.js";import{r as writeLocalStorageJson,t as readLocalStorageJson}from"./browserLocalStorage-B4C7rHrs.js";import"./shared-BEwrtWSp.js";import{n as vibe64ApiResponseError}from"./vibe64ApiResponses-DNLY1Kel.js";import{J as vibe64RepositoryVersionDiffPath,O as VIBE64_SESSION_CHANGED_EVENT,Q as vibe64SessionCheckUpdatesPath,X as vibe64SessionChangeDiffPath,Y as vibe64RepositoryVersionFilesPath,Z as vibe64SessionChangesPath,b as readRefOrGetterValue,k as VIBE64_SOURCE_EDITOR_FILE_CHANGED_EVENT,q as vibe64RepositoryHistoryPath}from"./index-Mxalhei8.js";import{t as Vibe64TemporaryAiFixAction_default}from"./Vibe64TemporaryAiFixAction-CIePbdW8.js";import{n as diffWordsWithSpace,r as diffChars}from"./libesm-CR-iGldz.js";import{n as repositoryStatusRealtimeShouldRefresh,r as repositoryStatusSessionId,t as repositoryStatusRealtimeNeedsCanonicalCheck}from"./vibe64RepositoryRealtime-DXk0Jai3.js";import{t as Vibe64DashboardPageHeader_default}from"./Vibe64DashboardPageHeader-BMrdRph6.js";function nonnegativeInteger(value){const number=Number(value);return Number.isSafeInteger(number)&&number>=0?number:0}function repositoryUpdateRelationship(aheadValue=0,behindValue=0){const ahead=nonnegativeInteger(aheadValue);const behind=nonnegativeInteger(behindValue);if(ahead>0&&behind>0)return`diverged`;if(behind>0)return`behind`;if(ahead>0)return`ahead`;return`current`}var LineType;(function(LineType){LineType[`INSERT`]=`insert`;LineType[`DELETE`]=`delete`;LineType[`CONTEXT`]=`context`})(LineType||(LineType={}));var OutputFormatType={LINE_BY_LINE:`line-by-line`,SIDE_BY_SIDE:`side-by-side`};var LineMatchingType={LINES:`lines`,WORDS:`words`,NONE:`none`};var DiffStyleType={WORD:`word`,CHAR:`char`};var ColorSchemeType;(function(ColorSchemeType){ColorSchemeType[`AUTO`]=`auto`;ColorSchemeType[`DARK`]=`dark`;ColorSchemeType[`LIGHT`]=`light`})(ColorSchemeType||(ColorSchemeType={}));var regex=RegExp(`[`+[`-`,`[`,`]`,`/`,`{`,`}`,`(`,`)`,`*`,`+`,`?`,`.`,`\\`,`^`,`$`,`|`].join(`\\`)+`]`,`g`);function escapeForRegExp(str){return str.replace(regex,`\\$&`)}function unifyPath(path){return path?path.replace(/\\/g,`/`):path}function hashCode(text){let i,chr,len;let hash=0;for(i=0,len=text.length;i<len;i++){chr=text.charCodeAt(i);hash=(hash<<5)-hash+chr;hash|=0}return hash}function max(arr){const length=arr.length;let max=-Infinity;for(let i=0;i<length;i++)max=Math.max(max,arr[i]);return max}function getExtension(filename,language){const filenameParts=filename.split(`.`);return filenameParts.length>1?filenameParts[filenameParts.length-1]:language}function startsWithAny(str,prefixes){return prefixes.reduce((startsWith,prefix)=>startsWith||str.startsWith(prefix),false)}var baseDiffFilenamePrefixes=[`a/`,`b/`,`i/`,`w/`,`c/`,`o/`];function getFilename(line,linePrefix,extraPrefix){const prefixes=extraPrefix!==void 0?[...baseDiffFilenamePrefixes,extraPrefix]:baseDiffFilenamePrefixes;const[,filename=``]=(linePrefix?new RegExp(`^${escapeForRegExp(linePrefix)} "?(.+?)"?$`):new RegExp(`^"?(.+?)"?$`)).exec(line)||[];const matchingPrefix=prefixes.find(p=>filename.indexOf(p)===0);return(matchingPrefix?filename.slice(matchingPrefix.length):filename).replace(/\s+\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(?:\.\d+)? [+-]\d{4}.*$/,``)}function getSrcFilename(line,srcPrefix){return getFilename(line,`---`,srcPrefix)}function getDstFilename(line,dstPrefix){return getFilename(line,`+++`,dstPrefix)}function parse(diffInput,config={}){const files=[];let currentFile=null;let currentBlock=null;let oldLine=null;let oldLine2=null;let newLine=null;let possibleOldName=null;let possibleNewName=null;const oldFileNameHeader=`--- `;const newFileNameHeader=`+++ `;const hunkHeaderPrefix=`@@`;const oldMode=/^old mode (\d{6})/;const newMode=/^new mode (\d{6})/;const deletedFileMode=/^deleted file mode (\d{6})/;const newFileMode=/^new file mode (\d{6})/;const copyFrom=/^copy from "?(.+)"?/;const copyTo=/^copy to "?(.+)"?/;const renameFrom=/^rename from "?(.+)"?/;const renameTo=/^rename to "?(.+)"?/;const similarityIndex=/^similarity index (\d+)%/;const dissimilarityIndex=/^dissimilarity index (\d+)%/;const index=/^index ([\da-z]+)\.\.([\da-z]+)\s*(\d{6})?/;const binaryFiles=/^Binary files (.*) and (.*) differ/;const binaryDiff=/^GIT binary patch/;const combinedIndex=/^index ([\da-z]+),([\da-z]+)\.\.([\da-z]+)/;const combinedMode=/^mode (\d{6}),(\d{6})\.\.(\d{6})/;const combinedNewFile=/^new file mode (\d{6})/;const combinedDeletedFile=/^deleted file mode (\d{6}),(\d{6})/;const diffLines=diffInput.replace(/\/g,``).replace(/\r\n?/g,`
2
2
  `).split(`
3
3
  `);function saveBlock(){if(currentBlock!==null&&currentFile!==null){currentFile.blocks.push(currentBlock);currentBlock=null}}function saveFile(){if(currentFile!==null){if(!currentFile.oldName&&possibleOldName!==null)currentFile.oldName=possibleOldName;if(!currentFile.newName&&possibleNewName!==null)currentFile.newName=possibleNewName;if(currentFile.newName){files.push(currentFile);currentFile=null}}possibleOldName=null;possibleNewName=null}function startFile(){saveBlock();saveFile();currentFile={blocks:[],deletedLines:0,addedLines:0}}function startBlock(line){saveBlock();let values;if(currentFile!==null){if(values=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@.*/.exec(line)){currentFile.isCombined=false;oldLine=parseInt(values[1],10);newLine=parseInt(values[2],10)}else if(values=/^@@@ -(\d+)(?:,\d+)? -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@@.*/.exec(line)){currentFile.isCombined=true;oldLine=parseInt(values[1],10);oldLine2=parseInt(values[2],10);newLine=parseInt(values[3],10)}else{if(line.startsWith(hunkHeaderPrefix))console.error(`Failed to parse lines, starting in 0!`);oldLine=0;newLine=0;currentFile.isCombined=false}}currentBlock={lines:[],oldStartLine:oldLine,oldStartLine2:oldLine2,newStartLine:newLine,header:line}}function createLine(line){if(currentFile===null||currentBlock===null||oldLine===null||newLine===null)return;const currentLine={content:line};const addedPrefixes=currentFile.isCombined?[`+ `,` +`,`++`]:[`+`];const deletedPrefixes=currentFile.isCombined?[`- `,` -`,`--`]:[`-`];if(startsWithAny(line,addedPrefixes)){currentFile.addedLines++;currentLine.type=LineType.INSERT;currentLine.oldNumber=void 0;currentLine.newNumber=newLine++}else if(startsWithAny(line,deletedPrefixes)){currentFile.deletedLines++;currentLine.type=LineType.DELETE;currentLine.oldNumber=oldLine++;currentLine.newNumber=void 0}else{currentLine.type=LineType.CONTEXT;currentLine.oldNumber=oldLine++;currentLine.newNumber=newLine++}currentBlock.lines.push(currentLine)}function existHunkHeader(line,lineIdx){let idx=lineIdx;while(idx<diffLines.length-3){if(line.startsWith(`diff`))return false;if(diffLines[idx].startsWith(oldFileNameHeader)&&diffLines[idx+1].startsWith(newFileNameHeader)&&diffLines[idx+2].startsWith(hunkHeaderPrefix))return true;idx++}return false}diffLines.forEach((line,lineIndex)=>{if(!line||line.startsWith(`*`))return;let values;const prevLine=diffLines[lineIndex-1];const nxtLine=diffLines[lineIndex+1];const afterNxtLine=diffLines[lineIndex+2];if(line.startsWith(`diff --git`)||line.startsWith(`diff --combined`)){startFile();if(values=/^diff --git "?([a-ciow]\/.+)"? "?([a-ciow]\/.+)"?/.exec(line)){possibleOldName=getFilename(values[1],void 0,config.dstPrefix);possibleNewName=getFilename(values[2],void 0,config.srcPrefix)}if(currentFile===null)throw new Error(`Where is my file !!!`);currentFile.isGitDiff=true;return}if(line.startsWith(`Binary files`)&&!(currentFile===null||currentFile===void 0?void 0:currentFile.isGitDiff)){startFile();if(values=/^Binary files "?([a-ciow]\/.+)"? and "?([a-ciow]\/.+)"? differ/.exec(line)){possibleOldName=getFilename(values[1],void 0,config.dstPrefix);possibleNewName=getFilename(values[2],void 0,config.srcPrefix)}if(currentFile===null)throw new Error(`Where is my file !!!`);currentFile.isBinary=true;return}if(!currentFile||!currentFile.isGitDiff&&currentFile&&line.startsWith(oldFileNameHeader)&&nxtLine.startsWith(newFileNameHeader)&&afterNxtLine.startsWith(hunkHeaderPrefix))startFile();if(currentFile===null||currentFile===void 0?void 0:currentFile.isTooBig)return;if(currentFile&&(typeof config.diffMaxChanges===`number`&&currentFile.addedLines+currentFile.deletedLines>config.diffMaxChanges||typeof config.diffMaxLineLength===`number`&&line.length>config.diffMaxLineLength)){currentFile.isTooBig=true;currentFile.addedLines=0;currentFile.deletedLines=0;currentFile.blocks=[];currentBlock=null;startBlock(typeof config.diffTooBigMessage===`function`?config.diffTooBigMessage(files.length):`Diff too big to be displayed`);return}if(line.startsWith(oldFileNameHeader)&&nxtLine.startsWith(newFileNameHeader)||line.startsWith(newFileNameHeader)&&prevLine.startsWith(oldFileNameHeader)){if(currentFile&&!currentFile.oldName&&line.startsWith(`--- `)&&(values=getSrcFilename(line,config.srcPrefix))){currentFile.oldName=values;currentFile.language=getExtension(currentFile.oldName,currentFile.language);return}if(currentFile&&!currentFile.newName&&line.startsWith(`+++ `)&&(values=getDstFilename(line,config.dstPrefix))){currentFile.newName=values;currentFile.language=getExtension(currentFile.newName,currentFile.language);return}}if(currentFile&&(line.startsWith(hunkHeaderPrefix)||currentFile.isGitDiff&&currentFile.oldName&&currentFile.newName&&!currentBlock)){startBlock(line);return}if(currentBlock&&(line.startsWith(`+`)||line.startsWith(`-`)||line.startsWith(` `))){createLine(line);return}const doesNotExistHunkHeader=!existHunkHeader(line,lineIndex);if(currentFile===null)throw new Error(`Where is my file !!!`);if(values=oldMode.exec(line))currentFile.oldMode=values[1];else if(values=newMode.exec(line))currentFile.newMode=values[1];else if(values=deletedFileMode.exec(line)){currentFile.deletedFileMode=values[1];currentFile.isDeleted=true}else if(values=newFileMode.exec(line)){currentFile.newFileMode=values[1];currentFile.isNew=true}else if(values=copyFrom.exec(line)){if(doesNotExistHunkHeader)currentFile.oldName=values[1];currentFile.isCopy=true}else if(values=copyTo.exec(line)){if(doesNotExistHunkHeader)currentFile.newName=values[1];currentFile.isCopy=true}else if(values=renameFrom.exec(line)){if(doesNotExistHunkHeader)currentFile.oldName=values[1];currentFile.isRename=true}else if(values=renameTo.exec(line)){if(doesNotExistHunkHeader)currentFile.newName=values[1];currentFile.isRename=true}else if(values=binaryFiles.exec(line)){currentFile.isBinary=true;currentFile.oldName=getFilename(values[1],void 0,config.srcPrefix);currentFile.newName=getFilename(values[2],void 0,config.dstPrefix);startBlock(`Binary file`)}else if(binaryDiff.test(line)){currentFile.isBinary=true;startBlock(line)}else if(values=similarityIndex.exec(line))currentFile.unchangedPercentage=parseInt(values[1],10);else if(values=dissimilarityIndex.exec(line))currentFile.changedPercentage=parseInt(values[1],10);else if(values=index.exec(line)){currentFile.checksumBefore=values[1];currentFile.checksumAfter=values[2];if(values[3])currentFile.mode=values[3]}else if(values=combinedIndex.exec(line)){currentFile.checksumBefore=[values[2],values[3]];currentFile.checksumAfter=values[1]}else if(values=combinedMode.exec(line)){currentFile.oldMode=[values[2],values[3]];currentFile.newMode=values[1]}else if(values=combinedNewFile.exec(line)){currentFile.newFileMode=values[1];currentFile.isNew=true}else if(values=combinedDeletedFile.exec(line)){currentFile.deletedFileMode=values[1];currentFile.isDeleted=true}});saveBlock();saveFile();return files}function levenshtein(a,b){if(a.length===0)return b.length;if(b.length===0)return a.length;const matrix=[];let i=0;for(;i<=b.length;i++)matrix[i]=[i];let j=0;for(;j<=a.length;j++)matrix[0][j]=j;for(i=1;i<=b.length;i++)for(j=1;j<=a.length;j++)if(b.charAt(i-1)===a.charAt(j-1))matrix[i][j]=matrix[i-1][j-1];else matrix[i][j]=Math.min(matrix[i-1][j-1]+1,Math.min(matrix[i][j-1]+1,matrix[i-1][j]+1));return matrix[b.length][a.length]}function newDistanceFn(str){return(x,y)=>{const xValue=str(x).trim();const yValue=str(y).trim();return levenshtein(xValue,yValue)/(xValue.length+yValue.length)}}function newMatcherFn(distance){function findBestMatch(a,b,cache=new Map){let bestMatchDist=Infinity;let bestMatch;for(let i=0;i<a.length;++i)for(let j=0;j<b.length;++j){const cacheKey=JSON.stringify([a[i],b[j]]);let md;if(!(cache.has(cacheKey)&&(md=cache.get(cacheKey)))){md=distance(a[i],b[j]);cache.set(cacheKey,md)}if(md<bestMatchDist){bestMatchDist=md;bestMatch={indexA:i,indexB:j,score:bestMatchDist}}}return bestMatch}function group(a,b,level=0,cache=new Map){const bm=findBestMatch(a,b,cache);if(!bm||a.length+b.length<3)return[[a,b]];const a1=a.slice(0,bm.indexA);const b1=b.slice(0,bm.indexB);const aMatch=[a[bm.indexA]];const bMatch=[b[bm.indexB]];const tailA=bm.indexA+1;const tailB=bm.indexB+1;const a2=a.slice(tailA);const b2=b.slice(tailB);const group1=group(a1,b1,level+1,cache);const groupMatch=group(aMatch,bMatch,level+1,cache);const group2=group(a2,b2,level+1,cache);let result=groupMatch;if(bm.indexA>0||bm.indexB>0)result=group1.concat(result);if(a.length>tailA||b.length>tailB)result=result.concat(group2);return result}return group}var CSSLineClass={INSERTS:`d2h-ins`,DELETES:`d2h-del`,CONTEXT:`d2h-cntx`,INFO:`d2h-info`,INSERT_CHANGES:`d2h-ins d2h-change`,DELETE_CHANGES:`d2h-del d2h-change`};var defaultRenderConfig={matching:LineMatchingType.NONE,matchWordsThreshold:.25,maxLineLengthHighlight:1e4,diffStyle:DiffStyleType.WORD,colorScheme:ColorSchemeType.LIGHT};var separator=`/`;var distance=newDistanceFn(change=>change.value);var matcher=newMatcherFn(distance);function isDevNullName(name){return name.indexOf(`dev/null`)!==-1}function removeInsElements(line){return line.replace(/(<ins[^>]*>((.|\n)*?)<\/ins>)/g,``)}function removeDelElements(line){return line.replace(/(<del[^>]*>((.|\n)*?)<\/del>)/g,``)}function toCSSClass(lineType){switch(lineType){case LineType.CONTEXT:return CSSLineClass.CONTEXT;case LineType.INSERT:return CSSLineClass.INSERTS;case LineType.DELETE:return CSSLineClass.DELETES}}function colorSchemeToCss(colorScheme){switch(colorScheme){case ColorSchemeType.DARK:return`d2h-dark-color-scheme`;case ColorSchemeType.AUTO:return`d2h-auto-color-scheme`;case ColorSchemeType.LIGHT:default:return`d2h-light-color-scheme`}}function prefixLength(isCombined){return isCombined?2:1}function escapeForHtml(str){return str.slice(0).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#x27;`).replace(/\//g,`&#x2F;`)}function deconstructLine(line,isCombined,escape=true){const indexToSplit=prefixLength(isCombined);return{prefix:line.substring(0,indexToSplit),content:escape?escapeForHtml(line.substring(indexToSplit)):line.substring(indexToSplit)}}function filenameDiff(file){const oldFilename=unifyPath(file.oldName);const newFilename=unifyPath(file.newName);if(oldFilename!==newFilename&&!isDevNullName(oldFilename)&&!isDevNullName(newFilename)){const prefixPaths=[];const suffixPaths=[];const oldFilenameParts=oldFilename.split(separator);const newFilenameParts=newFilename.split(separator);const oldFilenamePartsSize=oldFilenameParts.length;const newFilenamePartsSize=newFilenameParts.length;let i=0;let j=oldFilenamePartsSize-1;let k=newFilenamePartsSize-1;while(i<j&&i<k)if(oldFilenameParts[i]===newFilenameParts[i]){prefixPaths.push(newFilenameParts[i]);i+=1}else break;while(j>i&&k>i)if(oldFilenameParts[j]===newFilenameParts[k]){suffixPaths.unshift(newFilenameParts[k]);j-=1;k-=1}else break;const finalPrefix=prefixPaths.join(separator);const finalSuffix=suffixPaths.join(separator);const oldRemainingPath=oldFilenameParts.slice(i,j+1).join(separator);const newRemainingPath=newFilenameParts.slice(i,k+1).join(separator);if(finalPrefix.length&&finalSuffix.length)return finalPrefix+`/{`+oldRemainingPath+` → `+newRemainingPath+`}/`+finalSuffix;else if(finalPrefix.length)return finalPrefix+`/{`+oldRemainingPath+` → `+newRemainingPath+`}`;else if(finalSuffix.length)return`{`+oldRemainingPath+` → `+newRemainingPath+`}/`+finalSuffix;return oldFilename+` → `+newFilename}else if(!isDevNullName(newFilename))return newFilename;else return oldFilename}function getHtmlId(file){return`d2h-${hashCode(filenameDiff(file)).toString().slice(-6)}`}function getFileIcon(file){let templateName=`file-changed`;if(file.isRename)templateName=`file-renamed`;else if(file.isCopy)templateName=`file-renamed`;else if(file.isNew)templateName=`file-added`;else if(file.isDeleted)templateName=`file-deleted`;else if(file.newName!==file.oldName)templateName=`file-renamed`;return templateName}function diffHighlight(diffLine1,diffLine2,isCombined,config={}){const{matching,maxLineLengthHighlight,matchWordsThreshold,diffStyle}=Object.assign(Object.assign({},defaultRenderConfig),config);const line1=deconstructLine(diffLine1,isCombined,false);const line2=deconstructLine(diffLine2,isCombined,false);if(line1.content.length>maxLineLengthHighlight||line2.content.length>maxLineLengthHighlight)return{oldLine:{prefix:line1.prefix,content:escapeForHtml(line1.content)},newLine:{prefix:line2.prefix,content:escapeForHtml(line2.content)}};const diff=diffStyle===`char`?diffChars(line1.content,line2.content):diffWordsWithSpace(line1.content,line2.content);const changedWords=[];if(diffStyle===`word`&&matching===`words`){const removed=diff.filter(element=>element.removed);const added=diff.filter(element=>element.added);matcher(added,removed).forEach(chunk=>{if(chunk[0].length===1&&chunk[1].length===1){if(distance(chunk[0][0],chunk[1][0])<matchWordsThreshold){changedWords.push(chunk[0][0]);changedWords.push(chunk[1][0])}}})}const highlightedLine=diff.reduce((highlightedLine,part)=>{const elemType=part.added?`ins`:part.removed?`del`:null;const addClass=changedWords.indexOf(part)>-1?` class="d2h-change"`:``;const escapedValue=escapeForHtml(part.value);return elemType!==null?`${highlightedLine}<${elemType}${addClass}>${escapedValue}</${elemType}>`:`${highlightedLine}${escapedValue}`},``);return{oldLine:{prefix:line1.prefix,content:removeInsElements(highlightedLine)},newLine:{prefix:line2.prefix,content:removeDelElements(highlightedLine)}}}var baseTemplatesPath$2=`file-summary`;var iconsBaseTemplatesPath$2=`icon`;var defaultFileListRendererConfig={colorScheme:defaultRenderConfig.colorScheme};var FileListRenderer=class{constructor(hoganUtils,config={}){this.hoganUtils=hoganUtils;this.config=Object.assign(Object.assign({},defaultFileListRendererConfig),config)}render(diffFiles){const files=diffFiles.map(file=>this.hoganUtils.render(baseTemplatesPath$2,`line`,{fileHtmlId:getHtmlId(file),oldName:file.oldName,newName:file.newName,fileName:filenameDiff(file),deletedLines:`-`+file.deletedLines,addedLines:`+`+file.addedLines},{fileIcon:this.hoganUtils.template(iconsBaseTemplatesPath$2,getFileIcon(file))})).join(`
4
4
  `);return this.hoganUtils.render(baseTemplatesPath$2,`wrapper`,{colorScheme:colorSchemeToCss(this.config.colorScheme),filesNumber:diffFiles.length,files})}};var defaultLineByLineRendererConfig=Object.assign(Object.assign({},defaultRenderConfig),{renderNothingWhenEmpty:false,matchingMaxComparisons:2500,maxLineSizeInBlockForComparison:200});var genericTemplatesPath$1=`generic`;var baseTemplatesPath$1=`line-by-line`;var iconsBaseTemplatesPath$1=`icon`;var tagsBaseTemplatesPath$1=`tag`;var LineByLineRenderer=class{constructor(hoganUtils,config={}){this.hoganUtils=hoganUtils;this.config=Object.assign(Object.assign({},defaultLineByLineRendererConfig),config)}render(diffFiles){const diffsHtml=diffFiles.map(file=>{let diffs;if(file.blocks.length)diffs=this.generateFileHtml(file);else diffs=this.generateEmptyDiff();return this.makeFileDiffHtml(file,diffs)}).join(`
@@ -108,4 +108,4 @@ import{Zn as __toESM,d as VProgressLinear,h as VIcon,qn as __commonJSMin}from"./
108
108
  `+i);t.b(` </div>`);t.b(`
109
109
  `+i);t.b(` </div>`);t.b(`
110
110
  `+i);t.b(` </div>`);t.b(`
111
- `+i);t.b(`</div>`);return t.fl()},partials:{},subs:{}});defaultTemplates[`tag-file-added`]=new import_hogan.Template({code:function(c,p,i){var t=this;t.b(i=i||``);t.b(`<span class="d2h-tag d2h-added d2h-added-tag">ADDED</span>`);return t.fl()},partials:{},subs:{}});defaultTemplates[`tag-file-changed`]=new import_hogan.Template({code:function(c,p,i){var t=this;t.b(i=i||``);t.b(`<span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span>`);return t.fl()},partials:{},subs:{}});defaultTemplates[`tag-file-deleted`]=new import_hogan.Template({code:function(c,p,i){var t=this;t.b(i=i||``);t.b(`<span class="d2h-tag d2h-deleted d2h-deleted-tag">DELETED</span>`);return t.fl()},partials:{},subs:{}});defaultTemplates[`tag-file-renamed`]=new import_hogan.Template({code:function(c,p,i){var t=this;t.b(i=i||``);t.b(`<span class="d2h-tag d2h-moved d2h-moved-tag">RENAMED</span>`);return t.fl()},partials:{},subs:{}});var HoganJsUtils=class{constructor({compiledTemplates={},rawTemplates={}}){const compiledRawTemplates=Object.entries(rawTemplates).reduce((previousTemplates,[name,templateString])=>{const compiledTemplate=import_hogan.compile(templateString,{asString:false});return Object.assign(Object.assign({},previousTemplates),{[name]:compiledTemplate})},{});this.preCompiledTemplates=Object.assign(Object.assign(Object.assign({},defaultTemplates),compiledTemplates),compiledRawTemplates)}static compile(templateString){return import_hogan.compile(templateString,{asString:false})}render(namespace,view,params,partials,indent){const templateKey=this.templateKey(namespace,view);try{return this.preCompiledTemplates[templateKey].render(params,partials,indent)}catch(_e){throw new Error(`Could not find template to render '${templateKey}'`)}}template(namespace,view){return this.preCompiledTemplates[this.templateKey(namespace,view)]}templateKey(namespace,view){return`${namespace}-${view}`}};var defaultDiff2HtmlConfig=Object.assign(Object.assign(Object.assign({},defaultLineByLineRendererConfig),defaultSideBySideRendererConfig),{outputFormat:OutputFormatType.LINE_BY_LINE,drawFileList:true});function html(diffInput,configuration={}){const config=Object.assign(Object.assign({},defaultDiff2HtmlConfig),configuration);const diffJson=typeof diffInput===`string`?parse(diffInput,config):diffInput;const hoganUtils=new HoganJsUtils(config);const{colorScheme}=config;const fileListRendererConfig={colorScheme};return(config.drawFileList?new FileListRenderer(hoganUtils,fileListRendererConfig).render(diffJson):``)+(config.outputFormat===`side-by-side`?new SideBySideRenderer(hoganUtils,config).render(diffJson):new LineByLineRenderer(hoganUtils,config).render(diffJson))}var _hoisted_1$2={class:`vibe64-repository-diff`};var _hoisted_2$2=[`innerHTML`];var _sfc_main$2={__name:`Vibe64RepositoryDiff`,props:{error:{default:``,type:String},loading:{default:false,type:Boolean},payload:{default:null,type:Object}},setup(__props){const props=__props;const rendered=computed(()=>{const diff=String(props.payload?.diff||``);return diff?html(diff,{drawFileList:false,matching:`lines`,outputFormat:`side-by-side`}):``});const shownLines=computed(()=>Number(props.payload?.shownLines||0));const totalLines=computed(()=>Number(props.payload?.totalLines||0));const truncated=computed(()=>props.payload?.truncated===true);return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,_hoisted_1$2,[__props.loading?(openBlock(),createBlock(VProgressLinear,{key:0,color:`primary`,indeterminate:``})):createCommentVNode(``,true),__props.error?(openBlock(),createBlock(StudioErrorNotice_default,{key:1,compact:``,error:__props.error,title:`File changes could not load`},null,8,[`error`])):truncated.value?(openBlock(),createBlock(VAlert,{key:2,density:`compact`,type:`warning`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(` This large file difference is shortened to `+toDisplayString(shownLines.value)+` of `+toDisplayString(totalLines.value)+` lines. `,1)]),_:1})):createCommentVNode(``,true),rendered.value?(openBlock(),createElementBlock(`div`,{key:3,class:`vibe64-repository-diff__rendered`,innerHTML:rendered.value},null,8,_hoisted_2$2)):!__props.loading&&!__props.error?(openBlock(),createBlock(VAlert,{key:4,density:`compact`,type:`info`,variant:`tonal`},{default:withCtx(()=>[..._cache[0]||(_cache[0]=[createTextVNode(` Choose a changed file to see exactly what changed. `,-1)])]),_:1})):createCommentVNode(``,true)])}}};var Vibe64RepositoryDiff_default=_plugin_vue_export_helper_default(_sfc_main$2,[[`__scopeId`,`data-v-fdf12a43`]]);var _hoisted_1$1=[`id`,`aria-label`];var _hoisted_2$1={key:0};var _hoisted_3$1={key:0};var _hoisted_4$1=[`aria-current`,`onClick`];var _hoisted_5$1={class:`vibe64-repository-file-browser__path`};var _hoisted_6$1={class:`vibe64-repository-file-browser__meta`};var _hoisted_7$1={class:`vibe64-repository-file-browser__counts`};var _hoisted_8$1=[`aria-controls`,`aria-valuemax`,`aria-valuenow`,`aria-valuetext`];var _hoisted_9$1={class:`vibe64-repository-file-browser__detail`};var WIDTH_STORAGE_KEY=`vibe64:repository-file-list-width`;var MIN_WIDTH=160;var MAX_WIDTH=480;var DEFAULT_WIDTH=336;var SEPARATOR_WIDTH=12;var DETAIL_MIN_WIDTH=280;var _sfc_main$1={__name:`Vibe64RepositoryFileBrowser`,props:{ariaLabel:{default:`Changed files`,type:String},embedded:{default:false,type:Boolean},emptyTitle:{default:`Select a file`,type:String},error:{default:``,type:String},files:{default:()=>[],type:Array},listDescription:{default:``,type:String},listTitle:{default:``,type:String},loading:{default:false,type:Boolean},loadingMore:{default:false,type:Boolean},payload:{default:null,type:Object},selectedPath:{default:``,type:String},truncated:{default:false,type:Boolean}},emits:[`load-more`,`select`],setup(__props){const listId=useId();const browser=ref(null);const containerWidth=ref(0);const resizing=ref(false);const savedWidth=readLocalStorageJson(WIDTH_STORAGE_KEY,null);const preferredWidth=ref(Number.isFinite(savedWidth)?savedWidth:DEFAULT_WIDTH);const stacked=computed(()=>containerWidth.value>0&&containerWidth.value<480);const maxWidth=computed(()=>containerWidth.value>0?Math.max(MIN_WIDTH,Math.min(MAX_WIDTH,containerWidth.value-DETAIL_MIN_WIDTH-SEPARATOR_WIDTH)):MAX_WIDTH);const listWidth=computed(()=>Math.round(Math.min(maxWidth.value,Math.max(MIN_WIDTH,preferredWidth.value))));let observer;let drag;function syncBounds(){containerWidth.value=browser.value?.clientWidth||0}function startResize(event){if(event.button!==0||drag)return;event.preventDefault();syncBounds();drag={pointerId:event.pointerId,startX:event.clientX,startWidth:listWidth.value,target:event.currentTarget};resizing.value=true;event.currentTarget.focus();event.currentTarget.setPointerCapture(event.pointerId)}function moveResize(event){if(!drag||event.pointerId!==drag.pointerId)return;preferredWidth.value=Math.min(maxWidth.value,Math.max(MIN_WIDTH,drag.startWidth+event.clientX-drag.startX))}function stopResize(event){if(!drag||event&&event.pointerId!==drag.pointerId)return;const{target,pointerId}=drag;drag=null;resizing.value=false;if(target.hasPointerCapture(pointerId))target.releasePointerCapture(pointerId);writeLocalStorageJson(WIDTH_STORAGE_KEY,listWidth.value)}function resizeWithKeyboard(event){syncBounds();let nextWidth;switch(event.key){case`Home`:nextWidth=MIN_WIDTH;break;case`End`:nextWidth=maxWidth.value;break;case`ArrowLeft`:nextWidth=listWidth.value-16;break;case`ArrowRight`:nextWidth=listWidth.value+16;break;default:return}event.preventDefault();preferredWidth.value=Math.min(maxWidth.value,Math.max(MIN_WIDTH,nextWidth));writeLocalStorageJson(WIDTH_STORAGE_KEY,listWidth.value)}onMounted(()=>{syncBounds();if(typeof ResizeObserver!==`undefined`){observer=new ResizeObserver(syncBounds);observer.observe(browser.value)}});onBeforeUnmount(()=>{stopResize();observer?.disconnect()});function fileStatusLabel(value=``){return{A:`Added`,C:`Copied`,D:`Removed`,M:`Changed`,R:`Renamed`,T:`Type changed`,U:`Needs attention`}[String(value||``).slice(0,1).toUpperCase()]||`Changed`}return(_ctx,_cache)=>{return openBlock(),createElementBlock(`div`,{ref_key:`browser`,ref:browser,class:normalizeClass([`vibe64-repository-file-browser`,{"vibe64-repository-file-browser--embedded":__props.embedded,"vibe64-repository-file-browser--stacked":stacked.value,"vibe64-repository-file-browser--resizing":resizing.value}]),style:normalizeStyle({"--repository-file-list-width":`${listWidth.value}px`})},[createBaseVNode(`aside`,{id:unref(listId),"aria-label":__props.ariaLabel,class:`vibe64-repository-file-browser__list`},[__props.listTitle?(openBlock(),createElementBlock(`header`,_hoisted_2$1,[createBaseVNode(`strong`,null,toDisplayString(__props.listTitle),1),__props.listDescription?(openBlock(),createElementBlock(`span`,_hoisted_3$1,toDisplayString(__props.listDescription),1)):createCommentVNode(``,true)])):createCommentVNode(``,true),(openBlock(true),createElementBlock(Fragment,null,renderList(__props.files,file=>{return openBlock(),createElementBlock(`button`,{key:file.path,"aria-current":__props.selectedPath===file.path?`true`:void 0,class:normalizeClass([`vibe64-repository-file-browser__file`,{"vibe64-repository-file-browser__file--active":__props.selectedPath===file.path}]),type:`button`,onClick:$event=>_ctx.$emit(`select`,file)},[createBaseVNode(`span`,_hoisted_5$1,toDisplayString(file.path),1),createBaseVNode(`span`,_hoisted_6$1,[createTextVNode(toDisplayString(fileStatusLabel(file.status))+` `,1),createBaseVNode(`span`,_hoisted_7$1,`+`+toDisplayString(file.added)+` −`+toDisplayString(file.deleted),1)])],10,_hoisted_4$1)}),128)),__props.truncated?(openBlock(),createBlock(VBtn,{key:1,loading:__props.loadingMore,size:`small`,type:`button`,variant:`text`,onClick:_cache[0]||(_cache[0]=$event=>_ctx.$emit(`load-more`))},{default:withCtx(()=>[..._cache[1]||(_cache[1]=[createTextVNode(` Load more files `,-1)])]),_:1},8,[`loading`])):createCommentVNode(``,true)],8,_hoisted_1$1),createBaseVNode(`div`,{"aria-controls":unref(listId),"aria-label":`Changed files width`,"aria-orientation":`vertical`,"aria-valuemax":maxWidth.value,"aria-valuemin":MIN_WIDTH,"aria-valuenow":listWidth.value,"aria-valuetext":`${listWidth.value} pixels`,class:`vibe64-repository-file-browser__separator`,role:`separator`,tabindex:`0`,title:`Drag to resize, or use Left and Right arrow keys`,onKeydown:resizeWithKeyboard,onPointerdown:startResize,onPointermove:moveResize,onPointerup:stopResize,onPointercancel:stopResize,onLostpointercapture:stopResize},null,40,_hoisted_8$1),createBaseVNode(`main`,_hoisted_9$1,[createBaseVNode(`h2`,null,toDisplayString(__props.selectedPath||__props.emptyTitle),1),createVNode(Vibe64RepositoryDiff_default,{error:__props.error,loading:__props.loading,payload:__props.payload},null,8,[`error`,`loading`,`payload`])])],6)}}};var Vibe64RepositoryFileBrowser_default=_plugin_vue_export_helper_default(_sfc_main$1,[[`__scopeId`,`data-v-0776c725`]]);function message(error,fallback){return error instanceof Error?error.message:String(error||fallback)}async function requestJson(path,options={}){if(!path)throw new Error(`Repository information is not available yet.`);const result=await getHttpWebClient().request(path,{method:`GET`,...options});if(result?.ok===false){const error=new Error(vibe64ApiResponseError(result,`Repository information could not be loaded.`));error.code=String(result.code||result.errors?.[0]?.code||``).trim();error.response=result;throw error}return result}function useVibe64RepositoryWorkspace(dashboardContext,{view=`changes`}={}){const selectedCurrentPath=ref(``);const selectedVersion=ref(null);const selectedVersionPath=ref(``);const changes=reactive({error:``,loading:false,loadingMore:false,payload:null});const currentDiff=reactive({error:``,loading:false,payload:null});const history=reactive({error:``,loading:false,nextCursor:``,payload:null,versions:[]});const versionFiles=reactive({error:``,loading:false,loadingMore:false,payload:null});const versionDiff=reactive({error:``,loading:false,payload:null});const updates=reactive({applying:false,canonicalChangePending:false,checking:false,error:``,errorCode:``,payload:null});const saving=ref(false);const requestRevisions=Object.create(null);const updateChecks=new Map;const forcedUpdateFollowups=new Set;let activeChangesRefresh=null;let activeSaveHistoryRefresh=null;let disposed=false;const context=computed(()=>dashboardContext.value||{});const activeView=computed(()=>String(readRefOrGetterValue(view)||`changes`)===`history`?`history`:`changes`);const sessionId=computed(()=>String(context.value.sessionId||context.value.session?.sessionId||``).trim());const sessionsApiPath=computed(()=>String(readRefOrGetterValue(context.value.sessionsApiPath)||``).trim());const sourceOperationsSuspended=computed(()=>readRefOrGetterValue(context.value.sourceOperationsSuspended)===true);let updateAccessRevision=0;function requestContextKey(){return`${sessionsApiPath.value}\0${sessionId.value}`}function updateCheckContextKey(){return`${requestContextKey()}\0${updateAccessRevision}`}function beginRequest(name){const revision=Number(requestRevisions[name]||0)+1;requestRevisions[name]=revision;return{contextKey:requestContextKey(),name,revision}}function requestIsCurrent(request){return!disposed&&request?.contextKey===requestContextKey()&&requestRevisions[request.name]===request.revision}function updateRequestIsCurrent(request){return requestIsCurrent(request)&&request?.updateAccessRevision===updateAccessRevision&&!sourceOperationsSuspended.value}function invalidateRequests(){for(const name of[`applyUpdates`,`changes`,`currentDiff`,`history`,`saveHistory`,`updates`,`versionDiff`,`versionFiles`])requestRevisions[name]=Number(requestRevisions[name]||0)+1}function updateCheckIsNewer(candidate={},current={}){const candidateCheck=candidate&&typeof candidate===`object`?candidate:{};const currentCheck=current&&typeof current===`object`?current:{};const candidateTime=Date.parse(String(candidateCheck.checkedAt||``));const currentTime=Date.parse(String(currentCheck.checkedAt||``));if(!Number.isFinite(candidateTime))return!currentCheck.checkedAt;return!Number.isFinite(currentTime)||candidateTime>=currentTime}async function selectCurrentFile(file){const path=String(file?.path||``);selectedCurrentPath.value=path;currentDiff.error=``;currentDiff.payload=null;if(!path||!sessionId.value)return;const request=beginRequest(`currentDiff`);currentDiff.loading=true;try{const result=await requestJson(vibe64SessionChangeDiffPath(sessionsApiPath.value,sessionId.value,path));if(requestIsCurrent(request)&&selectedCurrentPath.value===path)currentDiff.payload=result}catch(error){if(requestIsCurrent(request))currentDiff.error=message(error,`This file difference could not be loaded.`)}finally{if(requestIsCurrent(request))currentDiff.loading=false}}async function loadChanges({append=false}={}){changes.error=``;if(!append){beginRequest(`currentDiff`);changes.payload=null;selectedCurrentPath.value=``;currentDiff.error=``;currentDiff.loading=false;currentDiff.payload=null}if(!sessionId.value)return;const request=beginRequest(`changes`);changes.loading=!append;changes.loadingMore=append;try{const previousFiles=append?changes.payload?.files||[]:[];const result=await requestJson(vibe64SessionChangesPath(sessionsApiPath.value,sessionId.value,{offset:previousFiles.length}));if(!requestIsCurrent(request))return;changes.payload=append?{...result,files:[...previousFiles,...result.files||[]]}:result;if(!append&&typeof context.value.refreshSessionWork===`function`){const observedWork={...result};delete observedWork.initialDiff;await context.value.refreshSessionWork(observedWork)}const first=!append?changes.payload?.files?.[0]:null;if(first){const initialDiff=result.initialDiff&&typeof result.initialDiff===`object`?result.initialDiff:null;if(String(initialDiff?.path||``)===String(first.path||``)){selectedCurrentPath.value=first.path;currentDiff.payload=initialDiff}else selectCurrentFile(first)}}catch(error){if(requestIsCurrent(request))changes.error=message(error,`Current changes could not be loaded.`)}finally{if(requestIsCurrent(request)){changes.loading=false;changes.loadingMore=false}}}function requestChangesRefresh(){const contextKey=requestContextKey();if(activeChangesRefresh?.contextKey===contextKey){activeChangesRefresh.refreshAfterActive=true;return activeChangesRefresh.promise}const refresh={contextKey,promise:null,refreshAfterActive:false};refresh.promise=loadChanges().finally(()=>{if(activeChangesRefresh!==refresh)return;activeChangesRefresh=null;if(refresh.refreshAfterActive&&!disposed&&refresh.contextKey===requestContextKey()&&activeView.value===`changes`&&!sourceOperationsSuspended.value)requestChangesRefresh()});activeChangesRefresh=refresh;return refresh.promise}async function selectVersion(version){const request=beginRequest(`versionFiles`);beginRequest(`versionDiff`);if(selectedVersion.value?.commit!==version?.commit)versionFiles.error=``;selectedVersion.value=version||null;selectedVersionPath.value=``;versionFiles.loading=false;versionFiles.loadingMore=false;versionFiles.payload=null;versionDiff.error=``;versionDiff.loading=false;versionDiff.payload=null;if(!version?.commit||!history.payload?.historySnapshotCommit)return;versionFiles.loading=true;try{const result=await requestJson(vibe64RepositoryVersionFilesPath(sessionsApiPath.value,version.commit,{historySnapshotCommit:history.payload.historySnapshotCommit,sessionId:sessionId.value}));if(!requestIsCurrent(request)||selectedVersion.value?.commit!==version.commit)return;versionFiles.payload=result;versionFiles.error=``;versionFiles.loading=false;const first=versionFiles.payload?.files?.[0];if(first)await selectVersionFile(first)}catch(error){if(requestIsCurrent(request))versionFiles.error=message(error,`This version could not be loaded.`)}finally{if(requestIsCurrent(request))versionFiles.loading=false}}async function loadMoreVersionFiles(){if(versionFiles.loading||versionFiles.loadingMore||!versionFiles.payload?.truncated||!selectedVersion.value?.commit||!history.payload?.historySnapshotCommit)return;versionFiles.loadingMore=true;versionFiles.error=``;const request=beginRequest(`versionFiles`);try{const previousFiles=versionFiles.payload.files||[];const result=await requestJson(vibe64RepositoryVersionFilesPath(sessionsApiPath.value,selectedVersion.value.commit,{historySnapshotCommit:history.payload.historySnapshotCommit,offset:previousFiles.length,sessionId:sessionId.value}));if(!requestIsCurrent(request))return;versionFiles.payload={...result,files:[...previousFiles,...result.files||[]]}}catch(error){if(requestIsCurrent(request))versionFiles.error=message(error,`More files from this version could not be loaded.`)}finally{if(requestIsCurrent(request))versionFiles.loadingMore=false}}async function selectVersionFile(file){const path=String(file?.path||``);selectedVersionPath.value=path;versionDiff.error=``;versionDiff.payload=null;if(!path||!selectedVersion.value?.commit||!history.payload?.historySnapshotCommit)return;const request=beginRequest(`versionDiff`);const versionCommit=selectedVersion.value.commit;versionDiff.loading=true;try{const result=await requestJson(vibe64RepositoryVersionDiffPath(sessionsApiPath.value,selectedVersion.value.commit,path,{historySnapshotCommit:history.payload.historySnapshotCommit,sessionId:sessionId.value}));if(requestIsCurrent(request)&&selectedVersion.value?.commit===versionCommit&&selectedVersionPath.value===path)versionDiff.payload=result}catch(error){if(requestIsCurrent(request))versionDiff.error=message(error,`This file difference could not be loaded.`)}finally{if(requestIsCurrent(request))versionDiff.loading=false}}async function loadHistory({append=false}={}){const request=beginRequest(`history`);history.loading=true;try{const result=await requestJson(vibe64RepositoryHistoryPath(sessionsApiPath.value,{cursor:append?history.nextCursor:``,sessionId:sessionId.value}));if(!requestIsCurrent(request))return;history.error=``;history.payload=append&&history.payload?{...result,versions:[...history.versions,...result.versions||[]]}:result;history.versions=history.payload.versions||[];history.nextCursor=result.nextCursor||``;if(!append&&result.updateCheck&&updateCheckIsNewer(result.updateCheck,updates.payload))updates.payload={...result.updateCheck,cached:true}}catch(error){if(requestIsCurrent(request))history.error=message(error,`Version history could not be loaded.`)}finally{if(requestIsCurrent(request))history.loading=false}}async function checkForUpdates({force=true}={}){if(!sessionId.value||updates.applying||sourceOperationsSuspended.value)return false;const contextKey=updateCheckContextKey();const active=updateChecks.get(contextKey);if(active){if(force&&active.force!==true)forcedUpdateFollowups.add(contextKey);return active.promise}const request={...beginRequest(`updates`),updateAccessRevision};updates.checking=true;updates.error=``;updates.errorCode=``;const promise=(async()=>{try{const result=await requestJson(vibe64SessionCheckUpdatesPath(sessionsApiPath.value,sessionId.value),{body:{force},method:`POST`}).finally(async()=>{while(updateRequestIsCurrent(request)&&activeSaveHistoryRefresh?.contextKey===request.contextKey)await activeSaveHistoryRefresh.settled});if(!updateRequestIsCurrent(request))return false;updates.payload=result;updates.canonicalChangePending=false;if(activeView.value===`changes`){if(!changes.payload||String(changes.payload.canonicalCommit||``).trim()!==String(result.canonicalCommit||``).trim())await requestChangesRefresh()}else if(!history.payload||String(result.canonicalCommit||``).trim()!==String(history.payload?.historySnapshotCommit||``).trim())await loadHistory();return result}catch(error){if(updateRequestIsCurrent(request)){updates.error=message(error,`Updates could not be checked.`);updates.errorCode=String(error?.code||``).trim();if(activeView.value===`changes`&&!changes.payload)await requestChangesRefresh()}return false}finally{if(updateRequestIsCurrent(request))updates.checking=false;if(updateChecks.get(contextKey)?.promise===promise)updateChecks.delete(contextKey);if(!disposed&&forcedUpdateFollowups.delete(contextKey)&&contextKey===updateCheckContextKey())checkForUpdates({force:true})}})();updateChecks.set(contextKey,{force,promise});return promise}async function applyUpdates(options={}){const requestUpdateWork=context.value.requestUpdateWork;if(!sessionId.value||sourceOperationsSuspended.value||updates.checking||updates.applying||!(updates.canonicalChangePending||updates.payload?.updateAvailable===true)||typeof requestUpdateWork!==`function`)return false;updates.applying=true;updates.error=``;updates.errorCode=``;const request=beginRequest(`applyUpdates`);try{const result=await requestUpdateWork(options);if(!requestIsCurrent(request))return false;if(result===false||result?.ok===false)throw new Error(`This session could not be updated.`);updates.payload=result;updates.canonicalChangePending=false;if(activeView.value===`history`)await loadHistory();else await requestChangesRefresh();return result}catch(error){if(requestIsCurrent(request)){updates.error=message(error,`This session could not be updated.`);updates.errorCode=String(error?.code||``).trim()}return false}finally{if(requestIsCurrent(request))updates.applying=false}}async function saveWork(){const requestSaveWork=context.value.requestSaveWork;if(!sessionId.value||sourceOperationsSuspended.value||saving.value||updates.checking||updates.applying||updates.canonicalChangePending||updates.error||!updates.payload||updates.payload?.updateAvailable===true||changes.error||changes.loading||changes.payload?.unsaved!==true||typeof requestSaveWork!==`function`)return false;saving.value=true;try{return await requestSaveWork()}finally{saving.value=false}}watch([sessionsApiPath,sessionId,activeView],async([apiPath])=>{invalidateRequests();activeSaveHistoryRefresh?.settle();activeSaveHistoryRefresh=null;changes.error=``;changes.loading=false;changes.loadingMore=false;changes.payload=null;currentDiff.error=``;currentDiff.loading=false;currentDiff.payload=null;history.error=``;history.loading=false;history.nextCursor=``;history.payload=null;history.versions=[];selectedCurrentPath.value=``;selectedVersion.value=null;selectedVersionPath.value=``;versionDiff.error=``;versionDiff.loading=false;versionDiff.payload=null;versionFiles.error=``;versionFiles.loading=false;versionFiles.loadingMore=false;versionFiles.payload=null;updates.applying=false;updates.checking=false;updates.error=``;updates.errorCode=``;updates.payload=null;updates.canonicalChangePending=false;if(apiPath&&activeView.value===`history`&&!sessionId.value)await loadHistory();else if(apiPath&&sessionId.value){const initialContext=requestContextKey();if(activeView.value===`history`){await loadHistory();if(disposed||initialContext!==requestContextKey())return}else if(!sourceOperationsSuspended.value){await requestChangesRefresh();if(disposed||initialContext!==requestContextKey())return}if(!sourceOperationsSuspended.value)checkForUpdates({force:false})}},{immediate:true});watch(sourceOperationsSuspended,async(suspended,wasSuspended)=>{if(suspended){updateAccessRevision+=1;updates.checking=false;return}if(wasSuspended!==true)return;updateAccessRevision+=1;if(sessionId.value){const releasedContext=requestContextKey();if(activeView.value===`changes`){await requestChangesRefresh();if(disposed||releasedContext!==requestContextKey()||sourceOperationsSuspended.value)return}checkForUpdates({force:false})}},{flush:`sync`,immediate:true});useRealtimeEvent({enabled:computed(()=>Boolean(sessionId.value)),event:VIBE64_SESSION_CHANGED_EVENT,matches:({payload={}}={})=>repositoryStatusSessionId(payload)===sessionId.value&&repositoryStatusRealtimeShouldRefresh(payload),onEvent:async({payload={}}={})=>{const reason=String(payload?.reason||``).trim();const checkCanonical=repositoryStatusRealtimeNeedsCanonicalCheck(payload)||[`session-repository-checked`,`session-save-completed`,`session-update-completed`].includes(reason);if(repositoryStatusRealtimeNeedsCanonicalCheck(payload))updates.canonicalChangePending=true;if(activeView.value===`history`&&reason===`session-save-completed`){const refresh=beginRequest(`saveHistory`);refresh.settled=new Promise(resolve=>{refresh.settle=resolve});activeSaveHistoryRefresh?.settle();activeSaveHistoryRefresh=refresh;try{await loadHistory()}finally{if(activeSaveHistoryRefresh===refresh)activeSaveHistoryRefresh=null;refresh.settle()}if(!requestIsCurrent(refresh))return}else if(activeView.value===`changes`&&!checkCanonical)requestChangesRefresh();if(checkCanonical)checkForUpdates({force:repositoryStatusRealtimeNeedsCanonicalCheck(payload)})}});onScopeDispose(()=>{disposed=true;invalidateRequests();activeChangesRefresh=null;activeSaveHistoryRefresh?.settle();activeSaveHistoryRefresh=null;updateChecks.clear();forcedUpdateFollowups.clear()});useRealtimeEvent({enabled:computed(()=>Boolean(sessionId.value)&&activeView.value===`changes`),event:VIBE64_SOURCE_EDITOR_FILE_CHANGED_EVENT,matches:({payload={}}={})=>repositoryStatusSessionId(payload)===sessionId.value,onEvent:()=>{requestChangesRefresh()}});return{applyUpdates,changes,checkForUpdates,currentDiff,history,loadChanges,loadHistory,loadMoreVersionFiles,saveWork,saving,selectCurrentFile,selectedCurrentPath,selectedVersion,selectedVersionPath,selectVersion,selectVersionFile,sessionId,sourceOperationsSuspended,updates,versionDiff,versionFiles}}var _hoisted_1={class:`vibe64-repository-workspace__actions`};var _hoisted_2={class:`pl-5`};var _hoisted_3={key:0};var _hoisted_4={class:`vibe64-repository-workspace__changes-area`};var _hoisted_5={key:0,"aria-label":`Saved versions this session needs`,class:`vibe64-repository-workspace__incoming-versions`};var _hoisted_6={key:1};var _hoisted_7={class:`vibe64-repository-workspace__summary-copy`};var _hoisted_8={class:`vibe64-repository-workspace__actions`};var _hoisted_9={class:`vibe64-repository-workspace__window`};var _hoisted_10={key:0,class:`vibe64-repository-workspace__changes`};var _hoisted_11={key:0,class:`vibe64-repository-workspace__empty`};var _hoisted_12={key:4,class:`vibe64-repository-workspace__empty`};var _hoisted_13={key:1};var _hoisted_14={key:2,class:`vibe64-repository-workspace__history`};var _hoisted_15={class:`vibe64-repository-workspace__history-intro`};var _hoisted_16={class:`vibe64-repository-workspace__history-heading`};var _hoisted_17={"aria-hidden":`true`,class:`vibe64-repository-workspace__history-icon`};var _hoisted_18={class:`vibe64-repository-workspace__versions`,"aria-label":`Saved versions`};var _hoisted_19=[`aria-current`,`aria-label`,`onClick`];var _hoisted_20={class:`vibe64-repository-workspace__version-copy`};var _hoisted_21={class:`vibe64-repository-workspace__version-heading`};var _hoisted_22={class:`vibe64-repository-workspace__version-meta`};var _hoisted_23={key:0,class:`vibe64-repository-workspace__load-more`};var _hoisted_24={key:3,class:`vibe64-repository-workspace__empty`};var _hoisted_25={"aria-hidden":`true`,class:`vibe64-repository-version-dialog__icon`};var _hoisted_26={class:`vibe64-repository-version-dialog__heading`};var _hoisted_27={class:`vibe64-repository-version-dialog__eyebrow`};var _hoisted_28={key:0,class:`vibe64-repository-version-dialog__meta`};var _sfc_main={__name:`Vibe64RepositoryWorkspace`,props:{dashboardContext:{default:()=>({}),type:Object},view:{default:`changes`,type:String,validator:value=>[`changes`,`history`].includes(value)}},setup(__props){const props=__props;const dashboard=computed(()=>props.dashboardContext||{});const view=computed(()=>props.view===`history`?`history`:`changes`);const historyReview=ref(null);const versionSheetOpen=ref(false);const{applyUpdates:applyReviewedUpdates,changes,checkForUpdates,currentDiff,history,loadHistory,loadChanges,loadMoreVersionFiles,saveWork,saving,selectCurrentFile,selectedCurrentPath,selectedVersion,selectedVersionPath,selectVersion,selectVersionFile,sessionId,sourceOperationsSuspended,updates,versionDiff,versionFiles}=useVibe64RepositoryWorkspace(dashboard,{view});watch([sessionId,view,()=>dashboard.value.active],()=>{historyReview.value=null},{flush:`sync`});function applyUpdates(){if(updates.payload?.historyReview){historyReview.value=JSON.parse(JSON.stringify(updates.payload.historyReview));return}return applyReviewedUpdates()}async function reconcileHistory(){const review=historyReview.value;historyReview.value=null;return applyReviewedUpdates({historyReview:review})}const versionFileCountLabel=computed(()=>{const count=Number(versionFiles.payload?.totalCount||0);return`${count} changed ${count===1?`file`:`files`}`});const pageTitle=computed(()=>view.value===`history`?`Git log`:`Current changes`);const pageDescription=computed(()=>view.value===`history`?`The project's saved versions and their file differences.`:`Files this session changed since the project's saved version.`);const repositoryStatus=computed(()=>updates.payload||changes.payload||null);const sessionUpdateLabel=computed(()=>{const branch=repositoryStatus.value?.branch;return branch?`Update session from ${branch}`:`Update session`});const repositoryOperationBusy=computed(()=>Boolean(!sessionId.value||sourceOperationsSuspended.value||updates.checking||updates.applying||saving.value));const saveWorkDisabled=computed(()=>Boolean(repositoryOperationBusy.value||updates.canonicalChangePending||updates.error||!updates.payload||repositoryStatus.value?.updateAvailable===true||changes.error||changes.loading||changes.payload?.unsaved!==true||typeof dashboard.value.requestSaveWork!==`function`));const saveWorkTitle=computed(()=>{if(sourceOperationsSuspended.value)return`Session renewal is safely using this session’s source`;if(updates.applying||saving.value)return`Wait for the current repository operation to finish`;if(updates.checking||updates.canonicalChangePending)return`Checking the latest saved project version`;if(updates.error||!updates.payload||changes.error)return`Repository status is unavailable; check for updates before saving`;if(repositoryStatus.value?.updateAvailable===true)return`${sessionUpdateLabel.value} before saving`;if(changes.loading)return`Checking whether this session has work to save`;if(changes.payload?.unsaved!==true)return`No work to save`;return`Review changes and choose where to commit them`});const repositorySummaryTitle=computed(()=>{if(!sessionId.value)return`Project versions`;if(changes.loading)return`Checking this session…`;if(updates.checking||updates.canonicalChangePending)return`Checking the latest saved project version…`;if(updates.error||!updates.payload)return`Saved project status unavailable`;if(changes.error||!changes.payload)return`Save status unavailable`;return changes.payload?.unsaved?`This session has unsaved work`:`This session is saved`});const repositorySummaryDetail=computed(()=>{if(!sessionId.value)return`Select a session to see its work. Saved project history remains available.`;if(changes.loading)return`Comparing this session with the project’s saved version.`;if(updates.checking||updates.canonicalChangePending)return`Save will be available after the latest project version has been checked.`;if(updates.error||!updates.payload)return`Save is unavailable until Vibe64 can safely compare this session with the saved project.`;if(changes.error||!changes.payload)return`Check for updates to compare this session with the project’s saved version.`;const count=Number(changes.payload?.totalCount||0);const behind=Number(repositoryStatus.value?.behind||0);if(behind>0){if(changes.payload?.unsaved===true)return`${behind} newer saved ${behind===1?`version is`:`versions are`} available. Updating this session will preserve its unsaved work.`;return`${behind} newer saved ${behind===1?`version is`:`versions are`} available. ${sessionUpdateLabel.value} to use ${behind===1?`it`:`them`}.`}if(count>0)return`${count} ${count===1?`file differs`:`files differ`} from the project’s saved version.`;return`No files differ from the project’s saved version.`});const repositoryUpdateTitle=computed(()=>{if(!sessionId.value)return`No session selected`;if(updates.checking)return`Checking for updates…`;if(updates.error)return`Update status unavailable`;if(history.loading&&!history.payload)return`Loading update status…`;if(!repositoryStatus.value)return`Updates have not been checked`;const relationship=repositoryUpdateRelationship(repositoryStatus.value.ahead,repositoryStatus.value.behind);const ahead=Number(repositoryStatus.value.ahead||0);const behind=Number(repositoryStatus.value.behind||0);if(updates.payload?.historyReview)return`The local project history was rewritten`;if(relationship===`diverged`)return`This session and the saved project have both changed`;if(behind>0)return`${behind} ${behind===1?`update`:`updates`} available`;if(relationship===`ahead`&&ahead>0)return`This session has work not in the saved project`;return`This session is up to date`});const repositoryIncomingVersions=computed(()=>{return repositoryUpdateRelationship(repositoryStatus.value?.ahead,repositoryStatus.value?.behind)===`behind`&&Array.isArray(repositoryStatus.value?.incomingVersions)?repositoryStatus.value.incomingVersions:[]});const repositoryIncomingVersionsRemainder=computed(()=>Math.max(0,Number(repositoryStatus.value?.behind||0)-repositoryIncomingVersions.value.length));const repositoryUpdateDetail=computed(()=>{if(!sessionId.value)return`Select a session to check it against the project’s saved version.`;if(updates.checking)return`Reading the latest saved project version.`;if(updates.error)return`Review the problem below, then try checking again.`;if(history.loading&&!history.payload)return`Reading the last successful update check for this session.`;if(!repositoryStatus.value)return`Use Check for updates to compare this session with the latest saved project version.`;const relationship=repositoryUpdateRelationship(repositoryStatus.value.ahead,repositoryStatus.value.behind);const ahead=Number(repositoryStatus.value.ahead||0);const behind=Number(repositoryStatus.value.behind||0);if(updates.payload?.historyReview)return`Review this session’s retained changes before reconciling them with the new project history.`;const checked=repositoryStatus.value.checkedAt?` Last checked ${formatVersionDate(repositoryStatus.value.checkedAt)}.`:``;if(relationship===`diverged`)return`Someone saved new project work after this session started, and this session also has its own saved work. Vibe64 cannot simply move it forward. Updating this session will try to combine both without discarding either. If the same files conflict, nothing changes and Temporary AI can help.${checked}`;if(behind>0){const updateEffect=changes.payload?.unsaved===true?`will replay its unsaved work on the latest saved version before Save is allowed`:`will move it to the latest saved version`;return`This session is ${behind} saved ${behind===1?`version`:`versions`} behind. Updating this session ${updateEffect}.${checked}`}if(relationship===`ahead`&&ahead>0)return`There are no incoming updates. This session contains ${ahead} ${ahead===1?`version`:`versions`} not yet in the saved project.${checked}`;return`It already includes the latest saved project version.${checked}`});const canResolveUpdateWithTemporaryAi=computed(()=>[`vibe64_session_update_conflict`,`vibe64_session_update_history_diverged`].includes(String(updates.errorCode||``).trim()));const resolvingUpdateProblem=ref(false);function formatVersionDate(value=``){const parsed=new Date(value);return Number.isNaN(parsed.getTime())?`Unknown time`:new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`}).format(parsed)}function versionButtonLabel(version={},index=-1){const parts=[index===0?`Latest saved version`:`Saved version`,version.message||`Saved work`,version.author||`Unknown author`,formatVersionDate(version.committedAt),version.shortCommit];if(version.isMerge)parts.splice(1,0,`merge`);return parts.filter(Boolean).join(`, `)}async function resolveUpdateProblem(){if(resolvingUpdateProblem.value||dashboard.value.assistantSeniorAllowed===false||typeof dashboard.value.requestTemporaryAi!==`function`)return false;resolvingUpdateProblem.value=true;try{return await dashboard.value.requestTemporaryAi({code:updates.errorCode,error:updates.error,title:`Resolve repository update`})}finally{resolvingUpdateProblem.value=false}}async function openVersion(version){versionSheetOpen.value=true;await selectVersion(version)}function closeVersion(){versionSheetOpen.value=false;selectVersion(null)}return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,{class:normalizeClass([`vibe64-repository-workspace`,{"vibe64-repository-workspace--changes":view.value===`changes`}])},[createVNode(Vibe64DashboardPageHeader_default,{description:pageDescription.value,icon:view.value===`history`?unref(mdiSourceRepository):unref(mdiFileCompare),title:pageTitle.value},{actions:withCtx(()=>[createBaseVNode(`div`,_hoisted_1,[createVNode(VBtn,{disabled:repositoryOperationBusy.value,loading:unref(updates).checking,"prepend-icon":unref(mdiCloudRefreshOutline),size:`small`,type:`button`,variant:`tonal`,onClick:unref(checkForUpdates)},{default:withCtx(()=>[..._cache[7]||(_cache[7]=[createTextVNode(` Check for updates `,-1)])]),_:1},8,[`disabled`,`loading`,`prepend-icon`,`onClick`]),view.value===`history`&&(repositoryStatus.value?.updateAvailable||unref(updates).canonicalChangePending)?(openBlock(),createBlock(VBtn,{key:0,disabled:repositoryOperationBusy.value,loading:unref(updates).applying,"prepend-icon":unref(mdiSourceBranchSync),size:`small`,type:`button`,variant:`tonal`,onClick:applyUpdates},{default:withCtx(()=>[createTextVNode(toDisplayString(unref(updates).payload?.historyReview?`Review and reconcile session`:sessionUpdateLabel.value),1)]),_:1},8,[`disabled`,`loading`,`prepend-icon`])):createCommentVNode(``,true)])]),_:1},8,[`description`,`icon`,`title`]),createVNode(VDialog,{"model-value":Boolean(historyReview.value),"max-width":`620`,"onUpdate:modelValue":_cache[1]||(_cache[1]=$event=>!$event&&(historyReview.value=null))},{default:withCtx(()=>[historyReview.value?(openBlock(),createBlock(VCard,{key:0},{default:withCtx(()=>[createVNode(VCardTitle,null,{default:withCtx(()=>[..._cache[8]||(_cache[8]=[createTextVNode(`Reconcile after rewritten project history`,-1)])]),_:1}),createVNode(VCardText,null,{default:withCtx(()=>[_cache[11]||(_cache[11]=createBaseVNode(`p`,null,`The project’s Git history changed outside this session. Apply this session’s retained changes to the current project version.`,-1)),_cache[12]||(_cache[12]=createBaseVNode(`p`,null,`Your conversation stays in this session. A checkpoint preserves the current files. Conflicts stop the update before it changes your working files.`,-1)),createBaseVNode(`p`,null,[_cache[9]||(_cache[9]=createTextVNode(`Previous baseline: `,-1)),createBaseVNode(`code`,null,toDisplayString(historyReview.value.baseCommit.slice(0,8)),1),_cache[10]||(_cache[10]=createTextVNode(` · New baseline: `,-1)),createBaseVNode(`code`,null,toDisplayString(historyReview.value.canonicalCommit.slice(0,8)),1)]),_cache[13]||(_cache[13]=createBaseVNode(`p`,{class:`mt-3`},`Session changes to reconcile (up to 100 files):`,-1)),createBaseVNode(`ul`,_hoisted_2,[(openBlock(true),createElementBlock(Fragment,null,renderList(historyReview.value.changedPaths,path=>{return openBlock(),createElementBlock(`li`,{key:path,class:`text-break`},toDisplayString(path),1)}),128))]),!historyReview.value.changedPaths?.length?(openBlock(),createElementBlock(`p`,_hoisted_3,`No session file changes. The session will move to the new project version.`)):createCommentVNode(``,true)]),_:1}),createVNode(VCardActions,null,{default:withCtx(()=>[createVNode(VSpacer),createVNode(VBtn,{onClick:_cache[0]||(_cache[0]=$event=>historyReview.value=null)},{default:withCtx(()=>[..._cache[14]||(_cache[14]=[createTextVNode(`Cancel`,-1)])]),_:1}),createVNode(VBtn,{onClick:reconcileHistory},{default:withCtx(()=>[..._cache[15]||(_cache[15]=[createTextVNode(`Reconcile session`,-1)])]),_:1})]),_:1})]),_:1})):createCommentVNode(``,true)]),_:1},8,[`model-value`]),createBaseVNode(`section`,_hoisted_4,[view.value===`history`?(openBlock(),createBlock(VSheet,{key:0,"aria-live":`polite`,border:``,class:`vibe64-repository-workspace__update-status`,role:`status`,rounded:`lg`},{default:withCtx(()=>[createBaseVNode(`strong`,null,toDisplayString(repositoryUpdateTitle.value),1),createBaseVNode(`span`,null,toDisplayString(repositoryUpdateDetail.value),1),repositoryIncomingVersions.value.length?(openBlock(),createElementBlock(`ol`,_hoisted_5,[(openBlock(true),createElementBlock(Fragment,null,renderList(repositoryIncomingVersions.value,version=>{return openBlock(),createElementBlock(`li`,{key:version.commit},[createVNode(VIcon,{"aria-hidden":`true`,icon:version.isMerge?unref(mdiSourceMerge):unref(mdiSourceCommit),size:`15`},null,8,[`icon`]),createBaseVNode(`span`,null,toDisplayString(version.message||`Saved work`),1),createBaseVNode(`code`,null,toDisplayString(version.shortCommit),1)])}),128))])):createCommentVNode(``,true),repositoryIncomingVersions.value.length&&repositoryIncomingVersionsRemainder.value>0?(openBlock(),createElementBlock(`span`,_hoisted_6,` And `+toDisplayString(repositoryIncomingVersionsRemainder.value)+` older `+toDisplayString(repositoryIncomingVersionsRemainder.value===1?`update`:`updates`)+`. `,1)):createCommentVNode(``,true)]),_:1})):createCommentVNode(``,true),view.value===`changes`?(openBlock(),createBlock(VSheet,{key:1,border:``,class:`vibe64-repository-workspace__summary`,rounded:`lg`},{default:withCtx(()=>[createBaseVNode(`div`,_hoisted_7,[createBaseVNode(`strong`,null,toDisplayString(repositorySummaryTitle.value),1),createBaseVNode(`span`,null,toDisplayString(repositorySummaryDetail.value),1)]),createBaseVNode(`div`,_hoisted_8,[repositoryStatus.value?.updateAvailable||unref(updates).canonicalChangePending?(openBlock(),createBlock(VBtn,{key:0,disabled:repositoryOperationBusy.value,loading:unref(updates).applying,"prepend-icon":unref(mdiSourceBranchSync),size:`small`,type:`button`,variant:`tonal`,onClick:applyUpdates},{default:withCtx(()=>[createTextVNode(toDisplayString(unref(updates).payload?.historyReview?`Review and reconcile session`:sessionUpdateLabel.value),1)]),_:1},8,[`disabled`,`loading`,`prepend-icon`])):createCommentVNode(``,true),createVNode(VBtn,{color:unref(changes).payload?.unsaved===true?`error`:void 0,disabled:saveWorkDisabled.value,loading:unref(saving),"prepend-icon":unref(mdiSourceCommit),size:`small`,type:`button`,title:saveWorkTitle.value,variant:`tonal`,onClick:unref(saveWork)},{default:withCtx(()=>[..._cache[16]||(_cache[16]=[createTextVNode(` Review changes `,-1)])]),_:1},8,[`color`,`disabled`,`loading`,`prepend-icon`,`title`,`onClick`])])]),_:1})):createCommentVNode(``,true),unref(updates).error?(openBlock(),createBlock(StudioErrorNotice_default,{key:2,compact:``,error:unref(updates).error,title:`Project updates need attention`},{actions:withCtx(()=>[canResolveUpdateWithTemporaryAi.value&&typeof dashboard.value.requestTemporaryAi===`function`?(openBlock(),createBlock(Vibe64TemporaryAiFixAction_default,{key:0,disabled:resolvingUpdateProblem.value||dashboard.value.assistantSeniorAllowed===false,pending:resolvingUpdateProblem.value,title:dashboard.value.assistantSeniorAllowed===false?dashboard.value.assistantSeniorRestrictionMessage:`Open temporary AI to resolve this repository update`,onClick:resolveUpdateProblem},null,8,[`disabled`,`pending`,`title`])):createCommentVNode(``,true)]),_:1},8,[`error`])):createCommentVNode(``,true),createBaseVNode(`div`,_hoisted_9,[view.value===`changes`?(openBlock(),createElementBlock(`section`,_hoisted_10,[!unref(sessionId)?(openBlock(),createElementBlock(`div`,_hoisted_11,[..._cache[17]||(_cache[17]=[createBaseVNode(`strong`,null,`No session selected`,-1),createBaseVNode(`span`,null,`Create or select a session to see its current changes.`,-1)])])):unref(changes).error?(openBlock(),createBlock(StudioErrorNotice_default,{key:1,compact:``,error:unref(changes).error,title:`Current changes could not load`},null,8,[`error`])):unref(changes).loading?(openBlock(),createBlock(VProgressLinear,{key:2,color:`primary`,indeterminate:``})):unref(changes).payload?.files?.length?(openBlock(),createBlock(Vibe64RepositoryFileBrowser_default,{key:3,"aria-label":`Changed files`,"empty-title":`File changes`,error:unref(currentDiff).error,files:unref(changes).payload.files,"list-description":`Compared with the project’s saved version`,"list-title":`${unref(changes).payload.totalCount} changed ${unref(changes).payload.totalCount===1?`file`:`files`}`,loading:unref(currentDiff).loading,"loading-more":unref(changes).loadingMore,payload:unref(currentDiff).payload,"selected-path":unref(selectedCurrentPath),truncated:unref(changes).payload.truncated,onLoadMore:_cache[2]||(_cache[2]=$event=>unref(loadChanges)({append:true})),onSelect:unref(selectCurrentFile)},null,8,[`error`,`files`,`list-title`,`loading`,`loading-more`,`payload`,`selected-path`,`truncated`,`onSelect`])):(openBlock(),createElementBlock(`div`,_hoisted_12,[..._cache[18]||(_cache[18]=[createBaseVNode(`strong`,null,`No unsaved file changes`,-1),createBaseVNode(`span`,null,`This session has no file changes waiting to be saved.`,-1)])]))])):(openBlock(),createElementBlock(`section`,_hoisted_13,[unref(history).error?(openBlock(),createBlock(StudioErrorNotice_default,{key:0,compact:``,error:unref(history).error,title:`Version history could not load`},createSlots({_:2},[!unref(history).payload?{name:`actions`,fn:withCtx(()=>[createVNode(VBtn,{"aria-busy":unref(history).loading?`true`:void 0,disabled:unref(history).loading,size:`small`,type:`button`,variant:`tonal`,onClick:_cache[3]||(_cache[3]=$event=>unref(loadHistory)())},{default:withCtx(()=>[createTextVNode(toDisplayString(unref(history).loading?`Retrying…`:`Retry history`),1)]),_:1},8,[`aria-busy`,`disabled`])]),key:`0`}:void 0]),1032,[`error`])):createCommentVNode(``,true),unref(history).loading&&!unref(history).payload&&!unref(history).error?(openBlock(),createBlock(VProgressLinear,{key:1,color:`primary`,indeterminate:``})):unref(history).versions.length?(openBlock(),createElementBlock(`div`,_hoisted_14,[createBaseVNode(`div`,_hoisted_15,[createBaseVNode(`div`,_hoisted_16,[createBaseVNode(`span`,_hoisted_17,[createVNode(VIcon,{icon:unref(mdiSourceCommit),size:`18`},null,8,[`icon`])]),_cache[19]||(_cache[19]=createBaseVNode(`div`,null,[createBaseVNode(`strong`,null,`Saved versions`),createBaseVNode(`span`,null,`Newest first. Open a version to review its files.`)],-1))]),createVNode(VChip,{label:``,size:`x-small`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(unref(history).versions.length)+` loaded `,1)]),_:1})]),createBaseVNode(`ol`,_hoisted_18,[(openBlock(true),createElementBlock(Fragment,null,renderList(unref(history).versions,(version,index)=>{return openBlock(),createElementBlock(`li`,{key:version.commit,class:`vibe64-repository-workspace__history-item`},[createBaseVNode(`span`,{"aria-hidden":`true`,class:normalizeClass([`vibe64-repository-workspace__commit-marker`,{"vibe64-repository-workspace__commit-marker--first":index===0,"vibe64-repository-workspace__commit-marker--last":index===unref(history).versions.length-1}])},[createBaseVNode(`span`,{class:normalizeClass([`vibe64-repository-workspace__commit-node`,{"vibe64-repository-workspace__commit-node--latest":index===0}])},[createVNode(VIcon,{icon:version.isMerge?unref(mdiSourceMerge):unref(mdiSourceCommit),size:`15`},null,8,[`icon`])],2)],2),createBaseVNode(`button`,{"aria-current":versionSheetOpen.value&&unref(selectedVersion)?.commit===version.commit?`true`:void 0,"aria-label":versionButtonLabel(version,index),class:`vibe64-repository-workspace__version`,type:`button`,onClick:$event=>openVersion(version)},[createBaseVNode(`span`,_hoisted_20,[createBaseVNode(`span`,_hoisted_21,[createBaseVNode(`strong`,null,toDisplayString(version.message||`Saved work`),1),index===0?(openBlock(),createBlock(VChip,{key:0,color:`primary`,label:``,size:`x-small`,variant:`tonal`},{default:withCtx(()=>[..._cache[20]||(_cache[20]=[createTextVNode(` Latest `,-1)])]),_:1})):createCommentVNode(``,true),version.isMerge?(openBlock(),createBlock(VChip,{key:1,label:``,size:`x-small`,variant:`outlined`},{default:withCtx(()=>[..._cache[21]||(_cache[21]=[createTextVNode(` Merge `,-1)])]),_:1})):createCommentVNode(``,true)]),createBaseVNode(`span`,_hoisted_22,[createBaseVNode(`span`,null,[createVNode(VIcon,{icon:unref(mdiAccountOutline),size:`15`},null,8,[`icon`]),createTextVNode(` `+toDisplayString(version.author||`Unknown author`),1)]),createBaseVNode(`span`,null,[createVNode(VIcon,{icon:unref(mdiClockOutline),size:`15`},null,8,[`icon`]),createTextVNode(` `+toDisplayString(formatVersionDate(version.committedAt)),1)]),createBaseVNode(`code`,null,toDisplayString(version.shortCommit),1)])]),createVNode(VIcon,{"aria-hidden":`true`,icon:unref(mdiChevronRight),size:`20`},null,8,[`icon`])],8,_hoisted_19)])}),128)),unref(history).nextCursor?(openBlock(),createElementBlock(`li`,_hoisted_23,[createVNode(VBtn,{loading:unref(history).loading,size:`small`,type:`button`,variant:`text`,onClick:_cache[4]||(_cache[4]=$event=>unref(loadHistory)({append:true}))},{default:withCtx(()=>[..._cache[22]||(_cache[22]=[createTextVNode(` Load older versions `,-1)])]),_:1},8,[`loading`])])):createCommentVNode(``,true)])])):!unref(history).error?(openBlock(),createElementBlock(`div`,_hoisted_24,[..._cache[23]||(_cache[23]=[createBaseVNode(`strong`,null,`No saved versions yet`,-1),createBaseVNode(`span`,null,`Versions will appear here after work is saved.`,-1)])])):createCommentVNode(``,true)]))])]),createVNode(VDialog,{"model-value":versionSheetOpen.value,class:`vibe64-repository-version-dialog`,fullscreen:``,scrollable:``,transition:`dialog-bottom-transition`,"onUpdate:modelValue":_cache[6]||(_cache[6]=$event=>!$event&&closeVersion())},{default:withCtx(()=>[createVNode(VCard,{class:`vibe64-repository-version-dialog__card`},{default:withCtx(()=>[createVNode(VCardTitle,{class:`vibe64-repository-version-dialog__header`},{default:withCtx(()=>[createBaseVNode(`span`,_hoisted_25,[createVNode(VIcon,{icon:unref(selectedVersion)?.isMerge?unref(mdiSourceMerge):unref(mdiSourceCommit),size:`22`},null,8,[`icon`])]),createBaseVNode(`div`,_hoisted_26,[createBaseVNode(`span`,_hoisted_27,toDisplayString(unref(selectedVersion)?.isMerge?`Merge version`:`Saved version`),1),createBaseVNode(`h2`,null,toDisplayString(unref(selectedVersion)?.message||`Saved version`),1),unref(selectedVersion)?(openBlock(),createElementBlock(`div`,_hoisted_28,[createBaseVNode(`span`,null,[createVNode(VIcon,{icon:unref(mdiAccountOutline),size:`16`},null,8,[`icon`]),createTextVNode(` `+toDisplayString(unref(selectedVersion).author||`Unknown author`),1)]),createBaseVNode(`span`,null,[createVNode(VIcon,{icon:unref(mdiClockOutline),size:`16`},null,8,[`icon`]),createTextVNode(` `+toDisplayString(formatVersionDate(unref(selectedVersion).committedAt)),1)]),createBaseVNode(`code`,null,toDisplayString(unref(selectedVersion).shortCommit),1),unref(versionFiles).payload?(openBlock(),createBlock(VChip,{key:0,label:``,size:`x-small`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(versionFileCountLabel.value),1)]),_:1})):createCommentVNode(``,true)])):createCommentVNode(``,true)]),createVNode(VBtn,{"aria-label":`Close version details`,icon:unref(mdiClose),size:`small`,type:`button`,variant:`text`,onClick:closeVersion},null,8,[`icon`])]),_:1}),createVNode(VDivider),createVNode(VCardText,{class:`vibe64-repository-version-dialog__body`},{default:withCtx(()=>[unref(versionFiles).error?(openBlock(),createBlock(StudioErrorNotice_default,{key:0,class:`vibe64-repository-version-dialog__error`,compact:``,error:unref(versionFiles).error,title:`Version details could not load`},createSlots({_:2},[!unref(versionFiles).payload?{name:`actions`,fn:withCtx(()=>[createVNode(VBtn,{"aria-busy":unref(versionFiles).loading?`true`:void 0,disabled:unref(versionFiles).loading,size:`small`,type:`button`,variant:`tonal`,onClick:_cache[5]||(_cache[5]=$event=>unref(selectVersion)(unref(selectedVersion)))},{default:withCtx(()=>[createTextVNode(toDisplayString(unref(versionFiles).loading?`Retrying…`:`Retry files`),1)]),_:1},8,[`aria-busy`,`disabled`])]),key:`0`}:void 0]),1032,[`error`])):createCommentVNode(``,true),unref(versionFiles).loading&&!unref(versionFiles).payload&&!unref(versionFiles).error?(openBlock(),createBlock(VProgressLinear,{key:1,color:`primary`,indeterminate:``})):createCommentVNode(``,true),unref(versionFiles).payload?(openBlock(),createBlock(Vibe64RepositoryFileBrowser_default,{key:2,"aria-label":`Files in this version`,class:`vibe64-repository-version-dialog__files`,embedded:``,error:unref(versionDiff).error,files:unref(versionFiles).payload?.files||[],loading:unref(versionDiff).loading,"loading-more":unref(versionFiles).loadingMore,payload:unref(versionDiff).payload,"selected-path":unref(selectedVersionPath),truncated:unref(versionFiles).payload?.truncated===true,onLoadMore:unref(loadMoreVersionFiles),onSelect:unref(selectVersionFile)},null,8,[`error`,`files`,`loading`,`loading-more`,`payload`,`selected-path`,`truncated`,`onLoadMore`,`onSelect`])):createCommentVNode(``,true)]),_:1})]),_:1})]),_:1},8,[`model-value`])],2)}}};var Vibe64RepositoryWorkspace_default=_plugin_vue_export_helper_default(_sfc_main,[[`__scopeId`,`data-v-0373e9cf`]]);export{Vibe64RepositoryWorkspace_default as t};
111
+ `+i);t.b(`</div>`);return t.fl()},partials:{},subs:{}});defaultTemplates[`tag-file-added`]=new import_hogan.Template({code:function(c,p,i){var t=this;t.b(i=i||``);t.b(`<span class="d2h-tag d2h-added d2h-added-tag">ADDED</span>`);return t.fl()},partials:{},subs:{}});defaultTemplates[`tag-file-changed`]=new import_hogan.Template({code:function(c,p,i){var t=this;t.b(i=i||``);t.b(`<span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span>`);return t.fl()},partials:{},subs:{}});defaultTemplates[`tag-file-deleted`]=new import_hogan.Template({code:function(c,p,i){var t=this;t.b(i=i||``);t.b(`<span class="d2h-tag d2h-deleted d2h-deleted-tag">DELETED</span>`);return t.fl()},partials:{},subs:{}});defaultTemplates[`tag-file-renamed`]=new import_hogan.Template({code:function(c,p,i){var t=this;t.b(i=i||``);t.b(`<span class="d2h-tag d2h-moved d2h-moved-tag">RENAMED</span>`);return t.fl()},partials:{},subs:{}});var HoganJsUtils=class{constructor({compiledTemplates={},rawTemplates={}}){const compiledRawTemplates=Object.entries(rawTemplates).reduce((previousTemplates,[name,templateString])=>{const compiledTemplate=import_hogan.compile(templateString,{asString:false});return Object.assign(Object.assign({},previousTemplates),{[name]:compiledTemplate})},{});this.preCompiledTemplates=Object.assign(Object.assign(Object.assign({},defaultTemplates),compiledTemplates),compiledRawTemplates)}static compile(templateString){return import_hogan.compile(templateString,{asString:false})}render(namespace,view,params,partials,indent){const templateKey=this.templateKey(namespace,view);try{return this.preCompiledTemplates[templateKey].render(params,partials,indent)}catch(_e){throw new Error(`Could not find template to render '${templateKey}'`)}}template(namespace,view){return this.preCompiledTemplates[this.templateKey(namespace,view)]}templateKey(namespace,view){return`${namespace}-${view}`}};var defaultDiff2HtmlConfig=Object.assign(Object.assign(Object.assign({},defaultLineByLineRendererConfig),defaultSideBySideRendererConfig),{outputFormat:OutputFormatType.LINE_BY_LINE,drawFileList:true});function html(diffInput,configuration={}){const config=Object.assign(Object.assign({},defaultDiff2HtmlConfig),configuration);const diffJson=typeof diffInput===`string`?parse(diffInput,config):diffInput;const hoganUtils=new HoganJsUtils(config);const{colorScheme}=config;const fileListRendererConfig={colorScheme};return(config.drawFileList?new FileListRenderer(hoganUtils,fileListRendererConfig).render(diffJson):``)+(config.outputFormat===`side-by-side`?new SideBySideRenderer(hoganUtils,config).render(diffJson):new LineByLineRenderer(hoganUtils,config).render(diffJson))}var _hoisted_1$2={class:`vibe64-repository-diff`};var _hoisted_2$2=[`innerHTML`];var _sfc_main$2={__name:`Vibe64RepositoryDiff`,props:{error:{default:``,type:String},loading:{default:false,type:Boolean},payload:{default:null,type:Object}},setup(__props){const props=__props;const rendered=computed(()=>{const diff=String(props.payload?.diff||``);return diff?html(diff,{drawFileList:false,matching:`lines`,outputFormat:`side-by-side`}):``});const shownLines=computed(()=>Number(props.payload?.shownLines||0));const totalLines=computed(()=>Number(props.payload?.totalLines||0));const truncated=computed(()=>props.payload?.truncated===true);return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,_hoisted_1$2,[__props.loading?(openBlock(),createBlock(VProgressLinear,{key:0,color:`primary`,indeterminate:``})):createCommentVNode(``,true),__props.error?(openBlock(),createBlock(StudioErrorNotice_default,{key:1,compact:``,error:__props.error,title:`File changes could not load`},null,8,[`error`])):truncated.value?(openBlock(),createBlock(VAlert,{key:2,density:`compact`,type:`warning`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(` This large file difference is shortened to `+toDisplayString(shownLines.value)+` of `+toDisplayString(totalLines.value)+` lines. `,1)]),_:1})):createCommentVNode(``,true),rendered.value?(openBlock(),createElementBlock(`div`,{key:3,class:`vibe64-repository-diff__rendered`,innerHTML:rendered.value},null,8,_hoisted_2$2)):!__props.loading&&!__props.error?(openBlock(),createBlock(VAlert,{key:4,density:`compact`,type:`info`,variant:`tonal`},{default:withCtx(()=>[..._cache[0]||(_cache[0]=[createTextVNode(` Choose a changed file to see exactly what changed. `,-1)])]),_:1})):createCommentVNode(``,true)])}}};var Vibe64RepositoryDiff_default=_plugin_vue_export_helper_default(_sfc_main$2,[[`__scopeId`,`data-v-fdf12a43`]]);var _hoisted_1$1=[`id`,`aria-label`];var _hoisted_2$1={key:0};var _hoisted_3$1={key:0};var _hoisted_4$1=[`aria-current`,`onClick`];var _hoisted_5$1={class:`vibe64-repository-file-browser__path`};var _hoisted_6$1={class:`vibe64-repository-file-browser__meta`};var _hoisted_7$1={class:`vibe64-repository-file-browser__counts`};var _hoisted_8$1=[`aria-controls`,`aria-valuemax`,`aria-valuenow`,`aria-valuetext`];var _hoisted_9$1={class:`vibe64-repository-file-browser__detail`};var WIDTH_STORAGE_KEY=`vibe64:repository-file-list-width`;var MIN_WIDTH=160;var MAX_WIDTH=480;var DEFAULT_WIDTH=336;var SEPARATOR_WIDTH=12;var DETAIL_MIN_WIDTH=280;var _sfc_main$1={__name:`Vibe64RepositoryFileBrowser`,props:{ariaLabel:{default:`Changed files`,type:String},embedded:{default:false,type:Boolean},emptyTitle:{default:`Select a file`,type:String},error:{default:``,type:String},files:{default:()=>[],type:Array},listDescription:{default:``,type:String},listTitle:{default:``,type:String},loading:{default:false,type:Boolean},loadingMore:{default:false,type:Boolean},payload:{default:null,type:Object},selectedPath:{default:``,type:String},truncated:{default:false,type:Boolean}},emits:[`load-more`,`select`],setup(__props){const listId=useId();const browser=ref(null);const containerWidth=ref(0);const resizing=ref(false);const savedWidth=readLocalStorageJson(WIDTH_STORAGE_KEY,null);const preferredWidth=ref(Number.isFinite(savedWidth)?savedWidth:DEFAULT_WIDTH);const stacked=computed(()=>containerWidth.value>0&&containerWidth.value<480);const maxWidth=computed(()=>containerWidth.value>0?Math.max(MIN_WIDTH,Math.min(MAX_WIDTH,containerWidth.value-DETAIL_MIN_WIDTH-SEPARATOR_WIDTH)):MAX_WIDTH);const listWidth=computed(()=>Math.round(Math.min(maxWidth.value,Math.max(MIN_WIDTH,preferredWidth.value))));let observer;let drag;function syncBounds(){containerWidth.value=browser.value?.clientWidth||0}function startResize(event){if(event.button!==0||drag)return;event.preventDefault();syncBounds();drag={pointerId:event.pointerId,startX:event.clientX,startWidth:listWidth.value,target:event.currentTarget};resizing.value=true;event.currentTarget.focus();event.currentTarget.setPointerCapture(event.pointerId)}function moveResize(event){if(!drag||event.pointerId!==drag.pointerId)return;preferredWidth.value=Math.min(maxWidth.value,Math.max(MIN_WIDTH,drag.startWidth+event.clientX-drag.startX))}function stopResize(event){if(!drag||event&&event.pointerId!==drag.pointerId)return;const{target,pointerId}=drag;drag=null;resizing.value=false;if(target.hasPointerCapture(pointerId))target.releasePointerCapture(pointerId);writeLocalStorageJson(WIDTH_STORAGE_KEY,listWidth.value)}function resizeWithKeyboard(event){syncBounds();let nextWidth;switch(event.key){case`Home`:nextWidth=MIN_WIDTH;break;case`End`:nextWidth=maxWidth.value;break;case`ArrowLeft`:nextWidth=listWidth.value-16;break;case`ArrowRight`:nextWidth=listWidth.value+16;break;default:return}event.preventDefault();preferredWidth.value=Math.min(maxWidth.value,Math.max(MIN_WIDTH,nextWidth));writeLocalStorageJson(WIDTH_STORAGE_KEY,listWidth.value)}onMounted(()=>{syncBounds();if(typeof ResizeObserver!==`undefined`){observer=new ResizeObserver(syncBounds);observer.observe(browser.value)}});onBeforeUnmount(()=>{stopResize();observer?.disconnect()});function fileStatusLabel(value=``){return{A:`Added`,C:`Copied`,D:`Removed`,M:`Changed`,R:`Renamed`,T:`Type changed`,U:`Needs attention`}[String(value||``).slice(0,1).toUpperCase()]||`Changed`}return(_ctx,_cache)=>{return openBlock(),createElementBlock(`div`,{ref_key:`browser`,ref:browser,class:normalizeClass([`vibe64-repository-file-browser`,{"vibe64-repository-file-browser--embedded":__props.embedded,"vibe64-repository-file-browser--stacked":stacked.value,"vibe64-repository-file-browser--resizing":resizing.value}]),style:normalizeStyle({"--repository-file-list-width":`${listWidth.value}px`})},[createBaseVNode(`aside`,{id:unref(listId),"aria-label":__props.ariaLabel,class:`vibe64-repository-file-browser__list`},[__props.listTitle?(openBlock(),createElementBlock(`header`,_hoisted_2$1,[createBaseVNode(`strong`,null,toDisplayString(__props.listTitle),1),__props.listDescription?(openBlock(),createElementBlock(`span`,_hoisted_3$1,toDisplayString(__props.listDescription),1)):createCommentVNode(``,true)])):createCommentVNode(``,true),(openBlock(true),createElementBlock(Fragment,null,renderList(__props.files,file=>{return openBlock(),createElementBlock(`button`,{key:file.path,"aria-current":__props.selectedPath===file.path?`true`:void 0,class:normalizeClass([`vibe64-repository-file-browser__file`,{"vibe64-repository-file-browser__file--active":__props.selectedPath===file.path}]),type:`button`,onClick:$event=>_ctx.$emit(`select`,file)},[createBaseVNode(`span`,_hoisted_5$1,toDisplayString(file.path),1),createBaseVNode(`span`,_hoisted_6$1,[createTextVNode(toDisplayString(fileStatusLabel(file.status))+` `,1),createBaseVNode(`span`,_hoisted_7$1,`+`+toDisplayString(file.added)+` −`+toDisplayString(file.deleted),1)])],10,_hoisted_4$1)}),128)),__props.truncated?(openBlock(),createBlock(VBtn,{key:1,loading:__props.loadingMore,size:`small`,type:`button`,variant:`text`,onClick:_cache[0]||(_cache[0]=$event=>_ctx.$emit(`load-more`))},{default:withCtx(()=>[..._cache[1]||(_cache[1]=[createTextVNode(` Load more files `,-1)])]),_:1},8,[`loading`])):createCommentVNode(``,true)],8,_hoisted_1$1),createBaseVNode(`div`,{"aria-controls":unref(listId),"aria-label":`Changed files width`,"aria-orientation":`vertical`,"aria-valuemax":maxWidth.value,"aria-valuemin":MIN_WIDTH,"aria-valuenow":listWidth.value,"aria-valuetext":`${listWidth.value} pixels`,class:`vibe64-repository-file-browser__separator`,role:`separator`,tabindex:`0`,title:`Drag to resize, or use Left and Right arrow keys`,onKeydown:resizeWithKeyboard,onPointerdown:startResize,onPointermove:moveResize,onPointerup:stopResize,onPointercancel:stopResize,onLostpointercapture:stopResize},null,40,_hoisted_8$1),createBaseVNode(`main`,_hoisted_9$1,[createBaseVNode(`h2`,null,toDisplayString(__props.selectedPath||__props.emptyTitle),1),createVNode(Vibe64RepositoryDiff_default,{error:__props.error,loading:__props.loading,payload:__props.payload},null,8,[`error`,`loading`,`payload`])])],6)}}};var Vibe64RepositoryFileBrowser_default=_plugin_vue_export_helper_default(_sfc_main$1,[[`__scopeId`,`data-v-0776c725`]]);function message(error,fallback){return error instanceof Error?error.message:String(error||fallback)}async function requestJson(path,options={}){if(!path)throw new Error(`Repository information is not available yet.`);const result=await getHttpWebClient().request(path,{method:`GET`,...options});if(result?.ok===false){const error=new Error(vibe64ApiResponseError(result,`Repository information could not be loaded.`));error.code=String(result.code||result.errors?.[0]?.code||``).trim();error.response=result;throw error}return result}function useVibe64RepositoryWorkspace(dashboardContext,{view=`changes`}={}){const selectedCurrentPath=ref(``);const selectedVersion=ref(null);const selectedVersionPath=ref(``);const changes=reactive({error:``,loading:false,loadingMore:false,payload:null});const currentDiff=reactive({error:``,loading:false,payload:null});const history=reactive({error:``,loading:false,nextCursor:``,payload:null,versions:[]});const versionFiles=reactive({error:``,loading:false,loadingMore:false,payload:null});const versionDiff=reactive({error:``,loading:false,payload:null});const updates=reactive({applying:false,canonicalChangePending:false,checking:false,error:``,errorCode:``,payload:null});const saving=ref(false);const requestRevisions=Object.create(null);const updateChecks=new Map;const forcedUpdateFollowups=new Set;let activeChangesRefresh=null;let activeSaveHistoryRefresh=null;let disposed=false;const context=computed(()=>dashboardContext.value||{});const activeView=computed(()=>String(readRefOrGetterValue(view)||`changes`)===`history`?`history`:`changes`);const sessionId=computed(()=>String(context.value.sessionId||context.value.session?.sessionId||``).trim());const sessionsApiPath=computed(()=>String(readRefOrGetterValue(context.value.sessionsApiPath)||``).trim());const sourceOperationsSuspended=computed(()=>readRefOrGetterValue(context.value.sourceOperationsSuspended)===true);let updateAccessRevision=0;function requestContextKey(){return`${sessionsApiPath.value}\0${sessionId.value}`}function updateCheckContextKey(){return`${requestContextKey()}\0${updateAccessRevision}`}function beginRequest(name){const revision=Number(requestRevisions[name]||0)+1;requestRevisions[name]=revision;return{contextKey:requestContextKey(),name,revision}}function requestIsCurrent(request){return!disposed&&request?.contextKey===requestContextKey()&&requestRevisions[request.name]===request.revision}function updateRequestIsCurrent(request){return requestIsCurrent(request)&&request?.updateAccessRevision===updateAccessRevision&&!sourceOperationsSuspended.value}function invalidateRequests(){for(const name of[`applyUpdates`,`changes`,`currentDiff`,`history`,`saveHistory`,`updates`,`versionDiff`,`versionFiles`])requestRevisions[name]=Number(requestRevisions[name]||0)+1}function updateCheckIsNewer(candidate={},current={}){const candidateCheck=candidate&&typeof candidate===`object`?candidate:{};const currentCheck=current&&typeof current===`object`?current:{};const candidateTime=Date.parse(String(candidateCheck.checkedAt||``));const currentTime=Date.parse(String(currentCheck.checkedAt||``));if(!Number.isFinite(candidateTime))return!currentCheck.checkedAt;return!Number.isFinite(currentTime)||candidateTime>=currentTime}async function selectCurrentFile(file){const path=String(file?.path||``);selectedCurrentPath.value=path;currentDiff.error=``;currentDiff.payload=null;if(!path||!sessionId.value)return;const request=beginRequest(`currentDiff`);currentDiff.loading=true;try{const result=await requestJson(vibe64SessionChangeDiffPath(sessionsApiPath.value,sessionId.value,path));if(requestIsCurrent(request)&&selectedCurrentPath.value===path)currentDiff.payload=result}catch(error){if(requestIsCurrent(request))currentDiff.error=message(error,`This file difference could not be loaded.`)}finally{if(requestIsCurrent(request))currentDiff.loading=false}}async function loadChanges({append=false}={}){changes.error=``;if(!append){beginRequest(`currentDiff`);changes.payload=null;selectedCurrentPath.value=``;currentDiff.error=``;currentDiff.loading=false;currentDiff.payload=null}if(!sessionId.value)return;const request=beginRequest(`changes`);changes.loading=!append;changes.loadingMore=append;try{const previousFiles=append?changes.payload?.files||[]:[];const result=await requestJson(vibe64SessionChangesPath(sessionsApiPath.value,sessionId.value,{offset:previousFiles.length}));if(!requestIsCurrent(request))return;changes.payload=append?{...result,files:[...previousFiles,...result.files||[]]}:result;if(!append&&typeof context.value.refreshSessionWork===`function`){const observedWork={...result};delete observedWork.initialDiff;await context.value.refreshSessionWork(observedWork)}const first=!append?changes.payload?.files?.[0]:null;if(first){const initialDiff=result.initialDiff&&typeof result.initialDiff===`object`?result.initialDiff:null;if(String(initialDiff?.path||``)===String(first.path||``)){selectedCurrentPath.value=first.path;currentDiff.payload=initialDiff}else selectCurrentFile(first)}}catch(error){if(requestIsCurrent(request))changes.error=message(error,`Current changes could not be loaded.`)}finally{if(requestIsCurrent(request)){changes.loading=false;changes.loadingMore=false}}}function requestChangesRefresh(){const contextKey=requestContextKey();if(activeChangesRefresh?.contextKey===contextKey){activeChangesRefresh.refreshAfterActive=true;return activeChangesRefresh.promise}const refresh={contextKey,promise:null,refreshAfterActive:false};refresh.promise=loadChanges().finally(()=>{if(activeChangesRefresh!==refresh)return;activeChangesRefresh=null;if(refresh.refreshAfterActive&&!disposed&&refresh.contextKey===requestContextKey()&&activeView.value===`changes`&&!sourceOperationsSuspended.value)requestChangesRefresh()});activeChangesRefresh=refresh;return refresh.promise}async function selectVersion(version){const request=beginRequest(`versionFiles`);beginRequest(`versionDiff`);if(selectedVersion.value?.commit!==version?.commit)versionFiles.error=``;selectedVersion.value=version||null;selectedVersionPath.value=``;versionFiles.loading=false;versionFiles.loadingMore=false;versionFiles.payload=null;versionDiff.error=``;versionDiff.loading=false;versionDiff.payload=null;if(!version?.commit||!history.payload?.historySnapshotCommit)return;versionFiles.loading=true;try{const result=await requestJson(vibe64RepositoryVersionFilesPath(sessionsApiPath.value,version.commit,{historySnapshotCommit:history.payload.historySnapshotCommit,sessionId:sessionId.value}));if(!requestIsCurrent(request)||selectedVersion.value?.commit!==version.commit)return;versionFiles.payload=result;versionFiles.error=``;versionFiles.loading=false;const first=versionFiles.payload?.files?.[0];if(first)await selectVersionFile(first)}catch(error){if(requestIsCurrent(request))versionFiles.error=message(error,`This version could not be loaded.`)}finally{if(requestIsCurrent(request))versionFiles.loading=false}}async function loadMoreVersionFiles(){if(versionFiles.loading||versionFiles.loadingMore||!versionFiles.payload?.truncated||!selectedVersion.value?.commit||!history.payload?.historySnapshotCommit)return;versionFiles.loadingMore=true;versionFiles.error=``;const request=beginRequest(`versionFiles`);try{const previousFiles=versionFiles.payload.files||[];const result=await requestJson(vibe64RepositoryVersionFilesPath(sessionsApiPath.value,selectedVersion.value.commit,{historySnapshotCommit:history.payload.historySnapshotCommit,offset:previousFiles.length,sessionId:sessionId.value}));if(!requestIsCurrent(request))return;versionFiles.payload={...result,files:[...previousFiles,...result.files||[]]}}catch(error){if(requestIsCurrent(request))versionFiles.error=message(error,`More files from this version could not be loaded.`)}finally{if(requestIsCurrent(request))versionFiles.loadingMore=false}}async function selectVersionFile(file){const path=String(file?.path||``);selectedVersionPath.value=path;versionDiff.error=``;versionDiff.payload=null;if(!path||!selectedVersion.value?.commit||!history.payload?.historySnapshotCommit)return;const request=beginRequest(`versionDiff`);const versionCommit=selectedVersion.value.commit;versionDiff.loading=true;try{const result=await requestJson(vibe64RepositoryVersionDiffPath(sessionsApiPath.value,selectedVersion.value.commit,path,{historySnapshotCommit:history.payload.historySnapshotCommit,sessionId:sessionId.value}));if(requestIsCurrent(request)&&selectedVersion.value?.commit===versionCommit&&selectedVersionPath.value===path)versionDiff.payload=result}catch(error){if(requestIsCurrent(request))versionDiff.error=message(error,`This file difference could not be loaded.`)}finally{if(requestIsCurrent(request))versionDiff.loading=false}}async function loadHistory({append=false}={}){const request=beginRequest(`history`);history.loading=true;try{const result=await requestJson(vibe64RepositoryHistoryPath(sessionsApiPath.value,{cursor:append?history.nextCursor:``,sessionId:sessionId.value}));if(!requestIsCurrent(request))return;history.error=``;history.payload=append&&history.payload?{...result,versions:[...history.versions,...result.versions||[]]}:result;history.versions=history.payload.versions||[];history.nextCursor=result.nextCursor||``;if(!append&&result.updateCheck&&updateCheckIsNewer(result.updateCheck,updates.payload))updates.payload={...result.updateCheck,cached:true}}catch(error){if(requestIsCurrent(request))history.error=message(error,`Version history could not be loaded.`)}finally{if(requestIsCurrent(request))history.loading=false}}async function checkForUpdates({force=true}={}){if(!sessionId.value||updates.applying||sourceOperationsSuspended.value)return false;const contextKey=updateCheckContextKey();const active=updateChecks.get(contextKey);if(active){if(force&&active.force!==true)forcedUpdateFollowups.add(contextKey);return active.promise}const request={...beginRequest(`updates`),updateAccessRevision};updates.checking=true;updates.error=``;updates.errorCode=``;const promise=(async()=>{try{const result=await requestJson(vibe64SessionCheckUpdatesPath(sessionsApiPath.value,sessionId.value),{body:{force},method:`POST`}).finally(async()=>{while(updateRequestIsCurrent(request)&&activeSaveHistoryRefresh?.contextKey===request.contextKey)await activeSaveHistoryRefresh.settled});if(!updateRequestIsCurrent(request))return false;updates.payload=result;updates.canonicalChangePending=false;if(activeView.value===`changes`){if(!changes.payload||String(changes.payload.canonicalCommit||``).trim()!==String(result.canonicalCommit||``).trim())await requestChangesRefresh()}else if(!history.payload||String(result.canonicalCommit||``).trim()!==String(history.payload?.historySnapshotCommit||``).trim())await loadHistory();return result}catch(error){if(updateRequestIsCurrent(request)){updates.error=message(error,`Updates could not be checked.`);updates.errorCode=String(error?.code||``).trim();if(activeView.value===`changes`&&!changes.payload)await requestChangesRefresh()}return false}finally{if(updateRequestIsCurrent(request))updates.checking=false;if(updateChecks.get(contextKey)?.promise===promise)updateChecks.delete(contextKey);if(!disposed&&forcedUpdateFollowups.delete(contextKey)&&contextKey===updateCheckContextKey())checkForUpdates({force:true})}})();updateChecks.set(contextKey,{force,promise});return promise}async function applyUpdates(options={}){const requestUpdateWork=context.value.requestUpdateWork;if(!sessionId.value||sourceOperationsSuspended.value||updates.checking||updates.applying||!(updates.canonicalChangePending||updates.payload?.updateAvailable===true)||typeof requestUpdateWork!==`function`)return false;updates.applying=true;updates.error=``;updates.errorCode=``;const request=beginRequest(`applyUpdates`);try{const result=await requestUpdateWork(options);if(!requestIsCurrent(request))return false;if(result===false||result?.ok===false)throw new Error(`This session could not be updated.`);updates.payload=result;updates.canonicalChangePending=false;if(activeView.value===`history`)await loadHistory();else await requestChangesRefresh();return result}catch(error){if(requestIsCurrent(request)){updates.error=message(error,`This session could not be updated.`);updates.errorCode=String(error?.code||``).trim()}return false}finally{if(requestIsCurrent(request))updates.applying=false}}async function saveWork(){const requestSaveWork=context.value.requestSaveWork;if(!sessionId.value||sourceOperationsSuspended.value||saving.value||updates.checking||updates.applying||updates.canonicalChangePending||updates.error||!updates.payload||updates.payload?.updateAvailable===true||changes.error||changes.loading||changes.payload?.unsaved!==true||typeof requestSaveWork!==`function`)return false;saving.value=true;try{return await requestSaveWork()}finally{saving.value=false}}watch([sessionsApiPath,sessionId,activeView],async([apiPath])=>{invalidateRequests();activeSaveHistoryRefresh?.settle();activeSaveHistoryRefresh=null;changes.error=``;changes.loading=false;changes.loadingMore=false;changes.payload=null;currentDiff.error=``;currentDiff.loading=false;currentDiff.payload=null;history.error=``;history.loading=false;history.nextCursor=``;history.payload=null;history.versions=[];selectedCurrentPath.value=``;selectedVersion.value=null;selectedVersionPath.value=``;versionDiff.error=``;versionDiff.loading=false;versionDiff.payload=null;versionFiles.error=``;versionFiles.loading=false;versionFiles.loadingMore=false;versionFiles.payload=null;updates.applying=false;updates.checking=false;updates.error=``;updates.errorCode=``;updates.payload=null;updates.canonicalChangePending=false;if(apiPath&&activeView.value===`history`&&!sessionId.value)await loadHistory();else if(apiPath&&sessionId.value){const initialContext=requestContextKey();if(activeView.value===`history`){await loadHistory();if(disposed||initialContext!==requestContextKey())return}else if(!sourceOperationsSuspended.value){await requestChangesRefresh();if(disposed||initialContext!==requestContextKey())return}if(!sourceOperationsSuspended.value)checkForUpdates({force:false})}},{immediate:true});watch(sourceOperationsSuspended,async(suspended,wasSuspended)=>{if(suspended){updateAccessRevision+=1;updates.checking=false;return}if(wasSuspended!==true)return;updateAccessRevision+=1;if(sessionId.value){const releasedContext=requestContextKey();if(activeView.value===`changes`){await requestChangesRefresh();if(disposed||releasedContext!==requestContextKey()||sourceOperationsSuspended.value)return}checkForUpdates({force:false})}},{flush:`sync`,immediate:true});useRealtimeEvent({enabled:computed(()=>Boolean(sessionId.value)),event:VIBE64_SESSION_CHANGED_EVENT,matches:({payload={}}={})=>repositoryStatusSessionId(payload)===sessionId.value&&repositoryStatusRealtimeShouldRefresh(payload),onEvent:async({payload={}}={})=>{const reason=String(payload?.reason||``).trim();const checkCanonical=repositoryStatusRealtimeNeedsCanonicalCheck(payload)||[`session-repository-checked`,`session-save-completed`,`session-update-completed`].includes(reason);if(repositoryStatusRealtimeNeedsCanonicalCheck(payload))updates.canonicalChangePending=true;if(activeView.value===`history`&&reason===`session-save-completed`){const refresh=beginRequest(`saveHistory`);refresh.settled=new Promise(resolve=>{refresh.settle=resolve});activeSaveHistoryRefresh?.settle();activeSaveHistoryRefresh=refresh;try{await loadHistory()}finally{if(activeSaveHistoryRefresh===refresh)activeSaveHistoryRefresh=null;refresh.settle()}if(!requestIsCurrent(refresh))return}else if(activeView.value===`changes`&&!checkCanonical)requestChangesRefresh();if(checkCanonical)checkForUpdates({force:repositoryStatusRealtimeNeedsCanonicalCheck(payload)})}});onScopeDispose(()=>{disposed=true;invalidateRequests();activeChangesRefresh=null;activeSaveHistoryRefresh?.settle();activeSaveHistoryRefresh=null;updateChecks.clear();forcedUpdateFollowups.clear()});useRealtimeEvent({enabled:computed(()=>Boolean(sessionId.value)&&activeView.value===`changes`),event:VIBE64_SOURCE_EDITOR_FILE_CHANGED_EVENT,matches:({payload={}}={})=>repositoryStatusSessionId(payload)===sessionId.value,onEvent:()=>{requestChangesRefresh()}});return{applyUpdates,changes,checkForUpdates,currentDiff,history,loadChanges,loadHistory,loadMoreVersionFiles,saveWork,saving,selectCurrentFile,selectedCurrentPath,selectedVersion,selectedVersionPath,selectVersion,selectVersionFile,sessionId,sourceOperationsSuspended,updates,versionDiff,versionFiles}}var _hoisted_1={class:`vibe64-repository-workspace__actions`};var _hoisted_2={class:`pl-5`};var _hoisted_3={key:0};var _hoisted_4={class:`vibe64-repository-workspace__changes-area`};var _hoisted_5={key:0,"aria-label":`Saved versions this session needs`,class:`vibe64-repository-workspace__incoming-versions`};var _hoisted_6={key:1};var _hoisted_7={class:`vibe64-repository-workspace__summary-copy`};var _hoisted_8={class:`vibe64-repository-workspace__actions`};var _hoisted_9={class:`vibe64-repository-workspace__window`};var _hoisted_10={key:0,class:`vibe64-repository-workspace__changes`};var _hoisted_11={key:0,class:`vibe64-repository-workspace__empty`};var _hoisted_12={key:4,class:`vibe64-repository-workspace__empty`};var _hoisted_13={key:1};var _hoisted_14={key:2,class:`vibe64-repository-workspace__history`};var _hoisted_15={class:`vibe64-repository-workspace__history-intro`};var _hoisted_16={class:`vibe64-repository-workspace__history-heading`};var _hoisted_17={"aria-hidden":`true`,class:`vibe64-repository-workspace__history-icon`};var _hoisted_18={class:`vibe64-repository-workspace__versions`,"aria-label":`Saved versions`};var _hoisted_19=[`aria-current`,`aria-label`,`onClick`];var _hoisted_20={class:`vibe64-repository-workspace__version-copy`};var _hoisted_21={class:`vibe64-repository-workspace__version-heading`};var _hoisted_22={class:`vibe64-repository-workspace__version-meta`};var _hoisted_23={key:0,class:`vibe64-repository-workspace__load-more`};var _hoisted_24={key:3,class:`vibe64-repository-workspace__empty`};var _hoisted_25={"aria-hidden":`true`,class:`vibe64-repository-version-dialog__icon`};var _hoisted_26={class:`vibe64-repository-version-dialog__heading`};var _hoisted_27={class:`vibe64-repository-version-dialog__eyebrow`};var _hoisted_28={key:0,class:`vibe64-repository-version-dialog__meta`};var _sfc_main={__name:`Vibe64RepositoryWorkspace`,props:{dashboardContext:{default:()=>({}),type:Object},view:{default:`changes`,type:String,validator:value=>[`changes`,`history`].includes(value)}},setup(__props){const props=__props;const dashboard=computed(()=>props.dashboardContext||{});const view=computed(()=>props.view===`history`?`history`:`changes`);const historyReview=ref(null);const versionSheetOpen=ref(false);const{applyUpdates:applyReviewedUpdates,changes,checkForUpdates,currentDiff,history,loadHistory,loadChanges,loadMoreVersionFiles,saveWork,saving,selectCurrentFile,selectedCurrentPath,selectedVersion,selectedVersionPath,selectVersion,selectVersionFile,sessionId,sourceOperationsSuspended,updates,versionDiff,versionFiles}=useVibe64RepositoryWorkspace(dashboard,{view});watch([sessionId,view,()=>dashboard.value.active],()=>{historyReview.value=null},{flush:`sync`});function applyUpdates(){if(updates.payload?.historyReview){historyReview.value=JSON.parse(JSON.stringify(updates.payload.historyReview));return}return applyReviewedUpdates()}async function reconcileHistory(){const review=historyReview.value;historyReview.value=null;return applyReviewedUpdates({historyReview:review})}const versionFileCountLabel=computed(()=>{const count=Number(versionFiles.payload?.totalCount||0);return`${count} changed ${count===1?`file`:`files`}`});const pageTitle=computed(()=>view.value===`history`?`Git log`:`Current changes`);const pageDescription=computed(()=>view.value===`history`?`The project's saved versions and their file differences.`:`Files this session changed since the project's saved version.`);const repositoryStatus=computed(()=>updates.payload||changes.payload||null);const sessionUpdateLabel=computed(()=>{const branch=repositoryStatus.value?.branch;return branch?`Update session from ${branch}`:`Update session`});const repositoryOperationBusy=computed(()=>Boolean(!sessionId.value||sourceOperationsSuspended.value||updates.checking||updates.applying||saving.value));const saveWorkDisabled=computed(()=>Boolean(repositoryOperationBusy.value||updates.canonicalChangePending||updates.error||!updates.payload||repositoryStatus.value?.updateAvailable===true||changes.error||changes.loading||changes.payload?.unsaved!==true||typeof dashboard.value.requestSaveWork!==`function`));const saveWorkTitle=computed(()=>{if(sourceOperationsSuspended.value)return`Session renewal is safely using this session’s source`;if(updates.applying||saving.value)return`Wait for the current repository operation to finish`;if(updates.checking||updates.canonicalChangePending)return`Checking the latest saved project version`;if(updates.error||!updates.payload||changes.error)return`Repository status is unavailable; check for updates before saving`;if(repositoryStatus.value?.updateAvailable===true)return`${sessionUpdateLabel.value} before saving`;if(changes.loading)return`Checking whether this session has work to save`;if(changes.payload?.unsaved!==true)return`No work to save`;return`Review changes and choose where to commit them`});const repositorySummaryTitle=computed(()=>{if(!sessionId.value)return`Project versions`;if(changes.loading)return`Checking this session…`;if(updates.checking||updates.canonicalChangePending)return`Checking the latest saved project version…`;if(updates.error||!updates.payload)return`Saved project status unavailable`;if(changes.error||!changes.payload)return`Save status unavailable`;return changes.payload?.unsaved?`This session has unsaved work`:`This session is saved`});const repositorySummaryDetail=computed(()=>{if(!sessionId.value)return`Select a session to see its work. Saved project history remains available.`;if(changes.loading)return`Comparing this session with the project’s saved version.`;if(updates.checking||updates.canonicalChangePending)return`Save will be available after the latest project version has been checked.`;if(updates.error||!updates.payload)return`Save is unavailable until Vibe64 can safely compare this session with the saved project.`;if(changes.error||!changes.payload)return`Check for updates to compare this session with the project’s saved version.`;const count=Number(changes.payload?.totalCount||0);const behind=Number(repositoryStatus.value?.behind||0);if(behind>0){if(changes.payload?.unsaved===true)return`${behind} newer saved ${behind===1?`version is`:`versions are`} available. Updating this session will preserve its unsaved work.`;return`${behind} newer saved ${behind===1?`version is`:`versions are`} available. ${sessionUpdateLabel.value} to use ${behind===1?`it`:`them`}.`}if(count>0)return`${count} ${count===1?`file differs`:`files differ`} from the project’s saved version.`;return`No files differ from the project’s saved version.`});const repositoryUpdateTitle=computed(()=>{if(!sessionId.value)return`No session selected`;if(updates.checking)return`Checking for updates…`;if(updates.error)return`Update status unavailable`;if(history.loading&&!history.payload)return`Loading update status…`;if(!repositoryStatus.value)return`Updates have not been checked`;const relationship=repositoryUpdateRelationship(repositoryStatus.value.ahead,repositoryStatus.value.behind);const ahead=Number(repositoryStatus.value.ahead||0);const behind=Number(repositoryStatus.value.behind||0);if(updates.payload?.historyReview)return`The local project history was rewritten`;if(relationship===`diverged`)return`This session and the saved project have both changed`;if(behind>0)return`${behind} ${behind===1?`update`:`updates`} available`;if(relationship===`ahead`&&ahead>0)return`This session has work not in the saved project`;return`This session is up to date`});const repositoryIncomingVersions=computed(()=>{return repositoryUpdateRelationship(repositoryStatus.value?.ahead,repositoryStatus.value?.behind)===`behind`&&Array.isArray(repositoryStatus.value?.incomingVersions)?repositoryStatus.value.incomingVersions:[]});const repositoryIncomingVersionsRemainder=computed(()=>Math.max(0,Number(repositoryStatus.value?.behind||0)-repositoryIncomingVersions.value.length));const repositoryUpdateDetail=computed(()=>{if(!sessionId.value)return`Select a session to check it against the project’s saved version.`;if(updates.checking)return`Reading the latest saved project version.`;if(updates.error)return`Review the problem below, then try checking again.`;if(history.loading&&!history.payload)return`Reading the last successful update check for this session.`;if(!repositoryStatus.value)return`Use Check for updates to compare this session with the latest saved project version.`;const relationship=repositoryUpdateRelationship(repositoryStatus.value.ahead,repositoryStatus.value.behind);const ahead=Number(repositoryStatus.value.ahead||0);const behind=Number(repositoryStatus.value.behind||0);if(updates.payload?.historyReview)return`Review this session’s retained changes before reconciling them with the new project history.`;const checked=repositoryStatus.value.checkedAt?` Last checked ${formatVersionDate(repositoryStatus.value.checkedAt)}.`:``;if(relationship===`diverged`)return`Someone saved new project work after this session started, and this session also has its own saved work. Vibe64 cannot simply move it forward. Updating this session will try to combine both without discarding either. If the same files conflict, nothing changes and Temporary AI can help.${checked}`;if(behind>0){const updateEffect=changes.payload?.unsaved===true?`will replay its unsaved work on the latest saved version before Save is allowed`:`will move it to the latest saved version`;return`This session is ${behind} saved ${behind===1?`version`:`versions`} behind. Updating this session ${updateEffect}.${checked}`}if(relationship===`ahead`&&ahead>0)return`There are no incoming updates. This session contains ${ahead} ${ahead===1?`version`:`versions`} not yet in the saved project.${checked}`;return`It already includes the latest saved project version.${checked}`});const canResolveUpdateWithTemporaryAi=computed(()=>[`vibe64_session_update_conflict`,`vibe64_session_update_history_diverged`].includes(String(updates.errorCode||``).trim()));const resolvingUpdateProblem=ref(false);function formatVersionDate(value=``){const parsed=new Date(value);return Number.isNaN(parsed.getTime())?`Unknown time`:new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`}).format(parsed)}function versionButtonLabel(version={},index=-1){const parts=[index===0?`Latest saved version`:`Saved version`,version.message||`Saved work`,version.author||`Unknown author`,formatVersionDate(version.committedAt),version.shortCommit];if(version.isMerge)parts.splice(1,0,`merge`);return parts.filter(Boolean).join(`, `)}async function resolveUpdateProblem(){if(resolvingUpdateProblem.value||dashboard.value.assistantFixAllowed===false||typeof dashboard.value.requestTemporaryAi!==`function`)return false;resolvingUpdateProblem.value=true;try{return await dashboard.value.requestTemporaryAi({code:updates.errorCode,error:updates.error,title:`Resolve repository update`})}finally{resolvingUpdateProblem.value=false}}async function openVersion(version){versionSheetOpen.value=true;await selectVersion(version)}function closeVersion(){versionSheetOpen.value=false;selectVersion(null)}return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,{class:normalizeClass([`vibe64-repository-workspace`,{"vibe64-repository-workspace--changes":view.value===`changes`}])},[createVNode(Vibe64DashboardPageHeader_default,{description:pageDescription.value,icon:view.value===`history`?unref(mdiSourceRepository):unref(mdiFileCompare),title:pageTitle.value},{actions:withCtx(()=>[createBaseVNode(`div`,_hoisted_1,[createVNode(VBtn,{disabled:repositoryOperationBusy.value,loading:unref(updates).checking,"prepend-icon":unref(mdiCloudRefreshOutline),size:`small`,type:`button`,variant:`tonal`,onClick:unref(checkForUpdates)},{default:withCtx(()=>[..._cache[7]||(_cache[7]=[createTextVNode(` Check for updates `,-1)])]),_:1},8,[`disabled`,`loading`,`prepend-icon`,`onClick`]),view.value===`history`&&(repositoryStatus.value?.updateAvailable||unref(updates).canonicalChangePending)?(openBlock(),createBlock(VBtn,{key:0,disabled:repositoryOperationBusy.value,loading:unref(updates).applying,"prepend-icon":unref(mdiSourceBranchSync),size:`small`,type:`button`,variant:`tonal`,onClick:applyUpdates},{default:withCtx(()=>[createTextVNode(toDisplayString(unref(updates).payload?.historyReview?`Review and reconcile session`:sessionUpdateLabel.value),1)]),_:1},8,[`disabled`,`loading`,`prepend-icon`])):createCommentVNode(``,true)])]),_:1},8,[`description`,`icon`,`title`]),createVNode(VDialog,{"model-value":Boolean(historyReview.value),"max-width":`620`,"onUpdate:modelValue":_cache[1]||(_cache[1]=$event=>!$event&&(historyReview.value=null))},{default:withCtx(()=>[historyReview.value?(openBlock(),createBlock(VCard,{key:0},{default:withCtx(()=>[createVNode(VCardTitle,null,{default:withCtx(()=>[..._cache[8]||(_cache[8]=[createTextVNode(`Reconcile after rewritten project history`,-1)])]),_:1}),createVNode(VCardText,null,{default:withCtx(()=>[_cache[11]||(_cache[11]=createBaseVNode(`p`,null,`The project’s Git history changed outside this session. Apply this session’s retained changes to the current project version.`,-1)),_cache[12]||(_cache[12]=createBaseVNode(`p`,null,`Your conversation stays in this session. A checkpoint preserves the current files. Conflicts stop the update before it changes your working files.`,-1)),createBaseVNode(`p`,null,[_cache[9]||(_cache[9]=createTextVNode(`Previous baseline: `,-1)),createBaseVNode(`code`,null,toDisplayString(historyReview.value.baseCommit.slice(0,8)),1),_cache[10]||(_cache[10]=createTextVNode(` · New baseline: `,-1)),createBaseVNode(`code`,null,toDisplayString(historyReview.value.canonicalCommit.slice(0,8)),1)]),_cache[13]||(_cache[13]=createBaseVNode(`p`,{class:`mt-3`},`Session changes to reconcile (up to 100 files):`,-1)),createBaseVNode(`ul`,_hoisted_2,[(openBlock(true),createElementBlock(Fragment,null,renderList(historyReview.value.changedPaths,path=>{return openBlock(),createElementBlock(`li`,{key:path,class:`text-break`},toDisplayString(path),1)}),128))]),!historyReview.value.changedPaths?.length?(openBlock(),createElementBlock(`p`,_hoisted_3,`No session file changes. The session will move to the new project version.`)):createCommentVNode(``,true)]),_:1}),createVNode(VCardActions,null,{default:withCtx(()=>[createVNode(VSpacer),createVNode(VBtn,{onClick:_cache[0]||(_cache[0]=$event=>historyReview.value=null)},{default:withCtx(()=>[..._cache[14]||(_cache[14]=[createTextVNode(`Cancel`,-1)])]),_:1}),createVNode(VBtn,{onClick:reconcileHistory},{default:withCtx(()=>[..._cache[15]||(_cache[15]=[createTextVNode(`Reconcile session`,-1)])]),_:1})]),_:1})]),_:1})):createCommentVNode(``,true)]),_:1},8,[`model-value`]),createBaseVNode(`section`,_hoisted_4,[view.value===`history`?(openBlock(),createBlock(VSheet,{key:0,"aria-live":`polite`,border:``,class:`vibe64-repository-workspace__update-status`,role:`status`,rounded:`lg`},{default:withCtx(()=>[createBaseVNode(`strong`,null,toDisplayString(repositoryUpdateTitle.value),1),createBaseVNode(`span`,null,toDisplayString(repositoryUpdateDetail.value),1),repositoryIncomingVersions.value.length?(openBlock(),createElementBlock(`ol`,_hoisted_5,[(openBlock(true),createElementBlock(Fragment,null,renderList(repositoryIncomingVersions.value,version=>{return openBlock(),createElementBlock(`li`,{key:version.commit},[createVNode(VIcon,{"aria-hidden":`true`,icon:version.isMerge?unref(mdiSourceMerge):unref(mdiSourceCommit),size:`15`},null,8,[`icon`]),createBaseVNode(`span`,null,toDisplayString(version.message||`Saved work`),1),createBaseVNode(`code`,null,toDisplayString(version.shortCommit),1)])}),128))])):createCommentVNode(``,true),repositoryIncomingVersions.value.length&&repositoryIncomingVersionsRemainder.value>0?(openBlock(),createElementBlock(`span`,_hoisted_6,` And `+toDisplayString(repositoryIncomingVersionsRemainder.value)+` older `+toDisplayString(repositoryIncomingVersionsRemainder.value===1?`update`:`updates`)+`. `,1)):createCommentVNode(``,true)]),_:1})):createCommentVNode(``,true),view.value===`changes`?(openBlock(),createBlock(VSheet,{key:1,border:``,class:`vibe64-repository-workspace__summary`,rounded:`lg`},{default:withCtx(()=>[createBaseVNode(`div`,_hoisted_7,[createBaseVNode(`strong`,null,toDisplayString(repositorySummaryTitle.value),1),createBaseVNode(`span`,null,toDisplayString(repositorySummaryDetail.value),1)]),createBaseVNode(`div`,_hoisted_8,[repositoryStatus.value?.updateAvailable||unref(updates).canonicalChangePending?(openBlock(),createBlock(VBtn,{key:0,disabled:repositoryOperationBusy.value,loading:unref(updates).applying,"prepend-icon":unref(mdiSourceBranchSync),size:`small`,type:`button`,variant:`tonal`,onClick:applyUpdates},{default:withCtx(()=>[createTextVNode(toDisplayString(unref(updates).payload?.historyReview?`Review and reconcile session`:sessionUpdateLabel.value),1)]),_:1},8,[`disabled`,`loading`,`prepend-icon`])):createCommentVNode(``,true),createVNode(VBtn,{color:unref(changes).payload?.unsaved===true?`error`:void 0,disabled:saveWorkDisabled.value,loading:unref(saving),"prepend-icon":unref(mdiSourceCommit),size:`small`,type:`button`,title:saveWorkTitle.value,variant:`tonal`,onClick:unref(saveWork)},{default:withCtx(()=>[..._cache[16]||(_cache[16]=[createTextVNode(` Review changes `,-1)])]),_:1},8,[`color`,`disabled`,`loading`,`prepend-icon`,`title`,`onClick`])])]),_:1})):createCommentVNode(``,true),unref(updates).error?(openBlock(),createBlock(StudioErrorNotice_default,{key:2,compact:``,error:unref(updates).error,title:`Project updates need attention`},{actions:withCtx(()=>[canResolveUpdateWithTemporaryAi.value&&typeof dashboard.value.requestTemporaryAi===`function`?(openBlock(),createBlock(Vibe64TemporaryAiFixAction_default,{key:0,disabled:resolvingUpdateProblem.value||dashboard.value.assistantFixAllowed===false,pending:resolvingUpdateProblem.value,title:dashboard.value.assistantFixAllowed===false?dashboard.value.assistantFixRestrictionMessage:`Open temporary AI to resolve this repository update`,onClick:resolveUpdateProblem},null,8,[`disabled`,`pending`,`title`])):createCommentVNode(``,true)]),_:1},8,[`error`])):createCommentVNode(``,true),createBaseVNode(`div`,_hoisted_9,[view.value===`changes`?(openBlock(),createElementBlock(`section`,_hoisted_10,[!unref(sessionId)?(openBlock(),createElementBlock(`div`,_hoisted_11,[..._cache[17]||(_cache[17]=[createBaseVNode(`strong`,null,`No session selected`,-1),createBaseVNode(`span`,null,`Create or select a session to see its current changes.`,-1)])])):unref(changes).error?(openBlock(),createBlock(StudioErrorNotice_default,{key:1,compact:``,error:unref(changes).error,title:`Current changes could not load`},null,8,[`error`])):unref(changes).loading?(openBlock(),createBlock(VProgressLinear,{key:2,color:`primary`,indeterminate:``})):unref(changes).payload?.files?.length?(openBlock(),createBlock(Vibe64RepositoryFileBrowser_default,{key:3,"aria-label":`Changed files`,"empty-title":`File changes`,error:unref(currentDiff).error,files:unref(changes).payload.files,"list-description":`Compared with the project’s saved version`,"list-title":`${unref(changes).payload.totalCount} changed ${unref(changes).payload.totalCount===1?`file`:`files`}`,loading:unref(currentDiff).loading,"loading-more":unref(changes).loadingMore,payload:unref(currentDiff).payload,"selected-path":unref(selectedCurrentPath),truncated:unref(changes).payload.truncated,onLoadMore:_cache[2]||(_cache[2]=$event=>unref(loadChanges)({append:true})),onSelect:unref(selectCurrentFile)},null,8,[`error`,`files`,`list-title`,`loading`,`loading-more`,`payload`,`selected-path`,`truncated`,`onSelect`])):(openBlock(),createElementBlock(`div`,_hoisted_12,[..._cache[18]||(_cache[18]=[createBaseVNode(`strong`,null,`No unsaved file changes`,-1),createBaseVNode(`span`,null,`This session has no file changes waiting to be saved.`,-1)])]))])):(openBlock(),createElementBlock(`section`,_hoisted_13,[unref(history).error?(openBlock(),createBlock(StudioErrorNotice_default,{key:0,compact:``,error:unref(history).error,title:`Version history could not load`},createSlots({_:2},[!unref(history).payload?{name:`actions`,fn:withCtx(()=>[createVNode(VBtn,{"aria-busy":unref(history).loading?`true`:void 0,disabled:unref(history).loading,size:`small`,type:`button`,variant:`tonal`,onClick:_cache[3]||(_cache[3]=$event=>unref(loadHistory)())},{default:withCtx(()=>[createTextVNode(toDisplayString(unref(history).loading?`Retrying…`:`Retry history`),1)]),_:1},8,[`aria-busy`,`disabled`])]),key:`0`}:void 0]),1032,[`error`])):createCommentVNode(``,true),unref(history).loading&&!unref(history).payload&&!unref(history).error?(openBlock(),createBlock(VProgressLinear,{key:1,color:`primary`,indeterminate:``})):unref(history).versions.length?(openBlock(),createElementBlock(`div`,_hoisted_14,[createBaseVNode(`div`,_hoisted_15,[createBaseVNode(`div`,_hoisted_16,[createBaseVNode(`span`,_hoisted_17,[createVNode(VIcon,{icon:unref(mdiSourceCommit),size:`18`},null,8,[`icon`])]),_cache[19]||(_cache[19]=createBaseVNode(`div`,null,[createBaseVNode(`strong`,null,`Saved versions`),createBaseVNode(`span`,null,`Newest first. Open a version to review its files.`)],-1))]),createVNode(VChip,{label:``,size:`x-small`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(unref(history).versions.length)+` loaded `,1)]),_:1})]),createBaseVNode(`ol`,_hoisted_18,[(openBlock(true),createElementBlock(Fragment,null,renderList(unref(history).versions,(version,index)=>{return openBlock(),createElementBlock(`li`,{key:version.commit,class:`vibe64-repository-workspace__history-item`},[createBaseVNode(`span`,{"aria-hidden":`true`,class:normalizeClass([`vibe64-repository-workspace__commit-marker`,{"vibe64-repository-workspace__commit-marker--first":index===0,"vibe64-repository-workspace__commit-marker--last":index===unref(history).versions.length-1}])},[createBaseVNode(`span`,{class:normalizeClass([`vibe64-repository-workspace__commit-node`,{"vibe64-repository-workspace__commit-node--latest":index===0}])},[createVNode(VIcon,{icon:version.isMerge?unref(mdiSourceMerge):unref(mdiSourceCommit),size:`15`},null,8,[`icon`])],2)],2),createBaseVNode(`button`,{"aria-current":versionSheetOpen.value&&unref(selectedVersion)?.commit===version.commit?`true`:void 0,"aria-label":versionButtonLabel(version,index),class:`vibe64-repository-workspace__version`,type:`button`,onClick:$event=>openVersion(version)},[createBaseVNode(`span`,_hoisted_20,[createBaseVNode(`span`,_hoisted_21,[createBaseVNode(`strong`,null,toDisplayString(version.message||`Saved work`),1),index===0?(openBlock(),createBlock(VChip,{key:0,color:`primary`,label:``,size:`x-small`,variant:`tonal`},{default:withCtx(()=>[..._cache[20]||(_cache[20]=[createTextVNode(` Latest `,-1)])]),_:1})):createCommentVNode(``,true),version.isMerge?(openBlock(),createBlock(VChip,{key:1,label:``,size:`x-small`,variant:`outlined`},{default:withCtx(()=>[..._cache[21]||(_cache[21]=[createTextVNode(` Merge `,-1)])]),_:1})):createCommentVNode(``,true)]),createBaseVNode(`span`,_hoisted_22,[createBaseVNode(`span`,null,[createVNode(VIcon,{icon:unref(mdiAccountOutline),size:`15`},null,8,[`icon`]),createTextVNode(` `+toDisplayString(version.author||`Unknown author`),1)]),createBaseVNode(`span`,null,[createVNode(VIcon,{icon:unref(mdiClockOutline),size:`15`},null,8,[`icon`]),createTextVNode(` `+toDisplayString(formatVersionDate(version.committedAt)),1)]),createBaseVNode(`code`,null,toDisplayString(version.shortCommit),1)])]),createVNode(VIcon,{"aria-hidden":`true`,icon:unref(mdiChevronRight),size:`20`},null,8,[`icon`])],8,_hoisted_19)])}),128)),unref(history).nextCursor?(openBlock(),createElementBlock(`li`,_hoisted_23,[createVNode(VBtn,{loading:unref(history).loading,size:`small`,type:`button`,variant:`text`,onClick:_cache[4]||(_cache[4]=$event=>unref(loadHistory)({append:true}))},{default:withCtx(()=>[..._cache[22]||(_cache[22]=[createTextVNode(` Load older versions `,-1)])]),_:1},8,[`loading`])])):createCommentVNode(``,true)])])):!unref(history).error?(openBlock(),createElementBlock(`div`,_hoisted_24,[..._cache[23]||(_cache[23]=[createBaseVNode(`strong`,null,`No saved versions yet`,-1),createBaseVNode(`span`,null,`Versions will appear here after work is saved.`,-1)])])):createCommentVNode(``,true)]))])]),createVNode(VDialog,{"model-value":versionSheetOpen.value,class:`vibe64-repository-version-dialog`,fullscreen:``,scrollable:``,transition:`dialog-bottom-transition`,"onUpdate:modelValue":_cache[6]||(_cache[6]=$event=>!$event&&closeVersion())},{default:withCtx(()=>[createVNode(VCard,{class:`vibe64-repository-version-dialog__card`},{default:withCtx(()=>[createVNode(VCardTitle,{class:`vibe64-repository-version-dialog__header`},{default:withCtx(()=>[createBaseVNode(`span`,_hoisted_25,[createVNode(VIcon,{icon:unref(selectedVersion)?.isMerge?unref(mdiSourceMerge):unref(mdiSourceCommit),size:`22`},null,8,[`icon`])]),createBaseVNode(`div`,_hoisted_26,[createBaseVNode(`span`,_hoisted_27,toDisplayString(unref(selectedVersion)?.isMerge?`Merge version`:`Saved version`),1),createBaseVNode(`h2`,null,toDisplayString(unref(selectedVersion)?.message||`Saved version`),1),unref(selectedVersion)?(openBlock(),createElementBlock(`div`,_hoisted_28,[createBaseVNode(`span`,null,[createVNode(VIcon,{icon:unref(mdiAccountOutline),size:`16`},null,8,[`icon`]),createTextVNode(` `+toDisplayString(unref(selectedVersion).author||`Unknown author`),1)]),createBaseVNode(`span`,null,[createVNode(VIcon,{icon:unref(mdiClockOutline),size:`16`},null,8,[`icon`]),createTextVNode(` `+toDisplayString(formatVersionDate(unref(selectedVersion).committedAt)),1)]),createBaseVNode(`code`,null,toDisplayString(unref(selectedVersion).shortCommit),1),unref(versionFiles).payload?(openBlock(),createBlock(VChip,{key:0,label:``,size:`x-small`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(versionFileCountLabel.value),1)]),_:1})):createCommentVNode(``,true)])):createCommentVNode(``,true)]),createVNode(VBtn,{"aria-label":`Close version details`,icon:unref(mdiClose),size:`small`,type:`button`,variant:`text`,onClick:closeVersion},null,8,[`icon`])]),_:1}),createVNode(VDivider),createVNode(VCardText,{class:`vibe64-repository-version-dialog__body`},{default:withCtx(()=>[unref(versionFiles).error?(openBlock(),createBlock(StudioErrorNotice_default,{key:0,class:`vibe64-repository-version-dialog__error`,compact:``,error:unref(versionFiles).error,title:`Version details could not load`},createSlots({_:2},[!unref(versionFiles).payload?{name:`actions`,fn:withCtx(()=>[createVNode(VBtn,{"aria-busy":unref(versionFiles).loading?`true`:void 0,disabled:unref(versionFiles).loading,size:`small`,type:`button`,variant:`tonal`,onClick:_cache[5]||(_cache[5]=$event=>unref(selectVersion)(unref(selectedVersion)))},{default:withCtx(()=>[createTextVNode(toDisplayString(unref(versionFiles).loading?`Retrying…`:`Retry files`),1)]),_:1},8,[`aria-busy`,`disabled`])]),key:`0`}:void 0]),1032,[`error`])):createCommentVNode(``,true),unref(versionFiles).loading&&!unref(versionFiles).payload&&!unref(versionFiles).error?(openBlock(),createBlock(VProgressLinear,{key:1,color:`primary`,indeterminate:``})):createCommentVNode(``,true),unref(versionFiles).payload?(openBlock(),createBlock(Vibe64RepositoryFileBrowser_default,{key:2,"aria-label":`Files in this version`,class:`vibe64-repository-version-dialog__files`,embedded:``,error:unref(versionDiff).error,files:unref(versionFiles).payload?.files||[],loading:unref(versionDiff).loading,"loading-more":unref(versionFiles).loadingMore,payload:unref(versionDiff).payload,"selected-path":unref(selectedVersionPath),truncated:unref(versionFiles).payload?.truncated===true,onLoadMore:unref(loadMoreVersionFiles),onSelect:unref(selectVersionFile)},null,8,[`error`,`files`,`loading`,`loading-more`,`payload`,`selected-path`,`truncated`,`onLoadMore`,`onSelect`])):createCommentVNode(``,true)]),_:1})]),_:1})]),_:1},8,[`model-value`])],2)}}};var Vibe64RepositoryWorkspace_default=_plugin_vue_export_helper_default(_sfc_main,[[`__scopeId`,`data-v-77807551`]]);export{Vibe64RepositoryWorkspace_default as t};
@@ -1 +1 @@
1
- :host,:root{--d2h-bg-color:#fff;--d2h-border-color:#ddd;--d2h-dim-color:#0000004d;--d2h-line-border-color:#eee;--d2h-file-header-bg-color:#f7f7f7;--d2h-file-header-border-color:#d8d8d8;--d2h-empty-placeholder-bg-color:#f1f1f1;--d2h-empty-placeholder-border-color:#e1e1e1;--d2h-selected-color:#c8e1ff;--d2h-ins-bg-color:#dfd;--d2h-ins-border-color:#b4e2b4;--d2h-ins-highlight-bg-color:#97f295;--d2h-ins-label-color:#399839;--d2h-del-bg-color:#fee8e9;--d2h-del-border-color:#e9aeae;--d2h-del-highlight-bg-color:#ffb6ba;--d2h-del-label-color:#c33;--d2h-change-del-color:#fdf2d0;--d2h-change-ins-color:#ded;--d2h-info-bg-color:#f8fafd;--d2h-info-border-color:#d5e4f2;--d2h-change-label-color:#d0b44c;--d2h-moved-label-color:#3572b0;--d2h-dark-color:#e6edf3;--d2h-dark-bg-color:#0d1117;--d2h-dark-border-color:#30363d;--d2h-dark-dim-color:#6e7681;--d2h-dark-line-border-color:#21262d;--d2h-dark-file-header-bg-color:#161b22;--d2h-dark-file-header-border-color:#30363d;--d2h-dark-empty-placeholder-bg-color:#6e76811a;--d2h-dark-empty-placeholder-border-color:#30363d;--d2h-dark-selected-color:#388bfd1a;--d2h-dark-ins-bg-color:#2ea04326;--d2h-dark-ins-border-color:#2ea04366;--d2h-dark-ins-highlight-bg-color:#2ea04366;--d2h-dark-ins-label-color:#3fb950;--d2h-dark-del-bg-color:#f851491a;--d2h-dark-del-border-color:#f8514966;--d2h-dark-del-highlight-bg-color:#f8514966;--d2h-dark-del-label-color:#f85149;--d2h-dark-change-del-color:#d2992233;--d2h-dark-change-ins-color:#2ea04340;--d2h-dark-info-bg-color:#388bfd1a;--d2h-dark-info-border-color:#388bfd66;--d2h-dark-change-label-color:#d29922;--d2h-dark-moved-label-color:#3572b0}.d2h-wrapper{text-align:left}.d2h-file-header{background-color:#f7f7f7;background-color:var(--d2h-file-header-bg-color);border-bottom:1px solid #d8d8d8;border-bottom:1px solid var(--d2h-file-header-border-color);height:35px;padding:5px 10px;font-family:Source Sans Pro,Helvetica Neue,Helvetica,Arial,sans-serif;display:flex}.d2h-file-header.d2h-sticky-header{z-index:1;position:sticky;top:0}.d2h-file-stats{margin-left:auto;font-size:14px;display:flex}.d2h-lines-added{border:1px solid #b4e2b4;border:1px solid var(--d2h-ins-border-color);color:var(--d2h-ins-label-color);text-align:right;vertical-align:middle;border-radius:5px 0 0 5px;padding:2px}.d2h-lines-deleted{border:1px solid #e9aeae;border:1px solid var(--d2h-del-border-color);color:var(--d2h-del-label-color);text-align:left;vertical-align:middle;border-radius:0 5px 5px 0;margin-left:1px;padding:2px}.d2h-file-name-wrapper{align-items:center;width:100%;font-size:15px;display:flex}.d2h-file-name{text-overflow:ellipsis;white-space:nowrap;overflow-x:hidden}.d2h-file-wrapper{border:1px solid #ddd;border:1px solid var(--d2h-border-color);border-radius:3px;margin-bottom:1em}.d2h-file-collapse{cursor:pointer;border:1px solid #ddd;border:1px solid var(--d2h-border-color);border-radius:3px;justify-content:flex-end;align-items:center;padding:4px 8px;font-size:12px;display:none}.d2h-file-collapse.d2h-selected{background-color:#c8e1ff;background-color:var(--d2h-selected-color)}.d2h-file-collapse-input{margin:0 4px 0 0}.d2h-diff-table{border-collapse:collapse;width:100%;font-family:Menlo,Consolas,monospace;font-size:13px}.d2h-files-diff{width:100%;display:flex}.d2h-file-diff{overflow-y:hidden}.d2h-file-diff.d2h-d-none,.d2h-files-diff.d2h-d-none{display:none}.d2h-file-side-diff{width:50%;display:inline-block;overflow:scroll hidden}.d2h-code-line{width:calc(100% - 16em);padding:0 8em}.d2h-code-line,.d2h-code-side-line{-webkit-user-select:none;user-select:none;white-space:nowrap;display:inline-block}.d2h-code-side-line{width:calc(100% - 9em);padding:0 4.5em}.d2h-code-line-ctn{word-wrap:normal;-webkit-user-select:text;user-select:text;vertical-align:middle;white-space:pre;background:0 0;width:100%;padding:0;display:inline-block}.d2h-code-line del,.d2h-code-side-line del{background-color:#ffb6ba;background-color:var(--d2h-del-highlight-bg-color)}.d2h-code-line del,.d2h-code-line ins,.d2h-code-side-line del,.d2h-code-side-line ins{border-radius:.2em;margin-top:-1px;-webkit-text-decoration:none;text-decoration:none;display:inline-block}.d2h-code-line ins,.d2h-code-side-line ins{background-color:#97f295;background-color:var(--d2h-ins-highlight-bg-color);text-align:left}.d2h-code-line-prefix{word-wrap:normal;white-space:pre;background:0 0;padding:0;display:inline}.line-num1{float:left}.line-num1,.line-num2{box-sizing:border-box;text-overflow:ellipsis;width:3.5em;padding:0 .5em;overflow:hidden}.line-num2{float:right}.d2h-code-linenumber{background-color:#fff;background-color:var(--d2h-bg-color);border:solid #eee;border:solid var(--d2h-line-border-color);box-sizing:border-box;color:var(--d2h-dim-color);cursor:pointer;text-align:right;border-width:0 1px;width:7.5em;display:inline-block;position:absolute}.d2h-code-linenumber:after{content:"​"}.d2h-code-side-linenumber{background-color:#fff;background-color:var(--d2h-bg-color);border:solid #eee;border:solid var(--d2h-line-border-color);box-sizing:border-box;color:var(--d2h-dim-color);cursor:pointer;text-align:right;text-overflow:ellipsis;border-width:0 1px;width:4em;padding:0 .5em;display:inline-block;position:absolute;overflow:hidden}.d2h-code-side-linenumber:after{content:"​"}.d2h-code-side-emptyplaceholder,.d2h-emptyplaceholder{background-color:#f1f1f1;background-color:var(--d2h-empty-placeholder-bg-color);border-color:#e1e1e1;border-color:var(--d2h-empty-placeholder-border-color)}.d2h-code-line-prefix,.d2h-code-linenumber,.d2h-code-side-linenumber,.d2h-emptyplaceholder{-webkit-user-select:none;user-select:none}.d2h-code-linenumber,.d2h-code-side-linenumber{direction:rtl}.d2h-del{background-color:#fee8e9;background-color:var(--d2h-del-bg-color);border-color:#e9aeae;border-color:var(--d2h-del-border-color)}.d2h-ins{background-color:#dfd;background-color:var(--d2h-ins-bg-color);border-color:#b4e2b4;border-color:var(--d2h-ins-border-color)}.d2h-info{background-color:#f8fafd;background-color:var(--d2h-info-bg-color);border-color:#d5e4f2;border-color:var(--d2h-info-border-color);color:var(--d2h-dim-color)}.d2h-file-diff .d2h-del.d2h-change{background-color:#fdf2d0;background-color:var(--d2h-change-del-color)}.d2h-file-diff .d2h-ins.d2h-change{background-color:#ded;background-color:var(--d2h-change-ins-color)}.d2h-file-list-wrapper{margin-bottom:10px}.d2h-file-list-wrapper a{-webkit-text-decoration:none;text-decoration:none}.d2h-file-list-wrapper a,.d2h-file-list-wrapper a:visited{color:var(--d2h-moved-label-color)}.d2h-file-list-header{text-align:left}.d2h-file-list-title{font-weight:700}.d2h-file-list-line{text-align:left;display:flex}.d2h-file-list{margin:0;padding:0;list-style:none;display:block}.d2h-file-list>li{border-bottom:1px solid #ddd;border-bottom:1px solid var(--d2h-border-color);margin:0;padding:5px 10px}.d2h-file-list>li:last-child{border-bottom:none}.d2h-file-switch{cursor:pointer;font-size:10px;display:none}.d2h-icon{fill:currentColor;vertical-align:middle;margin-right:10px}.d2h-deleted{color:var(--d2h-del-label-color)}.d2h-added{color:var(--d2h-ins-label-color)}.d2h-changed{color:var(--d2h-change-label-color)}.d2h-moved{color:var(--d2h-moved-label-color)}.d2h-tag{background-color:#fff;background-color:var(--d2h-bg-color);margin-left:5px;padding:0 2px;font-size:10px;display:flex}.d2h-deleted-tag{border:1px solid #c33;border:1px solid var(--d2h-del-label-color)}.d2h-added-tag{border:1px solid #399839;border:1px solid var(--d2h-ins-label-color)}.d2h-changed-tag{border:1px solid #d0b44c;border:1px solid var(--d2h-change-label-color)}.d2h-moved-tag{border:1px solid #3572b0;border:1px solid var(--d2h-moved-label-color)}.d2h-dark-color-scheme{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);color:var(--d2h-dark-color)}.d2h-dark-color-scheme .d2h-file-header{background-color:#161b22;background-color:var(--d2h-dark-file-header-bg-color);border-bottom:#30363d;border-bottom:var(--d2h-dark-file-header-border-color)}.d2h-dark-color-scheme .d2h-lines-added{border:1px solid #2ea04366;border:1px solid var(--d2h-dark-ins-border-color);color:var(--d2h-dark-ins-label-color)}.d2h-dark-color-scheme .d2h-lines-deleted{border:1px solid #f8514966;border:1px solid var(--d2h-dark-del-border-color);color:var(--d2h-dark-del-label-color)}.d2h-dark-color-scheme .d2h-code-line del,.d2h-dark-color-scheme .d2h-code-side-line del{background-color:#f8514966;background-color:var(--d2h-dark-del-highlight-bg-color)}.d2h-dark-color-scheme .d2h-code-line ins,.d2h-dark-color-scheme .d2h-code-side-line ins{background-color:#2ea04366;background-color:var(--d2h-dark-ins-highlight-bg-color)}.d2h-dark-color-scheme .d2h-diff-tbody{border-color:#30363d;border-color:var(--d2h-dark-border-color)}.d2h-dark-color-scheme .d2h-code-side-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:var(--d2h-dark-dim-color)}.d2h-dark-color-scheme .d2h-files-diff .d2h-code-side-emptyplaceholder,.d2h-dark-color-scheme .d2h-files-diff .d2h-emptyplaceholder{background-color:#6e76811a;background-color:var(--d2h-dark-empty-placeholder-bg-color);border-color:#30363d;border-color:var(--d2h-dark-empty-placeholder-border-color)}.d2h-dark-color-scheme .d2h-code-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:var(--d2h-dark-dim-color)}.d2h-dark-color-scheme .d2h-del{background-color:#f851491a;background-color:var(--d2h-dark-del-bg-color);border-color:#f8514966;border-color:var(--d2h-dark-del-border-color)}.d2h-dark-color-scheme .d2h-ins{background-color:#2ea04326;background-color:var(--d2h-dark-ins-bg-color);border-color:#2ea04366;border-color:var(--d2h-dark-ins-border-color)}.d2h-dark-color-scheme .d2h-info{background-color:#388bfd1a;background-color:var(--d2h-dark-info-bg-color);border-color:#388bfd66;border-color:var(--d2h-dark-info-border-color);color:var(--d2h-dark-dim-color)}.d2h-dark-color-scheme .d2h-file-diff .d2h-del.d2h-change{background-color:#d2992233;background-color:var(--d2h-dark-change-del-color)}.d2h-dark-color-scheme .d2h-file-diff .d2h-ins.d2h-change{background-color:#2ea04340;background-color:var(--d2h-dark-change-ins-color)}.d2h-dark-color-scheme .d2h-file-wrapper{border:1px solid #30363d;border:1px solid var(--d2h-dark-border-color)}.d2h-dark-color-scheme .d2h-file-collapse{border:1px solid #0d1117;border:1px solid var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-file-collapse.d2h-selected{background-color:#388bfd1a;background-color:var(--d2h-dark-selected-color)}.d2h-dark-color-scheme .d2h-file-list-wrapper a,.d2h-dark-color-scheme .d2h-file-list-wrapper a:visited{color:var(--d2h-dark-moved-label-color)}.d2h-dark-color-scheme .d2h-file-list>li{border-bottom:1px solid #0d1117;border-bottom:1px solid var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-deleted{color:var(--d2h-dark-del-label-color)}.d2h-dark-color-scheme .d2h-added{color:var(--d2h-dark-ins-label-color)}.d2h-dark-color-scheme .d2h-changed{color:var(--d2h-dark-change-label-color)}.d2h-dark-color-scheme .d2h-moved{color:var(--d2h-dark-moved-label-color)}.d2h-dark-color-scheme .d2h-tag{background-color:#0d1117;background-color:var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-deleted-tag{border:1px solid #f85149;border:1px solid var(--d2h-dark-del-label-color)}.d2h-dark-color-scheme .d2h-added-tag{border:1px solid #3fb950;border:1px solid var(--d2h-dark-ins-label-color)}.d2h-dark-color-scheme .d2h-changed-tag{border:1px solid #d29922;border:1px solid var(--d2h-dark-change-label-color)}.d2h-dark-color-scheme .d2h-moved-tag{border:1px solid #3572b0;border:1px solid var(--d2h-dark-moved-label-color)}@media (prefers-color-scheme:dark){.d2h-auto-color-scheme{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);color:var(--d2h-dark-color)}.d2h-auto-color-scheme .d2h-file-header{background-color:#161b22;background-color:var(--d2h-dark-file-header-bg-color);border-bottom:#30363d;border-bottom:var(--d2h-dark-file-header-border-color)}.d2h-auto-color-scheme .d2h-lines-added{border:1px solid #2ea04366;border:1px solid var(--d2h-dark-ins-border-color);color:var(--d2h-dark-ins-label-color)}.d2h-auto-color-scheme .d2h-lines-deleted{border:1px solid #f8514966;border:1px solid var(--d2h-dark-del-border-color);color:var(--d2h-dark-del-label-color)}.d2h-auto-color-scheme .d2h-code-line del,.d2h-auto-color-scheme .d2h-code-side-line del{background-color:#f8514966;background-color:var(--d2h-dark-del-highlight-bg-color)}.d2h-auto-color-scheme .d2h-code-line ins,.d2h-auto-color-scheme .d2h-code-side-line ins{background-color:#2ea04366;background-color:var(--d2h-dark-ins-highlight-bg-color)}.d2h-auto-color-scheme .d2h-diff-tbody{border-color:#30363d;border-color:var(--d2h-dark-border-color)}.d2h-auto-color-scheme .d2h-code-side-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:var(--d2h-dark-dim-color)}.d2h-auto-color-scheme .d2h-files-diff .d2h-code-side-emptyplaceholder,.d2h-auto-color-scheme .d2h-files-diff .d2h-emptyplaceholder{background-color:#6e76811a;background-color:var(--d2h-dark-empty-placeholder-bg-color);border-color:#30363d;border-color:var(--d2h-dark-empty-placeholder-border-color)}.d2h-auto-color-scheme .d2h-code-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:var(--d2h-dark-dim-color)}.d2h-auto-color-scheme .d2h-del{background-color:#f851491a;background-color:var(--d2h-dark-del-bg-color);border-color:#f8514966;border-color:var(--d2h-dark-del-border-color)}.d2h-auto-color-scheme .d2h-ins{background-color:#2ea04326;background-color:var(--d2h-dark-ins-bg-color);border-color:#2ea04366;border-color:var(--d2h-dark-ins-border-color)}.d2h-auto-color-scheme .d2h-info{background-color:#388bfd1a;background-color:var(--d2h-dark-info-bg-color);border-color:#388bfd66;border-color:var(--d2h-dark-info-border-color);color:var(--d2h-dark-dim-color)}.d2h-auto-color-scheme .d2h-file-diff .d2h-del.d2h-change{background-color:#d2992233;background-color:var(--d2h-dark-change-del-color)}.d2h-auto-color-scheme .d2h-file-diff .d2h-ins.d2h-change{background-color:#2ea04340;background-color:var(--d2h-dark-change-ins-color)}.d2h-auto-color-scheme .d2h-file-wrapper{border:1px solid #30363d;border:1px solid var(--d2h-dark-border-color)}.d2h-auto-color-scheme .d2h-file-collapse{border:1px solid #0d1117;border:1px solid var(--d2h-dark-bg-color)}.d2h-auto-color-scheme .d2h-file-collapse.d2h-selected{background-color:#388bfd1a;background-color:var(--d2h-dark-selected-color)}.d2h-auto-color-scheme .d2h-file-list-wrapper a,.d2h-auto-color-scheme .d2h-file-list-wrapper a:visited{color:var(--d2h-dark-moved-label-color)}.d2h-auto-color-scheme .d2h-file-list>li{border-bottom:1px solid #0d1117;border-bottom:1px solid var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-deleted{color:var(--d2h-dark-del-label-color)}.d2h-auto-color-scheme .d2h-added{color:var(--d2h-dark-ins-label-color)}.d2h-auto-color-scheme .d2h-changed{color:var(--d2h-dark-change-label-color)}.d2h-auto-color-scheme .d2h-moved{color:var(--d2h-dark-moved-label-color)}.d2h-auto-color-scheme .d2h-tag{background-color:#0d1117;background-color:var(--d2h-dark-bg-color)}.d2h-auto-color-scheme .d2h-deleted-tag{border:1px solid #f85149;border:1px solid var(--d2h-dark-del-label-color)}.d2h-auto-color-scheme .d2h-added-tag{border:1px solid #3fb950;border:1px solid var(--d2h-dark-ins-label-color)}.d2h-auto-color-scheme .d2h-changed-tag{border:1px solid #d29922;border:1px solid var(--d2h-dark-change-label-color)}.d2h-auto-color-scheme .d2h-moved-tag{border:1px solid #3572b0;border:1px solid var(--d2h-dark-moved-label-color)}}.vibe64-repository-diff[data-v-fdf12a43]{gap:.65rem;min-width:0;display:grid}.vibe64-repository-diff__rendered[data-v-fdf12a43]{min-width:0;max-width:100%;position:relative;overflow:auto}.vibe64-repository-diff__rendered[data-v-fdf12a43] .d2h-wrapper{color:rgb(var(--v-theme-on-surface));text-align:start;font-size:.76rem}.vibe64-repository-diff__rendered[data-v-fdf12a43] .d2h-file-wrapper{border-color:rgba(var(--v-theme-outline), .2);margin:0}.vibe64-repository-diff__rendered[data-v-fdf12a43] .d2h-file-header{display:none}@media (width<=720px){.vibe64-repository-diff__rendered[data-v-fdf12a43] .d2h-file-side-diff{width:100%;display:block;overflow-x:auto}}.vibe64-repository-file-browser[data-v-0776c725]{border:1px solid rgba(var(--v-theme-outline), .18);grid-template-columns:var(--repository-file-list-width,21rem) 12px minmax(0, 1fr);border-radius:.75rem;align-items:start;min-width:0;min-height:0;display:grid;overflow:hidden}.vibe64-repository-file-browser--embedded[data-v-0776c725]{border:0;border-radius:0;width:100%;height:100%}.vibe64-repository-file-browser__list[data-v-0776c725]{min-width:0;max-height:44rem;overflow:auto}.vibe64-repository-file-browser__separator[data-v-0776c725]{cursor:col-resize;touch-action:none;outline:none;align-self:stretch;position:relative}.vibe64-repository-file-browser__separator[data-v-0776c725]:before{background:rgba(var(--v-theme-outline), .18);content:"";position:absolute;inset:0 5px}.vibe64-repository-file-browser__separator[data-v-0776c725]:hover:before,.vibe64-repository-file-browser__separator[data-v-0776c725]:focus-visible:before,.vibe64-repository-file-browser--resizing .vibe64-repository-file-browser__separator[data-v-0776c725]:before{background:rgb(var(--v-theme-primary))}.vibe64-repository-file-browser--resizing[data-v-0776c725]{cursor:col-resize;-webkit-user-select:none;user-select:none}.vibe64-repository-file-browser--embedded .vibe64-repository-file-browser__list[data-v-0776c725]{align-self:stretch;min-height:0;max-height:none}.vibe64-repository-file-browser__list header[data-v-0776c725]{border-bottom:1px solid rgba(var(--v-theme-outline), .14);gap:.18rem;padding:.75rem;display:grid}.vibe64-repository-file-browser__list header span[data-v-0776c725]{color:rgba(var(--v-theme-on-surface), .66);font-size:.84rem}.vibe64-repository-file-browser__file[data-v-0776c725]{border:0;border-bottom:1px solid rgba(var(--v-theme-outline), .1);color:inherit;cursor:pointer;text-align:start;background:0 0;gap:.18rem;width:100%;padding:.62rem .75rem;display:grid}.vibe64-repository-file-browser__file[data-v-0776c725]:hover,.vibe64-repository-file-browser__file[data-v-0776c725]:focus-visible,.vibe64-repository-file-browser__file--active[data-v-0776c725]{background:rgba(var(--v-theme-primary), .09);outline:none}.vibe64-repository-file-browser__path[data-v-0776c725]{overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem}.vibe64-repository-file-browser__meta[data-v-0776c725]{color:rgba(var(--v-theme-on-surface), .62);justify-content:space-between;align-items:center;gap:.5rem;font-size:.74rem;display:flex}.vibe64-repository-file-browser__counts[data-v-0776c725]{white-space:nowrap}.vibe64-repository-file-browser__detail[data-v-0776c725]{align-content:start;align-self:start;gap:.65rem;min-width:0;padding:.75rem;display:grid;overflow:auto}.vibe64-repository-file-browser--embedded .vibe64-repository-file-browser__detail[data-v-0776c725]{align-self:stretch;min-height:0}.vibe64-repository-file-browser__detail h2[data-v-0776c725]{letter-spacing:0;overflow-wrap:anywhere;margin:0;font-size:.94rem;font-weight:700}@media (width>=781px){.vibe64-repository-file-browser[data-v-0776c725]:not(.vibe64-repository-file-browser--embedded){grid-template-rows:minmax(0,1fr);align-self:stretch}.vibe64-repository-file-browser:not(.vibe64-repository-file-browser--embedded)>.vibe64-repository-file-browser__list[data-v-0776c725],.vibe64-repository-file-browser:not(.vibe64-repository-file-browser--embedded)>.vibe64-repository-file-browser__detail[data-v-0776c725]{align-self:stretch;min-height:0}.vibe64-repository-file-browser:not(.vibe64-repository-file-browser--embedded)>.vibe64-repository-file-browser__list[data-v-0776c725]{max-height:none}}@media (width<=780px){.vibe64-repository-file-browser[data-v-0776c725]{grid-template-columns:minmax(0,1fr)}.vibe64-repository-file-browser--embedded[data-v-0776c725]{grid-template-rows:min(16rem,50%) minmax(0,1fr)}.vibe64-repository-file-browser__list[data-v-0776c725],.vibe64-repository-file-browser--embedded .vibe64-repository-file-browser__list[data-v-0776c725]{border-bottom:1px solid rgba(var(--v-theme-outline), .16);border-inline-end:0;max-height:16rem}.vibe64-repository-file-browser__separator[data-v-0776c725]{display:none}}.vibe64-repository-file-browser--stacked[data-v-0776c725]{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.vibe64-repository-file-browser--stacked.vibe64-repository-file-browser--embedded[data-v-0776c725]{grid-template-rows:min(16rem,50%) minmax(0,1fr)}.vibe64-repository-file-browser--stacked>.vibe64-repository-file-browser__list[data-v-0776c725]{border-bottom:1px solid rgba(var(--v-theme-outline), .16);max-height:16rem}.vibe64-repository-file-browser--stacked>.vibe64-repository-file-browser__separator[data-v-0776c725]{display:none}.vibe64-repository-workspace[data-v-0373e9cf]{align-content:start;gap:.8rem;width:100%;min-width:0;max-width:90rem;margin-inline:auto;display:grid}.vibe64-repository-workspace--changes[data-v-0373e9cf]{max-width:none}.vibe64-repository-workspace__changes-area[data-v-0373e9cf]{gap:.8rem;min-width:0;display:grid}.vibe64-repository-workspace__summary[data-v-0373e9cf],.vibe64-repository-workspace__actions[data-v-0373e9cf]{align-items:center;display:flex}.vibe64-repository-workspace__summary-copy span[data-v-0373e9cf],.vibe64-repository-workspace__history-intro span[data-v-0373e9cf],.vibe64-repository-workspace__empty span[data-v-0373e9cf]{color:rgba(var(--v-theme-on-surface), .66);font-size:.84rem}.vibe64-repository-workspace__summary[data-v-0373e9cf]{padding:var(--v64-space-4,16px);justify-content:space-between;gap:.8rem}.vibe64-repository-workspace__summary[data-v-0373e9cf],.vibe64-repository-workspace__update-status[data-v-0373e9cf]{background:var(--v64-surface-container-low)!important;border-color:var(--v64-outline-variant)!important;border-radius:var(--v64-shape-lg,16px)!important}.vibe64-repository-workspace__update-status[data-v-0373e9cf]{padding:var(--v64-space-3,12px) var(--v64-space-4,16px);gap:.18rem;display:grid}.vibe64-repository-workspace__update-status span[data-v-0373e9cf]{color:rgba(var(--v-theme-on-surface), .66);font-size:.84rem}.vibe64-repository-workspace__incoming-versions[data-v-0373e9cf]{gap:.28rem;max-width:52rem;margin:.4rem 0 0;padding:0;list-style:none;display:grid}.vibe64-repository-workspace__incoming-versions li[data-v-0373e9cf]{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.45rem;min-width:0;display:grid}.vibe64-repository-workspace__incoming-versions li>span[data-v-0373e9cf]{color:rgb(var(--v-theme-on-surface));text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vibe64-repository-workspace__incoming-versions code[data-v-0373e9cf]{background:rgba(var(--v-theme-on-surface), .08);color:rgba(var(--v-theme-on-surface), .72);border-radius:.3rem;padding:.08rem .3rem;font-size:.74rem}.vibe64-repository-workspace__summary-copy[data-v-0373e9cf],.vibe64-repository-workspace__empty[data-v-0373e9cf]{gap:.18rem;display:grid}.vibe64-repository-workspace__actions[data-v-0373e9cf]{flex-wrap:wrap;gap:.5rem}.vibe64-repository-workspace__window[data-v-0373e9cf]{min-height:22rem;overflow:visible}.vibe64-repository-workspace__history[data-v-0373e9cf]{border:1px solid var(--v64-outline-variant,#0000001f);border-radius:var(--v64-shape-lg,16px);grid-template-columns:minmax(0,1fr);min-width:0;display:grid;overflow:hidden}.vibe64-repository-workspace__history-intro[data-v-0373e9cf]{background:var(--v64-surface-container-low);border-bottom:1px solid var(--v64-outline-variant,#0000001f);justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 1.1rem;display:flex}.vibe64-repository-workspace__history-heading[data-v-0373e9cf]{align-items:center;gap:.7rem;min-width:0;display:flex}.vibe64-repository-workspace__history-heading>div[data-v-0373e9cf]{gap:.18rem;min-width:0;display:grid}.vibe64-repository-workspace__history-icon[data-v-0373e9cf],.vibe64-repository-version-dialog__icon[data-v-0373e9cf]{background:rgba(var(--v-theme-primary), .11);color:rgb(var(--v-theme-primary));border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.vibe64-repository-workspace__history-icon[data-v-0373e9cf]{width:2.1rem;height:2.1rem}.vibe64-repository-workspace__versions[data-v-0373e9cf]{min-width:0;margin:0;padding:0;list-style:none;overflow:auto}.vibe64-repository-workspace__history-item[data-v-0373e9cf]{grid-template-columns:3.25rem minmax(0,1fr);min-width:0;display:grid}.vibe64-repository-workspace__commit-marker[data-v-0373e9cf]{justify-content:center;min-height:5rem;display:flex;position:relative}.vibe64-repository-workspace__commit-marker[data-v-0373e9cf]:before{background:rgba(var(--v-theme-outline), .34);content:"";width:2px;position:absolute;top:0;bottom:0;left:calc(50% - 1px)}.vibe64-repository-workspace__commit-marker--first[data-v-0373e9cf]:before{top:1.55rem}.vibe64-repository-workspace__commit-marker--last[data-v-0373e9cf]:before{bottom:calc(100% - 1.55rem)}.vibe64-repository-workspace__commit-node[data-v-0373e9cf]{background:rgb(var(--v-theme-surface));border:2px solid rgba(var(--v-theme-outline), .56);color:rgba(var(--v-theme-on-surface), .7);z-index:1;border-radius:50%;justify-content:center;align-items:center;width:2rem;height:2rem;margin-top:.55rem;display:flex;position:relative}.vibe64-repository-workspace__commit-node--latest[data-v-0373e9cf]{background:rgb(var(--v-theme-primary));border-color:rgb(var(--v-theme-primary));color:rgb(var(--v-theme-on-primary));box-shadow:0 0 0 .25rem rgba(var(--v-theme-primary), .1)}.vibe64-repository-workspace__version[data-v-0373e9cf]{border:0;border-bottom:1px solid rgba(var(--v-theme-outline), .1);color:inherit;cursor:pointer;text-align:start;background:0 0;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;width:100%;min-height:5rem;padding:.65rem 1rem .65rem .15rem;transition:background-color .12s;display:grid}.vibe64-repository-workspace__version[data-v-0373e9cf]:hover,.vibe64-repository-workspace__version[data-v-0373e9cf]:focus-visible,.vibe64-repository-workspace__version[aria-current=true][data-v-0373e9cf]{background:rgba(var(--v-theme-primary), .08);outline:none}.vibe64-repository-workspace__version[data-v-0373e9cf]:focus-visible{box-shadow:inset 0 0 0 2px rgb(var(--v-theme-primary))}.vibe64-repository-workspace__version-copy[data-v-0373e9cf]{gap:.35rem;min-width:0;display:grid}.vibe64-repository-workspace__version-heading[data-v-0373e9cf]{flex-wrap:wrap;align-items:center;gap:.45rem;min-width:0;display:flex}.vibe64-repository-workspace__version-heading strong[data-v-0373e9cf]{text-overflow:ellipsis;white-space:nowrap;font-size:.94rem;line-height:1.3;overflow:hidden}.vibe64-repository-workspace__version-meta[data-v-0373e9cf],.vibe64-repository-version-dialog__meta[data-v-0373e9cf]{color:rgba(var(--v-theme-on-surface), .56);flex-wrap:wrap;align-items:center;gap:.35rem .85rem;font-size:.78rem;display:flex}.vibe64-repository-workspace__version-meta>span[data-v-0373e9cf],.vibe64-repository-version-dialog__meta>span[data-v-0373e9cf]{align-items:center;gap:.25rem;min-width:0;display:inline-flex}.vibe64-repository-workspace__version-meta code[data-v-0373e9cf],.vibe64-repository-version-dialog__meta code[data-v-0373e9cf]{background:rgba(var(--v-theme-surface-variant), .52);color:rgba(var(--v-theme-on-surface), .72);border-radius:.35rem;padding:.1rem .35rem;font-size:.73rem}.vibe64-repository-workspace__load-more[data-v-0373e9cf]{border-top:1px solid rgba(var(--v-theme-outline), .1);padding:.55rem 1rem .55rem 3.25rem}.vibe64-repository-version-dialog__card[data-v-0373e9cf]{border-radius:0;flex-direction:column;width:100%;height:100dvh;display:flex}.vibe64-repository-version-dialog__header[data-v-0373e9cf]{background:rgba(var(--v-theme-surface-variant), .18);align-items:flex-start;gap:.8rem;padding:1rem 1.1rem;display:flex}.vibe64-repository-version-dialog__icon[data-v-0373e9cf]{width:2.6rem;height:2.6rem;margin-top:.1rem}.vibe64-repository-version-dialog__heading[data-v-0373e9cf]{flex:auto;gap:.3rem;min-width:0;display:grid}.vibe64-repository-version-dialog__eyebrow[data-v-0373e9cf]{color:rgb(var(--v-theme-primary));letter-spacing:.08em;text-transform:uppercase;font-size:.7rem;font-weight:700}.vibe64-repository-version-dialog__heading h2[data-v-0373e9cf]{overflow-wrap:anywhere;white-space:normal;margin:0;font-size:1.08rem;line-height:1.35}.vibe64-repository-version-dialog__meta[data-v-0373e9cf]{color:rgba(var(--v-theme-on-surface), .62)}.vibe64-repository-version-dialog__body[data-v-0373e9cf]{flex-direction:column;flex:auto;min-height:0;padding:0;display:flex;overflow:hidden}.vibe64-repository-version-dialog__error[data-v-0373e9cf]{flex:none;max-height:50%;overflow:auto}.vibe64-repository-version-dialog__body>.vibe64-repository-version-dialog__files[data-v-0373e9cf]{flex:1 1 0;height:auto;min-height:0}.vibe64-repository-version-dialog .v-overlay__content{width:100vw;max-width:none;height:100dvh;max-height:100dvh;margin:0}.vibe64-repository-workspace__empty[data-v-0373e9cf]{background:var(--v64-surface-container-low);border:1px dashed var(--v64-outline,#0000003d);border-radius:var(--v64-shape-lg,16px);padding:var(--v64-space-6,32px) var(--v64-space-4,16px);text-align:center;justify-items:center}.vibe64-repository-workspace__empty strong[data-v-0373e9cf]{font:var(--v64-type-title-md,600 1rem/1.5rem system-ui, sans-serif)}@media (width>=781px){.vibe64-repository-workspace--changes[data-v-0373e9cf]{grid-template-rows:auto minmax(0,1fr);height:100%;min-height:0}.vibe64-repository-workspace--changes .vibe64-repository-workspace__changes-area[data-v-0373e9cf]{flex-direction:column;min-height:0;display:flex;overflow:auto}.vibe64-repository-workspace--changes .vibe64-repository-workspace__changes-area[data-v-0373e9cf]>:not(.vibe64-repository-workspace__window){flex:none}.vibe64-repository-workspace--changes .vibe64-repository-workspace__window[data-v-0373e9cf]{flex:1 1 0;grid-template-rows:minmax(0,1fr);min-height:12rem;display:grid}.vibe64-repository-workspace__changes[data-v-0373e9cf]{grid-template-rows:minmax(0,1fr);align-items:start;min-height:0;display:grid;overflow:auto}}@media (width<=780px){.vibe64-repository-workspace__version[data-v-0373e9cf]{grid-template-columns:minmax(0,1fr) 1.1rem}.vibe64-repository-workspace__version code[data-v-0373e9cf]{display:none}.vibe64-repository-workspace__summary[data-v-0373e9cf]{flex-direction:column;align-items:stretch}}
1
+ :host,:root{--d2h-bg-color:#fff;--d2h-border-color:#ddd;--d2h-dim-color:#0000004d;--d2h-line-border-color:#eee;--d2h-file-header-bg-color:#f7f7f7;--d2h-file-header-border-color:#d8d8d8;--d2h-empty-placeholder-bg-color:#f1f1f1;--d2h-empty-placeholder-border-color:#e1e1e1;--d2h-selected-color:#c8e1ff;--d2h-ins-bg-color:#dfd;--d2h-ins-border-color:#b4e2b4;--d2h-ins-highlight-bg-color:#97f295;--d2h-ins-label-color:#399839;--d2h-del-bg-color:#fee8e9;--d2h-del-border-color:#e9aeae;--d2h-del-highlight-bg-color:#ffb6ba;--d2h-del-label-color:#c33;--d2h-change-del-color:#fdf2d0;--d2h-change-ins-color:#ded;--d2h-info-bg-color:#f8fafd;--d2h-info-border-color:#d5e4f2;--d2h-change-label-color:#d0b44c;--d2h-moved-label-color:#3572b0;--d2h-dark-color:#e6edf3;--d2h-dark-bg-color:#0d1117;--d2h-dark-border-color:#30363d;--d2h-dark-dim-color:#6e7681;--d2h-dark-line-border-color:#21262d;--d2h-dark-file-header-bg-color:#161b22;--d2h-dark-file-header-border-color:#30363d;--d2h-dark-empty-placeholder-bg-color:#6e76811a;--d2h-dark-empty-placeholder-border-color:#30363d;--d2h-dark-selected-color:#388bfd1a;--d2h-dark-ins-bg-color:#2ea04326;--d2h-dark-ins-border-color:#2ea04366;--d2h-dark-ins-highlight-bg-color:#2ea04366;--d2h-dark-ins-label-color:#3fb950;--d2h-dark-del-bg-color:#f851491a;--d2h-dark-del-border-color:#f8514966;--d2h-dark-del-highlight-bg-color:#f8514966;--d2h-dark-del-label-color:#f85149;--d2h-dark-change-del-color:#d2992233;--d2h-dark-change-ins-color:#2ea04340;--d2h-dark-info-bg-color:#388bfd1a;--d2h-dark-info-border-color:#388bfd66;--d2h-dark-change-label-color:#d29922;--d2h-dark-moved-label-color:#3572b0}.d2h-wrapper{text-align:left}.d2h-file-header{background-color:#f7f7f7;background-color:var(--d2h-file-header-bg-color);border-bottom:1px solid #d8d8d8;border-bottom:1px solid var(--d2h-file-header-border-color);height:35px;padding:5px 10px;font-family:Source Sans Pro,Helvetica Neue,Helvetica,Arial,sans-serif;display:flex}.d2h-file-header.d2h-sticky-header{z-index:1;position:sticky;top:0}.d2h-file-stats{margin-left:auto;font-size:14px;display:flex}.d2h-lines-added{border:1px solid #b4e2b4;border:1px solid var(--d2h-ins-border-color);color:var(--d2h-ins-label-color);text-align:right;vertical-align:middle;border-radius:5px 0 0 5px;padding:2px}.d2h-lines-deleted{border:1px solid #e9aeae;border:1px solid var(--d2h-del-border-color);color:var(--d2h-del-label-color);text-align:left;vertical-align:middle;border-radius:0 5px 5px 0;margin-left:1px;padding:2px}.d2h-file-name-wrapper{align-items:center;width:100%;font-size:15px;display:flex}.d2h-file-name{text-overflow:ellipsis;white-space:nowrap;overflow-x:hidden}.d2h-file-wrapper{border:1px solid #ddd;border:1px solid var(--d2h-border-color);border-radius:3px;margin-bottom:1em}.d2h-file-collapse{cursor:pointer;border:1px solid #ddd;border:1px solid var(--d2h-border-color);border-radius:3px;justify-content:flex-end;align-items:center;padding:4px 8px;font-size:12px;display:none}.d2h-file-collapse.d2h-selected{background-color:#c8e1ff;background-color:var(--d2h-selected-color)}.d2h-file-collapse-input{margin:0 4px 0 0}.d2h-diff-table{border-collapse:collapse;width:100%;font-family:Menlo,Consolas,monospace;font-size:13px}.d2h-files-diff{width:100%;display:flex}.d2h-file-diff{overflow-y:hidden}.d2h-file-diff.d2h-d-none,.d2h-files-diff.d2h-d-none{display:none}.d2h-file-side-diff{width:50%;display:inline-block;overflow:scroll hidden}.d2h-code-line{width:calc(100% - 16em);padding:0 8em}.d2h-code-line,.d2h-code-side-line{-webkit-user-select:none;user-select:none;white-space:nowrap;display:inline-block}.d2h-code-side-line{width:calc(100% - 9em);padding:0 4.5em}.d2h-code-line-ctn{word-wrap:normal;-webkit-user-select:text;user-select:text;vertical-align:middle;white-space:pre;background:0 0;width:100%;padding:0;display:inline-block}.d2h-code-line del,.d2h-code-side-line del{background-color:#ffb6ba;background-color:var(--d2h-del-highlight-bg-color)}.d2h-code-line del,.d2h-code-line ins,.d2h-code-side-line del,.d2h-code-side-line ins{border-radius:.2em;margin-top:-1px;-webkit-text-decoration:none;text-decoration:none;display:inline-block}.d2h-code-line ins,.d2h-code-side-line ins{background-color:#97f295;background-color:var(--d2h-ins-highlight-bg-color);text-align:left}.d2h-code-line-prefix{word-wrap:normal;white-space:pre;background:0 0;padding:0;display:inline}.line-num1{float:left}.line-num1,.line-num2{box-sizing:border-box;text-overflow:ellipsis;width:3.5em;padding:0 .5em;overflow:hidden}.line-num2{float:right}.d2h-code-linenumber{background-color:#fff;background-color:var(--d2h-bg-color);border:solid #eee;border:solid var(--d2h-line-border-color);box-sizing:border-box;color:var(--d2h-dim-color);cursor:pointer;text-align:right;border-width:0 1px;width:7.5em;display:inline-block;position:absolute}.d2h-code-linenumber:after{content:"​"}.d2h-code-side-linenumber{background-color:#fff;background-color:var(--d2h-bg-color);border:solid #eee;border:solid var(--d2h-line-border-color);box-sizing:border-box;color:var(--d2h-dim-color);cursor:pointer;text-align:right;text-overflow:ellipsis;border-width:0 1px;width:4em;padding:0 .5em;display:inline-block;position:absolute;overflow:hidden}.d2h-code-side-linenumber:after{content:"​"}.d2h-code-side-emptyplaceholder,.d2h-emptyplaceholder{background-color:#f1f1f1;background-color:var(--d2h-empty-placeholder-bg-color);border-color:#e1e1e1;border-color:var(--d2h-empty-placeholder-border-color)}.d2h-code-line-prefix,.d2h-code-linenumber,.d2h-code-side-linenumber,.d2h-emptyplaceholder{-webkit-user-select:none;user-select:none}.d2h-code-linenumber,.d2h-code-side-linenumber{direction:rtl}.d2h-del{background-color:#fee8e9;background-color:var(--d2h-del-bg-color);border-color:#e9aeae;border-color:var(--d2h-del-border-color)}.d2h-ins{background-color:#dfd;background-color:var(--d2h-ins-bg-color);border-color:#b4e2b4;border-color:var(--d2h-ins-border-color)}.d2h-info{background-color:#f8fafd;background-color:var(--d2h-info-bg-color);border-color:#d5e4f2;border-color:var(--d2h-info-border-color);color:var(--d2h-dim-color)}.d2h-file-diff .d2h-del.d2h-change{background-color:#fdf2d0;background-color:var(--d2h-change-del-color)}.d2h-file-diff .d2h-ins.d2h-change{background-color:#ded;background-color:var(--d2h-change-ins-color)}.d2h-file-list-wrapper{margin-bottom:10px}.d2h-file-list-wrapper a{-webkit-text-decoration:none;text-decoration:none}.d2h-file-list-wrapper a,.d2h-file-list-wrapper a:visited{color:var(--d2h-moved-label-color)}.d2h-file-list-header{text-align:left}.d2h-file-list-title{font-weight:700}.d2h-file-list-line{text-align:left;display:flex}.d2h-file-list{margin:0;padding:0;list-style:none;display:block}.d2h-file-list>li{border-bottom:1px solid #ddd;border-bottom:1px solid var(--d2h-border-color);margin:0;padding:5px 10px}.d2h-file-list>li:last-child{border-bottom:none}.d2h-file-switch{cursor:pointer;font-size:10px;display:none}.d2h-icon{fill:currentColor;vertical-align:middle;margin-right:10px}.d2h-deleted{color:var(--d2h-del-label-color)}.d2h-added{color:var(--d2h-ins-label-color)}.d2h-changed{color:var(--d2h-change-label-color)}.d2h-moved{color:var(--d2h-moved-label-color)}.d2h-tag{background-color:#fff;background-color:var(--d2h-bg-color);margin-left:5px;padding:0 2px;font-size:10px;display:flex}.d2h-deleted-tag{border:1px solid #c33;border:1px solid var(--d2h-del-label-color)}.d2h-added-tag{border:1px solid #399839;border:1px solid var(--d2h-ins-label-color)}.d2h-changed-tag{border:1px solid #d0b44c;border:1px solid var(--d2h-change-label-color)}.d2h-moved-tag{border:1px solid #3572b0;border:1px solid var(--d2h-moved-label-color)}.d2h-dark-color-scheme{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);color:var(--d2h-dark-color)}.d2h-dark-color-scheme .d2h-file-header{background-color:#161b22;background-color:var(--d2h-dark-file-header-bg-color);border-bottom:#30363d;border-bottom:var(--d2h-dark-file-header-border-color)}.d2h-dark-color-scheme .d2h-lines-added{border:1px solid #2ea04366;border:1px solid var(--d2h-dark-ins-border-color);color:var(--d2h-dark-ins-label-color)}.d2h-dark-color-scheme .d2h-lines-deleted{border:1px solid #f8514966;border:1px solid var(--d2h-dark-del-border-color);color:var(--d2h-dark-del-label-color)}.d2h-dark-color-scheme .d2h-code-line del,.d2h-dark-color-scheme .d2h-code-side-line del{background-color:#f8514966;background-color:var(--d2h-dark-del-highlight-bg-color)}.d2h-dark-color-scheme .d2h-code-line ins,.d2h-dark-color-scheme .d2h-code-side-line ins{background-color:#2ea04366;background-color:var(--d2h-dark-ins-highlight-bg-color)}.d2h-dark-color-scheme .d2h-diff-tbody{border-color:#30363d;border-color:var(--d2h-dark-border-color)}.d2h-dark-color-scheme .d2h-code-side-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:var(--d2h-dark-dim-color)}.d2h-dark-color-scheme .d2h-files-diff .d2h-code-side-emptyplaceholder,.d2h-dark-color-scheme .d2h-files-diff .d2h-emptyplaceholder{background-color:#6e76811a;background-color:var(--d2h-dark-empty-placeholder-bg-color);border-color:#30363d;border-color:var(--d2h-dark-empty-placeholder-border-color)}.d2h-dark-color-scheme .d2h-code-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:var(--d2h-dark-dim-color)}.d2h-dark-color-scheme .d2h-del{background-color:#f851491a;background-color:var(--d2h-dark-del-bg-color);border-color:#f8514966;border-color:var(--d2h-dark-del-border-color)}.d2h-dark-color-scheme .d2h-ins{background-color:#2ea04326;background-color:var(--d2h-dark-ins-bg-color);border-color:#2ea04366;border-color:var(--d2h-dark-ins-border-color)}.d2h-dark-color-scheme .d2h-info{background-color:#388bfd1a;background-color:var(--d2h-dark-info-bg-color);border-color:#388bfd66;border-color:var(--d2h-dark-info-border-color);color:var(--d2h-dark-dim-color)}.d2h-dark-color-scheme .d2h-file-diff .d2h-del.d2h-change{background-color:#d2992233;background-color:var(--d2h-dark-change-del-color)}.d2h-dark-color-scheme .d2h-file-diff .d2h-ins.d2h-change{background-color:#2ea04340;background-color:var(--d2h-dark-change-ins-color)}.d2h-dark-color-scheme .d2h-file-wrapper{border:1px solid #30363d;border:1px solid var(--d2h-dark-border-color)}.d2h-dark-color-scheme .d2h-file-collapse{border:1px solid #0d1117;border:1px solid var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-file-collapse.d2h-selected{background-color:#388bfd1a;background-color:var(--d2h-dark-selected-color)}.d2h-dark-color-scheme .d2h-file-list-wrapper a,.d2h-dark-color-scheme .d2h-file-list-wrapper a:visited{color:var(--d2h-dark-moved-label-color)}.d2h-dark-color-scheme .d2h-file-list>li{border-bottom:1px solid #0d1117;border-bottom:1px solid var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-deleted{color:var(--d2h-dark-del-label-color)}.d2h-dark-color-scheme .d2h-added{color:var(--d2h-dark-ins-label-color)}.d2h-dark-color-scheme .d2h-changed{color:var(--d2h-dark-change-label-color)}.d2h-dark-color-scheme .d2h-moved{color:var(--d2h-dark-moved-label-color)}.d2h-dark-color-scheme .d2h-tag{background-color:#0d1117;background-color:var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-deleted-tag{border:1px solid #f85149;border:1px solid var(--d2h-dark-del-label-color)}.d2h-dark-color-scheme .d2h-added-tag{border:1px solid #3fb950;border:1px solid var(--d2h-dark-ins-label-color)}.d2h-dark-color-scheme .d2h-changed-tag{border:1px solid #d29922;border:1px solid var(--d2h-dark-change-label-color)}.d2h-dark-color-scheme .d2h-moved-tag{border:1px solid #3572b0;border:1px solid var(--d2h-dark-moved-label-color)}@media (prefers-color-scheme:dark){.d2h-auto-color-scheme{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);color:var(--d2h-dark-color)}.d2h-auto-color-scheme .d2h-file-header{background-color:#161b22;background-color:var(--d2h-dark-file-header-bg-color);border-bottom:#30363d;border-bottom:var(--d2h-dark-file-header-border-color)}.d2h-auto-color-scheme .d2h-lines-added{border:1px solid #2ea04366;border:1px solid var(--d2h-dark-ins-border-color);color:var(--d2h-dark-ins-label-color)}.d2h-auto-color-scheme .d2h-lines-deleted{border:1px solid #f8514966;border:1px solid var(--d2h-dark-del-border-color);color:var(--d2h-dark-del-label-color)}.d2h-auto-color-scheme .d2h-code-line del,.d2h-auto-color-scheme .d2h-code-side-line del{background-color:#f8514966;background-color:var(--d2h-dark-del-highlight-bg-color)}.d2h-auto-color-scheme .d2h-code-line ins,.d2h-auto-color-scheme .d2h-code-side-line ins{background-color:#2ea04366;background-color:var(--d2h-dark-ins-highlight-bg-color)}.d2h-auto-color-scheme .d2h-diff-tbody{border-color:#30363d;border-color:var(--d2h-dark-border-color)}.d2h-auto-color-scheme .d2h-code-side-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:var(--d2h-dark-dim-color)}.d2h-auto-color-scheme .d2h-files-diff .d2h-code-side-emptyplaceholder,.d2h-auto-color-scheme .d2h-files-diff .d2h-emptyplaceholder{background-color:#6e76811a;background-color:var(--d2h-dark-empty-placeholder-bg-color);border-color:#30363d;border-color:var(--d2h-dark-empty-placeholder-border-color)}.d2h-auto-color-scheme .d2h-code-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:var(--d2h-dark-dim-color)}.d2h-auto-color-scheme .d2h-del{background-color:#f851491a;background-color:var(--d2h-dark-del-bg-color);border-color:#f8514966;border-color:var(--d2h-dark-del-border-color)}.d2h-auto-color-scheme .d2h-ins{background-color:#2ea04326;background-color:var(--d2h-dark-ins-bg-color);border-color:#2ea04366;border-color:var(--d2h-dark-ins-border-color)}.d2h-auto-color-scheme .d2h-info{background-color:#388bfd1a;background-color:var(--d2h-dark-info-bg-color);border-color:#388bfd66;border-color:var(--d2h-dark-info-border-color);color:var(--d2h-dark-dim-color)}.d2h-auto-color-scheme .d2h-file-diff .d2h-del.d2h-change{background-color:#d2992233;background-color:var(--d2h-dark-change-del-color)}.d2h-auto-color-scheme .d2h-file-diff .d2h-ins.d2h-change{background-color:#2ea04340;background-color:var(--d2h-dark-change-ins-color)}.d2h-auto-color-scheme .d2h-file-wrapper{border:1px solid #30363d;border:1px solid var(--d2h-dark-border-color)}.d2h-auto-color-scheme .d2h-file-collapse{border:1px solid #0d1117;border:1px solid var(--d2h-dark-bg-color)}.d2h-auto-color-scheme .d2h-file-collapse.d2h-selected{background-color:#388bfd1a;background-color:var(--d2h-dark-selected-color)}.d2h-auto-color-scheme .d2h-file-list-wrapper a,.d2h-auto-color-scheme .d2h-file-list-wrapper a:visited{color:var(--d2h-dark-moved-label-color)}.d2h-auto-color-scheme .d2h-file-list>li{border-bottom:1px solid #0d1117;border-bottom:1px solid var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-deleted{color:var(--d2h-dark-del-label-color)}.d2h-auto-color-scheme .d2h-added{color:var(--d2h-dark-ins-label-color)}.d2h-auto-color-scheme .d2h-changed{color:var(--d2h-dark-change-label-color)}.d2h-auto-color-scheme .d2h-moved{color:var(--d2h-dark-moved-label-color)}.d2h-auto-color-scheme .d2h-tag{background-color:#0d1117;background-color:var(--d2h-dark-bg-color)}.d2h-auto-color-scheme .d2h-deleted-tag{border:1px solid #f85149;border:1px solid var(--d2h-dark-del-label-color)}.d2h-auto-color-scheme .d2h-added-tag{border:1px solid #3fb950;border:1px solid var(--d2h-dark-ins-label-color)}.d2h-auto-color-scheme .d2h-changed-tag{border:1px solid #d29922;border:1px solid var(--d2h-dark-change-label-color)}.d2h-auto-color-scheme .d2h-moved-tag{border:1px solid #3572b0;border:1px solid var(--d2h-dark-moved-label-color)}}.vibe64-repository-diff[data-v-fdf12a43]{gap:.65rem;min-width:0;display:grid}.vibe64-repository-diff__rendered[data-v-fdf12a43]{min-width:0;max-width:100%;position:relative;overflow:auto}.vibe64-repository-diff__rendered[data-v-fdf12a43] .d2h-wrapper{color:rgb(var(--v-theme-on-surface));text-align:start;font-size:.76rem}.vibe64-repository-diff__rendered[data-v-fdf12a43] .d2h-file-wrapper{border-color:rgba(var(--v-theme-outline), .2);margin:0}.vibe64-repository-diff__rendered[data-v-fdf12a43] .d2h-file-header{display:none}@media (width<=720px){.vibe64-repository-diff__rendered[data-v-fdf12a43] .d2h-file-side-diff{width:100%;display:block;overflow-x:auto}}.vibe64-repository-file-browser[data-v-0776c725]{border:1px solid rgba(var(--v-theme-outline), .18);grid-template-columns:var(--repository-file-list-width,21rem) 12px minmax(0, 1fr);border-radius:.75rem;align-items:start;min-width:0;min-height:0;display:grid;overflow:hidden}.vibe64-repository-file-browser--embedded[data-v-0776c725]{border:0;border-radius:0;width:100%;height:100%}.vibe64-repository-file-browser__list[data-v-0776c725]{min-width:0;max-height:44rem;overflow:auto}.vibe64-repository-file-browser__separator[data-v-0776c725]{cursor:col-resize;touch-action:none;outline:none;align-self:stretch;position:relative}.vibe64-repository-file-browser__separator[data-v-0776c725]:before{background:rgba(var(--v-theme-outline), .18);content:"";position:absolute;inset:0 5px}.vibe64-repository-file-browser__separator[data-v-0776c725]:hover:before,.vibe64-repository-file-browser__separator[data-v-0776c725]:focus-visible:before,.vibe64-repository-file-browser--resizing .vibe64-repository-file-browser__separator[data-v-0776c725]:before{background:rgb(var(--v-theme-primary))}.vibe64-repository-file-browser--resizing[data-v-0776c725]{cursor:col-resize;-webkit-user-select:none;user-select:none}.vibe64-repository-file-browser--embedded .vibe64-repository-file-browser__list[data-v-0776c725]{align-self:stretch;min-height:0;max-height:none}.vibe64-repository-file-browser__list header[data-v-0776c725]{border-bottom:1px solid rgba(var(--v-theme-outline), .14);gap:.18rem;padding:.75rem;display:grid}.vibe64-repository-file-browser__list header span[data-v-0776c725]{color:rgba(var(--v-theme-on-surface), .66);font-size:.84rem}.vibe64-repository-file-browser__file[data-v-0776c725]{border:0;border-bottom:1px solid rgba(var(--v-theme-outline), .1);color:inherit;cursor:pointer;text-align:start;background:0 0;gap:.18rem;width:100%;padding:.62rem .75rem;display:grid}.vibe64-repository-file-browser__file[data-v-0776c725]:hover,.vibe64-repository-file-browser__file[data-v-0776c725]:focus-visible,.vibe64-repository-file-browser__file--active[data-v-0776c725]{background:rgba(var(--v-theme-primary), .09);outline:none}.vibe64-repository-file-browser__path[data-v-0776c725]{overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem}.vibe64-repository-file-browser__meta[data-v-0776c725]{color:rgba(var(--v-theme-on-surface), .62);justify-content:space-between;align-items:center;gap:.5rem;font-size:.74rem;display:flex}.vibe64-repository-file-browser__counts[data-v-0776c725]{white-space:nowrap}.vibe64-repository-file-browser__detail[data-v-0776c725]{align-content:start;align-self:start;gap:.65rem;min-width:0;padding:.75rem;display:grid;overflow:auto}.vibe64-repository-file-browser--embedded .vibe64-repository-file-browser__detail[data-v-0776c725]{align-self:stretch;min-height:0}.vibe64-repository-file-browser__detail h2[data-v-0776c725]{letter-spacing:0;overflow-wrap:anywhere;margin:0;font-size:.94rem;font-weight:700}@media (width>=781px){.vibe64-repository-file-browser[data-v-0776c725]:not(.vibe64-repository-file-browser--embedded){grid-template-rows:minmax(0,1fr);align-self:stretch}.vibe64-repository-file-browser:not(.vibe64-repository-file-browser--embedded)>.vibe64-repository-file-browser__list[data-v-0776c725],.vibe64-repository-file-browser:not(.vibe64-repository-file-browser--embedded)>.vibe64-repository-file-browser__detail[data-v-0776c725]{align-self:stretch;min-height:0}.vibe64-repository-file-browser:not(.vibe64-repository-file-browser--embedded)>.vibe64-repository-file-browser__list[data-v-0776c725]{max-height:none}}@media (width<=780px){.vibe64-repository-file-browser[data-v-0776c725]{grid-template-columns:minmax(0,1fr)}.vibe64-repository-file-browser--embedded[data-v-0776c725]{grid-template-rows:min(16rem,50%) minmax(0,1fr)}.vibe64-repository-file-browser__list[data-v-0776c725],.vibe64-repository-file-browser--embedded .vibe64-repository-file-browser__list[data-v-0776c725]{border-bottom:1px solid rgba(var(--v-theme-outline), .16);border-inline-end:0;max-height:16rem}.vibe64-repository-file-browser__separator[data-v-0776c725]{display:none}}.vibe64-repository-file-browser--stacked[data-v-0776c725]{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.vibe64-repository-file-browser--stacked.vibe64-repository-file-browser--embedded[data-v-0776c725]{grid-template-rows:min(16rem,50%) minmax(0,1fr)}.vibe64-repository-file-browser--stacked>.vibe64-repository-file-browser__list[data-v-0776c725]{border-bottom:1px solid rgba(var(--v-theme-outline), .16);max-height:16rem}.vibe64-repository-file-browser--stacked>.vibe64-repository-file-browser__separator[data-v-0776c725]{display:none}.vibe64-repository-workspace[data-v-77807551]{align-content:start;gap:.8rem;width:100%;min-width:0;max-width:90rem;margin-inline:auto;display:grid}.vibe64-repository-workspace--changes[data-v-77807551]{max-width:none}.vibe64-repository-workspace__changes-area[data-v-77807551]{gap:.8rem;min-width:0;display:grid}.vibe64-repository-workspace__summary[data-v-77807551],.vibe64-repository-workspace__actions[data-v-77807551]{align-items:center;display:flex}.vibe64-repository-workspace__summary-copy span[data-v-77807551],.vibe64-repository-workspace__history-intro span[data-v-77807551],.vibe64-repository-workspace__empty span[data-v-77807551]{color:rgba(var(--v-theme-on-surface), .66);font-size:.84rem}.vibe64-repository-workspace__summary[data-v-77807551]{padding:var(--v64-space-4,16px);justify-content:space-between;gap:.8rem}.vibe64-repository-workspace__summary[data-v-77807551],.vibe64-repository-workspace__update-status[data-v-77807551]{background:var(--v64-surface-container-low)!important;border-color:var(--v64-outline-variant)!important;border-radius:var(--v64-shape-lg,16px)!important}.vibe64-repository-workspace__update-status[data-v-77807551]{padding:var(--v64-space-3,12px) var(--v64-space-4,16px);gap:.18rem;display:grid}.vibe64-repository-workspace__update-status span[data-v-77807551]{color:rgba(var(--v-theme-on-surface), .66);font-size:.84rem}.vibe64-repository-workspace__incoming-versions[data-v-77807551]{gap:.28rem;max-width:52rem;margin:.4rem 0 0;padding:0;list-style:none;display:grid}.vibe64-repository-workspace__incoming-versions li[data-v-77807551]{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.45rem;min-width:0;display:grid}.vibe64-repository-workspace__incoming-versions li>span[data-v-77807551]{color:rgb(var(--v-theme-on-surface));text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vibe64-repository-workspace__incoming-versions code[data-v-77807551]{background:rgba(var(--v-theme-on-surface), .08);color:rgba(var(--v-theme-on-surface), .72);border-radius:.3rem;padding:.08rem .3rem;font-size:.74rem}.vibe64-repository-workspace__summary-copy[data-v-77807551],.vibe64-repository-workspace__empty[data-v-77807551]{gap:.18rem;display:grid}.vibe64-repository-workspace__actions[data-v-77807551]{flex-wrap:wrap;gap:.5rem}.vibe64-repository-workspace__window[data-v-77807551]{min-height:22rem;overflow:visible}.vibe64-repository-workspace__history[data-v-77807551]{border:1px solid var(--v64-outline-variant,#0000001f);border-radius:var(--v64-shape-lg,16px);grid-template-columns:minmax(0,1fr);min-width:0;display:grid;overflow:hidden}.vibe64-repository-workspace__history-intro[data-v-77807551]{background:var(--v64-surface-container-low);border-bottom:1px solid var(--v64-outline-variant,#0000001f);justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 1.1rem;display:flex}.vibe64-repository-workspace__history-heading[data-v-77807551]{align-items:center;gap:.7rem;min-width:0;display:flex}.vibe64-repository-workspace__history-heading>div[data-v-77807551]{gap:.18rem;min-width:0;display:grid}.vibe64-repository-workspace__history-icon[data-v-77807551],.vibe64-repository-version-dialog__icon[data-v-77807551]{background:rgba(var(--v-theme-primary), .11);color:rgb(var(--v-theme-primary));border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.vibe64-repository-workspace__history-icon[data-v-77807551]{width:2.1rem;height:2.1rem}.vibe64-repository-workspace__versions[data-v-77807551]{min-width:0;margin:0;padding:0;list-style:none;overflow:auto}.vibe64-repository-workspace__history-item[data-v-77807551]{grid-template-columns:3.25rem minmax(0,1fr);min-width:0;display:grid}.vibe64-repository-workspace__commit-marker[data-v-77807551]{justify-content:center;min-height:5rem;display:flex;position:relative}.vibe64-repository-workspace__commit-marker[data-v-77807551]:before{background:rgba(var(--v-theme-outline), .34);content:"";width:2px;position:absolute;top:0;bottom:0;left:calc(50% - 1px)}.vibe64-repository-workspace__commit-marker--first[data-v-77807551]:before{top:1.55rem}.vibe64-repository-workspace__commit-marker--last[data-v-77807551]:before{bottom:calc(100% - 1.55rem)}.vibe64-repository-workspace__commit-node[data-v-77807551]{background:rgb(var(--v-theme-surface));border:2px solid rgba(var(--v-theme-outline), .56);color:rgba(var(--v-theme-on-surface), .7);z-index:1;border-radius:50%;justify-content:center;align-items:center;width:2rem;height:2rem;margin-top:.55rem;display:flex;position:relative}.vibe64-repository-workspace__commit-node--latest[data-v-77807551]{background:rgb(var(--v-theme-primary));border-color:rgb(var(--v-theme-primary));color:rgb(var(--v-theme-on-primary));box-shadow:0 0 0 .25rem rgba(var(--v-theme-primary), .1)}.vibe64-repository-workspace__version[data-v-77807551]{border:0;border-bottom:1px solid rgba(var(--v-theme-outline), .1);color:inherit;cursor:pointer;text-align:start;background:0 0;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;width:100%;min-height:5rem;padding:.65rem 1rem .65rem .15rem;transition:background-color .12s;display:grid}.vibe64-repository-workspace__version[data-v-77807551]:hover,.vibe64-repository-workspace__version[data-v-77807551]:focus-visible,.vibe64-repository-workspace__version[aria-current=true][data-v-77807551]{background:rgba(var(--v-theme-primary), .08);outline:none}.vibe64-repository-workspace__version[data-v-77807551]:focus-visible{box-shadow:inset 0 0 0 2px rgb(var(--v-theme-primary))}.vibe64-repository-workspace__version-copy[data-v-77807551]{gap:.35rem;min-width:0;display:grid}.vibe64-repository-workspace__version-heading[data-v-77807551]{flex-wrap:wrap;align-items:center;gap:.45rem;min-width:0;display:flex}.vibe64-repository-workspace__version-heading strong[data-v-77807551]{text-overflow:ellipsis;white-space:nowrap;font-size:.94rem;line-height:1.3;overflow:hidden}.vibe64-repository-workspace__version-meta[data-v-77807551],.vibe64-repository-version-dialog__meta[data-v-77807551]{color:rgba(var(--v-theme-on-surface), .56);flex-wrap:wrap;align-items:center;gap:.35rem .85rem;font-size:.78rem;display:flex}.vibe64-repository-workspace__version-meta>span[data-v-77807551],.vibe64-repository-version-dialog__meta>span[data-v-77807551]{align-items:center;gap:.25rem;min-width:0;display:inline-flex}.vibe64-repository-workspace__version-meta code[data-v-77807551],.vibe64-repository-version-dialog__meta code[data-v-77807551]{background:rgba(var(--v-theme-surface-variant), .52);color:rgba(var(--v-theme-on-surface), .72);border-radius:.35rem;padding:.1rem .35rem;font-size:.73rem}.vibe64-repository-workspace__load-more[data-v-77807551]{border-top:1px solid rgba(var(--v-theme-outline), .1);padding:.55rem 1rem .55rem 3.25rem}.vibe64-repository-version-dialog__card[data-v-77807551]{border-radius:0;flex-direction:column;width:100%;height:100dvh;display:flex}.vibe64-repository-version-dialog__header[data-v-77807551]{background:rgba(var(--v-theme-surface-variant), .18);align-items:flex-start;gap:.8rem;padding:1rem 1.1rem;display:flex}.vibe64-repository-version-dialog__icon[data-v-77807551]{width:2.6rem;height:2.6rem;margin-top:.1rem}.vibe64-repository-version-dialog__heading[data-v-77807551]{flex:auto;gap:.3rem;min-width:0;display:grid}.vibe64-repository-version-dialog__eyebrow[data-v-77807551]{color:rgb(var(--v-theme-primary));letter-spacing:.08em;text-transform:uppercase;font-size:.7rem;font-weight:700}.vibe64-repository-version-dialog__heading h2[data-v-77807551]{overflow-wrap:anywhere;white-space:normal;margin:0;font-size:1.08rem;line-height:1.35}.vibe64-repository-version-dialog__meta[data-v-77807551]{color:rgba(var(--v-theme-on-surface), .62)}.vibe64-repository-version-dialog__body[data-v-77807551]{flex-direction:column;flex:auto;min-height:0;padding:0;display:flex;overflow:hidden}.vibe64-repository-version-dialog__error[data-v-77807551]{flex:none;max-height:50%;overflow:auto}.vibe64-repository-version-dialog__body>.vibe64-repository-version-dialog__files[data-v-77807551]{flex:1 1 0;height:auto;min-height:0}.vibe64-repository-version-dialog .v-overlay__content{width:100vw;max-width:none;height:100dvh;max-height:100dvh;margin:0}.vibe64-repository-workspace__empty[data-v-77807551]{background:var(--v64-surface-container-low);border:1px dashed var(--v64-outline,#0000003d);border-radius:var(--v64-shape-lg,16px);padding:var(--v64-space-6,32px) var(--v64-space-4,16px);text-align:center;justify-items:center}.vibe64-repository-workspace__empty strong[data-v-77807551]{font:var(--v64-type-title-md,600 1rem/1.5rem system-ui, sans-serif)}@media (width>=781px){.vibe64-repository-workspace--changes[data-v-77807551]{grid-template-rows:auto minmax(0,1fr);height:100%;min-height:0}.vibe64-repository-workspace--changes .vibe64-repository-workspace__changes-area[data-v-77807551]{flex-direction:column;min-height:0;display:flex;overflow:auto}.vibe64-repository-workspace--changes .vibe64-repository-workspace__changes-area[data-v-77807551]>:not(.vibe64-repository-workspace__window){flex:none}.vibe64-repository-workspace--changes .vibe64-repository-workspace__window[data-v-77807551]{flex:1 1 0;grid-template-rows:minmax(0,1fr);min-height:12rem;display:grid}.vibe64-repository-workspace__changes[data-v-77807551]{grid-template-rows:minmax(0,1fr);align-items:start;min-height:0;display:grid;overflow:auto}}@media (width<=780px){.vibe64-repository-workspace__version[data-v-77807551]{grid-template-columns:minmax(0,1fr) 1.1rem}.vibe64-repository-workspace__version code[data-v-77807551]{display:none}.vibe64-repository-workspace__summary[data-v-77807551]{flex-direction:column;align-items:stretch}}