41 lines
1.9 KiB
Markdown
41 lines
1.9 KiB
Markdown
# PORTAL — GODSIGH micro-lane · ▸ the orrery gets a door
|
|
|
|
> **You are an execution agent (Opus).** Smallest lane of the wave — budget
|
|
> ~an hour. GODSIGH is the mature sibling; make surgical edits only, match the
|
|
> house style you find, and end with a short report (what shipped, how
|
|
> verified, open questions).
|
|
|
|
**Repo:** this one (`/Users/m3ultra/Documents/GODSIGH`, origin Gitea GODSIGH).
|
|
Branch `portal/solargod` from `main@907094a` or later. Dev: `python3 serve.py
|
|
8137`. **Do not touch** feed proxies, layer logic, or the registry.
|
|
|
|
## P.1 The door
|
|
|
|
SOLARGOD (the solar-system orrery, sibling app, port 8147) already links INTO
|
|
GODSIGH from its Earth card. Reciprocate: a small fixed button/link in the HUD
|
|
(near the mode toggle or HUD footer — pick what the existing CSS makes clean):
|
|
**`🪐 SOLARGOD`** → opens `http://127.0.0.1:8147/` in a new tab
|
|
(`rel="noopener"`).
|
|
|
|
## P.2 The handshake — shared time
|
|
|
|
Both apps serialize state in the URL hash, and SOLARGOD accepts an absolute
|
|
sim-time token: `#t=@<unixMs>`. Build the href DYNAMICALLY at click time from
|
|
GODSIGH's current clock:
|
|
`http://127.0.0.1:8147/#t=@<ms of viewer.clock.currentTime>` — scrub GODSIGH
|
|
three hours into the past, click through, and SOLARGOD opens at that same
|
|
moment. (SOLARGOD clamps to its own valid range itself; don't pre-clamp.)
|
|
|
|
## P.3 Verify (real input, in the browser)
|
|
|
|
1. Click the button live → new tab opens SOLARGOD, planets rendered.
|
|
2. Scrub GODSIGH off-live by ~3 h, click again → SOLARGOD's date readout shows
|
|
the scrubbed time (±1 min), chip reads SCRUBBED.
|
|
3. GODSIGH itself: zero console errors, all layers still boot, hash state
|
|
still round-trips (paste a GODSIGH URL, view reproduces).
|
|
4. If SOLARGOD isn't running, the tab just fails to load — that's fine, no
|
|
error handling needed beyond `noopener`.
|
|
|
|
*Out of scope: any SOLARGOD-side change (its `t=@ms` support already exists);
|
|
any shared component; any feed work.*
|