@zythum02/fello-server 0.1.53 → 0.1.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/renderer/assets/{_baseUniq-CJr3HkLS.js → _baseUniq-DYINnBRJ.js} +1 -1
- package/out/renderer/assets/_baseUniq-DYINnBRJ.js.br +0 -0
- package/out/renderer/assets/_baseUniq-DYINnBRJ.js.gz +0 -0
- package/out/renderer/assets/{arc-POsBroTF.js → arc-BSUyw88k.js} +1 -1
- package/out/renderer/assets/arc-BSUyw88k.js.br +0 -0
- package/out/renderer/assets/arc-BSUyw88k.js.gz +0 -0
- package/out/renderer/assets/{architectureDiagram-Q4EWVU46-CmToUhDb.js → architectureDiagram-Q4EWVU46-Cxb8DhYZ.js} +6 -6
- package/out/renderer/assets/architectureDiagram-Q4EWVU46-Cxb8DhYZ.js.br +0 -0
- package/out/renderer/assets/architectureDiagram-Q4EWVU46-Cxb8DhYZ.js.gz +0 -0
- package/out/renderer/assets/{arrow-left-CxS1t3f7.js → arrow-left-CQqe9rrj.js} +1 -1
- package/out/renderer/assets/arrow-up-1eI4tva4.js +21 -0
- package/out/renderer/assets/{automation-Cyz3eLWp.js → automation-CQAOpWYp.js} +7 -7
- package/out/renderer/assets/automation-CQAOpWYp.js.br +0 -0
- package/out/renderer/assets/automation-CQAOpWYp.js.gz +0 -0
- package/out/renderer/assets/{blockDiagram-DXYQGD6D-M2nnTg9f.js → blockDiagram-DXYQGD6D-CFozis-v.js} +7 -7
- package/out/renderer/assets/blockDiagram-DXYQGD6D-CFozis-v.js.br +0 -0
- package/out/renderer/assets/blockDiagram-DXYQGD6D-CFozis-v.js.gz +0 -0
- package/out/renderer/assets/{c4Diagram-AHTNJAMY-CwLtsy_0.js → c4Diagram-AHTNJAMY-CcDDkZUp.js} +3 -3
- package/out/renderer/assets/c4Diagram-AHTNJAMY-CcDDkZUp.js.br +0 -0
- package/out/renderer/assets/c4Diagram-AHTNJAMY-CcDDkZUp.js.gz +0 -0
- package/out/renderer/assets/{channel-BUNDMqpH.js → channel-B-VC_ZcK.js} +1 -1
- package/out/renderer/assets/{chunk-4BX2VUAB-B2qXmkDT.js → chunk-4BX2VUAB-ClHmnOTC.js} +1 -1
- package/out/renderer/assets/{chunk-4TB4RGXK-DXLZpPY5.js → chunk-4TB4RGXK-mwOvn19G.js} +5 -5
- package/out/renderer/assets/chunk-4TB4RGXK-mwOvn19G.js.br +0 -0
- package/out/renderer/assets/chunk-4TB4RGXK-mwOvn19G.js.gz +0 -0
- package/out/renderer/assets/{chunk-55IACEB6-CJeyefxI.js → chunk-55IACEB6-CE8f6iip.js} +1 -1
- package/out/renderer/assets/{chunk-EDXVE4YY-CNjJEQfY.js → chunk-EDXVE4YY-CU7aY96h.js} +1 -1
- package/out/renderer/assets/chunk-EDXVE4YY-CU7aY96h.js.br +0 -0
- package/out/renderer/assets/chunk-EDXVE4YY-CU7aY96h.js.gz +0 -0
- package/out/renderer/assets/{chunk-FMBD7UC4-DOAOsjRu.js → chunk-FMBD7UC4-B38kFkjv.js} +1 -1
- package/out/renderer/assets/{chunk-OYMX7WX6-BG4B1VQ7.js → chunk-OYMX7WX6-BriTCtaz.js} +3 -3
- package/out/renderer/assets/chunk-OYMX7WX6-BriTCtaz.js.br +0 -0
- package/out/renderer/assets/chunk-OYMX7WX6-BriTCtaz.js.gz +0 -0
- package/out/renderer/assets/{chunk-QZHKN3VN-B9zfXYIQ.js → chunk-QZHKN3VN-BwJ37p5G.js} +1 -1
- package/out/renderer/assets/{chunk-YZCP3GAM-jeoI2tsD.js → chunk-YZCP3GAM-BlHAYoQe.js} +1 -1
- package/out/renderer/assets/chunk-YZCP3GAM-BlHAYoQe.js.br +0 -0
- package/out/renderer/assets/chunk-YZCP3GAM-BlHAYoQe.js.gz +0 -0
- package/out/renderer/assets/{circle-x-B1kBsMlS.js → circle-x-D_gJIgxf.js} +1 -1
- package/out/renderer/assets/{classDiagram-v2-HSJHXN6E-DWPFF3Yt.js → classDiagram-6PBFFD2Q-D01ZMeaj.js} +7 -7
- package/out/renderer/assets/{classDiagram-6PBFFD2Q-DWPFF3Yt.js → classDiagram-v2-HSJHXN6E-D01ZMeaj.js} +7 -7
- package/out/renderer/assets/{clone-Dcvr9oKv.js → clone-qctAbdCx.js} +1 -1
- package/out/renderer/assets/{code-editor-CEXlC4aV.js → code-editor-tm0AYOLz.js} +2 -2
- package/out/renderer/assets/code-editor-tm0AYOLz.js.br +0 -0
- package/out/renderer/assets/code-editor-tm0AYOLz.js.gz +0 -0
- package/out/renderer/assets/{collapsible-CMuCJUWG.js → collapsible-DD6NlDid.js} +1 -1
- package/out/renderer/assets/collapsible-DD6NlDid.js.br +0 -0
- package/out/renderer/assets/collapsible-DD6NlDid.js.gz +0 -0
- package/out/renderer/assets/command-BF4jOeoL.js +11 -0
- package/out/renderer/assets/{cose-bilkent-S5V4N54A-B3bgImVS.js → cose-bilkent-S5V4N54A-CF4brbsf.js} +2 -2
- package/out/renderer/assets/cose-bilkent-S5V4N54A-CF4brbsf.js.br +0 -0
- package/out/renderer/assets/cose-bilkent-S5V4N54A-CF4brbsf.js.gz +0 -0
- package/out/renderer/assets/{dagre-KV5264BT-DTbumBA_.js → dagre-KV5264BT-C6I5VgRp.js} +7 -7
- package/out/renderer/assets/dagre-KV5264BT-C6I5VgRp.js.br +0 -0
- package/out/renderer/assets/dagre-KV5264BT-C6I5VgRp.js.gz +0 -0
- package/out/renderer/assets/{diagram-5BDNPKRD-B34Y6e8q.js → diagram-5BDNPKRD-BAO72D5R.js} +7 -7
- package/out/renderer/assets/diagram-5BDNPKRD-BAO72D5R.js.br +0 -0
- package/out/renderer/assets/diagram-5BDNPKRD-BAO72D5R.js.gz +0 -0
- package/out/renderer/assets/{diagram-G4DWMVQ6-BBiBmFR4.js → diagram-G4DWMVQ6-BmpkrtJs.js} +7 -7
- package/out/renderer/assets/diagram-G4DWMVQ6-BmpkrtJs.js.br +0 -0
- package/out/renderer/assets/diagram-G4DWMVQ6-BmpkrtJs.js.gz +0 -0
- package/out/renderer/assets/{diagram-MMDJMWI5-P-YslDjG.js → diagram-MMDJMWI5-8keZZjgB.js} +6 -6
- package/out/renderer/assets/diagram-MMDJMWI5-8keZZjgB.js.br +0 -0
- package/out/renderer/assets/diagram-MMDJMWI5-8keZZjgB.js.gz +0 -0
- package/out/renderer/assets/{diagram-TYMM5635-D_cLard_.js → diagram-TYMM5635-Be4uDvHI.js} +6 -6
- package/out/renderer/assets/diagram-TYMM5635-Be4uDvHI.js.br +0 -0
- package/out/renderer/assets/diagram-TYMM5635-Be4uDvHI.js.gz +0 -0
- package/out/renderer/assets/{ellipsis-D1agTYu1.js → ellipsis-92s4sSUO.js} +1 -1
- package/out/renderer/assets/{erDiagram-SMLLAGMA-C1MHqKvC.js → erDiagram-SMLLAGMA-C6IgAbhi.js} +5 -5
- package/out/renderer/assets/erDiagram-SMLLAGMA-C6IgAbhi.js.br +0 -0
- package/out/renderer/assets/erDiagram-SMLLAGMA-C6IgAbhi.js.gz +0 -0
- package/out/renderer/assets/{field-DR3J0r9e.js → field-BPsDfe4e.js} +1 -1
- package/out/renderer/assets/field-BPsDfe4e.js.br +0 -0
- package/out/renderer/assets/field-BPsDfe4e.js.gz +0 -0
- package/out/renderer/assets/{file-text-nGCW6zu1.js → file-text-ITbWr8iW.js} +1 -1
- package/out/renderer/assets/{flowDiagram-DWJPFMVM-DprlEc3Z.js → flowDiagram-DWJPFMVM-vbYKBn4t.js} +7 -7
- package/out/renderer/assets/flowDiagram-DWJPFMVM-vbYKBn4t.js.br +0 -0
- package/out/renderer/assets/flowDiagram-DWJPFMVM-vbYKBn4t.js.gz +0 -0
- package/out/renderer/assets/{ganttDiagram-T4ZO3ILL-CbTdumBm.js → ganttDiagram-T4ZO3ILL-AxXIe9I4.js} +3 -3
- package/out/renderer/assets/ganttDiagram-T4ZO3ILL-AxXIe9I4.js.br +0 -0
- package/out/renderer/assets/ganttDiagram-T4ZO3ILL-AxXIe9I4.js.gz +0 -0
- package/out/renderer/assets/{gitGraphDiagram-UUTBAWPF-06bme-w8.js → gitGraphDiagram-UUTBAWPF-DSipARMB.js} +7 -7
- package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-DSipARMB.js.br +0 -0
- package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-DSipARMB.js.gz +0 -0
- package/out/renderer/assets/{graph-BZhxluo9.js → graph-mNaHfg3r.js} +2 -2
- package/out/renderer/assets/graph-mNaHfg3r.js.br +0 -0
- package/out/renderer/assets/graph-mNaHfg3r.js.gz +0 -0
- package/out/renderer/assets/{highlighted-body-OFNGDK62-CvDMJtXf.js → highlighted-body-OFNGDK62-8846XFj-.js} +2 -2
- package/out/renderer/assets/{index-LmYTNvdF.js → index-BUwXrbHW.js} +1643 -776
- package/out/renderer/assets/index-BUwXrbHW.js.br +0 -0
- package/out/renderer/assets/index-BUwXrbHW.js.gz +0 -0
- package/out/renderer/assets/index-DOIzYXAl.css +382 -0
- package/out/renderer/assets/index-DOIzYXAl.css.br +0 -0
- package/out/renderer/assets/index-DOIzYXAl.css.gz +0 -0
- package/out/renderer/assets/{infoDiagram-42DDH7IO-DqivEzWL.js → infoDiagram-42DDH7IO-ThYxaM6U.js} +5 -5
- package/out/renderer/assets/infoDiagram-42DDH7IO-ThYxaM6U.js.br +0 -0
- package/out/renderer/assets/infoDiagram-42DDH7IO-ThYxaM6U.js.gz +0 -0
- package/out/renderer/assets/{ishikawaDiagram-UXIWVN3A-BKcg_z4w.js → ishikawaDiagram-UXIWVN3A-EcWEDDQ3.js} +2 -2
- package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-EcWEDDQ3.js.br +0 -0
- package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-EcWEDDQ3.js.gz +0 -0
- package/out/renderer/assets/{item-BHEUMM9H.js → item-Dph2aCdz.js} +20 -2
- package/out/renderer/assets/item-Dph2aCdz.js.br +0 -0
- package/out/renderer/assets/item-Dph2aCdz.js.gz +0 -0
- package/out/renderer/assets/{journeyDiagram-VCZTEJTY-Bvv8xuxQ.js → journeyDiagram-VCZTEJTY-Ct6VLkXK.js} +5 -5
- package/out/renderer/assets/journeyDiagram-VCZTEJTY-Ct6VLkXK.js.br +0 -0
- package/out/renderer/assets/journeyDiagram-VCZTEJTY-Ct6VLkXK.js.gz +0 -0
- package/out/renderer/assets/{kanban-definition-6JOO6SKY-C-gRMpeM.js → kanban-definition-6JOO6SKY-DHWulQen.js} +3 -3
- package/out/renderer/assets/kanban-definition-6JOO6SKY-DHWulQen.js.br +0 -0
- package/out/renderer/assets/kanban-definition-6JOO6SKY-DHWulQen.js.gz +0 -0
- package/out/renderer/assets/{layout-B4dSyItA.js → layout-pfquJ3N_.js} +4 -4
- package/out/renderer/assets/layout-pfquJ3N_.js.br +0 -0
- package/out/renderer/assets/layout-pfquJ3N_.js.gz +0 -0
- package/out/renderer/assets/{linear-CoVhuer7.js → linear-CdfVBcAB.js} +1 -1
- package/out/renderer/assets/linear-CdfVBcAB.js.br +0 -0
- package/out/renderer/assets/linear-CdfVBcAB.js.gz +0 -0
- package/out/renderer/assets/{link-2-DHUPzNSt.js → link-2-DpdZfD3m.js} +1 -1
- package/out/renderer/assets/{mermaid-GHXKKRXX-CZqkhGx7.js → mermaid-GHXKKRXX-CqMNodCp.js} +36 -36
- package/out/renderer/assets/mermaid-GHXKKRXX-CqMNodCp.js.br +0 -0
- package/out/renderer/assets/mermaid-GHXKKRXX-CqMNodCp.js.gz +0 -0
- package/out/renderer/assets/{mic-BgSvicCB.js → mic-CT1bYBEV.js} +1 -1
- package/out/renderer/assets/{min-emzuJjmk.js → min-CiK16GFr.js} +2 -2
- package/out/renderer/assets/min-CiK16GFr.js.br +0 -0
- package/out/renderer/assets/min-CiK16GFr.js.gz +0 -0
- package/out/renderer/assets/{mindmap-definition-QFDTVHPH-DQ4JNECm.js → mindmap-definition-QFDTVHPH-BvmM-Xdx.js} +4 -4
- package/out/renderer/assets/mindmap-definition-QFDTVHPH-BvmM-Xdx.js.br +0 -0
- package/out/renderer/assets/mindmap-definition-QFDTVHPH-BvmM-Xdx.js.gz +0 -0
- package/out/renderer/assets/{open-guide-CfLO-Sdk.js → open-guide-BqiUQfrM.js} +1 -1
- package/out/renderer/assets/{package-search-CrF2Iegl.js → package-search-BxIuIl9F.js} +1 -1
- package/out/renderer/assets/{pieDiagram-DEJITSTG-0H6CGQQt.js → pieDiagram-DEJITSTG-CQY4NZ_4.js} +7 -7
- package/out/renderer/assets/pieDiagram-DEJITSTG-CQY4NZ_4.js.br +0 -0
- package/out/renderer/assets/pieDiagram-DEJITSTG-CQY4NZ_4.js.gz +0 -0
- package/out/renderer/assets/{plus-YNCXW-GD.js → plus-C5XdFVFm.js} +1 -1
- package/out/renderer/assets/{quadrantDiagram-34T5L4WZ-D0aPKp5z.js → quadrantDiagram-34T5L4WZ-BiDWKNht.js} +3 -3
- package/out/renderer/assets/quadrantDiagram-34T5L4WZ-BiDWKNht.js.br +0 -0
- package/out/renderer/assets/quadrantDiagram-34T5L4WZ-BiDWKNht.js.gz +0 -0
- package/out/renderer/assets/{requirementDiagram-MS252O5E-BkzwapW_.js → requirementDiagram-MS252O5E-D-KxL9Tf.js} +4 -4
- package/out/renderer/assets/requirementDiagram-MS252O5E-D-KxL9Tf.js.br +0 -0
- package/out/renderer/assets/requirementDiagram-MS252O5E-D-KxL9Tf.js.gz +0 -0
- package/out/renderer/assets/{resizable-cStzNJ8V.js → resizable-ObbINbIB.js} +1 -1
- package/out/renderer/assets/resizable-ObbINbIB.js.br +0 -0
- package/out/renderer/assets/resizable-ObbINbIB.js.gz +0 -0
- package/out/renderer/assets/{sankeyDiagram-XADWPNL6-Dbde7usj.js → sankeyDiagram-XADWPNL6-BIFbqkzs.js} +2 -2
- package/out/renderer/assets/sankeyDiagram-XADWPNL6-BIFbqkzs.js.br +0 -0
- package/out/renderer/assets/sankeyDiagram-XADWPNL6-BIFbqkzs.js.gz +0 -0
- package/out/renderer/assets/{schedule-DNMCsk-G.js → schedule-BtuArq_x.js} +9 -9
- package/out/renderer/assets/schedule-BtuArq_x.js.br +0 -0
- package/out/renderer/assets/schedule-BtuArq_x.js.gz +0 -0
- package/out/renderer/assets/{search-BEY9yGF_.js → search-TCnuQyCi.js} +1 -1
- package/out/renderer/assets/{sequenceDiagram-FGHM5R23-DI8l1pSL.js → sequenceDiagram-FGHM5R23-DQX-_zuj.js} +4 -4
- package/out/renderer/assets/sequenceDiagram-FGHM5R23-DQX-_zuj.js.br +0 -0
- package/out/renderer/assets/sequenceDiagram-FGHM5R23-DQX-_zuj.js.gz +0 -0
- package/out/renderer/assets/{session-Bn5k9ScR.js → session-C_1BpGhU.js} +956 -269
- package/out/renderer/assets/session-C_1BpGhU.js.br +0 -0
- package/out/renderer/assets/session-C_1BpGhU.js.gz +0 -0
- package/out/renderer/assets/{setting-dialog-sqfPfGsy.js → setting-dialog-D1_-4H95.js} +3 -3
- package/out/renderer/assets/setting-dialog-D1_-4H95.js.br +0 -0
- package/out/renderer/assets/setting-dialog-D1_-4H95.js.gz +0 -0
- package/out/renderer/assets/{settings-2-DRhoXOO8.js → settings-2-BwfZrIw6.js} +1 -1
- package/out/renderer/assets/{settings-agents-Bntc31Nn.js → settings-agents-BtuYXQ1V.js} +26 -14
- package/out/renderer/assets/settings-agents-BtuYXQ1V.js.br +0 -0
- package/out/renderer/assets/settings-agents-BtuYXQ1V.js.gz +0 -0
- package/out/renderer/assets/{settings-general-DhbLb9cP.js → settings-general-cHqsKFFa.js} +36 -3
- package/out/renderer/assets/settings-general-cHqsKFFa.js.br +0 -0
- package/out/renderer/assets/settings-general-cHqsKFFa.js.gz +0 -0
- package/out/renderer/assets/{settings-ilink-C7nGGjwT.js → settings-ilink-BR1Vd9t9.js} +3 -3
- package/out/renderer/assets/settings-ilink-BR1Vd9t9.js.br +0 -0
- package/out/renderer/assets/settings-ilink-BR1Vd9t9.js.gz +0 -0
- package/out/renderer/assets/{settings-image-generation-H2dgqG7Y.js → settings-image-generation-MUHYnpbm.js} +6 -6
- package/out/renderer/assets/settings-image-generation-MUHYnpbm.js.br +0 -0
- package/out/renderer/assets/settings-image-generation-MUHYnpbm.js.gz +0 -0
- package/out/renderer/assets/{settings-layout-ATto1xpJ.js → settings-layout-SBihzFfb.js} +10 -3
- package/out/renderer/assets/settings-layout-SBihzFfb.js.br +0 -0
- package/out/renderer/assets/settings-layout-SBihzFfb.js.gz +0 -0
- package/out/renderer/assets/{settings-mcp-DUdMuoJ-.js → settings-mcp-Co88s-0y.js} +8 -8
- package/out/renderer/assets/settings-mcp-Co88s-0y.js.br +0 -0
- package/out/renderer/assets/settings-mcp-Co88s-0y.js.gz +0 -0
- package/out/renderer/assets/{settings-memory-CJLG4aHW.js → settings-memory-CNH9gHYC.js} +2 -3
- package/out/renderer/assets/settings-memory-CNH9gHYC.js.br +0 -0
- package/out/renderer/assets/settings-memory-CNH9gHYC.js.gz +0 -0
- package/out/renderer/assets/settings-shortcuts-C1s7YIMj.js +267 -0
- package/out/renderer/assets/settings-shortcuts-C1s7YIMj.js.br +0 -0
- package/out/renderer/assets/settings-shortcuts-C1s7YIMj.js.gz +0 -0
- package/out/renderer/assets/{settings-snippets-B4VcnD5Z.js → settings-snippets-DGgI6mxm.js} +7 -7
- package/out/renderer/assets/settings-snippets-DGgI6mxm.js.br +0 -0
- package/out/renderer/assets/settings-snippets-DGgI6mxm.js.gz +0 -0
- package/out/renderer/assets/{settings-speech-to-text-DQ7lfkTu.js → settings-speech-to-text-CV0xM7yz.js} +5 -5
- package/out/renderer/assets/settings-speech-to-text-CV0xM7yz.js.br +0 -0
- package/out/renderer/assets/settings-speech-to-text-CV0xM7yz.js.gz +0 -0
- package/out/renderer/assets/{settings-webui-DZf9O-6j.js → settings-webui-Bj9dJDcm.js} +2 -2
- package/out/renderer/assets/settings-webui-Bj9dJDcm.js.br +0 -0
- package/out/renderer/assets/settings-webui-Bj9dJDcm.js.gz +0 -0
- package/out/renderer/assets/{skills-installed-Dp0r_4I-.js → skills-installed-Bhd5a33I.js} +4 -4
- package/out/renderer/assets/skills-installed-Bhd5a33I.js.br +0 -0
- package/out/renderer/assets/skills-installed-Bhd5a33I.js.gz +0 -0
- package/out/renderer/assets/{skills-layout-D-5rlY38.js → skills-layout-DZFDa1cw.js} +2 -2
- package/out/renderer/assets/skills-layout-DZFDa1cw.js.br +0 -0
- package/out/renderer/assets/skills-layout-DZFDa1cw.js.gz +0 -0
- package/out/renderer/assets/{skills-skills-sh-CcLoIrSw.js → skills-skills-sh-DF59nekm.js} +4 -4
- package/out/renderer/assets/skills-skills-sh-DF59nekm.js.br +0 -0
- package/out/renderer/assets/skills-skills-sh-DF59nekm.js.gz +0 -0
- package/out/renderer/assets/{sortable.esm-knFxDx0Y.js → sortable.esm-BlhN8Kkg.js} +1 -1
- package/out/renderer/assets/sortable.esm-BlhN8Kkg.js.br +0 -0
- package/out/renderer/assets/sortable.esm-BlhN8Kkg.js.gz +0 -0
- package/out/renderer/assets/{standard-schema-dKXoCekr.js → standard-schema-CGAs4bGi.js} +1 -1
- package/out/renderer/assets/standard-schema-CGAs4bGi.js.br +0 -0
- package/out/renderer/assets/standard-schema-CGAs4bGi.js.gz +0 -0
- package/out/renderer/assets/{stateDiagram-FHFEXIEX-DWWz4PMv.js → stateDiagram-FHFEXIEX-DappRrGm.js} +9 -9
- package/out/renderer/assets/stateDiagram-FHFEXIEX-DappRrGm.js.br +0 -0
- package/out/renderer/assets/stateDiagram-FHFEXIEX-DappRrGm.js.gz +0 -0
- package/out/renderer/assets/{stateDiagram-v2-QKLJ7IA2-Dm2qD5bg.js → stateDiagram-v2-QKLJ7IA2-mbgJN2Ya.js} +5 -5
- package/out/renderer/assets/{task-C5dyYbfn.js → task-C7tCZ6e3.js} +11 -11
- package/out/renderer/assets/task-C7tCZ6e3.js.br +0 -0
- package/out/renderer/assets/task-C7tCZ6e3.js.gz +0 -0
- package/out/renderer/assets/{textarea-DTqKlQbL.js → textarea-DNSPhqFr.js} +2 -2
- package/out/renderer/assets/{timeline-definition-GMOUNBTQ-A1tEoL9d.js → timeline-definition-GMOUNBTQ-o8XIUDyn.js} +3 -3
- package/out/renderer/assets/timeline-definition-GMOUNBTQ-o8XIUDyn.js.br +0 -0
- package/out/renderer/assets/timeline-definition-GMOUNBTQ-o8XIUDyn.js.gz +0 -0
- package/out/renderer/assets/{vennDiagram-DHZGUBPP-tNdYrJi_.js → vennDiagram-DHZGUBPP-mnc6bpmR.js} +2 -2
- package/out/renderer/assets/vennDiagram-DHZGUBPP-mnc6bpmR.js.br +0 -0
- package/out/renderer/assets/vennDiagram-DHZGUBPP-mnc6bpmR.js.gz +0 -0
- package/out/renderer/assets/{wardley-RL74JXVD-BxN5_Sp6.js → wardley-RL74JXVD-wdJYeEiD.js} +4 -4
- package/out/renderer/assets/wardley-RL74JXVD-wdJYeEiD.js.br +0 -0
- package/out/renderer/assets/wardley-RL74JXVD-wdJYeEiD.js.gz +0 -0
- package/out/renderer/assets/{wardleyDiagram-NUSXRM2D-B_3jA8zU.js → wardleyDiagram-NUSXRM2D-Ddx6k7tJ.js} +6 -6
- package/out/renderer/assets/wardleyDiagram-NUSXRM2D-Ddx6k7tJ.js.br +0 -0
- package/out/renderer/assets/wardleyDiagram-NUSXRM2D-Ddx6k7tJ.js.gz +0 -0
- package/out/renderer/assets/{wrench-7r-g9MUq.js → wrench-BsjH8RPm.js} +1 -1
- package/out/renderer/assets/wrench-BsjH8RPm.js.br +0 -0
- package/out/renderer/assets/wrench-BsjH8RPm.js.gz +0 -0
- package/out/renderer/assets/{xlsx-view-Bv0YhA5m.js → xlsx-view-CQd4jbk-.js} +21 -13
- package/out/renderer/assets/xlsx-view-CQd4jbk-.js.br +0 -0
- package/out/renderer/assets/xlsx-view-CQd4jbk-.js.gz +0 -0
- package/out/renderer/assets/{xychartDiagram-5P7HB3ND-NNVuzC4j.js → xychartDiagram-5P7HB3ND-VIQ9wuz0.js} +3 -3
- package/out/renderer/assets/xychartDiagram-5P7HB3ND-VIQ9wuz0.js.br +0 -0
- package/out/renderer/assets/xychartDiagram-5P7HB3ND-VIQ9wuz0.js.gz +0 -0
- package/out/renderer/index.html +2 -2
- package/out/renderer/index.html.br +0 -0
- package/out/renderer/index.html.gz +0 -0
- package/out/scripts/mcp-skills/server.mjs +1 -1
- package/out/server/main.js +44 -1
- package/package.json +1 -1
- package/out/renderer/assets/_baseUniq-CJr3HkLS.js.br +0 -0
- package/out/renderer/assets/_baseUniq-CJr3HkLS.js.gz +0 -0
- package/out/renderer/assets/arc-POsBroTF.js.br +0 -0
- package/out/renderer/assets/arc-POsBroTF.js.gz +0 -0
- package/out/renderer/assets/architectureDiagram-Q4EWVU46-CmToUhDb.js.br +0 -0
- package/out/renderer/assets/architectureDiagram-Q4EWVU46-CmToUhDb.js.gz +0 -0
- package/out/renderer/assets/automation-Cyz3eLWp.js.br +0 -0
- package/out/renderer/assets/automation-Cyz3eLWp.js.gz +0 -0
- package/out/renderer/assets/blockDiagram-DXYQGD6D-M2nnTg9f.js.br +0 -0
- package/out/renderer/assets/blockDiagram-DXYQGD6D-M2nnTg9f.js.gz +0 -0
- package/out/renderer/assets/c4Diagram-AHTNJAMY-CwLtsy_0.js.br +0 -0
- package/out/renderer/assets/c4Diagram-AHTNJAMY-CwLtsy_0.js.gz +0 -0
- package/out/renderer/assets/chunk-4TB4RGXK-DXLZpPY5.js.br +0 -0
- package/out/renderer/assets/chunk-4TB4RGXK-DXLZpPY5.js.gz +0 -0
- package/out/renderer/assets/chunk-EDXVE4YY-CNjJEQfY.js.br +0 -0
- package/out/renderer/assets/chunk-EDXVE4YY-CNjJEQfY.js.gz +0 -0
- package/out/renderer/assets/chunk-OYMX7WX6-BG4B1VQ7.js.br +0 -0
- package/out/renderer/assets/chunk-OYMX7WX6-BG4B1VQ7.js.gz +0 -0
- package/out/renderer/assets/chunk-YZCP3GAM-jeoI2tsD.js.br +0 -0
- package/out/renderer/assets/chunk-YZCP3GAM-jeoI2tsD.js.gz +0 -0
- package/out/renderer/assets/code-editor-CEXlC4aV.js.br +0 -0
- package/out/renderer/assets/code-editor-CEXlC4aV.js.gz +0 -0
- package/out/renderer/assets/collapsible-CMuCJUWG.js.br +0 -0
- package/out/renderer/assets/collapsible-CMuCJUWG.js.gz +0 -0
- package/out/renderer/assets/cose-bilkent-S5V4N54A-B3bgImVS.js.br +0 -0
- package/out/renderer/assets/cose-bilkent-S5V4N54A-B3bgImVS.js.gz +0 -0
- package/out/renderer/assets/dagre-KV5264BT-DTbumBA_.js.br +0 -0
- package/out/renderer/assets/dagre-KV5264BT-DTbumBA_.js.gz +0 -0
- package/out/renderer/assets/diagram-5BDNPKRD-B34Y6e8q.js.br +0 -0
- package/out/renderer/assets/diagram-5BDNPKRD-B34Y6e8q.js.gz +0 -0
- package/out/renderer/assets/diagram-G4DWMVQ6-BBiBmFR4.js.br +0 -0
- package/out/renderer/assets/diagram-G4DWMVQ6-BBiBmFR4.js.gz +0 -0
- package/out/renderer/assets/diagram-MMDJMWI5-P-YslDjG.js.br +0 -0
- package/out/renderer/assets/diagram-MMDJMWI5-P-YslDjG.js.gz +0 -0
- package/out/renderer/assets/diagram-TYMM5635-D_cLard_.js.br +0 -0
- package/out/renderer/assets/diagram-TYMM5635-D_cLard_.js.gz +0 -0
- package/out/renderer/assets/erDiagram-SMLLAGMA-C1MHqKvC.js.br +0 -0
- package/out/renderer/assets/erDiagram-SMLLAGMA-C1MHqKvC.js.gz +0 -0
- package/out/renderer/assets/field-DR3J0r9e.js.br +0 -0
- package/out/renderer/assets/field-DR3J0r9e.js.gz +0 -0
- package/out/renderer/assets/flowDiagram-DWJPFMVM-DprlEc3Z.js.br +0 -0
- package/out/renderer/assets/flowDiagram-DWJPFMVM-DprlEc3Z.js.gz +0 -0
- package/out/renderer/assets/ganttDiagram-T4ZO3ILL-CbTdumBm.js.br +0 -0
- package/out/renderer/assets/ganttDiagram-T4ZO3ILL-CbTdumBm.js.gz +0 -0
- package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-06bme-w8.js.br +0 -0
- package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-06bme-w8.js.gz +0 -0
- package/out/renderer/assets/graph-BZhxluo9.js.br +0 -0
- package/out/renderer/assets/graph-BZhxluo9.js.gz +0 -0
- package/out/renderer/assets/index-LmYTNvdF.js.br +0 -0
- package/out/renderer/assets/index-LmYTNvdF.js.gz +0 -0
- package/out/renderer/assets/index-aGJ_yZib.css +0 -382
- package/out/renderer/assets/index-aGJ_yZib.css.br +0 -0
- package/out/renderer/assets/index-aGJ_yZib.css.gz +0 -0
- package/out/renderer/assets/infoDiagram-42DDH7IO-DqivEzWL.js.br +0 -0
- package/out/renderer/assets/infoDiagram-42DDH7IO-DqivEzWL.js.gz +0 -0
- package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-BKcg_z4w.js.br +0 -0
- package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-BKcg_z4w.js.gz +0 -0
- package/out/renderer/assets/item-BHEUMM9H.js.br +0 -0
- package/out/renderer/assets/item-BHEUMM9H.js.gz +0 -0
- package/out/renderer/assets/journeyDiagram-VCZTEJTY-Bvv8xuxQ.js.br +0 -0
- package/out/renderer/assets/journeyDiagram-VCZTEJTY-Bvv8xuxQ.js.gz +0 -0
- package/out/renderer/assets/kanban-definition-6JOO6SKY-C-gRMpeM.js.br +0 -0
- package/out/renderer/assets/kanban-definition-6JOO6SKY-C-gRMpeM.js.gz +0 -0
- package/out/renderer/assets/layout-B4dSyItA.js.br +0 -0
- package/out/renderer/assets/layout-B4dSyItA.js.gz +0 -0
- package/out/renderer/assets/linear-CoVhuer7.js.br +0 -0
- package/out/renderer/assets/linear-CoVhuer7.js.gz +0 -0
- package/out/renderer/assets/mermaid-GHXKKRXX-CZqkhGx7.js.br +0 -0
- package/out/renderer/assets/mermaid-GHXKKRXX-CZqkhGx7.js.gz +0 -0
- package/out/renderer/assets/min-emzuJjmk.js.br +0 -0
- package/out/renderer/assets/min-emzuJjmk.js.gz +0 -0
- package/out/renderer/assets/mindmap-definition-QFDTVHPH-DQ4JNECm.js.br +0 -0
- package/out/renderer/assets/mindmap-definition-QFDTVHPH-DQ4JNECm.js.gz +0 -0
- package/out/renderer/assets/pieDiagram-DEJITSTG-0H6CGQQt.js.br +0 -0
- package/out/renderer/assets/pieDiagram-DEJITSTG-0H6CGQQt.js.gz +0 -0
- package/out/renderer/assets/quadrantDiagram-34T5L4WZ-D0aPKp5z.js.br +0 -0
- package/out/renderer/assets/quadrantDiagram-34T5L4WZ-D0aPKp5z.js.gz +0 -0
- package/out/renderer/assets/refresh-cw-Bvm578nW.js +0 -11
- package/out/renderer/assets/requirementDiagram-MS252O5E-BkzwapW_.js.br +0 -0
- package/out/renderer/assets/requirementDiagram-MS252O5E-BkzwapW_.js.gz +0 -0
- package/out/renderer/assets/resizable-cStzNJ8V.js.br +0 -0
- package/out/renderer/assets/resizable-cStzNJ8V.js.gz +0 -0
- package/out/renderer/assets/sankeyDiagram-XADWPNL6-Dbde7usj.js.br +0 -0
- package/out/renderer/assets/sankeyDiagram-XADWPNL6-Dbde7usj.js.gz +0 -0
- package/out/renderer/assets/schedule-DNMCsk-G.js.br +0 -0
- package/out/renderer/assets/schedule-DNMCsk-G.js.gz +0 -0
- package/out/renderer/assets/sequenceDiagram-FGHM5R23-DI8l1pSL.js.br +0 -0
- package/out/renderer/assets/sequenceDiagram-FGHM5R23-DI8l1pSL.js.gz +0 -0
- package/out/renderer/assets/session-Bn5k9ScR.js.br +0 -0
- package/out/renderer/assets/session-Bn5k9ScR.js.gz +0 -0
- package/out/renderer/assets/setting-dialog-sqfPfGsy.js.br +0 -0
- package/out/renderer/assets/setting-dialog-sqfPfGsy.js.gz +0 -0
- package/out/renderer/assets/settings-agents-Bntc31Nn.js.br +0 -0
- package/out/renderer/assets/settings-agents-Bntc31Nn.js.gz +0 -0
- package/out/renderer/assets/settings-general-DhbLb9cP.js.br +0 -0
- package/out/renderer/assets/settings-general-DhbLb9cP.js.gz +0 -0
- package/out/renderer/assets/settings-ilink-C7nGGjwT.js.br +0 -0
- package/out/renderer/assets/settings-ilink-C7nGGjwT.js.gz +0 -0
- package/out/renderer/assets/settings-image-generation-H2dgqG7Y.js.br +0 -0
- package/out/renderer/assets/settings-image-generation-H2dgqG7Y.js.gz +0 -0
- package/out/renderer/assets/settings-layout-ATto1xpJ.js.br +0 -0
- package/out/renderer/assets/settings-layout-ATto1xpJ.js.gz +0 -0
- package/out/renderer/assets/settings-mcp-DUdMuoJ-.js.br +0 -0
- package/out/renderer/assets/settings-mcp-DUdMuoJ-.js.gz +0 -0
- package/out/renderer/assets/settings-memory-CJLG4aHW.js.br +0 -0
- package/out/renderer/assets/settings-memory-CJLG4aHW.js.gz +0 -0
- package/out/renderer/assets/settings-snippets-B4VcnD5Z.js.br +0 -0
- package/out/renderer/assets/settings-snippets-B4VcnD5Z.js.gz +0 -0
- package/out/renderer/assets/settings-speech-to-text-DQ7lfkTu.js.br +0 -0
- package/out/renderer/assets/settings-speech-to-text-DQ7lfkTu.js.gz +0 -0
- package/out/renderer/assets/settings-webui-DZf9O-6j.js.br +0 -0
- package/out/renderer/assets/settings-webui-DZf9O-6j.js.gz +0 -0
- package/out/renderer/assets/skills-installed-Dp0r_4I-.js.br +0 -0
- package/out/renderer/assets/skills-installed-Dp0r_4I-.js.gz +0 -0
- package/out/renderer/assets/skills-layout-D-5rlY38.js.br +0 -0
- package/out/renderer/assets/skills-layout-D-5rlY38.js.gz +0 -0
- package/out/renderer/assets/skills-skills-sh-CcLoIrSw.js.br +0 -0
- package/out/renderer/assets/skills-skills-sh-CcLoIrSw.js.gz +0 -0
- package/out/renderer/assets/sortable.esm-knFxDx0Y.js.br +0 -0
- package/out/renderer/assets/sortable.esm-knFxDx0Y.js.gz +0 -0
- package/out/renderer/assets/standard-schema-dKXoCekr.js.br +0 -0
- package/out/renderer/assets/standard-schema-dKXoCekr.js.gz +0 -0
- package/out/renderer/assets/stateDiagram-FHFEXIEX-DWWz4PMv.js.br +0 -0
- package/out/renderer/assets/stateDiagram-FHFEXIEX-DWWz4PMv.js.gz +0 -0
- package/out/renderer/assets/task-C5dyYbfn.js.br +0 -0
- package/out/renderer/assets/task-C5dyYbfn.js.gz +0 -0
- package/out/renderer/assets/timeline-definition-GMOUNBTQ-A1tEoL9d.js.br +0 -0
- package/out/renderer/assets/timeline-definition-GMOUNBTQ-A1tEoL9d.js.gz +0 -0
- package/out/renderer/assets/vennDiagram-DHZGUBPP-tNdYrJi_.js.br +0 -0
- package/out/renderer/assets/vennDiagram-DHZGUBPP-tNdYrJi_.js.gz +0 -0
- package/out/renderer/assets/wardley-RL74JXVD-BxN5_Sp6.js.br +0 -0
- package/out/renderer/assets/wardley-RL74JXVD-BxN5_Sp6.js.gz +0 -0
- package/out/renderer/assets/wardleyDiagram-NUSXRM2D-B_3jA8zU.js.br +0 -0
- package/out/renderer/assets/wardleyDiagram-NUSXRM2D-B_3jA8zU.js.gz +0 -0
- package/out/renderer/assets/wrench-7r-g9MUq.js.br +0 -0
- package/out/renderer/assets/wrench-7r-g9MUq.js.gz +0 -0
- package/out/renderer/assets/xlsx-view-Bv0YhA5m.js.br +0 -0
- package/out/renderer/assets/xlsx-view-Bv0YhA5m.js.gz +0 -0
- package/out/renderer/assets/xychartDiagram-5P7HB3ND-NNVuzC4j.js.br +0 -0
- package/out/renderer/assets/xychartDiagram-5P7HB3ND-NNVuzC4j.js.gz +0 -0
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { T as Textarea } from "./textarea-
|
|
3
|
-
import { F as FieldGroup, a as Field, b as FieldLabel } from "./field-
|
|
1
|
+
import { c as createLucideIcon, u as useTranslation, r as reactExports, j as jsxRuntimeExports, v as Select, w as SelectTrigger, x as SelectValue, y as SelectContent, z as SelectItem, I as Input, b as useMessage, a as useAppStore, f as request, D as Dialog, p as DialogContent, q as DialogHeader, s as DialogTitle, t as DialogDescription, af as ALL_FEATURES, ag as FEATURE_I18N_KEYS, d as Switch, H as DialogFooter, B as Button, R as LoaderCircle } from "./index-BUwXrbHW.js";
|
|
2
|
+
import { T as Textarea } from "./textarea-DNSPhqFr.js";
|
|
3
|
+
import { F as FieldGroup, a as Field, b as FieldLabel } from "./field-BPsDfe4e.js";
|
|
4
4
|
const __iconNode = [
|
|
5
5
|
[
|
|
6
6
|
"path",
|
|
Binary file
|
|
Binary file
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { u as useTranslation, r as reactExports, j as jsxRuntimeExports, D as Dialog, p as DialogContent, q as DialogHeader, s as DialogTitle, t as DialogDescription, I as Input, A as DropdownMenu, E as DropdownMenuTrigger, B as Button, F as DropdownMenuContent, G as DropdownMenuItem, H as DialogFooter, v as Select, w as SelectTrigger, x as SelectValue, y as SelectContent, z as SelectItem, a as useAppStore, b as useMessage, S as ScrollArea, k as ContextMenu, l as ContextMenuTrigger,
|
|
2
|
-
import { B as BookOpen, o as openGuide } from "./open-guide-
|
|
3
|
-
import { u as useSensors, a as useSensor, D as DndContext, c as closestCenter, S as SortableContext, v as verticalListSortingStrategy, s as sortableKeyboardCoordinates, K as KeyboardSensor, P as PointerSensor, b as useSortable, C as CSS, G as GripVertical } from "./sortable.esm-
|
|
4
|
-
import { u as useForm, C as Controller, i } from "./standard-schema-
|
|
5
|
-
import { T as Textarea } from "./textarea-
|
|
6
|
-
import { F as FieldGroup, a as Field, b as FieldLabel, c as FieldError } from "./field-
|
|
7
|
-
import { E as Ellipsis } from "./ellipsis-
|
|
1
|
+
import { u as useTranslation, r as reactExports, j as jsxRuntimeExports, D as Dialog, p as DialogContent, q as DialogHeader, s as DialogTitle, t as DialogDescription, I as Input, A as DropdownMenu, E as DropdownMenuTrigger, B as Button, F as DropdownMenuContent, G as DropdownMenuItem, H as DialogFooter, v as Select, w as SelectTrigger, x as SelectValue, y as SelectContent, z as SelectItem, a as useAppStore, b as useMessage, S as ScrollArea, k as ContextMenu, l as ContextMenuTrigger, d as Switch, m as ContextMenuContent, n as ContextMenuItem, P as Pencil, a6 as RefreshCw, o as ContextMenuSeparator, T as Trash2, ac as resetAgent, g as extractErrorMessage, ad as clearAgentSessions, ae as updateAgentSettings } from "./index-BUwXrbHW.js";
|
|
2
|
+
import { B as BookOpen, o as openGuide } from "./open-guide-BqiUQfrM.js";
|
|
3
|
+
import { u as useSensors, a as useSensor, D as DndContext, c as closestCenter, S as SortableContext, v as verticalListSortingStrategy, s as sortableKeyboardCoordinates, K as KeyboardSensor, P as PointerSensor, b as useSortable, C as CSS, G as GripVertical } from "./sortable.esm-BlhN8Kkg.js";
|
|
4
|
+
import { u as useForm, C as Controller, i } from "./standard-schema-CGAs4bGi.js";
|
|
5
|
+
import { T as Textarea } from "./textarea-DNSPhqFr.js";
|
|
6
|
+
import { F as FieldGroup, a as Field, b as FieldLabel, c as FieldError } from "./field-BPsDfe4e.js";
|
|
7
|
+
import { E as Ellipsis } from "./ellipsis-92s4sSUO.js";
|
|
8
8
|
import { o as object, s as string } from "./schemas-c0X-G5_P.js";
|
|
9
|
-
import { P as Plus } from "./plus-
|
|
10
|
-
import {
|
|
11
|
-
import { C as CircleX } from "./circle-x-B1kBsMlS.js";
|
|
9
|
+
import { P as Plus } from "./plus-C5XdFVFm.js";
|
|
10
|
+
import { C as CircleX } from "./circle-x-D_gJIgxf.js";
|
|
12
11
|
function isValidStringMap$1(raw) {
|
|
13
12
|
const trimmed = raw.trim();
|
|
14
13
|
if (!trimmed) return true;
|
|
@@ -694,7 +693,7 @@ function AgentSortableItem({ id, children }) {
|
|
|
694
693
|
type: "button",
|
|
695
694
|
...attributes,
|
|
696
695
|
...listeners,
|
|
697
|
-
className: "cursor-grab active:cursor-grabbing p-0.5 rounded hover:bg-accent/50 text-muted-foreground shrink-0",
|
|
696
|
+
className: "-ml-4.5 cursor-grab active:cursor-grabbing p-0.5 rounded hover:bg-accent/50 text-muted-foreground shrink-0",
|
|
698
697
|
title: t("settings.agents.dragToReorder", "Drag to reorder"),
|
|
699
698
|
children: /* @__PURE__ */ jsxRuntimeExports.jsx(GripVertical, { className: "size-3.5 -ml-1" })
|
|
700
699
|
}
|
|
@@ -724,7 +723,18 @@ function SettingsAgents() {
|
|
|
724
723
|
}, [configuredAgents]);
|
|
725
724
|
const handleSave = async (updatedAgents) => {
|
|
726
725
|
try {
|
|
727
|
-
|
|
726
|
+
const currentAgents = useAppStore.getState().configuredAgents;
|
|
727
|
+
const currentById = new Map(currentAgents.map((agent) => [agent.id, agent]));
|
|
728
|
+
const updatedById = new Map(updatedAgents.map((agent) => [agent.id, agent]));
|
|
729
|
+
const affectedAgentIds = /* @__PURE__ */ new Set();
|
|
730
|
+
for (const [id, currentAgent] of currentById) {
|
|
731
|
+
const updatedAgent = updatedById.get(id);
|
|
732
|
+
if (!updatedAgent || JSON.stringify(currentAgent) !== JSON.stringify(updatedAgent)) {
|
|
733
|
+
affectedAgentIds.add(id);
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
const sessionIds = useAppStore.getState().sessions.filter((session) => affectedAgentIds.has(session.agentId)).map((session) => session.id);
|
|
737
|
+
await updateAgentSettings(updatedAgents, sessionIds);
|
|
728
738
|
setConfiguredAgents(updatedAgents);
|
|
729
739
|
} catch (err) {
|
|
730
740
|
toast.error(
|
|
@@ -819,7 +829,8 @@ function SettingsAgents() {
|
|
|
819
829
|
};
|
|
820
830
|
const handleReset = async (id) => {
|
|
821
831
|
try {
|
|
822
|
-
|
|
832
|
+
const sessionIds = useAppStore.getState().sessions.filter((session) => session.agentId === id).map((session) => session.id);
|
|
833
|
+
await resetAgent(id, sessionIds);
|
|
823
834
|
toast.success(t("settings.agents.resetSuccess", "Agent reset."));
|
|
824
835
|
} catch (err) {
|
|
825
836
|
toast.error(
|
|
@@ -841,7 +852,8 @@ function SettingsAgents() {
|
|
|
841
852
|
});
|
|
842
853
|
if (!result) return;
|
|
843
854
|
try {
|
|
844
|
-
const
|
|
855
|
+
const sessionIds = useAppStore.getState().sessions.filter((session) => session.agentId === id).map((session) => session.id);
|
|
856
|
+
const res = await clearAgentSessions(id, sessionIds);
|
|
845
857
|
toast.success(
|
|
846
858
|
t("settings.agents.deleteAllSessionsSuccess", "{{count}} session(s) deleted.", {
|
|
847
859
|
count: res.deletedSessionIds.length
|
|
Binary file
|
|
Binary file
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as Field, b as FieldLabel } from "./field-
|
|
1
|
+
import { aS as shimExports, aT as NOOP, aU as useCSPContext, j as jsxRuntimeExports, u as useTranslation, a as useAppStore, b as useMessage, r as reactExports, D as Dialog, p as DialogContent, q as DialogHeader, s as DialogTitle, v as Select, w as SelectTrigger, x as SelectValue, y as SelectContent, z as SelectItem, I as Input, H as DialogFooter, B as Button, f as request, i as isWebUI, V as electron, g as extractErrorMessage, aV as clamp, aW as fieldValidityMapping, av as formatErrorMessage, ar as useBaseUiId, as as useStableCallback, aX as useFormContext, aY as useFieldRootContext, aZ as useLabelableContext, ap as useControlled, aI as none, a_ as useRegisterFieldControl, a$ as useValueChanged, b0 as areArraysEqual, at as createChangeEventDetails, b1 as keyboard, b2 as inputChange, b3 as createGenericEventDetails, aD as useIsoLayoutEffect, b4 as activeElement, b5 as ownerDocument, b6 as contains, ay as useRenderElement, b7 as CompositeList, b8 as getDefaultLabelId, b9 as resolveAriaLabelledBy, ba as useDirection, aH as getWindow, aB as useValueAsRef, bb as getTarget, bc as useAnimationFrame, aG as addEventListener, bd as isElement, be as drag, bf as trackPress, bg as useLabelableId, bh as useCompositeListItem, ab as mergeProps, bi as visuallyHidden, aA as useMergedRefs, bj as COMPOSITE_KEYS, bk as PAGE_UP, bl as PAGE_DOWN, bm as HOME, bn as END, bo as ARROW_LEFT, bp as ARROW_DOWN, bq as ARROW_RIGHT, br as ARROW_UP, bs as matchesFocusVisible, M as cn, S as ScrollArea, d as Switch, a7 as ChevronRight, bt as EDITOR_LABELS, bu as L, bv as N, bw as _, bx as D, by as w } from "./index-BUwXrbHW.js";
|
|
2
|
+
import { a as Field, b as FieldLabel } from "./field-BPsDfe4e.js";
|
|
3
3
|
const script = "";
|
|
4
4
|
function subscribe() {
|
|
5
5
|
return NOOP;
|
|
@@ -1538,7 +1538,7 @@ function Slider({
|
|
|
1538
1538
|
SliderThumb,
|
|
1539
1539
|
{
|
|
1540
1540
|
"data-slot": "slider-thumb",
|
|
1541
|
-
className: "relative block size-3 shrink-0 rounded-full border border-ring bg-white ring-ring/50 transition-[color,box-shadow] select-none after:absolute after:-inset-2 hover:ring-
|
|
1541
|
+
className: "relative block size-3 shrink-0 rounded-full border border-ring bg-white ring-ring/50 transition-[color,box-shadow] select-none after:absolute after:-inset-2 hover:ring-1 focus-visible:ring-1 focus-visible:outline-hidden active:ring-1 disabled:pointer-events-none disabled:opacity-50"
|
|
1542
1542
|
},
|
|
1543
1543
|
index
|
|
1544
1544
|
))
|
|
@@ -1559,6 +1559,8 @@ function SettingsGeneral() {
|
|
|
1559
1559
|
setEditor,
|
|
1560
1560
|
sound,
|
|
1561
1561
|
setSound,
|
|
1562
|
+
voiceInput,
|
|
1563
|
+
setVoiceInput,
|
|
1562
1564
|
proxy
|
|
1563
1565
|
} = useAppStore();
|
|
1564
1566
|
const { toast } = useMessage();
|
|
@@ -1609,6 +1611,17 @@ function SettingsGeneral() {
|
|
|
1609
1611
|
);
|
|
1610
1612
|
}
|
|
1611
1613
|
};
|
|
1614
|
+
const handleVoiceInputShortcutChange = async (checked) => {
|
|
1615
|
+
const newVoiceInput = { ...voiceInput, altDoublePress: checked };
|
|
1616
|
+
setVoiceInput(newVoiceInput);
|
|
1617
|
+
try {
|
|
1618
|
+
await request.updateSettings({ voiceInput: newVoiceInput });
|
|
1619
|
+
} catch {
|
|
1620
|
+
toast.error(
|
|
1621
|
+
t("settings.general.saveVoiceInputFailed", "Failed to save voice input setting.")
|
|
1622
|
+
);
|
|
1623
|
+
}
|
|
1624
|
+
};
|
|
1612
1625
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 flex flex-col h-full", children: [
|
|
1613
1626
|
/* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { className: "flex-1 overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6 px-5 py-4 w-full max-w-4xl mx-auto", children: [
|
|
1614
1627
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
@@ -1685,6 +1698,26 @@ function SettingsGeneral() {
|
|
|
1685
1698
|
] }) })
|
|
1686
1699
|
] }),
|
|
1687
1700
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "border-t border-border" }),
|
|
1701
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
1702
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: "text-xs font-semibold text-muted-foreground/60 uppercase tracking-wider mb-3", children: t("settings.general.groupVoiceInput", "Voice Input") }),
|
|
1703
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
1704
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-1.5", children: [
|
|
1705
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "text-sm font-medium leading-none", children: t("settings.general.altDoublePress", "Double-press Alt") }),
|
|
1706
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs text-muted-foreground/90", children: t(
|
|
1707
|
+
"settings.general.altDoublePressDesc",
|
|
1708
|
+
"Double-press Alt quickly while an input is focused to start or stop voice input."
|
|
1709
|
+
) })
|
|
1710
|
+
] }),
|
|
1711
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1712
|
+
Switch,
|
|
1713
|
+
{
|
|
1714
|
+
checked: voiceInput.altDoublePress,
|
|
1715
|
+
onCheckedChange: handleVoiceInputShortcutChange
|
|
1716
|
+
}
|
|
1717
|
+
)
|
|
1718
|
+
] }) })
|
|
1719
|
+
] }),
|
|
1720
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "border-t border-border" }),
|
|
1688
1721
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
1689
1722
|
/* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: "text-xs font-semibold text-muted-foreground/60 uppercase tracking-wider mb-3", children: t("settings.general.groupNetwork", "Network") }),
|
|
1690
1723
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { B as BookOpen, o as openGuide } from "./open-guide-
|
|
3
|
-
import { L as Link2, E as ExternalLink, C as CircleAlert } from "./link-2-
|
|
1
|
+
import { c as createLucideIcon, u as useTranslation, a as useAppStore, r as reactExports, Y as subscribe, f as request, j as jsxRuntimeExports, S as ScrollArea, a0 as CircleCheck, R as LoaderCircle, v as Select, w as SelectTrigger, x as SelectValue, y as SelectContent, a4 as SelectGroup, z as SelectItem, a5 as SelectLabel, d as Switch, V as electron } from "./index-BUwXrbHW.js";
|
|
2
|
+
import { B as BookOpen, o as openGuide } from "./open-guide-BqiUQfrM.js";
|
|
3
|
+
import { L as Link2, E as ExternalLink, C as CircleAlert } from "./link-2-DpdZfD3m.js";
|
|
4
4
|
const __iconNode = [
|
|
5
5
|
["path", { d: "M9 17H7A5 5 0 0 1 7 7", key: "10o201" }],
|
|
6
6
|
["path", { d: "M15 7h2a5 5 0 0 1 4 8", key: "1d3206" }],
|
|
Binary file
|
|
Binary file
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { u as useTranslation, a as useAppStore, b as useMessage, r as reactExports, j as jsxRuntimeExports, B as Button, S as ScrollArea, k as ContextMenu, l as ContextMenuTrigger,
|
|
2
|
-
import { u as useForm, C as Controller, i } from "./standard-schema-
|
|
3
|
-
import { T as Textarea } from "./textarea-
|
|
4
|
-
import { F as FieldGroup, a as Field, b as FieldLabel, c as FieldError } from "./field-
|
|
5
|
-
import { P as Plus } from "./plus-
|
|
6
|
-
import { E as Ellipsis } from "./ellipsis-
|
|
1
|
+
import { u as useTranslation, a as useAppStore, b as useMessage, r as reactExports, j as jsxRuntimeExports, B as Button, S as ScrollArea, k as ContextMenu, l as ContextMenuTrigger, d as Switch, m as ContextMenuContent, n as ContextMenuItem, P as Pencil, o as ContextMenuSeparator, T as Trash2, D as Dialog, p as DialogContent, q as DialogHeader, s as DialogTitle, t as DialogDescription, I as Input, v as Select, w as SelectTrigger, x as SelectValue, y as SelectContent, z as SelectItem, A as DropdownMenu, E as DropdownMenuTrigger, F as DropdownMenuContent, G as DropdownMenuItem, H as DialogFooter, f as request, g as extractErrorMessage, J as generateUUID } from "./index-BUwXrbHW.js";
|
|
2
|
+
import { u as useForm, C as Controller, i } from "./standard-schema-CGAs4bGi.js";
|
|
3
|
+
import { T as Textarea } from "./textarea-DNSPhqFr.js";
|
|
4
|
+
import { F as FieldGroup, a as Field, b as FieldLabel, c as FieldError } from "./field-BPsDfe4e.js";
|
|
5
|
+
import { P as Plus } from "./plus-C5XdFVFm.js";
|
|
6
|
+
import { E as Ellipsis } from "./ellipsis-92s4sSUO.js";
|
|
7
7
|
import { o as object, s as string } from "./schemas-c0X-G5_P.js";
|
|
8
8
|
function isValidStringMap(raw) {
|
|
9
9
|
const trimmed = raw.trim();
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { c as createLucideIcon, u as useTranslation, K as useLocation, a as useAppStore, j as jsxRuntimeExports, N as Navigate, a1 as Bot, a2 as Globe, a3 as MessageCircle, M as cn, O as NavLink, Q as Outlet } from "./index-BUwXrbHW.js";
|
|
2
|
+
import { C as Command } from "./command-BF4jOeoL.js";
|
|
3
|
+
import { W as Wrench, I as Image, B as Brain } from "./wrench-BsjH8RPm.js";
|
|
4
|
+
import { M as Mic, C as Clipboard } from "./mic-CT1bYBEV.js";
|
|
4
5
|
const __iconNode = [
|
|
5
6
|
["path", { d: "M10 5H3", key: "1qgfaw" }],
|
|
6
7
|
["path", { d: "M12 19H3", key: "yhmn1j" }],
|
|
@@ -30,6 +31,12 @@ function SettingsLayout() {
|
|
|
30
31
|
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(SlidersHorizontal, { className: "size-4" }),
|
|
31
32
|
label: t("settings.general.title", "General")
|
|
32
33
|
},
|
|
34
|
+
{
|
|
35
|
+
id: "shortcuts",
|
|
36
|
+
href: "/settings/shortcuts",
|
|
37
|
+
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(Command, { className: "size-4" }),
|
|
38
|
+
label: t("settings.shortcuts.title", "Shortcuts")
|
|
39
|
+
},
|
|
33
40
|
{
|
|
34
41
|
id: "agents",
|
|
35
42
|
href: "/settings/agents",
|
|
Binary file
|
|
Binary file
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { B as BookOpen, o as openGuide } from "./open-guide-
|
|
3
|
-
import { u as useSensors, a as useSensor, D as DndContext, c as closestCenter, S as SortableContext, v as verticalListSortingStrategy, s as sortableKeyboardCoordinates, K as KeyboardSensor, P as PointerSensor, b as useSortable, C as CSS, G as GripVertical } from "./sortable.esm-
|
|
4
|
-
import { u as useForm, C as Controller, i } from "./standard-schema-
|
|
5
|
-
import { T as Textarea } from "./textarea-
|
|
6
|
-
import { F as FieldGroup, a as Field, b as FieldLabel, c as FieldError } from "./field-
|
|
1
|
+
import { c as createLucideIcon, u as useTranslation, r as reactExports, j as jsxRuntimeExports, D as Dialog, p as DialogContent, q as DialogHeader, s as DialogTitle, t as DialogDescription, I as Input, H as DialogFooter, B as Button, a as useAppStore, b as useMessage, A as DropdownMenu, E as DropdownMenuTrigger, F as DropdownMenuContent, G as DropdownMenuItem, S as ScrollArea, k as ContextMenu, l as ContextMenuTrigger, d as Switch, m as ContextMenuContent, n as ContextMenuItem, P as Pencil, o as ContextMenuSeparator, T as Trash2, f as request, g as extractErrorMessage } from "./index-BUwXrbHW.js";
|
|
2
|
+
import { B as BookOpen, o as openGuide } from "./open-guide-BqiUQfrM.js";
|
|
3
|
+
import { u as useSensors, a as useSensor, D as DndContext, c as closestCenter, S as SortableContext, v as verticalListSortingStrategy, s as sortableKeyboardCoordinates, K as KeyboardSensor, P as PointerSensor, b as useSortable, C as CSS, G as GripVertical } from "./sortable.esm-BlhN8Kkg.js";
|
|
4
|
+
import { u as useForm, C as Controller, i } from "./standard-schema-CGAs4bGi.js";
|
|
5
|
+
import { T as Textarea } from "./textarea-DNSPhqFr.js";
|
|
6
|
+
import { F as FieldGroup, a as Field, b as FieldLabel, c as FieldError } from "./field-BPsDfe4e.js";
|
|
7
7
|
import { o as object, s as string } from "./schemas-c0X-G5_P.js";
|
|
8
|
-
import { P as Plus } from "./plus-
|
|
8
|
+
import { P as Plus } from "./plus-C5XdFVFm.js";
|
|
9
9
|
const __iconNode = [
|
|
10
10
|
["path", { d: "M12 7v6", key: "lw1j43" }],
|
|
11
11
|
["path", { d: "M15 10H9", key: "o6yqo3" }],
|
|
@@ -621,7 +621,7 @@ function McpSortableItem({ id, children }) {
|
|
|
621
621
|
type: "button",
|
|
622
622
|
...attributes,
|
|
623
623
|
...listeners,
|
|
624
|
-
className: "cursor-grab active:cursor-grabbing p-0.5 rounded hover:bg-accent/50 text-muted-foreground shrink-0",
|
|
624
|
+
className: "-ml-4.5 cursor-grab active:cursor-grabbing p-0.5 rounded hover:bg-accent/50 text-muted-foreground shrink-0",
|
|
625
625
|
title: t("settings.mcp.dragToReorder", "Drag to reorder"),
|
|
626
626
|
children: /* @__PURE__ */ jsxRuntimeExports.jsx(GripVertical, { className: "size-3.5 -ml-1" })
|
|
627
627
|
}
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { C as Collapsible, a as CollapsibleTrigger, b as CollapsibleContent } from "./collapsible-
|
|
3
|
-
import { R as RefreshCw } from "./refresh-cw-Bvm578nW.js";
|
|
1
|
+
import { c as createLucideIcon, u as useTranslation, a as useAppStore, b as useMessage, r as reactExports, f as request, j as jsxRuntimeExports, B as Button, a6 as RefreshCw, S as ScrollArea, U as FolderOpen, T as Trash2, a7 as ChevronRight, V as electron, g as extractErrorMessage } from "./index-BUwXrbHW.js";
|
|
2
|
+
import { C as Collapsible, a as CollapsibleTrigger, b as CollapsibleContent } from "./collapsible-DD6NlDid.js";
|
|
4
3
|
const __iconNode = [
|
|
5
4
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
6
5
|
["path", { d: "M4.929 4.929 19.07 19.071", key: "196cmz" }]
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { c as createLucideIcon, j as jsxRuntimeExports, M as cn, u as useTranslation, b as useMessage, a as useAppStore, r as reactExports, ah as COMMAND_DEFINITIONS, S as ScrollArea, ai as getCommandShortcuts, B as Button, D as Dialog, p as DialogContent, q as DialogHeader, s as DialogTitle, H as DialogFooter, f as request, g as extractErrorMessage, aj as shortcutPreviewFromKeyboardEvent, ak as shortcutFromKeyboardEvent, al as findShortcutConflicts } from "./index-BUwXrbHW.js";
|
|
2
|
+
import { C as Command } from "./command-BF4jOeoL.js";
|
|
3
|
+
import { A as ArrowUp, a as ArrowDown, b as ArrowRight } from "./arrow-up-1eI4tva4.js";
|
|
4
|
+
import { A as ArrowLeft } from "./arrow-left-CQqe9rrj.js";
|
|
5
|
+
const __iconNode$1 = [
|
|
6
|
+
[
|
|
7
|
+
"path",
|
|
8
|
+
{
|
|
9
|
+
d: "M9 19a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-6a1 1 0 0 1 1-1h3.293a.707.707 0 0 0 .5-1.207l-7.086-7.086a1 1 0 0 0-1.414 0l-7.086 7.086a.707.707 0 0 0 .5 1.207H8a1 1 0 0 1 1 1z",
|
|
10
|
+
key: "106j91"
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
];
|
|
14
|
+
const ArrowBigUp = createLucideIcon("arrow-big-up", __iconNode$1);
|
|
15
|
+
const __iconNode = [
|
|
16
|
+
["path", { d: "M14 3h7", key: "16f0ms" }],
|
|
17
|
+
["path", { d: "M3 3h5.28a1 1 0 0 1 .948.684l5.544 16.632a1 1 0 0 0 .949.684H21", key: "1qf1im" }]
|
|
18
|
+
];
|
|
19
|
+
const Option = createLucideIcon("option", __iconNode);
|
|
20
|
+
function ShortcutPart({ part, isMac }) {
|
|
21
|
+
if (part === "Mod") {
|
|
22
|
+
return isMac ? /* @__PURE__ */ jsxRuntimeExports.jsx(Command, { className: "size-3.5" }) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Ctrl" });
|
|
23
|
+
}
|
|
24
|
+
if (part === "Ctrl") return /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Ctrl" });
|
|
25
|
+
if (part === "Alt") return isMac ? /* @__PURE__ */ jsxRuntimeExports.jsx(Option, { className: "size-3.5" }) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Alt" });
|
|
26
|
+
if (part === "Shift") return /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowBigUp, { className: "size-3.5" });
|
|
27
|
+
if (part === "ArrowUp") return /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowUp, { className: "size-3.5" });
|
|
28
|
+
if (part === "ArrowDown") return /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowDown, { className: "size-3.5" });
|
|
29
|
+
if (part === "ArrowLeft") return /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowLeft, { className: "size-3.5" });
|
|
30
|
+
if (part === "ArrowRight") return /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowRight, { className: "size-3.5" });
|
|
31
|
+
const symbolLabels = {
|
|
32
|
+
Plus: "+",
|
|
33
|
+
Minus: "-"
|
|
34
|
+
};
|
|
35
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: symbolLabels[part] ?? part });
|
|
36
|
+
}
|
|
37
|
+
function ShortcutKeys({ shortcut, isMac, className }) {
|
|
38
|
+
const parts = shortcut.split("+").filter(Boolean);
|
|
39
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: cn("inline-flex items-center gap-1.5", className), "aria-label": shortcut, children: parts.map((part, index) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
40
|
+
"kbd",
|
|
41
|
+
{
|
|
42
|
+
className: "inline-flex h-6 min-w-6 items-center justify-center rounded-md border border-border bg-muted/60 px-1.5 text-[11px] font-medium text-foreground/80 shadow-xs",
|
|
43
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(ShortcutPart, { part, isMac })
|
|
44
|
+
},
|
|
45
|
+
`${part}-${index}`
|
|
46
|
+
)) });
|
|
47
|
+
}
|
|
48
|
+
function ShortcutCapture({ shortcut, isMac, onCancel, onChange }) {
|
|
49
|
+
const { t } = useTranslation();
|
|
50
|
+
const captureRef = reactExports.useRef(null);
|
|
51
|
+
const [previewShortcut, setPreviewShortcut] = reactExports.useState(shortcut);
|
|
52
|
+
reactExports.useEffect(() => {
|
|
53
|
+
setPreviewShortcut(shortcut);
|
|
54
|
+
window.requestAnimationFrame(() => captureRef.current?.focus());
|
|
55
|
+
}, [shortcut]);
|
|
56
|
+
const handleKeyDown = (event) => {
|
|
57
|
+
event.preventDefault();
|
|
58
|
+
event.stopPropagation();
|
|
59
|
+
if (event.key === "Escape") {
|
|
60
|
+
onCancel();
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const preview = shortcutPreviewFromKeyboardEvent(event.nativeEvent, isMac);
|
|
64
|
+
if (preview) setPreviewShortcut(preview);
|
|
65
|
+
const nextShortcut = shortcutFromKeyboardEvent(event.nativeEvent, isMac);
|
|
66
|
+
if (nextShortcut) onChange(nextShortcut);
|
|
67
|
+
};
|
|
68
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
69
|
+
"button",
|
|
70
|
+
{
|
|
71
|
+
ref: captureRef,
|
|
72
|
+
type: "button",
|
|
73
|
+
className: "flex min-h-16 w-full items-center justify-center rounded-lg border border-dashed border-ring bg-background px-4 py-3 text-xs transition-colors focus-visible:ring-1 focus-visible:ring-ring/50",
|
|
74
|
+
onKeyDown: handleKeyDown,
|
|
75
|
+
"aria-label": t("settings.shortcuts.recording", "Press a shortcut"),
|
|
76
|
+
children: previewShortcut ? /* @__PURE__ */ jsxRuntimeExports.jsx(ShortcutKeys, { shortcut: previewShortcut, isMac }) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-muted-foreground", children: t("settings.shortcuts.recording", "Press a shortcut") })
|
|
77
|
+
}
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
function sameShortcuts(left, right) {
|
|
81
|
+
return left.length === right.length && left.every((shortcut, index) => shortcut === right[index]);
|
|
82
|
+
}
|
|
83
|
+
function SettingsShortcuts() {
|
|
84
|
+
const { t } = useTranslation();
|
|
85
|
+
const { toast } = useMessage();
|
|
86
|
+
const shortcuts = useAppStore((state) => state.shortcuts);
|
|
87
|
+
const setShortcuts = useAppStore((state) => state.setShortcuts);
|
|
88
|
+
const isMacApp = useAppStore((state) => state.isMacApp);
|
|
89
|
+
const [dialogCommandId, setDialogCommandId] = reactExports.useState(null);
|
|
90
|
+
const [dialogShortcut, setDialogShortcut] = reactExports.useState(null);
|
|
91
|
+
const [conflict, setConflict] = reactExports.useState(null);
|
|
92
|
+
const isMac = reactExports.useMemo(
|
|
93
|
+
() => isMacApp || typeof navigator !== "undefined" && /mac|iphone|ipad|ipod/i.test(navigator.platform),
|
|
94
|
+
[isMacApp]
|
|
95
|
+
);
|
|
96
|
+
const categoryCommands = reactExports.useMemo(
|
|
97
|
+
() => COMMAND_DEFINITIONS.filter((command) => command.category === "navigation"),
|
|
98
|
+
[]
|
|
99
|
+
);
|
|
100
|
+
const persistShortcuts = async (nextShortcuts) => {
|
|
101
|
+
const previousShortcuts = shortcuts;
|
|
102
|
+
setShortcuts(nextShortcuts);
|
|
103
|
+
try {
|
|
104
|
+
await request.updateSettings({ shortcuts: nextShortcuts });
|
|
105
|
+
return true;
|
|
106
|
+
} catch (error) {
|
|
107
|
+
setShortcuts(previousShortcuts);
|
|
108
|
+
toast.error(
|
|
109
|
+
extractErrorMessage(error) || t("settings.shortcuts.saveFailed", "Failed to save shortcuts.")
|
|
110
|
+
);
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
const updateShortcut = async (command, shortcut) => {
|
|
115
|
+
const nextShortcuts = { ...shortcuts };
|
|
116
|
+
const nextValue = [shortcut];
|
|
117
|
+
if (sameShortcuts(nextValue, command.defaultShortcuts)) {
|
|
118
|
+
delete nextShortcuts[command.id];
|
|
119
|
+
} else {
|
|
120
|
+
nextShortcuts[command.id] = nextValue;
|
|
121
|
+
}
|
|
122
|
+
const nextConflict = findShortcutConflicts(COMMAND_DEFINITIONS, nextShortcuts).find(
|
|
123
|
+
(item) => item.commandIds.includes(command.id)
|
|
124
|
+
);
|
|
125
|
+
if (nextConflict) {
|
|
126
|
+
const conflictingCommandId = nextConflict.commandIds.find((id) => id !== command.id);
|
|
127
|
+
if (conflictingCommandId) {
|
|
128
|
+
setConflict({
|
|
129
|
+
commandId: command.id,
|
|
130
|
+
shortcut: nextConflict.shortcut,
|
|
131
|
+
conflictingCommandId
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
setConflict(null);
|
|
137
|
+
return persistShortcuts(nextShortcuts);
|
|
138
|
+
};
|
|
139
|
+
const clearShortcut = async (command) => {
|
|
140
|
+
const nextShortcuts = { ...shortcuts, [command.id]: [] };
|
|
141
|
+
setConflict(null);
|
|
142
|
+
await persistShortcuts(nextShortcuts);
|
|
143
|
+
};
|
|
144
|
+
const resetShortcut = async (command) => {
|
|
145
|
+
const nextShortcuts = { ...shortcuts };
|
|
146
|
+
delete nextShortcuts[command.id];
|
|
147
|
+
setConflict(null);
|
|
148
|
+
await persistShortcuts(nextShortcuts);
|
|
149
|
+
};
|
|
150
|
+
const dialogCommand = dialogCommandId ? COMMAND_DEFINITIONS.find((command) => command.id === dialogCommandId) : void 0;
|
|
151
|
+
const openShortcutDialog = (command) => {
|
|
152
|
+
setConflict(null);
|
|
153
|
+
setDialogCommandId(command.id);
|
|
154
|
+
setDialogShortcut(getCommandShortcuts(command, shortcuts)[0] ?? null);
|
|
155
|
+
};
|
|
156
|
+
const closeShortcutDialog = () => {
|
|
157
|
+
setDialogCommandId(null);
|
|
158
|
+
setDialogShortcut(null);
|
|
159
|
+
setConflict(null);
|
|
160
|
+
};
|
|
161
|
+
const confirmShortcutDialog = async () => {
|
|
162
|
+
if (!dialogCommand || !dialogShortcut) return;
|
|
163
|
+
const saved = await updateShortcut(dialogCommand, dialogShortcut);
|
|
164
|
+
if (saved) closeShortcutDialog();
|
|
165
|
+
};
|
|
166
|
+
const dialogConflict = dialogCommandId && conflict?.commandId === dialogCommandId ? conflict : null;
|
|
167
|
+
const dialogConflictingCommand = dialogConflict ? COMMAND_DEFINITIONS.find((command) => command.id === dialogConflict.conflictingCommandId) : void 0;
|
|
168
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-full flex-1 flex-col", children: [
|
|
169
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { className: "flex-1 overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "w-full max-w-4xl space-y-6 px-5 py-4 mx-auto", children: [
|
|
170
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
171
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-lg font-medium", children: t("settings.shortcuts.title", "Shortcuts") }),
|
|
172
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: t("settings.shortcuts.desc", "Customize keyboard shortcuts for common actions.") })
|
|
173
|
+
] }),
|
|
174
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
175
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: "mb-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground/60", children: t("settings.shortcuts.navigation", "Navigation") }),
|
|
176
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "divide-y divide-border border-y border-border", children: categoryCommands.map((command) => {
|
|
177
|
+
const shortcut = getCommandShortcuts(command, shortcuts)[0] ?? null;
|
|
178
|
+
const hasOverride = Object.prototype.hasOwnProperty.call(shortcuts, command.id);
|
|
179
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-6 py-3", children: [
|
|
180
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0 flex-4", children: [
|
|
181
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm font-medium", children: t(command.titleKey, command.id) }),
|
|
182
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-1 text-xs text-muted-foreground/90", children: t(command.descriptionKey, "Focus this area") })
|
|
183
|
+
] }),
|
|
184
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-1 shrink-0 items-center gap-1.5", children: shortcut ? /* @__PURE__ */ jsxRuntimeExports.jsx(ShortcutKeys, { shortcut, isMac }) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "min-w-24 text-center text-xs text-muted-foreground", children: t("settings.shortcuts.unassigned", "Unassigned") }) }),
|
|
185
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center", children: [
|
|
186
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
187
|
+
Button,
|
|
188
|
+
{
|
|
189
|
+
type: "button",
|
|
190
|
+
variant: "ghost",
|
|
191
|
+
size: "xs",
|
|
192
|
+
className: "text-xs text-muted-foreground hover:text-foreground",
|
|
193
|
+
onClick: () => openShortcutDialog(command),
|
|
194
|
+
children: t("settings.shortcuts.set", "Set")
|
|
195
|
+
}
|
|
196
|
+
),
|
|
197
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
198
|
+
Button,
|
|
199
|
+
{
|
|
200
|
+
type: "button",
|
|
201
|
+
variant: "ghost",
|
|
202
|
+
size: "xs",
|
|
203
|
+
className: "text-xs text-muted-foreground hover:text-foreground",
|
|
204
|
+
disabled: !shortcut,
|
|
205
|
+
onClick: () => void clearShortcut(command),
|
|
206
|
+
children: t("settings.shortcuts.delete", "Delete")
|
|
207
|
+
}
|
|
208
|
+
),
|
|
209
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
210
|
+
Button,
|
|
211
|
+
{
|
|
212
|
+
type: "button",
|
|
213
|
+
variant: "ghost",
|
|
214
|
+
size: "xs",
|
|
215
|
+
className: "text-xs text-muted-foreground hover:text-foreground",
|
|
216
|
+
disabled: !hasOverride,
|
|
217
|
+
onClick: () => void resetShortcut(command),
|
|
218
|
+
children: t("settings.shortcuts.restore", "Restore")
|
|
219
|
+
}
|
|
220
|
+
)
|
|
221
|
+
] })
|
|
222
|
+
] }, command.id);
|
|
223
|
+
}) })
|
|
224
|
+
] })
|
|
225
|
+
] }) }),
|
|
226
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
227
|
+
Dialog,
|
|
228
|
+
{
|
|
229
|
+
open: Boolean(dialogCommandId),
|
|
230
|
+
onOpenChange: (open) => {
|
|
231
|
+
if (!open) closeShortcutDialog();
|
|
232
|
+
},
|
|
233
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogContent, { showCloseButton: false, "data-shortcut-capture": "true", children: [
|
|
234
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(DialogHeader, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(DialogTitle, { children: t("settings.shortcuts.setTitle", "Set shortcut") }) }),
|
|
235
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "-mb-2 text-xs text-muted-foreground", children: dialogCommand ? t(dialogCommand.titleKey, dialogCommand.id) : t("settings.shortcuts.setDesc", "Press the shortcut you want to use.") }),
|
|
236
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
237
|
+
ShortcutCapture,
|
|
238
|
+
{
|
|
239
|
+
shortcut: dialogShortcut,
|
|
240
|
+
isMac,
|
|
241
|
+
onCancel: closeShortcutDialog,
|
|
242
|
+
onChange: setDialogShortcut
|
|
243
|
+
}
|
|
244
|
+
),
|
|
245
|
+
dialogConflict && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-destructive -my-2", children: t("settings.shortcuts.conflict", "Already used by {{command}}.", {
|
|
246
|
+
command: dialogConflictingCommand ? t(dialogConflictingCommand.titleKey, dialogConflictingCommand.id) : dialogConflict.conflictingCommandId
|
|
247
|
+
}) }),
|
|
248
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(DialogFooter, { children: [
|
|
249
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Button, { type: "button", variant: "outline", onClick: closeShortcutDialog, children: t("settings.shortcuts.cancel", "Cancel") }),
|
|
250
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
251
|
+
Button,
|
|
252
|
+
{
|
|
253
|
+
type: "button",
|
|
254
|
+
onClick: () => void confirmShortcutDialog(),
|
|
255
|
+
disabled: !dialogShortcut,
|
|
256
|
+
children: t("settings.shortcuts.confirm", "Confirm")
|
|
257
|
+
}
|
|
258
|
+
)
|
|
259
|
+
] })
|
|
260
|
+
] })
|
|
261
|
+
}
|
|
262
|
+
)
|
|
263
|
+
] });
|
|
264
|
+
}
|
|
265
|
+
export {
|
|
266
|
+
SettingsShortcuts
|
|
267
|
+
};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { u as useTranslation, r as reactExports, j as jsxRuntimeExports, D as Dialog, p as DialogContent, q as DialogHeader, s as DialogTitle, t as DialogDescription, I as Input, H as DialogFooter, B as Button, a as useAppStore, b as useMessage, S as ScrollArea, k as ContextMenu, l as ContextMenuTrigger, m as ContextMenuContent, n as ContextMenuItem, P as Pencil, o as ContextMenuSeparator, T as Trash2, J as generateUUID,
|
|
2
|
-
import { u as useForm, C as Controller, i } from "./standard-schema-
|
|
3
|
-
import { T as Textarea } from "./textarea-
|
|
4
|
-
import { F as FieldGroup, a as Field, b as FieldLabel, c as FieldError } from "./field-
|
|
1
|
+
import { u as useTranslation, r as reactExports, j as jsxRuntimeExports, D as Dialog, p as DialogContent, q as DialogHeader, s as DialogTitle, t as DialogDescription, I as Input, H as DialogFooter, B as Button, a as useAppStore, b as useMessage, S as ScrollArea, k as ContextMenu, l as ContextMenuTrigger, m as ContextMenuContent, n as ContextMenuItem, P as Pencil, o as ContextMenuSeparator, T as Trash2, J as generateUUID, f as request, g as extractErrorMessage } from "./index-BUwXrbHW.js";
|
|
2
|
+
import { u as useForm, C as Controller, i } from "./standard-schema-CGAs4bGi.js";
|
|
3
|
+
import { T as Textarea } from "./textarea-DNSPhqFr.js";
|
|
4
|
+
import { F as FieldGroup, a as Field, b as FieldLabel, c as FieldError } from "./field-BPsDfe4e.js";
|
|
5
5
|
import { o as object, s as string } from "./schemas-c0X-G5_P.js";
|
|
6
|
-
import { u as useSensors, a as useSensor, D as DndContext, c as closestCenter, S as SortableContext, v as verticalListSortingStrategy, s as sortableKeyboardCoordinates, K as KeyboardSensor, P as PointerSensor, b as useSortable, C as CSS, G as GripVertical } from "./sortable.esm-
|
|
7
|
-
import { P as Plus } from "./plus-
|
|
6
|
+
import { u as useSensors, a as useSensor, D as DndContext, c as closestCenter, S as SortableContext, v as verticalListSortingStrategy, s as sortableKeyboardCoordinates, K as KeyboardSensor, P as PointerSensor, b as useSortable, C as CSS, G as GripVertical } from "./sortable.esm-BlhN8Kkg.js";
|
|
7
|
+
import { P as Plus } from "./plus-C5XdFVFm.js";
|
|
8
8
|
const schema = object({
|
|
9
9
|
title: string().trim().min(1, "settings.snippets.validation.enterTitle"),
|
|
10
10
|
content: string().min(1, "settings.snippets.validation.enterContent")
|
|
@@ -150,7 +150,7 @@ function SnippetSortableItem({ id, children }) {
|
|
|
150
150
|
type: "button",
|
|
151
151
|
...attributes,
|
|
152
152
|
...listeners,
|
|
153
|
-
className: "cursor-grab active:cursor-grabbing p-0.5 rounded hover:bg-accent/50 text-muted-foreground shrink-0",
|
|
153
|
+
className: "-ml-4.5 cursor-grab active:cursor-grabbing p-0.5 rounded hover:bg-accent/50 text-muted-foreground shrink-0",
|
|
154
154
|
title: t("settings.snippets.dragToReorder", "Drag to reorder"),
|
|
155
155
|
children: /* @__PURE__ */ jsxRuntimeExports.jsx(GripVertical, { className: "size-3.5 -ml-1" })
|
|
156
156
|
}
|
|
Binary file
|