Skip to content

feat: Obsidian 1.13 declarative settings + traverse_note builder (4.13.0-beta.3)#702

Open
michaelpporter wants to merge 5 commits into
mainfrom
feat/obsidian-1.13-declarative-settings
Open

feat: Obsidian 1.13 declarative settings + traverse_note builder (4.13.0-beta.3)#702
michaelpporter wants to merge 5 commits into
mainfrom
feat/obsidian-1.13-declarative-settings

Conversation

@michaelpporter
Copy link
Copy Markdown
Owner

@michaelpporter michaelpporter commented May 29, 2026

Summary

  • Implements getSettingDefinitions() on BreadcrumbsSettingTab for Obsidian 1.13's declarative settings API — page-based navigation, global settings search, proper hide() lifecycle
  • Keeps existing display() as fallback for Obsidian < 1.13.0 (minAppVersion stays 1.12.3)
  • Fixes Plugin.settings accessor conflict from Obsidian 1.13.0 adding settings?: unknown to the base class
  • Compacts the Edge Fields settings UI: groups merged inline, spacing tightened, move-up/down arrows added
  • Adds traverse_note explicit edge builder — DFS walk of vault links from a root note

What changed

src/settings/SettingsTab.ts

  • Added ImpSettingPage, SvelteSettingPage, PageViewsSettingPage helper classes
  • Added getSettingDefinitions() with full section structure: Edge fields, Implied relations, Edge sources (7 sub-pages including Traverse notes), Views (4 sub-pages), Commands (4 sub-pages), Suggestors, Debug

src/main.ts

  • Replaced get/set settings accessor with declare settings: BreadcrumbsSettings
  • loadSettings() calls reactive_settings.init() then this.settings = reactive_settings.current

src/components/settings/EdgeFieldSettings.svelte

  • Groups row merged inline with field row; "Add to Group" dropdown → + button (Obsidian Menu)
  • Spacing tightened with <hr> separator between items
  • Move-up/down arrow buttons (splice-based reorder, correct when name filter is active)

src/graph/builders/explicit/traverse_note.ts (new)

  • DFS over app.metadataCache.resolvedLinks starting from any note with BC-traverse-note-field: <field>
  • Generates one edge per parent→child hop, typed with the specified field
  • Registered in src/const/graph.ts, src/graph/builders/explicit/index.ts, settings, and migration tests

package.json / manifest.json / manifest-beta.json — bumped to 4.13.0-beta.3

obsidian dev dependency — upgraded from 1.12.31.13.0

Test plan

  • Open plugin settings in Obsidian 1.13+ — confirm page-based navigation renders all sections
  • Open plugin settings in Obsidian < 1.13 — confirm flat display() fallback still works
  • Global settings search finds settings by name
  • Edge fields: group chips inline, + button opens group menu, arrows reorder correctly
  • Add BC-traverse-note-field: down to a note with wikilinks — rebuild graph — edges appear in Tree/Matrix views
  • All 200 unit tests pass (bun run test)

- Merge groups row inline with field row; replace Add-to-Group
  dropdown with a + button that opens an Obsidian Menu
- Tighten spacing: gap-7 → hr separator between items
- Add move-up/move-down arrow buttons (splice-based reorder,
  correct when name filter is active)
- Remove Groups text label
@michaelpporter michaelpporter changed the title feat: Obsidian 1.13 declarative settings (4.13.0-beta.1) feat: Obsidian 1.13 declarative settings (4.13.0-beta.2) May 29, 2026
DFS walk of the Obsidian vault link graph starting from any note
annotated with BC-traverse-note-field. Generates one edge per
parent→child hop in the DFS tree, typed with the specified field.
No special frontmatter required on linked notes.
@michaelpporter michaelpporter changed the title feat: Obsidian 1.13 declarative settings (4.13.0-beta.2) feat: Obsidian 1.13 declarative settings + traverse_note builder (4.13.0-beta.3) May 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant