A collaborative, Obsidian-style markdown editor that runs as a
webxdc app — a single .xdc file you send into a chat,
where everyone in the group can edit the same document together, offline-first.
Built on CodeMirror 6 with a custom live-preview layer (raw markdown that
renders formatting inline as you type), Yjs CRDT collaboration via
y-webxdc, and a touch-friendly editing
toolbar. See CREDITS.md for inspiration and attribution and
PLAN.md for the design and roadmap.
Status: usable for everyday editing and collaboration. Still pre-1.0, so expect rough edges; see
PLAN.mdfor what's next.
npm installRuns the Vite dev server and the webxdc-dev
simulator (which provides webxdc.js and lets you open multiple simulated peers):
npm startnpm test # typecheck + eslint + unit tests
npm run test:e2e # Playwright end-to-end tests against the built bundle
npm run fix # auto-fix lintThe end-to-end tests need browsers once: npx playwright install chromium webkit.
Produces dist-release/md-docs.xdc:
npm run buildSend the .xdc into a chat in any webxdc-capable messenger (e.g. Delta Chat).
To bundle the Eruda on-device console:
ERUDA=1 npm run buildPush a vX.Y.Z tag; the GitHub Action in .github/workflows/release.yml
builds the .xdc and attaches it to a GitHub Release:
git tag v0.1.0
git push origin v0.1.0Every push and pull request also runs CI (.github/workflows/ci.yml):
typecheck, lint and build — and the end-to-end tests
(.github/workflows/e2e.yml): Chromium on Linux, WebKit on macOS as the
closest stand-in for iOS. Pull requests additionally get a preview comment
(.github/workflows/preview.yml) linking the built .xdc and reporting its
size against the base branch — bundle size is the budget that matters for an
app that travels through chats.
