Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b446f2630e | |||
| 224567f980 | |||
| 2b31792f06 |
@@ -10,7 +10,7 @@
|
|||||||
"plugins": [
|
"plugins": [
|
||||||
{
|
{
|
||||||
"name": "claude-mem",
|
"name": "claude-mem",
|
||||||
"version": "10.2.2",
|
"version": "10.2.3",
|
||||||
"source": "./plugin",
|
"source": "./plugin",
|
||||||
"description": "Persistent memory system for Claude Code - context compression across sessions"
|
"description": "Persistent memory system for Claude Code - context compression across sessions"
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-23
@@ -2,6 +2,14 @@
|
|||||||
|
|
||||||
All notable changes to claude-mem.
|
All notable changes to claude-mem.
|
||||||
|
|
||||||
|
## [v10.2.2] - 2026-02-17
|
||||||
|
|
||||||
|
## Bug Fixes
|
||||||
|
|
||||||
|
- **Removed `node-addon-api` dev dependency** — was only needed for `sharp`, which was already removed in v10.2.1
|
||||||
|
- **Simplified native module cache clearing** in `smart-install.js` and `sync-marketplace.cjs` — replaced targeted `@img/sharp` directory deletion and lockfile removal with `bun pm cache rm`
|
||||||
|
- Reduced ~30 lines of brittle file system manipulation to a clean Bun CLI command
|
||||||
|
|
||||||
## [v10.2.1] - 2026-02-16
|
## [v10.2.1] - 2026-02-16
|
||||||
|
|
||||||
## Bug Fixes
|
## Bug Fixes
|
||||||
@@ -1400,26 +1408,3 @@ Patch release v8.2.4
|
|||||||
- Implement file-based locking mechanism for worker operations to prevent race conditions
|
- Implement file-based locking mechanism for worker operations to prevent race conditions
|
||||||
- Fix restart command references in documentation (changed from `claude-mem restart` to `npm run worker:restart`)
|
- Fix restart command references in documentation (changed from `claude-mem restart` to `npm run worker:restart`)
|
||||||
|
|
||||||
## [v8.2.2] - 2025-12-27
|
|
||||||
|
|
||||||
## What's Changed
|
|
||||||
|
|
||||||
### Features
|
|
||||||
- Add OpenRouter provider settings and documentation
|
|
||||||
- Add modal footer with save button and status indicators
|
|
||||||
- Implement self-spawn pattern for background worker execution
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
- Resolve critical error handling issues in worker lifecycle
|
|
||||||
- Handle Windows/Unix kill errors in orphaned process cleanup
|
|
||||||
- Validate spawn pid before writing PID file
|
|
||||||
- Handle process exit in waitForProcessesExit filter
|
|
||||||
- Use readiness endpoint for health checks instead of port check
|
|
||||||
- Add missing OpenRouter and Gemini settings to settingKeys array
|
|
||||||
|
|
||||||
### Other Changes
|
|
||||||
- Enhance error handling and validation in agents and routes
|
|
||||||
- Delete obsolete process management files (ProcessManager, worker-wrapper, worker-cli)
|
|
||||||
- Update hooks.json to use worker-service.cjs CLI
|
|
||||||
- Add comprehensive tests for hook constants and worker spawn functionality
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "claude-mem",
|
"name": "claude-mem",
|
||||||
"version": "10.2.2",
|
"version": "10.2.3",
|
||||||
"description": "Memory compression system for Claude Code - persist context across sessions",
|
"description": "Memory compression system for Claude Code - persist context across sessions",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"claude",
|
"claude",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "claude-mem",
|
"name": "claude-mem",
|
||||||
"version": "10.2.2",
|
"version": "10.2.3",
|
||||||
"description": "Persistent memory system for Claude Code - seamlessly preserve context across sessions",
|
"description": "Persistent memory system for Claude Code - seamlessly preserve context across sessions",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Alex Newman"
|
"name": "Alex Newman"
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "claude-mem-plugin",
|
"name": "claude-mem-plugin",
|
||||||
"version": "10.2.2",
|
"version": "10.2.3",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "Runtime dependencies for claude-mem bundled hooks",
|
"description": "Runtime dependencies for claude-mem bundled hooks",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
+311
-264
File diff suppressed because one or more lines are too long
@@ -263,14 +263,6 @@ function installDeps() {
|
|||||||
// Quote path for Windows paths with spaces
|
// Quote path for Windows paths with spaces
|
||||||
const bunCmd = IS_WINDOWS && bunPath.includes(' ') ? `"${bunPath}"` : bunPath;
|
const bunCmd = IS_WINDOWS && bunPath.includes(' ') ? `"${bunPath}"` : bunPath;
|
||||||
|
|
||||||
// Clear Bun's package cache to prevent stale native module artifacts
|
|
||||||
try {
|
|
||||||
execSync(`${bunCmd} pm cache rm`, { cwd: ROOT, stdio: 'pipe', shell: IS_WINDOWS });
|
|
||||||
console.error(' Cleared Bun package cache');
|
|
||||||
} catch {
|
|
||||||
// Cache may not exist yet on first install
|
|
||||||
}
|
|
||||||
|
|
||||||
execSync(`${bunCmd} install`, { cwd: ROOT, stdio: 'inherit', shell: IS_WINDOWS });
|
execSync(`${bunCmd} install`, { cwd: ROOT, stdio: 'inherit', shell: IS_WINDOWS });
|
||||||
|
|
||||||
// Write version marker
|
// Write version marker
|
||||||
|
|||||||
@@ -80,14 +80,6 @@ try {
|
|||||||
{ stdio: 'inherit' }
|
{ stdio: 'inherit' }
|
||||||
);
|
);
|
||||||
|
|
||||||
// Clear Bun's package cache to prevent stale native module artifacts
|
|
||||||
try {
|
|
||||||
execSync('bun pm cache rm', { cwd: INSTALLED_PATH, stdio: 'pipe' });
|
|
||||||
console.log('Cleared Bun package cache');
|
|
||||||
} catch {
|
|
||||||
// Cache may not exist yet on first install
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log('Running bun install in marketplace...');
|
console.log('Running bun install in marketplace...');
|
||||||
execSync(
|
execSync(
|
||||||
'cd ~/.claude/plugins/marketplaces/thedotmack/ && bun install',
|
'cd ~/.claude/plugins/marketplaces/thedotmack/ && bun install',
|
||||||
@@ -107,6 +99,10 @@ try {
|
|||||||
{ stdio: 'inherit' }
|
{ stdio: 'inherit' }
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Install dependencies in cache directory so worker can resolve them
|
||||||
|
console.log(`Running bun install in cache folder (version ${version})...`);
|
||||||
|
execSync(`bun install`, { cwd: CACHE_VERSION_PATH, stdio: 'inherit' });
|
||||||
|
|
||||||
console.log('\x1b[32m%s\x1b[0m', 'Sync complete!');
|
console.log('\x1b[32m%s\x1b[0m', 'Sync complete!');
|
||||||
|
|
||||||
// Trigger worker restart after file sync
|
// Trigger worker restart after file sync
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ export class ChromaSync {
|
|||||||
private collectionName: string;
|
private collectionName: string;
|
||||||
private readonly VECTOR_DB_DIR: string;
|
private readonly VECTOR_DB_DIR: string;
|
||||||
private readonly BATCH_SIZE = 100;
|
private readonly BATCH_SIZE = 100;
|
||||||
|
private modelCacheCorruptionRetried = false;
|
||||||
|
|
||||||
constructor(project: string) {
|
constructor(project: string) {
|
||||||
this.project = project;
|
this.project = project;
|
||||||
@@ -189,6 +190,10 @@ export class ChromaSync {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// Store model cache outside node_modules so reinstalls don't corrupt it
|
||||||
|
const { env } = await import('@huggingface/transformers');
|
||||||
|
env.cacheDir = path.join(os.homedir(), '.claude-mem', 'models');
|
||||||
|
|
||||||
// Use WASM backend to avoid native ONNX binary issues (#1104, #1105, #1110).
|
// Use WASM backend to avoid native ONNX binary issues (#1104, #1105, #1110).
|
||||||
// Same model (all-MiniLM-L6-v2), same embeddings, but runs in WASM —
|
// Same model (all-MiniLM-L6-v2), same embeddings, but runs in WASM —
|
||||||
// no native binary loading, no segfaults, no ENOENT errors.
|
// no native binary loading, no segfaults, no ENOENT errors.
|
||||||
@@ -204,8 +209,22 @@ export class ChromaSync {
|
|||||||
collection: this.collectionName
|
collection: this.collectionName
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
||||||
|
|
||||||
|
// Self-heal: corrupted model cache → clear and retry once
|
||||||
|
if (errorMessage.includes('Protobuf parsing failed') && !this.modelCacheCorruptionRetried) {
|
||||||
|
this.modelCacheCorruptionRetried = true;
|
||||||
|
logger.warn('CHROMA_SYNC', 'Corrupted model cache detected, clearing and retrying...');
|
||||||
|
const modelCacheDir = path.join(os.homedir(), '.claude-mem', 'models');
|
||||||
|
const fs = await import('fs');
|
||||||
|
if (fs.existsSync(modelCacheDir)) {
|
||||||
|
fs.rmSync(modelCacheDir, { recursive: true, force: true });
|
||||||
|
}
|
||||||
|
return this.ensureCollection(); // retry once
|
||||||
|
}
|
||||||
|
|
||||||
logger.error('CHROMA_SYNC', 'Failed to get/create collection', { collection: this.collectionName }, error as Error);
|
logger.error('CHROMA_SYNC', 'Failed to get/create collection', { collection: this.collectionName }, error as Error);
|
||||||
throw new Error(`Collection setup failed: ${error instanceof Error ? error.message : String(error)}`);
|
throw new Error(`Collection setup failed: ${errorMessage}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user