Releases: michaelpporter/breadcrumbs
Releases · michaelpporter/breadcrumbs
4.19.3
A small quality-of-life release for date-note (and deeply-nested) trails.
Changed
- The trail view's grid now defaults to the
longestpath selection. Date notes link up to every ancestor level at once (year, quarter, month, week — all directly), so the oldalldefault drew every redundant path and the trail rendered as a cluttered fan of repeated ancestors.longestkeeps 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
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_fieldhelper, and invalid-field errors consistently name theBC-…-fieldkey. - The
typed_linkbuilder's inline-field parsing is now a pure, unit-testedparse_inline_fieldhelper (a redundant dedup layer was removed). - The Tree, Matrix, and Trail views share one
useViewSettingshelper 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_rootswas extracted from the tree view. Both are now unit-tested. - The free-on-change/unmount lifecycle for derived WASM objects is owned by one
useOwnedrune helper instead of an identical effect hand-copied across 8 view components.
Full changelog: 4.19.1...4.19.2
4.19.1
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 likeup/down/next/prevcan each be bound to their own hotkey.
Fixed
- Johnny.Decimal sibling edges now work at the category level (e.g.
11↔12under area10), not just for delimited items (11.01↔11.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
Removed
- Removed the
type: graphcodeblock and itsexclude-foldersoption (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. Existingtype: graphblocks now report an invalid type — switch totree,mermaid, ormarkmap.
Changed
- Codeblock
from:folder queries now match case-insensitively (e.g.from: '"projects"'matches aProjects/folder), mirroring Dataview. type: markmapwithfrom:now keeps the map within the matched notes instead of following edges out into the rest of the vault.- A
breadcrumbscodeblock with nodepth: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
Maintenance release — dependency updates and a security pin. No functional changes for end users.
Security
- Pinned the transitive
vitedev-dependency to 8.0.16, clearing two advisories (GHSA-v6wh-96g9-6wx3, GHSA-fx2h-pf6j-xcff) affecting8.0.0–8.0.15. Both are Windows dev-server issues;viteis 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 (
itertools0.15,smallvec,hashbrown), and regenerated the committedwasm/pkg/bindings.
Full changelog: 4.18.0...4.18.1
4.18.0
Features
- New codeblock
type: graph— renders the whole vault (or afrom:-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-foldersoption fortype: 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-querywithoutBC-dataview-note-field.
Changed
- The codeblock
dataview-fromfield is renamed tofrom. The name is now misleading — the Dataview dependency was removed, and Breadcrumbs parses the#tag/"folder"/[[link]]query itself. The olddataview-fromstill 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_notedefault-field setting and the deadcontent/field-prefixcodeblock 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
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
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-eslintwarnings.
Full changelog: 4.16.0...4.16.1
4.16.0
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 exclusion —
BC-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
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
SettingPagepage factory instead of the previous workaround (#713).
Full changelog: 4.15.1...4.15.2