mcp-code-context 3.4.0 โ 3.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -3
- package/CHANGELOG_v3.2.0.md +196 -196
- package/CHANGELOG_v3.3.0.md +266 -266
- package/SECURITY.md +177 -177
- package/dist/src/core/engine.d.ts +1 -1
- package/dist/src/core/engine.js +11 -1
- package/dist/src/core/engine.js.map +1 -1
- package/dist/src/core/validator.d.ts +1 -1
- package/dist/src/core/validator.js +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/operations/compress.d.ts +1 -1
- package/dist/src/operations/compress.js +1 -1
- package/dist/src/operations/confirmationStore.d.ts +1 -1
- package/dist/src/operations/confirmationStore.js +1 -1
- package/dist/src/operations/read.d.ts +1 -1
- package/dist/src/operations/read.js +1 -1
- package/dist/src/operations/write.d.ts +2 -2
- package/dist/src/operations/write.js +2 -2
- package/dist/src/parsers/base.d.ts +1 -1
- package/dist/src/parsers/base.js +1 -1
- package/dist/src/parsers/dartTreeSitter.d.ts +1 -1
- package/dist/src/parsers/dartTreeSitter.js +1 -1
- package/dist/src/parsers/php.d.ts +1 -1
- package/dist/src/parsers/php.js +1 -1
- package/dist/src/parsers/python.d.ts +1 -1
- package/dist/src/parsers/python.js +1 -1
- package/dist/src/parsers/registry.d.ts +1 -1
- package/dist/src/parsers/registry.js +1 -1
- package/dist/src/parsers/typescript.d.ts +1 -1
- package/dist/src/parsers/typescript.js +1 -1
- package/dist/src/utils/auditLogger.d.ts +1 -1
- package/dist/src/utils/auditLogger.js +1 -1
- package/dist/src/utils/backupManager.d.ts +1 -1
- package/dist/src/utils/backupManager.js +1 -1
- package/dist/src/utils/constants.d.ts +1 -1
- package/dist/src/utils/constants.js +1 -1
- package/dist/src/utils/diff.d.ts +1 -1
- package/dist/src/utils/diff.js +1 -1
- package/dist/src/utils/fileLock.d.ts +1 -1
- package/dist/src/utils/fileLock.js +1 -1
- package/dist/src/utils/rateLimiter.d.ts +1 -1
- package/dist/src/utils/rateLimiter.js +1 -1
- package/dist/src/utils/safeRegex.d.ts +1 -1
- package/dist/src/utils/safeRegex.js +1 -1
- package/dist/src/utils/streaming.d.ts +1 -1
- package/dist/src/utils/streaming.js +1 -1
- package/dist/src/utils/telemetry.d.ts +1 -1
- package/dist/src/utils/telemetry.js +1 -1
- package/llms.txt +5 -5
- package/package.json +1 -1
- package/scripts/replace-version.js +59 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## [3.4.
|
|
3
|
+
## [3.4.1] - 2026-04-24
|
|
4
4
|
|
|
5
5
|
### ๐ PRODUCTION HARDENING - Security & Infrastructure Complete
|
|
6
6
|
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
- **Security**: SecurityValidator enforced on all 13 handlers
|
|
31
31
|
- **Architecture**: Middleware pipeline (RateLimiter โ FileLock โ Execute โ AuditLog โ Telemetry)
|
|
32
32
|
- **Parsers**: Removed 300+ lines of duplicated replaceSymbol code
|
|
33
|
-
- **Version**: Synchronized all version strings to 3.4.
|
|
33
|
+
- **Version**: Synchronized all version strings to 3.4.1
|
|
34
34
|
|
|
35
35
|
### Performance
|
|
36
36
|
- Streaming I/O for files >5MB (prevents memory exhaustion)
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
- โ
All security tests passing
|
|
50
50
|
- โ
All rate limiter tests passing
|
|
51
51
|
- โ
All file lock tests passing
|
|
52
|
-
- โ
All v3.4.
|
|
52
|
+
- โ
All v3.4.1 feature tests passing
|
|
53
53
|
- โ
TypeScript: 0 compilation errors
|
|
54
54
|
- โ
Build: Clean production dist
|
|
55
55
|
|
package/CHANGELOG_v3.2.0.md
CHANGED
|
@@ -1,196 +1,196 @@
|
|
|
1
|
-
# Changelog v3.2.0 - Security & Validation Hardening
|
|
2
|
-
|
|
3
|
-
## ๐ CRITICAL Security Fixes
|
|
4
|
-
|
|
5
|
-
### Path Traversal Protection (CVE-LEVEL)
|
|
6
|
-
**Impact**: HIGH - Could allow access to files outside project boundary
|
|
7
|
-
**Fix**: Moved path traversal check AFTER `path.resolve()` normalization
|
|
8
|
-
```typescript
|
|
9
|
-
// BEFORE (vulnerable):
|
|
10
|
-
if (filePath.includes("..")) return { valid: false };
|
|
11
|
-
const resolved = path.resolve(filePath);
|
|
12
|
-
|
|
13
|
-
// AFTER (secure):
|
|
14
|
-
const resolved = path.resolve(filePath);
|
|
15
|
-
if (!resolved.startsWith(this.projectRoot)) return { valid: false };
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
### Regex Injection in renameSymbol (CVE-LEVEL)
|
|
19
|
-
**Impact**: HIGH - Could corrupt entire codebase with malicious symbol names
|
|
20
|
-
**Fix**: Sanitize all regex inputs before use
|
|
21
|
-
```typescript
|
|
22
|
-
// BEFORE (vulnerable):
|
|
23
|
-
const regex = new RegExp(`\\b${oldName}\\b`, "g");
|
|
24
|
-
|
|
25
|
-
// AFTER (secure):
|
|
26
|
-
const sanitized = oldName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
27
|
-
const regex = new RegExp(`\\b${sanitized}\\b`, "g");
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
### Syntax Validation Post-Write
|
|
31
|
-
**Impact**: CRITICAL - Prevented silent code corruption
|
|
32
|
-
**Fix**: All write operations now validate syntax before returning
|
|
33
|
-
```typescript
|
|
34
|
-
const syntaxCheck = validateSyntax(result, parser);
|
|
35
|
-
if (!syntaxCheck.valid) {
|
|
36
|
-
return { success: false, error: syntaxCheck.error };
|
|
37
|
-
}
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## โจ Major Improvements
|
|
43
|
-
|
|
44
|
-
### 1. AST-Aware insertCode
|
|
45
|
-
**Before**: Used `indexOf()` to find anchor (could match strings/comments)
|
|
46
|
-
**After**: Uses AST `node.startIndex/endIndex` for precise positioning
|
|
47
|
-
```typescript
|
|
48
|
-
// Find anchor using AST
|
|
49
|
-
const symbols = parser.findSymbols(tree);
|
|
50
|
-
const anchorNode = symbols.find(s => s.name === anchorSymbol);
|
|
51
|
-
insertIndex = anchorNode.startIndex; // Exact AST position
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### 2. Improved renameSymbol
|
|
55
|
-
- AST-based symbol location (not blind regex)
|
|
56
|
-
- Only renames in import statements (not strings/comments)
|
|
57
|
-
- Sanitized regex patterns
|
|
58
|
-
- Better error messages
|
|
59
|
-
|
|
60
|
-
### 3. Async I/O Migration
|
|
61
|
-
**Before**: `fs.readFileSync()` blocked event loop
|
|
62
|
-
**After**: `await fs.readFile()` non-blocking
|
|
63
|
-
```typescript
|
|
64
|
-
// engine.ts:60
|
|
65
|
-
const wasmBuffer = await fs.readFile(wasmPath); // Was: fs.readFileSync
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### 4. Centralized Constants
|
|
69
|
-
**Before**: Hardcoded in 5+ files
|
|
70
|
-
```typescript
|
|
71
|
-
const excludeDirs = ["node_modules", "dist", "build", ".git"];
|
|
72
|
-
```
|
|
73
|
-
**After**: Single source of truth
|
|
74
|
-
```typescript
|
|
75
|
-
import { EXCLUDE_DIRS, SUPPORTED_EXTENSIONS } from "../utils/constants.js";
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### 5. LCS-Based Diff Generation
|
|
79
|
-
**Before**: Simple line-by-line (O(n))
|
|
80
|
-
**After**: Longest Common Subsequence algorithm (O(n*m))
|
|
81
|
-
- Cleaner diffs with proper context
|
|
82
|
-
- Better readability
|
|
83
|
-
- Configurable context lines
|
|
84
|
-
|
|
85
|
-
### 6. Size Limits in compress
|
|
86
|
-
**Before**: Only file count limit (500)
|
|
87
|
-
**After**: Total size limit (50MB) + per-file check
|
|
88
|
-
```typescript
|
|
89
|
-
if (totalSize + stat.size > MAX_TOTAL_SIZE_BYTES) break;
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
## ๐งช Testing
|
|
95
|
-
|
|
96
|
-
### New Security Test Suite
|
|
97
|
-
- โ
Path traversal protection (4 tests)
|
|
98
|
-
- โ
ReDoS detection (4 patterns)
|
|
99
|
-
- โ
Regex injection protection (4 tests)
|
|
100
|
-
- โ
File size validation (2 tests)
|
|
101
|
-
|
|
102
|
-
**Coverage**: 100% on security-critical paths
|
|
103
|
-
|
|
104
|
-
### Existing Tests
|
|
105
|
-
- โ
47/47 parser tests passing
|
|
106
|
-
- โ
TypeScript, Python, PHP, Dart parsers validated
|
|
107
|
-
- โ
Symbol extraction, replacement, insertion tested
|
|
108
|
-
|
|
109
|
-
---
|
|
110
|
-
|
|
111
|
-
## ๐ Metrics Improvement
|
|
112
|
-
|
|
113
|
-
| Metric | v3.1.0 | v3.2.0 | Change |
|
|
114
|
-
|--------|--------|--------|--------|
|
|
115
|
-
| Security | 5.0/10 | 9.5/10 | +4.5 โ
|
|
|
116
|
-
| Code Quality | 6.5/10 | 8.5/10 | +2.0 โ
|
|
|
117
|
-
| Maintainability | 7.0/10 | 8.5/10 | +1.5 โ
|
|
|
118
|
-
| **Overall** | **6.2/10** | **8.8/10** | **+2.6** |
|
|
119
|
-
|
|
120
|
-
---
|
|
121
|
-
|
|
122
|
-
## ๐จ Breaking Changes
|
|
123
|
-
|
|
124
|
-
### Syntax Validation
|
|
125
|
-
All write operations now validate syntax before returning. Invalid code will be rejected:
|
|
126
|
-
```typescript
|
|
127
|
-
// This will now fail if newContent has syntax errors:
|
|
128
|
-
const result = await replaceSymbol({ symbolName, newContent, ... });
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
**Migration**: Ensure all generated code is syntactically valid before calling write operations.
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## ๐ Files Changed
|
|
136
|
-
|
|
137
|
-
### Core
|
|
138
|
-
- `src/core/validator.ts` - Path traversal fix
|
|
139
|
-
- `src/core/engine.ts` - Async I/O migration
|
|
140
|
-
|
|
141
|
-
### Operations
|
|
142
|
-
- `src/operations/write.ts` - Syntax validation, AST positioning, sanitization
|
|
143
|
-
- `src/operations/compress.ts` - Size limits
|
|
144
|
-
- `src/operations/read.ts` - Centralized constants
|
|
145
|
-
|
|
146
|
-
### Utils
|
|
147
|
-
- `src/utils/constants.ts` - NEW: Centralized configuration
|
|
148
|
-
- `src/utils/diff.ts` - NEW: LCS-based diff
|
|
149
|
-
|
|
150
|
-
### Tests
|
|
151
|
-
- `tests/test-security.ts` - NEW: Security test suite
|
|
152
|
-
|
|
153
|
-
---
|
|
154
|
-
|
|
155
|
-
## ๐ Upgrade Guide
|
|
156
|
-
|
|
157
|
-
### From v3.1.0 to v3.2.0
|
|
158
|
-
|
|
159
|
-
1. **No API changes** - Fully backward compatible
|
|
160
|
-
2. **Stricter validation** - Some previously accepted (but invalid) code will now be rejected
|
|
161
|
-
3. **Better error messages** - Syntax errors now caught before file write
|
|
162
|
-
|
|
163
|
-
### Recommended Actions
|
|
164
|
-
1. Run existing tests to ensure compatibility
|
|
165
|
-
2. Review any custom write operations for syntax validity
|
|
166
|
-
3. Update error handling to catch new validation errors
|
|
167
|
-
|
|
168
|
-
---
|
|
169
|
-
|
|
170
|
-
## ๐ฏ Next Steps (v3.3.0)
|
|
171
|
-
|
|
172
|
-
- [ ] Rate limiting for DoS protection
|
|
173
|
-
- [ ] File locking for concurrent writes
|
|
174
|
-
- [ ] Streaming for files >10MB
|
|
175
|
-
- [ ] LSP integration for advanced refactoring
|
|
176
|
-
- [ ] Telemetry and observability
|
|
177
|
-
|
|
178
|
-
---
|
|
179
|
-
|
|
180
|
-
## ๐ฅ Contributors
|
|
181
|
-
|
|
182
|
-
- Security audit and fixes
|
|
183
|
-
- Performance optimizations
|
|
184
|
-
- Test coverage improvements
|
|
185
|
-
|
|
186
|
-
---
|
|
187
|
-
|
|
188
|
-
## ๐ License
|
|
189
|
-
|
|
190
|
-
MIT
|
|
191
|
-
|
|
192
|
-
---
|
|
193
|
-
|
|
194
|
-
**Full Diff**: v3.1.0...v3.2.0
|
|
195
|
-
**Release Date**: 2026-04-24
|
|
196
|
-
**Stability**: Production-ready
|
|
1
|
+
# Changelog v3.2.0 - Security & Validation Hardening
|
|
2
|
+
|
|
3
|
+
## ๐ CRITICAL Security Fixes
|
|
4
|
+
|
|
5
|
+
### Path Traversal Protection (CVE-LEVEL)
|
|
6
|
+
**Impact**: HIGH - Could allow access to files outside project boundary
|
|
7
|
+
**Fix**: Moved path traversal check AFTER `path.resolve()` normalization
|
|
8
|
+
```typescript
|
|
9
|
+
// BEFORE (vulnerable):
|
|
10
|
+
if (filePath.includes("..")) return { valid: false };
|
|
11
|
+
const resolved = path.resolve(filePath);
|
|
12
|
+
|
|
13
|
+
// AFTER (secure):
|
|
14
|
+
const resolved = path.resolve(filePath);
|
|
15
|
+
if (!resolved.startsWith(this.projectRoot)) return { valid: false };
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Regex Injection in renameSymbol (CVE-LEVEL)
|
|
19
|
+
**Impact**: HIGH - Could corrupt entire codebase with malicious symbol names
|
|
20
|
+
**Fix**: Sanitize all regex inputs before use
|
|
21
|
+
```typescript
|
|
22
|
+
// BEFORE (vulnerable):
|
|
23
|
+
const regex = new RegExp(`\\b${oldName}\\b`, "g");
|
|
24
|
+
|
|
25
|
+
// AFTER (secure):
|
|
26
|
+
const sanitized = oldName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
27
|
+
const regex = new RegExp(`\\b${sanitized}\\b`, "g");
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Syntax Validation Post-Write
|
|
31
|
+
**Impact**: CRITICAL - Prevented silent code corruption
|
|
32
|
+
**Fix**: All write operations now validate syntax before returning
|
|
33
|
+
```typescript
|
|
34
|
+
const syntaxCheck = validateSyntax(result, parser);
|
|
35
|
+
if (!syntaxCheck.valid) {
|
|
36
|
+
return { success: false, error: syntaxCheck.error };
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## โจ Major Improvements
|
|
43
|
+
|
|
44
|
+
### 1. AST-Aware insertCode
|
|
45
|
+
**Before**: Used `indexOf()` to find anchor (could match strings/comments)
|
|
46
|
+
**After**: Uses AST `node.startIndex/endIndex` for precise positioning
|
|
47
|
+
```typescript
|
|
48
|
+
// Find anchor using AST
|
|
49
|
+
const symbols = parser.findSymbols(tree);
|
|
50
|
+
const anchorNode = symbols.find(s => s.name === anchorSymbol);
|
|
51
|
+
insertIndex = anchorNode.startIndex; // Exact AST position
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 2. Improved renameSymbol
|
|
55
|
+
- AST-based symbol location (not blind regex)
|
|
56
|
+
- Only renames in import statements (not strings/comments)
|
|
57
|
+
- Sanitized regex patterns
|
|
58
|
+
- Better error messages
|
|
59
|
+
|
|
60
|
+
### 3. Async I/O Migration
|
|
61
|
+
**Before**: `fs.readFileSync()` blocked event loop
|
|
62
|
+
**After**: `await fs.readFile()` non-blocking
|
|
63
|
+
```typescript
|
|
64
|
+
// engine.ts:60
|
|
65
|
+
const wasmBuffer = await fs.readFile(wasmPath); // Was: fs.readFileSync
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 4. Centralized Constants
|
|
69
|
+
**Before**: Hardcoded in 5+ files
|
|
70
|
+
```typescript
|
|
71
|
+
const excludeDirs = ["node_modules", "dist", "build", ".git"];
|
|
72
|
+
```
|
|
73
|
+
**After**: Single source of truth
|
|
74
|
+
```typescript
|
|
75
|
+
import { EXCLUDE_DIRS, SUPPORTED_EXTENSIONS } from "../utils/constants.js";
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 5. LCS-Based Diff Generation
|
|
79
|
+
**Before**: Simple line-by-line (O(n))
|
|
80
|
+
**After**: Longest Common Subsequence algorithm (O(n*m))
|
|
81
|
+
- Cleaner diffs with proper context
|
|
82
|
+
- Better readability
|
|
83
|
+
- Configurable context lines
|
|
84
|
+
|
|
85
|
+
### 6. Size Limits in compress
|
|
86
|
+
**Before**: Only file count limit (500)
|
|
87
|
+
**After**: Total size limit (50MB) + per-file check
|
|
88
|
+
```typescript
|
|
89
|
+
if (totalSize + stat.size > MAX_TOTAL_SIZE_BYTES) break;
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## ๐งช Testing
|
|
95
|
+
|
|
96
|
+
### New Security Test Suite
|
|
97
|
+
- โ
Path traversal protection (4 tests)
|
|
98
|
+
- โ
ReDoS detection (4 patterns)
|
|
99
|
+
- โ
Regex injection protection (4 tests)
|
|
100
|
+
- โ
File size validation (2 tests)
|
|
101
|
+
|
|
102
|
+
**Coverage**: 100% on security-critical paths
|
|
103
|
+
|
|
104
|
+
### Existing Tests
|
|
105
|
+
- โ
47/47 parser tests passing
|
|
106
|
+
- โ
TypeScript, Python, PHP, Dart parsers validated
|
|
107
|
+
- โ
Symbol extraction, replacement, insertion tested
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## ๐ Metrics Improvement
|
|
112
|
+
|
|
113
|
+
| Metric | v3.1.0 | v3.2.0 | Change |
|
|
114
|
+
|--------|--------|--------|--------|
|
|
115
|
+
| Security | 5.0/10 | 9.5/10 | +4.5 โ
|
|
|
116
|
+
| Code Quality | 6.5/10 | 8.5/10 | +2.0 โ
|
|
|
117
|
+
| Maintainability | 7.0/10 | 8.5/10 | +1.5 โ
|
|
|
118
|
+
| **Overall** | **6.2/10** | **8.8/10** | **+2.6** |
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## ๐จ Breaking Changes
|
|
123
|
+
|
|
124
|
+
### Syntax Validation
|
|
125
|
+
All write operations now validate syntax before returning. Invalid code will be rejected:
|
|
126
|
+
```typescript
|
|
127
|
+
// This will now fail if newContent has syntax errors:
|
|
128
|
+
const result = await replaceSymbol({ symbolName, newContent, ... });
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Migration**: Ensure all generated code is syntactically valid before calling write operations.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## ๐ Files Changed
|
|
136
|
+
|
|
137
|
+
### Core
|
|
138
|
+
- `src/core/validator.ts` - Path traversal fix
|
|
139
|
+
- `src/core/engine.ts` - Async I/O migration
|
|
140
|
+
|
|
141
|
+
### Operations
|
|
142
|
+
- `src/operations/write.ts` - Syntax validation, AST positioning, sanitization
|
|
143
|
+
- `src/operations/compress.ts` - Size limits
|
|
144
|
+
- `src/operations/read.ts` - Centralized constants
|
|
145
|
+
|
|
146
|
+
### Utils
|
|
147
|
+
- `src/utils/constants.ts` - NEW: Centralized configuration
|
|
148
|
+
- `src/utils/diff.ts` - NEW: LCS-based diff
|
|
149
|
+
|
|
150
|
+
### Tests
|
|
151
|
+
- `tests/test-security.ts` - NEW: Security test suite
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## ๐ Upgrade Guide
|
|
156
|
+
|
|
157
|
+
### From v3.1.0 to v3.2.0
|
|
158
|
+
|
|
159
|
+
1. **No API changes** - Fully backward compatible
|
|
160
|
+
2. **Stricter validation** - Some previously accepted (but invalid) code will now be rejected
|
|
161
|
+
3. **Better error messages** - Syntax errors now caught before file write
|
|
162
|
+
|
|
163
|
+
### Recommended Actions
|
|
164
|
+
1. Run existing tests to ensure compatibility
|
|
165
|
+
2. Review any custom write operations for syntax validity
|
|
166
|
+
3. Update error handling to catch new validation errors
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## ๐ฏ Next Steps (v3.3.0)
|
|
171
|
+
|
|
172
|
+
- [ ] Rate limiting for DoS protection
|
|
173
|
+
- [ ] File locking for concurrent writes
|
|
174
|
+
- [ ] Streaming for files >10MB
|
|
175
|
+
- [ ] LSP integration for advanced refactoring
|
|
176
|
+
- [ ] Telemetry and observability
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## ๐ฅ Contributors
|
|
181
|
+
|
|
182
|
+
- Security audit and fixes
|
|
183
|
+
- Performance optimizations
|
|
184
|
+
- Test coverage improvements
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## ๐ License
|
|
189
|
+
|
|
190
|
+
MIT
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
**Full Diff**: v3.1.0...v3.2.0
|
|
195
|
+
**Release Date**: 2026-04-24
|
|
196
|
+
**Stability**: Production-ready
|