Note to ExcaliBrain users: Update ExcaliBrain. Excalidraw 2.28.0 breaks compatibility with ExcaliBrain v0.2.18.
New
- A brand new and improved Community Script Store. #2944
- When you copy the Markdown Image SVGs for Image CSS AI prompting, the SVG now replace embedded base64 images and fonts with short placeholders, making them smaller and easier to share with agents.
New from Excalidraw.com
- Create sticky notes with the new Sticky note tool or the N shortcut. #12064
- Right click panning. #12110
- Customize font toppicks by drag and drop. To set them as default save your toppick choices as a template. #12160
Fixed / Refactored
- Lasso tool was not available in the More Tools menu in Tray Mode #2937
.excalidrawdrawings with embedded binary images now render those images when opened into an already-used Excalidraw tab. #2929- Descriptions in settings no longer disappear when you revisit a settings page from search results. #2935
- Improved saving and backupts. #2933
- Fixed a bug where, with "Render Excalidraw as Image in Obsidian PDF Export" enabled, exporting a Hybrid Note (an Excalidraw drawing with your own Markdown content alongside it) to PDF could render blank sections wherever a regular image (or other non-Excalidraw) embed appeared on the Markdown side. #2292, 🙏bluechallenge #2936
- Selection rectangles in popout windows are no longer positioned incorrectly when displays use different DPI settings. #2940
New/Fixed in Excalidraw Automate
- Updated the ea-script-template. Read EA Script prompting with AI is magical
- Enhancements to support K-Plex and ExcaliBrain integration.
public async toggleViewMode(view: View): Promise<View | null>; registerViewLinkClickHook(hook: ViewLinkClickHook): () => void; viewZoomToFit(): void; clearViewDirty(): void; registerThisAsViewEA(): boolean; deregisterThisAsViewEA(): boolean;
- Excalidraw view state accepts one-shot
mode: "view" | "edit"andzoomToFit: trueoptions. This lets host integrations open a drawing in its intended mode without polling the React canvas. - Link-open callbacks now receive a usable native event even when an upstream synthesized event omitted it.
- Scripts can create native sticky notes, including automatically fitted labels:
addStickyNote(topX: number, topY: number, text: string, formatting?: {width?: number; height?: number; fontSize?: number; fontFamily?: number; textAlign?: "left" | "center" | "right"; textVerticalAlign?: "top" | "middle" | "bottom";}, id?: string): string;
- Unbound arrows created with Excalidraw Automate's
addArrow()no longer contain incomplete binding data that could cause an error when selected.
What's Changed
- Add LayerManager script and icon with lifecycle and editing fixes by @tryingET in #2925
- Refactor file persistence lifecycle by @zsviczian in #2933
- Fix exponential nested dependency traversal by @zsviczian in #2942
- Fix blank sections in Hybrid Note PDF export when Markdown side has an image embed by @bluechallenge in #2936
- feat: Reimagine the Community Script Store by @zsviczian in #2944
- feat: add view-scoped integration APIs for K-Plex by @zsviczian in #2960
- feat: add ExcalidrawAutomate toggleViewMode API by @zsviczian in #2962
New Contributors
- @tryingET made their first contribution in #2925
- @bluechallenge made their first contribution in #2936
Full Changelog: 2.27.3...2.28.0