collabmd 0.1.26 → 0.1.27

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 CHANGED
@@ -18,7 +18,7 @@ Throughout this guide, **vault** simply means a regular folder on your computer
18
18
  - Your filesystem stays the source of truth: CollabMD does not move, rename, or delete files unless you explicitly do that in the app
19
19
  - Realtime editing with Yjs
20
20
  - External filesystem edits sync back into the app and connected browsers
21
- - Mermaid, PlantUML, and Excalidraw support
21
+ - Mermaid, PlantUML, Excalidraw, and draw.io support
22
22
  - Source-anchored comments, chat, and presence
23
23
  - Works with plain folders, Obsidian-style vaults, and git-backed docs
24
24
 
@@ -65,7 +65,7 @@ Prefer video? [Open the WebM demo](https://raw.githubusercontent.com/andes90/col
65
65
  - **Markdown with context** — live preview, wiki-links, backlinks, outline, quick switcher, and scroll sync
66
66
  - **Source-anchored comments** — comment on lines or selected text with inline markers, preview bubbles, and thread cards
67
67
  - **Collaboration built in** — collaborator presence, follow mode, and team chat
68
- - **Diagram-friendly** — Mermaid fences and standalone `.mmd` / `.mermaid`, PlantUML `.puml` / `.plantuml`, `.excalidraw`, and public video embeds in Markdown
68
+ - **Diagram-friendly** — Mermaid fences and standalone `.mmd` / `.mermaid`, PlantUML `.puml` / `.plantuml`, `.excalidraw`, `.drawio`, and public video embeds in Markdown
69
69
  - **Easy browser access** — optional Cloudflare Tunnel support makes a running session easy to share
70
70
 
71
71
  ## Best fit for
@@ -160,7 +160,7 @@ Then share the printed URL and password with your collaborator. If `cloudflared`
160
160
 
161
161
  - Single-instance deployment only: collaboration room state is kept in-process and is not shared across replicas
162
162
  - `oidc` currently supports Google only
163
- - Source-anchored comments currently support markdown, Mermaid, and PlantUML text files, but not `.excalidraw`
163
+ - Source-anchored comments currently support markdown, Mermaid, and PlantUML text files, but not `.excalidraw` or `.drawio`
164
164
  - Windows use is supported via WSL2 rather than native Windows execution
165
165
 
166
166
  ## How it works
@@ -171,16 +171,20 @@ collabmd ~/my-vault --no-tunnel
171
171
 
172
172
  CollabMD starts a local server, scans the vault, and opens a browser-based editor with:
173
173
 
174
- - **File explorer sidebar** — browse, create, rename, and delete `.md`, `.mmd`, `.mermaid`, `.puml`, `.plantuml`, and `.excalidraw` files plus folders
174
+ - **File explorer sidebar** — browse, create, rename, and delete `.md`, `.mmd`, `.mermaid`, `.puml`, `.plantuml`, `.excalidraw`, and `.drawio` files plus folders
175
175
  - **Live preview** — rendered as you type, with syntax-highlighted code blocks, public video embeds, plus Mermaid and PlantUML diagrams
176
176
  - **Anchored comments** — add comments from the editor, open threads from inline markers or preview bubbles, and review them from the comments drawer
177
177
  - **`[[wiki-links]]` + backlinks** — jump between notes and inspect linked mentions
178
178
  - **Room chat** — discuss changes without leaving the workspace
179
179
  - **Presence + follow mode** — see who is online and follow another collaborator's active cursor
180
180
  - **Quick switcher + outline** — move around large vaults and long documents faster
181
- - **Standalone diagram files** — open `.mmd` / `.mermaid` or `.puml` / `.plantuml` files in side-by-side editor + preview, or `.excalidraw` files in direct preview mode
181
+ - **Standalone diagram files** — open `.mmd` / `.mermaid` or `.puml` / `.plantuml` files in side-by-side editor + preview, `.excalidraw` files in direct preview mode, and `.drawio` files in an embedded diagrams.net editor/viewer
182
182
 
183
- Comment threads are source-anchored and currently supported for markdown, Mermaid, and PlantUML text files. You can comment on a whole line or a text selection, then reopen the thread from either the editor marker or the preview bubble. Excalidraw files are currently excluded from comments.
183
+ Comment threads are source-anchored and currently supported for markdown, Mermaid, and PlantUML text files. You can comment on a whole line or a text selection, then reopen the thread from either the editor marker or the preview bubble. Excalidraw and draw.io files are currently excluded from comments.
184
+
185
+ Draw.io files use the diagrams.net embed/runtime. Opening a `.drawio` file directly mounts an interactive editor in the preview pane. Markdown embeds such as `![[architecture.drawio]]` use the diagrams.net viewer for a lighter inline preview and include an `Open` action to jump into the full file view.
186
+
187
+ Draw.io collaboration is intentionally conservative in this release: one connected client holds the edit lease for a `.drawio` file, while other viewers open it read-only and refresh after saves land. This avoids silent overwrite races without claiming true realtime canvas co-editing.
184
188
 
185
189
  Markdown video embeds are opt-in and use standard image syntax such as `![Video](https://www.youtube.com/watch?v=...)` or `![Video](https://cdn.example.com/demo.webm)`. The preview currently supports public YouTube URLs plus direct public `https` video files ending in `.mp4`, `.webm`, or `.ogg`. The editor toolbar also includes a `Video` action that inserts the same Markdown syntax for you.
186
190
 
@@ -298,6 +302,22 @@ Notes:
298
302
  - You can restrict sign-in to exact users with `AUTH_OIDC_ALLOWED_EMAILS` or entire domains with `AUTH_OIDC_ALLOWED_DOMAINS`
299
303
  - The CLI disables the tunnel automatically when `--auth oidc` is active
300
304
 
305
+ ### Draw.io setup
306
+
307
+ CollabMD uses diagrams.net for `.drawio` rendering and editing. By default it points at the hosted embed runtime:
308
+
309
+ ```bash
310
+ COLLABMD_DRAWIO_BASE_URL=https://embed.diagrams.net
311
+ ```
312
+
313
+ You can also point it at a self-hosted diagrams.net deployment:
314
+
315
+ ```bash
316
+ COLLABMD_DRAWIO_BASE_URL=https://drawio.example.com
317
+ ```
318
+
319
+ If the draw.io runtime is unavailable, direct `.drawio` file opens fall back to plain XML editing instead of leaving the file inaccessible.
320
+
301
321
  You can also configure the tunnel via environment variables:
302
322
 
303
323
  ```bash
@@ -579,6 +599,7 @@ vite.config.mjs Vite multi-page build and dev-server proxy config
579
599
  | `AUTH_OIDC_ALLOWED_DOMAINS` | Comma-separated email domain allowlist for `AUTH_STRATEGY=oidc` | |
580
600
  | `BASE_PATH` | URL path prefix for subpath deployments | |
581
601
  | `PLANTUML_SERVER_URL` | Upstream PlantUML server base URL used for server-side SVG rendering | `https://www.plantuml.com/plantuml` |
602
+ | `COLLABMD_DRAWIO_BASE_URL` | diagrams.net base URL used for `.drawio` viewing and editing | `https://embed.diagrams.net` |
582
603
  | `COLLABMD_VAULT_DIR` | Vault directory path | CLI: current directory, server entrypoint: `data/vault`, Docker: `/data` |
583
604
  | `COLLABMD_GIT_ENABLED` | Enable or disable git integration in the UI and API | `true` |
584
605
  | `COLLABMD_GIT_REPO_URL` | Remote git repository used to bootstrap the vault checkout | |
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./main-AejRWvom.js","./preload-helper-I1wKxk_B.js","./preview-render-profile-DQsam_Ol.js","./chunk-D-fkvfCP.js","./yjs-provider-reset-guard-Cj00kgyM.js","./room-DyhEnogt.js","./vault-utils-BM4i-Ofm.js","./vault-api-client-fFJfUVXM.js","./drawio-room-D6352KkV.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./runtime-config-loader-DwWsKc1-.js";import{t}from"./preload-helper-I1wKxk_B.js";var n=``+new URL(`github-dark.min-Z5exjX_n.css`,import.meta.url).href,r=``+new URL(`github.min-D2BCvnWf.css`,import.meta.url).href;function i(){let e=document.getElementById(`hljs-theme`);e instanceof HTMLLinkElement||(e=document.createElement(`link`),e.id=`hljs-theme`,e.rel=`stylesheet`,document.head.append(e)),e.href=n,e.dataset.darkHref=n,e.dataset.lightHref=r}await e(),i(),await t(()=>import(`./main-AejRWvom.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./main-Q1xvhoqP.js","./preload-helper-I1wKxk_B.js","./preview-render-profile-DQsam_Ol.js","./chunk-D-fkvfCP.js","./yjs-provider-reset-guard-Cj00kgyM.js","./room-DyhEnogt.js","./vault-utils-BM4i-Ofm.js","./vault-api-client-fFJfUVXM.js","./drawio-room-D6352KkV.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./runtime-config-loader-DwWsKc1-.js";import{t}from"./preload-helper-I1wKxk_B.js";var n=``+new URL(`github-dark.min-Z5exjX_n.css`,import.meta.url).href,r=``+new URL(`github.min-D2BCvnWf.css`,import.meta.url).href;function i(){let e=document.getElementById(`hljs-theme`);e instanceof HTMLLinkElement||(e=document.createElement(`link`),e.id=`hljs-theme`,e.rel=`stylesheet`,document.head.append(e)),e.href=n,e.dataset.darkHref=n,e.dataset.lightHref=r}await e(),i(),await t(()=>import(`./main-Q1xvhoqP.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url);