Skip to content

Releases: michaelpporter/breadcrumbs

4.19.3

27 Jun 20:45

Choose a tag to compare

A small quality-of-life release for date-note (and deeply-nested) trails.

Changed

  • The trail view's grid now defaults to the longest path selection. Date notes link up to every ancestor level at once (year, quarter, month, week — all directly), so the old all default drew every redundant path and the trail rendered as a cluttered fan of repeated ancestors. longest keeps only the deepest chain — 2026 → 2026-Q2 → 2026-06 → 2026-W26 — so the trail reads as a clean line.
  • Existing trails keep their saved selection — flip it yourself via the trail's selection dropdown (the middle control) if you want the cleaner view.

Full changelog: 4.19.2...4.19.3

4.19.2

27 Jun 19:41

Choose a tag to compare

A maintenance release — two user-facing bug fixes, plus six internal refactors that consolidate duplicated logic into small, tested seams (no behaviour change).

🐛 Fixed

  • The tree view's "Merge fields" toggle was inverted — it separated fields when set to merge, and vice versa. It now matches its label (and the trail-view / codeblock behaviour). If you'd used it before, it will feel flipped from what you're used to — that's the fix.
  • Renaming or deleting an edge field now updates the Dataview builder's default field. Previously the rename/delete cascade skipped the Dataview source's default field, so it kept pointing at the old (now-invalid) field name until you fixed it by hand.

🧹 Changed (internal — behaviour-preserving)

  • The seven explicit edge builders that resolve a single field from frontmatter now share one read_edge_field helper, and invalid-field errors consistently name the BC-…-field key.
  • The typed_link builder's inline-field parsing is now a pure, unit-tested parse_inline_field helper (a redundant dedup layer was removed).
  • The Tree, Matrix, and Trail views share one useViewSettings helper for their settings mirror + loop-safe writeback. As a side effect, the views no longer write settings to disk on mount (only on an actual edit).
  • Settings-panel callbacks route their post-change side effects through one commitSettings(policy) helper instead of ~140 callbacks each hand-pairing save with rebuild/refresh.
  • The WASM graph traversal is reached through a small TS facade (traverse / with_traversal / sort_traversal); walk_to_roots was extracted from the tree view. Both are now unit-tested.
  • The free-on-change/unmount lifecycle for derived WASM objects is owned by one useOwned rune helper instead of an identical effect hand-copied across 8 view components.

Full changelog: 4.19.1...4.19.2

4.19.1

18 Jun 12:00

Choose a tag to compare

Features

  • Export to canvas — a new command that lays out a note's neighbourhood as a native JSON Canvas (.canvas). Pick which edge field-groups to follow and the depth, choose left-to-right or top-to-bottom layout, and the canvas is built as a tidy tree with each parent centred over its children. Defaults are configurable under Settings → Commands → Create canvas; re-exporting an existing canvas prompts to overwrite or create a new one.
  • Jump to neighbour (picker) — a fuzzy-suggest command listing all of the active note's neighbours (grouped by field) to jump to, complementing the existing "jump to first neighbour" commands.
  • Per-field jump commands — "Jump to first neighbour by field:<field>" is now registered for every edge field, so directions like up/down/next/prev can each be bound to their own hotkey.

Fixed

  • Johnny.Decimal sibling edges now work at the category level (e.g. 1112 under area 10), not just for delimited items (11.0111.02). The sibling grouping now shares the same parent resolution as the up-edge builder.

Full changelog: 4.19.0...4.19.1

4.19.0

17 Jun 13:01

Choose a tag to compare

Removed

  • Removed the type: graph codeblock and its exclude-folders option (both added in 4.18.0). A whole-vault graph quickly exceeds Mermaid's edge limit and freezes large vaults, so the feature needs a rethink before it returns. Existing type: graph blocks now report an invalid type — switch to tree, mermaid, or markmap.

Changed

  • Codeblock from: folder queries now match case-insensitively (e.g. from: '"projects"' matches a Projects/ folder), mirroring Dataview.
  • type: markmap with from: now keeps the map within the matched notes instead of following edges out into the rest of the vault.
  • A breadcrumbs codeblock with no depth: now defaults to depth [0, 5] instead of unbounded, so traversals on large vaults no longer hang.

