@jxsuite/studio 5.2.0 → 5.4.0

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 (398) hide show
  1. package/data/css-meta.json +28 -27
  2. package/dist/chunks/{cf-account-picker-h4dab9bq.js → cf-account-picker-3f08rry6.js} +21 -18
  3. package/dist/chunks/{cf-settings-adg74qsk.js → cf-settings-m79r7p5y.js} +4 -4
  4. package/dist/chunks/{components-5y78e05d.js → components-xm826zjw.js} +3 -3
  5. package/dist/chunks/{content-source-sgg1sv6n.js → content-source-jt7rbcbc.js} +22 -22
  6. package/dist/chunks/{convert-to-repeater-mf1cxgfn.js → convert-to-repeater-vg38bq99.js} +22 -22
  7. package/dist/chunks/{editor-3qhbg51x.js → editor-ddy019sn.js} +2 -2
  8. package/dist/chunks/entry-commands-64nb2a9a.js +42 -0
  9. package/dist/chunks/{extension-sections-c6zwzbre.js → extension-sections-r73an5s6.js} +31 -30
  10. package/dist/chunks/{file-ops-vrpq1jjk.js → file-ops-3xan8mnj.js} +21 -21
  11. package/dist/chunks/{files-msaf95y6.js → files-egsb0ry8.js} +30 -29
  12. package/dist/chunks/{format-host-f64fnesp.js → format-host-mym8qnd0.js} +3 -3
  13. package/dist/chunks/{fs-events-3y6y0nrm.js → fs-events-z2gg8qjt.js} +4 -4
  14. package/dist/chunks/{git-panel-bv5e22j0.js → git-panel-a05atk6q.js} +20 -20
  15. package/dist/chunks/{grid-view-1p6hsyjx.css → grid-view-3g1h2re8.css} +956 -139
  16. package/dist/chunks/{grid-view-paj67nr5.js → grid-view-qaqer9kr.js} +24 -24
  17. package/dist/chunks/{icons-yy10wk9r.js → icons-drxq9q10.js} +8 -2
  18. package/dist/chunks/{iframe-host-dh5np8vk.js → iframe-host-psetcv20.js} +11 -11
  19. package/dist/chunks/{index-n4j7qxyr.js → index-9yjae3hz.js} +4 -4
  20. package/dist/chunks/{javascript-4abzjcy9.css → javascript-bc9z461d.css} +688 -54
  21. package/dist/chunks/{javascript-xvrfrpkb.js → javascript-hr5sg57n.js} +2 -2
  22. package/dist/chunks/{jsonMode-vvmpmk34.css → jsonMode-qqd9nm1t.css} +1120 -303
  23. package/dist/chunks/{jsonMode-tyx2kj6p.js → jsonMode-zs88v0wr.js} +4 -4
  24. package/dist/chunks/{jx-validate-j0wxk72w.js → jx-validate-epp2z3s3.js} +2 -2
  25. package/dist/chunks/layers-panel-83a16ytx.js +41 -0
  26. package/dist/chunks/{layers-1vcfdbet.js → layers-s6mc01ry.js} +3 -3
  27. package/dist/chunks/{listbox-6v2ac08j.js → listbox-b7jxnhq1.js} +19 -3
  28. package/dist/chunks/{media-picker-p49nhqhs.js → media-picker-nhn6rv4w.js} +11 -11
  29. package/dist/chunks/{menu-qht48vnc.js → menu-8j4qxjrp.js} +4 -4
  30. package/dist/chunks/{monaco-binding-sw6en4dw.js → monaco-binding-e8d9wzyk.js} +3 -3
  31. package/dist/chunks/{monaco-buffer-pykwbm92.js → monaco-buffer-jaq1t9zj.js} +2 -2
  32. package/dist/chunks/{monaco-setup-8vbyqnhr.css → monaco-setup-ey9cjcm3.css} +954 -137
  33. package/dist/chunks/{monaco-setup-8r62fj6y.js → monaco-setup-gsjdysze.js} +7 -7
  34. package/dist/chunks/{platform-ts9cg1a4.js → platform-fnchmhy7.js} +5 -3
  35. package/dist/chunks/publish-panel-ak6hxfma.js +27 -0
  36. package/dist/chunks/quick-search-c63mkt3b.js +47 -0
  37. package/dist/chunks/{references-h69xp9zz.js → references-f7bdv3z5.js} +3 -3
  38. package/dist/chunks/right-panel-t5n8wttg.js +45 -0
  39. package/dist/chunks/{split-g7nm1rgb.js → split-4cz4b6ef.js} +14 -3
  40. package/dist/chunks/{studio-sar8g54p.js → studio-01269reb.js} +8 -8
  41. package/dist/chunks/{studio-rnyf3f8e.js → studio-0a4gncx0.js} +3 -3
  42. package/dist/chunks/{studio-e1f24eff.js → studio-0d4p4wxj.js} +6778 -2993
  43. package/dist/chunks/{studio-4wbb9ct0.js → studio-1tejxvba.js} +3006 -1855
  44. package/dist/chunks/{studio-p6pmwkvh.js → studio-3nprwbd9.js} +147 -28
  45. package/dist/chunks/{studio-4c041r8y.js → studio-40z39dme.js} +3 -3
  46. package/dist/chunks/{studio-68fydsrj.js → studio-482eeazk.js} +20 -20
  47. package/dist/chunks/{studio-y4f9fdge.js → studio-4998spet.js} +10 -9
  48. package/dist/chunks/{studio-nq5yf5mp.js → studio-557bmn0x.js} +2 -2
  49. package/dist/chunks/{studio-hdc2jt3z.js → studio-5w26wza5.js} +3 -3
  50. package/dist/chunks/{studio-6nzaktvy.js → studio-6pwn9j8c.js} +6 -3
  51. package/dist/chunks/{studio-wnsyffg1.js → studio-6vg0x5fz.js} +3 -2
  52. package/dist/chunks/{studio-vn5hske5.js → studio-7d3c1m59.js} +12 -5
  53. package/dist/chunks/{studio-28vs5k2y.js → studio-9vsvz7w7.js} +7 -7
  54. package/dist/chunks/{studio-t3adrr56.js → studio-9wm0xzpf.js} +19 -19
  55. package/dist/chunks/{studio-38emantv.js → studio-a5h5j33a.js} +19 -5
  56. package/dist/chunks/{studio-ympe0n7a.js → studio-ag3z6shb.js} +10 -4
  57. package/dist/chunks/studio-aj9drheq.js +177 -0
  58. package/dist/chunks/{studio-vt0tj32j.js → studio-apv9x70c.js} +189 -130
  59. package/dist/chunks/{studio-c04nzbby.js → studio-b9q3znz8.js} +2 -2
  60. package/dist/chunks/{studio-2mdbbc76.js → studio-bh47w0cy.js} +9 -10
  61. package/dist/chunks/{studio-ez11dmdh.js → studio-dgdm6vvt.js} +264 -52
  62. package/dist/chunks/{studio-5nz00bhh.js → studio-dwdcr2e8.js} +4 -4
  63. package/dist/chunks/{studio-nqgawfks.js → studio-fbcyz234.js} +146 -139
  64. package/dist/chunks/{studio-kcgff4r0.js → studio-fgmfksz8.js} +2 -2
  65. package/dist/chunks/{studio-x72j58vw.js → studio-fqpkpq1t.js} +7 -4
  66. package/dist/chunks/{studio-15f3kxqe.js → studio-fy320dfc.js} +62 -68
  67. package/dist/chunks/{studio-zjjde71a.js → studio-gjj4bbfx.js} +2 -2
  68. package/dist/chunks/{studio-66arbpc2.js → studio-jfhxy8h3.js} +16 -15
  69. package/dist/chunks/{studio-d0300636.js → studio-ks2zzth2.js} +17 -2
  70. package/dist/chunks/{studio-c07s5ckd.js → studio-kwewmhhq.js} +4 -4
  71. package/dist/chunks/{studio-01jeck2y.js → studio-m58xn8at.js} +26 -25
  72. package/dist/chunks/{studio-mpzwze9x.js → studio-mfkh1q8d.js} +17 -17
  73. package/dist/chunks/{studio-etvx9s2g.js → studio-mrh0a92f.js} +17 -17
  74. package/dist/chunks/{studio-qa7fzxan.js → studio-mt79tn56.js} +3 -3
  75. package/dist/chunks/{studio-hhskq2mr.js → studio-ne593z1j.js} +39 -32
  76. package/dist/chunks/{studio-h4nvnjvz.js → studio-ptfcxkz5.js} +418 -232
  77. package/dist/chunks/{studio-4xmjcrg3.js → studio-qxye31h7.js} +7 -7
  78. package/dist/chunks/{studio-a1pswps3.js → studio-rav5bpmp.js} +81 -59
  79. package/dist/chunks/{studio-ncn9e189.js → studio-rwmmbrth.js} +6 -6
  80. package/dist/chunks/{studio-en82c639.js → studio-sceg8ws0.js} +8 -8
  81. package/dist/chunks/{studio-wjpgxywa.js → studio-sjas5b3a.js} +19 -13
  82. package/dist/chunks/{studio-4r14yzyy.js → studio-vd67b66d.js} +3 -3
  83. package/dist/chunks/{studio-14d9tq4d.js → studio-w475cbf9.js} +10 -10
  84. package/dist/chunks/{studio-ctm7bhx5.js → studio-w7gpcvfj.js} +9 -9
  85. package/dist/chunks/{studio-9j6sfeba.js → studio-xrbfdxgk.js} +7 -7
  86. package/dist/chunks/{studio-x10fp4tp.js → studio-y49b6mjv.js} +35 -35
  87. package/dist/chunks/{studio-5t7ena5z.js → studio-ygvr9e4q.js} +10 -10
  88. package/dist/chunks/{studio-z2smx5ce.js → studio-yxmmjy2a.js} +9 -6
  89. package/dist/chunks/{tsMode-jy4m86rv.js → tsMode-ay4c78ne.js} +4 -4
  90. package/dist/chunks/{tsMode-hnxxb73h.css → tsMode-c72wyz27.css} +954 -137
  91. package/dist/chunks/{workspace-bnw54cha.js → workspace-b9k2frks.js} +5 -5
  92. package/dist/chunks/{ws-client-ny4zc51r.js → ws-client-erze4czt.js} +356 -20
  93. package/dist/codicon.ttf +0 -0
  94. package/dist/iframe-entry.js +20 -18
  95. package/dist/studio.css +956 -139
  96. package/dist/studio.js +1511 -851
  97. package/dist/workers/editor.worker.js +196 -107
  98. package/dist/workers/json.worker.js +196 -107
  99. package/dist/workers/ts.worker.js +196 -107
  100. package/package.json +18 -17
  101. package/src/about/about-modal.ts +4 -3
  102. package/src/browse/library-commands.ts +15 -13
  103. package/src/browse/library-pane.ts +2 -2
  104. package/src/canvas/canvas-render.ts +97 -83
  105. package/src/canvas/canvas-surface.ts +2 -2
  106. package/src/canvas/canvas-utils.ts +42 -32
  107. package/src/canvas/diff-toolbar.ts +21 -2
  108. package/src/canvas/diff-view.ts +30 -6
  109. package/src/canvas/iframe-entry.ts +2 -2
  110. package/src/canvas/iframe-host.ts +5 -5
  111. package/src/canvas/iframe-interaction.ts +7 -6
  112. package/src/canvas/iframe-overlay.ts +1 -1
  113. package/src/canvas/iframe-protocol.ts +6 -5
  114. package/src/canvas/iframe-render.ts +3 -3
  115. package/src/canvas/popover-state.ts +1 -1
  116. package/src/canvas/stage-scrollbar.ts +112 -0
  117. package/src/canvas/surface-registry.ts +9 -2
  118. package/src/collab/collab-commands.ts +8 -6
  119. package/src/collab/collab-session.ts +4 -4
  120. package/src/collab/collab-state.ts +4 -4
  121. package/src/collab/presence-chips.ts +3 -3
  122. package/src/commands/app-commands.ts +7 -7
  123. package/src/commands/budget.ts +17 -16
  124. package/src/commands/command-args.ts +10 -9
  125. package/src/commands/context.ts +20 -10
  126. package/src/commands/defaults.ts +30 -29
  127. package/src/commands/levels.ts +8 -6
  128. package/src/commands/live-context.ts +12 -10
  129. package/src/commands/reference.ts +5 -5
  130. package/src/commands/registry.ts +2 -2
  131. package/src/content/draft-state.ts +9 -8
  132. package/src/content/entry-commands.ts +16 -14
  133. package/src/content/entry-editor.ts +2 -2
  134. package/src/content/entry-fields.ts +1 -1
  135. package/src/editor/context-menu.ts +4 -4
  136. package/src/editor/convert-to-component.ts +6 -5
  137. package/src/editor/inline-edit.ts +3 -3
  138. package/src/editor/shortcuts.ts +88 -20
  139. package/src/editor/slash-menu.ts +11 -10
  140. package/src/files/elements.ts +4 -5
  141. package/src/files/file-ops.ts +1 -1
  142. package/src/files/files.ts +21 -17
  143. package/src/files/serialize-document.ts +1 -1
  144. package/src/format/convert-file.ts +5 -5
  145. package/src/github/github-auth-status.ts +107 -0
  146. package/src/github/github-auth.ts +18 -82
  147. package/src/github/github-publish.ts +7 -6
  148. package/src/grid/cell-editors.ts +8 -7
  149. package/src/grid/grid-layout.ts +1 -1
  150. package/src/grid/grid-open.ts +6 -5
  151. package/src/grid/grid-panel.ts +13 -12
  152. package/src/grid/redirects-grid.ts +14 -11
  153. package/src/grid/redirects.ts +10 -5
  154. package/src/grid/sources/content-source.ts +10 -9
  155. package/src/hosting/document.ts +28 -1
  156. package/src/hosting/stage.ts +15 -4
  157. package/src/i18n/i18n-commands.ts +9 -7
  158. package/src/new-project/location-fields.ts +16 -3
  159. package/src/new-project/new-project-modal.ts +23 -7
  160. package/src/page-params.ts +6 -6
  161. package/src/panels/activity-panel.ts +11 -10
  162. package/src/panels/ai-chat/chat-view.ts +27 -14
  163. package/src/panels/ai-chat/composer.ts +10 -3
  164. package/src/panels/ai-panel.ts +87 -29
  165. package/src/panels/block-action-bar.ts +59 -33
  166. package/src/panels/bottom-dock.ts +22 -22
  167. package/src/panels/chat-panel.ts +40 -5
  168. package/src/panels/data-explorer.ts +9 -9
  169. package/src/panels/data-grid.ts +1 -1
  170. package/src/panels/editors.ts +8 -8
  171. package/src/panels/elements-panel.ts +7 -8
  172. package/src/panels/empty-state.ts +1 -1
  173. package/src/panels/events-panel.ts +13 -12
  174. package/src/panels/formula-workspace.ts +8 -5
  175. package/src/panels/frontmatter-fields.ts +4 -1
  176. package/src/panels/frontmatter-panel.ts +18 -18
  177. package/src/panels/git-panel.ts +19 -13
  178. package/src/panels/head-panel.ts +9 -10
  179. package/src/panels/i18n-panel.ts +6 -4
  180. package/src/panels/imports-panel.ts +1 -1
  181. package/src/panels/jump-bar.ts +20 -18
  182. package/src/panels/layers-panel.ts +19 -17
  183. package/src/panels/left-panel.ts +3 -3
  184. package/src/panels/navigator-panels.ts +8 -8
  185. package/src/panels/overlays.ts +1 -1
  186. package/src/panels/pane-context.ts +56 -28
  187. package/src/panels/pane-grid.ts +9 -8
  188. package/src/panels/panel-registry.ts +47 -19
  189. package/src/panels/problems-panel.ts +11 -12
  190. package/src/panels/properties-panel.ts +21 -20
  191. package/src/panels/provenance.ts +3 -3
  192. package/src/panels/quick-search.ts +15 -11
  193. package/src/panels/right-panel.ts +4 -3
  194. package/src/panels/seo-modal.ts +5 -4
  195. package/src/panels/settings-menu.ts +9 -9
  196. package/src/panels/settings-pane.ts +3 -3
  197. package/src/panels/signals-panel.ts +16 -9
  198. package/src/panels/statement-editor.ts +12 -9
  199. package/src/panels/style-panel.ts +45 -41
  200. package/src/panels/stylebook-panel.ts +0 -1
  201. package/src/panels/tab-strip.ts +26 -23
  202. package/src/platform-errors.ts +2 -2
  203. package/src/platform.ts +44 -4
  204. package/src/platforms/cloud.ts +11 -1
  205. package/src/platforms/default-platform.ts +141 -4
  206. package/src/platforms/devserver.ts +23 -3
  207. package/src/publish/deploy-checklist.ts +11 -10
  208. package/src/publish/publish-commands.ts +9 -8
  209. package/src/services/a11y-report.ts +1 -1
  210. package/src/services/ai-ask.ts +39 -16
  211. package/src/services/ai-command-tools.ts +28 -14
  212. package/src/services/ai-import-tools.ts +43 -29
  213. package/src/services/ai-project-tools.ts +20 -38
  214. package/src/services/ai-settings.ts +55 -2
  215. package/src/services/ai-tools.ts +69 -58
  216. package/src/services/ai-write-report.ts +4 -4
  217. package/src/services/ai-writes.ts +74 -55
  218. package/src/services/automation.ts +12 -12
  219. package/src/services/clock.ts +2 -1
  220. package/src/services/connection.ts +2 -2
  221. package/src/services/context-manager.ts +69 -6
  222. package/src/services/directory-picker.ts +93 -27
  223. package/src/services/document-assistant.ts +86 -17
  224. package/src/services/gated-registry.ts +4 -3
  225. package/src/services/idle.ts +5 -4
  226. package/src/services/live-surfaces.ts +2 -1
  227. package/src/services/module-preloads.ts +67 -0
  228. package/src/services/notify.ts +9 -7
  229. package/src/services/popover-report.ts +3 -3
  230. package/src/services/preview-eval.ts +1 -1
  231. package/src/services/project-adoption.ts +34 -1
  232. package/src/services/project-path.ts +53 -0
  233. package/src/services/settings/kernel.ts +13 -2
  234. package/src/services/tool-executor.ts +135 -30
  235. package/src/services/tool-outcomes.ts +143 -0
  236. package/src/settings/contexts-section.ts +8 -8
  237. package/src/settings/contributed-section.ts +6 -6
  238. package/src/settings/css-vars-editor.ts +6 -5
  239. package/src/settings/extension-commands.ts +19 -18
  240. package/src/settings/extension-sections.ts +7 -7
  241. package/src/settings/extensions-section.ts +3 -3
  242. package/src/settings/general-settings.ts +21 -18
  243. package/src/settings/preferences-accounts.ts +3 -3
  244. package/src/settings/preferences-dialog.ts +9 -8
  245. package/src/settings/preferences-sections.ts +1 -1
  246. package/src/settings/project-sections.ts +2 -2
  247. package/src/settings/section-registry.ts +7 -6
  248. package/src/settings/settings-document.ts +41 -43
  249. package/src/shell/tree.ts +29 -0
  250. package/src/shell.ts +63 -55
  251. package/src/site-context.ts +1 -1
  252. package/src/store.ts +2 -2
  253. package/src/studio.ts +52 -28
  254. package/src/style/live-preview.ts +8 -8
  255. package/src/style/project-styles.ts +8 -9
  256. package/src/style/token-ref.ts +2 -2
  257. package/src/surfaces/about.json +6 -2
  258. package/src/surfaces/add-repo.json +2 -2
  259. package/src/surfaces/add-repo.ts +2 -2
  260. package/src/surfaces/ai-chat.json +14 -6
  261. package/src/surfaces/ai-chat.ts +4 -2
  262. package/src/surfaces/ai-credentials-form.json +53 -49
  263. package/src/surfaces/ai-credentials-form.ts +18 -4
  264. package/src/surfaces/ai-managed-connect.json +4 -4
  265. package/src/surfaces/block-action-bar.json +4 -4
  266. package/src/surfaces/block-action-bar.ts +3 -3
  267. package/src/surfaces/boot-failure.json +228 -0
  268. package/src/surfaces/boot-failure.ts +156 -0
  269. package/src/surfaces/bottom-dock.json +1 -1
  270. package/src/surfaces/canvas-stage.json +9 -40
  271. package/src/surfaces/canvas-stage.ts +9 -9
  272. package/src/surfaces/cf-account-picker.json +11 -8
  273. package/src/surfaces/commandbar.ts +11 -10
  274. package/src/surfaces/convert-repeater.ts +3 -2
  275. package/src/surfaces/dialog.json +7 -1
  276. package/src/surfaces/dialog.ts +2 -2
  277. package/src/surfaces/doc-header.json +6 -13
  278. package/src/surfaces/doc-header.ts +4 -5
  279. package/src/surfaces/entry-editor.json +1 -1
  280. package/src/surfaces/entry-editor.ts +2 -1
  281. package/src/surfaces/expression-editor.json +5 -5
  282. package/src/surfaces/files-panel.json +4 -3
  283. package/src/surfaces/files-panel.ts +1 -1
  284. package/src/surfaces/formula-palette.json +10 -9
  285. package/src/surfaces/formula-palette.ts +11 -7
  286. package/src/surfaces/git-panel.json +167 -109
  287. package/src/surfaces/git-panel.ts +2 -2
  288. package/src/surfaces/github-auth.json +2 -1
  289. package/src/surfaces/github-publish.ts +3 -3
  290. package/src/surfaces/grid-open.json +1 -1
  291. package/src/surfaces/grid-panel.json +2 -2
  292. package/src/surfaces/grid-views.json +1 -1
  293. package/src/surfaces/inspector-dock.json +2 -2
  294. package/src/surfaces/jump-bar.json +1 -1
  295. package/src/surfaces/jump-bar.ts +1 -1
  296. package/src/surfaces/library-pane.ts +2 -1
  297. package/src/surfaces/logic-panel.json +7 -7
  298. package/src/surfaces/logic-panel.ts +6 -4
  299. package/src/surfaces/logic-workspace.json +2 -2
  300. package/src/surfaces/logic-workspace.ts +2 -2
  301. package/src/surfaces/media-browser.ts +3 -3
  302. package/src/surfaces/media-pane.ts +2 -1
  303. package/src/surfaces/menu.ts +5 -5
  304. package/src/surfaces/new-project.json +1 -1
  305. package/src/surfaces/palette.json +8 -7
  306. package/src/surfaces/pane-context.json +86 -57
  307. package/src/surfaces/pane-context.ts +2 -1
  308. package/src/surfaces/pane-grid.json +3 -3
  309. package/src/surfaces/panel-activity.json +2 -1
  310. package/src/surfaces/panel-deploy-checklist.json +1 -1
  311. package/src/surfaces/panel-elements.ts +2 -1
  312. package/src/surfaces/panel-i18n.ts +2 -1
  313. package/src/surfaces/panel-outline.json +1 -1
  314. package/src/surfaces/panel-outline.ts +4 -3
  315. package/src/surfaces/panel-page.json +2 -2
  316. package/src/surfaces/panel-page.ts +4 -1
  317. package/src/surfaces/panel-problems.json +4 -3
  318. package/src/surfaces/panel-problems.ts +2 -2
  319. package/src/surfaces/panel-signals.json +23 -8
  320. package/src/surfaces/panel-signals.ts +5 -1
  321. package/src/surfaces/panel-stylebook-layers.json +1 -1
  322. package/src/surfaces/panel-stylebook-layers.ts +2 -2
  323. package/src/surfaces/preferences.json +21 -8
  324. package/src/surfaces/preferences.ts +9 -1
  325. package/src/surfaces/properties-panel.json +4 -4
  326. package/src/surfaces/properties-panel.ts +2 -2
  327. package/src/surfaces/publish.json +1 -1
  328. package/src/surfaces/publish.ts +2 -1
  329. package/src/surfaces/push-plan.json +4 -3
  330. package/src/surfaces/rail.json +2 -2
  331. package/src/surfaces/rail.ts +10 -4
  332. package/src/surfaces/reference-field.json +1 -1
  333. package/src/surfaces/schema-form.json +2 -2
  334. package/src/surfaces/schema-form.ts +1 -1
  335. package/src/surfaces/seo.json +1 -1
  336. package/src/surfaces/seo.ts +2 -2
  337. package/src/surfaces/settings-contributed.ts +2 -1
  338. package/src/surfaces/settings-css-vars.json +4 -4
  339. package/src/surfaces/settings-deploy.json +4 -4
  340. package/src/surfaces/settings-deploy.ts +2 -1
  341. package/src/surfaces/settings-extensions.json +6 -6
  342. package/src/surfaces/settings-extensions.ts +6 -2
  343. package/src/surfaces/settings-locales.json +4 -4
  344. package/src/surfaces/settings-overview.ts +2 -1
  345. package/src/surfaces/settings-pane.ts +3 -2
  346. package/src/surfaces/settings-rawjson.ts +1 -1
  347. package/src/surfaces/slash-menu.ts +4 -4
  348. package/src/surfaces/statements.json +3 -3
  349. package/src/surfaces/statusbar.ts +23 -23
  350. package/src/surfaces/style-panel.json +9 -5
  351. package/src/surfaces/style-panel.ts +3 -3
  352. package/src/surfaces/tab-strip.json +2 -2
  353. package/src/surfaces/target-line.json +1 -1
  354. package/src/surfaces/target-line.ts +12 -10
  355. package/src/surfaces/welcome.json +7 -2
  356. package/src/tabs/doc-op-apply.ts +5 -5
  357. package/src/tabs/patch-ops.ts +3 -3
  358. package/src/tabs/project-config.ts +10 -10
  359. package/src/tabs/selection.ts +1 -1
  360. package/src/tabs/tab.ts +13 -14
  361. package/src/tabs/transact.ts +18 -24
  362. package/src/types.ts +27 -3
  363. package/src/ui/ai-credentials-form.ts +74 -16
  364. package/src/ui/ai-managed-connect.ts +68 -19
  365. package/src/ui/color-selector.ts +1 -1
  366. package/src/ui/expression-editor.ts +3 -3
  367. package/src/ui/form-controls.ts +6 -5
  368. package/src/ui/formula-catalog.ts +4 -4
  369. package/src/ui/formula-chips.ts +2 -2
  370. package/src/ui/layers.ts +20 -18
  371. package/src/ui/panel-resize.ts +8 -28
  372. package/src/ui/popover-surface.ts +2 -2
  373. package/src/ui/progress-modal.ts +3 -3
  374. package/src/ui/regions.ts +14 -9
  375. package/src/ui/schema-form.ts +10 -9
  376. package/src/ui/timing.ts +9 -7
  377. package/src/ui/value-source.ts +4 -4
  378. package/src/ui/virtual-window.ts +58 -5
  379. package/src/utils/base64.ts +20 -1
  380. package/src/utils/canvas-media.ts +1 -1
  381. package/src/utils/studio-utils.ts +0 -31
  382. package/src/view.ts +4 -3
  383. package/src/workspace/pane-derive.ts +14 -13
  384. package/src/workspace/session.ts +7 -6
  385. package/src/workspace/workspace.ts +49 -39
  386. package/styles/canvas.css +1 -27
  387. package/styles/inspector.css +4 -3
  388. package/styles/overlays.css +1 -1
  389. package/styles/tokens.css +17 -1
  390. package/styles/tokens.json +6 -1
  391. package/dist/chunks/entry-commands-w9qsxa6q.js +0 -42
  392. package/dist/chunks/layers-panel-fksbdg4q.js +0 -40
  393. package/dist/chunks/publish-panel-vz23wwmg.js +0 -27
  394. package/dist/chunks/quick-search-e9rp74m8.js +0 -46
  395. package/dist/chunks/right-panel-j97t2yvy.js +0 -45
  396. package/dist/chunks/studio-727xh0e3.js +0 -76
  397. package/src/files/json-layout.ts +0 -474
  398. package/src/services/ai-turn-signal.ts +0 -70
