Conversation
A pending note was removed from every task surface, hiding work until the sync decision was made. Keep its local tasks available in List, Calendar and Kanban, label them Conflict pending, and refresh them when a resolution changes the note.
Flush the latest review edits before a sync can change conflict state. Coordinate every workspace window outside the vault lock, share completed sync results, and give each conflict one active reviewer so windows cannot replace each other’s drafts. Save failures, changing windows and preparation timeouts pause the run safely. Matching review ownership prevents a stale cleanup from releasing a newer review.
A note could remain paused after both devices held identical content. After pulling current Cloud state and scanning the local vault, clear only content conflicts whose exact path, identity, revision, kind, digest and size agree. Keep real differences, structural conflicts and unfinished merge drafts for review. Agreement removes only conflict metadata and lets the next edit upload against the current revision; it never rewrites either copy.
…open Opening a second drawing could replace its file with the scene of the drawing just left, and switching back and forth left both files holding the same scene (#755). The editor kept one latest scene and wrote it, after its save delay, to whichever path the view showed when the delay ran out. Excalidraw reads initialData once at mount and reports its scene from componentDidUpdate on every render. On a local vault the next drawing's read answers within a millisecond, so React folds the placeholder render and the next drawing's render into one update and the previous canvas is never torn down. That canvas then reports the old scene under the new path, and 700 ms later the old scene overwrites the file that was just opened. Bind every scene, its debounce and its last-saved dedupe to the path the scene was read from, key the canvas by path so a switch always remounts it, and close a session the view leaves so a late report from the canvas being torn down cannot arm a write. The per-drawing viewport memory follows the same binding. Nothing else about saving changes: a switch still flushes the drawing being left, and a read that fails still opens an empty canvas as before. Verified in the built desktop app over CDP with real mouse drags: the reported flow corrupted 3 of 3 runs before and 0 of 3 after, and switching between seeded files went from 4 of 6 to 0 of 6. Unit tests model the batched read and the late report; both fail on the previous view.
…g note The Connections panel listed an embedded image such as `![[assets/diagram.png]]` under Links From Here as an unresolved wikilink and offered to create `assets/diagram.png.md` for it (#757). The panel asked only the note index whether a target resolved, and an image is not a note. The same gap existed wherever a wikilink is followed: the Vim gd action, a click on a rendered wikilink and Cmd-click each ran their own resolution chain and each fell through to the create offer. Resolve a wikilink against the vault's files with the rules that already render the embed (relative to the note, relative to the vault root, then a unique file name), now in a store-free module the panel and the followers share. The panel lists a match as a file row that opens the file in its own tab and offers to create a note only for a wikilink nothing answers; Enter on the row goes through VimNav like the other rows. The three followers run one shared step before offering to create anything. PDFs keep the gd behaviour of pinning into the reference pane, and a file-like name no asset answers stays a missing wikilink. Verified in the built desktop app over CDP: the panel row went from a create offer for `/assets/diagram.png.md` to a file row that opens the asset tab, and gd inside the wikilink went from the create prompt to the image tab. The classifier and the follow-link path have unit tests.
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.
Summary
Release branch for ZenNotes 2.47.0: two community bug fixes and the two Cloud conflict fixes from Unyanda's September 8 report.
29c5287.assets/diagram.png.mdfor an embedded image;gd, rendered-wikilink clicks and Cmd-click had the same gap. Wikilinks now resolve against the vault's files with the rules that render the embed, the panel lists a match as a file row that opens the asset tab, and all three followers share one step before offering to create anything. Commitbee2284.835fea1.dfb8ebd,0c448cf.Also on the branch: the merge of
maincarrying the js-yaml and svgo advisory bumps from #753, the release notes and post, and thechore(release): 2.47.0version bump.Verification
.mdsuggestion to FILE opening the asset tab, andgdfrom the create prompt to the image tab.apps/desktopbuild:prod(typecheck, tests, build, packaged CLI isolation), Go vet and tests, app-core suite (1,980 tests), repo typecheck,npm run packand the signed packaged app reaching a CDP page target in about 3 s from an isolated profile, website suite (691 tests) with the release page entry.npm audit --omit=dev --audit-level=highpasses after Chore(deps): js-yaml 3.15.2 / 4.3.2 and svgo 3.3.5 (today's advisories) #753; one moderatehonofinding remains and predates this release.Docs
In-app manual and website docs updated for the Connections panel change; release notes, post and before/after stills under
docs/releases/v2.47.0/; website release page entry prepared in the Laravel repo, pushed with the release.