metafetch 0.1.7 Published

Metafetch 0.1.7 — source notes from any journal URL, and all six authors

Point Metafetch at an arXiv abs page and you now get every author and the publication date, not just a title and the arXiv logo. It also reads more than one frontmatter property, so a note keyed arxiv: or techcrunch: is no longer invisible to it.

Metafetch can read a paper now. Point it at an arXiv abs page and you get every author and the publication date — not just a title and the arXiv logo. And it finally looks at more than one frontmatter property, so a note keyed arxiv: or techcrunch: isn't invisible to it.

Why care?

You keep notes about sources — a paper, a journal article, a TechCrunch piece — where the metadata lives in frontmatter so Bases and Dataview can reach it.

Two things made that painful.

Metafetch read exactly one property: url. If your note keyed its link as arxiv: or ssrn: or nature: — which is the natural way to key it — metafetch gave up with "no url field in frontmatter." A plugin whose entire job is fetching metadata for URLs couldn't see the URL sitting in your frontmatter.

And academic sources came back nearly empty. A title, an abstract, and the arXiv logo. No authors, no publication date. For a paper, those are most of the point.

Both fixed in 0.1.7.

What's new

Pick which URL to fetch

New command: Fetch from a frontmatter URL…

It finds every http(s) value in the note's frontmatter — under any property name — and shows them so you can choose, with a provider selector alongside.

There's no correct precedence order to guess between url, arxiv, and doi. A note can hold several URLs that are all legitimately fetchable: an abs page and a PDF, a DOI and a publisher landing page. Which one you meant is a judgement call, and you're right there to make it.

Metafetch's own output is kept out of the list — it will never offer to fetch the og_image or og_favicon it wrote on a previous run. That's checked two ways: by field name, and by image file extension, so renaming those fields doesn't sneak them back in.

Scholarly metadata

Academic publishers use a different meta-tag standard than the rest of the web — Highwire Press citation_* tags. Metafetch reads them now:

YAML
authors:
  - Yanlin Wang
  - Xinyi Xu
  - Jiachi Chen
  - Tingting Bi
  - Wenchao Gu
  - Zibin Zheng
og_published: "2025-12-01"

Three separate things had to be fixed to get there. We weren't reading citation_* at all. The meta-tag reader returned only the first match, while arXiv emits one citation_author tag per author — so even reading the right tag would have given you one name and silently dropped five. And arXiv writes names as Wang, Yanlin and dates as 2025/12/01, both of which now get normalized on the way in (with a guard, so Jane Doe, PhD doesn't turn into PhD Jane Doe).

Nothing changed for non-academic sites. Trade press already worked through the standard tags, and we verified that before touching anything.

Optional vault identity codes

New opt-in setting: stamp a short, vault-unique code onto notes as they're fetched.

YAML
hex_code: k4m2x9

A source note is only useful if you can point at it later, and [[Some Long Title]] is more fragile than it looks — it breaks on rename and goes ambiguous when two notes share a title. A minted code doesn't.

Off by default. Everything else metafetch writes is fetched — it came from the page. A code is a commitment the plugin invents on your behalf, so it should be your choice. Field name and length are configurable.

Despite the name, these aren't hexadecimal. The alphabet is the full [a-z0-9], which costs the same six characters on disk as [0-9a-f] but gives 2.18 billion combinations instead of 16.7 million — about 130× less chance of a collision, for free. Codes are write-once: an existing one is never overwritten, because a code that changes on the next fetch is worse than no code at all.

Your tags stop getting mangled

Metafetch rewrites a note's whole frontmatter block on every fetch, not just the fields it owns. A quoting rule that's correct for URLs was also being applied to every array item, so - ai came back as - "ai" every single time.

Worse and quieter: an inline tags: [a, b] had no parse case at all and was written back as the string "[a, b]" — silently destroying the array, so Obsidian's tag pane lost the note.

Both fixed. Wikilinks in frontmatter deliberately keep their quotes, because there they're load-bearing: unquoted, [[Ada Lovelace]] parses as a nested array in real YAML rather than a link.

Upgrade notes

Nothing to do. No settings change meaning, no frontmatter is rewritten on upgrade, and the two existing fetch commands behave exactly as before.

The first fetch you run on a note after upgrading will clean up the quoting on that note's arrays as a side effect of the normal rewrite.

minAppVersion is unchanged at 1.8.10. We compile against the newer Obsidian API but call nothing that requires it, so nobody gets dropped.

Under the hood

Metafetch had no test suite. It has 71 tests now, across four units — frontmatter round-tripping, URL discovery, the scholarly metadata helpers, and identity codes — with no test framework and no new runtime dependency. Still zero runtime dependencies.

Also in this release: ESLint had silently stopped running (a legacy .eslintrc that ESLint 10 no longer reads), now migrated to flat config with every rule preserved and 0 errors. Dependencies swept, including the Obsidian API to 1.13.1 — which added a settings property to the Plugin base class that most plugins will need a one-word fix for.

Every release asset remains cryptographically attested, as of 0.1.6:

BASH
gh attestation verify main.js --repo lossless-group/metafetch