[Mnemosyne] Memory crystal click-to-inspect interaction #1160

Closed
opened 2026-04-10 19:35:50 +00:00 by Rockachopa · 2 comments
Owner

Goal

Enable clicking on spatial memory crystals in the 3D Nexus world to inspect their content.

Current State

  • SpatialMemory.placeMemory() creates octahedron crystals in semantic regions
  • SpatialMemory.getMemoryAtPosition(pos) exists but is never called from user interaction
  • Portal raycasting exists (L1886-1894) but does not extend to memory crystals
  • No UI exists to view memory content

Requirements

  1. Extend the existing raycaster on mousedown to detect clicks on spatial memory crystals
  2. On click, display a floating tooltip/panel showing:
    • Memory content (text)
    • Category/region label
    • Timestamp
    • Source (if available)
    • Connections to other memories
  3. Highlight the clicked crystal (emissive boost or outline)
  4. Click empty space or another crystal dismisses the previous selection
  5. Maintain portal click behavior (portals take priority if both are hit)

Files

  • app.js — raycaster setup (L1880-1910), mousedown handler
  • nexus/components/spatial-memory.jsgetMemoryAtPosition(), getRegionAtPosition()
  • index.html — may need tooltip HTML element

Success Criteria

  • Clicking a crystal shows memory details in a readable panel
  • Clicking empty space dismisses the panel
  • Portal clicking still works unchanged
  • No visual glitches or console errors
## Goal Enable clicking on spatial memory crystals in the 3D Nexus world to inspect their content. ## Current State - `SpatialMemory.placeMemory()` creates octahedron crystals in semantic regions - `SpatialMemory.getMemoryAtPosition(pos)` exists but is never called from user interaction - Portal raycasting exists (L1886-1894) but does not extend to memory crystals - No UI exists to view memory content ## Requirements 1. Extend the existing raycaster on `mousedown` to detect clicks on spatial memory crystals 2. On click, display a floating tooltip/panel showing: - Memory content (text) - Category/region label - Timestamp - Source (if available) - Connections to other memories 3. Highlight the clicked crystal (emissive boost or outline) 4. Click empty space or another crystal dismisses the previous selection 5. Maintain portal click behavior (portals take priority if both are hit) ## Files - `app.js` — raycaster setup (L1880-1910), mousedown handler - `nexus/components/spatial-memory.js` — `getMemoryAtPosition()`, `getRegionAtPosition()` - `index.html` — may need tooltip HTML element ## Success Criteria - Clicking a crystal shows memory details in a readable panel - Clicking empty space dismisses the panel - Portal clicking still works unchanged - No visual glitches or console errors
Timmy was assigned by Rockachopa 2026-04-10 19:35:50 +00:00
Author
Owner

Claiming this issue — implementing memory crystal click-to-inspect.

Claiming this issue — implementing memory crystal click-to-inspect.
Author
Owner

Implemented — PR #1161

Memory crystal click-to-inspect interaction is ready for review.

What was done:

  • spatial-memory.js: Added getCrystalMeshes(), getMemoryFromMesh(), highlightMemory(), clearHighlight(), getSelectedId()
  • app.js: Extended raycaster — portals first, then memory crystals. Clicking a crystal opens an inspection panel. Clicking empty space dismisses it.
  • index.html: Memory panel overlay with region label, content body, metadata (ID, source, time, connections)
  • style.css: Semi-transparent panel, backdrop blur, animated slide-in, connection tags

Interaction:

  1. Click a crystal → panel shows memory details + crystal brightens
  2. Click empty space → panel dismissed, highlight cleared
  3. Portal clicks still take priority

PR: #1161

## Implemented — PR #1161 Memory crystal click-to-inspect interaction is ready for review. ### What was done: - **spatial-memory.js**: Added `getCrystalMeshes()`, `getMemoryFromMesh()`, `highlightMemory()`, `clearHighlight()`, `getSelectedId()` - **app.js**: Extended raycaster — portals first, then memory crystals. Clicking a crystal opens an inspection panel. Clicking empty space dismisses it. - **index.html**: Memory panel overlay with region label, content body, metadata (ID, source, time, connections) - **style.css**: Semi-transparent panel, backdrop blur, animated slide-in, connection tags ### Interaction: 1. Click a crystal → panel shows memory details + crystal brightens 2. Click empty space → panel dismissed, highlight cleared 3. Portal clicks still take priority PR: https://forge.alexanderwhitestone.com/Timmy_Foundation/the-nexus/pulls/1161
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Timmy_Foundation/the-nexus#1160