Releases: jsflax/Engram
Releases · jsflax/Engram
v0.12.4
Fixed
- Label atlas crash on large graphs —
renderLabelAtlascreated textures exceeding Metal's 16384px max dimension when users had many memories with long labels (e.g. height 22774). Atlas now falls back to 1x scale when 2x would overflow, with a hard cap at 16384. - Label truncation overflow —
extractLabeltopic-prefix path could produce 50+ character labels (e.g."visualizer-3d-rendering-core: ...") when topic names were long, wasting atlas row space. Labels now intelligently budget between topic and content, capped at 30 chars total. - Atlas texture storage mode — changed from
.managedto.shared(correct for Apple Silicon unified memory)
Changed
- Sparkle signing — replaced
--deepcodesign with explicit bottom-up signing of XPC services, fixing App Management TCC prompt on macOS Ventura+
v0.12.3
Fixed
- Metal crash on minimize — MTKView continued rendering at 60fps when the window was minimized, producing zero-dimension drawables that triggered a Metal validation SIGABRT. Added dimension guards and pause/resume on minimize/deminiaturize.
- Empty embedding SIGTRAP —
remember,merge, andconsolidatesilently storedVector<Float>([])when the CoreML embedding model failed to load. Laterrecallwith a valid query vector hit a dimension mismatch in sqlite-vec, causing an uncatchable SIGTRAP in LatticeCore. These operations now fail with a clear error instead of storing empty vectors.
Improved
- Recall quality — NLTagger POS-based content-word extraction for FTS queries (drops determiners, pronouns, prepositions), staleness penalty for never-accessed memories older than 14 days, weak-recall warning when average distance > 0.07, and graph traversal now filters connected memories by semantic relevance to the query
- GPU compute edge stamping — edge cylinder geometry now stamped via Metal compute kernel, matching the existing node sphere pipeline
- Log rotation — hooks, session-learner, and maintenance logs rotate at 256KB with one
.1backup
Added
- Sidebar view — new left-side panel for graph controls and navigation
v0.12.2
Fixed
- Sparkle auto-update broken —
sparkle:version(build number) was hardcoded to1for every release, so Sparkle never offered updates. Build number now auto-increments from the previous appcast entry.
v0.12.1
Changed
- Raw Metal renderer — replaced RealityKit with a custom MTKView pipeline, eliminating 67.5% main thread blocking in
re::DrawingManager::commitFrameInternal()and 13.5% VFX lock contention fromParticleEmitterComponent - GPU procedural nebulae — fBm noise billboards rendered entirely in Metal fragment shaders, replacing RealityKit particle emitters
- Blinn-Phong lighting — sphere impostor nodes use analytical normal reconstruction with Blinn-Phong shading tuned for dark-background aesthetic
- Opaque rendering — fog baked into
base_colorin shaders instead of.transparentblending, avoiding GPU depth sorting of 55K+ triangles - Search spotlight — suppressed recall glow on non-matching nodes for cleaner visual contrast
- EngramModels library extraction — core model types (Memory, Edge, Checkpoint, HookState) moved into a separate SPM target; EngramKit re-exports via
@_exported import EngramModels - Account UI — Apple and Google Sign-In via
AuthenticationServicesandGoogleSignIn-iOS, posting identity tokens to cloud sync backend - Streaming graph load — batched node loading off main actor for faster initial render
- GraphRenderStore — bypass SwiftUI observation for 3D render data, reducing unnecessary view recomputation
- Project labels in 3D view — project name labels rendered in the 3D scene with tighter clustering
- Lattice dependency switched from local path to remote URL (
0.4.0)
Fixed
- Node flicker during force simulation convergence
- FTS5 full-text search query handling
- GPU compute label batch sizing and edge buffer synchronization
- Drive-to-project camera animation
v0.12.0
Full Changelog: v0.11.0...v0.12.0
v0.11.0
Full Changelog: v0.10.0...v0.11.0
v0.10.0
Full Changelog: v0.9.1...v0.10.0
v0.9.1
What's Changed
- Fixed session-learner infinite recursion — removing the threshold in v0.9.1 caused each learner's Stop hook to spawn another learner endlessly. Fixed with
CLAUDE_MEMORY_LEARNERenv var guard: set on spawn, checked at hook startup. - Removed session-learner threshold — the stop hook now always spawns the learner. No minimum productive tool call count required. The learner itself decides what's worth storing.
- Improved session-learner prompt — "capture what was learned" with specific categories (debugging insights, architecture decisions, patterns, gotchas). Skips only genuinely trivial sessions.
- Added
--output-format textto CLI invocation for log observability.
Install / Upgrade
curl -fsSL https://raw.githubusercontent.com/jsflax/ClaudeMemory/main/scripts/install.sh | bashFull Changelog: v0.9.0...v0.9.1
Full Changelog: v0.9.0...v0.9.1
v0.9.0
What's New
Fire-and-forget session learning
- Stop hook now spawns a detached
claudeCLI subprocess instead of blocking the conversation with a nudge — eliminates Conductor UI collision entirely - Extracts richer session signals from transcript (files edited, bash commands, error count) for more informative learner prompts
Progressive t-SNE animation (Visualizer)
- Nodes drift smoothly from force layout to semantic positions as t-SNE converges — no loading screen
- New
EmbeddingProjectiontarget/display position pipeline with 60fps frame interpolation - New
TSNEKernelwith Accelerate-backed t-SNE and frequent intermediate emissions
Other improvements
updatetool: newset_projectparameter to move memories between project scopes- Uninstall script cleans up all installed components
- Fixed Conductor UI collision by reordering session-learner nudge instructions
Install / Upgrade
curl -fsSL https://raw.githubusercontent.com/jsflax/ClaudeMemory/main/scripts/install.sh | bashFull Changelog: v0.8.2...v0.9.0
v0.8.2
Full Changelog: v0.8.1...v0.8.2