Disabling and re-enabling Canvas leaves new canvases without resolved links until restart

Steps to reproduce

  1. In a vault with the Canvas core plugin enabled, create a note target.md.

  2. Settings → Core plugins: turn Canvas off, then on again.

  3. Create a new canvas, add a text card containing [[target]].

  4. Open the Developer Console and run:

    app.metadataCache.resolvedLinks['<new canvas path>.canvas']
    

    Or open the Backlinks / graph for target.md.

Did you follow the troubleshooting guide?

Yes - reproduced in a fresh vault with no community plugins enabled.

Expected result

The new canvas resolves its link: { "target.md": 1 }, and target.md shows the canvas as a backlink, as it does for canvases created before the toggle.

Actual result

undefined - the new canvas never gets a resolvedLinks entry until Obsidian is restarted.

The cause appears to be the canvas index: app.internalPlugins.getPluginById('canvas').instance.index._loaded is true before the toggle and false after it, and it is the same object. Disabling unloads it; enabling does not load it again, so its vault handlers are never re-registered. Running app.internalPlugins.getPluginById('canvas').instance.index.load() after the re-enable restores resolution.

Environment

  • Obsidian 1.14.2 (installer 1.13.7)
  • Windows 11

Thanks