Skip to content

v1.0.0

Choose a tag to compare

@max-fluff max-fluff released this 19 Jul 17:45
· 43 commits to main since this release

First release. Reference Linker links your notes to documents that live outside the vault — PDFs, Office files and images — and opens them at the right page. Desktop only: it reads the files from disk through Node's filesystem API.

Added

  • Autocomplete: type the trigger (default @!) and part of a document name to insert a link at the cursor. The files under your Reference root are indexed in memory and matched fuzzily; set File extensions first, because the index stays empty until it knows which types to scan. Scan folders and Skip folders narrow the scan, Auto-refresh index rebuilds when documents change on disk, and Rebuild reference index forces one by hand. An inline prefix filters a common name: pdf:, png:, or sec: for sections only.
  • PDF sections: the outline is read and each section indexed with the page it starts on, so @!intro finds the Introduction of a paper rather than the file. The inserted link carries that page and a sec: binding in its title. A PDF without an outline, and every other document type, is still indexed by file name.
  • Portable links: the note keeps the literal {ref-root} token and a relative path, and the absolute base is filled in only when the link is opened or rendered, so a vault works on a machine with a different Reference root. The token is namespaced so a link says which linker owns it; a bare {root} written before the namespacing still resolves.
  • Clicking a link opens the document in your OS default app, and a #page= link lands on its page. The link goes to the OS through the shell, because Obsidian's own external-link opener mangles the fragment.
  • Hover a link to preview it in place: the target page of a PDF rendered to a canvas, or the image itself. Rendering uses the pdf.js Obsidian already ships. In live preview hold Ctrl/Cmd; in reading view a plain hover is enough. Preview on hover turns it off.
  • Inline embeds: a fenced ```reference-link block renders a page or an image inside the note. The target is a path, a path with #page=N, or a name resolved through the index, and page:, width: and title: lines tune it. The header opens the document at that page, right-click gives Open and Refresh, and an embed re-renders when the index rebuilds. Insert reference embed writes the block for you.
  • Stale and broken marks: a link pinned with sec: whose section has moved to another page is underlined in the warning colour; one whose section is gone from the outline is underlined in the error colour. Update reference links in this note / … in the whole vault rewrite the drifted pages through a preview you can check off link by link, and a note edited since the preview was opened is skipped rather than overwritten. Pin unpinned reference links retrofits notes written before pinning, and a link's right-click menu offers Update this reference link, Pin to section and Unpin. Mark stale links toggles the marks.
  • Commands: Insert reference link, Insert reference link as… (a one-off viewer choice that leaves the default alone), Open referenced document, Copy reference link (with the root resolved, for pasting outside the vault), Convert selection to reference link and Find and open document. Viewer link preset chooses the link format, with ask-on-insert and your own named URL templates.
  • The index is exposed read-only at app.plugins.plugins['reference-linker'].api for other plugins and DataviewJS: getEntries(), getFiles(), getStats(), find(), linkFor(), uriFor(), onChange(), plus version and root().
  • Suggestions never fire inside code blocks, inline code, frontmatter or an existing link, and a pipe is escaped when a link lands in a table cell. The stale marks and update commands skip links inside code, where they are example text rather than live links.
  • Interface in English and Russian, following Obsidian's language. The stale and broken underline colours are exposed to Style Settings.