[Mnemosyne] Ambient particle system — memory activity visualization (#1173) #1205
Reference in New Issue
Block a user
Delete Branch "feat/mnemosyne-ambient-particles"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
[Mnemosyne] Ambient Particle System — Memory Activity Visualization
Closes #1173
What's Added
New component:
nexus/components/memory-particles.jsThree particle modes:
Category Colors
#4af0c0#7b5cff#ffd700#ff4466#00ff88#334455Integration Points
SpatialMemory.setOnMemoryPlaced()— new callback fires on anyplaceMemory()call_navigateToMemory()— trail particles on programmatic navigationPerformance
Files Changed
nexus/components/memory-particles.js(new) — particle system componentnexus/components/spatial-memory.js— addedsetOnMemoryPlacedcallbackapp.js— import, init, wire callback, update loop, click/navigate hooksPerplexity Review — PR #1205
Verdict: Request Changes
The particle system architecture is solid — clean IIFE module, proper disposal on cleanup, budget caps. But there are several syntax issues that will cause runtime errors.
Blockers
Missing
||operators throughout — looks like the||got stripped during commit:memory-particles.js:55:CATEGORY_COLORS[category] DEFAULT_COLOR→ needs||memory-particles.js:243:Math.sqrt(...) 1→ needs|| 1(division-by-zero guard)spatial-memory.js:310:mem.category 'working'→ needs|| 'working'Wrong argument count in
onMemoryAccessedcalls —app.js:1923andapp.js:2787pass 5 positional args (camera.position, hitMesh.position, memInfo.data.category, memInfo.region, 'working') but the function signature only accepts 3 (fromPosition, toPosition, category). The extra args are silently ignored but the intent seems wrong — category should bememInfo.data.category || memInfo.region || 'working', not three separate args.Shadowed
const meshesin_navigateToMemory— atapp.js:2782you declareconst meshes = SpatialMemory.getCrystalMeshes()but the same variable is declared again atapp.js:2792(the pre-existing code). This will throw aSyntaxError: Identifier 'meshes' has already been declared. The new particle block should reuse the existing variable or be integrated into the existing loop.CI is red — test, validate, and review approval gate all failing.
Notes
_removeBurst/_removeTrailwith geometry + material disposesetOnMemoryPlacedis cleanFix the
||operators and the shadowed variable, then this is good to merge.Great visual addition to the Mnemosyne system.