@@ -8,10 +8,10 @@ import {
8
8
  platformInFlight2,
9
9
  getPlatform2,
10
10
  hasPlatform2
11
- } from "./studio-6nzaktvy.js";
11
+ } from "./studio-6pwn9j8c.js";
12
12
  import {
13
13
  formatForPath2
14
- } from "./studio-28vs5k2y.js";
14
+ } from "./studio-9vsvz7w7.js";
15
15
  import {
16
16
  POLL_GIT,
17
17
  projectState,
@@ -25,7 +25,7 @@ import {
25
25
  activeTab2,
26
26
  openTab2,
27
27
  activateTab2
28
- } from "./studio-ez11dmdh.js";
28
+ } from "./studio-dgdm6vvt.js";
29
29
  import {
30
30
  effectScope,
31
31
  effect,
@@ -39,7 +39,7 @@ import {
39
39
  mediaKind,
40
40
  mediaSiteUrl,
41
41
  previewFileSrc
42
- } from "./studio-en82c639.js";
42
+ } from "./studio-sceg8ws0.js";
43
43
  import {
44
44
  REGION_ATTR,
45
45
  paneRegion,
@@ -51,26 +51,26 @@ import {
51
51
  showConfirmDialog2,
52
52
  showPromptDialog2,
53
53
  overlayIdleBlockers2
54
- } from "./studio-ympe0n7a.js";
54
+ } from "./studio-ag3z6shb.js";
55
55
  import {
56
56
  showModal,
57
57
  close2
58
- } from "./studio-p6pmwkvh.js";
58
+ } from "./studio-3nprwbd9.js";
59
59
  import {
60
60
  peekMediaMeta,
61
61
  loadMediaMeta,
62
62
  recordImageSize,
63
63
  formatBytes
64
- } from "./studio-5nz00bhh.js";
64
+ } from "./studio-dwdcr2e8.js";
65
65
  import {
66
66
  shell
67
- } from "./studio-mpzwze9x.js";
67
+ } from "./studio-mfkh1q8d.js";
68
68
  import {
69
69
  registerPanel
70
- } from "./studio-x72j58vw.js";
70
+ } from "./studio-fqpkpq1t.js";
71
71
  import {
72
72
  authenticateGithub
73
- } from "./studio-wjpgxywa.js";
73
+ } from "./studio-sjas5b3a.js";
74
74
  import {
75
75
  beginActivity,
76
76
  activityIdleBlockers,
@@ -78,12 +78,12 @@ import {
78
78
  peekMediaUsages,
79
79
  loadMediaUsages,
80
80
  mediaUsageHeadline
81
- } from "./studio-y4f9fdge.js";
81
+ } from "./studio-4998spet.js";
82
82
  import {
83
83
  canvasIdleBlockers2,
84
84
  canvasPointAt2,
85
85
  revealCanvasPath2
86
- } from "./studio-etvx9s2g.js";
86
+ } from "./studio-mrh0a92f.js";
87
87
  import {
88
88
  gridIdleBlockers
89
89
  } from "./studio-t171hxhe.js";
