solargod/index.html
monsterrobotparty c1c1afb0db 🛳 vessel: vendor three@0.170.0 (offline) + deep-time epoch mode (opus)
V.1 — cut the CDN tether. Vendored the exact pinned files the importmap used
(three.module.js r170 + OrbitControls + CSS2DRenderer, ~1.29 MB) under
vendor/three/, mirroring the package layout so the addons' bare `import from
'three'` resolves. Import graph verified shallow (addons import only 'three';
the bundle is self-contained). Both importmaps (index.html, verify.html) now
point at ./vendor/three/… — zero jsdelivr/CDN URLs remain. MIT LICENSE +
PROVENANCE.txt retained.

V.2 — open deep time. EPOCH toggle (1800–2050 / 3000 BC–3000 AD) next to
MEGA/TRUE; deep mode is a hash-carried page mode (&e=1) read before ephem/clock
init → ephem.setExtendedRange(true) + CONFIG.time swaps to the deep bounds.
Timeline end labels + scrub tooltip now read from CONFIG (were hardcoded
1800/2050). Toggle serializes current view and reloads with the flipped e token
(orbit paths + element resolution are baked per-session). Appended 1 decade/s
and 1 century/s rates. Hash e token added to applyHash/serializeHash.

V.3 — appended verify gates (PERIHELION-V): Jupiter @1000 BC (extended 2a+2b)
vs live Horizons barycenter tol 0.15 AU (Δ 0.0041); Mercury @2500 tol 0.02 AU
(Δ 3e-5); Table 2b M-correction proven live (zeroing it worsens Jupiter@1000BC
by 0.0214 AU). Core 13 gates untouched.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 10:28:23 +10:00

94 lines
3.0 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>SOLARGOD ▸ Orrery</title>
<link rel="stylesheet" href="css/style.css" />
<!-- Three.js is vendored (offline-first, zero CDN). See vendor/three/PROVENANCE.txt. -->
<script type="importmap">
{
"imports": {
"three": "./vendor/three/build/three.module.js",
"three/addons/": "./vendor/three/examples/jsm/"
}
}
</script>
</head>
<body>
<div id="scene"></div>
<div id="labels"></div>
<!-- breadcrumb (top-left) -->
<div id="breadcrumb"></div>
<!-- HUD (right) -->
<aside id="hud">
<header>
<div class="brand">SOLARGOD <span>▸ ORRERY</span></div>
<div id="live-chip" data-state="live">LIVE</div>
</header>
<div class="ctl-row">
<div class="seg" id="scale-toggle">
<button data-mode="mega" class="active" type="button">MEGA</button>
<button data-mode="true" type="button">TRUE</button>
</div>
</div>
<div class="ctl-row slider-row">
<label class="ctl-label">Epoch</label>
<div class="seg" id="epoch-toggle" title="Deep-time range — switching reloads the session onto Table 2a/2b">
<button data-epoch="near" class="active" type="button">18002050</button>
<button data-epoch="deep" type="button">3000 BC 3000 AD</button>
</div>
</div>
<div class="ctl-row slider-row">
<label class="ctl-label">Body scale</label>
<div class="seg" id="bodyscale-toggle">
<button data-e="1" type="button">1×</button>
<button data-e="100" type="button">100×</button>
<button data-e="1200" class="active" type="button">1200×</button>
</div>
</div>
<div class="menu-row">
<label class="ctl-label">Focus</label>
<select id="focus-menu"></select>
</div>
<div id="layers"></div>
<footer>
<div>Positions: JPL SSD approximate elements · live feeds: JPL Horizons / SBDB / CAD</div>
<div id="credits-textures">Textures: <a href="https://www.solarsystemscope.com/textures/" target="_blank" rel="noopener">Solar System Scope</a> (CC&nbsp;BY&nbsp;4.0)</div>
</footer>
</aside>
<!-- time bar (bottom) -->
<div id="timebar">
<div class="tb-controls">
<button id="tb-now" type="button" title="Jump to wall-clock now">NOW</button>
<button id="tb-reverse" type="button" title="Reverse"></button>
<button id="tb-play" type="button" title="Play / pause">❚❚</button>
<select id="tb-rate" title="Time rate"></select>
<div id="date-readout"></div>
</div>
<div id="timeline-outer" title="Scrub">
<div id="timeline-fill"></div>
<div id="timeline-cursor"></div>
</div>
<div class="tb-ends"><span id="tb-end-min">1800</span><span id="tb-end-max">2050</span></div>
</div>
<!-- info panel (left, Stage 6) -->
<aside id="infopanel" hidden></aside>
<div id="toast"></div>
<div id="debug" hidden></div>
<script type="module" src="js/main.js"></script>
</body>
</html>