feat: add Excalidraw support across .excalidraw files and embedded ma…#773
Open
julienevano wants to merge 22 commits into
Open
feat: add Excalidraw support across .excalidraw files and embedded ma…#773julienevano wants to merge 22 commits into
julienevano wants to merge 22 commits into
Conversation
31e1f6b to
d36db64
Compare
…rkdown diagrams Adds Excalidraw as a first-class diagram surface with two routes sharing one editable canvas component: - Embedded markdown blocks via a fenced `excalidraw` block, round-tripped through the existing DurableBlockCodec pipeline (cloned from tldraw). - Standalone `.excalidraw` files routed to ExcalidrawFileEditor based on extension; reuses get_note_content / save_note_content IPC, no new commands. ExcalidrawCanvas computes mount-only initialData via a useState lazy initializer (callers remount via React key to load new content; ExcalidrawFileEditor keys on path). Autosave is gated behind a first-user-interaction flag so opening a file never rewrites it; pending debounced edits flush synchronously on unmount. Storage is fully in the source file (markdown fence or .excalidraw JSON). Embedded image assets in the scene `files` field are explicitly deferred, matching ADR-0107's deferral for tldraw assets. lodash-es is pinned to 4.18.1 (pnpm override) so Excalidraw's transitive chevrotain path cannot pull vulnerable lodash-es 4.17.21. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The fake shell in user_shell_bindings_from_shell_reads_zshrc_exports_for_requested_keys set HOME to a temp dir but left ZDOTDIR inherited from the runner's environment. On machines where ZDOTDIR points at a real ~/.zshrc, the probe sourced that file instead of the temp .zshrc, so the expected exports never appeared and the call returned None -> panic. Clear ZDOTDIR in the fake shell so the test is hermetic. Production behaviour is unchanged (it still honours a real ZDOTDIR).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
…rkdown diagrams
Adds Excalidraw as a first-class diagram surface with two routes sharing one editable canvas component:
excalidrawblock, round-tripped through the existing DurableBlockCodec pipeline (cloned from tldraw)..excalidrawfiles routed to ExcalidrawFileEditor based on extension; reuses get_note_content / save_note_content IPC, no new commands.ExcalidrawCanvas consumes initialData on mount only — callers remount via React key to load new content (ExcalidrawFileEditor keys on path). Autosave is gated behind a first-user-interaction flag so opening a file never rewrites it; pending debounced edits flush synchronously on unmount.
Storage is fully in the source file (markdown fence or .excalidraw JSON). Embedded image assets in the scene
filesfield are explicitly deferred, matching ADR-0107's deferral for tldraw assets. Documented in ADR-0134.