Release 1.6.0 Audio & Partial Excalidraw Embeds
This release adds two new media types to the sync pipeline and cleans up a long-standing editor quirk.
β¨ New Features
π Audio embeds β Anki sound tags
![[Recording.m4a]] inside a card table now uploads the audio binary to Anki and rewrites the embed as Anki's native [sound:Recording.m4a] tag β so the card actually plays on review.
Supports all Obsidian-recognized audio formats: flac, m4a, mp3, ogg, wav, webm, 3gp.
π¨ Partial Excalidraw embeds
Embeds that target a group, area, or frame inside an Excalidraw drawing now render only that region in Anki β matching what Obsidian shows in preview.
Supported fragment syntax:
![[drawing.excalidraw.md#^group=<id>]]![[drawing.excalidraw.md#^area=<id>]]![[drawing.excalidraw.md#^frame=<id>]]![[drawing.excalidraw.md#^clippedframe=<id>]]
If the fragment can't be resolved (renamed/deleted ID), the plugin falls back to rendering the full drawing and logs a warning β the card still syncs.
π Bug Fixes
- Cursor jump fix (Live Preview): pressing β below an Anki-card table no longer jumps the cursor backwards into the top cell of the table. Reading View behavior is unchanged.
π§Ή Under the Hood
- Excalidraw logic extracted into its own module (
src/excalidraw.ts) for easier maintenance. - Removed dead code from the old toggle implementation and unused AnkiService helpers.
- Generalized the media regex from image-only to
MEDIA_EMBEDso audio/Excalidraw/images share one resolver pass.