Excalidraw 2.27.0-beta

2.27.0-beta.0

Maintenance

  • Refactoring the plugin. Removed unused functions, improved code structure and readability. Removed the obsolete Draw.io/Diagram plugin integration (since the other plugin no longer works and is not maintained) and retired the Create DrawIO file script from the script library.
  • Migrated the embedded Excalidraw runtime from the retired UMD build path to a dedicated ESM-source-based Obsidian package while preserving offline operation, popout windows, and runtime Mermaid loading through Excalidraw Extras. The Assistant UI font is now bundled instead of fetched from the internet, and the plugin-private React runtime is generated from the official npm package entrypoints instead of legacy UMD files.
  • Updated the plugin-private React and ReactDOM runtime to React 19.

Fixed

  • The Excalidraw color palette now uses its natural height when space is available instead of being unnecessarily limited to a short, vertically scrolling panel. Its native color control also remains aligned with the hex input.
  • The text-to-diagram chat history menu is visible again, allowing saved chats to be restored and deleted.

New from Excalidraw.com

  • Improved bucket tool and eyedropper support #11849

2.27.0-beta.1

Maintenance

  • Refactored the plugin by removing unused functions and improving code structure and readability. Removed the obsolete Draw.io/Diagram integration and retired the Create DrawIO file script.
  • Migrated the embedded Excalidraw runtime from the retired UMD build to a dedicated ESM-based Obsidian package while preserving offline operation, popout windows, and runtime Mermaid loading through Excalidraw Extras. The Assistant UI font is now bundled, and the plugin-private React runtime is generated from the official npm package entrypoints.
  • Updated the plugin-private React and ReactDOM runtime to React 19.

Fixed

  • The Excalidraw color palette now uses its natural height when space is available instead of being unnecessarily constrained to a short scrolling panel. Its native color control also stays aligned with the hex input.
  • Restored the text-to-diagram chat history menu, allowing saved chats to be restored or deleted.
  • Stencil libraries are now persisted with tab-indented JSON for cleaner Git diffs. #2883
  • Custom color-picker top picks (pinned by dragging a color onto the strip) are now saved with the drawing.
  • Fixed the canvas background color picker popover remaining out of sync with its own theme after changing the background color.

New from Excalidraw.com

  • Improved bucket tool and eyedropper support. #11849
  • Lasso selection now respects box selection mode (contain vs. overlap). #11862
  • Color-picker top picks can now be customized by dragging colors from the palette onto the strip. Right-click the strip to reset. #11872
1 Like

2.27.0-beta.2

Maintenance

  • Refactored the plugin by removing unused functions and improving code structure and readability. Removed the obsolete Draw.io/Diagram plugin integration and retired the Create DrawIO file script.

  • Migrated the embedded Excalidraw runtime from the retired UMD build to a dedicated ESM-source-based Obsidian package while preserving offline operation, popout windows, and runtime Mermaid loading through Excalidraw Extras. The Assistant UI font is now bundled, and the plugin-private React runtime is generated from the official npm package entrypoints.

  • Updated the plugin-private React and ReactDOM runtime to React 19.

Fixed

  • The Excalidraw color palette now uses its natural height when space is available instead of being unnecessarily limited to a short, vertically scrolling panel. Its native color control also remains aligned with the hex input.

  • Restored the text-to-diagram chat history menu, allowing saved chats to be restored and deleted.

  • Stencil libraries are now persisted with tab-indented JSON to support Git diffs. #2883

  • Custom color-picker top picks are now saved with the drawing instead of being forgotten on reload.

  • Fixed the color-picker popover theme becoming out of sync after changing the canvas background color.

New from Excalidraw.com

  • Improved bucket tool and eyedropper support. #11849

  • Lasso selection now respects box selection mode (contain vs. overlap). #11862

  • Color-picker top picks can now be customized by dragging a color from the palette onto the strip; right-click the strip to reset. #11872

