mulmoterminal 4.13.0 → 4.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -2
- package/common/dirConfigSource.ts +3 -0
- package/common/keymap.ts +2 -1
- package/common/sharedAppAccess.ts +571 -0
- package/common/sharedAppPreview.ts +5 -3
- package/common/sharedAppPublicFace.ts +30 -0
- package/dist/assets/{AllPackages-CF2GkZ5g-CssQbjOa.js → AllPackages-CF2GkZ5g-BTu3t8zV.js} +1 -1
- package/dist/assets/{BaseConfiguration-CAwZOAki-Dh0EGNE9.js → BaseConfiguration-CAwZOAki-C2hyxOMT.js} +1 -1
- package/dist/assets/{Element-BMI7Nj5w-CqxLhpQT.js → Element-BMI7Nj5w-CX1N3WkK.js} +1 -1
- package/dist/assets/{Entities-C8p_0jCn-DEEX_Xry.js → Entities-C8p_0jCn-B0lpGQzn.js} +1 -1
- package/dist/assets/{FunctionList-YWk54TCy-D2PM4n-L.js → FunctionList-YWk54TCy-BJkakHAV.js} +1 -1
- package/dist/assets/{InputJax-C5dj-ntL-Cnbx6KYn.js → InputJax-C5dj-ntL-D-EU3Dqg.js} +1 -1
- package/dist/assets/{MathItem-YJvQL-XJ-afY01gTq.js → MathItem-YJvQL-XJ-BVTP7VA1.js} +1 -1
- package/dist/assets/{MmlFactory-DuXYIgx8-DpHfMoIU.js → MmlFactory-DuXYIgx8-BrNlpPo8.js} +1 -1
- package/dist/assets/{Options-oARQeeuT-CiIYMpYT.js → Options-oARQeeuT-BA6UMq-L.js} +1 -1
- package/dist/assets/{OutputJax-DfUZNNCu-B38K9BaX.js → OutputJax-DfUZNNCu-C1sWc7Zb.js} +1 -1
- package/dist/assets/{PrioritizedList-6lun1Xqd-Dygd27F6.js → PrioritizedList-6lun1Xqd-CuCmr3GP.js} +1 -1
- package/dist/assets/{Styles-BPXeoqzi-C58TnqKJ.js → Styles-BPXeoqzi-DT74Ekx7.js} +1 -1
- package/dist/assets/{TeXAtom-LHT3KFWH-uPYpzamN.js → TeXAtom-LHT3KFWH-BqGk-gpO.js} +1 -1
- package/dist/assets/{abnfDiagram-VCTEODGH-DoYNjdBB-Dai05JsH.js → abnfDiagram-VCTEODGH-DoYNjdBB-CB88QbBJ.js} +1 -1
- package/dist/assets/{arc-CqByPKkF-D5Jg9Zer.js → arc-CqByPKkF-CXgXnOlC.js} +1 -1
- package/dist/assets/architecture-7GRP2DOG-CRS69XmP-CyVV2-L-.js +1 -0
- package/dist/assets/{architectureDiagram-5GKGNRK7-BhcT6qS5-DipIYUA_.js → architectureDiagram-5GKGNRK7-BhcT6qS5-D8QuRnQA.js} +1 -1
- package/dist/assets/{assistive-mml-DXJXho4o-BRWc7vXC.js → assistive-mml-DXJXho4o-xM73QNFo.js} +1 -1
- package/dist/assets/{blockDiagram-I7D4REHJ-1Cng0Q4K-CmrGn63J.js → blockDiagram-I7D4REHJ-1Cng0Q4K-DAGSE0y3.js} +1 -1
- package/dist/assets/{c4Diagram-7LVT6UL2-CAb9c8nc-EY5oaGlv.js → c4Diagram-7LVT6UL2-CAb9c8nc-DoZWxqPB.js} +1 -1
- package/dist/assets/channel-BjESmYnj-DC0LjyIo.js +1 -0
- package/dist/assets/{chunk-2E4U76K2-CMyNbRyJ-BYHoa5DT.js → chunk-2E4U76K2-CMyNbRyJ-DGsHrczQ.js} +1 -1
- package/dist/assets/{chunk-4HAMMTFA-ChwfIAnF-DQUJxetY.js → chunk-4HAMMTFA-ChwfIAnF-Bt7ZheEO.js} +1 -1
- package/dist/assets/{chunk-75Z2AOVW-CbPA0Zt_-BKl9d-co.js → chunk-75Z2AOVW-CbPA0Zt_-E9Qt4J4K.js} +1 -1
- package/dist/assets/{chunk-CLGD4ZFX-CVw8XHcp-MCMGRlFw.js → chunk-CLGD4ZFX-CVw8XHcp-lV8_wKZH.js} +1 -1
- package/dist/assets/{chunk-DU6HZSFF-DuOx2LFX-B86yuhFX.js → chunk-DU6HZSFF-DuOx2LFX-DenO9keb.js} +1 -1
- package/dist/assets/{chunk-F27PBJKO-CgBMw9yN-Bq3zuyO1.js → chunk-F27PBJKO-CgBMw9yN-By3aRrhK.js} +1 -1
- package/dist/assets/{chunk-GMAD6QVW-JTqlimUX-BADn_t1m.js → chunk-GMAD6QVW-JTqlimUX-ChL887nj.js} +1 -1
- package/dist/assets/{chunk-GVQU2GXP-D6ccB4DO-D67xQv2L.js → chunk-GVQU2GXP-D6ccB4DO-B523FbDZ.js} +1 -1
- package/dist/assets/{chunk-IMKFNOWR-ij1DSzMb-Cdmwd2WK.js → chunk-IMKFNOWR-ij1DSzMb-DAkNoOeG.js} +1 -1
- package/dist/assets/{chunk-L3NEJ4N5-CUoAQVG2-Buv2AnXy.js → chunk-L3NEJ4N5-CUoAQVG2-bA6jySGk.js} +1 -1
- package/dist/assets/{chunk-OSK3NFVY-_VNbXQSu-C5f15YpO.js → chunk-OSK3NFVY-_VNbXQSu-DT4x86Vl.js} +1 -1
- package/dist/assets/{chunk-P2QGCYS3-B8lzOn3Y-B3mLNaJD.js → chunk-P2QGCYS3-B8lzOn3Y-DjhuFb1P.js} +1 -1
- package/dist/assets/{chunk-POPQ4Y6H-Bh_uOTmp-Dy-RhpSF.js → chunk-POPQ4Y6H-Bh_uOTmp-Bt_ynbRs.js} +1 -1
- package/dist/assets/{chunk-PWAF6VOD-DzjnfYSw-Br7rBQUn.js → chunk-PWAF6VOD-DzjnfYSw-Dd4fzZ6T.js} +1 -1
- package/dist/assets/{chunk-SHT3W25Y-B8dQLS5w-Bzrea95d.js → chunk-SHT3W25Y-B8dQLS5w-QEPPztqw.js} +1 -1
- package/dist/assets/{chunk-SVP7TREG-B6A-T8Th-CD7e9pDy.js → chunk-SVP7TREG-B6A-T8Th-B9z1diC8.js} +1 -1
- package/dist/assets/{chunk-TICWLB2K-C1kwD29l-Cqy2hS-h.js → chunk-TICWLB2K-C1kwD29l-BPE1JwDI.js} +1 -1
- package/dist/assets/{chunk-TLUHSLCS-DYzGlCmi-DQFOalYn.js → chunk-TLUHSLCS-DYzGlCmi-CbMzz_ug.js} +2 -2
- package/dist/assets/{chunk-XXDRQBXY-vg0kfC73-Beoe3hey.js → chunk-XXDRQBXY-vg0kfC73-Dk-hBdTD.js} +1 -1
- package/dist/assets/classDiagram-ZZMXUADV-C7gP-pUH-DC5wp21b.js +1 -0
- package/dist/assets/classDiagram-v2-VYDZK3BY-CUwV5k1F-DC5wp21b.js +1 -0
- package/dist/assets/{cose-bilkent-JH36ORCC-NuHCtE3P-CAm6fB__.js → cose-bilkent-JH36ORCC-NuHCtE3P-CWxfeA6n.js} +1 -1
- package/dist/assets/cynefin-OW5HDTMX-C4iKivN4-Dfu4ZK_1.js +1 -0
- package/dist/assets/{cynefinDiagram-5FMLGOSQ-CA7sro34-Dw8nX0TQ.js → cynefinDiagram-5FMLGOSQ-CA7sro34-CH0lPGVu.js} +1 -1
- package/dist/assets/{dagre-GXQ25YYZ-DOztjUR_-CLilpzZ6.js → dagre-GXQ25YYZ-DOztjUR_-D2fo3YKY.js} +1 -1
- package/dist/assets/{diagram-S7CK7UJ4-D_nsLfRT-AWaKWxdg.js → diagram-S7CK7UJ4-D_nsLfRT-Bqo0esbY.js} +1 -1
- package/dist/assets/{diagram-UQ7AKVKN-DNN-YX9a-Cxg2PCC4.js → diagram-UQ7AKVKN-DNN-YX9a-D1WAuvB6.js} +1 -1
- package/dist/assets/{diagram-VSXAHHWV--HENzo-l-Di3J8S1Y.js → diagram-VSXAHHWV--HENzo-l-vsznvkHz.js} +1 -1
- package/dist/assets/{diagram-VX7I27RA-m2m9dROj-DmZLkzRx.js → diagram-VX7I27RA-m2m9dROj-CAUGcTGr.js} +1 -1
- package/dist/assets/{diagram-Z3DM3KII-D4qpv4-B-BhRu_oHO.js → diagram-Z3DM3KII-D4qpv4-B-CcuKz799.js} +1 -1
- package/dist/assets/{dist-BA8WR926.js → dist-BtbaSZUG.js} +1 -1
- package/dist/assets/{dist-CgQ_oQmc.js → dist-DV9ZBwuz.js} +1 -1
- package/dist/assets/{dist-DeiyD9Ki-R86_Zh4z.js → dist-DeiyD9Ki-Dh8VD-Dg.js} +1 -1
- package/dist/assets/{dist-CSTVKEO6.js → dist-Dw9BfUg4.js} +1 -1
- package/dist/assets/{dist-CVpznzjS.js → dist-HR-pLpzx.js} +1 -1
- package/dist/assets/{ebnfDiagram-PWID7BFC-CAbv3sZg-C6XDy8ND.js → ebnfDiagram-PWID7BFC-CAbv3sZg-BuwVscQE.js} +1 -1
- package/dist/assets/{erDiagram-RLTQ6QDP-a10Ryh0--CbOy4ZUP.js → erDiagram-RLTQ6QDP-a10Ryh0--C3lzWBMG.js} +1 -1
- package/dist/assets/eventmodeling-NTZA5JFV-DhqtNS8R-C7GPfFjk.js +1 -0
- package/dist/assets/flowDiagram-HODETNUW-CAW_8mwY-Dd3O0Ql2.js +1 -0
- package/dist/assets/{ganttDiagram-EL5Y4UJY-Cb7leeOC-weDAGCBD.js → ganttDiagram-EL5Y4UJY-Cb7leeOC-CEU7UVK3.js} +1 -1
- package/dist/assets/gitGraph-4MIJSDKK-S_Zs6Nxs-BqbmRM3z.js +1 -0
- package/dist/assets/{gitGraphDiagram-WWUBYQGX-BCSbUpXG-BomL5zI6.js → gitGraphDiagram-WWUBYQGX-BCSbUpXG-bQ0ZbFrl.js} +1 -1
- package/dist/assets/{html-DdQiKDqM-B6wswbaV.js → html-DdQiKDqM-xhxGsr21.js} +1 -1
- package/dist/assets/index-C4CrAeLJ.js +1051 -0
- package/dist/assets/index-Dz5KMovN.css +1 -0
- package/dist/assets/info-A6RAGUB7-4sGJh1is-CB7tcAz2.js +1 -0
- package/dist/assets/{infoDiagram-27XIBGKW-BJRaZItN-DDAXs1r3.js → infoDiagram-27XIBGKW-BJRaZItN-C1KB3RM8.js} +1 -1
- package/dist/assets/{ishikawaDiagram-5VMMS53U-DHlFe__S-2FoUZyuK.js → ishikawaDiagram-5VMMS53U-DHlFe__S-CbXWDEUz.js} +1 -1
- package/dist/assets/{journeyDiagram-3NMN7TZE-BOIo3JM--CKVCefHi.js → journeyDiagram-3NMN7TZE-BOIo3JM--CEqjzRU4.js} +1 -1
- package/dist/assets/{kanban-definition-UXKFOSKX-yrQdG683-DLceahDo.js → kanban-definition-UXKFOSKX-yrQdG683-Dj4byHes.js} +1 -1
- package/dist/assets/{lengths-CvmPfBid-Bu4CQkge.js → lengths-CvmPfBid-CTRV5nvN.js} +1 -1
- package/dist/assets/{line-DUb1TjJS-Cy4--5UV.js → line-DUb1TjJS-DIHKahms.js} +1 -1
- package/dist/assets/{linear-xsuGWu5q-BtDBK8pF.js → linear-xsuGWu5q-nelm76w8.js} +1 -1
- package/dist/assets/{liteAdaptor-C0FQiOEx-Bo-QRNEC.js → liteAdaptor-C0FQiOEx-D8aPUGD8.js} +1 -1
- package/dist/assets/{marp-BNsGmsYi.js → marp-5RblDiyP.js} +1 -1
- package/dist/assets/{mathjax-DVEo4UYj-BDUX9u1X.js → mathjax-DVEo4UYj-CGKYNMIQ.js} +1 -1
- package/dist/assets/{mermaid-parser.core-fkjeiYO7-Bu045BJA.js → mermaid-parser.core-fkjeiYO7-DZ-xY0M3.js} +2 -2
- package/dist/assets/{mermaid.core-CZDx2Cyn-W7sMU12C.js → mermaid.core-CZDx2Cyn-D2BR-Fgf.js} +3 -3
- package/dist/assets/{mindmap-definition-YA3MSWOX-BpKAVyqs-B8fXczO5.js → mindmap-definition-YA3MSWOX-BpKAVyqs-DuziYdAg.js} +1 -1
- package/dist/assets/{mo-CrlNnGXX-DvbKdwI8.js → mo-CrlNnGXX-v7uyMnDg.js} +1 -1
- package/dist/assets/packet-AYTQ26CC-MQQyx8fI-C-67vaT4.js +1 -0
- package/dist/assets/{pegDiagram-XKGWAZYB-C7eG_Ohl-CL0sh1mk.js → pegDiagram-XKGWAZYB-C7eG_Ohl-B_1lKBZZ.js} +1 -1
- package/dist/assets/pie-WAS4IAKB-CyaL5i_d-38NZcO0J.js +1 -0
- package/dist/assets/{pieDiagram-E7YTZNPT-5f9wSfDR-CLmTFnZr.js → pieDiagram-E7YTZNPT-5f9wSfDR-BahPKQMB.js} +1 -1
- package/dist/assets/{quadrantDiagram-AXDQQJYC-mWeaOj5S-BUPv1MtK.js → quadrantDiagram-AXDQQJYC-mWeaOj5S-CFdn_rBp.js} +1 -1
- package/dist/assets/radar-RG4KPBEZ-DR-SsHDJ-B5OQd4Oe.js +1 -0
- package/dist/assets/railroad-74A4TZTK-C2gqsOGX-DG4ZW9q0.js +1 -0
- package/dist/assets/railroad-abnf-HS5TGJTU-Dpzw6P5u-DOhite6k.js +1 -0
- package/dist/assets/railroad-ebnf-LZEXJU2U-J_BuIrPo--8XopcaV.js +1 -0
- package/dist/assets/railroad-peg-WCYAUIDC-DzMStOR--BiJTLpn5.js +1 -0
- package/dist/assets/{railroadDiagram-O6MQD6OU-DJskhE7u-B2rIG8vE.js → railroadDiagram-O6MQD6OU-DJskhE7u-BefqE33w.js} +1 -1
- package/dist/assets/{requirementDiagram-BXWQKSXE-B5E0bU4h-BNG0IbS0.js → requirementDiagram-BXWQKSXE-B5E0bU4h-Ct2hTW8M.js} +1 -1
- package/dist/assets/{sankeyDiagram-P5KCCOFB-DS3AOTai-BmF8ArEH.js → sankeyDiagram-P5KCCOFB-DS3AOTai-DBWUiRVW.js} +1 -1
- package/dist/assets/{sequenceDiagram-WJ2MYXX4-Bn2L9osv-GsnV2qn4.js → sequenceDiagram-WJ2MYXX4-Bn2L9osv-BQAAMuCe.js} +1 -1
- package/dist/assets/{src-CLC0ddSd-Dquc25MQ.js → src-CLC0ddSd-C8OQlmHt.js} +1 -1
- package/dist/assets/{stateDiagram-D77RDMKH-DbtoW7HL-fgglcfel.js → stateDiagram-D77RDMKH-DbtoW7HL-DDeo48Qj.js} +1 -1
- package/dist/assets/stateDiagram-v2-MP3YSRHH-CX6RalKY-CDgLSY89.js +1 -0
- package/dist/assets/{svg-CaHU_sxA-BFRh8mf6.js → svg-CaHU_sxA-Bk35isDa.js} +1 -1
- package/dist/assets/{swimlanes-42K2YHIH-90h8w_3B-DFNJ2iO4.js → swimlanes-42K2YHIH-90h8w_3B-D2_Fa0_g.js} +1 -1
- package/dist/assets/swimlanesDiagram-VR7AAH4N-49XH_TMr-0B0NG4w_.js +8 -0
- package/dist/assets/{tex-B1cONMvb-DVhGZSdj.js → tex-B1cONMvb-CvplOOBt.js} +1 -1
- package/dist/assets/{timeline-definition-24CTP7MA-Bx3KcICO-CZbcUu5B.js → timeline-definition-24CTP7MA-Bx3KcICO-CUHisz_Z.js} +1 -1
- package/dist/assets/treeView-Q6P3EWNA-gFs854Sn-DIu30QI1.js +1 -0
- package/dist/assets/treemap-WGGIJYW6-DGh_szUA-CrzIEdPv.js +1 -0
- package/dist/assets/{vennDiagram-4TSXK5OY-DSexNe_H-CTFwoiwN.js → vennDiagram-4TSXK5OY-DSexNe_H-Dg9Hud0S.js} +1 -1
- package/dist/assets/wardley-WFR3VGLG-BVLYL3gB-uIYzBarM.js +1 -0
- package/dist/assets/{wardleyDiagram-VM6X3IG4-DesYYyZW-CW8HWmUS.js → wardleyDiagram-VM6X3IG4-DesYYyZW-CITDy3E3.js} +1 -1
- package/dist/assets/{xychartDiagram-S5SC5T6Z-dIt6pHWV-C6EUNlwK.js → xychartDiagram-S5SC5T6Z-dIt6pHWV-Co-YpFxn.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +12 -12
- package/server/backends/deckList.ts +142 -0
- package/server/backends/mulmoscript.ts +84 -0
- package/server/backends/sharedApp/access.ts +47 -0
- package/server/backends/sharedApp/context.ts +1 -1
- package/server/backends/sharedApp/preview.ts +2 -1
- package/server/backends/sharedApp/publish.ts +8 -5
- package/server/backends/sharedAppPreviewRoutes.ts +56 -18
- package/server/backends/storiesRoot.ts +29 -0
- package/server/config/config-routes.ts +8 -1
- package/server/config/config-schema.ts +32 -2
- package/server/config/dir-config.ts +6 -1
- package/server/config/header-config.ts +13 -0
- package/server/config/header-resolve.ts +2 -0
- package/server/config/worktree-dir-config.ts +3 -1
- package/server/infra/shared-app-tool.ts +34 -6
- package/server/infra/tmux-routes.ts +7 -1
- package/server/infra/tmux.ts +46 -2
- package/server/routes/dir-routes.ts +27 -2
- package/server/session/pty-spawn.ts +14 -2
- package/server/skills/mulmoterminal-config/SKILL.md +28 -2
- package/server/skills/mulmoterminal-dirs/SKILL.md +3 -2
- package/server/skills/mulmoterminal-header/SKILL.md +25 -1
- package/server/skills/mulmoterminal-keys/SKILL.md +6 -0
- package/server/skills/mulmoterminal-shared-app/SKILL.md +18 -2
- package/server/skills/mulmoterminal-shared-app/templates/append-feed.md +1 -1
- package/server/skills/mulmoterminal-shared-app/templates/magazine.md +838 -82
- package/dist/assets/architecture-7GRP2DOG-CRS69XmP-Bkz68tYo.js +0 -1
- package/dist/assets/channel-BjESmYnj-DCJo3CKJ.js +0 -1
- package/dist/assets/classDiagram-ZZMXUADV-C7gP-pUH-TqSfWtS1.js +0 -1
- package/dist/assets/classDiagram-v2-VYDZK3BY-CUwV5k1F-TqSfWtS1.js +0 -1
- package/dist/assets/cynefin-OW5HDTMX-C4iKivN4-9ujipUYq.js +0 -1
- package/dist/assets/eventmodeling-NTZA5JFV-DhqtNS8R-Dt7SIrGk.js +0 -1
- package/dist/assets/flowDiagram-HODETNUW-CAW_8mwY-CnOc_pLO.js +0 -1
- package/dist/assets/gitGraph-4MIJSDKK-S_Zs6Nxs-BfjtZvJt.js +0 -1
- package/dist/assets/index-B-BwWalM.css +0 -1
- package/dist/assets/index-Cyyg6dqf.js +0 -1051
- package/dist/assets/info-A6RAGUB7-4sGJh1is-B8w9oPi5.js +0 -1
- package/dist/assets/packet-AYTQ26CC-MQQyx8fI-DEraoKKf.js +0 -1
- package/dist/assets/pie-WAS4IAKB-CyaL5i_d-hVe4izaF.js +0 -1
- package/dist/assets/radar-RG4KPBEZ-DR-SsHDJ-CUIKMPrd.js +0 -1
- package/dist/assets/railroad-74A4TZTK-C2gqsOGX-Sdqv0l9F.js +0 -1
- package/dist/assets/railroad-abnf-HS5TGJTU-Dpzw6P5u-BWEL2Ih5.js +0 -1
- package/dist/assets/railroad-ebnf-LZEXJU2U-J_BuIrPo-CScwuEKP.js +0 -1
- package/dist/assets/railroad-peg-WCYAUIDC-DzMStOR--CUu-tzEV.js +0 -1
- package/dist/assets/stateDiagram-v2-MP3YSRHH-CX6RalKY-D118UaDi.js +0 -1
- package/dist/assets/swimlanesDiagram-VR7AAH4N-49XH_TMr-Bkt0WWk-.js +0 -8
- package/dist/assets/treeView-Q6P3EWNA-gFs854Sn-D7488VRG.js +0 -1
- package/dist/assets/treemap-WGGIJYW6-DGh_szUA-B-xoM8YR.js +0 -1
- package/dist/assets/wardley-WFR3VGLG-BVLYL3gB-CjcN7LrQ.js +0 -1
package/README.md
CHANGED
|
@@ -101,7 +101,8 @@ the same two behind **[GraphAI](https://github.com/receptron/graphai)**. [More
|
|
|
101
101
|
command-output explanations — so a wall of parallel agents stays legible.
|
|
102
102
|
- **Make it yours.** Per-directory **themes, colors, and name badges** (`prod` in red,
|
|
103
103
|
`staging` in amber), a configurable header (buttons + info chips), custom attention sounds,
|
|
104
|
-
and Run / Skill menus to launch a project's scripts
|
|
104
|
+
and Run / Skill / Mulmo menus to launch a project's scripts, `.claude/skills` and decks right
|
|
105
|
+
inside a cell.
|
|
105
106
|
|
|
106
107
|

|
|
107
108
|
|
|
@@ -369,6 +370,7 @@ The launcher detects it and prints the exact, OS-appropriate removal command; ru
|
|
|
369
370
|
- [Running](#running)
|
|
370
371
|
- [Scripts (Run menu)](#scripts-run-menu)
|
|
371
372
|
- [Skills (Skill menu)](#skills-skill-menu)
|
|
373
|
+
- [Decks (Mulmo menu)](#decks-mulmo-menu)
|
|
372
374
|
- [Files view (browse & edit)](#files-view-browse--edit)
|
|
373
375
|
- [Git worktrees & pull requests](#git-worktrees--pull-requests)
|
|
374
376
|
- [Cost & token usage](#cost--token-usage)
|
|
@@ -680,7 +682,9 @@ and open-on-GitHub (🌐, git repos). Setting `buttons` (at either level) **repl
|
|
|
680
682
|
set** with your list (it is not merged on top), so listing your own — even a **shorter** one — is how
|
|
681
683
|
you drop, reorder, or swap them.
|
|
682
684
|
A button has an `id`, `label`, and a `run` of `"shell"` (run a command), `"input"` (send text to the
|
|
683
|
-
agent),
|
|
685
|
+
agent), `"open"`, or `"action"` (act on the cell itself — `action: "restart"` ends the agent and
|
|
686
|
+
starts it again in the same cell on the same conversation, which is how an MCP / config / plugin
|
|
687
|
+
change takes effect; it costs a resume and asks nothing first). An `open` button targets one of `url` / `reveal` (OS file manager) / `files`
|
|
684
688
|
(in-app explorer) / `view` (a built-in overlay) / `terminal` (a dir → a new cell running `$SHELL`,
|
|
685
689
|
opened next to the current one) / `pr: true` (open the current branch's PR — the button is hidden when
|
|
686
690
|
there's no open PR) / `pickFile: true` (OS file dialog → insert the path).
|
|
@@ -1048,6 +1052,46 @@ button. Skills are discovered read-only; the menu never creates or edits them.
|
|
|
1048
1052
|
|
|
1049
1053
|
---
|
|
1050
1054
|
|
|
1055
|
+
## Decks (Mulmo menu)
|
|
1056
|
+
|
|
1057
|
+
Beside **⚡ Skill ▾** is **⊞ Mulmo ▾** — the decks (mulmoScript presentations) this project offers,
|
|
1058
|
+
one click from the **Canvas**. It appears **only when there are decks to show** (none, no button),
|
|
1059
|
+
like the two menus next to it.
|
|
1060
|
+
|
|
1061
|
+
Picking one shows it in the Canvas beside that cell, enlarging the cell first if it was tiled.
|
|
1062
|
+
Nothing is typed into the session and the agent is not asked: this is a viewer, so it costs no
|
|
1063
|
+
tokens and works while the agent is busy.
|
|
1064
|
+
|
|
1065
|
+
**Two sources, both named — the menu never searches your disk:**
|
|
1066
|
+
|
|
1067
|
+
1. **`artifacts/stories/` under the workspace** — where the plugin keeps the decks an agent makes.
|
|
1068
|
+
Always offered, nothing to configure.
|
|
1069
|
+
2. **Decks you list yourself**, for one kept inside a repository:
|
|
1070
|
+
|
|
1071
|
+
```jsonc
|
|
1072
|
+
// <dir>/.mulmoterminal.json
|
|
1073
|
+
{ "decks": ["decks/launch.json", "docs/talks/retro.json"] }
|
|
1074
|
+
```
|
|
1075
|
+
|
|
1076
|
+
Paths are relative to that file and must stay **inside its directory** — `../elsewhere.json` and
|
|
1077
|
+
absolute paths are dropped, because a config file travels with a clone. Each deck is named by its
|
|
1078
|
+
own `title`, or by its file name when it has none.
|
|
1079
|
+
|
|
1080
|
+
**Why you list them rather than the menu finding them:** a search does find them — along with
|
|
1081
|
+
everything else on disk that happens to parse as a deck. Measured on a real workspace: **250 files
|
|
1082
|
+
matched, 33 were the user's own decks and 217 were a checked-out repository's test fixtures and
|
|
1083
|
+
samples.** A menu is a short list of things you chose.
|
|
1084
|
+
|
|
1085
|
+
**Where the decks have to live:** under the workspace MulmoTerminal was started in, which is the
|
|
1086
|
+
directory it serves stories from. A cell opened outside it shows no button, because nothing it
|
|
1087
|
+
could list could be opened. Any deck you can see in the file tree is also reachable there — right-click
|
|
1088
|
+
a row and choose **Open in the Canvas** — with no configuration at all.
|
|
1089
|
+
|
|
1090
|
+
If a deck cannot be opened (it was deleted, or the workspace moved since startup), the cell says
|
|
1091
|
+
why rather than doing nothing.
|
|
1092
|
+
|
|
1093
|
+
---
|
|
1094
|
+
|
|
1051
1095
|
## Files view (browse & edit)
|
|
1052
1096
|
|
|
1053
1097
|
A terminal header can carry a **📁 Files** button — add it as a [header button](#header-buttons)
|
|
@@ -30,6 +30,7 @@ export const DIR_CONFIG_KEYS = [
|
|
|
30
30
|
"buttons",
|
|
31
31
|
"chips",
|
|
32
32
|
"skills",
|
|
33
|
+
"decks",
|
|
33
34
|
"provider",
|
|
34
35
|
"model",
|
|
35
36
|
"addDirs",
|
|
@@ -70,6 +71,7 @@ export interface DirConfigExtras {
|
|
|
70
71
|
provider: string | null;
|
|
71
72
|
model: string | null;
|
|
72
73
|
skills: string[] | null;
|
|
74
|
+
decks: string[] | null;
|
|
73
75
|
addDirs: string[] | null;
|
|
74
76
|
// Tri-state on purpose: `false` is a setting this file made, and the preview has to show it as
|
|
75
77
|
// one. Carried here because a boolean cannot be read back off the per-cell config the way a
|
|
@@ -91,6 +93,7 @@ export const EMPTY_DIR_CONFIG_EXTRAS: DirConfigExtras = {
|
|
|
91
93
|
provider: null,
|
|
92
94
|
model: null,
|
|
93
95
|
skills: null,
|
|
96
|
+
decks: null,
|
|
94
97
|
addDirs: null,
|
|
95
98
|
appendSystemPrompt: null,
|
|
96
99
|
buttonLabels: [],
|
package/common/keymap.ts
CHANGED
|
@@ -21,6 +21,7 @@ export const KEYMAP_ACTIONS = [
|
|
|
21
21
|
"terminal-new-here",
|
|
22
22
|
"terminal-new-adjacent",
|
|
23
23
|
"terminal-close",
|
|
24
|
+
"terminal-restart",
|
|
24
25
|
"copy",
|
|
25
26
|
"paste",
|
|
26
27
|
] as const;
|
|
@@ -48,7 +49,7 @@ export const TERMINAL_SCOPED_ACTIONS: readonly KeymapAction[] = ["copy", "paste"
|
|
|
48
49
|
// Here rather than beside gridShortcutFor because BOTH sides decide from it: the grid dispatches on
|
|
49
50
|
// it, and validateKeymap has to know that these decline the key — the handler returns WITHOUT
|
|
50
51
|
// stopping the event, so a `send` on the same keystroke fires instead (codex on #1906).
|
|
51
|
-
export const NEEDS_A_CURRENT_TERMINAL: readonly KeymapAction[] = ["zoom-next", "zoom-prev", "terminal-new-adjacent", "terminal-close"];
|
|
52
|
+
export const NEEDS_A_CURRENT_TERMINAL: readonly KeymapAction[] = ["zoom-next", "zoom-prev", "terminal-new-adjacent", "terminal-close", "terminal-restart"];
|
|
52
53
|
|
|
53
54
|
// A key that puts BYTES into the focused terminal instead of running an app action (#1005) —
|
|
54
55
|
// Cmd+Right as Ctrl+E for end-of-line, say, or Alt+B for word-back.
|