@@ -737,7 +737,7 @@ function usageOf(usage) {
737
737
  };
738
738
  }
739
739
  async function openDocument(path) {
740
- const { openFileInTab } = await (__preload("msaf95y6"), import("./files-msaf95y6.js"));
740
+ const { openFileInTab } = await (__preload("egsb0ry8"), import("./files-egsb0ry8.js"));
741
741
  await openFileInTab(path);
742
742
  }
743
743
  function renderMediaMode(surface, tab) {
@@ -887,7 +887,7 @@ async function openComparisonTab(path) {
887
887
  if (!canRenderComparison(path)) {
888
888
  return openDiffTab(path);
889
889
  }
890
- const files = await (__preload("msaf95y6"), import("./files-msaf95y6.js"));
890
+ const files = await (__preload("egsb0ry8"), import("./files-egsb0ry8.js"));
891
891
  const opened = await files.openFileInTab(path, {});
892
892
  return opened ?? [...workspace2.tabs.values()].find((tab) => tab.documentPath === path) ?? null;
893
893
  }
@@ -1272,7 +1272,7 @@ async function createGithubRepository({ projectName }) {
1272
1272
  });
1273
1273
  return false;
1274
1274
  }
1275
- const { refreshGitStatus } = await (__preload("bv5e22j0"), import("./git-panel-bv5e22j0.js"));
1275
+ const { refreshGitStatus } = await (__preload("a05atk6q"), import("./git-panel-a05atk6q.js"));
1276
1276
  await refreshGitStatus();
