termdock 1.4.280 → 1.4.282
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/dist/client/assets/App-KjvxjYWp.js +157 -0
- package/dist/client/assets/App-KjvxjYWp.js.br +0 -0
- package/dist/client/assets/App-KjvxjYWp.js.gz +0 -0
- package/dist/client/assets/{ChangeWalkthroughPanel-DTGVDS8w.js → ChangeWalkthroughPanel-D0dLmuqS.js} +1 -1
- package/dist/client/assets/ChangeWalkthroughPanel-D0dLmuqS.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-D0dLmuqS.js.gz +0 -0
- package/dist/client/assets/{DagPlayground-DWFIRAbx.js → DagPlayground-BnxrVoa1.js} +1 -1
- package/dist/client/assets/DagPlayground-BnxrVoa1.js.br +0 -0
- package/dist/client/assets/DagPlayground-BnxrVoa1.js.gz +0 -0
- package/dist/client/assets/{DiffLab-Dkh63Ew_.js → DiffLab-CEJHH47s.js} +1 -1
- package/dist/client/assets/DiffLab-CEJHH47s.js.br +0 -0
- package/dist/client/assets/DiffLab-CEJHH47s.js.gz +0 -0
- package/dist/client/assets/{DiffReview-o6oNBfaX.js → DiffReview-B4MgHev_.js} +1 -1
- package/dist/client/assets/DiffReview-B4MgHev_.js.br +0 -0
- package/dist/client/assets/DiffReview-B4MgHev_.js.gz +0 -0
- package/dist/client/assets/{DiffReviewLab-CtWiJHX8.js → DiffReviewLab-CwxhCK9D.js} +1 -1
- package/dist/client/assets/DiffReviewLab-CwxhCK9D.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-CwxhCK9D.js.gz +0 -0
- package/dist/client/assets/{DiffViewer-DUa0P3-f.js → DiffViewer-B5Fj1S7h.js} +2 -2
- package/dist/client/assets/DiffViewer-B5Fj1S7h.js.br +0 -0
- package/dist/client/assets/DiffViewer-B5Fj1S7h.js.gz +0 -0
- package/dist/client/assets/{ModelPreview-DwpwjO4A.js → ModelPreview-BgzcGTC4.js} +161 -161
- package/dist/client/assets/ModelPreview-BgzcGTC4.js.br +0 -0
- package/dist/client/assets/ModelPreview-BgzcGTC4.js.gz +0 -0
- package/dist/client/assets/{RightSidebar-q9RiZfQl.js → RightSidebar-BZfXFW1d.js} +39 -39
- package/dist/client/assets/RightSidebar-BZfXFW1d.js.br +0 -0
- package/dist/client/assets/RightSidebar-BZfXFW1d.js.gz +0 -0
- package/dist/client/assets/{abnfDiagram-VCTEODGH-C5kagLdJ.js → abnfDiagram-VCTEODGH-DrqWxUpF.js} +1 -1
- package/dist/client/assets/abnfDiagram-VCTEODGH-DrqWxUpF.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-DrqWxUpF.js.gz +0 -0
- package/dist/client/assets/{app-CmaqRBhz.js → app-Cx1S0NEn.js} +13 -13
- package/dist/client/assets/app-Cx1S0NEn.js.br +0 -0
- package/dist/client/assets/app-Cx1S0NEn.js.gz +0 -0
- package/dist/client/assets/{arc-BT80Y55M.js → arc-D-c2BO48.js} +1 -1
- package/dist/client/assets/arc-D-c2BO48.js.br +0 -0
- package/dist/client/assets/arc-D-c2BO48.js.gz +0 -0
- package/dist/client/assets/{architectureDiagram-5GKGNRK7-BYMviDdK.js → architectureDiagram-5GKGNRK7-Dw3s7taT.js} +1 -1
- package/dist/client/assets/architectureDiagram-5GKGNRK7-Dw3s7taT.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-Dw3s7taT.js.gz +0 -0
- package/dist/client/assets/{blockDiagram-I7D4REHJ-DwaLAxKU.js → blockDiagram-I7D4REHJ-BJb1cd3h.js} +1 -1
- package/dist/client/assets/blockDiagram-I7D4REHJ-BJb1cd3h.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-BJb1cd3h.js.gz +0 -0
- package/dist/client/assets/{c4Diagram-7LVT6UL2-Op-xzpgX.js → c4Diagram-7LVT6UL2-BeS1pCi3.js} +1 -1
- package/dist/client/assets/c4Diagram-7LVT6UL2-BeS1pCi3.js.br +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-BeS1pCi3.js.gz +0 -0
- package/dist/client/assets/channel-DhhM4ZRP.js +1 -0
- package/dist/client/assets/{chunk-2Q5K7J3B-hc10awMo.js → chunk-2Q5K7J3B-Bbs_OKMp.js} +1 -1
- package/dist/client/assets/{chunk-5VM5RSS4-D-q2CxQ1.js → chunk-5VM5RSS4-Cb5qWSQ9.js} +1 -1
- package/dist/client/assets/{chunk-F27PBJKO-BIMgE0hf.js → chunk-F27PBJKO-DuSEgqou.js} +1 -1
- package/dist/client/assets/chunk-F27PBJKO-DuSEgqou.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-DuSEgqou.js.gz +0 -0
- package/dist/client/assets/{chunk-IMKFNOWR-CxO0cci1.js → chunk-IMKFNOWR-DJ_KSg28.js} +1 -1
- package/dist/client/assets/chunk-IMKFNOWR-DJ_KSg28.js.br +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-DJ_KSg28.js.gz +0 -0
- package/dist/client/assets/{chunk-JWPE2WC7-Bx7qjrHt.js → chunk-JWPE2WC7-G6gJR-qb.js} +1 -1
- package/dist/client/assets/{chunk-POPQ4Y6H-BUOvGD-J.js → chunk-POPQ4Y6H-4nUthGI-.js} +1 -1
- package/dist/client/assets/{chunk-SVP7TREG-B5NDYBu9.js → chunk-SVP7TREG-Bjz61A31.js} +1 -1
- package/dist/client/assets/chunk-SVP7TREG-Bjz61A31.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-Bjz61A31.js.gz +0 -0
- package/dist/client/assets/{chunk-TICWLB2K-DBlupGXi.js → chunk-TICWLB2K-DibS9hjO.js} +1 -1
- package/dist/client/assets/chunk-TICWLB2K-DibS9hjO.js.br +0 -0
- package/dist/client/assets/chunk-TICWLB2K-DibS9hjO.js.gz +0 -0
- package/dist/client/assets/{chunk-XXDRQBXY-v-lW_ZaD.js → chunk-XXDRQBXY-Pd9xo63D.js} +1 -1
- package/dist/client/assets/classDiagram-ZZMXUADV-CNhLKXhv.js +1 -0
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-CNhLKXhv.js +1 -0
- package/dist/client/assets/{cose-bilkent-JH36ORCC-4WoCQ3Re.js → cose-bilkent-JH36ORCC-C9juqAQ3.js} +1 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-C9juqAQ3.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-C9juqAQ3.js.gz +0 -0
- package/dist/client/assets/{cynefin-OW5HDTMX-D1OoumWh.js → cynefin-OW5HDTMX-DVk5dNlQ.js} +1 -1
- package/dist/client/assets/cynefin-OW5HDTMX-DVk5dNlQ.js.br +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-DVk5dNlQ.js.gz +0 -0
- package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-vecGoXs7.js → cynefinDiagram-5FMLGOSQ-CUy-CI0N.js} +1 -1
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CUy-CI0N.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CUy-CI0N.js.gz +0 -0
- package/dist/client/assets/{dagre-GXQ25YYZ-CvYEW-3I.js → dagre-GXQ25YYZ-BF9uZc8K.js} +1 -1
- package/dist/client/assets/dagre-GXQ25YYZ-BF9uZc8K.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-BF9uZc8K.js.gz +0 -0
- package/dist/client/assets/{diagram-S7CK7UJ4-fEp58qkb.js → diagram-S7CK7UJ4-CaYJASCw.js} +1 -1
- package/dist/client/assets/diagram-S7CK7UJ4-CaYJASCw.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-CaYJASCw.js.gz +0 -0
- package/dist/client/assets/{diagram-UQ7AKVKN-DP2i_oO0.js → diagram-UQ7AKVKN-0-M4q-QN.js} +1 -1
- package/dist/client/assets/diagram-UQ7AKVKN-0-M4q-QN.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-0-M4q-QN.js.gz +0 -0
- package/dist/client/assets/{diagram-VSXAHHWV-DfPnWs7P.js → diagram-VSXAHHWV-4ggjBQOj.js} +1 -1
- package/dist/client/assets/diagram-VSXAHHWV-4ggjBQOj.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-4ggjBQOj.js.gz +0 -0
- package/dist/client/assets/{diagram-VX7I27RA-DDlxd2ul.js → diagram-VX7I27RA-awKrOIYn.js} +1 -1
- package/dist/client/assets/diagram-VX7I27RA-awKrOIYn.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-awKrOIYn.js.gz +0 -0
- package/dist/client/assets/{diagram-Z3DM3KII-DPt_fPVx.js → diagram-Z3DM3KII-CvmtkYW3.js} +1 -1
- package/dist/client/assets/diagram-Z3DM3KII-CvmtkYW3.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-CvmtkYW3.js.gz +0 -0
- package/dist/client/assets/{ebnfDiagram-PWID7BFC-jI1ogEGf.js → ebnfDiagram-PWID7BFC-ZS9U0Fk-.js} +1 -1
- package/dist/client/assets/ebnfDiagram-PWID7BFC-ZS9U0Fk-.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-ZS9U0Fk-.js.gz +0 -0
- package/dist/client/assets/{erDiagram-RLTQ6QDP-bEHaaROW.js → erDiagram-RLTQ6QDP-CcWwxLbE.js} +1 -1
- package/dist/client/assets/erDiagram-RLTQ6QDP-CcWwxLbE.js.br +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-CcWwxLbE.js.gz +0 -0
- package/dist/client/assets/{flowDiagram-HODETNUW-BxmQ5VRX.js → flowDiagram-HODETNUW-BvYM0Nn3.js} +1 -1
- package/dist/client/assets/flowDiagram-HODETNUW-BvYM0Nn3.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-BvYM0Nn3.js.gz +0 -0
- package/dist/client/assets/{ganttDiagram-EL5Y4UJY-CCGPU8bC.js → ganttDiagram-EL5Y4UJY-DEr4hj6W.js} +1 -1
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-DEr4hj6W.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-DEr4hj6W.js.gz +0 -0
- package/dist/client/assets/{gestureArbiter-h-HvyaL7.js → gestureArbiter-CDxeAcBI.js} +1 -1
- package/dist/client/assets/gestureArbiter-CDxeAcBI.js.br +0 -0
- package/dist/client/assets/gestureArbiter-CDxeAcBI.js.gz +0 -0
- package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-TQGVzesr.js → gitGraphDiagram-WWUBYQGX-DJXcqbTp.js} +1 -1
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-DJXcqbTp.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-DJXcqbTp.js.gz +0 -0
- package/dist/client/assets/imageCompression-DaUBNTq-.js +1 -0
- package/dist/client/assets/index-607UPNXL.js +1 -0
- package/dist/client/assets/index-607UPNXL.js.br +0 -0
- package/dist/client/assets/index-607UPNXL.js.gz +0 -0
- package/dist/client/assets/index-CUxsIblL.js +1 -0
- package/dist/client/assets/index-CUxsIblL.js.br +0 -0
- package/dist/client/assets/index-CUxsIblL.js.gz +0 -0
- package/dist/client/assets/{index-DeTcW7aT.css → index-IknuJMxJ.css} +1 -1
- package/dist/client/assets/index-IknuJMxJ.css.br +0 -0
- package/dist/client/assets/index-IknuJMxJ.css.gz +0 -0
- package/dist/client/assets/{infoDiagram-27XIBGKW-rAzlTbRU.js → infoDiagram-27XIBGKW-u_tuWUg-.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-CylzUxfY.js → ishikawaDiagram-5VMMS53U-BFYZSOqo.js} +1 -1
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-BFYZSOqo.js.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-BFYZSOqo.js.gz +0 -0
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-k5Krizsr.js → journeyDiagram-3NMN7TZE-BCCDGuPm.js} +1 -1
- package/dist/client/assets/journeyDiagram-3NMN7TZE-BCCDGuPm.js.br +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-BCCDGuPm.js.gz +0 -0
- package/dist/client/assets/{kanban-definition-UXKFOSKX-CLdFYR_h.js → kanban-definition-UXKFOSKX-BL414bhZ.js} +1 -1
- package/dist/client/assets/kanban-definition-UXKFOSKX-BL414bhZ.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-BL414bhZ.js.gz +0 -0
- package/dist/client/assets/{layout-DQ8uwLW3.js → layout-BLj6qqUe.js} +1 -1
- package/dist/client/assets/layout-BLj6qqUe.js.br +0 -0
- package/dist/client/assets/{layout-DQ8uwLW3.js.gz → layout-BLj6qqUe.js.gz} +0 -0
- package/dist/client/assets/{linear-BOi6WADB.js → linear-9XUUJjvf.js} +1 -1
- package/dist/client/assets/linear-9XUUJjvf.js.br +0 -0
- package/dist/client/assets/linear-9XUUJjvf.js.gz +0 -0
- package/dist/client/assets/{mermaid.core-BgPhvl9l.js → mermaid.core-BMjyQhe0.js} +5 -5
- package/dist/client/assets/mermaid.core-BMjyQhe0.js.br +0 -0
- package/dist/client/assets/mermaid.core-BMjyQhe0.js.gz +0 -0
- package/dist/client/assets/{mindmap-definition-YA3MSWOX-D98yDh9A.js → mindmap-definition-YA3MSWOX-B5hQdEJ0.js} +1 -1
- package/dist/client/assets/mindmap-definition-YA3MSWOX-B5hQdEJ0.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-B5hQdEJ0.js.gz +0 -0
- package/dist/client/assets/{passwordBootstrap-Cvxcm9sB.js → passwordBootstrap-D7lxBxbp.js} +1 -1
- package/dist/client/assets/passwordBootstrap-D7lxBxbp.js.br +0 -0
- package/dist/client/assets/passwordBootstrap-D7lxBxbp.js.gz +0 -0
- package/dist/client/assets/{pegDiagram-XKGWAZYB-BXzjEjmD.js → pegDiagram-XKGWAZYB-CJQClA-K.js} +1 -1
- package/dist/client/assets/pegDiagram-XKGWAZYB-CJQClA-K.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-CJQClA-K.js.gz +0 -0
- package/dist/client/assets/{pieDiagram-E7YTZNPT-CPzD4VSb.js → pieDiagram-E7YTZNPT-D2ARaSkf.js} +1 -1
- package/dist/client/assets/pieDiagram-E7YTZNPT-D2ARaSkf.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-D2ARaSkf.js.gz +0 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-Cdt7FbSr.js → quadrantDiagram-AXDQQJYC-B2Rs8gQh.js} +1 -1
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-B2Rs8gQh.js.br +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-B2Rs8gQh.js.gz +0 -0
- package/dist/client/assets/{railroadDiagram-O6MQD6OU-CBRLhavR.js → railroadDiagram-O6MQD6OU-7zaEGVqP.js} +1 -1
- package/dist/client/assets/railroadDiagram-O6MQD6OU-7zaEGVqP.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-7zaEGVqP.js.gz +0 -0
- package/dist/client/assets/{referenceLongPress-AX0A2IcQ.js → referenceLongPress-1MdQQqBu.js} +1 -1
- package/dist/client/assets/referenceLongPress-1MdQQqBu.js.br +0 -0
- package/dist/client/assets/referenceLongPress-1MdQQqBu.js.gz +0 -0
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-CcJpty3G.js → requirementDiagram-BXWQKSXE-B7YLqxNi.js} +1 -1
- package/dist/client/assets/requirementDiagram-BXWQKSXE-B7YLqxNi.js.br +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-B7YLqxNi.js.gz +0 -0
- package/dist/client/assets/{sankeyDiagram-P5KCCOFB-2Iw_m6sZ.js → sankeyDiagram-P5KCCOFB-BQqZ501N.js} +1 -1
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-BQqZ501N.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-BQqZ501N.js.gz +0 -0
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-Csi0hnne.js → sequenceDiagram-WJ2MYXX4-CI5zNczi.js} +1 -1
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-CI5zNczi.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-CI5zNczi.js.gz +0 -0
- package/dist/client/assets/{sizeCapture-INFHLROL-Dkb-hc4x.js → sizeCapture-INFHLROL-_g6rD1KV.js} +1 -1
- package/dist/client/assets/sizeCapture-INFHLROL-_g6rD1KV.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-_g6rD1KV.js.gz +0 -0
- package/dist/client/assets/{sparkles-saCre9m9.js → sparkles-DZP-rTUQ.js} +1 -1
- package/dist/client/assets/{stateDiagram-D77RDMKH-C2CiYbgs.js → stateDiagram-D77RDMKH-Cu8lQyFr.js} +1 -1
- package/dist/client/assets/stateDiagram-D77RDMKH-Cu8lQyFr.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-Cu8lQyFr.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-CieARAQ3.js +1 -0
- package/dist/client/assets/{swimlanes-42K2YHIH-DTH6VfFO.js → swimlanes-42K2YHIH-DyoG1kjH.js} +1 -1
- package/dist/client/assets/{swimlanes-42K2YHIH-DTH6VfFO.js.br → swimlanes-42K2YHIH-DyoG1kjH.js.br} +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-DyoG1kjH.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-D9qBVMDu.js +8 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-Zo1nOfGb.js → timeline-definition-24CTP7MA-MgVnEDIt.js} +1 -1
- package/dist/client/assets/timeline-definition-24CTP7MA-MgVnEDIt.js.br +0 -0
- package/dist/client/assets/timeline-definition-24CTP7MA-MgVnEDIt.js.gz +0 -0
- package/dist/client/assets/{triangle-alert-Bfb9PEAl.js → triangle-alert-6HTQse_h.js} +1 -1
- package/dist/client/assets/{vennDiagram-4TSXK5OY-VhADAipK.js → vennDiagram-4TSXK5OY-DIA3-8fT.js} +1 -1
- package/dist/client/assets/vennDiagram-4TSXK5OY-DIA3-8fT.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-DIA3-8fT.js.gz +0 -0
- package/dist/client/assets/videoCompression-BiLlPFCU.js +3 -0
- package/dist/client/assets/videoCompression-BiLlPFCU.js.br +0 -0
- package/dist/client/assets/videoCompression-BiLlPFCU.js.gz +0 -0
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-BSf0cH6F.js → wardleyDiagram-VM6X3IG4-BrgRWH1G.js} +1 -1
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-BrgRWH1G.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-BrgRWH1G.js.gz +0 -0
- package/dist/client/assets/worker-BAOIWoxA.js +1 -0
- package/dist/client/assets/worker-BAOIWoxA.js.br +0 -0
- package/dist/client/assets/worker-BAOIWoxA.js.gz +0 -0
- package/dist/client/assets/{xychartDiagram-S5SC5T6Z-DWSOFy9v.js → xychartDiagram-S5SC5T6Z-DbVR2OUc.js} +1 -1
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-DbVR2OUc.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-DbVR2OUc.js.gz +0 -0
- package/dist/client/index.html +44 -4
- package/dist/client/index.html.br +0 -0
- package/dist/client/index.html.gz +0 -0
- package/dist/client/licenses/loading-dev.txt +21 -0
- package/dist/client/licenses/loading-dev.txt.br +0 -0
- package/dist/client/licenses/loading-dev.txt.gz +0 -0
- package/dist/client/sw-encrypted-background.js +1 -1
- package/dist/client/sw-encrypted-background.js.br +0 -0
- package/dist/client/sw-encrypted-background.js.gz +0 -0
- package/dist/client/sw.js +1 -1
- package/dist/client/sw.js.br +0 -0
- package/dist/client/sw.js.gz +0 -0
- package/dist/server/entry.js +38 -1
- package/dist/server/routes/filesystem.js +9 -2
- package/dist/server/routes/terminal.js +2 -1
- package/dist/server/utils/runtimeClient.js +34 -0
- package/package.json +4 -1
- package/runtime-manifest.json +4 -4
- package/dist/client/assets/App-CwB9VUiN.js +0 -156
- package/dist/client/assets/App-CwB9VUiN.js.br +0 -0
- package/dist/client/assets/App-CwB9VUiN.js.gz +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-DTGVDS8w.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-DTGVDS8w.js.gz +0 -0
- package/dist/client/assets/DagPlayground-DWFIRAbx.js.br +0 -0
- package/dist/client/assets/DagPlayground-DWFIRAbx.js.gz +0 -0
- package/dist/client/assets/DiffLab-Dkh63Ew_.js.br +0 -0
- package/dist/client/assets/DiffLab-Dkh63Ew_.js.gz +0 -0
- package/dist/client/assets/DiffReview-o6oNBfaX.js.br +0 -0
- package/dist/client/assets/DiffReview-o6oNBfaX.js.gz +0 -0
- package/dist/client/assets/DiffReviewLab-CtWiJHX8.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-CtWiJHX8.js.gz +0 -0
- package/dist/client/assets/DiffViewer-DUa0P3-f.js.br +0 -0
- package/dist/client/assets/DiffViewer-DUa0P3-f.js.gz +0 -0
- package/dist/client/assets/ModelPreview-DwpwjO4A.js.br +0 -0
- package/dist/client/assets/ModelPreview-DwpwjO4A.js.gz +0 -0
- package/dist/client/assets/RightSidebar-q9RiZfQl.js.br +0 -0
- package/dist/client/assets/RightSidebar-q9RiZfQl.js.gz +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-C5kagLdJ.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-C5kagLdJ.js.gz +0 -0
- package/dist/client/assets/app-CmaqRBhz.js.br +0 -0
- package/dist/client/assets/app-CmaqRBhz.js.gz +0 -0
- package/dist/client/assets/arc-BT80Y55M.js.br +0 -0
- package/dist/client/assets/arc-BT80Y55M.js.gz +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-BYMviDdK.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-BYMviDdK.js.gz +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-DwaLAxKU.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-DwaLAxKU.js.gz +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-Op-xzpgX.js.br +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-Op-xzpgX.js.gz +0 -0
- package/dist/client/assets/channel-D1lY3Veu.js +0 -1
- package/dist/client/assets/chunk-F27PBJKO-BIMgE0hf.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-BIMgE0hf.js.gz +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-CxO0cci1.js.br +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-CxO0cci1.js.gz +0 -0
- package/dist/client/assets/chunk-SVP7TREG-B5NDYBu9.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-B5NDYBu9.js.gz +0 -0
- package/dist/client/assets/chunk-TICWLB2K-DBlupGXi.js.br +0 -0
- package/dist/client/assets/chunk-TICWLB2K-DBlupGXi.js.gz +0 -0
- package/dist/client/assets/classDiagram-ZZMXUADV-D1a1E30M.js +0 -1
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-D1a1E30M.js +0 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-4WoCQ3Re.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-4WoCQ3Re.js.gz +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-D1OoumWh.js.br +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-D1OoumWh.js.gz +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-vecGoXs7.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-vecGoXs7.js.gz +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-CvYEW-3I.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-CvYEW-3I.js.gz +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-fEp58qkb.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-fEp58qkb.js.gz +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-DP2i_oO0.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-DP2i_oO0.js.gz +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-DfPnWs7P.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-DfPnWs7P.js.gz +0 -0
- package/dist/client/assets/diagram-VX7I27RA-DDlxd2ul.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-DDlxd2ul.js.gz +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-DPt_fPVx.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-DPt_fPVx.js.gz +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-jI1ogEGf.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-jI1ogEGf.js.gz +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-bEHaaROW.js.br +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-bEHaaROW.js.gz +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-BxmQ5VRX.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-BxmQ5VRX.js.gz +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-CCGPU8bC.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-CCGPU8bC.js.gz +0 -0
- package/dist/client/assets/gestureArbiter-h-HvyaL7.js.br +0 -0
- package/dist/client/assets/gestureArbiter-h-HvyaL7.js.gz +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-TQGVzesr.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-TQGVzesr.js.gz +0 -0
- package/dist/client/assets/index-DeTcW7aT.css.br +0 -0
- package/dist/client/assets/index-DeTcW7aT.css.gz +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-CylzUxfY.js.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-CylzUxfY.js.gz +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-k5Krizsr.js.br +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-k5Krizsr.js.gz +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-CLdFYR_h.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-CLdFYR_h.js.gz +0 -0
- package/dist/client/assets/layout-DQ8uwLW3.js.br +0 -0
- package/dist/client/assets/linear-BOi6WADB.js.br +0 -0
- package/dist/client/assets/linear-BOi6WADB.js.gz +0 -0
- package/dist/client/assets/mermaid.core-BgPhvl9l.js.br +0 -0
- package/dist/client/assets/mermaid.core-BgPhvl9l.js.gz +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-D98yDh9A.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-D98yDh9A.js.gz +0 -0
- package/dist/client/assets/passwordBootstrap-Cvxcm9sB.js.br +0 -0
- package/dist/client/assets/passwordBootstrap-Cvxcm9sB.js.gz +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-BXzjEjmD.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-BXzjEjmD.js.gz +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-CPzD4VSb.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-CPzD4VSb.js.gz +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-Cdt7FbSr.js.br +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-Cdt7FbSr.js.gz +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-CBRLhavR.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-CBRLhavR.js.gz +0 -0
- package/dist/client/assets/referenceLongPress-AX0A2IcQ.js.br +0 -0
- package/dist/client/assets/referenceLongPress-AX0A2IcQ.js.gz +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-CcJpty3G.js.br +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-CcJpty3G.js.gz +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-2Iw_m6sZ.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-2Iw_m6sZ.js.gz +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-Csi0hnne.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-Csi0hnne.js.gz +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-Dkb-hc4x.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-Dkb-hc4x.js.gz +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-C2CiYbgs.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-C2CiYbgs.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-Bk7qJiAf.js +0 -1
- package/dist/client/assets/swimlanes-42K2YHIH-DTH6VfFO.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-BlA3tbJB.js +0 -8
- package/dist/client/assets/timeline-definition-24CTP7MA-Zo1nOfGb.js.br +0 -0
- package/dist/client/assets/timeline-definition-24CTP7MA-Zo1nOfGb.js.gz +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-VhADAipK.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-VhADAipK.js.gz +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-BSf0cH6F.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-BSf0cH6F.js.gz +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-DWSOFy9v.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-DWSOFy9v.js.gz +0 -0
|
Binary file
|
|
Binary file
|
package/dist/client/sw.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
if(!self.define){let e,s={};const n=(n,i)=>(n=new URL(n+".js",i).href,s[n]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=s,document.head.appendChild(e)}else e=n,importScripts(n),s()}).then(()=>{let e=s[n];if(!e)throw new Error(`Module ${n} didn’t register its module`);return e}));self.define=(i,o)=>{const a=e||("document"in self?document.currentScript.src:"")||location.href;if(s[a])return;let c={};const r=e=>n(e,a),d={module:{uri:a},exports:c,require:r};s[a]=Promise.all(i.map(e=>d[e]||r(e))).then(e=>(o(...e),c))}}define(["./workbox-9845bf53"],function(e){"use strict";importScripts("sw-encrypted-background.js","sw-notifications.js","sw-secure-api.js","sw-downloads.js"),self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.clientsClaim(),e.precacheAndRoute([{url:"index.html",revision:"
|
|
1
|
+
if(!self.define){let e,s={};const n=(n,i)=>(n=new URL(n+".js",i).href,s[n]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=s,document.head.appendChild(e)}else e=n,importScripts(n),s()}).then(()=>{let e=s[n];if(!e)throw new Error(`Module ${n} didn’t register its module`);return e}));self.define=(i,o)=>{const a=e||("document"in self?document.currentScript.src:"")||location.href;if(s[a])return;let c={};const r=e=>n(e,a),d={module:{uri:a},exports:c,require:r};s[a]=Promise.all(i.map(e=>d[e]||r(e))).then(e=>(o(...e),c))}}define(["./workbox-9845bf53"],function(e){"use strict";importScripts("sw-encrypted-background.js","sw-notifications.js","sw-secure-api.js","sw-downloads.js"),self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.clientsClaim(),e.precacheAndRoute([{url:"index.html",revision:"93e6950b0a42088c3c8f6bfa97db9dd3"},{url:"assets/app-Cx1S0NEn.js",revision:null},{url:"assets/react-XDCjal2T.js",revision:null},{url:"assets/dnd-BCFAPC0L.js",revision:null},{url:"assets/terminal-C7X98Amf.js",revision:null},{url:"assets/index-IknuJMxJ.css",revision:null},{url:"icons/agents/opencode.svg",revision:"851c2931d95821ba2b39b68587b48976"},{url:"icons/agents/kimi.svg",revision:"5366c710f4f763022fe159a69cf17409"},{url:"icons/agents/grok.svg",revision:"cd745b0b964545bc7a6b4f36021c3298"},{url:"icons/agents/goose.svg",revision:"c79b927278983c19098d77b4b0c11ab3"},{url:"icons/agents/gemini.svg",revision:"7a64f6d6f80a908255e9c0256903882e"},{url:"icons/agents/droid.svg",revision:"f28723b8c5c115e0908ba3c72613e256"},{url:"icons/agents/cursor.svg",revision:"a1528f3d3cda497f75a5db28defb19de"},{url:"icons/agents/copilot.svg",revision:"dd52e96c1eac0b6ec4bedcd0ddd3b52d"},{url:"icons/agents/codex.svg",revision:"608e55babb0b217e1f2da287342b46d3"},{url:"icons/agents/claude.svg",revision:"08af0225b7acdd8e8f573f3247e5e1c3"},{url:"icons/agents/amp.svg",revision:"af12f8b33faa81e4d46ea7b93c7e43f3"},{url:"apple-touch-icon-180x180.png",revision:"628c2e2f28a9b545aa57be1352025643"},{url:"boot-logo.png",revision:"2e3a25efd9b0b8ca1eab53b5f2284556"},{url:"favicon.ico",revision:"2994debfa6f59a0898e24eb0c54d64b5"},{url:"maskable-icon-512x512.png",revision:"4d489331fd81f0713c400b26426442b9"},{url:"pwa-192x192.png",revision:"4d6f899888cfb8ccd7a1fd3c9e583ad2"},{url:"pwa-512x512.png",revision:"0885dd7ec8932e7f878b013d51a380a4"},{url:"robots.txt",revision:"d9339907142917dee4aac78494ac9cfe"},{url:"sw-downloads.js",revision:"48dab2e78bd93b4eee27fca487eccfde"},{url:"sw-notifications.js",revision:"fde578590ea8b0540d488ef448b48f45"},{url:"sw-secure-api.js",revision:"cf2bdbd03d41d66d60344c0b5a1075de"},{url:"manifest.webmanifest",revision:"83f9a43b74c236012adafb077fb6d774"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html"),{denylist:[/^\/api\//,/^\/__termdock-download\//,/^\/health$/]})),e.registerRoute(/\/assets\/.*\.(?:js|css)$/,new e.CacheFirst({cacheName:"termdock-lazy-assets-v1",plugins:[new e.CacheableResponsePlugin({statuses:[0,200]}),new e.ExpirationPlugin({maxEntries:96,maxAgeSeconds:2592e3})]}),"GET"),e.registerRoute(/\/fonts\/terminal\/[^/]+-[a-f0-9]{12}\.woff2$/,new e.CacheFirst({cacheName:"termdock-fonts-v2",plugins:[new e.CacheableResponsePlugin({statuses:[0,200]}),new e.ExpirationPlugin({maxEntries:384,maxAgeSeconds:2592e3})]}),"GET"),e.registerRoute(/\/fonts\/.*\.(?:woff2|ttf)$/,new e.StaleWhileRevalidate({cacheName:"termdock-fonts-v1",plugins:[new e.ExpirationPlugin({maxEntries:24,maxAgeSeconds:2592e3})]}),"GET")});
|
package/dist/client/sw.js.br
CHANGED
|
Binary file
|
package/dist/client/sw.js.gz
CHANGED
|
Binary file
|
package/dist/server/entry.js
CHANGED
|
@@ -50,7 +50,7 @@ import { RuntimeMonitor } from './utils/runtimeMonitor.js';
|
|
|
50
50
|
import { startOnboardingServer, stopOnboardingServer, getOnboardingServerUrl } from './onboardingServer.js';
|
|
51
51
|
import { CertificateWatcher } from './certificateWatcher.js';
|
|
52
52
|
import { startTermdockLogMaintenance, writeDiffTraceLog, writeErrorLog, writeJsonLog, writeTextLog, } from './utils/serverLogger.js';
|
|
53
|
-
import { pinBundledRuntimeClientDist, resolveRuntimeClientDist } from './utils/runtimeClient.js';
|
|
53
|
+
import { indexRetainedClientModules, pinBundledRuntimeClientDist, resolveRuntimeClientDist } from './utils/runtimeClient.js';
|
|
54
54
|
import { installCrashForensics } from './utils/crashForensics.js';
|
|
55
55
|
import { getTermdockVersion, TERMDOCK_CAPABILITIES, TERMDOCK_PROTOCOL_VERSION, } from './utils/version.js';
|
|
56
56
|
import { PORT, DEFAULT_HOST } from './config.js';
|
|
@@ -63,6 +63,9 @@ const currentFilePath = fileURLToPath(import.meta.url);
|
|
|
63
63
|
const currentDirPath = path.dirname(currentFilePath);
|
|
64
64
|
const bundledClientDistPath = path.resolve(currentDirPath, '../client');
|
|
65
65
|
const bundledClientIndexPath = path.join(bundledClientDistPath, 'index.html');
|
|
66
|
+
// This is intentionally not under the client build or PWA precache. It is a
|
|
67
|
+
// 31 MB optional local-video-compression payload fetched only after enabling it.
|
|
68
|
+
const videoCompressionCorePath = path.resolve(currentDirPath, '../../node_modules/@ffmpeg/core/dist/esm');
|
|
66
69
|
const clientLogRecent = new Map();
|
|
67
70
|
let clientLogWindowStartedAt = 0;
|
|
68
71
|
let clientLogWindowCount = 0;
|
|
@@ -359,6 +362,21 @@ export function createApp(options = {}) {
|
|
|
359
362
|
setStaticCacheHeaders({ url: relativePath, path: relativePath }, res);
|
|
360
363
|
},
|
|
361
364
|
});
|
|
365
|
+
app.get(['/assets/video-compression/:asset', '/assets/video-compression/v2/:asset'], (req, res) => {
|
|
366
|
+
const asset = req.params.asset;
|
|
367
|
+
if (asset !== 'ffmpeg-core.js' && asset !== 'ffmpeg-core.wasm') {
|
|
368
|
+
res.sendStatus(404);
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
const assetPath = path.join(videoCompressionCorePath, asset);
|
|
372
|
+
if (!fs.existsSync(assetPath)) {
|
|
373
|
+
res.sendStatus(404);
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
res.setHeader('Cache-Control', 'public, max-age=31536000, immutable');
|
|
377
|
+
res.type(asset.endsWith('.wasm') ? 'application/wasm' : 'text/javascript');
|
|
378
|
+
res.sendFile(assetPath);
|
|
379
|
+
});
|
|
362
380
|
app.use((req, res, next) => {
|
|
363
381
|
compression(req, res, (compressionError) => {
|
|
364
382
|
if (compressionError)
|
|
@@ -366,6 +384,25 @@ export function createApp(options = {}) {
|
|
|
366
384
|
staticFiles(req, res, next);
|
|
367
385
|
});
|
|
368
386
|
});
|
|
387
|
+
const retainedModules = indexRetainedClientModules();
|
|
388
|
+
app.get(/^\/assets\//, (req, res, next) => {
|
|
389
|
+
const retainedPath = retainedModules.get(req.path);
|
|
390
|
+
if (!retainedPath) {
|
|
391
|
+
// Never cache a missing module or return the SPA HTML as JavaScript.
|
|
392
|
+
res.setHeader('Cache-Control', 'no-store');
|
|
393
|
+
res.sendStatus(404);
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
setStaticCacheHeaders(req, res);
|
|
397
|
+
res.sendFile(retainedPath, error => {
|
|
398
|
+
if (!error)
|
|
399
|
+
return;
|
|
400
|
+
if (res.headersSent)
|
|
401
|
+
return next(error);
|
|
402
|
+
res.setHeader('Cache-Control', 'no-store');
|
|
403
|
+
res.sendStatus(404);
|
|
404
|
+
});
|
|
405
|
+
});
|
|
369
406
|
app.get(/^(?!\/api(?:\/|$)|\/health$|\/onboarding(?:\/|$)|\/ca(?:\/|$)).*/, (req, res) => {
|
|
370
407
|
setStaticCacheHeaders(req, res);
|
|
371
408
|
res.sendFile(path.join(clientPath, 'index.html'));
|
|
@@ -64,6 +64,9 @@ const EDA_PREVIEW_CACHE_MAX_BYTES = 64 * 1024 * 1024;
|
|
|
64
64
|
const GIT_ROUTE_TIMEOUT_MS = 8_000;
|
|
65
65
|
const GIT_RECENT_COMMITS_ROUTE_TIMEOUT_MS = 60_000;
|
|
66
66
|
const GIT_FILE_DIFF_ROUTE_TIMEOUT_MS = 45_000;
|
|
67
|
+
// Refreshing a remote baseline includes network transfer before diff generation.
|
|
68
|
+
const GIT_BASELINE_FETCH_TIMEOUT_MS = 120_000;
|
|
69
|
+
const GIT_BRANCH_DIFF_ROUTE_TIMEOUT_MS = GIT_BASELINE_FETCH_TIMEOUT_MS + GIT_FILE_DIFF_ROUTE_TIMEOUT_MS;
|
|
67
70
|
const GIT_ACTION_TIMEOUT_MS = 10 * 60_000;
|
|
68
71
|
const GIT_APPLY_TIMEOUT_MS = 30_000;
|
|
69
72
|
const RESTORE_CONFIRM_PHRASES = new Set(['丢弃改动', 'discard changes']);
|
|
@@ -2352,11 +2355,14 @@ async function getBranchDiffPayload(workspaceRoot, repoRoot, baseBranch, options
|
|
|
2352
2355
|
try {
|
|
2353
2356
|
// Explicitly update the selected tracking ref even with a narrow fetch
|
|
2354
2357
|
// refspec, and accept a baseline that was force-pushed on the remote.
|
|
2355
|
-
await execGit(['fetch', '--no-tags', '--', baseRemote, `+refs/heads/${remoteBranch}:${trackingRef}`], repoRoot, signal,
|
|
2358
|
+
await execGit(['fetch', '--no-tags', '--no-recurse-submodules', '--', baseRemote, `+refs/heads/${remoteBranch}:${trackingRef}`], repoRoot, signal, GIT_BASELINE_FETCH_TIMEOUT_MS);
|
|
2356
2359
|
}
|
|
2357
2360
|
catch (error) {
|
|
2358
2361
|
if (signal.aborted)
|
|
2359
2362
|
throw error;
|
|
2363
|
+
if (error instanceof Error && error.message === 'git command timed out') {
|
|
2364
|
+
throw new OperationTimeoutError(`Refreshing baseline ${baseRef} timed out after ${GIT_BASELINE_FETCH_TIMEOUT_MS / 1000} seconds. Check the network connection and retry.`, 'GIT_BASELINE_FETCH_TIMEOUT');
|
|
2365
|
+
}
|
|
2360
2366
|
return {
|
|
2361
2367
|
available: false, workspaceRoot, repoRoot, baseBranch: trimmedBase, baseRef,
|
|
2362
2368
|
error: `Failed to refresh baseline ${baseRef}. Check remote access and retry. No comparison was generated from a stale local baseline.`,
|
|
@@ -4580,9 +4586,10 @@ router.get('/branch-diff', async (req, res) => {
|
|
|
4580
4586
|
return;
|
|
4581
4587
|
}
|
|
4582
4588
|
repoRootForLog = repoRoot;
|
|
4589
|
+
const isFileDiff = typeof req.query.filePath === 'string' && typeof req.query.comparisonBase === 'string';
|
|
4583
4590
|
const payload = await withTimeout(typeof req.query.filePath === 'string' && typeof req.query.comparisonBase === 'string'
|
|
4584
4591
|
? getBranchFileDiffPayload(repoRoot, req.query.comparisonBase, req.query.filePath, controller.signal)
|
|
4585
|
-
: getBranchDiffPayload(workspaceGitRoot, repoRoot, baseBranch, { headRef, includeUncommitted }, controller.signal), GIT_FILE_DIFF_ROUTE_TIMEOUT_MS, 'Branch diff took too long. The repository may be busy, on slow storage, or locked by another Git process.', 'GIT_BRANCH_DIFF_TIMEOUT', () => controller.abort(new OperationTimeoutError('Branch diff took too long. The repository may be busy, on slow storage, or locked by another Git process.', 'GIT_BRANCH_DIFF_TIMEOUT')));
|
|
4592
|
+
: getBranchDiffPayload(workspaceGitRoot, repoRoot, baseBranch, { headRef, includeUncommitted }, controller.signal), isFileDiff ? GIT_FILE_DIFF_ROUTE_TIMEOUT_MS : GIT_BRANCH_DIFF_ROUTE_TIMEOUT_MS, 'Branch diff took too long. The repository may be busy, on slow storage, or locked by another Git process.', 'GIT_BRANCH_DIFF_TIMEOUT', () => controller.abort(new OperationTimeoutError('Branch diff took too long. The repository may be busy, on slow storage, or locked by another Git process.', 'GIT_BRANCH_DIFF_TIMEOUT')));
|
|
4586
4593
|
logFsIo({
|
|
4587
4594
|
id: requestId,
|
|
4588
4595
|
action,
|
|
@@ -8027,6 +8027,7 @@ export function handleTerminalWebSocket(ws, sessionId, clientId, options = {}, i
|
|
|
8027
8027
|
}
|
|
8028
8028
|
// Handle client → server messages
|
|
8029
8029
|
ws.on('message', async (raw) => {
|
|
8030
|
+
const messageReceivedAt = performance.now();
|
|
8030
8031
|
let msg;
|
|
8031
8032
|
try {
|
|
8032
8033
|
msg = JSON.parse(raw.toString());
|
|
@@ -8207,7 +8208,7 @@ export function handleTerminalWebSocket(ws, sessionId, clientId, options = {}, i
|
|
|
8207
8208
|
// 心跳算活动:客户端每 20s 发一次 ping,没有这一行就会出现
|
|
8208
8209
|
// "用户开着页面看 agent 跑、自己不动键盘"被 idle-cleanup 误杀的情况。
|
|
8209
8210
|
session.lastActivity = Date.now();
|
|
8210
|
-
ws.send(JSON.stringify({ type: 'pong' }));
|
|
8211
|
+
ws.send(JSON.stringify({ type: 'pong', handlerMs: performance.now() - messageReceivedAt, qualityProbeId: typeof msg.qualityProbeId === 'string' ? msg.qualityProbeId.slice(0, 64) : undefined }));
|
|
8211
8212
|
break;
|
|
8212
8213
|
}
|
|
8213
8214
|
}
|
|
@@ -85,6 +85,40 @@ export function pinBundledRuntimeClientDist(defaultClientDist, homeDir = os.home
|
|
|
85
85
|
return defaultClientDist;
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
+
/** Old open pages still import their content-hashed lazy chunks after a restart.
|
|
89
|
+
* Only expose public JS/CSS build assets from complete, locally pinned snapshots;
|
|
90
|
+
* never serve an old entry page, service worker, or arbitrary filesystem path.
|
|
91
|
+
*/
|
|
92
|
+
export function indexRetainedClientModules(homeDir = os.homedir()) {
|
|
93
|
+
const modules = new Map();
|
|
94
|
+
const root = path.join(homeDir, '.termdock', 'client-snapshots');
|
|
95
|
+
try {
|
|
96
|
+
for (const snapshot of fs.readdirSync(root, { withFileTypes: true })) {
|
|
97
|
+
if (!snapshot.isDirectory() || !/^[a-f0-9]{24}$/.test(snapshot.name))
|
|
98
|
+
continue;
|
|
99
|
+
const snapshotRoot = path.join(root, snapshot.name);
|
|
100
|
+
const manifest = readManifest(path.join(snapshotRoot, 'snapshot-manifest.json'));
|
|
101
|
+
const clientDist = path.join(snapshotRoot, 'dist', 'client');
|
|
102
|
+
if (typeof manifest?.serverBundleHash !== 'string'
|
|
103
|
+
|| typeof manifest.clientBundleHash !== 'string'
|
|
104
|
+
|| !isCompleteSnapshot(clientDist, manifest.serverBundleHash, manifest.clientBundleHash))
|
|
105
|
+
continue;
|
|
106
|
+
try {
|
|
107
|
+
const assets = path.join(clientDist, 'assets');
|
|
108
|
+
for (const file of fs.readdirSync(assets, { withFileTypes: true })) {
|
|
109
|
+
if (!file.isFile() || !/^[\w.-]+-[\w-]{8,}\.(?:js|css)$/.test(file.name))
|
|
110
|
+
continue;
|
|
111
|
+
const url = `/assets/${file.name}`;
|
|
112
|
+
if (!modules.has(url))
|
|
113
|
+
modules.set(url, path.join(assets, file.name));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch { /* An incomplete or removed snapshot must not prevent startup. */ }
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch { /* No retained snapshots on first install. */ }
|
|
120
|
+
return modules;
|
|
121
|
+
}
|
|
88
122
|
export function resolveRuntimeClientDist(defaultClientDist, homeDir = os.homedir()) {
|
|
89
123
|
try {
|
|
90
124
|
const defaultPackageRoot = path.resolve(defaultClientDist, '..', '..');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "termdock",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.282",
|
|
4
4
|
"description": "A complete web-based terminal application with modern UI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": ".desktop-dist/main.js",
|
|
@@ -48,6 +48,9 @@
|
|
|
48
48
|
"@dnd-kit/core": "^6.3.1",
|
|
49
49
|
"@dnd-kit/sortable": "^10.0.0",
|
|
50
50
|
"@dnd-kit/utilities": "^3.2.2",
|
|
51
|
+
"@ffmpeg/core": "^0.12.10",
|
|
52
|
+
"@ffmpeg/ffmpeg": "^0.12.15",
|
|
53
|
+
"@ffmpeg/util": "^0.12.2",
|
|
51
54
|
"@hello-pangea/dnd": "^18.0.1",
|
|
52
55
|
"@libp2p/crypto": "5.1.9",
|
|
53
56
|
"@libp2p/interface": "3.1.0",
|
package/runtime-manifest.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"packageName": "termdock",
|
|
4
|
-
"version": "1.4.
|
|
4
|
+
"version": "1.4.282",
|
|
5
5
|
"runtimeProtocolVersion": 1,
|
|
6
6
|
"minimumDesktopVersion": "1.4.46",
|
|
7
7
|
"nodeMajor": 22,
|
|
8
|
-
"dependencyHash": "sha256
|
|
9
|
-
"serverBundleHash": "sha256
|
|
10
|
-
"clientBundleHash": "sha256-
|
|
8
|
+
"dependencyHash": "sha256-+FK03eSUIISxxpGNQTlYLuAcpuytFuT+tiLAMYVhwl4=",
|
|
9
|
+
"serverBundleHash": "sha256-+mnyL8SRqGfjwn1tgqvvzfioSJzeg4r9TIVUatAWvRU=",
|
|
10
|
+
"clientBundleHash": "sha256-6SXQQ5nH/ovAh8fnEUzc0Hg/PwI4XCBocTn44mI+VJM=",
|
|
11
11
|
"entrypoint": "dist/server/cli.js",
|
|
12
12
|
"clientEntrypoint": "dist/client/index.html"
|
|
13
13
|
}
|