You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Both update commands now open a preview before anything is written. Every drifted link and embed is listed under its note with a checkbox, showing the line it would move from and to; links whose code is gone are listed separately as needing attention, so "nothing to update" is a verdict you can read rather than a notice that flashes past. Untick individual changes or a whole note, then apply. A note edited between opening the preview and applying is skipped instead of overwritten.
Pin unpinned code links and embeds in this note / … in the whole vault (previously links only) ask what to pin to first — symbol name, kind, exact line text, or a combination, with symbol plus line as the default. Anchors combine, so a bulk pin no longer silently attaches to a same-named declaration elsewhere in the file.
A drifted embed's right-click menu offers Update this code link, the fence-body counterpart of the item a drifted link already had.
Priority among linker plugins, first in Settings → Maintenance. It appears only when another linker plugin is installed, and decides which plugin claims a word or a link both recognise. Each plugin moves only itself, so an arrangement may need a move in more than one settings tab.
Changed
Rename or move a pinned file and the link follows it. The symbol is looked up in its new file, and if the match is unambiguous the link is marked fixable rather than broken; the update commands rewrite both the path and the line, and the preview tints a move so it can be looked over before applying.
New links write {code-root} where they used to write {root}, so a link says which linker owns it. Links already in notes are not touched and keep resolving: a bare {root} is still filled in when the link carries a code pin, when Code Linker is the only linker installed, or when the path resolves inside the code root. Editor templates in settings — presets and custom ones alike — are rewritten to {code-root} on load, and a migrated preset stays a recognised preset instead of being filed as "Custom".
With Reference Linker also installed, the two selection commands nest under a shared entry instead of appearing twice: one Find and open with Code inside it, one Find and convert to link likewise. Alone, the flat wording stays and says what it makes — Find and open code, Find and convert to code link.
Right-clicking a link that both linkers recognise now offers one set of actions. Ownership is settled by the pin the author wrote when there is one, and by the priority order otherwise.
Fixed
A link whose file the index doesn't know — outside the scan folders, not yet indexed, or moved — was underlined in the error colour as though its code were gone. Such a link is now judged silently: marked stale if its pin turns up elsewhere, otherwise left unmarked. Embeds behave the same way.
With Reference Linker installed, each plugin read the other's pins as its own, found no matching symbol, and marked those links broken. Pins are now checked for ownership before being judged.
Clicking a link with a {root} token was handled by whichever linker happened to load first, so the same link could open in the wrong target. Each plugin now claims only links it can show are its own.
The plugin published its API before finishing load, so a failed load could leave Reference Linker standing aside for a plugin that never came up. It is published last.
Internal
The hover popover, the inline suggester, the stale-link marking, the update preview, the interface strings and styles, the menu builder and the precedence control moved into the shared submodule, along with the interop layer that decides which linker owns a contested link.
Tests moved to the shared harness and stubs, and CI gates on the cross-version contract tests.