MindElixir integration.
  • JavaScript 77.3%
  • TypeScript 22.1%
  • CSS 0.4%
  • Shell 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
oliver.maklott 292fbe222c
All checks were successful
Publish / test (push) Successful in 25s
Publish / pack-and-publish (push) Successful in 6s
Migrate to new owner
2026-10-02 13:18:07 +02:00
.forgejo/workflows Migrate to new owner 2026-10-02 13:18:07 +02:00
.githooks Restore mindelixir store visibility and CI 2026-09-01 16:25:48 +02:00
client Stack title + path in viewer/editor headers 2026-09-13 20:45:23 +02:00
routes Initial commit 2026-09-01 11:16:08 +02:00
scripts Fix MindElixir editor CSS, Tab, and root selection 2026-09-01 21:47:15 +02:00
vendor Fix MindElixir editor CSS, Tab, and root selection 2026-09-01 21:47:15 +02:00
.env.example Migrate to new owner 2026-10-02 13:18:07 +02:00
.gitignore Restore mindelixir store visibility and CI 2026-09-01 16:25:48 +02:00
block_render.test.ts Mindmap / print quality audit fixes 2026-09-13 18:38:43 +02:00
block_render.ts Center and enlarge render-pipeline watermark 2026-09-13 21:04:59 +02:00
compose.dev.yml Migrate to new owner 2026-10-02 13:18:07 +02:00
embed_asset_patterns.ts Initial commit 2026-09-01 11:16:08 +02:00
limedoc.project.json Initial commit 2026-09-01 11:16:08 +02:00
mindelixir.plugin.json Plugin isolation remediation 2026-09-01 12:42:13 +02:00
mindelixir.ts Center and enlarge render-pipeline watermark 2026-09-13 21:04:59 +02:00
mindelixir_client.test.ts Initial commit 2026-09-01 11:16:08 +02:00
mindelixir_client.ts QC round cleanup 2026-09-03 00:17:48 +02:00
mindelixir_client_adapter.ts Remove mindmap SVG rendering (WebP-only) 2026-09-02 23:24:22 +02:00
mindelixir_image_box.test.ts Mind map native node.image + metadata.ld authoring model 2026-09-01 23:38:37 +02:00
mindelixir_image_box.ts Mind map native node.image + metadata.ld authoring model 2026-09-01 23:38:37 +02:00
mindelixir_image_measure.test.ts Remove mindmap SVG rendering (WebP-only) 2026-09-02 23:24:22 +02:00
mindelixir_image_measure.ts Remove mindmap SVG rendering (WebP-only) 2026-09-02 23:24:22 +02:00
mindelixir_markdown.ts Remove mindmap SVG rendering (WebP-only) 2026-09-02 23:24:22 +02:00
mindelixir_node_metadata.test.ts Remove mindmap SVG rendering (WebP-only) 2026-09-02 23:24:22 +02:00
mindelixir_node_metadata.ts Remove mindmap SVG rendering (WebP-only) 2026-09-02 23:24:22 +02:00
mindelixir_node_sync.test.ts Fix mindmap screenshot images + document render placeholder 2026-09-02 22:55:27 +02:00
mindelixir_node_sync.ts Fix mindmap screenshot images + document render placeholder 2026-09-02 22:55:27 +02:00
mindelixir_render_constants.ts Opaque mindmap plates + pending watermark + PDF wait 2026-09-13 14:37:59 +02:00
mindelixir_render_prepare.test.ts Fix mindmap screenshot images + document render placeholder 2026-09-02 22:55:27 +02:00
mindelixir_render_prepare.ts Fix mindmap screenshot images + document render placeholder 2026-09-02 22:55:27 +02:00
mindelixir_theme.ts Initial commit 2026-09-01 11:16:08 +02:00
mindelixir_topic_image_constants.ts Remove mindmap SVG rendering (WebP-only) 2026-09-02 23:24:22 +02:00
mindelixir_topic_image_parse.test.ts Mind map native node.image + metadata.ld authoring model 2026-09-01 23:38:37 +02:00
mindelixir_topic_image_parse.ts Mind map native node.image + metadata.ld authoring model 2026-09-01 23:38:37 +02:00
mindelixir_topic_image_plugin.ts Remove mindmap SVG rendering (WebP-only) 2026-09-02 23:24:22 +02:00
mindelixir_topic_image_uri.test.ts Remove mindmap SVG rendering (WebP-only) 2026-09-02 23:24:22 +02:00
mindelixir_topic_image_uri.ts Fix mindelixir plugin boundary violation 2026-09-02 01:25:52 +02:00
mindelixir_topic_markdown.test.ts Remove mindmap SVG rendering (WebP-only) 2026-09-02 23:24:22 +02:00
mindelixir_topic_markdown.ts Mind map native node.image + metadata.ld authoring model 2026-09-01 23:38:37 +02:00
mindelixir_topic_markdown_glue.ts Remove mindmap SVG rendering (WebP-only) 2026-09-02 23:24:22 +02:00
mindmap-editor.css Stack title + path in viewer/editor headers 2026-09-13 20:45:23 +02:00
mindmap_block_editor.tsx Fix MindElixir editor CSS, Tab, and root selection 2026-09-01 21:47:15 +02:00
mindmap_block_preview_client.tsx Public Collabora view + MindElixir edit lock 2026-09-08 23:09:21 +02:00
mindmap_directive.test.ts Initial commit 2026-09-01 11:16:08 +02:00
mindmap_directive.ts Initial commit 2026-09-01 11:16:08 +02:00
mindmap_editor_modal.tsx Remove mindmap SVG rendering (WebP-only) 2026-09-02 23:24:22 +02:00
mindmap_editor_tool.tsx Fix MindElixir editor CSS, Tab, and root selection 2026-09-01 21:47:15 +02:00
mindmap_host_doc.ts Fix MindElixir editor CSS, Tab, and root selection 2026-09-01 21:47:15 +02:00
mindmap_open_editor.tsx Remove mindmap SVG rendering (WebP-only) 2026-09-02 23:24:22 +02:00
mindmap_open_viewer.tsx Fix MindElixir editor CSS, Tab, and root selection 2026-09-01 21:47:15 +02:00
mindmap_poll_hydrator.tsx Opaque mindmap plates + pending watermark + PDF wait 2026-09-13 14:37:59 +02:00
mindmap_preview_poll.ts Remove mindmap SVG rendering (WebP-only) 2026-09-02 23:24:22 +02:00
mindmap_print_invalidate.test.ts Fix mindmap print WebP unavailable on PDF export 2026-09-13 15:17:28 +02:00
mindmap_render_inflight.test.ts Center and enlarge render-pipeline watermark 2026-09-13 21:04:59 +02:00
mindmap_render_inflight.ts Mindmap / print quality audit fixes 2026-09-13 18:38:43 +02:00
mindmap_save_toast.ts Initial commit 2026-09-01 11:16:08 +02:00
mindmap_viewer_modal.tsx Stack title + path in viewer/editor headers 2026-09-13 20:45:23 +02:00
plugin.devkit.json Fix mindelixir toolbar + viewer in dev 2026-09-01 18:18:13 +02:00
README.md Remove mindmap SVG rendering (WebP-only) 2026-09-02 23:24:22 +02:00
vendor.lock.json Fix MindElixir editor CSS, Tab, and root selection 2026-09-01 21:47:15 +02:00
web_render_result_sink.test.ts Mindmap / print quality audit fixes 2026-09-13 18:38:43 +02:00