New in Excalidraw Automate

  • Scripts can now register custom buttons in the selected-element context menu (the small toolbar shown above a selected element):
registerElementActionProvider(
  getActions: (element: ExcalidrawElement) =>
    readonly {
      id: string;
      title: string;
      icon: string;
      action: () => void;
    }[]
): (() => void) | null;

  • Scripts can now request automatic re-running whenever a new Excalidraw view is opened, with a user-confirmed Allow / Deny / Ask me later prompt. A fresh Allow also attaches the script to all other currently open views. Manage autostart permissions from the Autostart scripts command or Compatibility settings:
registerAutostart(): Promise<"allow" | "deny" | "pending">;

2.27.0-beta.3

  • No new or changed features compared to 2.27.0-beta.2. Many code quality fixes and refactoring Plugin / Excalidraw Component integration.
1 Like

2.27.0-beta.4

  • optimized image cache and image loading. I have a drawing with a multitude of embedded and deeply nested drawings and PDF images. My baseline measurement of 70-90 seconds full load time go reduced to ~20 seconds.

2.27.0 will be largely a maintenance release: improving code quality, reducing code scanner findings, and improving performance. Hopefully nothing breaks, however some of these changes require quite significant restructuring.

1 Like

Thank you so much @Zsolt for the new registerElementActionProvider API! It’s an absolute game-changer for building contextual workflows without having to memorize hotkeys.

While testing it, I noticed a minor visual quirk: hovering over the custom button triggers a “double tooltip”. It shows the nicely styled Excalidraw tooltip, but simultaneously triggers the native HTML/browser tooltip.

According to my AI-agent supporting me while coding, it looks like the API passes the title string into the DOM button’s title and aria-label attributes, which Chromium/Electron then picks up.

As a temporary workaround in my script, my AI-agent added a global event listener to strip the native attributes on hover, so only your React tooltip remains:

document.addEventListener("mouseover", (evt) => {
    const btn = evt.target.closest('button, [role="button"]');
    if (!btn) return;

    const titleAttr = btn.getAttribute("title");
    if (titleAttr) {
        btn.removeAttribute("title");
        btn.removeAttribute("aria-label");
    }
}, true);

Just wanted to share this as a quick heads-up in case you want to suppress the native HTML tooltips for these custom buttons on the plugin side in a future update. Thanks again for the incredible work!

1 Like

Yeah, this is a strange behavior. I have been diligently removing the additional tooltip from Excalidraw so the double tooltip does not show. In this case I did not notice. Will remove it.
…and I agree, the contextual button is a total game changer. It finally allows me to add fancy slideshow script features such as appearance order or frame order (instead of relying on alphabetical frame name sorting). Exciting times!

1 Like

2.27.0-beta.5

  • A fully updated Excalidraw settings experience. I migrated Excalidraw settings to the new Obsidian 1.13.x settings search and settings UI.
1 Like

Fully refactored the entire save queue. In some cases this has achieved over 90% performance improvement. In case of very large drawings a save could take up as much as over 500ms which is very significant. Overall my expectation is that now autosave will have a much lighter impact on the handwriting performance, and tablets should stay cooler (using Obsidian Excalidraw on a mobile device for an extended time could lead to the device perceptibly warming which can be directly linked to the resource impact of regular autosave).

Thanks for this update! I can only say that it works for me; I can’t quite follow all the details of the mentioned changes. But mobile devices that stay cooler would be great!

The search function and user interface of the migrated settings work perfectly for me. The clarity of the navigation has also been greatly improved by displaying a hierarchical path (e.g., Excalidraw > Basic > Files and folders).

However, I still see double tooltips for Excalidraw buttons (?).

Yeah, the double tooltip I forgot. But it is in the next beta. The next beta will come with some further significant performance improvements both memory consumption (in case of popout windows) and speed. My baseline drawing that took 70-90 seconds to load in 2.26.4 is now down to between 6-8 seconds :slight_smile:

1 Like

