nestealin47 downloadsKeep heading numbers and heading-fragment links coherent with conservative, recoverable updates.
English | 简体中文
Automatic heading numbers that keep links alive.
Virtual by default · Persisted integrity by opt-in · Local and offline
Virtual mode never changes Markdown. The animation shows persisted mode after its one-time opt-in: numbering and unambiguous heading links stay synchronized without manual saves or routine confirmation dialogs.
Heading Keeper is a public community plugin for Obsidian, built for local and offline use.
Install · Download the latest release
Virtual mode is enabled by default. It renders numbers in the editor and reading view and performs no Vault writes.
Persisted mode requires an explicit one-time opt-in. Heading Keeper then maintains the currently opened Markdown note through its editor buffer. It defers all numbering while an IME composition is active, then applies one minimal editor transaction after the input settles. Routine maintenance is silent and does not require a preview, a manual save, or another confirmation.
Numbering is not applied to unopened notes in the background. A note is reconciled when it is opened. Disable other plugins that write heading numbers before enabling persisted mode.
Heading Keeper builds a lightweight reverse index from Obsidian's metadata cache. When a heading rename is uniquely identifiable, it updates only the indexed source notes that link to that heading. The heading change and its link updates share one durable, retryable operation.
Historical broken or ambiguous links remain read-only until the user runs Audit heading links, chooses exact targets, reviews the repair plan, and confirms it. The audit is the only normal feature that reads every Markdown body.
<vault>/.obsidian/plugins/heading-keeper/data.json. It contains hashes and
minimal changed fragments, not full note bodies. Disable the plugin and
delete this file to clear its local state.Find Heading Keeper in Settings → Community plugins → Browse. If the listing is still under review, use the GitHub release method below.
Before the Community listing is available, download the release assets from the
latest GitHub release and place main.js and manifest.json in:
<vault>/.obsidian/plugins/heading-keeper/
Reload Obsidian, enable Heading Keeper, and keep virtual mode enabled while checking the configured heading levels and number format. Persisted mode can then be enabled explicitly in the plugin settings.
1.12.7 or later.0.2.3.Use Node 22.20.0 and pnpm 11.15.0:
corepack pnpm install
corepack pnpm verify:local
corepack pnpm verify:release
The workspace keeps Markdown parsing and numbering logic in
@heading-keeper/core, independent of Obsidian, CodeMirror, DOM, and Vault
APIs.
Heading Keeper is available under the MIT License.