Tracking issue for work deferred out of the 2026-07-25 session. Two independent items.
1. Port the security overrides to 1.12-compat (→ 4.14.6)
bun audit on 1.12-compat @ 4.14.4 reports 16 vulnerabilities (11 high, 2 moderate, 3 low) vs 8 on main. The gap is not new exposure — main has an overrides block and 1.12-compat has none at all, so the same advisories that were already pinned on main resurface there.
Already pinned on main, missing on 1.12-compat:
| Package |
Path |
main's pin |
brace-expansion |
eslint / typescript-eslint / import-x → minimatch |
^5.0.8 |
postcss |
eslint-plugin-svelte, svelte-preprocess, vite |
^8.5.23 |
linkify-it |
markmap-lib → markdown-it |
^5.0.2 |
undici |
markmap-lib → markmap-html-parser → cheerio |
^6.27.0 |
vite |
vite-plugin-wasm, vitest |
8.0.16 |
fast-uri |
eslint → ajv |
^4.1.1 |
Extra on 1.12-compat, needing their own decision (not a copy-paste):
shell-quote <=1.8.4 via npm-run-all2 — high, quadratic-complexity DoS in parse(). Build tooling only.
esbuild >=0.27.3 <0.28.1 — direct dependency, low, arbitrary file read via the dev server on Windows. Bumping esbuild on this branch risks the 1.12 build; verify before pinning.
Notes:
- Only
linkify-it is on a runtime path, and it is unreachable in practice — markmap constructs MarkdownIt() with linkify off. Pin it anyway so the scanner result is clean.
- The Obsidian community directory scans every published release, so this is a release-time gate on the 1.12 line too, not a one-off.
linkify-it@6.x drops the default export that markdown-it@5 imports and breaks the bundle. Pin ^5.0.2, not latest.
- Cutting 4.14.6 also requires adding its
versions.json entry on main — Obsidian reads that file from the default branch only.
Acceptance: bun audit on 1.12-compat reports no more advisories than main; bun run build && bun run test pass; released as 4.14.6.
2. Bases descendant filters — #735
See #735. The only implementable approach found is writing computed ancestors into user frontmatter, extending the existing freeze_implied_edges pattern. This contradicts the plugin's read-only-by-default stance, so it needs to be opt-in and explicit. Larger lift; deliberately not scheduled.
Refs #735
Tracking issue for work deferred out of the 2026-07-25 session. Two independent items.
1. Port the security
overridesto1.12-compat(→ 4.14.6)bun auditon1.12-compat@ 4.14.4 reports 16 vulnerabilities (11 high, 2 moderate, 3 low) vs 8 onmain. The gap is not new exposure —mainhas anoverridesblock and1.12-compathas none at all, so the same advisories that were already pinned onmainresurface there.Already pinned on
main, missing on1.12-compat:main's pinbrace-expansion^5.0.8postcss^8.5.23linkify-it^5.0.2undici^6.27.0vite8.0.16fast-uri^4.1.1Extra on
1.12-compat, needing their own decision (not a copy-paste):shell-quote <=1.8.4vianpm-run-all2— high, quadratic-complexity DoS inparse(). Build tooling only.esbuild >=0.27.3 <0.28.1— direct dependency, low, arbitrary file read via the dev server on Windows. Bumping esbuild on this branch risks the 1.12 build; verify before pinning.Notes:
linkify-itis on a runtime path, and it is unreachable in practice — markmap constructsMarkdownIt()with linkify off. Pin it anyway so the scanner result is clean.linkify-it@6.xdrops the default export thatmarkdown-it@5imports and breaks the bundle. Pin^5.0.2, not latest.versions.jsonentry onmain— Obsidian reads that file from the default branch only.Acceptance:
bun auditon1.12-compatreports no more advisories thanmain;bun run build && bun run testpass; released as 4.14.6.2. Bases descendant filters — #735
See #735. The only implementable approach found is writing computed ancestors into user frontmatter, extending the existing
freeze_implied_edgespattern. This contradicts the plugin's read-only-by-default stance, so it needs to be opt-in and explicit. Larger lift; deliberately not scheduled.Refs #735