feat: 3D terminal emulator in Batcave alcove (#269)
Some checks failed
CI / validate (pull_request) Failing after 10s
CI / auto-merge (pull_request) Has been skipped

Adds a WebGL Batcave terminal — a cave-like alcove with a console desk,
monitor frame, and canvas-texture terminal screen rendered in Three.js.

- Press [B] to fly camera to Batcave and focus the terminal
- Full keyboard capture with cursor blink and scanline CRT aesthetic
- Built-in commands: help, clear, status, agents, whoami, uptime, date,
  ls, ping, exit/quit
- Terminal input is isolated from scene key-bindings (Tab/P/sovereignty)
  while focused
- Green phosphor glow light pulses from the screen into the cave

Fixes #269

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Alexander Whitestone
2026-03-24 00:53:01 -04:00
parent 39e0eecb9e
commit debd7a26c4
3 changed files with 404 additions and 5 deletions

View File

@@ -184,6 +184,43 @@ body.photo-mode #overview-indicator {
100% { opacity: 0; transform: translate(-50%, -50%) scale(1); }
}
/* === BATCAVE TERMINAL INDICATOR === */
#batcave-indicator {
display: none;
position: fixed;
bottom: 16px;
left: 50%;
transform: translateX(-50%);
color: #00ff44;
font-family: var(--font-body);
font-size: 11px;
letter-spacing: 0.2em;
text-transform: uppercase;
pointer-events: none;
z-index: 20;
border: 1px solid #00ff44;
padding: 4px 12px;
background: rgba(0, 13, 4, 0.8);
white-space: nowrap;
animation: batcave-pulse 1.5s ease-in-out infinite;
}
#batcave-indicator.visible {
display: block;
}
.batcave-hint {
margin-left: 12px;
color: #005522;
font-size: 10px;
letter-spacing: 0.1em;
}
@keyframes batcave-pulse {
0%, 100% { opacity: 0.75; box-shadow: 0 0 6px rgba(0,255,68,0.3); }
50% { opacity: 1; box-shadow: 0 0 12px rgba(0,255,68,0.6); }
}
/* === CRT / CYBERPUNK OVERLAY === */
.crt-overlay {
position: fixed;