Lossless Changelog
fleet

Lossless Flavored Markdown

lossless-group/lossless-flavored-markdown-packagemain

2026-09-08 · 1 entry2026-08-23 · 1 entry2026-08-17 · 3 entries2026-08-08 · 1 entry2026-05-08 · 2 entries2026-05-07 · 1 entry2026-05-03 · 1 entry2026-04-22 · 1 entry2025-08-01 · 1 entry2026-08-17 · 22 commits · 7,286 code · 877 context · 990 changelog
Jan 20252026Sept 2026
  • colour = whenJan 2025 → Sept 2026

92 commits · +26,045 lines

Code
19k73%
Context
4k16%
Changelog
3k11%

The measurements that justified path resolution are now reproducible, and they moved

Every default in resolve-path.ts was argued from a table nobody could re-run. The script that regenerates it is now committed — and it turns out the original count treated image embeds as navigational links, which shifted every percentage that used the corpus as a denominator. All six conclusions survive; only the digits moved.

Michael Staton
  • Path-Resolution
  • Wikilinks
  • Measurement
  • Documentation
  • Reproducibility

Wikilinks stop needing a hand-written resolver

createPathResolver turns Obsidian path resolution into configuration instead of code — an index cascade that rescues the 28% of wikilinks written with no folder at all, a collision policy that refuses to guess, and 5µs per link so it never becomes the reason a build is slow.

Michael Staton
  • Wikilinks
  • Path-Resolution
  • Obsidian
  • Configuration
  • Performance
  • Content-Pipeline

Image carousels join the standard library — and the filename timestamp turns out to be a run stamp, not a capture stamp

`:::image-carousel` normalizes into one renderer-ready payload: alias collapsed, slides extracted, order resolved. Sequence variants sort chronologically by the ISO stamp in the filename — which works because the sort is stable, and which needed to be, because that stamp records when a batch was processed rather than when each screen was captured.

Michael Staton
  • Image-Carousel
  • Directives
  • Plugins
  • Naming-Conventions
  • Timestamps

Headings get an eyebrow, and the outline finally admits which ones are asides

Markdown gives you one line where editorial practice has always used three. `$$` and `&&` bind an eyebrow and a subheading to the heading they sit against — and the table-of-contents outline that shipped a release ago can now tell a real section from an `###` buried in a callout.

Michael Staton
  • Headings
  • Table-Of-Contents
  • Eyebrow
  • Information-Design
  • Plugins
  • Naming-Conventions
  • +2

LFM gets a test suite, and the test suite immediately earns its keep

161 assertions across every plugin and every diagram handler, zero new dependencies — plus a demo page whose numbers are computed by the real pipeline at build time. Writing them found a bug that had been shipping for months: a callout nested inside a callout was never transformed.

Michael Staton
  • Testing
  • Quality
  • Callouts
  • Splash
  • Developer-Experience
  • Diagrams

Code fences get a format registry — YANG and JSON Schema render as trees, PlantUML needs no renderer at all

Seven fence handlers — YANG and JSON Schema render as trees, PlantUML encodes to a URL with no renderer at all, Vega-Lite parses for a client chart, Graphviz and Mermaid just claim their language. None add a dependency. The mechanism underneath ships knowing nothing: remarkCodeFences has an empty registry and you name the formats you want.

Michael Staton
  • Code-Fences
  • YANG
  • Mermaid
  • PlantUML
  • Vega-Lite
  • JSON-Schema
  • +5

New callout features in @lossless-group/lfm

remark-callouts grew up: multi-line callouts no longer silently fall through, hyphenated type names like [!llm-response] now parse, Obsidian's foldable [!type]- syntax is supported, and the pipeline doc codifies the policy that callout bodies must support every LFM feature — directives, citations, embeds, even nested callouts.

Michael Staton

remarkLosslessWikilinks ships in 0.3.0 — site-resolved Obsidian wikilinks for the LFM pipeline

0.3.0 lands a new plugin that turns Obsidian's [[Page|Display]] syntax into proper hyperlinks — with one design constraint baked in: LFM never decides where a wikilink points. Sites supply a resolver function; LFM owns the syntax. The package now does internal vs external routing, anchors, alias displays, and graceful plain-text fallback for unresolved links — all behind one new option on parseMarkdown.

Michael Staton