1277
1277
  activity.done(repo.html_url);
1278
1278
  notify2.success(`Repository created: ${repo.html_url}`, { key: "github.repo" });
@@ -1403,9 +1403,9 @@ var AUTOMATION_COMMANDS = {
1403
1403
  },
1404
1404
  "layers.contextMenu": {
1405
1405
  disposition: "refused",
1406
- note: "matched RENDERED TEXT, which §13's R1 forbids; P5.5 stamps data-jx-path on rows"
1406
+ note: "matched RENDERED TEXT, which R1 of scripts/screenshots/README.md forbids; a row is addressed by its data-jx-path"
1407
1407
  },
1408
- "media.browse": { disposition: "command", note: "P7.5 — media.browse" },
1408
+ "media.browse": { disposition: "command", note: "media.browse, site-architecture.md §9.4" },
1409
1409
  "project.showWelcome": {
1410
1410
  disposition: "refused",
1411
1411
  note: "cold start is a startup profile (?profile=fresh), not an action"
@@ -1424,7 +1424,7 @@ var REFUSED_SEEDS = {
1424
1424
  select: 'a user selects a node — run("selection.set", { path })',
1425
1425
  setActivity: 'a user picks a Navigator panel — run("navigator.showPanel", { panel })',
1426
1426
  setRightTab: 'a user picks an Inspector tab — run("inspector.setTab", { tab })',
1427
- setStatus: "the status bar reports what the app just did; staging it is the one lie §13.3 names outright",
1427
+ setStatus: "the status bar reports what the app just did; staging it is the one lie the Remote Rule (studio.md §13.5) names outright",
1428
1428
  setZoom: 'a user zooms — run("canvas.setZoom", { zoom })'
1429
1429
  };
1430
1430
  function arrayArg(args, key) {
@@ -2239,7 +2239,7 @@ var git_panel_default = {
2239
2239
  fontSize: "var(--jx-text-md)",
2240
2240
  color: "var(--fg)",
2241
2241
  '& [part="empty"]': {
2242
- $description: "Drawn here rather than borrowed from `panels/empty-state.ts`, which is a lit template a document cannot call. What is kept is the pattern's rules (§11): one sentence saying what the region is for, then the action that fills it.",
2242
+ $description: "Drawn here rather than borrowed from `panels/empty-state.ts`, which is a lit template a document cannot call. What is kept is the pattern's rules (studio-ui-guidelines.md §11): one sentence saying what the region is for, then the action that fills it.",
2243
2243
  display: "flex",
2244
2244
  flex: "1",
2245
2245
  flexDirection: "column",
@@ -2261,18 +2261,30 @@ var git_panel_default = {
2261
2261
  gap: "var(--jx-space-2)"
2262
2262
  },
2263
2263
  '& [part="sync-bar"]': {
2264
+ $description: 'A wrapping row (studio-ui-guidelines.md §4.6), and it has exactly two items: `sync-head` (Refresh and the status, which never split) and what answers the status (the Fetch/Pull/Push group, or Create GitHub repository with no remote). It was a single line whose only shrinkable item was the status text, so a narrow Navigator never moved a button: it broke "3 behind / Last updated 09:04 AM" into a column one word wide (25px at the 160px floor) and painted "(no" under Create GitHub repository at the default 240px. Now the second item drops to a line of its own when the two no longer fit, and where that happens is decided by the status text\'s own width (a count, a locale\'s clock), never by a breakpoint. The row gap is the smaller step so a wrapped bar reads as one block.',
2264
2265
  display: "flex",
2266
+ flexWrap: "wrap",
2265
2267
  alignItems: "center",
2266
- gap: "var(--jx-space-4)",
2268
+ gap: "var(--jx-space-3) var(--jx-space-4)",
2267
2269
  padding: "var(--jx-space-4)",
2268
2270
  borderBottom: "1px solid var(--border)"
2269
2271
  },
2270
- '& [part="sync-bar"][data-remote="none"]': {
2272
+ '& [part="sync-bar"][data-remote="none"], & [part="sync-bar"][data-remote="none"] > [part="sync-head"]': {
2273
+ $description: "The no-remote bar keeps its tighter 8px between Refresh and the sentence, and on both axes: the head carries that gap now that Refresh and the text sit in it rather than in the bar.",
2271
2274
  gap: "var(--jx-space-3)"
2272
2275
  },
2276
+ '& [part="sync-head"]': {
2277
+ $description: "Refresh and the status, as one item of the bar, so wrapping never leaves the icon alone on a line above its text. `flex: 1 1 auto` makes its basis the status text's own width, which is the wrap threshold; with `min-width: 0` it can then shrink below that when it is alone on a line, and the status wraps as a sentence rather than word by word.",
2278
+ display: "flex",
2279
+ flex: "1 1 auto",
2280
+ alignItems: "center",
2281
+ gap: "var(--jx-space-4)",
2282
+ minWidth: "0"
2283
+ },
2273
2284
  '& [part="sync-text"]': {
2285
+ $description: "`1 1 auto` rather than `1`: the head's basis decides whether the verbs fit beside it, and it should be the status text's own width. An auto basis says that directly; the `0%` basis of `flex: 1` only reaches the same answer through how an engine treats a percentage while it measures.",
2274
2286
  display: "flex",
2275
- flex: "1",
2287
+ flex: "1 1 auto",
2276
2288
  flexDirection: "column",
2277
2289
  gap: "1px",
2278
2290
  minWidth: "0"
@@ -2287,17 +2299,28 @@ var git_panel_default = {
2287
2299
  color: "var(--fg-dim)"
2288
2300
  },
2289
2301
  '& [part="sync-actions"]': {
2302
+ $description: "The verbs never shrink: they are what moves. `margin-left: auto` keeps them at the inline end whether they share the status's line or sit on one of their own.",
2290
2303
  display: "flex",
2291
2304
  flex: "none",
2292
2305
  marginLeft: "auto"
2293
2306
  },
2294
2307
  '& [part="branch-row"]': {
2308
+ $description: 'A wrapping row (studio-ui-guidelines.md §4.6) of two items, `branch-head` and the picker. It was a single line with the picker capped at 40% of it, so a long branch name was cut twice ("chor…" beside "cho…") and a narrow Navigator word-stacked "Active / branch". Now the picker drops below the name when the two no longer fit, at a width the name decides.',
2295
2309
  display: "flex",
2310
+ flexWrap: "wrap",
2296
2311
  alignItems: "center",
2297
- gap: "var(--jx-space-4)",
2312
+ gap: "var(--jx-space-3) var(--jx-space-4)",
2298
2313
  padding: "10px var(--jx-space-4)",
2299
2314
  borderBottom: "1px solid var(--border)"
2300
2315
  },
2316
+ '& [part="branch-head"]': {
2317
+ $description: "The branch icon and the name, as one item so the icon is never alone on a line. The 999:1 grow ratio against the picker gives nearly all spare room to the name while the two share a line, so the picker stays the width of the branch it shows; once the picker wraps, it is alone and takes the whole line. A third item in this row needs its own flex decision.",
2318
+ display: "flex",
2319
+ flex: "999 1 auto",
2320
+ alignItems: "center",
2321
+ gap: "var(--jx-space-4)",
2322
+ minWidth: "0"
2323
+ },
2301
2324
  '& [part="branch-icon"]': {
2302
2325
  $description: "The hand-drawn 18px branch SVG this panel carried is the kit's `git-branch` glyph — the same key `PanelRecord.icon` already names for this panel's rail button, so the two drawings cannot drift.",
2303
2326
  flex: "none",
@@ -2306,7 +2329,7 @@ var git_panel_default = {
2306
2329
  },
2307
2330
  '& [part="branch-text"]': {
2308
2331
  display: "flex",
2309
- flex: "1",
2332
+ flex: "1 1 auto",
2310
2333
  flexDirection: "column",
2311
2334
  gap: "1px",
2312
2335
  minWidth: "0"
@@ -2324,8 +2347,17 @@ var git_panel_default = {
2324
2347
  whiteSpace: "nowrap"
2325
2348
  },
2326
2349
  '& [part="branch-picker"]': {
2327
- flex: "none",
2328
- maxWidth: "40%"
2350
+ $description: "Sized by the branch it shows while it shares the name's line, and the full width of the row once it wraps below it, which is where a long branch name finally reads whole. `min-width: 0` is the kit's own default, restated because studio-ui-guidelines.md §4.6 asks it of every flex child: when even a line of its own is narrower than the name, the picker shrinks and the kit's preview ellipsizes.",
2351
+ flex: "1 1 auto",
2352
+ minWidth: "0"
2353
+ },
2354
+ '& [part="tab"]': {
2355
+ $description: `The sub-tabs may shrink below their labels. A flex item's automatic minimum is its content, and a tab's label is nowrap, so "Local Changes (3)" and "History" held 179px against the 159px the Navigator has at its 160px floor and scrolled the whole panel sideways; the kit's label ellipsis could never engage. \`inspector-dock.json\` makes the same call for its tabs. It is a surface decision and not a kit default because the document tab strip deliberately scrolls instead.`,
2356
+ minWidth: "0"
2357
+ },
2358
+ '& [part="create-repository"] > [part="control"], & [part="init"] > [part="control"], & [part="clone"] > [part="control"], & [part="commit-button"] > [part="control"]': {
2359
+ $description: `The panel's labelled buttons wrap their words at the Navigator's floor instead of overflowing it. The kit's control is nowrap, which is right for a toolbar and made each label a floor of its own: "Create GitHub repository" held 165px in a 135px sync bar, "Clone Git Repository" and "Initialize Repository" held 141px and 135px in the empty state's 127px, and "Commit and sync" beside its menu had about a pixel to spare in the commit form's 135px. Nothing changes where the label fits, because a nowrap label and a wrapping one have the same max-content width. This reaches into the kit's \`control\` part as \`commandbar.json\` does for its primary button.`,
2360
+ whiteSpace: "normal"
2329
2361
  },
2330
2362
  '& [part="commit"]': {
2331
2363
  display: "flex",
@@ -2494,7 +2526,8 @@ var git_panel_default = {
2494
2526
  fontSize: "var(--jx-text-sm)",
2495
2527
  textAlign: "center"
2496
2528
  },
2497
- '& [part="error"]': {
2529
+ '& [part="failure"]': {
2530
+ $description: "The panel's own refusal banner. It is `failure` rather than `error` because the branch picker and the commit field each draw a permanent, empty `[part=\"error\"]` of their own inside this same light-DOM tree: under that name this padding, rule and wash drew a 16×13 box over both fields' top-left corners that took the click, and dressed either field's real refusal sentence as a banner.",
2498
2531
  margin: "0",
2499
2532
  padding: "6px var(--jx-space-3)",
2500
2533
  borderBottom: "1px solid var(--border)",
@@ -2503,7 +2536,7 @@ var git_panel_default = {
2503
2536
  fontSize: "var(--jx-text-sm)"
2504
2537
  },
2505
2538
  "@(forced-colors: active)": {
2506
- '& [part="error"]': {
2539
+ '& [part="failure"]': {
2507
2540
  $description: "The wash behind the banner collapses into the page when every author colour is replaced, so the border is what is left to mark it.",
2508
2541
  border: "1px solid CanvasText",
2509
2542
  color: "CanvasText"
@@ -2734,80 +2767,89 @@ var git_panel_default = {
2734
2767
  "data-remote": "yes"
2735
2768
  },
2736
2769
  children: [
2737
- {
2738
- tagName: "jx-action-button",
2739
- attributes: {
2740
- part: "refresh",
2741
- "data-action": "refresh"
2742
- },
2743
- $props: {
2744
- icon: "arrows-clockwise",
2745
- size: "sm",
2746
- quiet: true,
2747
- label: "Refresh",
2748
- hint: "Refresh",
2749
- disabled: {
2750
- $ref: "#/state/busy"
2751
- }
2752
- },
2753
- onclick: {
2754
- $prototype: "Function",
2755
- body: [
2756
- {
2757
- operator: "call",
2758
- target: {
2759
- $ref: "#/state/refresh"
2760
- },
2761
- value: []
2762
- }
2763
- ]
2764
- }
2765
- },
2766
2770
  {
2767
2771
  tagName: "div",
2768
2772
  attributes: {
2769
- part: "sync-text"
2773
+ part: "sync-head"
2770
2774
  },
2771
2775
  children: [
2772
2776
  {
2773
- tagName: "span",
2777
+ tagName: "jx-action-button",
2774
2778
  attributes: {
2775
- part: "sync-label"
2779
+ part: "refresh",
2780
+ "data-action": "refresh"
2776
2781
  },
2777
- textContent: "${state.syncLabel}"
2782
+ $props: {
2783
+ icon: "arrows-clockwise",
2784
+ size: "sm",
2785
+ quiet: true,
2786
+ label: "Refresh",
2787
+ hint: "Refresh",
2788
+ disabled: {
2789
+ $ref: "#/state/busy"
2790
+ }
2791
+ },
2792
+ onclick: {
2793
+ $prototype: "Function",
2794
+ body: [
2795
+ {
2796
+ operator: "call",
2797
+ target: {
2798
+ $ref: "#/state/refresh"
2799
+ },
2800
+ value: []
2801
+ }
2802
+ ]
2803
+ }
2778
2804
  },
2779
2805
  {
2780
- tagName: "span",
2806
+ tagName: "div",
2781
2807
  attributes: {
2782
- part: "updated-slot",
2783
- role: "none"
2808
+ part: "sync-text"
2784
2809
  },
2785
- style: {
2786
- display: "contents"
2787
- },
2788
- $switch: {
2789
- $ref: "#/state/hasLastUpdated"
2790
- },
2791
- cases: {
2792
- true: {
2810
+ children: [
2811
+ {
2793
2812
  tagName: "span",
2794
2813
  attributes: {
2795
- part: "sync-time"
2814
+ part: "sync-label"
2796
2815
  },
2797
- textContent: "${state.lastUpdated}"
2816
+ textContent: "${state.syncLabel}"
2817
+ },
2818
+ {
2819
+ tagName: "span",
2820
+ attributes: {
2821
+ part: "updated-slot",
2822
+ role: "none"
2823
+ },
2824
+ style: {
2825
+ display: "contents"
2826
+ },
2827
+ $switch: {
2828
+ $ref: "#/state/hasLastUpdated"
2829
+ },
2830
+ cases: {
2831
+ true: {
2832
+ tagName: "span",
2833
+ attributes: {
2834
+ part: "sync-time"
2835
+ },
2836
+ textContent: "${state.lastUpdated}"
2837
+ }
2838
+ }
2798
2839
  }
2799
- }
2840
+ ]
2800
2841
  }
2801
2842
  ]
2802
2843
  },
2803
2844
  {
2845
+ $description: "Three quiet tools, so NOT compact. A compact group draws every member's frame and fill whatever its quiet says, so the `quiet: true` each verb below writes would have been silently framed into a segmented control; Spectrum's group here was quiet and never compact, which is what compact=false and the 2px gap between the verbs restore.",
2804
2846
  tagName: "jx-action-group",
2805
2847
  attributes: {
2806
2848
  part: "sync-actions"
2807
2849
  },
2808
2850
  $props: {
2809
2851
  label: "Remote actions",
2810
- compact: true
2852
+ compact: false
2811
2853
  },
2812
2854
  children: [
2813
2855
  {
@@ -2916,47 +2958,55 @@ var git_panel_default = {
2916
2958
  "data-remote": "none"
2917
2959
  },
2918
2960
  children: [
2919
- {
2920
- tagName: "jx-action-button",
2921
- attributes: {
2922
- part: "refresh",
2923
- "data-action": "refresh"
2924
- },
2925
- $props: {
2926
- icon: "arrows-clockwise",
2927
- size: "sm",
2928
- quiet: true,
2929
- label: "Refresh",
2930
- hint: "Refresh",
2931
- disabled: {
2932
- $ref: "#/state/busy"
2933
- }
2934
- },
2935
- onclick: {
2936
- $prototype: "Function",
2937
- body: [
2938
- {
2939
- operator: "call",
2940
- target: {
2941
- $ref: "#/state/refresh"
2942
- },
2943
- value: []
2944
- }
2945
- ]
2946
- }
2947
- },
2948
2961
  {
2949
2962
  tagName: "div",
2950
2963
  attributes: {
2951
- part: "sync-text"
2964
+ part: "sync-head"
2952
2965
  },
2953
2966
  children: [
2954
2967
  {
2955
- tagName: "span",
2968
+ tagName: "jx-action-button",
2969
+ attributes: {
2970
+ part: "refresh",
2971
+ "data-action": "refresh"
2972
+ },
2973
+ $props: {
2974
+ icon: "arrows-clockwise",
2975
+ size: "sm",
2976
+ quiet: true,
2977
+ label: "Refresh",
2978
+ hint: "Refresh",
2979
+ disabled: {
2980
+ $ref: "#/state/busy"
2981
+ }
2982
+ },
2983
+ onclick: {
2984
+ $prototype: "Function",
2985
+ body: [
2986
+ {
2987
+ operator: "call",
2988
+ target: {
2989
+ $ref: "#/state/refresh"
2990
+ },
2991
+ value: []
2992
+ }
2993
+ ]
2994
+ }
2995
+ },
2996
+ {
2997
+ tagName: "div",
2956
2998
  attributes: {
2957
- part: "sync-label"
2999
+ part: "sync-text"
2958
3000
  },
2959
- textContent: "Local only (no remote)"
3001
+ children: [
3002
+ {
3003
+ tagName: "span",
3004
+ attributes: {
3005
+ part: "sync-label"
3006
+ },
3007
+ textContent: "Local only (no remote)"
3008
+ }
3009
+ ]
2960
3010
  }
2961
3011
  ]
2962
3012
  },
@@ -3007,34 +3057,42 @@ var git_panel_default = {
3007
3057
  part: "branch-row"
3008
3058
  },
3009
3059
  children: [
3010
- {
3011
- tagName: "jx-icon",
3012
- attributes: {
3013
- part: "branch-icon"
3014
- },
3015
- $props: {
3016
- name: "git-branch"
3017
- }
3018
- },
3019
3060
  {
3020
3061
  tagName: "div",
3021
3062
  attributes: {
3022
- part: "branch-text"
3063
+ part: "branch-head"
3023
3064
  },
3024
3065
  children: [
3025
3066
  {
3026
- tagName: "span",
3067
+ tagName: "jx-icon",
3027
3068
  attributes: {
3028
- part: "branch-label"
3069
+ part: "branch-icon"
3029
3070
  },
3030
- textContent: "Active branch"
3071
+ $props: {
3072
+ name: "git-branch"
3073
+ }
3031
3074
  },
3032
3075
  {
3033
- tagName: "span",
3076
+ tagName: "div",
3034
3077
  attributes: {
3035
- part: "branch-name"
3078
+ part: "branch-text"
3036
3079
  },
3037
- textContent: "${state.branchName}"
3080
+ children: [
3081
+ {
3082
+ tagName: "span",
3083
+ attributes: {
3084
+ part: "branch-label"
3085
+ },
3086
+ textContent: "Active branch"
3087
+ },
3088
+ {
3089
+ tagName: "span",
3090
+ attributes: {
3091
+ part: "branch-name"
3092
+ },
3093
+ textContent: "${state.branchName}"
3094
+ }
3095
+ ]
3038
3096
  }
3039
3097
  ]
3040
3098
  },
@@ -4018,7 +4076,7 @@ var git_panel_default = {
4018
4076
  {
4019
4077
  tagName: "div",
4020
4078
  attributes: {
4021
- part: "error-slot",
4079
+ part: "failure-slot",
4022
4080
  role: "none"
4023
4081
  },
4024
4082
  style: {
@@ -4031,7 +4089,7 @@ var git_panel_default = {
4031
4089
  true: {
4032
4090
  tagName: "p",
4033
4091
  attributes: {
4034
- part: "error",
4092
+ part: "failure",
4035
4093
  role: "alert"
4036
4094
  },
4037
4095
  textContent: "${state.error}"
@@ -4505,7 +4563,7 @@ async function discardFile(path) {
4505
4563
  await gitAction("gitDiscard", [path]);
4506
4564
  }
4507
4565
  function openCommitMenu(anchor) {
4508
- (__preload("qht48vnc"), import("./menu-qht48vnc.js")).then(({ openMenu }) => {
4566
+ (__preload("8j4qxjrp"), import("./menu-8j4qxjrp.js")).then(({ openMenu }) => {
4509
4567
  openMenu({
4510
4568
  label: "Commit options",
4511
4569
  opener: anchor,
@@ -4733,6 +4791,7 @@ function registerGitPanel2() {
4733
4791
  registerPanel({
4734
4792
  id: "git",
4735
4793
  title: "Source Control",
4794
+ railLabel: "Source",
4736
4795
  level: "project",
4737
4796
  dock: "navigator",
4738
4797
  icon: "git-branch",
@@ -4746,5 +4805,5 @@ function registerGitPanel2() {
4746
4805
 
4747
4806
  export { hydrateProjectList, getProjectList, shouldInstallAutomation, installAutomationHook, stripRange, isUpgrade, maybePromptJxsuiteUpdate, autoSyncProjectOnOpen, mediaPaneMounted, detachMediaPane, renderMediaMode, isViewableMedia, openMediaTab, canRenderComparison, refreshGitStatus2, noteFileSaved2, cloneRepository2, platformSupportsClone2, loadDiffForLens2, renderGitPanel2, registerSourceControlCommands2, cleanupGitPanel2, registerGitPanel2 };
4748
4807
 
4749
- //# debugId=9BC159B45C360F4964756E2164756E21
4750
- //# sourceMappingURL=studio-vt0tj32j.js.map
4808
+ //# debugId=E3E9B92C7157908A64756E2164756E21
4809
+ //# sourceMappingURL=studio-apv9x70c.js.map
@@ -3,7 +3,7 @@ import {
3
3
  readStoredSetting,
4
4
  setSetting,
5
5
  clearSettings
6
- } from "./studio-z2smx5ce.js";
6
+ } from "./studio-yxmmjy2a.js";
7
7
 
8
8
  // src/services/cf-settings.ts
9
9
  function getCfToken2() {
@@ -25,4 +25,4 @@ function clearCfConnection2() {
25
25
  export { getCfToken2, setCfToken2, getCfAccountId2, setCfAccountId2, clearCfConnection2 };
26
26
 
27
27
  //# debugId=C98948D2A82DEEE164756E2164756E21
28
- //# sourceMappingURL=studio-c04nzbby.js.map
28
+ //# sourceMappingURL=studio-b9q3znz8.js.map
@@ -4,11 +4,11 @@ import {
4
4
  } from "./studio-m1p9b6c3.js";
5
5
  import {
6
6
  isKeyframesAtRule
7
- } from "./studio-p6pmwkvh.js";
7
+ } from "./studio-3nprwbd9.js";
8
8
  import {
9
9
  registerSurface,
10
10
  mountSurface
11
- } from "./studio-ympe0n7a.js";
11
+ } from "./studio-ag3z6shb.js";
12
12
  import {
13
13
  reactive
14
14
  } from "./studio-d8z5bajd.js";
@@ -16,15 +16,15 @@ import {
16
16
  isSpliceablePath,
17
17
  varDisplayName,
18
18
  activeTab2
19
- } from "./studio-ez11dmdh.js";
19
+ } from "./studio-dgdm6vvt.js";
20
20
  import {
21
21
  getEffectiveMedia,
22
22
  getEffectiveStyle,
23
23
  shell
24
- } from "./studio-mpzwze9x.js";
24
+ } from "./studio-mfkh1q8d.js";
25
25
  import {
26
26
  componentRegistry2
27
- } from "./studio-zjjde71a.js";
27
+ } from "./studio-gjj4bbfx.js";
28
28
  import {
29
29
  tabOfPane,
30
30
  mediaDisplayName,
@@ -33,7 +33,7 @@ import {
33
33
  parseMediaEntries,
34
34
  mountStylebookCanvas2,
35
35
  panToStylebookTag2
36
- } from "./studio-etvx9s2g.js";
36
+ } from "./studio-mrh0a92f.js";
37
37
  import {
38
38
  __preload
39
39
  } from "./studio-5te5tqng.js";
@@ -777,7 +777,6 @@ async function renderStylebookMode(surface, ctx) {
777
777
  panelEntries = allPanelDefs.map((def) => ctx.canvasPanelEntry(def.name, `${def.displayName} (${def.width}px)`, false, def.width));
778
778
  }
779
779
  const stage = await ctx.drawStage(surface, {
780
- columnHeader: "hidden",
781
780
  frame: "boards",
782
781
  framePart: "panzoom",
783
782
  frameVars: "--boards-inset:40px",
@@ -981,7 +980,7 @@ function defaultCommands(deps) {
981
980
  enablement: (ctx) => structurallyEditable(ctx) && !ctx.selection.isRepeater,
982
981
  requires: "an element with a sibling position that is not already a repeater",
983
982
  run: () => {
984
- (__preload("mf1cxgfn"), import("./convert-to-repeater-mf1cxgfn.js")).then(({ convertToRepeater }) => convertToRepeater());
983
+ (__preload("vg38bq99"), import("./convert-to-repeater-vg38bq99.js")).then(({ convertToRepeater }) => convertToRepeater());
985
984
  }
986
985
  },
987
986
  {
@@ -1189,5 +1188,5 @@ function inspectorFocusCommands(deps) {
1189
1188
 
1190
1189
  export { transposeStylebookStyle, PROJECT_STYLES_TITLE, PROJECT_STYLES_VIEW, TOKEN_GROUPS, tokenLabel, groupTokens, listTokenContexts, readTokenOverride, writeTokenOverride, addableContexts, stylebook_meta_default, renderStylebookMode, selectStylebookTag, INSPECTOR_TABS, noopCommandDeps, defaultCommands };
1191
1190
 
1192
- //# debugId=10489CF10762040B64756E2164756E21
1193
- //# sourceMappingURL=studio-2mdbbc76.js.map
1191
+ //# debugId=F112C49AF75D9B5C64756E2164756E21
1192
+ //# sourceMappingURL=studio-bh47w0cy.js.map