Performance

  • Codeblock tree traversal no longer clones its ancestor set at every node (O(n²) → O(n) allocations), speeding up deep or wide trees.

Full changelog: 4.18.1...4.19.0

4.18.1

17 Jun 12:01

Choose a tag to compare

Maintenance release — dependency updates and a security pin. No functional changes for end users.

Security

  • Pinned the transitive vite dev-dependency to 8.0.16, clearing two advisories (GHSA-v6wh-96g9-6wx3, GHSA-fx2h-pf6j-xcff) affecting 8.0.08.0.15. Both are Windows dev-server issues; vite is only used to run the test suite and is never part of the shipped plugin, so end users were never exposed.

Build

  • Bumped JavaScript dev-dependencies (eslint, esbuild, vitest, tailwindcss, typescript-eslint and others) and the Rust/WASM crates (itertools 0.15, smallvec, hashbrown), and regenerated the committed wasm/pkg/ bindings.

Full changelog: 4.18.0...4.18.1

4.18.0

17 Jun 00:37

Choose a tag to compare

Features

  • New codeblock type: graph — renders the whole vault (or a from:-scoped subset) as one Mermaid graph, instead of traversing out from a single note. Useful for an overview MOC or seeing a folder/tag's structure at a glance.
  • exclude-folders option for type: graph — drop folders from the graph, additive to the global Excluded folders setting (no vault-wide config change needed).
  • Dataview Notes now have a settings page with a configurable default field, used when a note sets BC-dataview-note-query without BC-dataview-note-field.

Changed

  • The codeblock dataview-from field is renamed to from. The name is now misleading — the Dataview dependency was removed, and Breadcrumbs parses the #tag / "folder" / [[link]] query itself. The old dataview-from still works as a deprecated alias and logs a console warning.
  • The Edge fields Hide in views toggle is renamed Hide in side views (it only affects the Matrix and Tree side panels).
  • The Self is sibling control moved from the Edge fields page to the Implied relations page.

Removed

  • The unused traverse_note default-field setting and the dead content / field-prefix codeblock fields.

Fixed

  • Renaming or removing an edge field now updates every place that referenced it — including sibling-field defaults (tag/dendron/Johnny.Decimal) and date-note period fields — so no setting is left pointing at a renamed or deleted field.

Full changelog: 4.17.0...4.18.0

4.17.0

14 Jun 00:12

Choose a tag to compare

Features

  • New per-edge-field Hide in views toggle (Settings → Edge fields). A field marked hidden stays in its groups, codeblocks, and the graph, but is no longer rendered in the Matrix and Tree side views — handy for structural fields you don't want cluttering the panels (#132).

Fixed

  • Removing an edge field now also drops any transitive implied-relation rules that referenced it and clears edge-source default-field settings that pointed at it. Previously those references dangled, and a stale reverse-edge rule could surface a phantom field in the views.

Full changelog: 4.16.1...4.17.0

4.16.1

13 Jun 21:54

Choose a tag to compare

Build

  • Code-quality cleanup, no functional change: removed redundant non-null assertions in the list-note section resolver, switched an array type to T[] syntax, and capitalized a settings placeholder to satisfy the Obsidian UI lint rule. src/ now passes ESLint with no @typescript-eslint warnings.

Full changelog: 4.16.0...4.16.1

4.16.0

13 Jun 21:40

Choose a tag to compare

Features

  • List Note section scoping — add BC-list-note-section: "<heading>" to a List Note's frontmatter to read only the list under that heading. The section runs to the next equal-or-higher-level heading (or end of file); without the field the whole note is read as before (#363).
  • Excluded folders — new global setting (Settings → Breadcrumbs → Excluded folders). Notes inside a listed folder are skipped by every edge builder. One path per line; matching respects folder boundaries (#358).
  • Per-link List Note exclusionBC-list-note-exclude, a frontmatter list of wiki-links that stay in the list without becoming child edges. Useful for reference/see-also links (#365).

Full changelog: 4.15.2...4.16.0

4.15.2

11 Jun 19:43

Choose a tag to compare

Fixed

  • Settings sub-pages (Edge fields, Tag notes, and every other section) rendered blank — title only, no controls — on Obsidian 1.13.1. Each sub-page now renders through the documented SettingPage page factory instead of the previous workaround (#713).

Full changelog: 4.15.1...4.15.2