/** * The instrument panel behind `access.can.debug`. * * Godmode used to be one hour scrubber, which is a strange thing for the top * tier to unlock: the astronomy in this repo is four hundred lines of Meeus in * `solar.ts` and another four hundred in `atmosphere.ts`, and a control that can * only move within *today* makes almost none of it visible. You cannot watch the * arc flatten between June and December, you cannot watch a day get four hours * shorter, and the moon — computed to a hundredth of a degree — is a number in * the corner that never changes while you are looking at it. Same for the * weather: `observe()` takes a `WeatherObservation`, `main.ts` has always passed * `null`, and so the cloud, precipitation, visibility and marine-layer paths are * correct code that nothing in production has ever run. This panel is the wiring * loom for all of it. * * Four instruments, and each earns its space by showing something that is * otherwise invisible rather than something merely convenient: * * 1. **Time with a date in it.** Day of the year and hour, the solstices and * equinoxes computed for the current year rather than written down, golden * and blue hour solved for *this* place on *this* date, and the next four * lunar quarters found by searching the same Meeus series the renderer * lights the night with. * 2. **Weather that can lie**, loudly. Presets and raw sliders for the four * fields `atmosphere.ts` reads, including the difference between "zero" and * "not reported" that the observation type is careful about and a slider * would otherwise erase. * 3. **A frame budget**, as a median and a p95 rather than an instantaneous * number that flickers too fast to read, plus the one measurement nothing * else in the app makes: whether a board leaves geometries and textures * behind when you leave it. * 4. **Overlays** for the numbers you want while your hands are on the * camera — a paste-ready `Chapter.focus`, both bodies' az/el, the marine * strength, and the fog the atmosphere actually installed. * * Two more sections belong to whatever board is up rather than to the panel, and * are absent when there is nothing to point them at: **sky** (`GodmodeSky`) and * **office** (`GodmodeOffice`). Neither is a fifth instrument in the sense above * — they are handles onto one scene's dials, they arrive with it and they mean * nothing without it, which is why both are optional interfaces rather than * fields on `GodmodeOptions`. * * ## It is not shipped to anyone else * * `access.ts` is explicit that `debug` is a *drawing* decision and not a * boundary — there is no server to enforce a client-side sun against. That * argument justifies hiding a slider; it does not justify shipping a whole * instrument panel to every anonymous visitor and hiding it with CSS. So this * module is constructed only when `can.debug` is true, and it lives under * `src/tools/` behind `src/tools/index.ts` precisely so that `main.ts` can reach * it through a dynamic `import()` and Vite can keep it out of the bundle * everyone else downloads. A visitor who is not god does not get a hidden panel; * they do not get the code. * * ## Shape * * The same imperative handle `minimap.ts` uses, for the same reasons: there is * no framework here, the caller owns the layout, and a module that mounts, is * driven through setters and disposes itself completely is the only kind that * survives a city swap. The one difference is that a minimap is a canvas the * caller styles and this is a panel that styles itself — `index.html` carries * the whole interface's CSS inline and is not ours to edit, so the rules live in * one injected `