* Planet size formula moves to pixel-space:
`pointRadiusBasePx = 2 + 2 * cbrt(size / SIZE_NORMALIZER)`. The
on-screen disc now reads ~4-7 px at the reference zoom regardless
of how large the world rectangle is — the previous `world-units`
formulation blew up on small maps and made Source-class planets
swallow their neighbours.
* Labels + outlines live in the origin copy only. The 9× replication
across torus copies was the dominant cost on a 100+ planet map
(Pixi.Text creation + Graphics rebuilds on every zoom step); the
origin-copy layout is what the camera-wrap listener guarantees
the user actually sees.
* `setPlanetLabels` and `setPlanetOutlines` skip Pixi-object
rebuilds when the input fingerprint is unchanged — toggle flips
and selection changes now keep the existing Text / Graphics
instances alive and only repaint the affected pieces.
* `renderer.md` updated to the new contract.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* Honest pixel-space sizing for `pointRadiusPx` / `strokeWidthPx`: the
renderer divides by the current camera scale on every
`viewport.zoomed` so thin lines / small markers stay the same on-screen
size at any zoom.
* Known-size planets switch to `pointRadiusWorld`, softened against the
reference scale by `PLANET_SIZE_ZOOM_ALPHA = 0.33`; unidentified
planets pin to a 3-px disc.
* New planet label layer renders a two-line `name / #N` legend under
each planet (`#N` only for unidentified or when the new `planetNames`
toggle is off). Selection now paints an inverse-fill frame around the
selected planet's label plus an outline on the disc; the old
selection-ring primitive is retired.
* Bombing markers swap the separate CirclePrim for a planet-outline
overlay (damaged / wiped colour); the report deep-link moves to a
"view bombing report" link in the planet inspector.
* Docs + tests follow: `renderer.md` reflects the new sizing contract +
label / outline layers, vitest covers the sizing math, label
formatting, and the new toggle, and the map-toggles e2e adds a
persistence case for `planetNames`.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>