collabmd 0.1.48 → 0.1.49
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 +61 -5
- package/bin/collabmd.js +3 -0
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-C-nmgL5g.js +1 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-CdVZqicp.js +1 -0
- package/dist/client/assets/{architectureDiagram-5GKGNRK7-I39sYjHI.js → architectureDiagram-5GKGNRK7-wUo0bXif.js} +3 -3
- package/dist/client/assets/{blockDiagram-NRAW4CY4-C6DtJy5Y.js → blockDiagram-I7D4REHJ-BRSK3m49.js} +4 -4
- package/dist/client/assets/browser-utils-DbXSMI-6.js +1 -0
- package/dist/client/assets/{c4Diagram-UCG6FXSJ-CtWtxS9_.js → c4Diagram-7LVT6UL2-yD2poxqw.js} +1 -1
- package/dist/client/assets/channel-Fa4GS_-F.js +1 -0
- package/dist/client/assets/chunk-2E4U76K2-BPnTT-J3.js +2 -0
- package/dist/client/assets/{chunk-TEH6E4GO-DVayPj-q.js → chunk-4HAMMTFA-DStbIfJ1.js} +20 -20
- package/dist/client/assets/{chunk-75Z2AOVW-CdFSaPjz.js → chunk-75Z2AOVW-C5pGd3W9.js} +1 -1
- package/dist/client/assets/{chunk-CLGD4ZFX-DQLgbQrv.js → chunk-CLGD4ZFX-BMeArk03.js} +1 -1
- package/dist/client/assets/chunk-DU6HZSFF-Zkp69c6c.js +127 -0
- package/dist/client/assets/{chunk-F27PBJKO-CNHIFhjo.js → chunk-F27PBJKO-D4xNct1r.js} +1 -1
- package/dist/client/assets/{chunk-GMAD6QVW-CbcBqPM5.js → chunk-GMAD6QVW-NZ6WpDb8.js} +1 -1
- package/dist/client/assets/{chunk-OBVCFTLP-BJR7u1jh.js → chunk-GVQU2GXP-D8SDprfX.js} +1 -1
- package/dist/client/assets/{chunk-G27WJ6UU-D9-eg537.js → chunk-IMKFNOWR-D8jEuU3Q.js} +2 -2
- package/dist/client/assets/{chunk-JQ64N6SF-DSFNH4bh.js → chunk-L3NEJ4N5-aijKP-eh.js} +1 -1
- package/dist/client/assets/chunk-OSK3NFVY-CCbLQAMa.js +10 -0
- package/dist/client/assets/{chunk-P2QGCYS3-BRpqY32H.js → chunk-P2QGCYS3-Oag_FdCq.js} +1 -1
- package/dist/client/assets/{chunk-POPQ4Y6H-Cb4SlVZF.js → chunk-POPQ4Y6H-CYnpIgXT.js} +1 -1
- package/dist/client/assets/{chunk-PWAF6VOD-Cz8IwBB5.js → chunk-PWAF6VOD-JSNrcBmP.js} +1 -1
- package/dist/client/assets/{chunk-RM4UPSZO-CWRwxNWJ.js → chunk-RM4UPSZO-DOWllDY8.js} +4 -4
- package/dist/client/assets/{chunk-RHFEMEQ7-CWY8cf4H.js → chunk-SHT3W25Y-BiQGljao.js} +5 -5
- package/dist/client/assets/{chunk-SVP7TREG-CyHOmcac.js → chunk-SVP7TREG-DB485R5x.js} +1 -1
- package/dist/client/assets/{chunk-LCL6LL3I-DmDkVukh.js → chunk-TICWLB2K-8rAVvoS3.js} +4 -4
- package/dist/client/assets/{chunk-CKBBP62Z-DG26UiBv.js → chunk-TLUHSLCS-DTY5v0aj.js} +2 -2
- package/dist/client/assets/classDiagram-ZZMXUADV-BsQWoR3Q.js +1 -0
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-BsQWoR3Q.js +1 -0
- package/dist/client/assets/{comment-thread-store-CdcwrObc.js → comment-thread-store-CX98zR6q.js} +1 -1
- package/dist/client/assets/comment-threads-BnRwo5B9.js +4 -0
- package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-CdTPi2yO.js → cynefinDiagram-5FMLGOSQ-rTz9RhFH.js} +1 -1
- package/dist/client/assets/{dagre-3AP2YEHR-5gtJtd0O.js → dagre-GXQ25YYZ-Cr67wLpQ.js} +2 -2
- package/dist/client/assets/{diagram-S7CK7UJ4-BudWz9WU.js → diagram-S7CK7UJ4-DywERe__.js} +2 -2
- package/dist/client/assets/{diagram-UQ7AKVKN-3v4rbH-s.js → diagram-UQ7AKVKN-CNYlXtu4.js} +1 -1
- package/dist/client/assets/diagram-VSXAHHWV-0H1a61Bn.js +3 -0
- package/dist/client/assets/{diagram-VX7I27RA-C_-rj0sw.js → diagram-VX7I27RA-CsJbsx5F.js} +1 -1
- package/dist/client/assets/{diagram-Z3DM3KII-B4yxavgj.js → diagram-Z3DM3KII-D0mLxEgI.js} +1 -1
- package/dist/client/assets/dist--hk9I5HQ.js +1 -0
- package/dist/client/assets/{dist-DutPuFmC.js → dist-B1XEa-Zs.js} +1 -1
- package/dist/client/assets/dist-Bd1JucQF.js +1 -0
- package/dist/client/assets/{dist-DZAAWTG-.js → dist-C0G3AaXG.js} +1 -1
- package/dist/client/assets/dist-Dm4w5UId.js +1 -0
- package/dist/client/assets/{dist-B_yQaEv_.js → dist-DpYDHR9p.js} +1 -1
- package/dist/client/assets/{dist-CietwTVS.js → dist-DzNmC81X.js} +1 -1
- package/dist/client/assets/{dist-DDUn5zTz.js → dist-GvvCNBe4.js} +1 -1
- package/dist/client/assets/dist-JaU3aRlD.js +19 -0
- package/dist/client/assets/{dist-Bw3VIE_v.js → dist-TW8iFRyW.js} +1 -1
- package/dist/client/assets/{dist-Dir5dDKZ.js → dist-jVU5Be5P.js} +1 -1
- package/dist/client/assets/document-formatter-rDDjRfZ2.js +2 -0
- package/dist/client/assets/drawioEditor-JubEEha7.js +9 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-HeTxHpCU.js +1 -0
- package/dist/client/assets/editor-session-Bk6oIvSr.js +54 -0
- package/dist/client/assets/{embedded-editor-base-B3l6Xy65.css → embedded-editor-base-BlCgz6mw.css} +1 -1
- package/dist/client/assets/{erDiagram-SSCWMZ5O-C-iy6VkX.js → erDiagram-RLTQ6QDP-CbrDdd5P.js} +2 -2
- package/dist/client/assets/{vault-utils-DvoSftJT.js → es-Bfdp096f.js} +13 -13
- package/dist/client/assets/excalidraw-element-link-YLIaTnVF.js +7 -0
- package/dist/client/assets/{excalidraw-scene-BOben2gr.js → excalidraw-scene-6uROebca.js} +1 -1
- package/dist/client/assets/excalidrawEditor-dBMbRX_S.js +9 -0
- package/dist/client/assets/export-page-CRRQ2NEl.js +57 -0
- package/dist/client/assets/exportDocument-BlQRd9_m.js +2 -0
- package/dist/client/assets/exportDocument-CNSbjZwu.css +1 -0
- package/dist/client/assets/flowDiagram-HODETNUW-D5Gy0wmg.js +1 -0
- package/dist/client/assets/{ganttDiagram-EL5Y4UJY-DtKHAbez.js → ganttDiagram-EL5Y4UJY-BHgOYiZz.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-oue8fQ5o.js → gitGraphDiagram-WWUBYQGX-Dl__X3Sk.js} +1 -1
- package/dist/client/assets/image-ZVKINSPA-DgzW5zAy.js +1 -0
- package/dist/client/assets/index-D3RER1SZ.js +1023 -0
- package/dist/client/assets/index-DREVKl_K.css +1 -0
- package/dist/client/assets/{infoDiagram-RXCK75RN-BMzo6KIn.js → infoDiagram-27XIBGKW-DBpoANC9.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-BIM3h287.js → ishikawaDiagram-5VMMS53U-BMPC6hfp.js} +1 -1
- package/dist/client/assets/{journeyDiagram-EYS64GPL-mF6Lh8O-.js → journeyDiagram-3NMN7TZE-B1sApUmM.js} +2 -2
- package/dist/client/assets/{kanban-definition-3QL26DDD-DLN2NyoR.js → kanban-definition-UXKFOSKX-C9yP4td1.js} +4 -4
- package/dist/client/assets/{line-BfTWJmgf.js → line-BFl3ujec.js} +1 -1
- package/dist/client/assets/mermaid.core-BrY09czX.js +11 -0
- package/dist/client/assets/mermaid.core-DfcNfOTv.js +1 -0
- package/dist/client/assets/{mindmap-definition-FBJOCRG2-CRyHaHTk.js → mindmap-definition-YA3MSWOX-BUQHcYbK.js} +8 -8
- package/dist/client/assets/pegDiagram-XKGWAZYB-Bi2Iml7Z.js +1 -0
- package/dist/client/assets/{pieDiagram-E7YTZNPT-B5OZPb88.js → pieDiagram-E7YTZNPT-_gYXnMoi.js} +1 -1
- package/dist/client/assets/preview-render-compiler-CfxJYldJ.js +41 -0
- package/dist/client/assets/preview-render-compiler-Cu8_i9iS.js +1 -0
- package/dist/client/assets/{preview-render-worker-_QTxqKvP.js → preview-render-worker-c4Yi93qW.js} +41 -35
- package/dist/client/assets/prod-BiJL30sl.js +1 -0
- package/dist/client/assets/prod-qAk7rHa4.js +177 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-Drrw14YH.js → quadrantDiagram-AXDQQJYC-DwexhEhd.js} +1 -1
- package/dist/client/assets/quick-switcher-controller-BoIK_wuG.js +1 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-BVA5UbMu.js +1 -0
- package/dist/client/assets/{requirementDiagram-EFPCY7ZU-CRZG6mRB.js → requirementDiagram-BXWQKSXE-C4cKwiIw.js} +2 -2
- package/dist/client/assets/runtime-config-DcmnGcXU.js +1 -0
- package/dist/client/assets/{sankeyDiagram-P5KCCOFB-DvarEJpo.js → sankeyDiagram-P5KCCOFB-B5HHkRT2.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-B4oWlb-w.js → sequenceDiagram-WJ2MYXX4-BX6jqJFD.js} +6 -6
- package/dist/client/assets/{stateDiagram-HBIQ2CUA-qbHIIqRZ.js → stateDiagram-D77RDMKH-CmqxyRGx.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-zoLLQVyh.js +1 -0
- package/dist/client/assets/{swimlanes-XN3QIQJK-xB6CtUGj.js → swimlanes-42K2YHIH-Bmgb9Zld.js} +1 -1
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DS-KQN37.js +8 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-Lj_yTNlY.js → timeline-definition-24CTP7MA-BA-lVH6P.js} +1 -1
- package/dist/client/assets/vault-api-client-iZLhMJKe.js +6 -0
- package/dist/client/assets/{vennDiagram-4TSXK5OY-BekRp5Y0.js → vennDiagram-4TSXK5OY-DNdUC_Xj.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-kdnV_Hdm.js → wardleyDiagram-VM6X3IG4-C2oY-YbF.js} +1 -1
- package/dist/client/assets/wiki-link-resolver-DFIwErjc.js +1 -0
- package/dist/client/assets/{xychartDiagram-S5SC5T6Z-DufGwNSB.js → xychartDiagram-S5SC5T6Z-CoIR8CBX.js} +1 -1
- package/dist/client/assets/{yjs-provider-reset-guard-DE0vINDP.js → yjs-provider-reset-guard-9ul1qF6k.js} +1 -1
- package/dist/client/drawio-editor.html +11 -3
- package/dist/client/excalidraw-editor.html +45 -2
- package/dist/client/export-document.html +3 -3
- package/dist/client/index.html +67 -35
- package/integrations/pi/index.ts +94 -0
- package/package.json +41 -32
- package/src/client/app/drawio-editor.html +2 -2
- package/src/client/app/excalidraw-editor.html +2 -2
- package/src/client/app/export-document.html +1 -1
- package/src/client/app/index.html +49 -33
- package/src/client/app/main-entry.js +15 -1
- package/src/client/application/app-shell/chat-feature.js +7 -22
- package/src/client/application/app-shell/git-feature.js +23 -5
- package/src/client/application/app-shell/presence-feature.js +8 -25
- package/src/client/application/app-shell/ui-feature-shell.js +36 -91
- package/src/client/application/app-shell/ui-feature-sidebar.js +43 -7
- package/src/client/application/app-shell/ui-feature-tab-activity.js +19 -6
- package/src/client/application/app-shell/ui-feature-toolbar.js +16 -129
- package/src/client/application/app-shell-elements.js +4 -0
- package/src/client/application/preview-render-compiler.js +1 -87
- package/src/client/application/preview-render-scheduler.js +8 -24
- package/src/client/application/preview-renderer.js +2 -2
- package/src/client/application/webmcp-diagram-renderer.js +47 -0
- package/src/client/application/workspace-coordinator.js +3 -1
- package/src/client/application/workspace-route-controller.js +7 -0
- package/src/client/bootstrap/collabmd-app-shell.js +78 -1
- package/src/client/domain/excalidraw-element-link.js +73 -0
- package/src/client/domain/excalidraw-scene.js +21 -0
- package/src/client/domain/hash-routes.js +8 -0
- package/src/client/domain/room.js +1 -5
- package/src/client/domain/runtime-paths.js +5 -0
- package/src/client/excalidraw-editor.js +135 -10
- package/src/client/export/export-host.js +3 -1
- package/src/client/export/export-pipeline.js +4 -17
- package/src/client/infrastructure/agent-connection-api-client.js +23 -0
- package/src/client/infrastructure/auth-client.js +3 -13
- package/src/client/infrastructure/editor-session.js +11 -0
- package/src/client/infrastructure/editor-view-adapter.js +13 -0
- package/src/client/infrastructure/excalidraw-room-client.js +80 -1
- package/src/client/infrastructure/git-api-client.js +39 -33
- package/src/client/infrastructure/lobby-presence.js +2 -5
- package/src/client/infrastructure/runtime-config.js +11 -1
- package/src/client/infrastructure/tab-activity-lock.js +2 -5
- package/src/client/infrastructure/vault-api-client.js +33 -26
- package/src/client/infrastructure/webmcp-tool-registry.js +283 -0
- package/src/client/infrastructure/workspace-sync-client.js +6 -4
- package/src/client/presentation/agent-connection-controller.js +255 -0
- package/src/client/presentation/backlinks-panel.js +3 -0
- package/src/client/presentation/bases-preview-controller.js +27 -18
- package/src/client/presentation/comment-ui/comment-ui-card.js +4 -2
- package/src/client/presentation/create-menu-presenter.js +19 -16
- package/src/client/presentation/excalidraw-embed-controller.js +164 -4
- package/src/client/presentation/file-explorer-view.js +70 -12
- package/src/client/presentation/file-history-view-controller.js +13 -11
- package/src/client/presentation/git-diff-view-controller.js +35 -43
- package/src/client/presentation/git-panel-controller.js +77 -27
- package/src/client/presentation/image-lightbox-controller.js +20 -16
- package/src/client/presentation/layout-controller.js +3 -1
- package/src/client/presentation/quick-switcher-controller.js +20 -78
- package/src/client/presentation/quick-switcher-text-search.js +10 -14
- package/src/client/styles/components/navigation.css +1 -2
- package/src/client/styles/features/agent-connection.css +202 -0
- package/src/client/styles/features/collaboration-chat.css +8 -1
- package/src/client/styles/features/collaboration-dialogs.css +16 -1
- package/src/client/styles/features/collaboration-presence.css +17 -4
- package/src/client/styles/features/diff-toolbar.css +1 -1
- package/src/client/styles/features/media-lightbox.css +12 -3
- package/src/client/styles/features/quick-switcher.css +20 -11
- package/src/client/styles/foundation/themes.css +2 -0
- package/src/client/styles/layout/editor-page.css +25 -11
- package/src/client/styles/layout/responsive.css +2 -20
- package/src/client/styles/layout/shell.css +1 -0
- package/src/client/styles/layout/sidebar.css +7 -4
- package/src/client/styles/primitives/controls.css +21 -54
- package/src/client/styles/style.css +1 -0
- package/src/domain/agent-tool-definitions.js +796 -0
- package/src/domain/collabmd-content-capabilities.js +149 -0
- package/src/domain/collaboration-protocol.js +2 -0
- package/src/domain/comment-threads.js +3 -5
- package/src/domain/diagram-source.js +50 -0
- package/src/domain/editable-content-revision.js +10 -0
- package/src/domain/editable-text.js +3 -0
- package/src/domain/exact-text-edits.js +69 -0
- package/src/domain/excalidraw-agent-scene.js +522 -0
- package/src/domain/excalidraw-agent-verification.js +460 -0
- package/src/domain/excalidraw-room-codec.js +1 -5
- package/src/domain/video-embed.js +76 -0
- package/src/server/application/agent-connection-service.js +178 -0
- package/src/server/application/agent-content-service.js +773 -0
- package/src/server/application/workspace-reconciliation.js +5 -7
- package/src/server/config/env.js +51 -1
- package/src/server/create-app-server.js +36 -0
- package/src/server/domain/bases/base-query-service.js +1 -5
- package/src/server/domain/collaboration/collaboration-room.js +121 -25
- package/src/server/domain/collaboration/protocol.js +4 -0
- package/src/server/domain/hosted-workspace.js +21 -0
- package/src/server/domain/markdown-reference-extractor.js +15 -1
- package/src/server/infrastructure/git/git-service.js +19 -1
- package/src/server/infrastructure/git/history-service.js +1 -1
- package/src/server/infrastructure/git/local-exclude.js +25 -0
- package/src/server/infrastructure/git/parsers.js +19 -17
- package/src/server/infrastructure/git/path-utils.js +0 -16
- package/src/server/infrastructure/git/status-service.js +1 -1
- package/src/server/infrastructure/git/untracked-files.js +12 -21
- package/src/server/infrastructure/http/create-agent-api-handler.js +171 -0
- package/src/server/infrastructure/http/create-git-api-command-handler.js +32 -0
- package/src/server/infrastructure/http/create-request-handler.js +28 -0
- package/src/server/infrastructure/http/create-static-handler.js +6 -0
- package/src/server/infrastructure/mcp/create-agent-mcp-handler.js +199 -0
- package/src/server/infrastructure/persistence/agent-connection-store.js +120 -0
- package/src/server/infrastructure/persistence/pull-backup-store.js +2 -27
- package/src/server/infrastructure/persistence/vault-file-store.js +9 -2
- package/src/server/shared/agent-tool-image.js +22 -0
- package/src/server/shared/agent-tool-rate-limiter.js +20 -0
- package/src/server/startup/git-remote-bootstrap.js +5 -33
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-BPH4FJkv.js +0 -1
- package/dist/client/assets/abnfDiagram-VCTEODGH-BNDLzJ7L.js +0 -1
- package/dist/client/assets/browser-utils--H_DkyEF.js +0 -1
- package/dist/client/assets/channel-CaoKA_We.js +0 -1
- package/dist/client/assets/chunk-DSNCTWBM-8xkug7fQ.js +0 -2
- package/dist/client/assets/chunk-DU6HZSFF-COXDzJK1.js +0 -127
- package/dist/client/assets/chunk-R7TYR2AO-CTd0Yj98.js +0 -10
- package/dist/client/assets/classDiagram-DTDB5LWJ-7fEmn0zV.js +0 -1
- package/dist/client/assets/classDiagram-v2-JRS7N3AN-7fEmn0zV.js +0 -1
- package/dist/client/assets/comment-threads-9J6Em-_y.js +0 -4
- package/dist/client/assets/comment-ui-shared-DuoyznXW.js +0 -7
- package/dist/client/assets/diagram-VSXAHHWV-CQRVEZR7.js +0 -3
- package/dist/client/assets/dist-73RPdcyU.js +0 -1
- package/dist/client/assets/dist-CH-sQu3r.js +0 -1
- package/dist/client/assets/document-formatter-Dxl_a8XO.js +0 -2
- package/dist/client/assets/drawio-editor-BVaNNtYp.js +0 -9
- package/dist/client/assets/drawioEditor-BkIBlXx0.js +0 -2
- package/dist/client/assets/ebnfDiagram-PWID7BFC-OXa8VEp1.js +0 -1
- package/dist/client/assets/editor-session-DMyVdHLj.js +0 -54
- package/dist/client/assets/excalidraw-editor-BjYaNEMY.js +0 -9
- package/dist/client/assets/excalidraw-mermaid-stub-BNckbX2n.js +0 -1
- package/dist/client/assets/excalidraw-mermaid-stub-DE5FTiZB.js +0 -1
- package/dist/client/assets/excalidrawEditor-ChqF_d82.js +0 -2
- package/dist/client/assets/export-page-Dyu0XCbu.js +0 -57
- package/dist/client/assets/exportDocument-CJBx4Xjx.css +0 -1
- package/dist/client/assets/exportDocument-Dgvfa2Sd.js +0 -2
- package/dist/client/assets/flowDiagram-A5DVABFB-CiW1eN8C.js +0 -1
- package/dist/client/assets/image-ZVKINSPA-0zXSnE7M.js +0 -1
- package/dist/client/assets/index-CSNIMyOP.css +0 -1
- package/dist/client/assets/index-DG3N2Ps-.js +0 -2
- package/dist/client/assets/main-D0wCxpVn.js +0 -903
- package/dist/client/assets/mermaid.core-BJRLUQZE.js +0 -11
- package/dist/client/assets/pegDiagram-XKGWAZYB-B31fKPR2.js +0 -1
- package/dist/client/assets/preview-render-compiler-CrJIooVD.js +0 -35
- package/dist/client/assets/preview-render-compiler-O0JxBVNF.js +0 -1
- package/dist/client/assets/preview-render-profile-B4RWYWHt.js +0 -1
- package/dist/client/assets/prod-BiYPMR1i.js +0 -177
- package/dist/client/assets/prod-VxdGZ5Ly.js +0 -1
- package/dist/client/assets/quick-switcher-controller-CaEjEtq_.js +0 -1
- package/dist/client/assets/railroadDiagram-O6MQD6OU-BPifP0MB.js +0 -1
- package/dist/client/assets/runtime-config-BLrEKVO1.js +0 -1
- package/dist/client/assets/stateDiagram-v2-4QOOHH4V-B--gjrit.js +0 -1
- package/dist/client/assets/swimlanesDiagram-VK2B7HYN-DO8XNXEg.js +0 -8
- package/dist/client/assets/vault-api-client-BkwdFjx0.js +0 -6
- package/src/client/app/drawio-editor-entry.js +0 -1
- package/src/client/app/excalidraw-editor-entry.js +0 -1
- package/src/client/excalidraw-mermaid-stub.js +0 -7
- package/src/client/main.js +0 -16
- /package/dist/client/assets/{drawio-editor-UQQ8XHou.css → drawioEditor-UQQ8XHou.css} +0 -0
- /package/dist/client/assets/{excalidraw-editor-BbSbI80a.css → excalidrawEditor-BbSbI80a.css} +0 -0
- /package/dist/client/assets/{sizeCapture-X5ZJPWSS-B0uUizjq.js → sizeCapture-INFHLROL-B0uUizjq.js} +0 -0
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<header class="export-page-header">
|
|
11
11
|
<div>
|
|
12
12
|
<h1>Preparing export</h1>
|
|
13
|
-
<p id="exportStatus">Initializing…</p>
|
|
13
|
+
<p id="exportStatus" role="status" aria-live="polite">Initializing…</p>
|
|
14
14
|
</div>
|
|
15
15
|
</header>
|
|
16
16
|
<section id="exportWarningsSection" class="export-warnings-panel" hidden>
|
|
@@ -72,8 +72,8 @@
|
|
|
72
72
|
</button>
|
|
73
73
|
</div>
|
|
74
74
|
</div>
|
|
75
|
-
<div class="ui-nav-tabs" id="sidebarTabs">
|
|
76
|
-
<button class="ui-nav-tab active" id="filesSidebarTab" type="button">
|
|
75
|
+
<div class="ui-nav-tabs" id="sidebarTabs" role="tablist" aria-label="Sidebar views">
|
|
76
|
+
<button class="ui-nav-tab active" id="filesSidebarTab" type="button" role="tab" aria-selected="true" aria-controls="fileTree" tabindex="0">
|
|
77
77
|
<span class="ui-nav-tab-icon" aria-hidden="true">
|
|
78
78
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round">
|
|
79
79
|
<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path>
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
</span>
|
|
82
82
|
<span class="ui-nav-tab-label">Files</span>
|
|
83
83
|
</button>
|
|
84
|
-
<button class="ui-nav-tab" id="commentsSidebarTab" type="button">
|
|
84
|
+
<button class="ui-nav-tab" id="commentsSidebarTab" type="button" role="tab" aria-selected="false" aria-controls="commentOverviewPanel" tabindex="-1">
|
|
85
85
|
<span class="ui-nav-tab-icon" aria-hidden="true">
|
|
86
86
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
87
87
|
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
</span>
|
|
90
90
|
<span class="ui-nav-tab-label">Comments</span>
|
|
91
91
|
</button>
|
|
92
|
-
<button class="ui-nav-tab hidden" id="gitSidebarTab" type="button">
|
|
92
|
+
<button class="ui-nav-tab hidden" id="gitSidebarTab" type="button" role="tab" aria-selected="false" aria-controls="gitPanel" tabindex="-1">
|
|
93
93
|
<span class="ui-nav-tab-icon" aria-hidden="true">
|
|
94
94
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
95
95
|
<circle cx="18" cy="18" r="3"></circle>
|
|
@@ -125,9 +125,9 @@
|
|
|
125
125
|
aria-label="Search changed files"
|
|
126
126
|
>
|
|
127
127
|
</div>
|
|
128
|
-
<nav id="fileTree" class="file-tree" aria-
|
|
129
|
-
<section id="commentOverviewPanel" class="comment-overview-panel hidden" aria-
|
|
130
|
-
<div id="gitPanel" class="git-panel hidden" aria-
|
|
128
|
+
<nav id="fileTree" class="file-tree" role="tabpanel" aria-labelledby="filesSidebarTab"></nav>
|
|
129
|
+
<section id="commentOverviewPanel" class="comment-overview-panel hidden" role="tabpanel" aria-labelledby="commentsSidebarTab"></section>
|
|
130
|
+
<div id="gitPanel" class="git-panel hidden" role="tabpanel" aria-labelledby="gitSidebarTab"></div>
|
|
131
131
|
<div
|
|
132
132
|
class="sidebar-resizer"
|
|
133
133
|
id="sidebarResizer"
|
|
@@ -239,13 +239,11 @@
|
|
|
239
239
|
type="button"
|
|
240
240
|
class="ui-pill-badge ui-pill-badge--muted toolbar-badge toolbar-badge-button toolbar-presence-count"
|
|
241
241
|
id="userCount"
|
|
242
|
-
|
|
243
|
-
aria-expanded="false"
|
|
244
|
-
data-presence-panel-trigger="true"
|
|
242
|
+
popovertarget="presencePanel"
|
|
245
243
|
></button>
|
|
246
244
|
</div>
|
|
247
245
|
|
|
248
|
-
<section class="collaboration-popover presence-panel
|
|
246
|
+
<section class="collaboration-popover presence-panel" id="presencePanel" aria-label="Online users" popover="auto">
|
|
249
247
|
<div class="presence-panel-header">
|
|
250
248
|
<div>
|
|
251
249
|
<h2 class="presence-panel-title">Online now</h2>
|
|
@@ -256,7 +254,7 @@
|
|
|
256
254
|
</section>
|
|
257
255
|
|
|
258
256
|
<div class="chat-container" id="chatContainer">
|
|
259
|
-
<button type="button" class="ui-button ui-button--ghost ui-button--toolbar chat-toggle-btn" id="chatToggleBtn" aria-label="Open team chat"
|
|
257
|
+
<button type="button" class="ui-button ui-button--ghost ui-button--toolbar chat-toggle-btn" id="chatToggleBtn" aria-label="Open team chat" popovertarget="chatPanel" title="Team chat">
|
|
260
258
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
261
259
|
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
|
|
262
260
|
</svg>
|
|
@@ -265,7 +263,7 @@
|
|
|
265
263
|
</button>
|
|
266
264
|
<div class="toast-container chat-toast-container" id="chatToastContainer" aria-live="polite" aria-atomic="true"></div>
|
|
267
265
|
|
|
268
|
-
<section class="collaboration-popover chat-panel
|
|
266
|
+
<section class="collaboration-popover chat-panel" id="chatPanel" role="dialog" aria-labelledby="chatPanelTitle" popover="auto">
|
|
269
267
|
<div class="chat-panel-header">
|
|
270
268
|
<div class="chat-panel-heading">
|
|
271
269
|
<h2 class="chat-panel-title" id="chatPanelTitle">Team chat</h2>
|
|
@@ -292,7 +290,7 @@
|
|
|
292
290
|
<path class="chat-notification-mute-slash" d="m4 4 16 16"></path>
|
|
293
291
|
</svg>
|
|
294
292
|
</button>
|
|
295
|
-
<button type="button" class="ui-icon-button chat-close-btn" id="chatCloseBtn" aria-label="Close team chat" title="Close team chat">
|
|
293
|
+
<button type="button" class="ui-icon-button chat-close-btn" id="chatCloseBtn" aria-label="Close team chat" popovertarget="chatPanel" popovertargetaction="hide" title="Close team chat">
|
|
296
294
|
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true">
|
|
297
295
|
<line x1="18" y1="6" x2="6" y2="18"></line>
|
|
298
296
|
<line x1="6" y1="6" x2="18" y2="18"></line>
|
|
@@ -327,7 +325,7 @@
|
|
|
327
325
|
class="ui-button ui-button--ghost ui-button--toolbar toolbar-overflow-toggle"
|
|
328
326
|
id="toolbarOverflowToggle"
|
|
329
327
|
aria-label="Open more actions"
|
|
330
|
-
|
|
328
|
+
popovertarget="toolbarOverflowMenu"
|
|
331
329
|
title="More actions"
|
|
332
330
|
>
|
|
333
331
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true">
|
|
@@ -337,7 +335,7 @@
|
|
|
337
335
|
</svg>
|
|
338
336
|
</button>
|
|
339
337
|
|
|
340
|
-
<div class="toolbar-overflow-menu" id="toolbarOverflowMenu">
|
|
338
|
+
<div class="toolbar-overflow-menu" id="toolbarOverflowMenu" popover="auto">
|
|
341
339
|
<button class="ui-button ui-button--ghost ui-button--toolbar hidden" id="fileHistoryBtn" aria-label="Open file history" title="View file history">
|
|
342
340
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
343
341
|
<path d="M3 12a9 9 0 1 0 3-6.7"></path>
|
|
@@ -363,6 +361,14 @@
|
|
|
363
361
|
<span class="ui-toolbar-button-label">Share</span>
|
|
364
362
|
</button>
|
|
365
363
|
|
|
364
|
+
<button class="ui-button ui-button--ghost ui-button--toolbar hidden" id="connectAgentBtn" aria-label="Connect AI Agent" title="Connect AI Agent">
|
|
365
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
366
|
+
<rect x="5" y="7" width="14" height="11" rx="3"></rect>
|
|
367
|
+
<path d="M12 3v4M8 12h.01M16 12h.01M9 16h6"></path>
|
|
368
|
+
</svg>
|
|
369
|
+
<span class="ui-toolbar-button-label">Connect AI Agent</span>
|
|
370
|
+
</button>
|
|
371
|
+
|
|
366
372
|
<button class="ui-button ui-button--ghost ui-button--toolbar toolbar-search-files-btn" id="searchFilesBtn" aria-label="Search files" title="Search files">
|
|
367
373
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true">
|
|
368
374
|
<circle cx="11" cy="11" r="7"></circle>
|
|
@@ -460,7 +466,7 @@
|
|
|
460
466
|
<circle cx="11" cy="11" r="8"></circle>
|
|
461
467
|
<line x1="21" y1="21" x2="16.65" y2="16.65"></line>
|
|
462
468
|
</svg>
|
|
463
|
-
Search
|
|
469
|
+
Search everything
|
|
464
470
|
<kbd class="empty-state-kbd">⌘K</kbd>
|
|
465
471
|
</button>
|
|
466
472
|
</div>
|
|
@@ -509,7 +515,7 @@
|
|
|
509
515
|
</div>
|
|
510
516
|
<div id="markdownToolbar" class="markdown-toolbar hidden" role="toolbar" aria-label="Markdown formatting"></div>
|
|
511
517
|
<div id="editorContainer" class="editor-container">
|
|
512
|
-
<div class="editor-loading" id="editorLoading">
|
|
518
|
+
<div class="editor-loading" id="editorLoading" role="status" aria-live="polite" aria-label="Loading file…">
|
|
513
519
|
<div class="skeleton-line skeleton-line--title skeleton-line--break"></div>
|
|
514
520
|
<div class="skeleton-line skeleton-line--full"></div>
|
|
515
521
|
<div class="skeleton-line skeleton-line--ninety"></div>
|
|
@@ -630,7 +636,7 @@
|
|
|
630
636
|
</div>
|
|
631
637
|
<div class="diff-toolbar-actions">
|
|
632
638
|
<button class="ui-button ui-button--secondary ui-button--action ui-button--wide ui-button--surface hidden diff-back-btn" id="diffBackToHistoryBtn" type="button">
|
|
633
|
-
Back to
|
|
639
|
+
Back to history
|
|
634
640
|
</button>
|
|
635
641
|
<div class="diff-toolbar-actions-group diff-toolbar-actions-group-git" id="diffGitActionsGroup" role="group" aria-label="Git file actions">
|
|
636
642
|
<button class="ui-button ui-button--secondary ui-button--action ui-button--wide ui-button--surface" id="diffPrimaryActionBtn" type="button" disabled>
|
|
@@ -648,12 +654,12 @@
|
|
|
648
654
|
<span class="ui-stat-token ui-stat-token--del diff-stats-del">-0</span>
|
|
649
655
|
</div>
|
|
650
656
|
<div class="ui-segmented-control hidden diff-layout-toggle" id="diffLayoutToggle" role="group" aria-label="Commit diff layout">
|
|
651
|
-
<button class="ui-segmented-btn
|
|
652
|
-
<button class="ui-segmented-btn active
|
|
657
|
+
<button class="ui-segmented-btn diff-layout-btn" data-diff-layout="stacked" type="button" aria-pressed="false">Stacked</button>
|
|
658
|
+
<button class="ui-segmented-btn active diff-layout-btn" data-diff-layout="focused" type="button" aria-pressed="true">Focused</button>
|
|
653
659
|
</div>
|
|
654
660
|
<div class="ui-segmented-control diff-mode-toggle" role="group" aria-label="Diff view mode">
|
|
655
|
-
<button class="ui-segmented-btn active
|
|
656
|
-
<button class="ui-segmented-btn
|
|
661
|
+
<button class="ui-segmented-btn active diff-mode-btn" data-diff-mode="unified" type="button" aria-pressed="true">Unified</button>
|
|
662
|
+
<button class="ui-segmented-btn diff-mode-btn" data-diff-mode="split" type="button" aria-pressed="false">Split</button>
|
|
657
663
|
</div>
|
|
658
664
|
<span class="diff-toolbar-actions-divider" id="diffToolbarDivider" aria-hidden="true"></span>
|
|
659
665
|
<div class="diff-toolbar-actions-group" id="diffEditorActionsGroup" role="group" aria-label="Navigation actions">
|
|
@@ -670,7 +676,7 @@
|
|
|
670
676
|
</main>
|
|
671
677
|
</div>
|
|
672
678
|
|
|
673
|
-
<dialog class="app-dialog" id="displayNameDialog">
|
|
679
|
+
<dialog class="app-dialog" id="displayNameDialog" aria-labelledby="displayNameTitle">
|
|
674
680
|
<form class="app-dialog-form" id="displayNameForm" method="dialog">
|
|
675
681
|
<div class="app-dialog-header">
|
|
676
682
|
<h2 class="app-dialog-title" id="displayNameTitle">Update display name</h2>
|
|
@@ -687,7 +693,17 @@
|
|
|
687
693
|
</form>
|
|
688
694
|
</dialog>
|
|
689
695
|
|
|
690
|
-
<dialog class="app-dialog" id="
|
|
696
|
+
<dialog class="app-dialog agent-connection-dialog" id="agentConnectionDialog" aria-labelledby="agentConnectionTitle">
|
|
697
|
+
<div class="app-dialog-form">
|
|
698
|
+
<div class="app-dialog-header">
|
|
699
|
+
<h2 class="app-dialog-title" id="agentConnectionTitle">Connect an AI agent</h2>
|
|
700
|
+
<p class="app-dialog-copy">Follow the steps below to give an agent secure access to this workspace.</p>
|
|
701
|
+
</div>
|
|
702
|
+
<div id="agentConnectionContent"></div>
|
|
703
|
+
</div>
|
|
704
|
+
</dialog>
|
|
705
|
+
|
|
706
|
+
<dialog class="app-dialog" id="fileActionDialog" aria-labelledby="fileActionTitle">
|
|
691
707
|
<form class="app-dialog-form" id="fileActionForm" method="dialog">
|
|
692
708
|
<div class="app-dialog-header">
|
|
693
709
|
<h2 class="app-dialog-title" id="fileActionTitle">Create file</h2>
|
|
@@ -706,7 +722,7 @@
|
|
|
706
722
|
</form>
|
|
707
723
|
</dialog>
|
|
708
724
|
|
|
709
|
-
<dialog class="app-dialog" id="gitCommitDialog">
|
|
725
|
+
<dialog class="app-dialog" id="gitCommitDialog" aria-labelledby="gitCommitTitle">
|
|
710
726
|
<form class="app-dialog-form" id="gitCommitForm" method="dialog">
|
|
711
727
|
<div class="app-dialog-header">
|
|
712
728
|
<h2 class="app-dialog-title" id="gitCommitTitle">Commit included files</h2>
|
|
@@ -724,7 +740,7 @@
|
|
|
724
740
|
</form>
|
|
725
741
|
</dialog>
|
|
726
742
|
|
|
727
|
-
<dialog class="app-dialog" id="gitResetDialog">
|
|
743
|
+
<dialog class="app-dialog" id="gitResetDialog" aria-labelledby="gitResetTitle">
|
|
728
744
|
<form class="app-dialog-form" method="dialog">
|
|
729
745
|
<div class="app-dialog-header">
|
|
730
746
|
<h2 class="app-dialog-title" id="gitResetTitle">Reset file</h2>
|
|
@@ -739,12 +755,12 @@
|
|
|
739
755
|
</div>
|
|
740
756
|
<div class="app-dialog-actions">
|
|
741
757
|
<button class="ui-button ui-button--secondary" id="gitResetCancel" type="button">Cancel</button>
|
|
742
|
-
<button class="ui-button ui-button--danger" id="gitResetSubmit" type="button">Reset
|
|
758
|
+
<button class="ui-button ui-button--danger" id="gitResetSubmit" type="button">Reset file</button>
|
|
743
759
|
</div>
|
|
744
760
|
</form>
|
|
745
761
|
</dialog>
|
|
746
762
|
|
|
747
|
-
<
|
|
763
|
+
<dialog class="tab-lock-overlay" id="tabLockOverlay" aria-labelledby="tabLockTitle">
|
|
748
764
|
<div class="tab-lock-card">
|
|
749
765
|
<span class="tab-lock-kicker">Single active tab</span>
|
|
750
766
|
<h2 class="tab-lock-title" id="tabLockTitle">This vault is active in another tab</h2>
|
|
@@ -753,11 +769,11 @@
|
|
|
753
769
|
<button type="button" class="ui-button ui-button--primary ui-button--lg" id="tabLockTakeoverBtn">Take over here</button>
|
|
754
770
|
</div>
|
|
755
771
|
</div>
|
|
756
|
-
</
|
|
772
|
+
</dialog>
|
|
757
773
|
|
|
758
774
|
<div class="toast-container" id="toastContainer"></div>
|
|
759
775
|
|
|
760
|
-
<
|
|
776
|
+
<dialog class="qs-overlay" id="quickSwitcher" aria-labelledby="quickSwitcherTitle" closedby="any">
|
|
761
777
|
<div class="qs-modal">
|
|
762
778
|
<h2 class="sr-only" id="quickSwitcherTitle">Search files and text</h2>
|
|
763
779
|
<div class="qs-mode-tabs" role="tablist" aria-label="Search mode">
|
|
@@ -769,7 +785,7 @@
|
|
|
769
785
|
<circle cx="11" cy="11" r="8"></circle>
|
|
770
786
|
<line x1="21" y1="21" x2="16.65" y2="16.65"></line>
|
|
771
787
|
</svg>
|
|
772
|
-
<input type="text" class="qs-input" id="quickSwitcherInput" role="combobox" placeholder="Search files..." aria-label="Search files" aria-controls="quickSwitcherResults" aria-describedby="quickSwitcherHint quickSwitcherScope" aria-autocomplete="list" aria-expanded="false" autocomplete="off" spellcheck="false">
|
|
788
|
+
<input type="text" class="qs-input" id="quickSwitcherInput" role="combobox" placeholder="Search files..." aria-label="Search files" aria-controls="quickSwitcherResults" aria-describedby="quickSwitcherHint quickSwitcherScope" aria-autocomplete="list" aria-expanded="false" autocomplete="off" spellcheck="false" autofocus>
|
|
773
789
|
<kbd class="qs-kbd">esc</kbd>
|
|
774
790
|
</div>
|
|
775
791
|
<div class="qs-scope hidden" id="quickSwitcherScope" role="note" aria-hidden="true">Exact, case-insensitive text in Markdown, Base, Mermaid, PlantUML, Draw.io, and Excalidraw files. Images are excluded.</div>
|
|
@@ -781,7 +797,7 @@
|
|
|
781
797
|
<span><kbd>Tab</kbd> Switch mode</span>
|
|
782
798
|
</div>
|
|
783
799
|
</div>
|
|
784
|
-
</
|
|
800
|
+
</dialog>
|
|
785
801
|
<script vite-ignore src="./app-config.js"></script>
|
|
786
802
|
<script type="module" src="./main-entry.js"></script>
|
|
787
803
|
</body>
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import darkHighlightThemeUrl from '../assets/vendor/highlight/github-dark.min.css?url';
|
|
2
2
|
import lightHighlightThemeUrl from '../assets/vendor/highlight/github.min.css?url';
|
|
3
|
+
import { CollabMdAppShell } from '../bootstrap/collabmd-app-shell.js';
|
|
4
|
+
import { ensureClientAuthenticated } from '../infrastructure/auth-client.js';
|
|
3
5
|
import '../styles/base.css';
|
|
4
6
|
import '../styles/style.css';
|
|
5
7
|
|
|
@@ -18,4 +20,16 @@ function ensureHighlightThemeStylesheet() {
|
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
ensureHighlightThemeStylesheet();
|
|
21
|
-
|
|
23
|
+
async function start() {
|
|
24
|
+
await ensureClientAuthenticated();
|
|
25
|
+
const app = new CollabMdAppShell();
|
|
26
|
+
app.initialize();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (document.readyState === 'loading') {
|
|
30
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
31
|
+
void start();
|
|
32
|
+
}, { once: true });
|
|
33
|
+
} else {
|
|
34
|
+
void start();
|
|
35
|
+
}
|
|
@@ -72,34 +72,23 @@ export const chatFeature = {
|
|
|
72
72
|
this.renderChat();
|
|
73
73
|
},
|
|
74
74
|
|
|
75
|
-
toggleChatPanel() {
|
|
76
|
-
if (this.chatIsOpen) {
|
|
77
|
-
this.closeChatPanel({ restoreFocus: true });
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
this.openChatPanel();
|
|
82
|
-
},
|
|
83
75
|
|
|
84
76
|
openChatPanel() {
|
|
85
77
|
this.chatIsOpen = true;
|
|
86
78
|
this.chatUnreadCount = 0;
|
|
79
|
+
if (!this.elements.chatPanel?.matches(':popover-open')) {
|
|
80
|
+
this.elements.chatPanel?.showPopover();
|
|
81
|
+
}
|
|
87
82
|
this.renderChat({ stickToBottom: true });
|
|
88
|
-
requestAnimationFrame(() =>
|
|
89
|
-
this.elements.chatInput?.focus();
|
|
90
|
-
});
|
|
83
|
+
requestAnimationFrame(() => this.elements.chatInput?.focus());
|
|
91
84
|
},
|
|
92
85
|
|
|
93
|
-
closeChatPanel(
|
|
94
|
-
if (
|
|
95
|
-
|
|
86
|
+
closeChatPanel() {
|
|
87
|
+
if (this.elements.chatPanel?.matches(':popover-open')) {
|
|
88
|
+
this.elements.chatPanel.hidePopover();
|
|
96
89
|
}
|
|
97
|
-
|
|
98
90
|
this.chatIsOpen = false;
|
|
99
91
|
this.renderChat({ messagesChanged: false });
|
|
100
|
-
if (restoreFocus) {
|
|
101
|
-
requestAnimationFrame(() => this.elements.chatToggleButton?.focus());
|
|
102
|
-
}
|
|
103
92
|
},
|
|
104
93
|
|
|
105
94
|
handleChatSubmit() {
|
|
@@ -129,8 +118,6 @@ export const chatFeature = {
|
|
|
129
118
|
},
|
|
130
119
|
|
|
131
120
|
renderChat({ messagesChanged = true, stickToBottom = false } = {}) {
|
|
132
|
-
this.elements.chatContainer?.classList.toggle('is-open', this.chatIsOpen);
|
|
133
|
-
this.elements.chatPanel?.classList.toggle('hidden', !this.chatIsOpen);
|
|
134
121
|
|
|
135
122
|
this.syncChatToggleButton();
|
|
136
123
|
this.syncChatNotificationButton();
|
|
@@ -363,8 +350,6 @@ export const chatFeature = {
|
|
|
363
350
|
|
|
364
351
|
button.classList.toggle('is-active', this.chatIsOpen);
|
|
365
352
|
button.classList.toggle('is-unread', shouldEmphasizeUnread);
|
|
366
|
-
button.setAttribute('aria-controls', 'chatPanel');
|
|
367
|
-
button.setAttribute('aria-expanded', String(this.chatIsOpen));
|
|
368
353
|
button.setAttribute(
|
|
369
354
|
'aria-label',
|
|
370
355
|
hasUnread ? `Open team chat, ${this.chatUnreadCount} unread` : 'Open team chat',
|
|
@@ -132,7 +132,7 @@ export const gitFeature = {
|
|
|
132
132
|
|
|
133
133
|
button.classList.remove('hidden');
|
|
134
134
|
if (mode === 'history-preview') {
|
|
135
|
-
label.textContent = 'Back to
|
|
135
|
+
label.textContent = 'Back to history';
|
|
136
136
|
button.setAttribute('aria-label', 'Back to file history');
|
|
137
137
|
button.title = 'Back to file history';
|
|
138
138
|
return;
|
|
@@ -326,6 +326,10 @@ export const gitFeature = {
|
|
|
326
326
|
return await this.gitApiClient.stageFile({ path: payload.path, requestId });
|
|
327
327
|
case 'unstage':
|
|
328
328
|
return await this.gitApiClient.unstageFile({ path: payload.path, requestId });
|
|
329
|
+
case 'stage-all':
|
|
330
|
+
return await this.gitApiClient.stageAll({ requestId });
|
|
331
|
+
case 'unstage-all':
|
|
332
|
+
return await this.gitApiClient.unstageAll({ requestId });
|
|
329
333
|
case 'push':
|
|
330
334
|
return await this.gitApiClient.pushBranch({ requestId });
|
|
331
335
|
case 'pull':
|
|
@@ -534,6 +538,20 @@ export const gitFeature = {
|
|
|
534
538
|
});
|
|
535
539
|
},
|
|
536
540
|
|
|
541
|
+
async stageAllGitFiles() {
|
|
542
|
+
await this.runGitActionWithStatus('Staging all changes...', async () => {
|
|
543
|
+
const result = await this.postGitAction('stage-all', {});
|
|
544
|
+
await this.finalizeGitAction({ action: 'stage-all', preferredScope: 'staged', result });
|
|
545
|
+
});
|
|
546
|
+
},
|
|
547
|
+
|
|
548
|
+
async unstageAllGitFiles() {
|
|
549
|
+
await this.runGitActionWithStatus('Unstaging all changes...', async () => {
|
|
550
|
+
const result = await this.postGitAction('unstage-all', {});
|
|
551
|
+
await this.finalizeGitAction({ action: 'unstage-all', preferredScope: 'working-tree', result });
|
|
552
|
+
});
|
|
553
|
+
},
|
|
554
|
+
|
|
537
555
|
async pushGitBranch() {
|
|
538
556
|
await this.runGitActionWithStatus('Pushing branch...', async () => {
|
|
539
557
|
try {
|
|
@@ -595,7 +613,7 @@ export const gitFeature = {
|
|
|
595
613
|
}
|
|
596
614
|
this.elements.gitResetFileName.value = filePath;
|
|
597
615
|
if (this.elements.gitResetSubmit) {
|
|
598
|
-
this.elements.gitResetSubmit.textContent = 'Reset
|
|
616
|
+
this.elements.gitResetSubmit.textContent = 'Reset file';
|
|
599
617
|
}
|
|
600
618
|
this.elements.gitResetSubmit?.toggleAttribute('disabled', false);
|
|
601
619
|
|
|
@@ -619,10 +637,10 @@ export const gitFeature = {
|
|
|
619
637
|
|
|
620
638
|
submit?.toggleAttribute('disabled', true);
|
|
621
639
|
if (submit) {
|
|
622
|
-
submit.textContent = 'Resetting
|
|
640
|
+
submit.textContent = 'Resetting…';
|
|
623
641
|
}
|
|
624
642
|
try {
|
|
625
|
-
await this.runGitActionWithStatus('Resetting file
|
|
643
|
+
await this.runGitActionWithStatus('Resetting file…', async () => {
|
|
626
644
|
const result = await this.postGitAction('reset-file', { path: filePath });
|
|
627
645
|
await this.finalizeGitAction({
|
|
628
646
|
action: 'reset',
|
|
@@ -636,7 +654,7 @@ export const gitFeature = {
|
|
|
636
654
|
this.toastController.show(error.message || 'Failed to reset file');
|
|
637
655
|
} finally {
|
|
638
656
|
if (submit) {
|
|
639
|
-
submit.textContent = 'Reset
|
|
657
|
+
submit.textContent = 'Reset file';
|
|
640
658
|
}
|
|
641
659
|
submit?.toggleAttribute('disabled', false);
|
|
642
660
|
}
|
|
@@ -84,12 +84,10 @@ export const presenceFeature = {
|
|
|
84
84
|
const effectiveConnectionState = getConnectedPresenceState(this);
|
|
85
85
|
const hasUsers = this.globalUsers.length > 0;
|
|
86
86
|
if (effectiveConnectionState.status !== 'connected') {
|
|
87
|
-
this.
|
|
87
|
+
this.closePresencePanel();
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
badge.type = 'button';
|
|
91
|
-
badge.setAttribute('aria-controls', 'presencePanel');
|
|
92
|
-
badge.setAttribute('aria-expanded', String(this.presencePanelOpen));
|
|
93
91
|
badge.classList.toggle('is-active', this.presencePanelOpen);
|
|
94
92
|
|
|
95
93
|
if (effectiveConnectionState.status === 'connected') {
|
|
@@ -173,12 +171,9 @@ export const presenceFeature = {
|
|
|
173
171
|
overflow.className = 'user-avatar user-avatar-button user-avatar-overflow-trigger';
|
|
174
172
|
overflow.style.backgroundColor = 'var(--color-surface-dynamic)';
|
|
175
173
|
overflow.style.color = 'var(--color-text-muted)';
|
|
176
|
-
overflow.setAttribute('
|
|
177
|
-
overflow.setAttribute('aria-expanded', String(this.presencePanelOpen));
|
|
174
|
+
overflow.setAttribute('popovertarget', 'presencePanel');
|
|
178
175
|
overflow.setAttribute('aria-label', `Show ${visibleUsers.length} online users`);
|
|
179
|
-
overflow.setAttribute('data-presence-panel-trigger', 'true');
|
|
180
176
|
overflow.title = `Show ${visibleUsers.length} online users`;
|
|
181
|
-
overflow.addEventListener('click', () => this.openPresencePanel());
|
|
182
177
|
const overflowLabel = document.createElement('span');
|
|
183
178
|
overflowLabel.className = 'user-avatar-initial';
|
|
184
179
|
overflowLabel.textContent = `+${visibleUsers.length - MAX_INLINE_AVATARS}`;
|
|
@@ -194,29 +189,19 @@ export const presenceFeature = {
|
|
|
194
189
|
}
|
|
195
190
|
|
|
196
191
|
this.presencePanelOpen = true;
|
|
197
|
-
this.
|
|
198
|
-
|
|
192
|
+
if (!this.elements.presencePanel?.matches(':popover-open')) {
|
|
193
|
+
this.elements.presencePanel?.showPopover();
|
|
194
|
+
}
|
|
199
195
|
this.renderAvatars();
|
|
200
196
|
this.renderPresence();
|
|
201
197
|
},
|
|
202
198
|
|
|
203
199
|
closePresencePanel() {
|
|
204
|
-
if (
|
|
205
|
-
|
|
200
|
+
if (this.elements.presencePanel?.matches(':popover-open')) {
|
|
201
|
+
this.elements.presencePanel.hidePopover();
|
|
206
202
|
}
|
|
207
|
-
|
|
208
203
|
this.presencePanelOpen = false;
|
|
209
|
-
this.renderAvatars();
|
|
210
|
-
this.renderPresence();
|
|
211
|
-
},
|
|
212
|
-
|
|
213
|
-
togglePresencePanel() {
|
|
214
|
-
if (this.presencePanelOpen) {
|
|
215
|
-
this.closePresencePanel();
|
|
216
|
-
return;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
this.openPresencePanel();
|
|
204
|
+
this.renderAvatars?.();
|
|
220
205
|
},
|
|
221
206
|
|
|
222
207
|
renderPresencePanel() {
|
|
@@ -225,8 +210,6 @@ export const presenceFeature = {
|
|
|
225
210
|
const status = this.elements.presencePanelStatus;
|
|
226
211
|
if (!panel || !list) return;
|
|
227
212
|
|
|
228
|
-
panel.classList.toggle('hidden', !this.presencePanelOpen);
|
|
229
|
-
panel.setAttribute('aria-hidden', String(!this.presencePanelOpen));
|
|
230
213
|
if (!this.presencePanelOpen) {
|
|
231
214
|
return;
|
|
232
215
|
}
|