mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-06 16:08:05 +00:00
Plugins can now ship a web page as the UI of a view or custom editor (`web = "web/index.html"`), so editors built on web libraries are plugins rather than part of the core. - Web views: every file under the page's directory is part of the package (checked, copied on install, covered by the digest and signature) and served through the `openidea-plugin` URL scheme, under a per-revision path with a CSP of its own, into an `<iframe sandbox="allow-scripts">`. An update or reinstall reloads open pages. - Frame bridge (`window.openidea`), shared by html bodies and web pages: theme, messages to the plugin's code, `document.get/edit/replace/onChange` (versioned edits that join the text editor's undo history, Save and dirty state), `saveFile`/`openFile` through the IDE's dialogs, and IDE shortcuts the page leaves alone. - Custom editor layouts: tab, split (Editor and X) or preview over the text editor, switchable from the tab's actions. - New points `fileIcons` and `fileTemplates`; new optional capability `clipboard` for web views. - Excalidraw official plugin: `.excalidraw` / `.excalidraw.json` open as an interactive canvas kept in step with the file's text, with self-hosted fonts, PNG/SVG export, images, file icons, a New Drawing template and JSON highlighting. Closes #732. - Fixes: a lock-order deadlock between listing plugins and refreshing project pins; the dev server ignored edits under `src/features/plugins`. - `plugins/build.sh` builds and checks web pages; CI typechecks and tests them. Co-authored-by: Deng Liu <5108773+dengliu@users.noreply.github.com>
36 lines
1.2 KiB
TOML
36 lines
1.2 KiB
TOML
id = "openidea.excalidraw"
|
||
name = "Excalidraw"
|
||
version = "0.1.0"
|
||
description = "Draw and edit Excalidraw diagrams (.excalidraw). The drawing is the file's text, so the text editor follows, Undo and Save are shared, and the IDE theme applies."
|
||
authors = ["OpenIDEA contributors"]
|
||
license = "Apache-2.0"
|
||
change-notes = "0.1.0 — first release: the Excalidraw canvas next to (or instead of) the file's text, kept in step both ways; export to PNG and SVG through the save dialog; a file icon and a New › Excalidraw Drawing template. Based on the Excalidraw editor proposed by Deng Liu (#738)."
|
||
engines.openidea = "^1.0"
|
||
|
||
[capabilities]
|
||
# Copy and paste through Excalidraw's menus (the keyboard works without it).
|
||
optional = ["clipboard"]
|
||
|
||
[[contributes.customEditors]]
|
||
id = "canvas"
|
||
title = "Drawing"
|
||
patterns = ["*.excalidraw", "*.excalidraw.json"]
|
||
priority = "default"
|
||
layout = "preview"
|
||
web = "web/index.html"
|
||
|
||
[[contributes.languages]]
|
||
path = "languages/excalidraw.toml"
|
||
|
||
[[contributes.fileIcons]]
|
||
id = "excalidraw"
|
||
patterns = ["*.excalidraw", "*.excalidraw.json"]
|
||
icon = "icons/excalidraw.svg"
|
||
iconDark = "icons/excalidraw_dark.svg"
|
||
|
||
[[contributes.fileTemplates]]
|
||
id = "drawing"
|
||
name = "Excalidraw Drawing"
|
||
extension = "excalidraw"
|
||
path = "templates/drawing.excalidraw"
|