feat: add automatic word count and link validation to write operations
Add automatic word count and link validation to create_note, update_note, and update_sections operations to provide immediate feedback on note content quality and link integrity. Features: - Word counting excludes frontmatter and Obsidian comments, includes all other content (code blocks, inline code, headings, lists, etc.) - Link validation checks wikilinks, heading links, and embeds - Results categorized as: valid links, broken notes (note doesn't exist), and broken headings (note exists but heading missing) - Detailed broken link info includes line number and context snippet - Human-readable summary (e.g., "15 links: 12 valid, 2 broken notes, 1 broken heading") - Opt-out capability via validateLinks parameter (default: true) for performance-critical operations Implementation: - New ContentUtils.countWords() for word counting logic - Enhanced LinkUtils.validateLinks() for comprehensive link validation - Updated create_note, update_note, update_sections to return wordCount and linkValidation fields - Updated MCP tool descriptions to document new features and parameters - update_note now returns structured JSON instead of simple success message Response format changes: - create_note: added wordCount and linkValidation fields - update_note: changed to structured response with wordCount and linkValidation - update_sections: added wordCount and linkValidation fields Breaking changes: - update_note response format changed from simple message to structured JSON
This commit is contained in:
19
CHANGELOG.md
19
CHANGELOG.md
@@ -6,6 +6,25 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
|
||||
---
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
- **Word Count**: `create_note`, `update_note`, and `update_sections` now automatically return word count for the note content
|
||||
- Excludes YAML frontmatter and Obsidian comments (`%% ... %%`) from word count
|
||||
- Includes all other content (code blocks, inline code, headings, lists, etc.)
|
||||
- **Link Validation**: `create_note`, `update_note`, and `update_sections` now automatically validate all wikilinks and embeds
|
||||
- Validates basic wikilinks (`[[Note]]`), heading links (`[[Note#Heading]]`), and embeds (`![[file.ext]]`)
|
||||
- Categorizes links as: valid, broken notes (note doesn't exist), or broken headings (note exists but heading missing)
|
||||
- Returns detailed broken link information including line number and context snippet
|
||||
- Provides human-readable summary (e.g., "15 links: 12 valid, 2 broken notes, 1 broken heading")
|
||||
- Can be disabled via `validateLinks: false` parameter for performance-critical operations
|
||||
|
||||
### Changed
|
||||
- `create_note`, `update_note`, and `update_sections` response format now includes `wordCount` and optional `linkValidation` fields
|
||||
- `updateNote` now returns structured JSON response instead of simple success message (includes success, path, versionId, modified, wordCount, linkValidation)
|
||||
|
||||
---
|
||||
|
||||
## [1.0.1] - 2025-10-28
|
||||
|
||||
### Fixed
|
||||
|
||||
Reference in New Issue
Block a user