[Mnemosyne] Memory Birth Animation System #1222

Merged
Timmy merged 2 commits from feat/mnemosyne-memory-birth into main 2026-04-11 20:23:25 +00:00
Owner

[Mnemosyne] Memory Birth Animation System

New memories shouldn't just appear — they should arrive. This PR gives crystals a materialization entrance that makes the holographic archive feel alive.

Changes

  1. nexus/components/memory-birth.js — New birth animation engine

    • Elastic scale-in: Crystals grow from 0 → full size with elastic easing over 1.8s
    • Bloom flash: Emissive intensity spikes at 30% through the birth, then fades
    • Neighbor pulse: Existing memories within 8 units brighten momentarily when a new memory is born nearby (distance-falloff)
    • Connection line grow: Connection lines fade in progressively over 1.2s
    • wrapSpatialMemory(): Auto-intercepts placeMemory() so every new crystal gets a birth animation — zero config needed
  2. app.js — Integration

    • Import MemoryBirth module
    • Initialize alongside SpatialMemory
    • Wrap placeMemory() for automatic triggering
    • Call MemoryBirth.update(delta) in the render loop

Visual Effect

t=0.0s  Crystal at scale 0, invisible
t=0.3s  Bloom flash peak — emissive 4x normal
t=0.8s  Elastic bounce overshoot (scale ~1.15)
t=1.2s  Neighboring crystals pulse in recognition
t=1.8s  Fully materialized, normal rotation begins

Design Decisions

  • Elastic ease, not linear: Gives the birth a "pop" feeling — crystals snap into existence with personality
  • Neighbor radius 8 units: Enough to reach most crystals in the same region without bleeding across the archive
  • Auto-wrapping: No changes needed to existing code that calls placeMemory() — the intercept is transparent
  • Performance: O(n) per birth for neighbor check, but births are rare events (not per-frame)
## [Mnemosyne] Memory Birth Animation System New memories shouldn't just appear — they should *arrive*. This PR gives crystals a materialization entrance that makes the holographic archive feel alive. ### Changes 1. **`nexus/components/memory-birth.js`** — New birth animation engine - **Elastic scale-in**: Crystals grow from 0 → full size with elastic easing over 1.8s - **Bloom flash**: Emissive intensity spikes at 30% through the birth, then fades - **Neighbor pulse**: Existing memories within 8 units brighten momentarily when a new memory is born nearby (distance-falloff) - **Connection line grow**: Connection lines fade in progressively over 1.2s - **`wrapSpatialMemory()`**: Auto-intercepts `placeMemory()` so every new crystal gets a birth animation — zero config needed 2. **`app.js`** — Integration - Import `MemoryBirth` module - Initialize alongside `SpatialMemory` - Wrap `placeMemory()` for automatic triggering - Call `MemoryBirth.update(delta)` in the render loop ### Visual Effect ``` t=0.0s Crystal at scale 0, invisible t=0.3s Bloom flash peak — emissive 4x normal t=0.8s Elastic bounce overshoot (scale ~1.15) t=1.2s Neighboring crystals pulse in recognition t=1.8s Fully materialized, normal rotation begins ``` ### Design Decisions - **Elastic ease, not linear**: Gives the birth a "pop" feeling — crystals snap into existence with personality - **Neighbor radius 8 units**: Enough to reach most crystals in the same region without bleeding across the archive - **Auto-wrapping**: No changes needed to existing code that calls `placeMemory()` — the intercept is transparent - **Performance**: O(n) per birth for neighbor check, but births are rare events (not per-frame)
Rockachopa added 2 commits 2026-04-11 19:49:04 +00:00
- Elastic scale-in from 0 to full size
- Bloom flash at materialization peak
- Neighbor pulse: nearby memories brighten on birth
- Connection line progressive draw-in
- Auto-wraps SpatialMemory.placeMemory() for zero-config use
feat: integrate MemoryBirth into app.js
Some checks failed
CI / test (pull_request) Failing after 10s
CI / validate (pull_request) Failing after 16s
Review Approval Gate / verify-review (pull_request) Failing after 2s
12a5a75748
- Import MemoryBirth module
- Initialize alongside SpatialMemory
- Wrap placeMemory() for automatic birth animations
- Call MemoryBirth.update() in render loop
Rockachopa requested review from perplexity 2026-04-11 19:49:05 +00:00
Timmy merged commit 3c81c64f04 into main 2026-04-11 20:23:25 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Timmy_Foundation/the-nexus#1222