mirror of
https://github.com/czlonkowski/n8n-mcp.git
synced 2026-01-30 06:22:04 +00:00
## Summary Enhanced telemetry system to capture actual error messages for debugging while implementing comprehensive security hardening to protect sensitive data. ## Changes - Added optional errorMessage parameter to trackError() method - Implemented sanitizeErrorMessage() with 7-layer security protection - Updated all production and test call sites (atomic change) - Added 18 new security-focused tests ## Security Fixes - ReDoS Prevention: Early truncation + simplified regex patterns - Full URL Redaction: Changed [URL]/path → [URL] to prevent leakage - Credential Detection: AWS keys, GitHub tokens, JWT, Bearer tokens - Correct Sanitization Order: URLs → credentials → emails → generic - Error Handling: Try-catch wrapper with [SANITIZATION_FAILED] fallback ## Impact - Resolves 272+ weekly errors with no error messages - Protects against ReDoS attacks - Prevents API structure and credential leakage - 90.75% test coverage, 269 tests passing 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
509 lines
24 KiB
Markdown
509 lines
24 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [2.15.3] - 2025-10-03
|
|
|
|
### Added
|
|
- **Error Message Capture in Telemetry** - Enhanced telemetry tracking to capture actual error messages for better debugging
|
|
- Added optional `errorMessage` parameter to `trackError()` method
|
|
- Comprehensive error message sanitization to protect sensitive data
|
|
- Updated all production and test call sites to pass error messages
|
|
- Error messages now stored in telemetry events table for analysis
|
|
|
|
### Security
|
|
- **Enhanced Error Message Sanitization** - Comprehensive security hardening for telemetry data
|
|
- **ReDoS Prevention**: Early truncation to 1500 chars before regex processing
|
|
- **Full URL Redaction**: Changed from `[URL]/path` to `[URL]` to prevent API structure leakage
|
|
- **Correct Sanitization Order**: URLs → specific credentials → emails → generic patterns
|
|
- **Credential Pattern Detection**: Added AWS keys, GitHub tokens, JWT, Bearer tokens
|
|
- **Error Handling**: Try-catch wrapper with `[SANITIZATION_FAILED]` fallback
|
|
- **Stack Trace Truncation**: Limited to first 3 lines to reduce attack surface
|
|
|
|
### Fixed
|
|
- **Missing Error Messages**: Resolved issue where 272+ weekly validation errors had no error messages captured
|
|
- **Data Leakage**: Fixed URL path preservation exposing API versions and user IDs
|
|
- **Email Exposure**: Fixed sanitization order allowing emails in URLs to leak
|
|
- **ReDoS Vulnerability**: Removed complex capturing regex patterns that could cause performance issues
|
|
|
|
### Changed
|
|
- **Breaking Change**: `trackError()` signature updated with 4th parameter `errorMessage?: string`
|
|
- All internal call sites updated in single commit (atomic change)
|
|
- Not backwards compatible but acceptable as all code is internal
|
|
|
|
### Technical Details
|
|
- **Sanitization Patterns**:
|
|
- AWS Keys: `AKIA[A-Z0-9]{16}` → `[AWS_KEY]`
|
|
- GitHub Tokens: `ghp_[a-zA-Z0-9]{36,}` → `[GITHUB_TOKEN]`
|
|
- JWT: `eyJ[a-zA-Z0-9_-]+\.eyJ[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+` → `[JWT]`
|
|
- Bearer Tokens: `Bearer [^\s]+` → `Bearer [TOKEN]`
|
|
- Emails: `[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}` → `[EMAIL]`
|
|
- Long Keys: `\b[a-zA-Z0-9_-]{32,}\b` → `[KEY]`
|
|
- Generic Credentials: `password/api_key/token=<value>` → `<field>=[REDACTED]`
|
|
|
|
### Test Coverage
|
|
- Added 18 new security-focused tests
|
|
- Total telemetry tests: 269 passing
|
|
- Coverage: 90.75% for telemetry module
|
|
- All security patterns validated with edge cases
|
|
|
|
### Performance
|
|
- Early truncation prevents ReDoS attacks
|
|
- Simplified regex patterns (no complex capturing groups)
|
|
- Sanitization adds <1ms overhead per error
|
|
- Final message truncated to 500 chars max
|
|
|
|
### Impact
|
|
- **Debugging**: Error messages now available for root cause analysis
|
|
- **Security**: Comprehensive protection against credential leakage
|
|
- **Performance**: Protected against ReDoS attacks
|
|
- **Reliability**: Try-catch ensures sanitization never breaks telemetry
|
|
|
|
## [2.15.2] - 2025-10-03
|
|
|
|
### Fixed
|
|
- **Template Search Performance & Reliability** - Enhanced `search_templates_by_metadata` with production-ready improvements
|
|
- **Ordering Stability**: Implemented CTE with VALUES clause to preserve exact Phase 1 ordering
|
|
- Prevents ordering discrepancies between ID selection and data fetch phases
|
|
- Ensures deterministic results across query phases
|
|
- **Defensive ID Validation**: Added type safety filters before Phase 2 query
|
|
- Validates only positive integers are used in the CTE
|
|
- Logs warnings for filtered invalid IDs
|
|
- **Performance Monitoring**: Added detailed timing metrics (phase1Ms, phase2Ms, totalMs)
|
|
- Enables quantifying optimization benefits
|
|
- Debug logging for all search operations
|
|
- **DRY Refactoring**: Extracted `buildMetadataFilterConditions` helper method
|
|
- Eliminates duplication between `searchTemplatesByMetadata` and `getMetadataSearchCount`
|
|
- Centralized filter-building logic
|
|
|
|
### Added
|
|
- **Comprehensive Test Coverage** - 31 new unit tests achieving 100% coverage for changed code
|
|
- `buildMetadataFilterConditions` - All filter combinations (11 tests)
|
|
- Performance logging validation (3 tests)
|
|
- ID filtering edge cases - negative, zero, non-integer, null (7 tests)
|
|
- `getMetadataSearchCount` - Shared helper usage (7 tests)
|
|
- Two-phase query optimization verification (3 tests)
|
|
- Fixed flaky integration tests with deterministic ordering using unique view counts
|
|
|
|
### Performance
|
|
- Query optimization maintains sub-1ms Phase 1 performance
|
|
- Two-phase approach prevents timeout on large template sets
|
|
- CTE-based ordering adds negligible overhead (<1ms)
|
|
|
|
### Test Results
|
|
- Unit tests: 31 new tests, all passing
|
|
- Integration tests: 36 passing, 1 skipped
|
|
- **Coverage**: 100% for changed code (previously 36.58% patch coverage)
|
|
|
|
## [2.15.0] - 2025-10-02
|
|
|
|
### 🚀 Major Features
|
|
|
|
#### P0-R3: Pre-extracted Template Configurations
|
|
- **Template-Based Configuration System** - 2,646 real-world node configurations from popular templates
|
|
- Pre-extracted node configurations from all workflow templates
|
|
- Ranked by template popularity (views)
|
|
- Includes metadata: complexity, use cases, credentials, expressions
|
|
- Query performance: <1ms (vs 30-60ms with previous system)
|
|
- Database size increase: ~513 KB for 2,000+ configurations
|
|
|
|
### Breaking Changes
|
|
|
|
#### Removed: `get_node_for_task` Tool
|
|
- **Reason**: Only 31 hardcoded tasks, 28% failure rate in production
|
|
- **Replacement**: Template-based examples with 2,646 real configurations
|
|
|
|
#### Migration Guide
|
|
|
|
**Before (v2.14.7):**
|
|
```javascript
|
|
// Get configuration for a task
|
|
get_node_for_task({ task: "receive_webhook" })
|
|
```
|
|
|
|
**After (v2.15.0):**
|
|
```javascript
|
|
// Option 1: Search nodes with examples
|
|
search_nodes({
|
|
query: "webhook",
|
|
includeExamples: true
|
|
})
|
|
// Returns: Top 2 real template configs per node
|
|
|
|
// Option 2: Get node essentials with examples
|
|
get_node_essentials({
|
|
nodeType: "nodes-base.webhook",
|
|
includeExamples: true
|
|
})
|
|
// Returns: Top 3 real template configs with full metadata
|
|
```
|
|
|
|
### Added
|
|
|
|
- **Enhanced `search_nodes` Tool**
|
|
- New parameter: `includeExamples` (boolean, default: false)
|
|
- Returns top 2 real-world configurations per node from popular templates
|
|
- Includes: configuration, template name, view count
|
|
|
|
- **Enhanced `get_node_essentials` Tool**
|
|
- New parameter: `includeExamples` (boolean, default: false)
|
|
- Returns top 3 real-world configurations with full metadata
|
|
- Includes: configuration, source template, complexity, use cases, credentials info
|
|
|
|
- **Database Schema**
|
|
- New table: `template_node_configs` - Pre-extracted node configurations
|
|
- New view: `ranked_node_configs` - Easy access to top 5 configs per node
|
|
- Optimized indexes for fast queries (<1ms)
|
|
|
|
- **Template Processing**
|
|
- Automatic config extraction during `npm run fetch:templates`
|
|
- Standalone extraction mode: `npm run fetch:templates:extract`
|
|
- Expression detection ({{...}}, $json, $node)
|
|
- Complexity analysis and use case extraction
|
|
- Ranking by template popularity
|
|
- Auto-creates `template_node_configs` table if missing
|
|
|
|
- **Comprehensive Test Suite**
|
|
- 85+ tests covering all aspects of template configuration system
|
|
- Integration tests for database operations and end-to-end workflows
|
|
- Unit tests for tool parameters, extraction logic, and ranking algorithm
|
|
- Fixtures for consistent test data across test suites
|
|
- Test documentation in P0-R3-TEST-PLAN.md
|
|
|
|
### Removed
|
|
|
|
- Tool: `get_node_for_task` (see Breaking Changes above)
|
|
- Tool documentation: `get-node-for-task.ts`
|
|
|
|
### Fixed
|
|
|
|
- **`search_nodes` includeExamples Support**
|
|
- Fixed `includeExamples` parameter not working due to missing FTS5 table
|
|
- Added example support to `searchNodesLIKE` fallback method
|
|
- Now returns template-based examples in all search scenarios
|
|
- Affects 100% of search_nodes calls (database lacks nodes_fts table)
|
|
|
|
### Deprecated
|
|
|
|
- `TaskTemplates` service marked for removal in v2.16.0
|
|
- `list_tasks` tool marked for deprecation (use template search instead)
|
|
|
|
### Performance
|
|
|
|
- Query time: <1ms for pre-extracted configs (vs 30-60ms for on-demand generation)
|
|
- 30-60x faster configuration lookups
|
|
- 85x more configuration examples (2,646 vs 31)
|
|
|
|
## [2.14.7] - 2025-10-02
|
|
|
|
### Fixed
|
|
- **Issue #248: Settings Validation Error** - Fixed "settings must NOT have additional properties" API errors
|
|
- Added `callerPolicy` property to `workflowSettingsSchema` to support valid n8n workflow setting
|
|
- Implemented whitelist-based settings filtering in `cleanWorkflowForUpdate()` to prevent API errors
|
|
- Filter removes UI-only properties (e.g., `timeSavedPerExecution`) that cause validation failures
|
|
- Only whitelisted properties are sent to n8n API: `executionOrder`, `timezone`, `saveDataErrorExecution`, `saveDataSuccessExecution`, `saveManualExecutions`, `saveExecutionProgress`, `executionTimeout`, `errorWorkflow`, `callerPolicy`
|
|
- Resolves workflow update failures caused by workflows fetched from n8n containing non-standard properties
|
|
- Added 6 comprehensive unit tests covering settings filtering scenarios
|
|
|
|
- **Issue #249: Misleading AddConnection Error Messages** - Enhanced parameter validation with helpful error messages
|
|
- Detect common parameter mistakes: using `sourceNodeId`/`targetNodeId` instead of correct `source`/`target`
|
|
- Improved error messages include:
|
|
- Identification of wrong parameter names with correction guidance
|
|
- Examples of correct usage
|
|
- List of available nodes when source/target not found
|
|
- Error messages now actionable instead of cryptic (was: "Source node not found: undefined")
|
|
- Added 8 comprehensive unit tests for parameter validation scenarios
|
|
|
|
- **P0-R1: Universal Node Type Normalization** - Eliminates 80% of validation errors
|
|
- Implemented `NodeTypeNormalizer` utility for consistent node type handling
|
|
- Automatically converts short forms to full forms (e.g., `nodes-base.webhook` → `n8n-nodes-base.webhook`)
|
|
- Applied normalization across all workflow validation entry points
|
|
- Updated workflow validator, handlers, and repository for universal normalization
|
|
- Fixed test expectations to match normalized node type format
|
|
- Resolves the single largest source of validation errors in production
|
|
|
|
### Added
|
|
- `NodeTypeNormalizer` utility class for universal node type normalization
|
|
- `normalizeToFullForm()` - Convert any node type variation to canonical form
|
|
- `normalizeWithDetails()` - Get normalization result with metadata
|
|
- `normalizeWorkflowNodeTypes()` - Batch normalize all nodes in a workflow
|
|
- Settings whitelist filtering in `cleanWorkflowForUpdate()` with comprehensive null-safety
|
|
- Enhanced `validateAddConnection()` with proactive parameter validation
|
|
- 14 new unit tests for issues #248 and #249 fixes
|
|
|
|
### Changed
|
|
- Node repository now uses `NodeTypeNormalizer` for all lookups
|
|
- Workflow validation applies normalization before structure checks
|
|
- Workflow diff engine validates connection parameters before processing
|
|
- Settings filtering applied to all workflow update operations
|
|
|
|
### Performance
|
|
- No performance impact - normalization adds <1ms overhead per workflow
|
|
- Settings filtering is O(9) - negligible impact
|
|
|
|
### Test Coverage
|
|
- n8n-validation tests: 73/73 passing (100% coverage)
|
|
- workflow-diff-engine tests: 110/110 passing (89.72% coverage)
|
|
- Total: 183 tests passing
|
|
|
|
### Impact
|
|
- **Issue #248**: Eliminates ALL settings validation errors for workflows with non-standard properties
|
|
- **Issue #249**: Provides clear, actionable error messages reducing user frustration
|
|
- **P0-R1**: Reduces validation error rate by 80% (addresses 4,800+ weekly errors)
|
|
- Combined impact: Expected overall error rate reduction from 5-10% to <2%
|
|
|
|
## [2.14.6] - 2025-10-01
|
|
|
|
### Enhanced
|
|
- **Webhook Error Messages**: Replaced generic "Please try again later or contact support" messages with actionable guidance
|
|
- Error messages now extract execution ID and workflow ID from failed webhook triggers
|
|
- Guide users to use `n8n_get_execution({id: executionId, mode: 'preview'})` for efficient debugging
|
|
- Format: "Workflow {workflowId} execution {executionId} failed. Use n8n_get_execution({id: '{executionId}', mode: 'preview'}) to investigate the error."
|
|
- When no execution ID available: "Workflow failed to execute. Use n8n_list_executions to find recent executions, then n8n_get_execution with mode='preview' to investigate."
|
|
|
|
### Added
|
|
- New error formatting functions in `n8n-errors.ts`:
|
|
- `formatExecutionError()` - Creates execution-specific error messages with debugging guidance
|
|
- `formatNoExecutionError()` - Provides guidance when execution context unavailable
|
|
- Enhanced `McpToolResponse` type with optional `executionId` and `workflowId` fields
|
|
- Error handling documentation in `n8n-trigger-webhook-workflow` tool docs
|
|
- 30 new comprehensive tests for error message formatting and webhook error handling
|
|
|
|
### Changed
|
|
- `handleTriggerWebhookWorkflow` now extracts execution context from error responses
|
|
- `getUserFriendlyErrorMessage` returns actual server error messages instead of generic text
|
|
- Tool documentation type enhanced with optional `errorHandling` field
|
|
|
|
### Fixed
|
|
- Test expectations updated to match new error message format (handlers-workflow-diff.test.ts)
|
|
|
|
### Benefits
|
|
- **Fast debugging**: Preview mode executes in <50ms (vs seconds for full data)
|
|
- **Efficient**: Uses ~500 tokens (vs 50K+ tokens for full execution data)
|
|
- **Safe**: No timeout or token limit risks
|
|
- **Actionable**: Clear next steps for users to investigate failures
|
|
|
|
### Impact
|
|
- Eliminates unhelpful "contact support" messages
|
|
- Provides specific, actionable debugging guidance
|
|
- Reduces debugging time by directing users to efficient tools
|
|
- 100% backward compatible - only improves error messages
|
|
|
|
## [2.14.5] - 2025-09-30
|
|
|
|
### Added
|
|
- **Intelligent Execution Data Filtering**: Major enhancement to `n8n_get_execution` tool to handle large datasets without exceeding token limits
|
|
- **Preview Mode**: Shows data structure, counts, and size estimates without actual data (~500 tokens)
|
|
- **Summary Mode**: Returns 2 sample items per node (safe default, ~2-5K tokens)
|
|
- **Filtered Mode**: Granular control with node filtering and custom item limits
|
|
- **Full Mode**: Complete data retrieval (explicit opt-in)
|
|
- Smart recommendations based on data size (guides optimal retrieval strategy)
|
|
- Structure-only mode (`itemsLimit: 0`) to see data schema without values
|
|
- Node-specific filtering with `nodeNames` parameter
|
|
- Input data inclusion option for debugging transformations
|
|
- Automatic size estimation and token consumption guidance
|
|
|
|
### Enhanced
|
|
- `n8n_get_execution` tool with new parameters:
|
|
- `mode`: 'preview' | 'summary' | 'filtered' | 'full'
|
|
- `nodeNames`: Filter to specific nodes
|
|
- `itemsLimit`: Control items per node (0=structure, -1=unlimited, default=2)
|
|
- `includeInputData`: Include input data for debugging
|
|
- Legacy `includeData` parameter mapped to new modes for backward compatibility
|
|
- Tool documentation with comprehensive examples and best practices
|
|
- Type system with new interfaces: `ExecutionMode`, `ExecutionPreview`, `ExecutionFilterOptions`, `FilteredExecutionResponse`
|
|
|
|
### Technical Improvements
|
|
- New `ExecutionProcessor` service with intelligent filtering logic
|
|
- Smart data truncation with metadata (`hasMoreData`, `truncated` flags)
|
|
- Validation for `itemsLimit` (capped at 1000, negative values default to 2)
|
|
- Error message extraction helper for consistent error handling
|
|
- Constants-based thresholds for easy tuning (20/50/100KB limits)
|
|
- 33 comprehensive unit tests with 78% coverage
|
|
- Null-safe data access throughout
|
|
|
|
### Performance
|
|
- Preview mode: <50ms (no data, just structure)
|
|
- Summary mode: <200ms (2 items per node)
|
|
- Filtered mode: 50-500ms (depends on filters)
|
|
- Size estimation within 10-20% accuracy
|
|
|
|
### Impact
|
|
- Solves token limit issues when inspecting large workflow executions
|
|
- Enables AI agents to understand execution data without overwhelming responses
|
|
- Reduces token usage by 80-95% for large datasets (50+ items)
|
|
- Maintains 100% backward compatibility with existing integrations
|
|
- Recommended workflow: preview → recommendation → filtered/summary
|
|
|
|
### Fixed
|
|
- Preview mode bug: Fixed API data fetching logic to ensure preview mode retrieves execution data for structure analysis and recommendation generation
|
|
- Changed `fetchFullData` condition in handlers-n8n-manager.ts to include preview mode
|
|
- Preview mode now correctly returns structure, item counts, and size estimates
|
|
- Recommendations are now accurate and prevent token overflow issues
|
|
|
|
### Migration Guide
|
|
- **No breaking changes**: Existing `n8n_get_execution` calls work unchanged
|
|
- New recommended workflow:
|
|
1. Call with `mode: 'preview'` to assess data size
|
|
2. Follow `recommendation.suggestedMode` from preview
|
|
3. Use `mode: 'filtered'` with `itemsLimit` for precise control
|
|
- Legacy `includeData: true` now maps to `mode: 'summary'` (safer default)
|
|
|
|
## [2.14.4] - 2025-09-30
|
|
|
|
### Added
|
|
- **Workflow Cleanup Operations**: Two new operations for `n8n_update_partial_workflow`
|
|
- `cleanStaleConnections`: Automatically removes connections referencing non-existent nodes
|
|
- `replaceConnections`: Replace entire connections object in a single operation
|
|
- **Graceful Error Handling**: Enhanced `removeConnection` with `ignoreErrors` flag
|
|
- **Best-Effort Mode**: New `continueOnError` mode for `WorkflowDiffRequest`
|
|
- Apply valid operations even if some fail
|
|
- Returns detailed results with `applied` and `failed` operation indices
|
|
- Maintains atomic mode as default for safety
|
|
|
|
### Enhanced
|
|
- Tool documentation for workflow cleanup scenarios
|
|
- Type system with new operation interfaces
|
|
- 15 new tests covering all new features
|
|
|
|
### Impact
|
|
- Reduces broken workflow fix time from 10-15 minutes to 30 seconds
|
|
- Token efficiency: `cleanStaleConnections` is 1 operation vs 10+ manual operations
|
|
- 100% backwards compatibility maintained
|
|
|
|
## [2.14.3] - 2025-09-30
|
|
|
|
### Added
|
|
- Incremental template updates with `npm run fetch:templates:update`
|
|
- Smart filtering for new templates (5-10 min vs 30-40 min full rebuild)
|
|
- 48 new templates (2,598 → 2,646 total)
|
|
|
|
### Fixed
|
|
- Template metadata generation: Updated to `gpt-4o-mini-2025-08-07` model
|
|
- Removed unsupported `temperature` parameter from OpenAI Batch API
|
|
- Template sanitization: Added Airtable PAT and GitHub token detection
|
|
- Sanitized 24 templates removing API tokens
|
|
|
|
### Updated
|
|
- n8n: 1.112.3 → 1.113.3
|
|
- n8n-core: 1.111.0 → 1.112.1
|
|
- n8n-workflow: 1.109.0 → 1.110.0
|
|
- @n8n/n8n-nodes-langchain: 1.111.1 → 1.112.2
|
|
- Node database rebuilt with 536 nodes from n8n v1.113.3
|
|
|
|
## [2.14.2] - 2025-09-29
|
|
|
|
### Fixed
|
|
- Validation false positives for Google Drive nodes with 'fileFolder' resource
|
|
- Added node type normalization to handle both `n8n-nodes-base.` and `nodes-base.` prefixes correctly
|
|
- Fixed resource validation to properly recognize all valid resource types
|
|
- Default operations are now properly applied when not specified
|
|
- Property visibility is now correctly checked with defaults applied
|
|
- Code node validation incorrectly flagging valid n8n expressions as syntax errors
|
|
- Removed overly aggressive regex pattern `/\)\s*\)\s*{/` that flagged valid expressions
|
|
- Valid patterns like `$('NodeName').first().json` are now correctly recognized
|
|
- Function chaining and method chaining no longer trigger false positives
|
|
- Enhanced error handling in repository methods based on code review feedback
|
|
- Added try-catch blocks to `getNodePropertyDefaults` and `getDefaultOperationForResource`
|
|
- Validates data structures before accessing to prevent crashes with malformed node data
|
|
- Returns safe defaults on errors to ensure validation continues
|
|
|
|
### Added
|
|
- Comprehensive test coverage for validation fixes in `tests/unit/services/validation-fixes.test.ts`
|
|
- New repository methods for better default value handling:
|
|
- `getNodePropertyDefaults()` - retrieves default values for node properties
|
|
- `getDefaultOperationForResource()` - gets default operation for a specific resource
|
|
|
|
### Changed
|
|
- Enhanced `filterPropertiesByMode` to return both filtered properties and config with defaults applied
|
|
- Improved node type validation to accept both valid prefix formats
|
|
|
|
## [2.14.1] - 2025-09-26
|
|
|
|
### Changed
|
|
- **BREAKING**: Refactored telemetry system with major architectural improvements
|
|
- Split 636-line TelemetryManager into 7 focused modules (event-tracker, batch-processor, event-validator, rate-limiter, circuit-breaker, workflow-sanitizer, config-manager)
|
|
- Changed TelemetryManager constructor to private, use `getInstance()` method now
|
|
- Implemented lazy initialization pattern to avoid early singleton creation
|
|
|
|
### Added
|
|
- Security & Privacy enhancements for telemetry:
|
|
- Comprehensive input validation with Zod schemas
|
|
- Enhanced sanitization of sensitive data (URLs, API keys, emails)
|
|
- Expanded sensitive key detection patterns (25+ patterns)
|
|
- Row Level Security on Supabase backend
|
|
- Data deletion contact info (romuald@n8n-mcp.com)
|
|
- Performance & Reliability improvements:
|
|
- Sliding window rate limiter (100 events/minute)
|
|
- Circuit breaker pattern for network failures
|
|
- Dead letter queue for failed events
|
|
- Exponential backoff with jitter for retries
|
|
- Performance monitoring with overhead tracking (<5%)
|
|
- Memory-safe array limits in rate limiter
|
|
- Comprehensive test coverage enhancements:
|
|
- Added 662 lines of new telemetry tests
|
|
- Enhanced config-manager tests with 17 new edge cases
|
|
- Enhanced workflow-sanitizer tests with 19 new edge cases
|
|
- Improved coverage from 63% to 91% for telemetry module
|
|
- Branch coverage improved from 69% to 87%
|
|
|
|
### Fixed
|
|
- TypeScript lint errors in telemetry test files
|
|
- Corrected variable name conflicts in integration tests
|
|
- Fixed process.exit mock implementation in batch-processor tests
|
|
- Fixed tuple type annotations for workflow node positions
|
|
- Resolved MockInstance type import issues
|
|
- Test failures in CI pipeline
|
|
- Fixed test timeouts caused by improper fake timer usage
|
|
- Resolved Timer.unref() compatibility issues
|
|
- Fixed event validator filtering standalone 'key' property
|
|
- Corrected batch processor circuit breaker behavior
|
|
- TypeScript error in telemetry test preventing CI build
|
|
- Added @supabase/supabase-js to Docker builder stage and runtime dependencies
|
|
|
|
## [2.14.0] - 2025-09-26
|
|
|
|
### Added
|
|
- Anonymous telemetry system with Supabase integration to understand usage patterns
|
|
- Tracks active users with deterministic anonymous IDs
|
|
- Records MCP tool usage frequency and error rates
|
|
- Captures sanitized workflow structures on successful validation
|
|
- Monitors common error patterns for improvement insights
|
|
- Zero-configuration design with opt-out support via N8N_MCP_TELEMETRY_DISABLED environment variable
|
|
|
|
- Enhanced telemetry tracking methods:
|
|
- `trackSearchQuery` - Records search patterns and result counts
|
|
- `trackValidationDetails` - Captures validation errors and warnings
|
|
- `trackToolSequence` - Tracks AI agent tool usage sequences
|
|
- `trackNodeConfiguration` - Records common node configuration patterns
|
|
- `trackPerformanceMetric` - Monitors operation performance
|
|
|
|
- Privacy-focused workflow sanitization:
|
|
- Removes all sensitive data (URLs, API keys, credentials)
|
|
- Generates workflow hashes for deduplication
|
|
- Preserves only structural information
|
|
|
|
- Comprehensive test coverage for telemetry components (91%+ coverage)
|
|
|
|
### Fixed
|
|
- Fixed TypeErrors in `get_node_info`, `get_node_essentials`, and `get_node_documentation` tools that were affecting 50% of calls
|
|
- Added null safety checks for undefined node properties
|
|
- Fixed multi-process telemetry issues with immediate flush strategy
|
|
- Resolved RLS policy and permission issues with Supabase
|
|
|
|
### Changed
|
|
- Updated Docker configuration to include Supabase client for telemetry support
|
|
- Enhanced workflow validation tools to track validated workflows
|
|
- Improved error handling with proper null coalescing operators
|
|
|
|
### Documentation
|
|
- Added PRIVACY.md with comprehensive privacy policy
|
|
- Added telemetry configuration instructions to README
|
|
- Updated CLAUDE.md with telemetry system architecture
|
|
|
|
## Previous Versions
|
|
|
|
For changes in previous versions, please refer to the git history and release notes. |