1.0.0 (2026-09-01)
⚠ BREAKING CHANGES
- plugin: minAppVersion moves 1.8.7 -> 1.13.0.
Ports the 598-line imperative settings tab to the declarative API
following the template (2575a89) and the AI Editor port's structure:
- Scalars are
controldefinitions bridged by key through
getControlValue/setControlValue; every write still goes through
plugin.updateSettings, the single persistence path. setControlValue
rejects on failure so the pane rolls back to the stored truth. - Skill folders and manual resources are SettingDefinitionLists with
native add/delete. Deletion uses the LIVE index per the framework
contract; resource VALUE keys use the stable resource id
(resource..), never an index, so a drag/delete can not
reroute a write. - Each manual resource is a navigable sub-page (type/name/slug/URL),
with displayValue mirroring the resource type on the entry. - Search backend sections switch via visible() predicates instead of
conditional re-renders; the missing-base-URL warning is its own
conditionally-visible row. - Bearer token, API key (no password control type exists), status grid,
client-setup buttons, rescan and reindex stay imperative render/action
rows — each writing only inside its own settingEl. - Port slider replaced by a number control with min/max/step + validate
and deliberately NO defaultValue (a cleared field is refused inline,
not silently reset). - plugin.ts: settings field carries
override(1.13 typings declare it),
and the background-rescan refresh calls settingTab.update() instead of
display() — display() is never called under the declarative API. - Guard spec + AGENTS.md "Declarative settings" section ported from the
template. obsidian typings 1.12.0 -> 1.13.1.
Verified in the live vault via the obsidian CLI: plugin reloads clean,
registry running, catalog rebuilt (410 skills), getSettingDefinitions
returns the full tree, control-value bridge reads live data correctly,
and data.json is byte-identical apart from the plugin's own
lastScanStats bookkeeping — no setting lost. Settings pane rendering
still needs eyes-on verification in Obsidian (nothing in CI renders it).
Features
- build: fail the build on a lockfile the catalog review cannot parse (1f055ab)
- build: make the rule floor check that it is still wired in (c9808f5)
- build: refuse commits that loosen the rules instead of fixing the finding (8d93600)
- plugin: declare settings via getSettingDefinitions (Obsidian 1.13) (c5ee56e)
- plugin: publish subagent definitions as a second catalog family (de97f83)
- plugin: show what's new in a tab instead of a modal dialog (c0f64a3)
- plugin: surface support CTAs everywhere users can see them (8ddd0f7)
Bug Fixes
- build: inline the changelog via a define, stop shrinking the brand list (0bcbf84)
- build: port template catalog-reviewer + toolchain fixes (2.8.0+) (9d25aeb)
- plugin: harden the declarative settings port per external review (88eb550)
- plugin: honour limit on POST /search and expose readiness via GET /status (9705b18)
- plugin: make /status report readiness and align the search limit contract (5265c57)
- plugin: persist settings before committing them to memory (c9e9a68)
- plugin: resources could not be removed — pages get no onDelete button (c96ede3)
- plugin: serialize settings writes — overlapping edits lost data (0f86267)
Enjoying this plugin?
- 💬 Join the Knowii community and learn to organize your notes and put your knowledge to work, together with fellow knowledge workers
- 📬 Subscribe to my newsletter for Obsidian, Personal Knowledge Management and note-taking
▶️ Subscribe to my YouTube channel- ❤️ Become a GitHub Sponsor or buy me a coffee
- 🧰 Discover my other Obsidian plugins and my products