Mind Elixir Mind Maps

Embed and edit Mind Elixir mind maps in documents. Requires the web-render plugin for server-side WebP prerender.

Requirements

  • Docker (or Podman with DOCKER_CMD=podman)
  • web-render plugin (runtime dependency; install via store or bind-mount)

Quick start

# 1. Pull the dev image and set up .env
./ldcmd setup

# 2. Start the dev environment (app + Redis)
./ldcmd up

# 3. Install web-render (required dependency)
./ldcmd plugin install web-render

# 4. Open http://localhost:5173 in your browser

# 5. Edit plugin sources — HMR applies automatically
# 6. Run tests
./ldcmd test

# 7. Check types and import boundaries
./ldcmd check

Features

  • Block type .mindmap (application/vnd.mind-elixir+json)
  • Markdown directive ::mindmap path/to/map.mindmap :::
  • Viewport editor and interactive viewer modals
  • web-render server WebP prerender (light + dark .map-canvas screenshots)
  • Lime light/dark Mind Elixir themes

Directory layout

mindelixir.plugin.json   # Plugin manifest
mindelixir.ts            # Server entry (defineLimedocPlugin)
mindmap_editor_tool.tsx  # Browser client (builds to client/*.js)
client/                  # Pre-built browser bundles (committed)
vendor/                  # Vendored Mind Elixir IIFE + CSS
limedoc.project.json     # Store metadata (package download URLs)
compose.dev.yml          # Dev compose (uses the published limedoc-dev image)
ldcmd                    # Bridge script — the only thing you run on your host
.env.example             # Env var template — copy to .env and fill in OIDC values

ldcmd commands

Command What it does
./ldcmd setup Pull limedoc-dev image, copy .env.example → .env
./ldcmd up Start dev environment
./ldcmd down Stop dev environment
./ldcmd logs [service] Follow container logs
./ldcmd sh [service] Open shell in container (default: app-dev)
./ldcmd test Run plugin tests (installs web-render in CI)
./ldcmd fmt Format sources
./ldcmd lint Lint sources
./ldcmd check Type-check + import boundary check
./ldcmd pack Build zip + sha256 (CI also publishes sig.json)
./ldcmd publish Pack and upload (needs .forgejo.env / PACKAGE_TOKEN)
./ldcmd plugin install <id> Install a plugin dependency into the running env
./ldcmd plugin ls List installed plugins

Vendor

deno run -A scripts/bundle-vendor.ts
# or via
deno task plugin:build -- plugins/mindelixir.plugin

Pins mind-elixir@5.15.1 (vanilla full IIFE) and KaTeX CSS.

Building client bundles

# Inside the container (run after editing .tsx files)
./ldcmd sh
deno task plugin:build -- /limedoc/plugins/mindelixir.plugin

Tests

./ldcmd test
# or from the limedoc app root:
deno task test:mindelixir

Plugin tests that exercise the web-render result sink require web-render on disk. CI installs it via deno task packs:install -- web-render before tests.

Developing with plugin dependencies

This plugin declares "requires": ["web-render"] in its manifest.

1. Install via ldcmd (easiest, needs the app running)

./ldcmd up
./ldcmd plugin install web-render

Set PACKAGE_STORE_URL in .env:

PACKAGE_STORE_URL=https://git.belowtoxic.cloud/api/packages/limedoc-plugins

2. Local bind-mount (no running app needed)

Check out or unzip web-render next to this directory, then add a volume to compose.dev.yml:

app-dev:
    volumes:
        - .:/limedoc/plugins/mindelixir.plugin
        - ../web-render.plugin:/limedoc/plugins/web-render.plugin

Then ./ldcmd up — the app loads all *.plugin directories in plugins/.

CI / CD

Push to main → Forgejo Actions runs .forgejo/workflows/publish.yml:

  1. Installs web-render from the signed store catalog
  2. Tests pass inside the limedoc-dev container
  3. Client bundles built; boundary check passes
  4. plugin:pack produces mindelixir-{version}.zip + .sha256
  5. OpenBao signs the content hash → mindelixir-{version}.sig.json
  6. Zip, sha256, and sig.json uploaded to the generic package registry (store)
  7. Same artifacts attached to a Forgejo Release v{version} (operators)

The app installs plugins from the generic package registry at PACKAGE_STORE_URL.

Using Podman instead of Docker

# In .env (or export before running):
DOCKER_CMD=podman
./ldcmd up

ldcmd detects podman compose automatically.