Skip to content

Releases: max-fluff/obsidian-reference-linker

1.3.0

Choose a tag to compare

@github-actions github-actions released this 02 Aug 13:11

Added

  • The flat single-file OpenDocument is read (Indexing, Embeds). .fodt .fods .fodp .fodg — what LibreOffice offers beside the zipped form — are the same markup in one XML file rather than a package, and they now index, outline, preview and embed exactly as .odt .ods .odp .odg do. Pictures included: a flat file keeps them inside the markup rather than beside the text, and they are carried into the preview as they are. That brings the plugin to 11 formats and 57 extensions.
  • Find a document by its citation key (Suggestions). With a bibliography read, @!cite:knuth1984 searches the keys instead of the file names, so a paper is reached by how you cite it rather than by whatever it is called on disk. @!cite: on its own lists everything the bibliography knows. Pinning a link to a key was already there; finding one by it is what was missing.
  • Export citations used in the vault (Commands). Collects every citation key your notes actually pin to and writes a note listing each key, the document it names and the notes citing it. A key a note pins but the bibliography no longer carries is called out rather than left blank — that is the case worth seeing. A report is a snapshot, so it never overwrites an earlier one.
  • What each format can do, in the settings (Settings). Every format in File extensions carries two marks beside its name: whether it has an outline to link into, and whether a link into it opens at the position or at the start. The second is the one that could previously be learned only by clicking a link and watching where it landed — PowerPoint has sections, but its viewer ignores the fragment, so the section name goes to the clipboard instead. A dimmed mark means no; hovering one explains it in words.
  • Keys with no document, by name (Settings). The bibliography status said how many keys matched; it now also names the ones that matched nothing, which is what a reader has to fix.

Changed

  • The bibliography and citation keys are documented in the readme, having until now been findable only by scrolling the settings.

Internal

  • Filtering and pinning are one registry now. A way of addressing a document is declared once as a projection from an index entry to a value, and that projection answers what a typed filter keeps, what the typed text is matched against, and what a link pins to — which is why cite: searching came for the price of a declaration. The anchors a link stores (sec:, cite:) are unchanged on disk.
  • The community listing text is kept out of the repository.

1.2.0

Choose a tag to compare

@max-fluff max-fluff released this 01 Aug 20:50

Added

  • The inline embed is a viewer (Embeds). The header carries a toolbar, and each format shows only the controls it can honour: the document's own contents list, ◀ 3 / 128 ▶ with a box you can type a page into, a zoom ladder from 50 to 300 % with Fit width, and Open / Refresh. Ctrl+wheel zooms, the arrows and PageUp/PageDown step, Home/End jump to the ends, and a double-click toggles fit against 100 %.
  • A recording's own transport (Embeds). Audio and video get play, a bar filled to where they have got to, the clock, sound with the level it is at, and full screen for a video — as wide as the block asked for, in place of the browser's second header. With the transport focused, space plays and pauses, the arrows step five seconds and m mutes.
  • Remember this view (Embeds). The one action that writes back: page: and zoom: for a document, time: and volume: for a recording, written into the block so it opens there next time. Offered only where the note is open in an editor — reading view has no editor to undo a write in.
  • A range draws as you reach it (Embeds). report.pdf#page=3-5 stacks its pages and paints each as it scrolls into view rather than all at once, and takes the contents list instead of the arrows.
  • Citation keys (Links, Settings). The new Bibliographies setting reads keys from BibTeX (.bib) or CSL-JSON. A link inserted to a document that has a key is pinned to it, so it survives the document being renamed or re-filed; Pin to citation key is in the link's menu.
  • Drag and drop from your file manager (Links, Embeds). Drop a document into a note and pick whether it lands as a reference link or an inline embed. A file outside your Reference root is skipped with a notice rather than baked in as an absolute path.
  • More of the chrome is yours (Style Settings). How tall an inline embed and a hover preview grow before they scroll, and how visible an embed's toolbar is while the pointer is elsewhere.

Fixed

  • A framed preview — Word, OpenDocument, HTML, EPUB and spreadsheets — scrolled its own body, so a wide sheet's scrollbar sat at the foot of the whole document, below the fold. Nothing could reach it: a wheel or a middle-click autoscroll never crosses into a frame. The frame now never grows taller than the box it is shown in, and scrolls in its own window, where the bars are in view.

Internal

  • The embed shell is the shared embed-frame module, which both sigil linkers draw on.
  • Scan folders are watched through the shared watcher, which works on Linux too.

1.1.0

Choose a tag to compare

@max-fluff max-fluff released this 28 Jul 15:41

Added

  • Ten more formats, every reader the plugin's own (Indexing). Word (.docx), Excel (.xlsx), PowerPoint, OpenDocument, EPUB, HTML, Markdown and text, CSV/TSV, images, audio and video now sit beside the PDF support 1.0 shipped — 11 formats over 53 extensions, with no pandoc or LibreOffice to install alongside.
  • Sections wherever a format carries an outline (Indexing). Word and HTML headings, a workbook's sheets, an EPUB's table of contents, one entry per slide, Markdown headings on their line — each indexed with its position, so @!intro finds the Introduction rather than the file holding it.
  • Office previews (Preview, Embeds). Hover a link or embed a document and the slide is drawn, the document laid out and the sheet rendered as a real table. The new Document preview shape setting lays a Word or OpenDocument preview out either as a text column that follows its content or as the whole page the file declares; the page size and margins come from the file either way.
  • Embed ranges (Embeds). report.pdf#page=3-5, or a page: 3-5 line, stacks several pages or sections in one block — up to 20. Paged and sectioned formats range; images and media render once.
  • #id anchors (Links, Embeds). guide.html#_options — the same fragment a copied HTML section link carries — resolves through the index to its section, in a link and in an embed target.
  • Recordings are positioned in time, not in pages (Embeds). time: 1:30 (or 1:02:05, or plain seconds) and clip.mp4#t=1:30, matching the timecode the header shows. Each format accepts only its own unit: page: on a recording, or time: on a paged document, is an error that names the right key instead of quietly starting from the top.
  • A section name you can still find by hand (Opening). For a format whose position cannot survive being handed to the OS, opening now copies the section name and says so, rather than landing at the top of the file with no explanation.

Changed

  • The extensions setting is a list of formats (Settings). One row per format — PDF, Word, Excel, PowerPoint, OpenDocument, e-books, web pages, text and Markdown, CSV, images, audio and video — with a count of how many extensions are on and a switch to turn on every supported one. Anything else you want indexed goes under Other extensions, found by file name only: no preview, no sections.
  • An embed header for a section now reads the section's name instead of the page it sits on.

Internal

  • Format parsing hardened across the new handlers, and the readers live in src/formats/, one module per format behind a single registry.
  • The README documents every embed key, link placeholder and the per-format table of what gives sections, previews and an external open at the position.

v1.0.1

Choose a tag to compare

@max-fluff max-fluff released this 19 Jul 17:54

Re-release of 1.0.0 for the community catalog: same plugin, no changes.

v1.0.0

Choose a tag to compare

@max-fluff max-fluff released this 19 Jul 17:45

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.