@deepseek-insight/dsi 0.10.0 → 0.10.2

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 (125) hide show
  1. package/.agents/skills/glass-dsi/scripts/_connect.mjs +68 -9
  2. package/.agents/skills/glass-dsi/scripts/glass.mjs +6 -5
  3. package/.agents/skills/glass-url/scripts/_connect.mjs +59 -10
  4. package/.agents/skills/glass-url/scripts/glass-url.mjs +5 -4
  5. package/README.md +44 -15
  6. package/bin/dsi.mjs +44 -7
  7. package/bin/lib/dev-mode.mjs +8 -5
  8. package/bin/lib/glass-browser-bootstrap.mjs +132 -0
  9. package/bin/lib/mcp-banner.mjs +26 -0
  10. package/bin/lib/zai-patch.mjs +3 -1
  11. package/build/client/_app/immutable/assets/0.B2rul4Mk.css +2 -0
  12. package/build/client/_app/immutable/assets/2.glyfXGzi.css +1 -0
  13. package/build/client/_app/immutable/chunks/{Bu2owQS4.js → BodLd2is.js} +1 -1
  14. package/build/client/_app/immutable/chunks/Cy4hfhN-.js +1 -0
  15. package/build/client/_app/immutable/chunks/D17XAauH.js +2 -0
  16. package/build/client/_app/immutable/chunks/FY34R_78.js +1 -0
  17. package/build/client/_app/immutable/entry/{app.DjLAWmJH.js → app.ClaEF2lH.js} +2 -2
  18. package/build/client/_app/immutable/entry/start.CU6iOT39.js +1 -0
  19. package/build/client/_app/immutable/nodes/{1.w6Hz6-dJ.js → 1.CSTMQTZ7.js} +1 -1
  20. package/build/client/_app/immutable/nodes/{2.CFmqEODJ.js → 2.CdbJFHUF.js} +197 -199
  21. package/build/client/_app/version.json +1 -1
  22. package/build/handler.js +5 -5
  23. package/build/index.js +5 -5
  24. package/build/server/chunks/chunks/{db.js-f2PmBjyD.js → db.js-BGSxIVb3.js} +2 -2
  25. package/build/server/chunks/chunks/{db2.js-DkwY64WO.js → db2.js-vQNFcVO7.js} +2 -2
  26. package/build/server/chunks/chunks/{dsh-connection.js-BW07Aicl.js → dsh-connection.js-Dcdxqp52.js} +27 -7
  27. package/build/server/chunks/chunks/{exports.js-DH_tjtdv.js → exports.js-D5zA1U7A.js} +42 -4
  28. package/build/server/chunks/chunks/{git-probe.js-CQqTV7XX.js → git-probe.js-BIieYqLU.js} +2 -2
  29. package/build/server/chunks/chunks/{insight-config.js-C5-Rhh5A.js → insight-config.js-ylYA2CXm.js} +2 -2
  30. package/build/server/chunks/chunks/{internal2.js-DRFhzPda.js → internal2.js-XxZ8wzRE.js} +3 -3
  31. package/build/server/chunks/chunks/{registry.js-CWnRQ4vx.js → registry.js-ClhrzR6O.js} +145 -56
  32. package/build/server/chunks/chunks/{registry2.js-CFzpvj9c.js → registry2.js-BZfrwsOy.js} +20 -1
  33. package/build/server/chunks/chunks/{settings-document.js-DxKURfc_.js → settings-document.js-BIxaivJ1.js} +23 -8
  34. package/build/server/chunks/chunks/{state.js-kZHonU4N.js → state.js-D5zsYmjz.js} +3 -3
  35. package/build/server/chunks/chunks/{watcher.js-DvlNn8X0.js → watcher.js-Bcm29AuA.js} +4 -4
  36. package/build/server/chunks/entries/endpoints/api/a2a/_id_/{_server.ts.js-DItDXV23.js → _server.ts.js-BbIEpZB5.js} +4 -4
  37. package/build/server/chunks/entries/endpoints/api/a2a/{_server.ts.js-Hor8QZb1.js → _server.ts.js-Daho1I-l.js} +6 -6
  38. package/build/server/chunks/entries/endpoints/api/a2a/register/{_server.ts.js-CEvvsa8B.js → _server.ts.js-C5X77Uef.js} +6 -6
  39. package/build/server/chunks/entries/endpoints/api/browser/_id_/activate/{_server.ts.js-sXqf-okw.js → _server.ts.js-B-Ns5pyR.js} +4 -4
  40. package/build/server/chunks/entries/endpoints/api/browser/_id_/close/{_server.ts.js-Byj9ApJh.js → _server.ts.js-CzXe-sTr.js} +4 -4
  41. package/build/server/chunks/entries/endpoints/api/browser/_id_/closetab/{_server.ts.js-DOIsrzvg.js → _server.ts.js-Ct465_rt.js} +4 -4
  42. package/build/server/chunks/entries/endpoints/api/browser/_id_/element/{_server.ts.js-Cq3gmRfE.js → _server.ts.js-6mdytkvM.js} +4 -4
  43. package/build/server/chunks/entries/endpoints/api/browser/_id_/history/{_server.ts.js-BGSLIV0t.js → _server.ts.js-BwUPVQGx.js} +4 -4
  44. package/build/server/chunks/entries/endpoints/api/browser/_id_/input/{_server.ts.js-8slca75-.js → _server.ts.js-8Nq3JxSo.js} +4 -4
  45. package/build/server/chunks/entries/endpoints/api/browser/_id_/mcp/{_server.ts.js-CpbdTYds.js → _server.ts.js-B9eKtj1-.js} +4 -4
  46. package/build/server/chunks/entries/endpoints/api/browser/_id_/navigate/{_server.ts.js-Bls9LtLY.js → _server.ts.js-CHJs9Qbl.js} +4 -4
  47. package/build/server/chunks/entries/endpoints/api/browser/_id_/opentab/{_server.ts.js-DqNi_iW_.js → _server.ts.js-B32Ow0Y2.js} +4 -4
  48. package/build/server/chunks/entries/endpoints/api/browser/_id_/page/{_server.ts.js-DuXWwo7i.js → _server.ts.js-Cpv4BolN.js} +4 -4
  49. package/build/server/chunks/entries/endpoints/api/browser/_id_/stream/{_server.ts.js-DXfqBDEw.js → _server.ts.js-DJqJImSI.js} +4 -4
  50. package/build/server/chunks/entries/endpoints/api/browser/_id_/tabs/{_server.ts.js-Bgnl8lYs.js → _server.ts.js-Bm6IAZF6.js} +4 -4
  51. package/build/server/chunks/entries/endpoints/api/browser/_id_/viewport/{_server.ts.js-FHmQVbrv.js → _server.ts.js-B1VVzfCk.js} +4 -4
  52. package/build/server/chunks/entries/endpoints/api/browser/_id_/zoom/{_server.ts.js-BV4cBtSA.js → _server.ts.js-CoUpqHeq.js} +4 -4
  53. package/build/server/chunks/entries/endpoints/api/browser/{_server.ts.js-4vgkwh7v.js → _server.ts.js-D9hK0CG8.js} +8 -5
  54. package/build/server/chunks/entries/endpoints/api/config/{_server.ts.js-C_9kwANR.js → _server.ts.js-DqPIv-gn.js} +4 -4
  55. package/build/server/chunks/entries/endpoints/api/dsh/directory/{_server.ts.js-h1OTHcL4.js → _server.ts.js-DzFVVhO_.js} +4 -4
  56. package/build/server/chunks/entries/endpoints/api/dsh/jobs/{_server.ts.js-B6nih9Sd.js → _server.ts.js-DvuZUgbK.js} +4 -4
  57. package/build/server/chunks/entries/endpoints/api/dsh/jobs/follow/{_server.ts.js-Cf17SVmD.js → _server.ts.js-D6brRlYZ.js} +4 -4
  58. package/build/server/chunks/entries/endpoints/api/dsh/pick-directory/{_server.ts.js-DjNwMbdS.js → _server.ts.js-8nNlcikK.js} +4 -4
  59. package/build/server/chunks/entries/endpoints/api/dsh/presets/{_server.ts.js-Cz5aaEhC.js → _server.ts.js-C8AZBt63.js} +4 -4
  60. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/attachment/{_server.ts.js-BFBy5O9Y.js → _server.ts.js-BFfr6uJh.js} +4 -4
  61. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/cancel/{_server.ts.js-CgEdCo3T.js → _server.ts.js-DSSgbD87.js} +4 -4
  62. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/catalog/{_server.ts.js-Bo_aEnHh.js → _server.ts.js-DYtrYC2P.js} +4 -4
  63. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/changes/{_server.ts.js-Bd2G_GaH.js → _server.ts.js-HxI5M4jg.js} +4 -4
  64. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/command/{_server.ts.js-DL64FyRw.js → _server.ts.js-Ch0dMm33.js} +4 -4
  65. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/events/{_server.ts.js-MhOGB66D.js → _server.ts.js-BG5C--Ok.js} +4 -4
  66. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/fork/{_server.ts.js-MjPgXgGO.js → _server.ts.js-B64YyaFI.js} +4 -4
  67. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/goal/{_server.ts.js-BUjDae5H.js → _server.ts.js-0RtL-9Zr.js} +4 -4
  68. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/history/{_server.ts.js-dTKd7Hsv.js → _server.ts.js-C4k-RTIw.js} +4 -4
  69. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/models/{_server.ts.js-B82rvKoI.js → _server.ts.js-CU38DxMt.js} +4 -4
  70. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/path/{_server.ts.js-Cqijsi-c.js → _server.ts.js-BXphf5ux.js} +3 -3
  71. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/permission/{_server.ts.js-CL_vVv2p.js → _server.ts.js-DQ5FG9Pc.js} +4 -4
  72. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/prompt/{_server.ts.js-WS4W9Ly4.js → _server.ts.js-In3bXhUO.js} +4 -4
  73. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/rename/{_server.ts.js-B72KGRGh.js → _server.ts.js-Bd0KF8Qm.js} +4 -4
  74. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/respond/{_server.ts.js-DK5xb2b5.js → _server.ts.js-4Y-KAw2r.js} +4 -4
  75. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/select-model/{_server.ts.js-lhT87EQu.js → _server.ts.js-zXYA1AJD.js} +4 -4
  76. package/build/server/chunks/entries/endpoints/api/dsh/sessions/{_server.ts.js-CMhfhbkN.js → _server.ts.js-vh7lFV0n.js} +4 -4
  77. package/build/server/chunks/entries/endpoints/api/dsh/subagents/{_server.ts.js-BLvcFsg6.js → _server.ts.js-DH7OEWm0.js} +4 -4
  78. package/build/server/chunks/entries/endpoints/api/dsh/workspace-file/{_server.ts.js-D_rw2Uq6.js → _server.ts.js-CDwgBp7D.js} +4 -4
  79. package/build/server/chunks/entries/endpoints/api/dsh/workspace-tree/{_server.ts.js-DfXpMMpw.js → _server.ts.js-CtFxC_yV.js} +4 -4
  80. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/{_server.ts.js-2mJCJVxk.js → _server.ts.js-DRNzGdAj.js} +4 -4
  81. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/delete/{_server.ts.js-BCx0Lzjf.js → _server.ts.js-DIjNfN0d.js} +4 -4
  82. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/rename/{_server.ts.js-DECaSjwp.js → _server.ts.js-CtV7JhrK.js} +4 -4
  83. package/build/server/chunks/entries/endpoints/api/prompts/_id_/{_server.ts.js-i_ciJzlb.js → _server.ts.js-Cg9zHbUP.js} +4 -4
  84. package/build/server/chunks/entries/endpoints/api/prompts/{_server.ts.js-BO1pScn7.js → _server.ts.js-DOHmlKvl.js} +4 -4
  85. package/build/server/chunks/entries/endpoints/api/prompts/use/{_server.ts.js-Buhpf7WE.js → _server.ts.js-COVyy224.js} +4 -4
  86. package/build/server/chunks/entries/endpoints/api/settings/{_server.ts.js-DngUQzcT.js → _server.ts.js-HjpfRAaT.js} +3 -3
  87. package/build/server/chunks/entries/endpoints/api/terminal/_id_/delete/_server.ts.js-D9UU6xR6.js +42 -0
  88. package/build/server/chunks/entries/endpoints/api/terminal/_id_/output/{_server.ts.js-DLETP4yQ.js → _server.ts.js-BqJRMRsb.js} +2 -2
  89. package/build/server/chunks/entries/endpoints/api/terminal/_id_/reattach/{_server.ts.js-uWl6oxPS.js → _server.ts.js-D6bMXeOk.js} +2 -2
  90. package/build/server/chunks/entries/endpoints/api/terminal/_id_/send/{_server.ts.js-DYNmXaAd.js → _server.ts.js-BRgsqPFM.js} +2 -2
  91. package/build/server/chunks/entries/endpoints/api/terminal/_id_/stream/{_server.ts.js-C5m3Ktho.js → _server.ts.js-EWo4sSmg.js} +2 -2
  92. package/build/server/chunks/entries/endpoints/api/terminal/{_server.ts.js-DoTNvcOa.js → _server.ts.js-v1ixRdpN.js} +4 -4
  93. package/build/server/chunks/entries/endpoints/api/terminal/stream/_server.ts.js-BQOQyT7o.js +185 -0
  94. package/build/server/chunks/entries/endpoints/api/workspace/file-write/{_server.ts.js-BzYOJSkI.js → _server.ts.js-CjU6bLOf.js} +5 -5
  95. package/build/server/chunks/entries/endpoints/api/workspace/git-events/{_server.ts.js-xcNesei9.js → _server.ts.js-CYU0btiH.js} +5 -5
  96. package/build/server/chunks/entries/endpoints/api/workspace/git-file-head/{_server.ts.js-DsJWYdxt.js → _server.ts.js-Du9YcwLw.js} +5 -5
  97. package/build/server/chunks/entries/endpoints/api/workspace/git-map/{_server.ts.js-CNCku9BR.js → _server.ts.js-BdV_KDjb.js} +5 -5
  98. package/build/server/chunks/entries/endpoints/api/workspace/git-status/{_server.ts.js-nLsNjOxj.js → _server.ts.js-C-C84Yzu.js} +5 -5
  99. package/build/server/chunks/entries/endpoints/api/workspace/write-gate/{_server.ts.js-urQk2-ds.js → _server.ts.js-D9uFvZya.js} +5 -5
  100. package/build/server/chunks/entries/{hooks.server.js-CU2RE5vs.js → hooks.server.js-YJQlamhk.js} +2 -2
  101. package/build/server/chunks/entries/pages/{_error.svelte.js-BKhpJygh.js → _error.svelte.js-TrOSxb0e.js} +4 -4
  102. package/build/server/chunks/entries/pages/{_page.server.ts.js-BK3Y6eff.js → _page.server.ts.js-BFDPRDEm.js} +2 -2
  103. package/build/server/chunks/entries/pages/{_page.svelte.js-BlbGdGej.js → _page.svelte.js-BUuXoaje.js} +706 -158
  104. package/build/server/chunks/{handler-BtG6aVza.js → handler-BOqY82LA.js} +3 -3
  105. package/build/server/chunks/{index.js-rGfUdWOY.js → index.js-M1GginY2.js} +3 -44
  106. package/build/server/chunks/{manifest.js-DwQ7BEt1.js → manifest.js-BEmwisii.js} +81 -67
  107. package/build/server/chunks/nodes/{0.js-Cum-Y-us.js → 0.js-Do4ZKaKe.js} +3 -3
  108. package/build/server/chunks/nodes/1.js-CRbdbfof.js +9 -0
  109. package/build/server/chunks/nodes/{2.js-ButkUErW.js → 2.js-BFX_zPfJ.js} +8 -8
  110. package/package.json +1 -1
  111. package/skills/dsi-drive-terminal/SKILL.md +23 -1
  112. package/skills/dsi-spec/SKILL.md +8 -0
  113. package/skills/dsi-task/SKILL.md +34 -0
  114. package/skills/dsi-token-spent/SKILL.md +122 -0
  115. package/template/.dsi/prompts.sqlite +0 -0
  116. package/template/.dsi/prompts.sqlite-shm +0 -0
  117. package/template/.dsi/prompts.sqlite-wal +0 -0
  118. package/build/client/_app/immutable/assets/0.uhYTRapi.css +0 -2
  119. package/build/client/_app/immutable/assets/2.D0QOh44D.css +0 -1
  120. package/build/client/_app/immutable/chunks/0Uk2rkmL.js +0 -1
  121. package/build/client/_app/immutable/chunks/BaH6C3xD.js +0 -2
  122. package/build/client/_app/immutable/chunks/DXba8Dom.js +0 -1
  123. package/build/client/_app/immutable/entry/start.D-t6KuoK.js +0 -1
  124. package/build/server/chunks/nodes/1.js-D0EwPqp_.js +0 -9
  125. /package/build/client/_app/immutable/nodes/{0.DeDuCaDD.js → 0.CYP0vr1_.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { a as __exportAll, o as onDestroy } from '../../chunks/index-server.js-CPkVoRxB.js';
2
- import '../../chunks/exports.js-DH_tjtdv.js';
2
+ import '../../chunks/exports.js-D5zA1U7A.js';
3
3
  import { M as derived, V as head, T as writable, X as attr, W as escape_html, Y as ensure_array_like, Z as attr_class, _ as attr_style, $ as stringify, a0 as bind_props, a as setContext, a1 as store_get, a2 as spread_props, a3 as attributes, a4 as clsx, a5 as element, g as getContext, a6 as unsubscribe_stores, a7 as html, r as run, a8 as props_id } from '../../chunks/server.js-Dijo7DtV.js';
4
4
  import { U as UI_LOCALES } from '../../chunks/config.js-r_jw_bQQ.js';
5
5
  import { m as mergeEntries, c as collapseSystemPromptEntries, t as truncate } from '../../chunks/merge.js-yMwW440S.js';
@@ -9,7 +9,7 @@ import { D as DEFAULT_IMAGE_LIMITS } from '../../chunks/image-limits.js-CUdJ0f7r
9
9
  import { s as sanitizeWorkspaceProfile, d as dsiKey, t as themePrefs } from '../../chunks/theme-prefs.svelte.js-8CaWz46g.js';
10
10
  import { a as appConfig, p as previewSegments, b as parseTagWords, i as isValidTagWord, s as shouldRecordPrompt, g as getTrigger, t as triggerMode, c as searchKey, d as textPreviewOf } from '../../chunks/app-config.svelte.js-BXjvTmJu.js';
11
11
  import { c as getLocale } from '../../chunks/runtime.js-CCJi3XaY.js';
12
- import { p as page, a as afterNavigate, t, c as currentLocale, e as replaceState, u as unexpectederror1, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, b as backtoworkspace2 } from '../../chunks/state.js-kZHonU4N.js';
12
+ import { p as page, a as afterNavigate, t, c as currentLocale, e as replaceState, u as unexpectederror1, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, b as backtoworkspace2 } from '../../chunks/state.js-D5zsYmjz.js';
13
13
  import 'yaml';
14
14
  import 'html-to-image';
15
15
  import hljs from 'highlight.js/lib/core';
@@ -21,7 +21,7 @@ import xml from 'highlight.js/lib/languages/xml';
21
21
  import css from 'highlight.js/lib/languages/css';
22
22
  import '../../chunks/uneval.js-BJ9Qq2SF.js';
23
23
  import '../../chunks/shared.js-HQ0rfhm4.js';
24
- import '../../chunks/internal2.js-DRFhzPda.js';
24
+ import '../../chunks/internal2.js-XxZ8wzRE.js';
25
25
  import '../../chunks/utils.js-CAdNO8Tu.js';
26
26
 
27
27
  //#region src/lib/paraglide/messages/abort.js
@@ -924,21 +924,21 @@ var browserback1 = ((inputs = {}, options = {}) => {
924
924
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
925
925
  /** @typedef {{}} Browserchiplabel2Inputs */
926
926
  var en_browserchiplabel2 = () => {
927
- return `⌖ Browser`;
927
+ return `Browser`;
928
928
  };
929
929
  var zh_browserchiplabel2 = () => {
930
- return `⌖ 浏览器`;
930
+ return `浏览器`;
931
931
  };
932
932
  var id_browserchiplabel2 = () => {
933
- return `⌖ Peramban`;
933
+ return `Peramban`;
934
934
  };
935
935
  var es_browserchiplabel2 = () => {
936
- return `⌖ Navegador`;
936
+ return `Navegador`;
937
937
  };
938
938
  /**
939
939
  * | output |
940
940
  * | --- |
941
- * | "⌖ Browser" |
941
+ * | "Browser" |
942
942
  *
943
943
  * @param {Browserchiplabel2Inputs} inputs
944
944
  * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
@@ -952,6 +952,70 @@ var browserchiplabel2 = ((inputs = {}, options = {}) => {
952
952
  return en_browserchiplabel2();
953
953
  });
954
954
  //#endregion
955
+ //#region src/lib/paraglide/messages/browserclonefallback2.js
956
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
957
+ /** @typedef {{}} Browserclonefallback2Inputs */
958
+ var en_browserclonefallback2 = () => {
959
+ return `Couldn't clone your profile — opening a clean glass instead`;
960
+ };
961
+ var zh_browserclonefallback2 = () => {
962
+ return `无法克隆你的配置 — 改用干净的 glass 打开`;
963
+ };
964
+ var id_browserclonefallback2 = () => {
965
+ return `Gagal mengkloning profil — membuka glass bersih sebagai gantinya`;
966
+ };
967
+ var es_browserclonefallback2 = () => {
968
+ return `No se pudo clonar tu perfil — se abre un glass limpio en su lugar`;
969
+ };
970
+ /**
971
+ * | output |
972
+ * | --- |
973
+ * | "Couldn't clone your profile — opening a clean glass instead" |
974
+ *
975
+ * @param {Browserclonefallback2Inputs} inputs
976
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
977
+ * @returns {LocalizedString}
978
+ */
979
+ var browserclonefallback2 = ((inputs = {}, options = {}) => {
980
+ const locale = options.locale ?? getLocale();
981
+ if (locale === "zh") return zh_browserclonefallback2();
982
+ if (locale === "id") return id_browserclonefallback2();
983
+ if (locale === "es") return es_browserclonefallback2();
984
+ return en_browserclonefallback2();
985
+ });
986
+ //#endregion
987
+ //#region src/lib/paraglide/messages/browserclonehint2.js
988
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
989
+ /** @typedef {{}} Browserclonehint2Inputs */
990
+ var en_browserclonehint2 = () => {
991
+ return `Cloning your last-used Chrome profile…`;
992
+ };
993
+ var zh_browserclonehint2 = () => {
994
+ return `正在克隆你最近使用的 Chrome 配置…`;
995
+ };
996
+ var id_browserclonehint2 = () => {
997
+ return `Mengkloning profil Chrome yang terakhir dipakai…`;
998
+ };
999
+ var es_browserclonehint2 = () => {
1000
+ return `Clonando tu perfil de Chrome más reciente…`;
1001
+ };
1002
+ /**
1003
+ * | output |
1004
+ * | --- |
1005
+ * | "Cloning your last-used Chrome profile…" |
1006
+ *
1007
+ * @param {Browserclonehint2Inputs} inputs
1008
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
1009
+ * @returns {LocalizedString}
1010
+ */
1011
+ var browserclonehint2 = ((inputs = {}, options = {}) => {
1012
+ const locale = options.locale ?? getLocale();
1013
+ if (locale === "zh") return zh_browserclonehint2();
1014
+ if (locale === "id") return id_browserclonehint2();
1015
+ if (locale === "es") return es_browserclonehint2();
1016
+ return en_browserclonehint2();
1017
+ });
1018
+ //#endregion
955
1019
  //#region src/lib/paraglide/messages/browserclosedelete2.js
956
1020
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
957
1021
  /** @typedef {{}} Browserclosedelete2Inputs */
@@ -984,6 +1048,70 @@ var browserclosedelete2 = ((inputs = {}, options = {}) => {
984
1048
  return en_browserclosedelete2();
985
1049
  });
986
1050
  //#endregion
1051
+ //#region src/lib/paraglide/messages/browsercopied1.js
1052
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
1053
+ /** @typedef {{}} Browsercopied1Inputs */
1054
+ var en_browsercopied1 = () => {
1055
+ return `Copied`;
1056
+ };
1057
+ var zh_browsercopied1 = () => {
1058
+ return `已复制`;
1059
+ };
1060
+ var id_browsercopied1 = () => {
1061
+ return `Tersalin`;
1062
+ };
1063
+ var es_browsercopied1 = () => {
1064
+ return `Copiado`;
1065
+ };
1066
+ /**
1067
+ * | output |
1068
+ * | --- |
1069
+ * | "Copied" |
1070
+ *
1071
+ * @param {Browsercopied1Inputs} inputs
1072
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
1073
+ * @returns {LocalizedString}
1074
+ */
1075
+ var browsercopied1 = ((inputs = {}, options = {}) => {
1076
+ const locale = options.locale ?? getLocale();
1077
+ if (locale === "zh") return zh_browsercopied1();
1078
+ if (locale === "id") return id_browsercopied1();
1079
+ if (locale === "es") return es_browsercopied1();
1080
+ return en_browsercopied1();
1081
+ });
1082
+ //#endregion
1083
+ //#region src/lib/paraglide/messages/browsercopyurl2.js
1084
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
1085
+ /** @typedef {{}} Browsercopyurl2Inputs */
1086
+ var en_browsercopyurl2 = () => {
1087
+ return `Copy focused tab URL`;
1088
+ };
1089
+ var zh_browsercopyurl2 = () => {
1090
+ return `复制当前标签页 URL`;
1091
+ };
1092
+ var id_browsercopyurl2 = () => {
1093
+ return `Salin URL tab yang difokus`;
1094
+ };
1095
+ var es_browsercopyurl2 = () => {
1096
+ return `Copiar la URL de la pestaña enfocada`;
1097
+ };
1098
+ /**
1099
+ * | output |
1100
+ * | --- |
1101
+ * | "Copy focused tab URL" |
1102
+ *
1103
+ * @param {Browsercopyurl2Inputs} inputs
1104
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
1105
+ * @returns {LocalizedString}
1106
+ */
1107
+ var browsercopyurl2 = ((inputs = {}, options = {}) => {
1108
+ const locale = options.locale ?? getLocale();
1109
+ if (locale === "zh") return zh_browsercopyurl2();
1110
+ if (locale === "id") return id_browsercopyurl2();
1111
+ if (locale === "es") return es_browsercopyurl2();
1112
+ return en_browsercopyurl2();
1113
+ });
1114
+ //#endregion
987
1115
  //#region src/lib/paraglide/messages/browserctxcopyimage3.js
988
1116
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
989
1117
  /** @typedef {{}} Browserctxcopyimage3Inputs */
@@ -1176,6 +1304,38 @@ var browserforward1 = ((inputs = {}, options = {}) => {
1176
1304
  return en_browserforward1();
1177
1305
  });
1178
1306
  //#endregion
1307
+ //#region src/lib/paraglide/messages/browserheadedhint2.js
1308
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
1309
+ /** @typedef {{}} Browserheadedhint2Inputs */
1310
+ var en_browserheadedhint2 = () => {
1311
+ return `Shift opens a HEADED glass - a visible window on a disposable profile`;
1312
+ };
1313
+ var zh_browserheadedhint2 = () => {
1314
+ return `Shift opens a HEADED glass - a visible window on a disposable profile`;
1315
+ };
1316
+ var id_browserheadedhint2 = () => {
1317
+ return `Shift opens a HEADED glass - a visible window on a disposable profile`;
1318
+ };
1319
+ var es_browserheadedhint2 = () => {
1320
+ return `Shift opens a HEADED glass - a visible window on a disposable profile`;
1321
+ };
1322
+ /**
1323
+ * | output |
1324
+ * | --- |
1325
+ * | "Shift opens a HEADED glass - a visible window on a disposable profile" |
1326
+ *
1327
+ * @param {Browserheadedhint2Inputs} inputs
1328
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
1329
+ * @returns {LocalizedString}
1330
+ */
1331
+ var browserheadedhint2 = ((inputs = {}, options = {}) => {
1332
+ const locale = options.locale ?? getLocale();
1333
+ if (locale === "zh") return zh_browserheadedhint2();
1334
+ if (locale === "id") return id_browserheadedhint2();
1335
+ if (locale === "es") return es_browserheadedhint2();
1336
+ return en_browserheadedhint2();
1337
+ });
1338
+ //#endregion
1179
1339
  //#region src/lib/paraglide/messages/browserlaunching1.js
1180
1340
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
1181
1341
  /** @typedef {{}} Browserlaunching1Inputs */
@@ -1754,66 +1914,162 @@ var choosefolder1 = ((inputs = {}, options = {}) => {
1754
1914
  //#endregion
1755
1915
  //#region src/lib/paraglide/messages/chordarmedlabel2.js
1756
1916
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
1757
- /** @typedef {{}} Chordarmedlabel2Inputs */
1758
- var en_chordarmedlabel2 = () => {
1759
- return `Alt+S chord armed — next key`;
1917
+ /** @typedef {{ prefix: NonNullable<unknown> }} Chordarmedlabel2Inputs */
1918
+ var en_chordarmedlabel2 = (i) => {
1919
+ return `Alt+${i?.prefix} chord armed — next key`;
1760
1920
  };
1761
- var zh_chordarmedlabel2 = () => {
1762
- return `Alt+S 组合键已就绪 — 下一个按键`;
1921
+ var zh_chordarmedlabel2 = (i) => {
1922
+ return `Alt+${i?.prefix} 组合键已就绪 — 下一个按键`;
1763
1923
  };
1764
- var id_chordarmedlabel2 = () => {
1765
- return `Kord Alt+S armed — tombol berikutnya`;
1924
+ var id_chordarmedlabel2 = (i) => {
1925
+ return `Kord Alt+${i?.prefix} armed — tombol berikutnya`;
1766
1926
  };
1767
- var es_chordarmedlabel2 = () => {
1768
- return `Acordo Alt+S armado — siguiente tecla`;
1927
+ var es_chordarmedlabel2 = (i) => {
1928
+ return `Acordo Alt+${i?.prefix} armado — siguiente tecla`;
1769
1929
  };
1770
1930
  /**
1771
1931
  * | output |
1772
1932
  * | --- |
1773
- * | "Alt+S chord armed — next key" |
1933
+ * | "Alt+{prefix} chord armed — next key" |
1774
1934
  *
1775
1935
  * @param {Chordarmedlabel2Inputs} inputs
1776
1936
  * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
1777
1937
  * @returns {LocalizedString}
1778
1938
  */
1779
- var chordarmedlabel2 = ((inputs = {}, options = {}) => {
1939
+ var chordarmedlabel2 = ((inputs, options = {}) => {
1780
1940
  const locale = options.locale ?? getLocale();
1781
- if (locale === "zh") return zh_chordarmedlabel2();
1782
- if (locale === "id") return id_chordarmedlabel2();
1783
- if (locale === "es") return es_chordarmedlabel2();
1784
- return en_chordarmedlabel2();
1941
+ if (locale === "zh") return zh_chordarmedlabel2(inputs);
1942
+ if (locale === "id") return id_chordarmedlabel2(inputs);
1943
+ if (locale === "es") return es_chordarmedlabel2(inputs);
1944
+ return en_chordarmedlabel2(inputs);
1785
1945
  });
1786
1946
  //#endregion
1787
1947
  //#region src/lib/paraglide/messages/chordarmedtitle2.js
1788
1948
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
1789
- /** @typedef {{}} Chordarmedtitle2Inputs */
1790
- var en_chordarmedtitle2 = () => {
1791
- return `Alt+S armed`;
1949
+ /** @typedef {{ prefix: NonNullable<unknown> }} Chordarmedtitle2Inputs */
1950
+ var en_chordarmedtitle2 = (i) => {
1951
+ return `Alt+${i?.prefix} armed`;
1792
1952
  };
1793
- var zh_chordarmedtitle2 = () => {
1794
- return `Alt+S 已就绪`;
1953
+ var zh_chordarmedtitle2 = (i) => {
1954
+ return `Alt+${i?.prefix} 已就绪`;
1795
1955
  };
1796
- var id_chordarmedtitle2 = () => {
1797
- return `Alt+S diarmed`;
1956
+ var id_chordarmedtitle2 = (i) => {
1957
+ return `Alt+${i?.prefix} diarmed`;
1798
1958
  };
1799
- var es_chordarmedtitle2 = () => {
1800
- return `Alt+S armado`;
1959
+ var es_chordarmedtitle2 = (i) => {
1960
+ return `Alt+${i?.prefix} armado`;
1801
1961
  };
1802
1962
  /**
1803
1963
  * | output |
1804
1964
  * | --- |
1805
- * | "Alt+S armed" |
1965
+ * | "Alt+{prefix} armed" |
1806
1966
  *
1807
1967
  * @param {Chordarmedtitle2Inputs} inputs
1808
1968
  * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
1809
1969
  * @returns {LocalizedString}
1810
1970
  */
1811
- var chordarmedtitle2 = ((inputs = {}, options = {}) => {
1971
+ var chordarmedtitle2 = ((inputs, options = {}) => {
1812
1972
  const locale = options.locale ?? getLocale();
1813
- if (locale === "zh") return zh_chordarmedtitle2();
1814
- if (locale === "id") return id_chordarmedtitle2();
1815
- if (locale === "es") return es_chordarmedtitle2();
1816
- return en_chordarmedtitle2();
1973
+ if (locale === "zh") return zh_chordarmedtitle2(inputs);
1974
+ if (locale === "id") return id_chordarmedtitle2(inputs);
1975
+ if (locale === "es") return es_chordarmedtitle2(inputs);
1976
+ return en_chordarmedtitle2(inputs);
1977
+ });
1978
+ //#endregion
1979
+ //#region src/lib/paraglide/messages/chordterminalclear2.js
1980
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
1981
+ /** @typedef {{}} Chordterminalclear2Inputs */
1982
+ var en_chordterminalclear2 = () => {
1983
+ return `Clear current terminal tab (kill + prune)`;
1984
+ };
1985
+ var zh_chordterminalclear2 = () => {
1986
+ return `清除当前终端标签页(终止并修剪)`;
1987
+ };
1988
+ var id_chordterminalclear2 = () => {
1989
+ return `Bersihkan tab terminal saat ini (matikan + pangkas)`;
1990
+ };
1991
+ var es_chordterminalclear2 = () => {
1992
+ return `Limpiar la pestaña de terminal actual (matar y podar)`;
1993
+ };
1994
+ /**
1995
+ * | output |
1996
+ * | --- |
1997
+ * | "Clear current terminal tab (kill + prune)" |
1998
+ *
1999
+ * @param {Chordterminalclear2Inputs} inputs
2000
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
2001
+ * @returns {LocalizedString}
2002
+ */
2003
+ var chordterminalclear2 = ((inputs = {}, options = {}) => {
2004
+ const locale = options.locale ?? getLocale();
2005
+ if (locale === "zh") return zh_chordterminalclear2();
2006
+ if (locale === "id") return id_chordterminalclear2();
2007
+ if (locale === "es") return es_chordterminalclear2();
2008
+ return en_chordterminalclear2();
2009
+ });
2010
+ //#endregion
2011
+ //#region src/lib/paraglide/messages/chordterminalnewtab3.js
2012
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
2013
+ /** @typedef {{}} Chordterminalnewtab3Inputs */
2014
+ var en_chordterminalnewtab3 = () => {
2015
+ return `New terminal tab`;
2016
+ };
2017
+ var zh_chordterminalnewtab3 = () => {
2018
+ return `新建终端标签页`;
2019
+ };
2020
+ var id_chordterminalnewtab3 = () => {
2021
+ return `Tab terminal baru`;
2022
+ };
2023
+ var es_chordterminalnewtab3 = () => {
2024
+ return `Nueva pestaña de terminal`;
2025
+ };
2026
+ /**
2027
+ * | output |
2028
+ * | --- |
2029
+ * | "New terminal tab" |
2030
+ *
2031
+ * @param {Chordterminalnewtab3Inputs} inputs
2032
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
2033
+ * @returns {LocalizedString}
2034
+ */
2035
+ var chordterminalnewtab3 = ((inputs = {}, options = {}) => {
2036
+ const locale = options.locale ?? getLocale();
2037
+ if (locale === "zh") return zh_chordterminalnewtab3();
2038
+ if (locale === "id") return id_chordterminalnewtab3();
2039
+ if (locale === "es") return es_chordterminalnewtab3();
2040
+ return en_chordterminalnewtab3();
2041
+ });
2042
+ //#endregion
2043
+ //#region src/lib/paraglide/messages/chordterminalsplitdown3.js
2044
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
2045
+ /** @typedef {{}} Chordterminalsplitdown3Inputs */
2046
+ var en_chordterminalsplitdown3 = () => {
2047
+ return `Split down current terminal tab`;
2048
+ };
2049
+ var zh_chordterminalsplitdown3 = () => {
2050
+ return `向下拆分当前终端标签页`;
2051
+ };
2052
+ var id_chordterminalsplitdown3 = () => {
2053
+ return `Pisahkan ke bawah tab terminal saat ini`;
2054
+ };
2055
+ var es_chordterminalsplitdown3 = () => {
2056
+ return `Dividir hacia abajo la pestaña de terminal actual`;
2057
+ };
2058
+ /**
2059
+ * | output |
2060
+ * | --- |
2061
+ * | "Split down current terminal tab" |
2062
+ *
2063
+ * @param {Chordterminalsplitdown3Inputs} inputs
2064
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
2065
+ * @returns {LocalizedString}
2066
+ */
2067
+ var chordterminalsplitdown3 = ((inputs = {}, options = {}) => {
2068
+ const locale = options.locale ?? getLocale();
2069
+ if (locale === "zh") return zh_chordterminalsplitdown3();
2070
+ if (locale === "id") return id_chordterminalsplitdown3();
2071
+ if (locale === "es") return es_chordterminalsplitdown3();
2072
+ return en_chordterminalsplitdown3();
1817
2073
  });
1818
2074
  //#endregion
1819
2075
  //#region src/lib/paraglide/messages/clearbtn1.js
@@ -7612,21 +7868,21 @@ var movepanelup2 = ((inputs = {}, options = {}) => {
7612
7868
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
7613
7869
  /** @typedef {{}} Needagent1Inputs */
7614
7870
  var en_needagent1 = () => {
7615
- return `You cannot chat unless you select an Agent (+ Workspace)`;
7871
+ return `You cannot chat unless you select an Agent`;
7616
7872
  };
7617
7873
  var zh_needagent1 = () => {
7618
- return `必须先选择代理(+ 工作区)才能聊天`;
7874
+ return `必须先选择代理才能聊天`;
7619
7875
  };
7620
7876
  var id_needagent1 = () => {
7621
- return `Anda tidak bisa chat kecuali memilih Agent (+ Workspace)`;
7877
+ return `Anda tidak bisa chat kecuali memilih Agent`;
7622
7878
  };
7623
7879
  var es_needagent1 = () => {
7624
- return `No puedes chatear sin seleccionar un Agente (+ Workspace)`;
7880
+ return `No puedes chatear sin seleccionar un Agente`;
7625
7881
  };
7626
7882
  /**
7627
7883
  * | output |
7628
7884
  * | --- |
7629
- * | "You cannot chat unless you select an Agent (+ Workspace)" |
7885
+ * | "You cannot chat unless you select an Agent" |
7630
7886
  *
7631
7887
  * @param {Needagent1Inputs} inputs
7632
7888
  * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
@@ -9592,6 +9848,38 @@ var plusadd1 = ((inputs = {}, options = {}) => {
9592
9848
  return en_plusadd1();
9593
9849
  });
9594
9850
  //#endregion
9851
+ //#region src/lib/paraglide/messages/plusworkspace1.js
9852
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
9853
+ /** @typedef {{}} Plusworkspace1Inputs */
9854
+ var en_plusworkspace1 = () => {
9855
+ return `(+ Workspace)`;
9856
+ };
9857
+ var zh_plusworkspace1 = () => {
9858
+ return `(+ 工作区)`;
9859
+ };
9860
+ var id_plusworkspace1 = () => {
9861
+ return `(+ Workspace)`;
9862
+ };
9863
+ var es_plusworkspace1 = () => {
9864
+ return `(+ Workspace)`;
9865
+ };
9866
+ /**
9867
+ * | output |
9868
+ * | --- |
9869
+ * | "(+ Workspace)" |
9870
+ *
9871
+ * @param {Plusworkspace1Inputs} inputs
9872
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
9873
+ * @returns {LocalizedString}
9874
+ */
9875
+ var plusworkspace1 = ((inputs = {}, options = {}) => {
9876
+ const locale = options.locale ?? getLocale();
9877
+ if (locale === "zh") return zh_plusworkspace1();
9878
+ if (locale === "id") return id_plusworkspace1();
9879
+ if (locale === "es") return es_plusworkspace1();
9880
+ return en_plusworkspace1();
9881
+ });
9882
+ //#endregion
9595
9883
  //#region src/lib/paraglide/messages/presetcustom1.js
9596
9884
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
9597
9885
  /** @typedef {{}} Presetcustom1Inputs */
@@ -13208,6 +13496,38 @@ var terminaldisabled1 = ((inputs = {}, options = {}) => {
13208
13496
  return en_terminaldisabled1();
13209
13497
  });
13210
13498
  //#endregion
13499
+ //#region src/lib/paraglide/messages/terminalfontslider2.js
13500
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
13501
+ /** @typedef {{}} Terminalfontslider2Inputs */
13502
+ var en_terminalfontslider2 = () => {
13503
+ return `terminal font size`;
13504
+ };
13505
+ var zh_terminalfontslider2 = () => {
13506
+ return `终端字号`;
13507
+ };
13508
+ var id_terminalfontslider2 = () => {
13509
+ return `ukuran font terminal`;
13510
+ };
13511
+ var es_terminalfontslider2 = () => {
13512
+ return `tamaño de fuente de la terminal`;
13513
+ };
13514
+ /**
13515
+ * | output |
13516
+ * | --- |
13517
+ * | "terminal font size" |
13518
+ *
13519
+ * @param {Terminalfontslider2Inputs} inputs
13520
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
13521
+ * @returns {LocalizedString}
13522
+ */
13523
+ var terminalfontslider2 = ((inputs = {}, options = {}) => {
13524
+ const locale = options.locale ?? getLocale();
13525
+ if (locale === "zh") return zh_terminalfontslider2();
13526
+ if (locale === "id") return id_terminalfontslider2();
13527
+ if (locale === "es") return es_terminalfontslider2();
13528
+ return en_terminalfontslider2();
13529
+ });
13530
+ //#endregion
13211
13531
  //#region src/lib/paraglide/messages/terminalopening1.js
13212
13532
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
13213
13533
  /** @typedef {{}} Terminalopening1Inputs */
@@ -15864,13 +16184,18 @@ var _index_exports = /* @__PURE__ */ __exportAll({
15864
16184
  broadcastSyncedTo: () => broadcastsyncedto2,
15865
16185
  browserBack: () => browserback1,
15866
16186
  browserChipLabel: () => browserchiplabel2,
16187
+ browserCloneFallback: () => browserclonefallback2,
16188
+ browserCloneHint: () => browserclonehint2,
15867
16189
  browserCloseDelete: () => browserclosedelete2,
16190
+ browserCopied: () => browsercopied1,
16191
+ browserCopyUrl: () => browsercopyurl2,
15868
16192
  browserCtxCopyImage: () => browserctxcopyimage3,
15869
16193
  browserCtxCopyLink: () => browserctxcopylink3,
15870
16194
  browserCtxOpenImage: () => browserctxopenimage3,
15871
16195
  browserCtxOpenLink: () => browserctxopenlink3,
15872
16196
  browserCtxSendRightClick: () => browserctxsendrightclick4,
15873
16197
  browserForward: () => browserforward1,
16198
+ browserHeadedHint: () => browserheadedhint2,
15874
16199
  browserLaunching: () => browserlaunching1,
15875
16200
  browserNewTab: () => browsernewtab2,
15876
16201
  browserOpenTitle: () => browseropentitle2,
@@ -15891,6 +16216,9 @@ var _index_exports = /* @__PURE__ */ __exportAll({
15891
16216
  chooseFolder: () => choosefolder1,
15892
16217
  chordArmedLabel: () => chordarmedlabel2,
15893
16218
  chordArmedTitle: () => chordarmedtitle2,
16219
+ chordTerminalClear: () => chordterminalclear2,
16220
+ chordTerminalNewTab: () => chordterminalnewtab3,
16221
+ chordTerminalSplitDown: () => chordterminalsplitdown3,
15894
16222
  clearBtn: () => clearbtn1,
15895
16223
  clearDateFilter: () => cleardatefilter2,
15896
16224
  clearFilter: () => clearfilter1,
@@ -16135,6 +16463,7 @@ var _index_exports = /* @__PURE__ */ __exportAll({
16135
16463
  pluginRackUninstall: () => pluginrackuninstall2,
16136
16464
  pluginRackUninstallEmpty: () => pluginrackuninstallempty3,
16137
16465
  plusAdd: () => plusadd1,
16466
+ plusWorkspace: () => plusworkspace1,
16138
16467
  presetCustom: () => presetcustom1,
16139
16468
  presetFullAccess: () => presetfullaccess2,
16140
16469
  presetFullAccessDesc: () => presetfullaccessdesc3,
@@ -16250,6 +16579,7 @@ var _index_exports = /* @__PURE__ */ __exportAll({
16250
16579
  tags: () => tags,
16251
16580
  terminalClosed: () => terminalclosed1,
16252
16581
  terminalDisabled: () => terminaldisabled1,
16582
+ terminalFontSlider: () => terminalfontslider2,
16253
16583
  terminalOpening: () => terminalopening1,
16254
16584
  terminalPanelTitle: () => terminalpaneltitle2,
16255
16585
  terminalSessionCap: () => terminalsessioncap2,
@@ -16367,13 +16697,18 @@ var messages_exports = /* @__PURE__ */ __exportAll({
16367
16697
  broadcastSyncedTo: () => broadcastsyncedto2,
16368
16698
  browserBack: () => browserback1,
16369
16699
  browserChipLabel: () => browserchiplabel2,
16700
+ browserCloneFallback: () => browserclonefallback2,
16701
+ browserCloneHint: () => browserclonehint2,
16370
16702
  browserCloseDelete: () => browserclosedelete2,
16703
+ browserCopied: () => browsercopied1,
16704
+ browserCopyUrl: () => browsercopyurl2,
16371
16705
  browserCtxCopyImage: () => browserctxcopyimage3,
16372
16706
  browserCtxCopyLink: () => browserctxcopylink3,
16373
16707
  browserCtxOpenImage: () => browserctxopenimage3,
16374
16708
  browserCtxOpenLink: () => browserctxopenlink3,
16375
16709
  browserCtxSendRightClick: () => browserctxsendrightclick4,
16376
16710
  browserForward: () => browserforward1,
16711
+ browserHeadedHint: () => browserheadedhint2,
16377
16712
  browserLaunching: () => browserlaunching1,
16378
16713
  browserNewTab: () => browsernewtab2,
16379
16714
  browserOpenTitle: () => browseropentitle2,
@@ -16394,6 +16729,9 @@ var messages_exports = /* @__PURE__ */ __exportAll({
16394
16729
  chooseFolder: () => choosefolder1,
16395
16730
  chordArmedLabel: () => chordarmedlabel2,
16396
16731
  chordArmedTitle: () => chordarmedtitle2,
16732
+ chordTerminalClear: () => chordterminalclear2,
16733
+ chordTerminalNewTab: () => chordterminalnewtab3,
16734
+ chordTerminalSplitDown: () => chordterminalsplitdown3,
16397
16735
  clearBtn: () => clearbtn1,
16398
16736
  clearDateFilter: () => cleardatefilter2,
16399
16737
  clearFilter: () => clearfilter1,
@@ -16639,6 +16977,7 @@ var messages_exports = /* @__PURE__ */ __exportAll({
16639
16977
  pluginRackUninstall: () => pluginrackuninstall2,
16640
16978
  pluginRackUninstallEmpty: () => pluginrackuninstallempty3,
16641
16979
  plusAdd: () => plusadd1,
16980
+ plusWorkspace: () => plusworkspace1,
16642
16981
  presetCustom: () => presetcustom1,
16643
16982
  presetFullAccess: () => presetfullaccess2,
16644
16983
  presetFullAccessDesc: () => presetfullaccessdesc3,
@@ -16754,6 +17093,7 @@ var messages_exports = /* @__PURE__ */ __exportAll({
16754
17093
  tags: () => tags,
16755
17094
  terminalClosed: () => terminalclosed1,
16756
17095
  terminalDisabled: () => terminaldisabled1,
17096
+ terminalFontSlider: () => terminalfontslider2,
16757
17097
  terminalOpening: () => terminalopening1,
16758
17098
  terminalPanelTitle: () => terminalpaneltitle2,
16759
17099
  terminalSessionCap: () => terminalsessioncap2,
@@ -17311,6 +17651,24 @@ function Git_branch($$renderer, $$props) {
17311
17651
  ]));
17312
17652
  }
17313
17653
  //#endregion
17654
+ //#region node_modules/.pnpm/@lucide+svelte@1.35.0_svelte@5.56.10/node_modules/@lucide/svelte/dist/icons/globe.svelte
17655
+ function Globe($$renderer, $$props) {
17656
+ let { $$slots, $$events, ...props } = $$props;
17657
+ Icon($$renderer, spread_props([
17658
+ { name: "globe" },
17659
+ props,
17660
+ { iconNode: [
17661
+ ["circle", {
17662
+ "cx": "12",
17663
+ "cy": "12",
17664
+ "r": "10"
17665
+ }],
17666
+ ["path", { "d": "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" }],
17667
+ ["path", { "d": "M2 12h20" }]
17668
+ ] }
17669
+ ]));
17670
+ }
17671
+ //#endregion
17314
17672
  //#region node_modules/.pnpm/@lucide+svelte@1.35.0_svelte@5.56.10/node_modules/@lucide/svelte/dist/icons/hourglass.svelte
17315
17673
  function Hourglass($$renderer, $$props) {
17316
17674
  let { $$slots, $$events, ...props } = $$props;
@@ -18422,6 +18780,54 @@ function WorkspaceChip($$renderer, $$props) {
18422
18780
  $$renderer.push(`<!--]--></span>`);
18423
18781
  }
18424
18782
  //#endregion
18783
+ //#region src/lib/components/common/buttons/AgentChip.svelte
18784
+ function AgentChip($$renderer, $$props) {
18785
+ $$renderer.component(($$renderer) => {
18786
+ /**
18787
+ * AgentChip — ONE owner of the agent-pill identity (ADR, 2026-11-06):
18788
+ * the Bot/purple pill that means "this is agent X" on every surface.
18789
+ * Shape, the AA-tuned color-mixes (rest 5.25:1, selected white
18790
+ * 5.34:1), icon-never-shrinks and label-ellipsis-only live HERE,
18791
+ * exactly once — previously re-declared in SessionFilterHeader,
18792
+ * ToolsAndStatusHeader and Agents.svelte.
18793
+ *
18794
+ * Span mode (default) is display-only — the filter summary chip and
18795
+ * the conversation header chip; it must stay a span when nested in
18796
+ * a button (no button-in-button). interactive renders a real
18797
+ * <button> with aria-pressed — the Agents filter pill; hover/on
18798
+ * states carry the 2026-08-23 :not(.on) guards so rest and selected
18799
+ * rule sets stay disjoint.
18800
+ *
18801
+ * Call sites keep their own testids, titles and layout; only the
18802
+ * identity is owned here.
18803
+ */
18804
+ let { label, count = null, interactive = false, selected = false, title, testid, size = "chip", maxWidth } = $$props;
18805
+ if (interactive) {
18806
+ $$renderer.push("<!--[0-->");
18807
+ $$renderer.push(`<button data-svelte="AgentChip" type="button"${attr_class(`agent-chip ${stringify(size)}`, "svelte-whh0kl", { "on": selected })}${attr("aria-pressed", selected)}${attr("title", title)}${attr("data-testid", testid)}${attr_style("", { "max-width": maxWidth })}>`);
18808
+ Bot($$renderer, {
18809
+ size: 12,
18810
+ "aria-hidden": "true"
18811
+ });
18812
+ $$renderer.push(`<!----> <span class="label svelte-whh0kl">${escape_html(label)}</span>`);
18813
+ if (count !== null) {
18814
+ $$renderer.push("<!--[0-->");
18815
+ $$renderer.push(`<span class="count svelte-whh0kl">${escape_html(count)}</span>`);
18816
+ } else $$renderer.push("<!--[-1-->");
18817
+ $$renderer.push(`<!--]--></button>`);
18818
+ } else {
18819
+ $$renderer.push("<!--[-1-->");
18820
+ $$renderer.push(`<span data-svelte="AgentChip"${attr_class(`agent-chip ${stringify(size)}`, "svelte-whh0kl")}${attr("title", title)}${attr("data-testid", testid)}${attr_style("", { "max-width": maxWidth })}>`);
18821
+ Bot($$renderer, {
18822
+ size: size === "compact" ? 10 : 12,
18823
+ "aria-hidden": "true"
18824
+ });
18825
+ $$renderer.push(`<!----> <span class="label svelte-whh0kl">${escape_html(label)}</span></span>`);
18826
+ }
18827
+ $$renderer.push(`<!--]-->`);
18828
+ });
18829
+ }
18830
+ //#endregion
18425
18831
  //#region src/lib/services/jobs/roster-store.svelte.ts
18426
18832
  function isLiveJob(job) {
18427
18833
  return job.status === "running" || job.status === "stopping";
@@ -18668,6 +19074,39 @@ function JobRosterList($$renderer, $$props) {
18668
19074
  });
18669
19075
  }
18670
19076
  //#endregion
19077
+ //#region src/lib/components/composer/SelectionAlert.svelte
19078
+ function SelectionAlert($$renderer, $$props) {
19079
+ $$renderer.component(($$renderer) => {
19080
+ /**
19081
+ * SelectionAlert — the shared missing-selection alert (2026-11-08
19082
+ * refactor): one component serves both hosts of the NewChatButton
19083
+ * alert (inline in NewChatButton, hosted in SidebarFooter). The
19084
+ * message renders as TWO sibling spans — the i18n sentence
19085
+ * (m.needAgent) and the parenthetical (m.plusWorkspace) — with the
19086
+ * parenthetical non-breaking (whitespace-nowrap), so narrow widths
19087
+ * wrap BETWEEN the spans and never cut inside "(+ Workspace)".
19088
+ *
19089
+ * Carries its own × dismiss (the PanelHeader close grammar): closing
19090
+ * only hides the message — the next unarmed click re-raises it.
19091
+ * Call sites keep their testids via `testid`; `inset` drops the
19092
+ * bottom margin for hosts that space the alert row themselves
19093
+ * (the footer's .footer-create gap).
19094
+ */
19095
+ let { alert = false, testid = "new-chat-selection-alert", inset = false } = $$props;
19096
+ if (alert) {
19097
+ $$renderer.push("<!--[0-->");
19098
+ $$renderer.push(`<p data-svelte="SelectionAlert"${attr("data-testid", testid)}${attr_class("flex w-full items-start justify-between gap-2 text-xs text-status-pending", void 0, { "mb-1": !inset })} role="alert"><span class="min-w-0 flex-1"><span>${escape_html(t(needagent1))}</span> <span class="whitespace-nowrap">${escape_html(t(plusworkspace1))}</span></span> <button type="button" class="shrink-0 rounded p-0.5 leading-none text-status-pending hover:bg-status-pending/20 hover:text-status-pending"${attr("data-testid", `${testid}-close`)}${attr("aria-label", t(dismissalert1))}${attr("title", t(dismiss))}>`);
19099
+ X($$renderer, {
19100
+ size: 11,
19101
+ "aria-hidden": "true"
19102
+ });
19103
+ $$renderer.push(`<!----></button></p>`);
19104
+ } else $$renderer.push("<!--[-1-->");
19105
+ $$renderer.push(`<!--]-->`);
19106
+ bind_props($$props, { alert });
19107
+ });
19108
+ }
19109
+ //#endregion
18671
19110
  //#region src/lib/components/composer/NewChatButton.svelte
18672
19111
  function NewChatButton($$renderer, $$props) {
18673
19112
  $$renderer.component(($$renderer) => {
@@ -18702,34 +19141,47 @@ function NewChatButton($$renderer, $$props) {
18702
19141
  /** Verb mode (2026-08-31): false = Add (default, never persisted),
18703
19142
  * true = Replace. Session-local by design — every load starts Add. */
18704
19143
  let replaceMode = false;
18705
- $$renderer.push(`<div data-svelte="NewChatButton" class="flex w-full flex-col items-start">`);
18706
- if (alert && alertInline) {
18707
- $$renderer.push("<!--[0-->");
18708
- $$renderer.push(`<p data-testid="new-chat-selection-alert" class="mb-1 flex w-full items-center justify-between gap-2 text-xs text-status-pending" role="alert"><span>${escape_html(t(needagent1))}</span> <button type="button" class="shrink-0 rounded p-0.5 leading-none text-status-pending hover:bg-status-pending/20 hover:text-status-pending" data-testid="new-chat-selection-alert-close"${attr("aria-label", t(dismissalert1))}${attr("title", t(dismiss))}>`);
18709
- X($$renderer, {
18710
- size: 11,
18711
- "aria-hidden": "true"
18712
- });
18713
- $$renderer.push(`<!----></button></p>`);
18714
- } else $$renderer.push("<!--[-1-->");
18715
- $$renderer.push(`<!--]--> `);
18716
- $$renderer.push("<!--[-1-->");
18717
- $$renderer.push(`<!--]--> <div${attr_class(clsx(compact ? "flex w-full items-stretch gap-2" : "inline-flex items-stretch gap-2"))}><button type="button" data-testid="new-chat-button"${attr_class(clsx(compact ? "new-chat min-w-0 flex-1 px-3 py-1.5 text-xs font-medium" : "new-chat px-3 py-1.5 text-sm font-medium"), "svelte-kdd6rb")}${attr("disabled", creating, true)}>${escape_html(t(newchat1))}</button> `);
18718
- if (onreplace !== null) {
18719
- $$renderer.push("<!--[0-->");
18720
- $$renderer.push(`<div class="seg-group svelte-kdd6rb" role="group"${attr("aria-label", t(chatbuttonmode2))} data-testid="chat-mode-toggle"><button type="button"${attr_class("seg left svelte-kdd6rb", void 0, { "on": true })}${attr("disabled", creating, true)}${attr("aria-pressed", true)}${attr("title", t(addnextchataspanel4))} data-testid="chat-mode-add">`);
18721
- Plus($$renderer, {
18722
- size: 12,
18723
- "aria-hidden": "true"
18724
- });
18725
- $$renderer.push(`<!----></button> <button type="button"${attr_class("seg right svelte-kdd6rb", void 0, { "on": replaceMode })}${attr("disabled", creating, true)}${attr("aria-pressed", replaceMode)}${attr("title", t(replacefocusedpanel2))} data-testid="chat-mode-replace">`);
18726
- Replace($$renderer, {
18727
- size: 12,
18728
- "aria-hidden": "true"
18729
- });
18730
- $$renderer.push(`<!----></button></div>`);
18731
- } else $$renderer.push("<!--[-1-->");
18732
- $$renderer.push(`<!--]--></div></div>`);
19144
+ let $$settled = true;
19145
+ let $$inner_renderer;
19146
+ function $$render_inner($$renderer) {
19147
+ $$renderer.push(`<div data-svelte="NewChatButton" class="flex w-full flex-col items-start">`);
19148
+ if (alertInline) {
19149
+ $$renderer.push("<!--[0-->");
19150
+ SelectionAlert($$renderer, {
19151
+ get alert() {
19152
+ return alert;
19153
+ },
19154
+ set alert($$value) {
19155
+ alert = $$value;
19156
+ $$settled = false;
19157
+ }
19158
+ });
19159
+ } else $$renderer.push("<!--[-1-->");
19160
+ $$renderer.push(`<!--]--> `);
19161
+ $$renderer.push("<!--[-1-->");
19162
+ $$renderer.push(`<!--]--> <div${attr_class(clsx(compact ? "flex w-full items-stretch gap-2" : "inline-flex items-stretch gap-2"))}><button type="button" data-testid="new-chat-button"${attr_class(clsx(compact ? "new-chat min-w-0 flex-1 px-3 py-1.5 text-xs font-medium" : "new-chat px-3 py-1.5 text-sm font-medium"), "svelte-kdd6rb")}${attr("disabled", creating, true)}>${escape_html(t(newchat1))}</button> `);
19163
+ if (onreplace !== null) {
19164
+ $$renderer.push("<!--[0-->");
19165
+ $$renderer.push(`<div class="seg-group svelte-kdd6rb" role="group"${attr("aria-label", t(chatbuttonmode2))} data-testid="chat-mode-toggle"><button type="button"${attr_class("seg left svelte-kdd6rb", void 0, { "on": true })}${attr("disabled", creating, true)}${attr("aria-pressed", true)}${attr("title", t(addnextchataspanel4))} data-testid="chat-mode-add">`);
19166
+ Plus($$renderer, {
19167
+ size: 12,
19168
+ "aria-hidden": "true"
19169
+ });
19170
+ $$renderer.push(`<!----></button> <button type="button"${attr_class("seg right svelte-kdd6rb", void 0, { "on": replaceMode })}${attr("disabled", creating, true)}${attr("aria-pressed", replaceMode)}${attr("title", t(replacefocusedpanel2))} data-testid="chat-mode-replace">`);
19171
+ Replace($$renderer, {
19172
+ size: 12,
19173
+ "aria-hidden": "true"
19174
+ });
19175
+ $$renderer.push(`<!----></button></div>`);
19176
+ } else $$renderer.push("<!--[-1-->");
19177
+ $$renderer.push(`<!--]--></div></div>`);
19178
+ }
19179
+ do {
19180
+ $$settled = true;
19181
+ $$inner_renderer = $$renderer.copy();
19182
+ $$render_inner($$inner_renderer);
19183
+ } while (!$$settled);
19184
+ $$renderer.subsume($$inner_renderer);
18733
19185
  bind_props($$props, { alert });
18734
19186
  });
18735
19187
  }
@@ -18768,7 +19220,7 @@ function ThemeToggle($$renderer, $$props) {
18768
19220
  }
18769
19221
  //#endregion
18770
19222
  //#region package.json
18771
- var version = "0.10.0";
19223
+ var version = "0.10.2";
18772
19224
  var dsh = { "webVersion": "0.2.2-rc.1" };
18773
19225
  //#endregion
18774
19226
  //#region src/lib/version.ts
@@ -19781,53 +20233,39 @@ function SidebarPromptSync($$renderer, $$props) {
19781
20233
  //#endregion
19782
20234
  //#region src/lib/components/sessions/SidebarFooter.svelte
19783
20235
  function SidebarFooter($$renderer, $$props) {
19784
- $$renderer.component(($$renderer) => {
19785
- /**
19786
- * SidebarFooter — the sidebar's bottom strip under the session spine
19787
- * (extracted from SessionsList, 2026-09-04): the broadcast box
19788
- * (SidebarPromptSync, ADR "The Prompt Sync" — owns its own visibility,
19789
- * renders nothing unchecked) above the "+ New chat" button, armed with
19790
- * the filter pills' selection so a create rides the armed dimensions.
19791
- * The create row opens with the version chip (v{APP_VERSION},
19792
- * 2026-09-07) — the running edition reads where new chats start —
19793
- * (The circled-A About trigger moved to AppSidebarHeader's prefix,
19794
- * 2026-09 — its dialog still portals to document.body, BC-7.)
19795
- * Purely presentational: create logic, the creating lock, the
19796
- * Add/Replace verb toggle, and the alerts stay in NewChatButton; this
19797
- * shell carries the resolved selection and reports writes upward
19798
- * (oncreated / onreplace). Styles are self-contained — the parent's
19799
- * scoped rules cannot reach this component's DOM, so the border-top
19800
- * frame travels with it.
19801
- */
19802
- /** The NewChatButton's missing-selection alert, HOSTED here: rendered
19803
- * as footer-create's FIRST child so it spans the full row (version +
19804
- * button + language menu wrap beneath) instead of squeezing into the
19805
- * button's slot between the version chip and the language menu. */
19806
- let createAlert = false;
19807
- let { preset, workspace, oncreated, onreplace } = $$props;
19808
- let $$settled = true;
19809
- let $$inner_renderer;
19810
- function $$render_inner($$renderer) {
19811
- $$renderer.push(`<div data-svelte="SidebarFooter" class="footer svelte-x4ykdr">`);
19812
- SidebarPromptSync($$renderer);
19813
- $$renderer.push(`<!----> <div class="footer-create svelte-x4ykdr">`);
19814
- if (createAlert) {
19815
- $$renderer.push("<!--[0-->");
19816
- $$renderer.push(`<p data-testid="new-chat-selection-alert" class="footer-create-alert svelte-x4ykdr" role="alert"><span>${escape_html(t(needagent1))}</span> <button type="button" class="footer-create-alert-close svelte-x4ykdr" data-testid="new-chat-selection-alert-close"${attr("aria-label", t(dismissalert1))}${attr("title", t(dismiss))}>`);
19817
- X($$renderer, {
19818
- size: 11,
19819
- "aria-hidden": "true"
19820
- });
19821
- $$renderer.push(`<!----></button></p>`);
19822
- } else $$renderer.push("<!--[-1-->");
19823
- $$renderer.push(`<!--]--> <div class="footer-create-strip svelte-x4ykdr"><span class="footer-version svelte-x4ykdr" data-testid="sidebar-footer-version"><span>v${escape_html(APP_VERSION)}</span> <span>v${escape_html(DSH_VERSION)}</span></span> `);
19824
- NewChatButton($$renderer, {
19825
- compact: true,
19826
- agent: preset,
19827
- workspace,
19828
- oncreated,
19829
- onreplace,
19830
- alertInline: false,
20236
+ /**
20237
+ * SidebarFooter — the sidebar's bottom strip under the session spine
20238
+ * (extracted from SessionsList, 2026-09-04): the broadcast box
20239
+ * (SidebarPromptSync, ADR "The Prompt Sync" — owns its own visibility,
20240
+ * renders nothing unchecked) above the "+ New chat" button, armed with
20241
+ * the filter pills' selection so a create rides the armed dimensions.
20242
+ * The create row opens with the version chip (v{APP_VERSION},
20243
+ * 2026-09-07) — the running edition reads where new chats start —
20244
+ * (The circled-A About trigger moved to AppSidebarHeader's prefix,
20245
+ * 2026-09 — its dialog still portals to document.body, BC-7.)
20246
+ * Purely presentational: create logic, the creating lock, the
20247
+ * Add/Replace verb toggle, and the alerts stay in NewChatButton; this
20248
+ * shell carries the resolved selection and reports writes upward
20249
+ * (oncreated / onreplace). Styles are self-contained — the parent's
20250
+ * scoped rules cannot reach this component's DOM, so the border-top
20251
+ * frame travels with it.
20252
+ */
20253
+ /** The NewChatButton's missing-selection alert, HOSTED here: rendered
20254
+ * as footer-create's FIRST child so it spans the full row (version +
20255
+ * button + language menu wrap beneath) instead of squeezing into the
20256
+ * button's slot between the version chip and the language menu. */
20257
+ let createAlert = false;
20258
+ let { preset, workspace, oncreated, onreplace } = $$props;
20259
+ let $$settled = true;
20260
+ let $$inner_renderer;
20261
+ function $$render_inner($$renderer) {
20262
+ $$renderer.push(`<div data-svelte="SidebarFooter" class="footer svelte-x4ykdr">`);
20263
+ SidebarPromptSync($$renderer);
20264
+ $$renderer.push(`<!----> <div class="footer-create svelte-x4ykdr">`);
20265
+ if (createAlert) {
20266
+ $$renderer.push("<!--[0-->");
20267
+ SelectionAlert($$renderer, {
20268
+ inset: true,
19831
20269
  get alert() {
19832
20270
  return createAlert;
19833
20271
  },
@@ -19836,19 +20274,35 @@ function SidebarFooter($$renderer, $$props) {
19836
20274
  $$settled = false;
19837
20275
  }
19838
20276
  });
19839
- $$renderer.push(`<!----> `);
19840
- ThemeToggle($$renderer);
19841
- $$renderer.push(`<!----> `);
19842
- LanguageMenu($$renderer);
19843
- $$renderer.push(`<!----></div></div></div>`);
19844
- }
19845
- do {
19846
- $$settled = true;
19847
- $$inner_renderer = $$renderer.copy();
19848
- $$render_inner($$inner_renderer);
19849
- } while (!$$settled);
19850
- $$renderer.subsume($$inner_renderer);
19851
- });
20277
+ } else $$renderer.push("<!--[-1-->");
20278
+ $$renderer.push(`<!--]--> <div class="footer-create-strip svelte-x4ykdr"><span class="footer-version svelte-x4ykdr" data-testid="sidebar-footer-version"><span>v${escape_html(APP_VERSION)}</span> <span>v${escape_html(DSH_VERSION)}</span></span> `);
20279
+ NewChatButton($$renderer, {
20280
+ compact: true,
20281
+ agent: preset,
20282
+ workspace,
20283
+ oncreated,
20284
+ onreplace,
20285
+ alertInline: false,
20286
+ get alert() {
20287
+ return createAlert;
20288
+ },
20289
+ set alert($$value) {
20290
+ createAlert = $$value;
20291
+ $$settled = false;
20292
+ }
20293
+ });
20294
+ $$renderer.push(`<!----> `);
20295
+ ThemeToggle($$renderer);
20296
+ $$renderer.push(`<!----> `);
20297
+ LanguageMenu($$renderer);
20298
+ $$renderer.push(`<!----></div></div></div>`);
20299
+ }
20300
+ do {
20301
+ $$settled = true;
20302
+ $$inner_renderer = $$renderer.copy();
20303
+ $$render_inner($$inner_renderer);
20304
+ } while (!$$settled);
20305
+ $$renderer.subsume($$inner_renderer);
19852
20306
  }
19853
20307
  //#endregion
19854
20308
  //#region src/lib/components/sessions/SessionsList.svelte
@@ -20136,6 +20590,13 @@ function panelPrefsKey(profile) {
20136
20590
  return dsiKey(PANEL_PREFS_KEY, profile);
20137
20591
  }
20138
20592
  var PANEL_WORKSPACE_FILE_MAX_WIDTH = 1436;
20593
+ /** The single terminal-font bound site — load-side sanitizing and the
20594
+ * TermFontSlider both route through here; junk (non-finite) falls back
20595
+ * to TERM_FONT_DEFAULT. Mirrors clampTreePct's discipline. */
20596
+ function clampTermFontSize(px) {
20597
+ if (typeof px !== "number" || !Number.isFinite(px)) return 12;
20598
+ return Math.max(8, Math.min(20, Math.round(px)));
20599
+ }
20139
20600
  /** The single treePct bound site — sanitize a stored or dragged value
20140
20601
  * into [TREE_PCT_MIN, TREE_PCT_MAX]; junk (non-finite) falls back to
20141
20602
  * TREE_PCT_DEFAULT. Mirrors clampPanelZoom's discipline. */
@@ -20245,7 +20706,8 @@ function defaultPanelPrefs() {
20245
20706
  panelWidth: defaultPanelWidth(),
20246
20707
  zoom: 1,
20247
20708
  treePct: 30,
20248
- explorerHidden: false
20709
+ explorerHidden: false,
20710
+ termFontSize: 12
20249
20711
  };
20250
20712
  }
20251
20713
  /**
@@ -20417,13 +20879,15 @@ function loadPanelPrefs(profile) {
20417
20879
  const zoom = typeof parsed.zoom === "number" && Number.isFinite(parsed.zoom) ? clampPanelZoom(parsed.zoom) : 1;
20418
20880
  const treePct = typeof parsed.treePct === "number" && Number.isFinite(parsed.treePct) ? clampTreePct(parsed.treePct) : 30;
20419
20881
  const explorerHidden = parsed.explorerHidden === true;
20882
+ const termFontSize = typeof parsed.termFontSize === "number" && Number.isFinite(parsed.termFontSize) ? clampTermFontSize(parsed.termFontSize) : 12;
20420
20883
  return {
20421
20884
  panels,
20422
20885
  selectedPanelId: typeof parsed.selectedPanelId === "string" && panels.some((panel) => panel.id === parsed.selectedPanelId) ? parsed.selectedPanelId : panels[0]?.id ?? null,
20423
20886
  panelWidth,
20424
20887
  zoom,
20425
20888
  treePct,
20426
- explorerHidden
20889
+ explorerHidden,
20890
+ termFontSize
20427
20891
  };
20428
20892
  } catch {
20429
20893
  return defaultPanelPrefs();
@@ -20735,6 +21199,9 @@ var PagePrefs = class {
20735
21199
  /** Explorer hide/show (2026-10-31 toggle RCA): $state is REQUIRED —
20736
21200
  * a plain field swallowed the toggle click silently (no re-render). */
20737
21201
  explorerHidden = false;
21202
+ /** Terminal base font in px (ADR-0041 Am.4): the TermFontSlider's
21203
+ * truth. Zoom multiplies on top — this is the preference NUMBER. */
21204
+ termFontSize = 12;
20738
21205
  /** Sidebar rail state (OCI ControlRail port). */
20739
21206
  sidebarCollapsed = false;
20740
21207
  sidebarWidth = 0;
@@ -20761,6 +21228,7 @@ var PagePrefs = class {
20761
21228
  this.zoom = clampPanelZoom(floor.zoom);
20762
21229
  this.treePct = clampTreePct(floor.treePct);
20763
21230
  this.explorerHidden = floor.explorerHidden === true;
21231
+ this.termFontSize = clampTermFontSize(floor.termFontSize);
20764
21232
  const sidebar = loadSidebarPrefs(profile);
20765
21233
  this.sidebarCollapsed = sidebar.collapsed;
20766
21234
  this.sidebarWidth = sidebar.width;
@@ -25697,20 +26165,18 @@ function ToolsAndStatusHeader($$renderer, $$props) {
25697
26165
  $$renderer.push(`<!--]--> `);
25698
26166
  if (agent) {
25699
26167
  $$renderer.push("<!--[0-->");
25700
- $$renderer.push(`<span class="agent-chip svelte-2kgu2r" data-testid="agent-chip"${attr("title", agentId ? `agent preset — ${agentId}` : void 0)}>`);
25701
- Bot($$renderer, {
25702
- size: 12,
25703
- class: "shrink-0",
25704
- "aria-hidden": "true"
26168
+ AgentChip($$renderer, {
26169
+ label: agent,
26170
+ testid: "agent-chip",
26171
+ title: agentId ? `agent preset — ${agentId}` : void 0
25705
26172
  });
25706
- $$renderer.push(`<!----> ${escape_html(agent)}</span>`);
25707
26173
  } else $$renderer.push("<!--[-1-->");
25708
26174
  $$renderer.push(`<!--]--> `);
25709
26175
  PlanModeChip($$renderer, { plan });
25710
26176
  $$renderer.push(`<!----> <span class="inline-flex items-center gap-1 text-xs text-text-secondary" role="status"${attr("aria-label", isStreaming ? "running" : "idle")} data-testid="running-status"><span${attr_class("inline-block h-2 w-2 rounded-full", void 0, {
25711
26177
  "bg-status-pass": isStreaming,
25712
26178
  "bg-surface-border": !isStreaming
25713
- })}></span> ${escape_html(isStreaming ? "running" : "idle")}</span> `);
26179
+ })}></span> <span class="narrow-hide">${escape_html(isStreaming ? "running" : "idle")}</span></span> `);
25714
26180
  ForkButton($$renderer, {
25715
26181
  subagent
25716
26182
  });
@@ -25731,7 +26197,13 @@ function ToolsAndStatusHeader($$renderer, $$props) {
25731
26197
  //#region src/lib/components/conversation/header/BrowserButton.svelte
25732
26198
  function BrowserButton($$renderer, $$props) {
25733
26199
  $$renderer.component(($$renderer) => {
25734
- $$renderer.push(`<button data-svelte="BrowserButton" type="button" class="rounded border border-surface-border px-1.5 py-0.5 text-xs hover:bg-surface-active" data-testid="open-browser"${attr("title", browseropentitle2())}>${escape_html(browserchiplabel2())}</button>`);
26200
+ $$renderer.push(`<button data-svelte="BrowserButton" type="button" class="inline-flex items-center gap-1 rounded border border-surface-border px-1.5 py-0.5 text-xs hover:bg-surface-active svelte-sxu2u" data-testid="open-browser"${attr("title", browseropentitle2() + " · " + browserheadedhint2())}>`);
26201
+ Globe($$renderer, {
26202
+ size: 12,
26203
+ class: "shrink-0",
26204
+ "aria-hidden": "true"
26205
+ });
26206
+ $$renderer.push(`<!----> <span class="narrow-hide">${escape_html(browserchiplabel2())}</span></button>`);
25735
26207
  });
25736
26208
  }
25737
26209
  //#endregion
@@ -33066,7 +33538,7 @@ function openWorkspaceExplorer(sessionId, workspace) {
33066
33538
  * browser panel across the floor — the terminal singleton rule (Terminal
33067
33539
  * Desk ADR D2). A click on an open browser FOCUSES it; a miss inserts at
33068
33540
  * the focused slot. */
33069
- function openBrowserPanel(index, keepSelection = false, width, openedBy, sessionId) {
33541
+ function openBrowserPanel(index, keepSelection = false, width, openedBy, sessionId, headedOpen) {
33070
33542
  const open = st.panels.find((p) => p.kind === "browser" && p.openedBy === openedBy);
33071
33543
  if (open) {
33072
33544
  st.selectedPanelId = open.id;
@@ -33074,7 +33546,7 @@ function openBrowserPanel(index, keepSelection = false, width, openedBy, session
33074
33546
  }
33075
33547
  const prevSelected = st.selectedPanelId;
33076
33548
  const slot = index !== void 0 ? Math.max(0, Math.min(index, st.panels.length)) : openedBy !== void 0 ? glassFirstSlot(st.panels, openedBy) : insertionSlot();
33077
- insertPanel(makeBrowserPanel(width, openedBy, sessionId), slot);
33549
+ insertPanel(makeBrowserPanel(width, openedBy, sessionId, headedOpen), slot);
33078
33550
  if (keepSelection && prevSelected !== null && prevSelected !== void 0) {
33079
33551
  if (st.panels.some((p) => p.id === prevSelected)) st.selectedPanelId = prevSelected;
33080
33552
  }
@@ -33354,13 +33826,14 @@ function makePanel(sessionId, agentPreset) {
33354
33826
  * chip clicks and legacy slots — the honest-slider preset.
33355
33827
  * openedBy: the opener session's provenance, recorded ONCE at spawn and
33356
33828
  * never rewritten (ADR-0036 D1/D2); undefined = no conversation context. */
33357
- function makeBrowserPanel(width, openedBy, sessionId) {
33829
+ function makeBrowserPanel(width, openedBy, sessionId, headedOpen) {
33358
33830
  return {
33359
33831
  id: nextPanelId(),
33360
33832
  kind: "browser",
33361
33833
  width: clampPanelWidth(width ?? browserPanelWidth(), "browser"),
33362
33834
  ...openedBy !== void 0 ? { openedBy } : {},
33363
- ...sessionId !== void 0 ? { browserSessionId: sessionId } : {}
33835
+ ...sessionId !== void 0 ? { browserSessionId: sessionId } : {},
33836
+ ...headedOpen ? { headedOpen: true } : {}
33364
33837
  };
33365
33838
  }
33366
33839
  function makeWorkspaceExplorerPanel(sessionId, root) {
@@ -34592,7 +35065,9 @@ function ConversationPanel($$renderer, $$props) {
34592
35065
  */
34593
35066
  var CHORD_WINDOW_MS = 2e3;
34594
35067
  var IDLE_CHORD = {
34595
- armed: false};
35068
+ armed: false,
35069
+ prefix: "s"
35070
+ };
34596
35071
  /** Verb → label (the palette renders these; D16). */
34597
35072
  var CHORD_VERB_LABELS = {
34598
35073
  a: "Close agent extras (terminals + sub-agents + explorers)",
@@ -34681,7 +35156,7 @@ function ChordPalette($$renderer, $$props) {
34681
35156
  */
34682
35157
  /** The 10s idle window before the palette closes itself (D18). */
34683
35158
  const IDLE_CLOSE_MS = 1e4;
34684
- let { open, rows} = $$props;
35159
+ let { open, rows, prefix} = $$props;
34685
35160
  let now = Date.now();
34686
35161
  const elapsed = derived(() => open ? Math.max(0, Math.min(now - (Date.now()), IDLE_CLOSE_MS)) : 0);
34687
35162
  const pct = derived(() => Math.round(elapsed() / IDLE_CLOSE_MS * 100));
@@ -34689,7 +35164,7 @@ function ChordPalette($$renderer, $$props) {
34689
35164
  const barColor = derived(() => inActionWindow() ? "bg-green-300" : "bg-yellow-200");
34690
35165
  if (open) {
34691
35166
  $$renderer.push("<!--[0-->");
34692
- $$renderer.push(`<div data-svelte="ChordPalette" class="fixed top-1/2 left-1/2 z-50 w-72 -translate-x-1/2 -translate-y-1/2 rounded-lg border border-black/10 bg-white/95 px-3 py-2 shadow-lg backdrop-blur dark:border-white/15 dark:bg-neutral-900/95" data-testid="chord-palette"${attr("data-chord-elapsed", elapsed())} aria-live="polite"${attr("aria-label", t(() => chordarmedlabel2()))}><div class="mb-1 text-[10px] font-semibold tracking-wide text-neutral-400 uppercase">${escape_html(t(() => chordarmedtitle2()))}</div> <ul class="m-0 list-none space-y-0.5 p-0"><!--[-->`);
35167
+ $$renderer.push(`<div data-svelte="ChordPalette" class="fixed top-1/2 left-1/2 z-50 w-72 -translate-x-1/2 -translate-y-1/2 rounded-lg border border-black/10 bg-white/95 px-3 py-2 shadow-lg backdrop-blur dark:border-white/15 dark:bg-neutral-900/95" data-testid="chord-palette"${attr("data-chord-elapsed", elapsed())} aria-live="polite"${attr("aria-label", t(() => chordarmedlabel2({ prefix })))}><div class="mb-1 text-[10px] font-semibold tracking-wide text-neutral-400 uppercase">${escape_html(t(() => chordarmedtitle2({ prefix })))}</div> <ul class="m-0 list-none space-y-0.5 p-0"><!--[-->`);
34693
35168
  const each_array = ensure_array_like(rows);
34694
35169
  for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
34695
35170
  let row = each_array[$$index];
@@ -34701,6 +35176,26 @@ function ChordPalette($$renderer, $$props) {
34701
35176
  });
34702
35177
  }
34703
35178
  //#endregion
35179
+ //#region src/lib/components/terminal/TermFontSlider.svelte
35180
+ function TermFontSlider($$renderer, $$props) {
35181
+ $$renderer.component(($$renderer) => {
35182
+ /**
35183
+ * TermFontSlider — the terminal base font control (ADR-0041 Am.4):
35184
+ * a right-aligned range input plus the px readout, mounted in the
35185
+ * TerminalPanel header row (the settle-badge's parent). Presentational
35186
+ * (house pattern, ZoomSlider 2026-11-02): the CALLER owns what a font
35187
+ * change means — the desk forwards px upward and the route persists
35188
+ * pagePrefs.termFontSize; the panel re-fires the pocket's refit.
35189
+ *
35190
+ * Contract: the prop is the base font in PX (TERM_FONT_MIN–MAX); the
35191
+ * slider renders and reports PX. The readout is exact at floor zoom 1
35192
+ * (zoom multiplies on top).
35193
+ */
35194
+ let { font, label, testid, class: className = "" } = $$props;
35195
+ $$renderer.push(`<div data-svelte="TermFontSlider"${attr_class(`flex shrink-0 items-center gap-1 ${stringify(className)}`)}><input type="range" min="8" max="20" step="1"${attr("value", font)}${attr("data-testid", testid)}${attr("aria-label", label)}${attr("title", label)} class="h-1 w-16 accent-[var(--color-accent-purple)]"/> <span class="text-right font-bold tabular-nums text-[var(--color-accent-purple)]"${attr("data-testid", `${stringify(testid)}-readout`)}>${escape_html(font)}px</span></div>`);
35196
+ });
35197
+ }
35198
+ //#endregion
34704
35199
  //#region src/lib/components/terminal/frame-state.ts
34705
35200
  var initialTerminalPanelState = {
34706
35201
  lastSettle: null,
@@ -34712,9 +35207,11 @@ var initialTerminalPanelState = {
34712
35207
  //#region src/lib/components/terminal/TerminalPanel.svelte
34713
35208
  function TerminalPanel($$renderer, $$props) {
34714
35209
  $$renderer.component(($$renderer) => {
34715
- let { onShellExit, assigned = null, onAssigned, zoom = 1 } = $$props;
35210
+ let { onShellExit, assigned = null, onAssigned, zoom = 1, termFontSize = 12, onFontChange } = $$props;
34716
35211
  /** Coerced zoom — the pocket's single source (null-safe default 1). */
34717
35212
  const pocketZoom = derived(() => zoom ?? 1);
35213
+ /** Coerced base font — the glyph-size preference (null-safe). */
35214
+ const baseFont = derived(() => termFontSize ?? 12);
34718
35215
  let panelState = { ...initialTerminalPanelState };
34719
35216
  Promise.resolve();
34720
35217
  /** Focus the live xterm surface (the desk's ⌥+N tab shortcut,
@@ -34735,7 +35232,13 @@ function TerminalPanel($$renderer, $$props) {
34735
35232
  } else $$renderer.push("<!--[-1-->");
34736
35233
  $$renderer.push(`<!--]--> `);
34737
35234
  $$renderer.push("<!--[-1-->");
34738
- $$renderer.push(`<!--]--> <div class="grow"></div></div> `);
35235
+ $$renderer.push(`<!--]--> <div class="grow"></div> `);
35236
+ TermFontSlider($$renderer, {
35237
+ font: baseFont(),
35238
+ label: t(terminalfontslider2),
35239
+ testid: "terminal-font-slider"
35240
+ });
35241
+ $$renderer.push(`<!----></div> `);
34739
35242
  $$renderer.push("<!--[-1-->");
34740
35243
  $$renderer.push(`<div class="relative min-h-72 grow overflow-hidden" data-testid="terminal-host" role="presentation"><div class="absolute inset-0 origin-top-left"${attr_style(pocketZoom() === 1 ? void 0 : `right: auto; bottom: auto; width: ${pocketZoom() * 100}%; height: ${pocketZoom() * 100}%; transform: scale(${1 / pocketZoom()});`)}><div class="absolute inset-0"></div></div></div> `);
34741
35244
  $$renderer.push("<!--[-1-->");
@@ -35030,9 +35533,11 @@ function TerminalDesk($$renderer, $$props) {
35030
35533
  * bare command behaves byte-identically to the pre-desk panel. */
35031
35534
  /** Null = self-open (the panel runs its own ladder and reports back
35032
35535
  * via onAssigned); set = the desk holds this session's lease. */
35033
- let { onShellExit, restored = null, onMirror, zoom = 1 } = $$props;
35536
+ let { onShellExit, restored = null, onMirror, zoom = 1, termFontSize = 12, onFontChange } = $$props;
35034
35537
  /** Coerced zoom — one pocket source for every row (null-safe default 1). */
35035
35538
  const deskZoom = derived(() => zoom ?? 1);
35539
+ /** Coerced base font — one glyph-size source for every row. */
35540
+ const deskFont = derived(() => termFontSize ?? 12);
35036
35541
  let nextKey = 1;
35037
35542
  const mkKey = () => nextKey++;
35038
35543
  const defaultTab = () => ({
@@ -35089,6 +35594,39 @@ function TerminalDesk($$renderer, $$props) {
35089
35594
  if (select) selectedTab = jobCount() - 1;
35090
35595
  }
35091
35596
  registerJobTabOpener((owner, jobId, label) => openJobTab(owner, jobId, label));
35597
+ /** Destroy ONE session through the prune verb, healing once on a stale
35598
+ * token (reattach → retry the SAME DELETE). Pruned records never come
35599
+ * back to list() — the corpse pile is the thing this chord removes. */
35600
+ async function destroyRowSession(assigned) {
35601
+ const destroy = (token) => fetch("/api/terminal/" + assigned.sessionId + "/delete", {
35602
+ method: "DELETE",
35603
+ headers: { "content-type": "application/json" },
35604
+ body: JSON.stringify({ token })
35605
+ });
35606
+ let res = await destroy(assigned.token).catch(() => void 0);
35607
+ if (res && res.status === 403) {
35608
+ const re = await fetch("/api/terminal/" + assigned.sessionId + "/reattach", { method: "POST" }).catch(() => void 0);
35609
+ const body = re && re.ok ? await re.json().catch(() => null) : null;
35610
+ if (body?.token) res = await destroy(body.token).catch(() => void 0);
35611
+ }
35612
+ }
35613
+ /** The chord's action (D6): destroy every session of the SELECTED tab
35614
+ * (split included, live or exited — the server kills, no shell
35615
+ * cooperation required), then remove the tab WITHOUT re-killing (the
35616
+ * entries are already pruned; closeTab's send-close would only 404).
35617
+ * Last tab ⇒ onShellExit removes the desk slot (the panel close). */
35618
+ async function clearTabChord() {
35619
+ const tabIndex = selectedTab;
35620
+ const tab = tabs[tabIndex];
35621
+ if (!tab) return;
35622
+ for (const row of tab.rows) if (row.assigned) await destroyRowSession(row.assigned);
35623
+ tabs.splice(tabIndex, 1);
35624
+ if (tabs.length === 0) {
35625
+ onShellExit?.();
35626
+ return;
35627
+ }
35628
+ selectedTab = Math.min(tabIndex, tabs.length - 1);
35629
+ }
35092
35630
  /** The truthful badge grammar (2026-11-04 amendment, ADR D5e/D5f):
35093
35631
  * the shell-tab badge pairs the strip position with the session id —
35094
35632
  * single row assigned → 'T1:7' (registry id t-7 → 7); split →
@@ -35137,6 +35675,10 @@ function TerminalDesk($$renderer, $$props) {
35137
35675
  * tab and selects it; --split-down stacks a row on the SELECTED tab.
35138
35676
  * Both open a fresh session (never re-attach). */
35139
35677
  function applyAction(action) {
35678
+ if (action === "clear-tab") {
35679
+ clearTabChord();
35680
+ return;
35681
+ }
35140
35682
  (async () => {
35141
35683
  const row = await mintSession();
35142
35684
  if (!row) return;
@@ -35282,6 +35824,8 @@ function TerminalDesk($$renderer, $$props) {
35282
35824
  TerminalPanel($$renderer, {
35283
35825
  assigned: row.assigned,
35284
35826
  zoom: deskZoom(),
35827
+ termFontSize: deskFont(),
35828
+ onFontChange: (px) => onFontChange?.(px),
35285
35829
  onAssigned: (sessionId, token) => recordAssigned(row, sessionId, token),
35286
35830
  onShellExit: () => removeRow(i, row)
35287
35831
  });
@@ -35601,8 +36145,8 @@ function BrowserHeader($$renderer, $$props) {
35601
36145
  UrlCopy($$renderer, {
35602
36146
  class: "flex h-6 w-6 shrink-0 items-center justify-center rounded border border-surface-border bg-surface text-surface-muted hover:bg-surface-active disabled:opacity-40",
35603
36147
  copied,
35604
- copiedLabel: "Copied",
35605
- label: "Copy focused tab URL",
36148
+ copiedLabel: browsercopied1(),
36149
+ label: browsercopyurl2(),
35606
36150
  testid: "browser-copy-url",
35607
36151
  disabled: !copyUrl});
35608
36152
  $$renderer.push(`<!----> `);
@@ -38588,6 +39132,8 @@ function _page($$renderer, $$props) {
38588
39132
  TerminalDesk($$renderer, {
38589
39133
  restored: panel.desk ?? null,
38590
39134
  zoom: floorPanelId ? pagePrefs.zoom : 1,
39135
+ termFontSize: pagePrefs.termFontSize,
39136
+ onFontChange: (px) => pagePrefs.termFontSize = clampTermFontSize(px),
38591
39137
  onMirror: (m) => {
38592
39138
  terminalDeskMirrors[panel.id] = m;
38593
39139
  },
@@ -38603,6 +39149,7 @@ function _page($$renderer, $$props) {
38603
39149
  removePanel(panel.id);
38604
39150
  },
38605
39151
  openedBy: panel.openedBy,
39152
+ headedOpen: "headedOpen" in panel ? panel.headedOpen === true : false,
38606
39153
  parentTitle: panel.openedBy ? panelTitleFor(panel.openedBy) ?? panel.openedBy : null,
38607
39154
  depth: panel.openedBy ? lineageFacts().depthById.get(panel.openedBy) ?? 0 : 0});
38608
39155
  } else if (panel.kind === "injected-doc") {
@@ -38726,7 +39273,7 @@ function _page($$renderer, $$props) {
38726
39273
  a2aRows: a2aRowsFor(p.sessionId),
38727
39274
  a2aTitles: spineTitles(),
38728
39275
  onOpenExplorer: openWorkspaceExplorer,
38729
- onOpenBrowser: lineageFacts().subagentIds.has(p.sessionId) ? void 0 : () => openBrowserPanel(void 0, false, void 0, p.sessionId),
39276
+ onOpenBrowser: lineageFacts().subagentIds.has(p.sessionId) ? void 0 : (shift) => openBrowserPanel(void 0, false, void 0, p.sessionId, void 0, shift),
38730
39277
  focusComposer: p.id === focusComposerId(),
38731
39278
  oncomposerfocus: () => clearFocusComposer(),
38732
39279
  focused: p.id === selectedPanelId()
@@ -38755,7 +39302,7 @@ function _page($$renderer, $$props) {
38755
39302
  a2aTitles: spineTitles(),
38756
39303
  onNeedCold: (sid) => void ensureCold(sid),
38757
39304
  onOpenExplorer: openWorkspaceExplorer,
38758
- onOpenBrowser: lineageFacts().subagentIds.has(p.sessionId) ? void 0 : () => openBrowserPanel(void 0, false, void 0, p.sessionId),
39305
+ onOpenBrowser: lineageFacts().subagentIds.has(p.sessionId) ? void 0 : (shift) => openBrowserPanel(void 0, false, void 0, p.sessionId, void 0, shift),
38759
39306
  focusComposer: p.id === focusComposerId(),
38760
39307
  oncomposerfocus: () => clearFocusComposer(),
38761
39308
  focused: p.id === selectedPanelId()
@@ -38776,7 +39323,8 @@ function _page($$renderer, $$props) {
38776
39323
  });
38777
39324
  ChordPalette($$renderer, {
38778
39325
  open: chord.armed,
38779
- rows: chordPaletteRows()});
39326
+ rows: chordPaletteRows(),
39327
+ prefix: chord.prefix});
38780
39328
  $$renderer.push(`<!----> <div data-svelte="ConversationPage" class="flex h-dvh conversation-page svelte-1uha8ag">`);
38781
39329
  if (!sidebarInZoom()) {
38782
39330
  $$renderer.push("<!--[0-->");
@@ -38846,4 +39394,4 @@ function _page($$renderer, $$props) {
38846
39394
  }
38847
39395
 
38848
39396
  export { _page as default };
38849
- //# sourceMappingURL=_page.svelte.js-BlbGdGej.js.map
39397
+ //# sourceMappingURL=_page.svelte.js-BUuXoaje.js.map