- type loadData result and processFrontMatter callbacks (no-unsafe-assignment/member-access)
- remove deprecated setDynamicTooltip (slider value now shown inline)
- end manifest description with punctuation; drop unreachable fundingUrl
- replace builtin-modules package with node:module builtinModules
- TOC section now identified only by heading title match (custom title +
known aliases), never by list-content heuristics — an ordinary section
with bullets can no longer be deleted as a false-positive TOC
- insertion position computed from the content string inside vault.process,
not from stale metadata-cache line numbers — fixes TOC landing inside or
above frontmatter; manual path writes content first, frontmatter second
- drop lastUpdate timestamp; auto-update is now idempotent (no edit when
the TOC is unchanged), ending the perpetual modify→update loop
- auto-update no longer touches frontmatter; delete hand-rolled YAML
serialization (FrontmatterManager) — processFrontMatter is the only
frontmatter writer
- single EventRef for the modify listener; toggling auto-update off now
takes effect immediately and repeated saveSettings no longer stacks handlers
- duplicate heading names render as plain text (wikilinks cannot address
2nd+ occurrences); regex patterns validated in settings UI and compiled
once per generation (timing-probe pseudo-validation removed)
- remove dead code: TOCEditorExtension, debug command, unused constants
- new command: Remove table of contents (section + frontmatter key)
- Remove custom color overrides from styles.css for theme compatibility
- Remove overly broad CSS selectors (now minimal styling to avoid conflicts)
- Replace manual frontmatter parsing with MetadataCache.getFileCache(file)?.frontmatter
- Replace custom debounce implementation with Obsidian's built-in debounce method
- Replace Vault.modify with Vault.process for background file modifications
- Replace manual frontmatter updates with FileManager.processFrontMatter
- Use frontmatterPosition from getFileCache instead of manual parsing
- Remove redundant 'General' heading from settings tab
This addresses all required changes from the Obsidian plugin review:
https://github.com/obsidianmd/obsidian-releases/pull/7753#issuecomment-3513967948🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Changed "Debug TOC metadata" to "Debug table of contents metadata" and "Exclude H1 headings" to "Exclude level 1 headings" to avoid abbreviations in user-facing text per Obsidian UI guidelines.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Address plugin review requirement to use sentence case for all UI text.
Updated ribbon icon tooltip, setting descriptions, and placeholders to
follow lowercase convention (e.g., "table of contents" instead of
"Table of Contents").
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Remove trivial type annotation from startIndex parameter
as it can be inferred from the default value.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace space literals with {2} quantifiers in regex patterns for clarity
- Add void operator to unhandled promises in callbacks
- Convert all UI text to sentence case per Obsidian guidelines
- Replace console.log with console.debug for debug output
- Remove unnecessary await of non-Promise value
- Replace 'any' types with 'unknown' for type safety
- Fix Promise returned where void expected in debounce
- Remove unnecessary escape characters in regex patterns
- Remove async keyword from non-async method insertOrUpdateTOC
- Replace HTML heading elements with Setting().setHeading() API
All changes address required fixes from ObsidianReviewBot automated review.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>