- Add PathUtils for cross-platform path normalization and validation - Add ErrorMessages with context-aware, actionable error messages - Update all tool implementations with enhanced path handling - Improve tool descriptions for AI agents with detailed guidance - Add Jest testing infrastructure with 43 passing tests - Add comprehensive documentation (Tool Selection Guide, error improvements) - Fix cross-platform path issues (Windows backslashes, case sensitivity) - Fix delete folder error message (clear 'cannot delete folders' message) - Fix parent folder detection with specific error messages - All changes backward compatible with v1.0.0 New files: - src/utils/path-utils.ts - Path normalization utilities - src/utils/error-messages.ts - Enhanced error messages - tests/__mocks__/obsidian.ts - Mock Obsidian API - tests/path-utils.test.ts - 43 unit tests - tests/README.md - Testing guide - jest.config.js - Jest configuration - docs/TOOL_SELECTION_GUIDE.md - Comprehensive tool guide - docs/ERROR_MESSAGE_IMPROVEMENTS.md - Error message documentation - docs/TOOL_DESCRIPTION_IMPROVEMENTS.md - AI agent improvements - PHASE_1.1_IMPLEMENTATION.md - Implementation summary - RELEASE_NOTES_v1.1.0.md - Release notes Updated: - CHANGELOG.md - Add v1.1.0 entry - ROADMAP.md - Mark Phase 1.1 complete, add Phase 1.5 proposal - manifest.json - Bump to v1.1.0 - package.json - Bump to v1.1.0, add test scripts - src/tools/index.ts - Enhanced tool descriptions - src/tools/note-tools.ts - Use PathUtils and ErrorMessages - src/tools/vault-tools.ts - Use PathUtils and ErrorMessages
217 lines
7.7 KiB
Markdown
217 lines
7.7 KiB
Markdown
# Release Notes: Version 1.1.0
|
|
|
|
**Release Date:** October 16, 2025
|
|
**Type:** Minor Version (Feature Release)
|
|
**Compatibility:** Fully backward compatible with v1.0.0
|
|
|
|
## 🎯 Overview
|
|
|
|
Version 1.1.0 implements **Phase 1.1** of the roadmap, focusing on robustness, cross-platform compatibility, and significantly improved user experience through enhanced error messages and path handling.
|
|
|
|
## ✨ What's New
|
|
|
|
### Path Normalization & Validation
|
|
|
|
**Cross-platform path handling** that works seamlessly on Windows, macOS, and Linux:
|
|
- Automatic conversion of backslashes to forward slashes
|
|
- Windows drive letter handling
|
|
- Leading/trailing slash normalization
|
|
- Security: Prevents directory traversal attacks
|
|
- Case sensitivity awareness (macOS/Linux vs Windows)
|
|
|
|
### Enhanced Error Messages
|
|
|
|
**Actionable error messages** that help users fix issues quickly:
|
|
- Context-aware troubleshooting tips
|
|
- Dynamic suggestions (e.g., "Use list_notes('folder') to see available files")
|
|
- Clear examples of correct path formats
|
|
- Platform-specific guidance
|
|
- Operation-specific recommendations
|
|
|
|
**Example:**
|
|
```
|
|
Parent folder does not exist: "projects/2024/q4"
|
|
|
|
Cannot create "projects/2024/q4/report.md" because its parent folder is missing.
|
|
|
|
Troubleshooting tips:
|
|
• Create the parent folder first using Obsidian
|
|
• Verify the folder path with list_notes("projects/2024")
|
|
• Check that the parent folder path is correct (vault-relative, case-sensitive on macOS/Linux)
|
|
• Note: Automatic parent folder creation is not currently enabled
|
|
```
|
|
|
|
### Improved Tool Descriptions
|
|
|
|
**AI agents now receive comprehensive guidance** directly in the MCP schema:
|
|
- Critical constraints stated upfront
|
|
- Workflow suggestions (e.g., "use list_notes() first if unsure")
|
|
- Multiple concrete examples per tool
|
|
- Failure modes explicitly documented
|
|
- Self-documenting without external docs
|
|
|
|
### Testing Infrastructure
|
|
|
|
**Professional testing setup** for reliability:
|
|
- Jest testing framework configured
|
|
- 43 unit tests (all passing)
|
|
- Mock Obsidian API for isolated testing
|
|
- Cross-platform test coverage
|
|
- Easy to run: `npm test`
|
|
|
|
### Comprehensive Documentation
|
|
|
|
**New documentation for users and developers:**
|
|
- **Tool Selection Guide** (400+ lines) - Complete guide on choosing the right tool
|
|
- **Error Message Improvements** - Documentation of all enhancements
|
|
- **Tool Description Improvements** - AI agent guidance documentation
|
|
- **Testing Guide** - How to run and write tests
|
|
- **Phase 1.1 Implementation Summary** - Technical details
|
|
|
|
## 🔧 Technical Improvements
|
|
|
|
### New Utilities
|
|
|
|
**`PathUtils` class** (`src/utils/path-utils.ts`):
|
|
- 15+ utility methods for path operations
|
|
- Type-safe file/folder resolution
|
|
- Existence checking
|
|
- Path manipulation (parent, basename, join)
|
|
- Markdown extension handling
|
|
|
|
**`ErrorMessages` class** (`src/utils/error-messages.ts`):
|
|
- 11 specialized error message generators
|
|
- Dynamic context-based suggestions
|
|
- Consistent formatting
|
|
- Reusable across all tools
|
|
|
|
### Updated Tool Implementations
|
|
|
|
All tools now use the new utilities:
|
|
- ✅ `readNote()` - Enhanced validation and error messages
|
|
- ✅ `createNote()` - Parent folder validation, conflict detection
|
|
- ✅ `updateNote()` - Better error handling
|
|
- ✅ `deleteNote()` - Folder detection with clear error
|
|
- ✅ `listNotes()` - Path validation and verification
|
|
|
|
## 🐛 Bug Fixes
|
|
|
|
- **Windows path handling** - Backslashes now converted automatically
|
|
- **Delete folder error** - Clear message instead of confusing "not a folder" error
|
|
- **Parent folder detection** - Specific guidance when parent missing
|
|
- **Error contradictions** - All error messages now internally consistent
|
|
- **Path validation** - Prevents invalid characters and security issues
|
|
|
|
## 📊 Statistics
|
|
|
|
- **New Files:** 8 (utilities, tests, mocks, docs)
|
|
- **Modified Files:** 5 (tool implementations, package.json, manifest)
|
|
- **Lines Added:** ~2,500+
|
|
- **Test Coverage:** 43 tests, 100% PathUtils coverage
|
|
- **Documentation:** 1,000+ lines of new documentation
|
|
|
|
## 🚀 Upgrade Instructions
|
|
|
|
### For Users
|
|
|
|
1. **Backup settings** (optional, but recommended)
|
|
2. **Update plugin files** to v1.1.0
|
|
3. **Restart Obsidian** or reload the plugin
|
|
4. **No configuration changes needed** - fully backward compatible
|
|
|
|
### For Developers
|
|
|
|
1. **Install new dev dependencies:**
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
2. **Run tests:**
|
|
```bash
|
|
npm test
|
|
```
|
|
|
|
3. **Build:**
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
## ⚠️ Breaking Changes
|
|
|
|
**None** - Version 1.1.0 is fully backward compatible with v1.0.0.
|
|
|
|
All existing integrations will continue to work without modification. The improvements are additive and enhance the existing functionality.
|
|
|
|
## 📈 Roadmap Progress
|
|
|
|
### Completed ✅
|
|
- **Phase 1.1** - Path Normalization & Error Handling (100%)
|
|
- Path utilities ✅
|
|
- Enhanced error messages ✅
|
|
- Tool implementation updates ✅
|
|
- Testing infrastructure ✅
|
|
|
|
### Next Up 🔜
|
|
- **Phase 1.5** - Enhanced Authentication & Security
|
|
- Secure API key management
|
|
- Multiple API keys with labels
|
|
- Key expiration and rotation
|
|
- Rate limiting
|
|
- Audit logging
|
|
|
|
- **Phase 2** - API Unification & Typed Results
|
|
- Standardize parameter naming
|
|
- Structured, typed responses
|
|
- Better consistency
|
|
|
|
## 🎓 Learning Resources
|
|
|
|
### New Documentation
|
|
- Read `docs/TOOL_SELECTION_GUIDE.md` for comprehensive tool usage guide
|
|
- Check `docs/ERROR_MESSAGE_IMPROVEMENTS.md` for error message details
|
|
- See `tests/README.md` for testing setup and guidelines
|
|
|
|
### Quick Reference
|
|
```
|
|
┌─────────────────────────────────────────────────────────┐
|
|
│ OBSIDIAN MCP TOOL QUICK REFERENCE │
|
|
├─────────────────────────────────────────────────────────┤
|
|
│ List folder: list_notes("folder") │
|
|
│ Read file: read_note("folder/file.md") │
|
|
│ Create file: create_note("path.md", "content") │
|
|
│ Update file: update_note("path.md", "new content") │
|
|
│ Delete file: delete_note("path.md") │
|
|
│ Search: search_notes("query") │
|
|
│ Vault info: get_vault_info() │
|
|
├─────────────────────────────────────────────────────────┤
|
|
│ ✓ Paths are vault-relative (no leading /) │
|
|
│ ✓ Use forward slashes: folder/file.md │
|
|
│ ✓ Case-sensitive on macOS/Linux │
|
|
│ ✓ Include file extensions: .md, .png, etc. │
|
|
└─────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
## 💡 Tips for AI Agents
|
|
|
|
If you're an AI agent using this plugin:
|
|
|
|
1. **Always use `list_notes()` first** when unsure about paths
|
|
2. **Read before updating** - Use `read_note()` then `update_note()` for partial changes
|
|
3. **Verify parent folders** - Use `list_notes()` to check folders exist before creating files
|
|
4. **Pay attention to error messages** - They include specific troubleshooting steps
|
|
5. **Use vault-relative paths** - No leading slashes, include file extensions
|
|
|
|
## 🙏 Acknowledgments
|
|
|
|
Thanks to all testers and users who provided feedback that shaped these improvements!
|
|
|
|
## 📞 Support
|
|
|
|
- **Documentation:** See README.md and docs/ folder
|
|
- **Issues:** Report bugs with version number (1.1.0)
|
|
- **Questions:** Check TOOL_SELECTION_GUIDE.md first
|
|
|
|
---
|
|
|
|
**Full Changelog:** See [CHANGELOG.md](CHANGELOG.md) for complete details.
|