2.27.0-beta.7

  • Via #11974 I was able to simplify Excalidraw package management for Obsidian popout windows. This saves roughly 90MB memory per popout window and contributes to an improvement in popout window load times. Additionally implemented window migration manager. Switching my reference large drawing from the main workspace to a popout window took between 70-90 seconds before the change. After these improvements this time is down to 4-8 seconds.
  • Other performance and stability / code quality improvements

2.27.0-beta.8

  • Excalidraw Automate can optionally load and monitor JavaScript (.js) files in the Scripts folder, use a .js startup script, and store Script Library downloads as either Markdown or JavaScript. Existing scripts can be moved between the two formats while updating startup and pinned-script paths. #2901
  • Converting a legacy “.excalidraw” drawing now persists its embedded images as vault attachments during conversion, before the source file can be removed. #2898
  • Entering text editing no longer scans and sorts the entire vault for link suggestions; file-link candidates are loaded only after typing [[. #2907

:game_die: Excalidraw 2.27.0 Beta Testing Game

2.27.0 has turned into a much bigger release than I originally expected.

There are visible changes — the new searchable settings, new Excalidraw Automate capabilities, JavaScript scripts, improvements inherited from Excalidraw.com, and a number of fixes.

But much of the work is under the hood.

Among other things, I have:

  • substantially reworked the save/autosave pipeline;
  • changed how Excalidraw is packaged and integrated into Obsidian;
  • moved to React 19 and a modern ESM-based Excalidraw build;
  • worked with the Excalidraw team to add ownerDocument support so one Excalidraw runtime can safely serve multiple Obsidian windows;
  • reworked main-window ↔ popout-window migration;
  • substantially reduced the memory cost of popout windows;
  • changed how drawings and embedded images are handed over when moving between windows;
  • optimized loading of drawings containing many embedded/nested drawings, PDFs and images;
  • migrated the settings system to Obsidian’s new declarative/searchable settings;
  • reorganized several large parts of the plugin into smaller managers;
  • added new Excalidraw Automate APIs and JavaScript script support.

In other words: a lot has changed.

I have done quite a lot of targeted testing while implementing these changes, but there is no realistic way for one person to test every combination of workflows, operating systems, vaults, drawing sizes, scripts, settings, popout windows, mobile devices, and strange things people do with Excalidraw.

So instead of asking everyone to “please test the beta”, let’s make this a little game.

:game_die: Roll a d20

There are 20 test scenarios below.

If you own a 20-sided die, roll it.

If you don’t, use any online dice roller / random-number generator and generate a number between 1 and 20.

Then test that scenario.

Want to help more? Roll again.

If the scenario doesn’t apply to you — for example, you roll an Excalidraw Automate test but don’t use scripts — simply reroll.

You don’t need to test everything. One carefully tested scenario is already useful.

Please update to the latest 2.27.0 beta before testing.


The 20 scenarios

1 — The boring everyday drawing

Tests: the new Excalidraw runtime and the many internal refactors.

Restart Obsidian and use Excalidraw normally for a few minutes.

  • Open an existing drawing.
  • Create a new drawing.
  • Draw a few shapes and freedraw strokes.
  • Add and edit some text.
  • Paste or drag in an image.
  • Undo and redo a few operations.
  • Zoom and pan.
  • Close the drawing and reopen it.

If convenient, also try this once while your computer is offline.

Look for: anything that simply feels broken, missing, strangely styled, unresponsive, or fails to survive reopening.


2 — Handwriting torture test

Best for: tablet and pen users, but mouse users can test as well.

Tests: the rewritten save pipeline and autosave performance.

Open a reasonably large drawing and continuously draw/write for several minutes.

Don’t wait for autosave. Just keep writing while Excalidraw does its work in the background.

If you regularly use Excalidraw for handwriting, use it exactly as you normally would.

Look for:

  • pauses or stutters that seem to happen periodically;
  • pen strokes lagging during autosave;
  • unusually high CPU use;
  • on tablets, unusual heating compared with your normal experience;
  • edits disappearing after closing and reopening.

I am especially interested in whether handwriting feels smoother than 2.26.4 on larger drawings.


3 — Save while still editing

Tests: save coalescing and protection of edits made while a save is already underway.

Use a large drawing if you have one.

  1. Make a visible edit.
  2. Trigger a manual save.
  3. Immediately continue drawing or typing while the save is happening.
  4. Make several more edits in quick succession.
  5. Close the drawing fairly quickly afterward.
  6. Reopen it.

Pass condition: the reopened drawing contains the latest edits, not merely whatever happened to be present when the first save started.

Try being slightly unreasonable. That is the point of this test.


4 — [[ versus the Command Palette

Tests: saving triggered by real Obsidian modals without interrupting inline text editing.

In an Excalidraw text element:

  1. Type ordinary text for a while.
  2. Type [[.
  3. Use the link suggester.
  4. Select a file, heading, or block.
  5. Continue typing.

The suggester should not kick you out of text editing.

Then make another unsaved edit and open the Obsidian Command Palette or another real Obsidian modal.

Close/reopen the drawing afterward.

Pass condition:

  • inline [[ suggestions remain smooth and usable;
  • opening a real Obsidian modal safely saves the drawing;
  • no text or other recent edits disappear.

If you use a large vault, also notice whether simply entering text editing feels faster than before.


5 — Main window → popout → main window

Desktop only.

Tests: one of the most heavily reworked areas in 2.27.0: window migration.

  1. Open a drawing in the main Obsidian window.
  2. Make an edit but don’t deliberately save.
  3. move the drawing to an Obsidian popout window.
  4. Immediately continue editing there.
  5. Undo/redo something.
  6. Make another unsaved edit.
  7. Move the drawing back to the main window.
  8. Continue editing.
  9. Close and reopen the drawing.

Do this round trip a few times if you’re feeling adventurous.

Look for:

  • lost edits;
  • a blank or frozen drawing;
  • controls that stop working;
  • keyboard shortcuts behaving strangely;
  • undo history behaving unexpectedly;
  • progressively slower migrations after repeated round trips;
  • the final reopened drawing not matching what you last saw.

6 — Actually work in a popout

Desktop only.

Tests: Excalidraw’s new cross-document ownerDocument architecture.

Open or create a drawing directly in an Obsidian popout window and actually use it there.

Try:

  • pointer/freedraw input;
  • text editing;
  • keyboard shortcuts;
  • copy/paste;
  • undo/redo;
  • color pickers and popovers;
  • context menus;
  • tooltips;
  • opening the Command Palette;
  • a few different fonts if you use them.

If you use custom fonts or CJK fonts, this is an especially useful test.

Look for: anything appearing in the wrong window, menus behind other UI, missing fonts, broken keyboard/pointer handling, or controls that work in the main window but not the popout.


7 — Move a drawing while its images are still loading

Desktop only. Extra points for evil drawings.

Tests: cancellation, progressive image loading, and migration safety.

Use a drawing containing many images, embedded Excalidraw drawings, PDFs, or nested drawings.

  1. Open it.
  2. Before everything has finished appearing, move it to a popout.
  3. Keep interacting with the drawing.
  4. Move it back while images are still loading if you dare.
  5. Make an edit during this process.
  6. Eventually close and reopen it.

Pass condition: Excalidraw remains usable and the edit survives.

Images may appear progressively. That is expected.

Freezes, a permanently empty scene, lost edits, or images that never recover are not expected.


8 — The monster drawing

Tests: the image cache and embedded-scene loading performance work.

Use the nastiest drawing you have: lots of images, nested Excalidraw drawings, PDFs, SVGs, etc.

Open it once after restarting Obsidian.

Then close and reopen it again while the cache is warm.

Look for:

  • cached/direct images appearing relatively early;
  • whether the drawing becomes usable before every last image is ready;
  • missing images;
  • images that remain permanently blank;
  • loading that never completes;
  • obvious regressions compared with 2.26.4.

You don’t need a stopwatch, but rough timings are extremely useful if you happen to know them.


9 — Nested drawings, back navigation and links

Tests: embedded-drawing classification/cache behavior and the refactored link-navigation code.

Create or use a drawing containing another Excalidraw drawing.

  1. Open the parent.
  2. Navigate to/open the child.
  3. Change something obvious in the child.
  4. Save it.
  5. Return quickly to the parent.
  6. Confirm the embedded child updates correctly.

If your drawings contain links to other Excalidraw drawings, frames, groups, or elements, click a few of those as well.

Look for: an embedded Excalidraw drawing suddenly behaving like ordinary Markdown, stale images, links opening the wrong place, or requiring a restart before updates appear.


10 — Editable Markdown image workout

Tests: the refactored Markdown-image controller and persistence.

If you use editable Markdown images:

  1. Create one.
  2. Edit its Markdown.
  3. Immediately switch to another Markdown image and edit that too.
  4. Duplicate one.
  5. Convert one between Markdown image and embeddable.
  6. Change some appearance settings.
  7. Delete one and respond to the keep/delete-content prompt.
  8. Close/reopen the drawing.

Pass condition: the right content remains attached to the right image and nothing silently disappears.

This is particularly useful because Markdown-image handling has had subtle timing bugs in the past.


11 — Save, export, blur, reopen

Tests: the rewritten save/export coordination.

Use a drawing containing text and images.

Try a few exports you normally use:

  • PNG;
  • SVG;
  • copy to clipboard;
  • PDF, if you use Excalidraw Extras.

If you use automatic SVG/PNG/Excalidraw export, enable it for this test.

Then:

  1. make an edit;
  2. switch away from Obsidian so the window loses focus;
  3. return;
  4. verify that the drawing was saved and the automatic export updated;
  5. make another edit and use the normal manual save;
  6. close/reopen.

Look for: stale exports, missing images/text, duplicated work, or a blur save behaving differently from an ordinary save in a way you can actually see.


12 — Search the new settings

Obsidian 1.13+

Tests: the new declarative/searchable settings UI.

Open Settings → Excalidraw.

Instead of scrolling, search for several things you know exist. For example:

  • autosave;
  • grid;
  • filename;
  • embed;
  • PDF;
  • script;
  • pen;
  • theme.

Follow some breadcrumbs and links between related settings.

Change a few harmless options and restart Obsidian.

Pass condition:

  • search finds what you expect;
  • navigation makes sense;
  • settings appear only once and on the right page;
  • values persist after restart;
  • help links and the normal Excalidraw settings toolbar/content still work.

Also report anything that is simply hard to find. This is a UX test as much as a bug test.


13 — Settings that affect other settings

Tests: settings dependencies, persistence, and live drawing state.

Keep a drawing open, zoom in and pan somewhere distinctive.

Then change a few settings that have related/dependent controls, such as:

  • grid settings;
  • TODO/done icons;
  • auto-export formats;
  • filename settings;
  • Markdown embed defaults;
  • custom pens;
  • rendering/theme-related settings.

Return to the drawing.

Pass condition: changing a rendering-related setting should not unexpectedly throw you back to a different zoom/scroll position.

Also confirm dependent settings enable/disable or update when you expect them to, and that the values survive restart.


14 — Go back to the old settings UI

Obsidian 1.13+

Tests: the supported legacy-settings fallback.

At the top of Excalidraw settings, turn off Use searchable settings and restart Obsidian.

You should get the previous single-page settings experience.

Change a couple of settings there and verify that they still work.

Then, if you like, switch searchable settings back on and restart again.

Pass condition: both settings UIs operate on the same real settings. Switching UI should not reset or corrupt your configuration.


15 — Stencil library + multiple windows

Especially useful if you have a large custom library.

Tests: stencil-library loading, including simultaneous restored views.

  1. Open an Excalidraw drawing in the main window.
  2. Open another in a popout.
  3. Confirm your stencil library is complete in both.
  4. Add or remove an item.
  5. Restart Obsidian with both windows/views restored if your setup allows it.
  6. Check the library again.

Look for: missing library items, duplicates, an empty library in one window, or changes that disappear after restart.

If you store your library as a vault file, that configuration is particularly useful to test.


16 — Text-to-Diagram history

Tests: the repaired Text-to-Diagram history UI and its behavior across windows.

If you use Text-to-Diagram:

  1. Open it.
  2. Create or use an existing conversation.
  3. Open the history menu.
  4. Restore an older chat.
  5. Delete one.
  6. Close and reopen Text-to-Diagram.

Desktop users: repeat the history-menu test from a popout window.

Look for: the history menu appearing behind the dialog, missing styling, clicks not working, history not restoring/deleting, or the menu appearing in the wrong window.


17 — Color-picker playground

Tests: several upstream Excalidraw changes plus plugin color-picker fixes.

Play with:

  • Bucket Fill;
  • eyedropper;
  • lasso selection in both contain and overlap modes;
  • the color palette;
  • dragging colors into the top picks strip;
  • right-clicking top picks to reset;
  • changing the canvas background color.

Then save, close and reopen the drawing.

Pass condition: customized top picks survive when they should, the palette behaves normally, the native picker is usable, and the picker/popover styling follows the current canvas/theme correctly.


18 — Convert an old .excalidraw file

Only if you have a legacy .excalidraw file. Make a backup first.

Tests: the legacy conversion fix in the latest beta.

Use an old .excalidraw drawing that contains embedded/pasted images.

Convert it to the current Markdown-based Excalidraw format.

Then:

  1. verify the drawing opens correctly;
  2. verify all embedded images are present;
  3. check that the required image attachments were created in the vault;
  4. restart Obsidian and reopen the converted drawing.

Pass condition: no image should disappear because the old source file was removed before its embedded assets were safely persisted.


19 — JavaScript Excalidraw scripts

For Excalidraw Automate / script users.

Tests: new .js script support.

Try one or more of the following:

  • put a .js Excalidraw script in your Scripts folder;
  • run it;
  • edit the .js file and verify Excalidraw notices the change;
  • configure a .js startup script;
  • download a Script Library script as JavaScript instead of Markdown;
  • move an existing script between Markdown and JavaScript using the supported workflow;
  • check that pinned/startup references still point to the right script.

Also open Excalidraw Automate → Settings for installed scripts and confirm script-provided settings appear there and update appropriately.

Look for: duplicate scripts, scripts not refreshing, broken paths, settings disappearing, or a startup script running from the wrong file.


20 — Excalidraw Automate power-user test

For script authors / adventurous testers.

Tests: the new contextual element-action and autostart APIs.

If you have a script using the new APIs, test:

Selected-element actions

Register a custom action using registerElementActionProvider().

  • Select an eligible element.
  • Confirm the custom button appears immediately.
  • Run the action.
  • Run the script again and make sure you do not get duplicate buttons.
  • Close/reopen the view.

Autostart

Use registerAutostart().

Try the permission choices:

  • Allow
  • Deny
  • Ask me later

Then open additional Excalidraw views and verify the script behaves according to that choice.

Check the Autostart scripts command/settings and change the permission there as well.

Look for: duplicate actions, stale buttons after deleting/unloading a script, scripts starting despite Deny, permissions not persisting, or scripts failing to attach to newly opened views.


:bug: Found something?

Please report it even if you’re not sure whether it is caused by 2.27.0.

The easiest option is simply to reply in this thread.

For something that looks like a reproducible plugin bug, you can also open a GitHub issue:

When reporting a result, please include:

  • Scenario number
  • Excalidraw version
  • Obsidian version
  • Operating system / device
  • whether you were in the main window or a popout
  • what you did
  • what you expected
  • what happened instead
  • screenshot / short screen recording if it helps reproduce the problem

And please report successful tests too.

Something as simple as:

Scenario 5 passed — 2.27.0-beta.x, Windows 11, Obsidian x.x.x. Did five main ↔ popout round trips with edits in between. Everything survived reopening.

is useful information.

:bullseye: Why this matters

2.27.0 is intentionally laying groundwork rather than piling feature after feature onto the existing architecture.

Some of these changes have already produced very substantial improvements in my stress-test drawings — especially save performance, image-heavy drawing load time, popout migration time, and popout memory use.

But the real test is not my vault.

It’s yours.

So roll the die, abuse Excalidraw a little, and tell me what happens. :game_die:

1 Like

Just run into scenario 20 and posted a little script I called 'ArrowTraceJumper’.

As the Autostart script is required to be set to ‘Autostart’ I played around with this setting:

If I change the ‘Autostart’ setting to, for example, ‘Ask every time’, it only takes effect after restarting Obsidian. I would have expected the script’s autostart to stop immediately upon changing the setting (?).

SYSTEM INFO:
Obsidian version: 1.13.7
Installer version: 1.10.3
Operating system: #30~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 7 13:27:52 UTC 2 7.0.0-30-generic
Login status: not logged in
Language: en
Insider build toggle: off
Live preview: on
Base theme: dark
Community theme: Obsidian gruvbox 0.2.1
Snippets enabled: 0
Restricted mode: off
Plugins installed: 8
Plugins enabled: 8
1: Templater v2.25.0
2: Excalidraw v2.27.0-rc.2
3: Tasks v8.4.0
4: Jump-to-Date v1.0.25
5: Dataview v0.5.68
6: ExcaliBrain v0.2.18
7: Meta Bind v1.5.1
8: BRAT v2.2.0

2.27.0-rc.3

  • Includes a rework of the script autostart and script loading architecture to decrease system load, assuming a future where a user might have a dozen scripts set to autostart.
  • Includes new ExcalidrawAutomate features to support Slideshow v4 performance improvements.

@Kai, you are right, when you turn off autostart, it should take effect immediately. I hopefully have that corrected. Please verify.

Thanks a lot for update 2.27.0-rc.3.

Regarding testing switching Autostart I did the follow:

  1. Test script (ArrowTraceJumper) is set to ‘Autostart’ in settings.
  2. Script is running as expected at a given example arrow.
  3. In settings, switching from ‘Autostart’ to ‘Ask every time’.

Expected behavior:

  1. Selecting the arrow on the canvas: jumper icons should not show up as they are controlled by the script.
    Actual behavior: Jumper icons are shown and the script is still working.
  2. Clicking script’s button in ‘Obsidian Tool Panel’ or running a Hotkey: Confirmation window should show up.
    Actual behavior:
    • Script is executed and a trace jump is performed
    • Confirmation window is showing up - switching back to e.g. ‘Autostart’ takes effect.

In 2.27.0-rc.3 I noticed the following:

  • Opening a drawing, e.g. DailyNote.
  • Selecting an object on the canvas by single click.
  • ==> Tab title and save button are shown as ‘activated’ - but to change to the file had been applied.
  • Switching to another open tab and getting back to the drawing, the tab as well as save button are shown as not-activated.

Ah… there might be a misunderstanding here. We are talking about two different things.

Once you started a script in a scene, that script is running. If the script registerElementActionProvider that service provider will be active until you close the tab or open a new scene in your Excalidraw Tab. Switching off auto-start does not turn off the script already running in the scene. It only means that the next Excalidraw note you open will not automatically start the script.

Currently there isn’t a deregisterElementActionProvider for the script to clean up buttons. The way you achieve that is by closing and opening the scene again. Which btw has become extremely quick with 2.27.0.

Interesting and undesirable. I am able to reproduce. I am not sure this is new to rc3 though… To the best of my knowledge, I’ve made no related changes yesterday…

Thanks for the clarification; I wasn’t fully aware of that. However, with this information, I can confirm that switches in autostart settings are working as expected!