Skip to main content
Glama
11-changelog-full.md36.3 kB
## 🏷️ Version History ### v1.9.26 - 2025-11-07 **Major Feature Release**: Element Source Priority System & Critical Bug Fixes #### ✨ Features - **Element Source Priority System** (#1451-#1456) 🌟 - Intelligent element selection based on configurable source priority - Priority levels: `local` (highest) → `github` → `collection` (lowest) - User-facing API for configuration via `dollhouse_config` tool - Automatic conflict resolution for duplicate elements - Search and installation integration - Configuration persistence to `~/.dollhouse/config.yaml` #### 🐛 Bug Fixes - **Memory Content Preservation** (#1442) - Fixed data loss during YAML parsing - **VerbTriggerManager Critical Bugs** (#1443) - Fixed verb trigger extraction reliability - **OAuth Terminal Error Propagation** (#1444) - RFC 6749/8628 compliance for device flow - **GitHubAuthManager Test Mocks** (#1459) - Fixed 8 test failures from incomplete mocks #### 🔧 Technical - jsdom rollback to 27.0.0 for stability (#1458) - SonarCloud badges restored to README chunk file #### 📦 Dependencies - @modelcontextprotocol/sdk 1.20.2 → 1.21.0 - posthog-node 5.10.3 → 5.11.0 - @types/archiver 6.0.4 → 7.0.0 - @types/node 24.9.1 → 24.10.0 --- ### v1.9.25 - 2025-10-30 **Major Feature Release**: Auto-Load Baseline Memories & Production Stability #### ✨ Features - **Auto-Load Baseline Memories** (#1430, #1431) 🌟 - Self-aware DollhouseMCP: Server loads baseline knowledge automatically on startup - Eliminates 20-40k token searches - now instant with zero search - Users can mark ANY memory for auto-load via `autoLoad: true` metadata flag - Priority-based loading system with configurable token budget - Includes seed memory: `dollhousemcp-baseline-knowledge.yaml` (~2500 tokens) - Configuration via `~/.dollhouse/config.yaml` - Token estimate caching (~50% performance improvement) - 3 new seed memory guides for custom auto-load memories #### 🐛 Bug Fixes (CRITICAL) - **Extended Node Compatibility CI Failures** (#1432-#1434) - Fixed ALL 6 platforms (Ubuntu/macOS/Windows × Node 20.x/22.x) - Root cause: JSDOM/parse5 ESM race condition during Jest teardown - 19 test files broken - now ALL passing ✅ - Platform-specific memory thresholds for Windows Node 22.x - **README Badge Issues** (#1432, #1435) - Restored 6 SonarCloud quality metrics badges - Fixed Extended Node Compatibility and Docker Testing badge URLs - All badges now point to develop branch #### 🔧 Technical - LICENSE synchronization with main (763-line monolithic structure) - Jest configuration optimization with maxConcurrency: 1 - Comprehensive documentation updates --- ### v1.9.24 - 2025-10-27 **Documentation Release**: Claude Skills Compatibility & Dependency Updates #### 📖 Documentation - **Claude Skills Compatibility Section** (#1413) - Added prominent README section highlighting 100% lossless round-trip conversion - Documents bidirectional conversion between DollhouseMCP Skills and Claude Skills - Includes skill-converter usage for CLI-enabled LLMs (Claude Code, Cursor, Gemini Code Assist) - Complete metadata, validation, and structure preservation in both directions - **Merge Strategy Documentation** - Documented squash vs. regular merge strategy in `docs/development/PR_BEST_PRACTICES.md` - Feature → develop: SQUASH merge (clean history) - Develop → main: REGULAR merge (preserves commits) #### 🔄 Dependency Updates - `@modelcontextprotocol/sdk` 1.20.1 → 1.20.2 - `posthog-node` 5.10.0 → 5.10.3 - `jsdom` 27.0.0 → 27.0.1 (dev) - `@types/node` 24.8.1 → 24.9.1 (dev) - `@modelcontextprotocol/inspector` 0.17.1 → 0.17.2 (dev) --- ### v1.9.23 - 2025-10-26 **Feature Release**: Bidirectional Skills Converter #### ✨ Features - **Bidirectional Skills Converter** (#1400, #1401) - Lossless conversion between DollhouseMCP Skills and Claude Skills - CLI: `dollhouse convert from-anthropic` / `to-anthropic` - Automatic format detection and metadata enrichment - 100% fidelity roundtrip conversion - Comprehensive documentation in `docs/guides/SKILLS_CONVERTER.md` - **DollhouseMCP Primacy Messaging** - README section establishing timeline (July 2025 vs October 2025) - Positions DollhouseMCP as superset with 6 element types - Professional framing for legal review #### Technical Details - 13 converter tests passing - Security: ZIP size limits, bomb detection, Unicode normalization - Components: SchemaMapper, ContentExtractor, bidirectional converters - Performance: Sub-second for small skills, scales to large multi-MB skills --- ### v1.9.21 - 2025-10-23 **Patch Release**: Memory validation system activation and element formatting #### ✨ Features - **Element file formatter script** (#1388, fixes #1387) - New `scripts/fix-element-formatting.ts` to reformat blob content elements - Fixes element files stored as single-line blobs (unreadable in editors) - Intelligently adds newlines before/after markdown headers - Formats code blocks and YAML structures properly - Dry-run mode for safe testing - Average line length detection (>200 chars triggers formatting) #### 🔧 Fixed - **Background memory validation startup** (#1389) - BackgroundValidator service now starts automatically on server initialization - Memory entries with UNTRUSTED status will be automatically validated every 5 minutes - Trust levels are now properly updated (VALIDATED, FLAGGED, QUARANTINED) - Validation runs server-side with zero token cost #### 🔄 Changed - **README version history optimization** - Limited version history in README to 1.9.x releases only (21 versions instead of 35) - Reduced README size from ~75KB to ~61KB for better readability - Complete history remains in CHANGELOG.md (source of truth) - Updated `generate-version-history.js` minVersion from 1.6.0 to 1.9.0 - **Added missing v1.9.20 changelog entry to README** - Previous README was missing the v1.9.20 MCP Registry Publishing Fix #### Context The BackgroundValidator service was fully implemented in Issue #1314 (Phase 1: Background validation for memory security) but was never activated. The `backgroundValidator.start()` method was missing from server initialization, causing all memories to remain UNTRUSTED indefinitely. This patch release adds proper lifecycle management: - Import backgroundValidator singleton in server initialization - Start validation service after resource handlers are set up - Stop service during server cleanup #### Impact - Memory security architecture is now fully operational - UNTRUSTED memories will be automatically validated - Trust level updates work correctly - No performance impact (runs in background outside LLM context) --- ### v1.9.20 - 2025-10-17 **Fix Release**: MCP Registry Publishing Compatibility #### 🔧 Fixed - MCP Registry publishing case sensitivity issue (#XXXX) - Corrected `mcpName` field in package.json to match GitHub organization capitalization - Changed from `io.github.dollhousemcp/mcp-server` to `io.github.DollhouseMCP/mcp-server` - Resolves NPM package validation errors when publishing to MCP Registry - Ensures proper namespace permission matching #### Context The MCP Registry performs two case-sensitive validations: 1. Permission check against GitHub org name (`io.github.DollhouseMCP/*`) 2. NPM package validation against `mcpName` field in package.json The initial implementation incorrectly used lowercase for `mcpName`, causing a validation mismatch. This patch release corrects the capitalization to match our GitHub organization name. --- ### v1.9.19 - 2025-10-17 **Comprehensive Release**: 90 commits including security fixes, PostHog telemetry, MCP registry support, and major cleanup #### ✨ Features - MCP registry publishing workflow with OIDC authentication (#1367) - Automated publishing to registry.modelcontextprotocol.io - GitHub Actions workflow with manual dry-run mode - Comprehensive test suite for workflow validation (50+ tests) - Pinned mcp-publisher CLI to v1.3.3 for reproducibility - PostHog remote telemetry integration (#1357, #1361) - Opt-in remote analytics with DOLLHOUSE_TELEMETRY_OPTIN=true - Usage patterns and error tracking - Privacy-focused with explicit consent - MCP Resources support for capability index (#1360) - Future-proof architecture (disabled by default) - Ready for MCP protocol evolution - Dual licensing model with commercial option (#1350) - AGPL-3.0 with platform stability commitments - Commercial licensing pathway - Minimal installation telemetry (#1359) - Operational metrics for v1.9.19 - Installation success tracking - Security telemetry tracking for blocked attacks (#1313) - Automated release issue verification system (#1249) - Orphaned issues checker for systematic cleanup (#1251) - Personal development notes directory (#1275) #### 🔒 Security - Phase 1: Background validation for memory security (#1316, #1320, #1322) - Phase 2: AES-256-GCM pattern encryption (#1323) - Fixed symlink path traversal vulnerability (#1290, #1306) - Resolve symlinks before validation - Enhanced audit logging - Comprehensive path sanitization - Fixed command injection in verify-release-issues.js (#1249) - DMCP-SEC-001: Critical vulnerability patched - PATH injection protection with absolute paths - Tightened YAML bomb detection threshold from 10:1 to 5:1 (#1305) - Fixed multiple security audit issues (3 MEDIUM/LOW severity) #### 🔧 Fixed - Missing shell: bash declarations in MCP registry workflow - OAuth device flow zero-scopes bug (using OIDC instead) - Test isolation to prevent resource contention (#1288) - GitHub rate limiter test failures (#1285) - Recognition of MERGED state in release verification (#1250) - Resolved 26+ SonarCloud code quality issues across multiple files - Import/export ordering issues - Cognitive complexity reductions - Security hotspot resolutions - Cross-platform workflow compatibility improvements - Namespace casing for MCP registry (DollhouseMCP) #### 🔄 Changed - Improved whitespace detection performance - Enhanced path traversal protection mechanisms - Skip Claude Code Review for Dependabot PRs (#1241) - Refactored CLAUDE.md into modular documentation (#1270) - Renamed docs/archive/ to docs/session-history/ (#1277) - Added node: prefix for built-in module imports - Reduced cognitive complexity in multiple modules #### Dependencies - Updated @modelcontextprotocol/sdk from 1.18.0 to 1.20.0 - Updated jest from 30.0.5 to 30.2.0 - Updated @types/node from 24.4.0 to 24.7.0 - Updated typescript from 5.9.2 to 5.9.3 - Updated multiple dev dependencies - Added PostHog SDK for telemetry #### Technical - OIDC permissions: id-token:write, contents:read - server.json included in NPM package - Docker build optimizations and multi-platform support - Auto-sync README files on develop push - Enhanced test coverage and reliability - Improved CI/CD pipeline stability --- ### v1.9.18 - 2025-10-17 **Feature Release**: PostHog remote telemetry (opt-in), MCP Resources support, and operational telemetry foundation #### ✨ Features - **PostHog Remote Telemetry Integration** (#1357, #1361) - Opt-in remote analytics - **Simple opt-in**: Set `DOLLHOUSE_TELEMETRY_OPTIN=true` to enable remote telemetry - Uses shared PostHog project for community-wide insights - Default PostHog project key embedded (safe to expose - write-only) - Backward compatible with custom `POSTHOG_API_KEY` for enterprise deployments - Multiple control levels: - `DOLLHOUSE_TELEMETRY_OPTIN=true` - Enable remote telemetry - `DOLLHOUSE_TELEMETRY_NO_REMOTE=true` - Local only, no PostHog - `DOLLHOUSE_TELEMETRY=false` - Disable all telemetry - GDPR compliant - fully opt-in by design - See [docs/privacy/OPERATIONAL_TELEMETRY.md](docs/privacy/OPERATIONAL_TELEMETRY.md) for complete privacy policy - Future incentive program planned for community contributors - **MCP Resources Support** (#1360) - Future-proof implementation of MCP Resources protocol - Three resource variants exposed: summary (~3K tokens), full (~40K tokens), and stats (JSON) - Capability index exposed as MCP resources for intelligent element discovery - **Status**: Non-functional in Claude Code (Oct 2025) - discovery only, not read - **Default**: Disabled for safety - zero overhead when not enabled - Manual attachment works in Claude Desktop and VS Code - Comprehensive user documentation at `docs/configuration/MCP_RESOURCES.md` - Research document at `docs/development/MCP_RESOURCES_SUPPORT_RESEARCH_2025-10-16.md` - Configuration options: `resources.enabled`, `resources.expose[]`, `resources.cache_ttl` - Early adopter advantage - ready when MCP clients implement full resource reading - **Operational Telemetry Foundation** (#1358, #1359) - Minimal installation tracking - Tracks single installation event on first run (version, OS, Node version, MCP client) - Local-only logging to `~/.dollhouse/telemetry.log` by default - Simple opt-out via `DOLLHOUSE_TELEMETRY=false` environment variable - Privacy-first design: no PII, no behavioral data, no user content - Anonymous UUID generated locally for installation identification - Graceful error handling (never crashes if files can't be written) - Zero performance impact when opted out #### Documentation - Added comprehensive telemetry incentive strategy guide - Updated privacy policy with PostHog opt-in details - Added session notes for telemetry implementation - Enhanced README with telemetry opt-in section #### Test Results - 2546 tests passing - Test coverage: >96% maintained - All CI checks passing across all platforms --- ### v1.9.17 - 2025-10-08 Test isolation and repository cleanup patch #### 🔧 Fixed - **Performance Test Isolation (#1288)**: Fixed flaky IndexOptimization test by isolating performance tests - Created dedicated `jest.performance.config.cjs` with 4 parallel workers - Main test suite no longer runs performance tests concurrently (prevents resource contention) - IndexOptimization test now consistently passes at 60-70ms (was failing at 926ms due to interference) - Added `test:performance` and `test:all` npm scripts - CI workflows updated with dedicated performance test step - Execution time: 18.7s with 4 workers vs 10+ minutes serial - Reduced code duplication by using filter to inherit base config patterns - **Repository Cleanup (#1287)**: Removed ignored files from Git tracking - Removed `.obsidian/` directory (4 files) and `test-results/` (3 files) from version control - Files remain available locally but no longer tracked in repository - Follows gitignore additions from PR #1276 - **Flaky Test Management (#1286)**: Skip flaky GitHubRateLimiter tests - Marked intermittent GitHub API rate limiter tests as skipped - Prevents CI failures from external API dependencies - Tests can be run manually when needed #### Chores - **Repository Organization (#1276)**: Added `.obsidian/` and `test-results/` to .gitignore - **Documentation Structure (#1277)**: Renamed docs/archive/ to docs/session-history/ - **Docker Best Practices (#1273)**: Enhanced Docker environment file documentation - **Data Directory Documentation (#1274)**: Added README to data/ directory - **Documentation Refactor (#1270)**: Improved CLAUDE.md organization and clarity #### ✨ Features - **Issue Management (#1251)**: Added orphaned issues checker for repository maintenance - **Developer Experience (#1275)**: Added dev-notes/ directory for personal documentation - **CI Improvements**: Added automated release issue verification (#1241) - **Dependabot Integration (#1241)**: Skip Claude Code Review for Dependabot PRs #### Test Results - Main suite: 2269 tests passing (performance tests excluded) - Performance suite: 62 tests passing (isolated execution) - Total: 2331 tests passing - No flaky tests remaining - CI/CD: All workflows passing across all platforms --- ### v1.9.15 - 2025-10-01 Security patch: Zero-width Unicode bypass vulnerability + SonarCloud cleanup SECURITY FIX [HIGH]: - Block zero-width Unicode characters in metadata validation (#1228, #1229) - Prevents steganography and homograph attacks CODE QUALITY: - 228+ SonarCloud issues resolved (#1220-1224) - 199 security hotspots evaluated (all safe) - Number.parseInt modernization, String.replaceAll updates All production security concerns resolved. --- ### v1.9.14 - 2025-09-30 #### 🔧 Fixed - **ElementFormatter Security Scanner False Positives (Issue #1211, PR #1212)** - Fixed SecureYamlParser ignoring `validateContent: false` option - Pre-parse security validation now properly respects validation flag - ElementFormatter now uses `validateContent: false` for all YAML parsing (5 locations) - Allows local trusted files to bypass content scanning while maintaining security for untrusted sources - Improved memory name generation: derives names from filenames instead of auto-generated IDs - Example: `sonarcloud-rules-reference` instead of `mem_1759077319164_w9m9fk56y` - **Portfolio Search File Extension Display (Issue #1213, PR #1215)** - Portfolio search now displays correct file extensions based on element type - Memories show `.yaml` extension, other elements show `.md` extension - Added `getFileExtension()` public method to PortfolioManager - Fixed hardcoded `.md` extension in search result formatting - No breaking changes, display-only fix #### Code Quality - Fixed SonarCloud issues in Docker test files: - S7018: Sorted apt packages alphabetically in Dockerfile.test-enhanced - S7031: Merged consecutive RUN instructions in Dockerfile.test-enhanced - S7772: Added `node:` prefix for built-in module imports (4 occurrences) - S2486: Added proper error logging for JSON parse exceptions - S7780: Used String.raw for grep regex patterns (2 occurrences) - Added comprehensive test coverage for portfolio search file extensions - 2,277 tests passing with >96% coverage #### Documentation - Added SESSION_NOTES_2025-09-30-AFTERNOON-PR1215-SONARCLOUD-PROCEDURE.md - Added SONARCLOUD_QUERY_PROCEDURE.md - Critical guide for querying SonarCloud correctly - Updated CLAUDE.md with naming conventions and style guide for session notes and memories --- ### v1.9.13 - 2025-09-29 #### 🔧 Fixed - **Memory System Critical Fixes (Issue #1206, PR #1207)** - Fixed security scanner false positives preventing legitimate security documentation from loading - Memory files with security terms (vulnerability, exploit, attack) now load correctly - Local memory files are now pre-trusted (validateContent: false) - Added visible error reporting for failed memory loads - Users now see "Failed to load X memories" with detailed error messages - New getLoadStatus() diagnostic method for troubleshooting - New legacy memory migration tool (migrate-legacy-memories.ts) - Migrates old .md files to .yaml format in date-organized folders - Safe archiving of original files, dry-run mode by default #### ✨ Features - **CLI Utility**: migrate-legacy-memories.ts for legacy file migration - **Diagnostic Method**: getLoadStatus() for memory loading diagnostics - **Error Tracking**: failedLoads tracking in MemoryManager #### Code Quality - Fixed SonarCloud S3776: Reduced cognitive complexity in getLoadStatus() - Fixed SonarCloud S3358: Replaced nested ternary with if-else chain - Fixed SonarCloud S7785: Use top-level await instead of promise chain - Extracted handleLoadFailure() to eliminate code duplication - Use os.homedir() for cross-platform reliability #### 🔒 Security - Fixed DMCP-SEC-004: Added Unicode normalization to CLI input validation --- ### v1.9.12 - 2025-09-29 #### 🔧 Fixed - **Memory System Critical Fixes** - Fixed PortfolioIndexManager overwriting memory metadata during indexing (Issue #1196, PR #1197) - Memory descriptions now properly preserved instead of being replaced with "Memory element" - Fixed memory portfolio index test isolation (Issue #1194, PR #1195) - Tests now use temporary directories instead of contaminating real user portfolio - Added security validation for memory YAML parsing (size limits, type checking) - **Code Quality** - Fixed SonarCloud S7781: Use String#replaceAll() for modern string replacement (PR #1195) - Fixed SonarCloud S1135: Removed TODO comments, documented test isolation patterns (PR #1195) - Added ElementFormatter tool for cleaning malformed elements (Issue #1190, PR #1193) #### 🔒 Security - Added content size validation (1MB limit) for memory YAML parsing - Added type safety validation for parsed memory content - Documented security trade-offs with audit suppressions #### Test Coverage - Memory portfolio index tests: 8/8 passing (was 3/8) - All tests properly isolated from user portfolio state - No regressions introduced (2260+ tests passing) #### Closed Issues - #1196 - Memory metadata preservation - #1194 - Test isolation - #1190 - ElementFormatter tool - #659 - Tool execution timeout (verified fixed in earlier release) - #404 - Element system MCP exposure (verified fixed in earlier release) - #919 - Duplicate tool names (verified fixed in earlier release) --- ### v1.9.11 - 2025-09-28 #### 🔧 Fixed - **SonarCloud Quality Improvements** - Resolved S1143 violation: unsafe throw in finally block (PR #1162) - Fixed async constructor pattern in GitHubRateLimiter (PR #1161) - Addressed remaining test file reliability issues (PR #1158) - Removed SonarCloud analysis artifacts from tracking (PR #1157) - Fixed remaining source file bugs (PR #1156) - Resolved regex precedence and ReDoS vulnerabilities (PR #1155) - Fixed control character literal usage (PR #1154) - Fixed unsafe throw in finally blocks (PR #1153) - Removed hardcoded token from validation script (PR #1152) #### 🔒 Security - Fixed command injection vulnerabilities in GitHub Actions workflows (Issue #1149) - Resolved ReDoS vulnerabilities in RelationshipManager by replacing regex with string methods (Issue #1144) #### 🔄 Changed - **Test Utilities**: Extracted reusable permission test helpers for cross-platform compatibility - **Code Quality**: Achieved 82% reduction in SonarCloud reliability bugs (from 55 to 10) - **Security Posture**: All critical and high severity security issues resolved --- ### v1.9.10 - 2025-09-27 #### ✨ Features - **Enhanced Capability Index** - Major new feature for intelligent element discovery - **NLP Scoring System** (PR #1091) - Jaccard similarity and Shannon entropy scoring - Advanced sampling algorithm for performance - Extensible Enhanced Index Manager architecture - Verb-based action triggers for natural language queries - **Cross-Element Relationships** (PR #1093) - GraphRAG-style relationship mapping between elements - Automatic discovery of element dependencies and connections - **Comprehensive Trigger Extraction** - Extended to all element types - Memory elements trigger extraction (PR #1133, Issue #1124) - Skills elements trigger extraction (PR #1136, Issue #1121) - Template elements trigger extraction (PR #1137, Issue #1122) - Agent elements trigger extraction (PR #1138, Issue #1123) - Comprehensive trigger extraction documentation (PR #1135) #### 🔧 Fixed - **Enhanced Index Stability** - Fixed verb extraction with comprehensive configuration support (PR #1125) - Fixed undefined metadata handling in EnhancedIndexManager (PR #1110) - Fixed loadIndex error and Docker Hub rate limits (PR #1107) - Improved type safety in relationship parsing (PR #1106, Issue #1103) - Fixed caching issues and added error boundaries (PR #1098) - Enhanced trigger validation for Skills and Memories (PR #1140, Issue #1139) - **Test Infrastructure** - Fixed Extended Node compatibility test failures (PR #1141, Issue #1142) - Fixed CI test failures in IndexConfig and EnhancedIndexManager (PR #1115) - Fixed CI environment tests for GitHub Actions (PR #1114) - Fixed Extended Node test failures with Node 22+ (PR #1111) - Removed dangerous restore-keys from cache configuration (PR #1109) - Added test isolation to prevent file system pollution (PR #1094, #1095) - Added memory trigger tests to ESM ignore list (PR #1134) - Skip ESM-incompatible tests in CI (PR #1130) - **Code Quality** - Standardized element ID parsing logic (PR #1104, Issue #1099) - Moved magic numbers to configuration (PR #1105, Issue #1100) - Fixed broken README badge links (PR #1079) #### 🔄 Changed - **Performance**: Enhanced Index now includes batching, caching, and memory cleanup mechanisms - **Security**: Added validation for configuration changes with audit logging - **Documentation**: Added CHANGELOG_PROCESS.md and restored lost session documentation (PR #1082, #1077) #### Technical Details - The Enhanced Capability Index provides intelligent element discovery using NLP techniques - All element types now support trigger extraction for improved searchability - Comprehensive test coverage improvements and CI reliability fixes - Node 22+ compatibility fully verified and tested --- ### v1.9.9 - 2025-09-22 #### ✨ Features - **Security Utilities Module** (PR #1072) - New `src/utils/securityUtils.ts` with reusable security patterns - Prototype pollution protection functions - Safe object creation with Object.create(null) - Secure property setting with Object.defineProperty() - **Memory Auto-Repair** (PR #1070) - Automatic repair of corrupted memory timestamps during read operations - No migration needed - repairs happen transparently - Enhanced sorting operations with defensive timestamp conversions #### 🔧 Fixed - **Memory Timestamp Crashes** (PR #1070) - Fixed toISOString() errors when memory entries have string timestamps (#1069) - Added comprehensive timestamp validation with detailed error reporting - **Security Badge Link** (PR #1071, #1075) - Fixed broken security badge link in README pointing to docs/SECURITY.md - Badge now correctly points to SECURITY.md at repository root - **Prototype Pollution False Positives** (PR #1072) - Added CodeQL suppressions for false positive alerts (#202-#205) - Implemented belt-and-suspenders protection to satisfy code scanners #### 🔒 Security - Added comprehensive prototype pollution protection across ConfigManager - Proper CodeQL suppressions for validated false positives - Enhanced input validation and sanitization --- ### v1.9.8 - 2025-09-20 #### ✨ Features - **Memory Deletion Support** (PR #1043) - Full deletion functionality for memory elements - Handles date-based folder structure (YYYY-MM-DD) - Cleans up both YAML and optional .storage files - Deactivates memories before deletion - Fixes issue #1040 - **Memory Editing Support** (PR #1044) - Complete edit functionality for memory elements - Fixed file extension handling (.yaml for memories, .md for others) - Supports field updates including nested properties - Version auto-increment on edits - Fixes issue #1041 - **Memory Validation Support** (PR #1046) - Full validation functionality for memory elements - Validates metadata, retention settings, entry structure - Supports strict mode for additional quality checks - Returns detailed validation reports with errors/warnings - Fixes issue #1042 #### 🔄 Changed - **Code Organization**: Test files moved from root directory to proper test subdirectories (PR #1047) - Manual test files now in `test/manual/` - Security audit reports in `.security-audit/` - Cleaner root directory structure #### Technical Details - Memory elements now have complete CRUD + validation operations matching other element types - All memory operations properly handle the date-based folder structure - Comprehensive test coverage for all new memory operations --- ### v1.9.7 - 2025-09-20 #### 🔧 Fixed - **NPM Package Build**: Corrected v1.9.6 NPM package which was built from wrong commit - The v1.9.6 tag was created before the memory display fixes were merged - This resulted in the NPM package missing the critical memory content display fix - v1.9.7 includes all fixes that were intended for v1.9.6 - Memory elements now correctly display their content instead of "No content stored" #### Note This release republishes v1.9.6 with the correct code. The memory display fix (PR #1036) and other improvements were merged to main before the v1.9.6 release but the NPM package was accidentally built from an earlier commit. --- ### v1.9.6 - 2025-09-20 #### 🎉 First External Contribution - **Community Milestone**: This release includes improvements from our first external contributor! Special thanks to **Jeet Singh (@jeetsingh008)** for identifying performance and security improvements in PR #1035. #### 🔧 Fixed - **Memory Display Bug**: Added content getter to Memory class (PR #1036) - Fixed "No content stored" issue when displaying memory elements - Memory files were being loaded but content wasn't accessible - Added proper getter method to retrieve content from entries - Resolves issue where memories appeared empty despite having content - **Flaky macOS Tests**: Fixed ToolCache test failures on macOS with Node 22+ (PR #1038) - Addressed race condition in directory cleanup - Added retry logic for ENOTEMPTY errors during rmdir operations - Tests now consistently pass on all platforms and Node versions - Particularly affects macOS runners with Node 22.x #### Enhanced - **Performance Optimization**: Improved whitespace detection in memory file parsing (PR #1037) - Replaced regex-based whitespace detection with character code checks - Eliminates repeated regex evaluations during format detection - More efficient for large memory files - *Improvement identified by @jeetsingh008* #### 🔒 Security - **Path Validation**: Strengthened path traversal protection (PR #1037) - Enhanced validation checks both original and normalized paths - Adds validation before path normalization - Comprehensive protection against directory traversal attacks - *Security enhancement identified by @jeetsingh008* #### Attribution The performance and security improvements in this release were originally identified and proposed by **Jeet Singh (@jeetsingh008)** in PR #1035. While we implemented these changes internally for security review purposes, full credit goes to Jeet for these valuable contributions. Thank you for helping make DollhouseMCP better! 🙏 --- ### v1.9.5 - 2025-09-19 #### 🔧 Fixed - **Memory YAML Parsing**: Fixed memory files not displaying correct names for pure YAML format - Memory files saved by v1.9.3+ are pure YAML without frontmatter markers - MemoryManager.load() now detects pure YAML and wraps it for SecureYamlParser compatibility - Added proper handling for nested metadata structure (data.metadata || data) - Fixed entries loading to look in correct location (parsed.data.entries) - Added edge case handling for empty memory files - Fixes issue where v1.9.3/v1.9.4 memory files showed as "Unnamed Memory" #### Enhanced - **Test Coverage**: Added comprehensive tests for memory file format handling - Test for pure YAML files without frontmatter markers - Test for files with frontmatter (backward compatibility) - Test for empty file handling - Test for mixed formats in same directory - All 40 MemoryManager tests now passing #### Technical Details - SecureYamlParser is designed for markdown files with YAML frontmatter - Memory files are pure YAML, requiring format detection and wrapping - Solution maintains backward compatibility while fixing the core issue --- ### v1.9.4 - 2025-09-19 #### 🔧 Fixed - **Memory Name Display**: Fixed memory elements showing as "Unnamed Memory" in list output - Corrected metadata parsing to use `parsed.data` instead of `parsed.metadata` - SecureYamlParser returns YAML frontmatter in the `data` property for markdown files - Added `parseRetentionDays()` helper to handle various retention formats (permanent, perpetual, "30 days") - Memory files are correctly identified as .yaml format only (removed incorrect .md support) - Ensures `validateAndResolvePath()` only accepts .yaml and .yml extensions for consistency - Fixes PR #1030: All memory names now display correctly instead of showing "Unnamed Memory" #### Technical Details - The bug was caused by incorrect property path when parsing YAML frontmatter from SecureYamlParser - Legacy .md files in memories directory are templates/schemas, not actual memory files - All real memory files are stored as .yaml in date-based folders as designed --- ### v1.9.3 - 2025-09-19 #### 🔧 Fixed - **Memory Element MCP Support**: Added complete Memory element support to all MCP tool handlers - Fixed "Unknown element type 'memories'" errors in DollhouseMCP client - Added Memory case handling to 8 critical methods in src/index.ts: - `listElements`: Lists available memories with retention policy and tags - `activateElement`: Activates memory and shows status - `getActiveElements`: Shows active memories with their tags - `deactivateElement`: Deactivates memory elements - `getElementDetails`: Shows comprehensive memory details - `reloadElements`: Reloads memories from portfolio - `createElement`: Creates new memory instances with content - `editElement`: Supports editing memory properties - Memory infrastructure was already implemented but MCP tool handlers were missing the switch cases - Fixes user-reported issue with memories not working in v1.9.2 #### 🔧 Fixed - **Test Compatibility**: Updated GenericElementTools test to use ensembles instead of memories - Test was expecting memories to be unsupported but they are now fully functional - Changed test to use ensembles which remain unsupported for creation/editing/validation --- ### v1.9.2 - 2025-09-19 #### 🔧 Fixed - **Branch Synchronization**: Resolved divergence between main and develop branches - Synchronized documentation updates that were only in develop - Fixed security audit suppressions path to use proper location - Ensured all v1.9.0 and v1.9.1 features are properly documented #### Enhanced - **Documentation**: Updated README and CHANGELOG to accurately reflect all implemented features - **Security Audit**: Corrected suppressions file path from root to proper config location #### Technical Details - Merged 58 commits from develop that were missing from main - No actual code changes to Memory element (already fully implemented in main) - Primary changes are documentation and configuration fixes --- ### v1.9.1 - 2025-09-19 #### 🔧 Fixed - **Memory Element Support**: Fixed validation and tool descriptions for memory elements - Added 'memories' to all validation arrays in index.ts - Updated browse_collection, get_collection_content, and install_collection_content tool descriptions - Fixed switch statements to handle memory element type properly - Resolves Issue #1019 where browse_collection returned "Invalid type 'memories'" error - Memory elements can now be browsed, installed, and managed through all MCP tools #### Technical Details - Modified validation arrays at lines 2034, 5322, and 5394 in src/index.ts - Added memory case to element type switch statements - Updated all collection tool descriptions to include memory elements - Clean hotfix approach with cherry-picked commit from develop branch --- ### v1.9.0 - 2025-09-17 #### ✨ Features - **Memory Element Implementation**: Complete memory element support with advanced features - Persistent context storage across sessions - Date-based folder organization for scalability - Search indexing with content-based retrieval - Retention policies and privacy levels - Performance optimizations for large memory sets #### Enhanced - **Collection Support**: Full memory element support in collection browsing and installation - **Portfolio System**: Memory elements fully integrated with portfolio management --- For complete release history prior to v1.9.0, see the [GitHub Releases](https://github.com/DollhouseMCP/mcp-server/releases) page.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DollhouseMCP/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server