Rename in-app IP references and rewrite README for end users

Apply the ship/vessel and terminology rename mappings throughout the
live app (index.html, css/style.css, js/*.js) and reference docs, per
Ship_IP_Changes.md and Theme_Terminology_IP_Changes.md, including:
- Ship/theme names and generic terminology (Starfleet, LCARS, Warp
  Core, TARDIS, etc.) in both code strings and visible UI text, while
  leaving internal code identifiers (theme keys, CSS classes, preset
  IDs) untouched.
- Made "Species 8675309" canonical and fixed the dotted T.A.R.D.I.X.
  acronym on the Whataverse theme.
- Replaced the per-preset era/pulseShape franchise tag in the preset
  list with the existing safe universe category name, since those
  codes are also used functionally by the audio and observation
  engines and weren't covered by either mapping document.

Also rewrite README.md to lead with end-user ambience usage (how to
run it, universe/vessel overview, mixer channels, sleep timer,
observation mode, hotkeys) with the developer/build notes moved into
a collapsed section.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Jt872nc9Fi2WMaJhAKGyDq
This commit is contained in:
Claude
2026-09-04 21:16:11 +00:00
co-authored by Claude Sonnet 5
parent 9dc48e94d9
commit 977d348c4f
15 changed files with 1130 additions and 956 deletions
+38 -38
View File
@@ -1,6 +1,6 @@
/**
* Main Application Controller - 10 Sci-Fi Universes Architecture
* Coordinates Starfleet, Whoniverse, Industrial, Bioships, Retro Future, Military,
* Coordinates Starflight, Whataverse, Industrial, Bioships, Retro Future, Military,
* Deep Space, Outlaw, Space Stations, and Comedy universes.
*/
@@ -12,7 +12,7 @@ document.addEventListener('DOMContentLoaded', () => {
const lifeSupport = new LifeSupportSynth(audioManager);
const telemetry = new TelemetrySynth(audioManager);
const alerts = new AlertSynth(audioManager);
const whoniverseAudio = new WhoniverseAudioSynth(audioManager);
const whoniverseAudio = new WhataverseAudioSynth(audioManager);
const expandedAudio = new ExpandedSciFiAudioSynth(audioManager);
const engineTransitions = new EngineTransitionSynth(audioManager);
window.expandedAudio = expandedAudio;
@@ -141,13 +141,13 @@ document.addEventListener('DOMContentLoaded', () => {
sidebar: 'STARSHIP PRESETS',
visTitle: 'INTERMIX CASCADE',
visLabel: 'INTERMIX CHAMBER // ACTIVE',
soundboard: 'LCARS KEYPAD'
soundboard: 'LCARD KEYPAD'
},
'whoniverse': {
sidebar: 'TARDIS CONSOLES',
sidebar: 'TARDIX CONSOLES',
visTitle: 'CENTRAL TIME ROTOR COLUMN',
visLabel: 'VORTEX ROTOR // OPERATIONAL',
soundboard: 'TARDIS CONSOLE CONTROLS'
soundboard: 'TARDIX CONSOLE CONTROLS'
},
'industrial': {
sidebar: 'INDUSTRIAL FREIGHTERS',
@@ -156,7 +156,7 @@ document.addEventListener('DOMContentLoaded', () => {
soundboard: 'INDUSTRIAL INSTRUMENTATION'
},
'bioships': {
sidebar: 'SENTIENT LEVIATHANS',
sidebar: 'SENTIENT LEVIATHONS',
visTitle: 'ORGANIC BIO-HEART SAC',
visLabel: 'VASCULAR NEXUS // PULSING',
soundboard: 'NEURAL LINK SENSORS'
@@ -272,7 +272,7 @@ document.addEventListener('DOMContentLoaded', () => {
btn.innerHTML = `
<span>${preset.name}</span>
<span class="ship-era-tag">${(preset.era || 'SHIP').toUpperCase()} // ${preset.warp.pulseShape.toUpperCase()} CORE</span>
<span class="ship-era-tag">${(universe.name || 'SHIP').toUpperCase()}</span>
`;
btn.addEventListener('click', () => {
@@ -298,11 +298,11 @@ document.addEventListener('DOMContentLoaded', () => {
}
// Phase 2 audio_gaps.md rows #25-#45
if (presetId === 'bio-vorlon') expandedAudio.startVorlonSong(); // #26
if (presetId === 'bio-vorlon') expandedAudio.startVorlanSong(); // #26
if (presetId === 'bio-wraith') expandedAudio.startHullRegen(); // #28
if (presetId === 'deep-event-horizon' || presetId === 'deep-icarus-ii') expandedAudio.startHullStrainMoans(); // #30
// Phase 3 (audio_gaps.md #46-#54)
if (presetId === 'sta-babylon-5') expandedAudio.startZocaloChatter(); // #46
if (presetId === 'sta-babylon-5') expandedAudio.startZocoloChatter(); // #46
if (presetId === 'ind-nostromo') expandedAudio.startTeletypeChatter(); // #51
if (presetId === 'ret-jupiter-2') expandedAudio.startHeterodyneDrone(); // #54
if (presetId === 'deep-icarus-ii') expandedAudio.startIcarusBeacon(); // #31
@@ -351,7 +351,7 @@ document.addEventListener('DOMContentLoaded', () => {
startPresetAmbience(presetId);
if (activeUniverseId === 'whoniverse') whoniverseAudio.synthesizeDematSwitch();
else if (activeUniverseId === 'industrial') expandedAudio.synthesizeDockingClamp();
else telemetry.synthesizeLCARSSingleChirp();
else telemetry.synthesizeLCARDSingleChirp();
}
if (observationActive && typeof refreshObservation === 'function') {
@@ -412,7 +412,7 @@ document.addEventListener('DOMContentLoaded', () => {
// Acoustic chime / chirp feedback
if (activeUniverseId === 'whoniverse') whoniverseAudio.synthesizeTelepathicChime();
else if (activeUniverseId === 'bioships') expandedAudio.synthesizeStarburst();
else telemetry.synthesizeLCARSDoubleChirp();
else telemetry.synthesizeLCARDDoubleChirp();
// Start engine sounds with smooth spool-up ramp
hullDrone.start(ENGINE_TRANSITION_SECS);
@@ -449,7 +449,7 @@ document.addEventListener('DOMContentLoaded', () => {
engineTransitions.playShutdown(engineProfile, ENGINE_TRANSITION_SECS);
if (activeUniverseId === 'whoniverse') whoniverseAudio.synthesizeLeverClunk();
else telemetry.synthesizeLCARSDoubleChirp();
else telemetry.synthesizeLCARDDoubleChirp();
// Stop engine sounds with smooth spool-down fade
hullDrone.stop(ENGINE_TRANSITION_SECS);
@@ -702,7 +702,7 @@ document.addEventListener('DOMContentLoaded', () => {
visualizer.spawnWarpPulses();
break;
default:
telemetry.synthesizeLCARSSingleChirp();
telemetry.synthesizeLCARDSingleChirp();
break;
}
}
@@ -728,13 +728,13 @@ document.addEventListener('DOMContentLoaded', () => {
break;
case 'btn-chirp-single':
case 'btn-switch-pop':
telemetry.synthesizeLCARSSingleChirp();
telemetry.synthesizeLCARDSingleChirp();
break;
case 'btn-chirp-double':
telemetry.synthesizeLCARSDoubleChirp();
telemetry.synthesizeLCARDDoubleChirp();
break;
case 'btn-chirp-ack':
telemetry.synthesizeLCARSSequence();
telemetry.synthesizeLCARDSequence();
break;
case 'btn-chirp-sweep':
telemetry.synthesizeSensorSweep();
@@ -743,7 +743,7 @@ document.addEventListener('DOMContentLoaded', () => {
telemetry.synthesizeDoorChime();
break;
// Whoniverse
// Whataverse
case 'btn-sonic':
whoniverseAudio.synthesizeSonicScrewdriver();
break;
@@ -751,7 +751,7 @@ document.addEventListener('DOMContentLoaded', () => {
whoniverseAudio.synthesizeLeverClunk();
break;
case 'btn-tardis-door':
whoniverseAudio.synthesizeTardisDoor();
whoniverseAudio.synthesizeTARDIXDoor();
break;
case 'btn-fast-return':
whoniverseAudio.synthesizeFastReturn();
@@ -777,7 +777,7 @@ document.addEventListener('DOMContentLoaded', () => {
expandedAudio.synthesizeMagBootLatch();
break;
case 'btn-commlock':
expandedAudio.synthesizeCommlockTone();
expandedAudio.synthesizeComlockTone();
break;
case 'btn-sevas-spark':
expandedAudio.synthesizeSevastopolSpark();
@@ -840,7 +840,7 @@ document.addEventListener('DOMContentLoaded', () => {
expandedAudio.synthesizeDockingClamp();
break;
case 'btn-dradis-ping':
expandedAudio.synthesizeDradisPing();
expandedAudio.synthesizeDRADARPing();
break;
case 'btn-hal-chime':
expandedAudio.synthesizeHalChime();
@@ -851,10 +851,10 @@ document.addEventListener('DOMContentLoaded', () => {
expandedAudio.synthesizeCardassianDoor();
break;
case 'btn-turbolift':
expandedAudio.synthesizeTurboliftWhoosh();
expandedAudio.synthesizeTurbochuteWhoosh();
break;
case 'btn-replicator':
expandedAudio.synthesizeReplicatorShimmer();
expandedAudio.synthesizeFabricatorShimmer();
break;
case 'btn-scanner-activate':
whoniverseAudio.synthesizeScannerActivate();
@@ -863,7 +863,7 @@ document.addEventListener('DOMContentLoaded', () => {
whoniverseAudio.synthesizeTypeClatter();
break;
case 'btn-vorlon-song':
expandedAudio.synthesizeVorlonSingingSwell();
expandedAudio.synthesizeVorlanSingingSwell();
break;
case 'btn-neural-bond':
expandedAudio.synthesizeNeuralBondSwell();
@@ -872,7 +872,7 @@ document.addEventListener('DOMContentLoaded', () => {
expandedAudio.synthesizeHullRegenBurst();
break;
case 'btn-belter-telemetry':
expandedAudio.synthesizeBelterTelemetryJitter();
expandedAudio.synthesizeBeltworkerTelemetryJitter();
break;
case 'btn-hull-strain':
expandedAudio.synthesizeHullStrainMoan();
@@ -925,7 +925,7 @@ document.addEventListener('DOMContentLoaded', () => {
// Phase 3 (audio_gaps.md #48-#53)
case 'btn-transporter':
expandedAudio.synthesizeTransporterCycle();
expandedAudio.synthesizeTranslocatorCycle();
break;
case 'btn-breech-clank':
expandedAudio.synthesizeBreechClank();
@@ -940,8 +940,8 @@ document.addEventListener('DOMContentLoaded', () => {
expandedAudio.synthesizeTeletypeChatterPhrase();
break;
case 'btn-zocalo-chatter':
if (expandedAudio.zocaloChatterActive) expandedAudio.stopZocaloChatter();
else expandedAudio.startZocaloChatter();
if (expandedAudio.zocaloChatterActive) expandedAudio.stopZocoloChatter();
else expandedAudio.startZocoloChatter();
break;
case 'btn-hetero-drone':
if (expandedAudio.heterodyneDroneActive) expandedAudio.stopHeterodyneDrone();
@@ -949,7 +949,7 @@ document.addEventListener('DOMContentLoaded', () => {
break;
default:
telemetry.synthesizeLCARSSingleChirp();
telemetry.synthesizeLCARDSingleChirp();
break;
}
}
@@ -1857,7 +1857,7 @@ document.addEventListener('DOMContentLoaded', () => {
</g>`;
}
function generateStarfleetActivity(power) {
function generateStarflightActivity(power) {
const effect = obsPick(['contact','vector','data','ring','diagnostic','streak']);
if (effect === 'contact') {
const x = obsInt(420,1180), y = obsInt(230,690);
@@ -1905,7 +1905,7 @@ document.addEventListener('DOMContentLoaded', () => {
return spawnObservationTransient(obsExpandingRing(obsInt(420,1180),obsInt(250,680),'var(--primary-accent)',obsInt(45,90)), 3200);
}
function generateWhoniverseActivity(power) {
function generateWhataverseActivity(power) {
const effect = obsPick(['echo','glyphs','coordinate','warp','rings']);
if (effect === 'echo') {
const x=obsInt(430,1170), y=obsInt(270,650);
@@ -2412,8 +2412,8 @@ document.addEventListener('DOMContentLoaded', () => {
if (observationActivity > .82 && Math.random() < (observationActivity - .7)) count++;
const generator = {
starfleet: generateStarfleetActivity,
whoniverse: generateWhoniverseActivity,
starfleet: generateStarflightActivity,
whoniverse: generateWhataverseActivity,
industrial: generateIndustrialActivity,
bioships: generateBioshipActivity,
retrofuture: generateRetroActivity,
@@ -2422,7 +2422,7 @@ document.addEventListener('DOMContentLoaded', () => {
outlaw: generateOutlawActivity,
spacestations: generateStationActivity,
comedy: generateComedyActivity
}[activeUniverseId] || generateStarfleetActivity;
}[activeUniverseId] || generateStarflightActivity;
for (let i = 0; i < count; i++) {
window.setTimeout(() => generator(observationActivity), i * obsInt(120,380));
@@ -3068,7 +3068,7 @@ document.addEventListener('DOMContentLoaded', () => {
</svg>`;
}
function renderObservationStarfleet() {
function renderObservationStarflight() {
const starsA = makeStars(115, 1750, 900, '#dbeafe', 2);
const starsB = makeStars(55, 1750, 900, '#93c5fd', 220);
return svgFrame(`
@@ -3121,7 +3121,7 @@ document.addEventListener('DOMContentLoaded', () => {
`);
}
function renderObservationWhoniverse() {
function renderObservationWhataverse() {
return svgFrame(`
<rect width="1600" height="900" fill="#020817"/>
<circle cx="800" cy="455" r="420" fill="url(#obsGlow)" opacity=".5"/>
@@ -4060,8 +4060,8 @@ document.addEventListener('DOMContentLoaded', () => {
function getObservationSvg(universeId) {
switch (universeId) {
case 'starfleet': return renderObservationStarfleet();
case 'whoniverse': return renderObservationWhoniverse();
case 'starfleet': return renderObservationStarflight();
case 'whoniverse': return renderObservationWhataverse();
case 'industrial': return renderObservationIndustrial();
case 'bioships': return renderObservationBioships();
case 'retrofuture': return renderObservationRetro();
@@ -4070,7 +4070,7 @@ document.addEventListener('DOMContentLoaded', () => {
case 'outlaw': return renderObservationOutlaw();
case 'spacestations': return renderObservationStations();
case 'comedy': return renderObservationComedy();
default: return renderObservationStarfleet();
default: return renderObservationStarflight();
}
}