The globe under the Sun of now or of a post, with borders and country names
Build / Build (push) Successful in 46s
Deploy / decepub.thepra.dev (push) Successful in 1m52s

The Sun lights the globe where it really is (wwwroot/js/sun.js, the Astronomical Almanac's low-precision solar
coordinates): the day map shaded by the Sun's height and the Earth–Sun distance, warm city lights on the night side,
and a twilight blend about 13° wide between them. It shows now, refreshed every 30 s, or the moment of the hovered,
focused or pinned post: a click on a card pins it, and the subsolar point travels there the shorter way round. The
panel's top corner shows that moment, the phase of the day and solar time at the post's place, and the season in its
hemisphere (or in both, for a post without a place). Its tooltip shows the subsolar point, declination, axial tilt,
distance, irradiance, day length and the next equinox or solstice.

Land borders are thin paths. Country names are in the reader's language and appear as the camera comes closer:
largest countries first, away from the globe's edge, never overlapping. They come from world-atlas 2.0.2 (Natural
Earth 1:50m), prepared by tools/globe/prepare-countries.py, and are vendored with their hashes in SOURCES.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
This commit is contained in:
thepraandClaude Opus 5.5 committed 2026-10-04 20:23:42 +02:00
1 parent 69d0a641fe
commit 0f68e74e38
13 files changed
+1066 -50

No files matched your search

+13
View File
@@ -0,0 +1,13 @@
Copyright 2013-2019 Michael Bostock
Permission to use, copy, modify, and/or distribute this software for any purpose
with or without fee is hereby granted, provided that the above copyright notice
and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.
+8 -2
View File
@@ -1,8 +1,9 @@
# The globe's vendored files
# The globe's vendored files
Copied once on 2026-10-04 from the npm registry (registry.npmjs.org) and, for the day texture, from NASA
(eoimages.gsfc.nasa.gov); the build and the app never fetch them from anywhere else. To update, download the new files,
copy them the same way (the day texture through `tools/globe/prepare-day-texture.py`), and replace the hashes.
copy them the same way (the day texture through `tools/globe/prepare-day-texture.py`, the countries through
`tools/globe/prepare-countries.py`), and replace the hashes.
NASA's mosaic does not wrap cleanly at the 180° meridian near the poles (a lighter strip at its east edge), which the
globe, drawing each pixel at its exact place, shows as a line from each pole; the script blends that strip into the
@@ -14,10 +15,15 @@ colour.
| `globe.gl.min.js` | `globe.gl` 2.46.2, `dist/globe.gl.min.js` (UMD, defines `window.Globe`) | MIT, `LICENSE-globe.gl` | `2c3e445c04d121215910a89688b96091c8a72071c122a4f830081a39b636c94c` |
| `earth-blue-marble.jpg` | NASA Visible Earth, Blue Marble Next Generation with topography and bathymetry, December 2004 (`world.topo.bathy.200412.3x5400x2700.jpg`, sha256 `a9f0088972dee0254610af851c4d6838ca3f2cf79176987e0a5713e2c15ec042`), seam repaired and scaled to 4096×2048 by `tools/globe/prepare-day-texture.py` | NASA, public domain | `1334612d91d5104afb0e48cce916e100575c2969baf99e21454c23535f4ce713` |
| `earth-night.jpg` | `three-globe` 2.45.3, `example/img/earth-night.jpg`, 4096×2048 | NASA Earth Observatory "Black Marble" (city lights), public domain | `355ab23dd1323315b393d7b91dd2d7ee223a1cbaaba2b48dc72ba90d371ced24` |
| `countries.json` | `world-atlas` 2.0.2 (tarball sha256 `032e7765f2ce00edaeafec23ff22bc3b77e42987c257da944cc585b452c05b97`), `countries-50m.json` (sha256 `04342cdc1e3016bcd7db1630de95684d67b79fe3c8c460321e87aef469502394`): land borders and name positions, by `tools/globe/prepare-countries.py`; two-letter codes from Debian's `iso-codes` 4.20.1 (`iso_3166-1.json`, LGPL-2.1, only the code mapping is used) | Natural Earth 1:50m, public domain; `world-atlas` ISC, `LICENSE-world-atlas` | `5194ad47c539b4c89826a48616ddbef2b2d2fbd2ca9a368dd6d2bced81e0d74f` |
`globe.gl.min.js` bundles its dependencies: three.js r185 (MIT, © 2010–2026 three.js authors), three-globe (MIT, © 2019
Vasco Asturiano), @tweenjs/tween.js (MIT), kapsule and accessor-fn (MIT, © Vasco Asturiano), and d3 modules (ISC, ©
Mike Bostock). Their notices are in `LICENSES-bundled.txt`.
Country names are not in `countries.json` beyond Natural Earth's English ones: the globe asks the browser
(`Intl.DisplayNames`) for each two-letter code in the reader's language, and falls back to the English name for the
few areas without a code (Kosovo, Somaliland, Northern Cyprus, …).
The service worker leaves this folder out of the offline precache (`service-worker.published.js`): the feed page
loads it the first time it shows the globe.
+1
View File
@@ -0,0 +1 @@
{"borders":[[31.29,-22.4,31.2,-22.35,31.07,-22.31,30.92,-22.29,30.71,-22.3,30.46,-22.33,30.19,-22.29,29.9,-22.18,29.66,-22.15,29.38,-22.19,29.36,-22.19],[29.36,-22.19,29.32,-22.16,29.24,-22.08,29.11,-22.07,29.07,-22.05,29.04,-22.02,29.02,-21.98,29.01,-21.94,29.04,-21.81,29.03,-21.8,28.99,-21.78,28.92,-21.77,28.75,-21.71,28.53,-21.65,28.18,-21.59,28.05,-21.57,28.01,-21.55,27.97,-21.51,27.91,-21.36,27.84,-21.26,27.69,-21.11,27.67,-21.06,27.68,-20.94,27.69,-20.85,27.7,-20.77,27.7,-20.69,27.69,-20.6,27.7,-20.53,27.68,-20.5,27.62,-20.48,27.47,-20.48,27.28,-20.48,27.28,-20.38,27.26,-20.23,27.22,-20.15,27.18,-20.1,27.09,-20.05,26.92,-19.99,26.68,-19.89,26.47,-19.75,26.24,-19.57,26.17,-19.54,26.08,-19.37,25.95,-19.08,25.96,-18.99,25.94,-18.94,25.81,-18.8,25.79,-18.72,25.76,-18.65,25.56,-18.44,25.49,-18.35,25.44,-18.23,25.39,-18.14,25.34,-18.1,25.28,-18.04,25.24,-17.97,25.22,-17.91,25.24,-17.84,25.26,-17.79],[25.26,-17.79,25.45,-17.85,25.56,-17.85,25.64,-17.82,25.74,-17.86,25.86,-17.95,26.0,-17.97,26.14,-17.91,26.33,-17.93,26.58,-18.02,26.78,-18.04,27.02,-17.96,27.24,-17.73,27.44,-17.51,27.64,-17.26,27.76,-17.06,27.93,-16.9,28.16,-16.77,28.4,-16.66,28.76,-16.53,28.83,-16.42,28.86,-16.31,28.86,-16.14,28.87,-16.04,28.91,-15.99,28.97,-15.95,29.05,-15.9,29.29,-15.78,29.49,-15.7,29.73,-15.64,29.99,-15.64,30.25,-15.64,30.4,-15.64],[30.4,-15.64,30.4,-15.8,30.41,-15.98,30.44,-15.99,30.63,-16.0,30.94,-16.01,31.24,-16.02,31.43,-16.15,31.49,-16.18,31.69,-16.21,31.94,-16.43,32.24,-16.45,32.45,-16.52,32.64,-16.59,32.74,-16.68,32.81,-16.7,32.9,-16.7,32.95,-16.71,32.94,-16.78,32.88,-16.88,32.88,-17.04,32.97,-17.25,32.98,-17.44,32.95,-17.77,32.96,-18.08,32.96,-18.2,32.98,-18.27,33.0,-18.31,32.99,-18.36,32.94,-18.49,32.9,-18.63,32.9,-18.69,32.88,-18.73,32.86,-18.76,32.72,-18.83,32.7,-18.87,32.7,-18.94,32.72,-19.0,32.77,-19.02,32.83,-19.06,32.85,-19.1,32.85,-19.15,32.83,-19.24,32.78,-19.39,32.83,-19.56,32.89,-19.67,32.97,-19.8,33.01,-19.87,33.0,-19.93,32.99,-19.98,32.87,-20.22,32.78,-20.36,32.67,-20.52,32.53,-20.61,32.49,-20.66,32.48,-20.71,32.48,-20.83,32.48,-20.95,32.36,-21.14,32.43,-21.3,32.41,-21.31,32.37,-21.33,32.19,-21.52,32.02,-21.7,31.89,-21.83,31.74,-21.98,31.57,-22.15,31.43,-22.3,31.29,-22.4],[25.26,-17.79,25.09,-17.63,25.0,-17.57,24.93,-17.54,24.73,-17.52,24.27,-17.48,24.23,-17.49,24.04,-17.52,23.8,-17.56,23.6,-17.6,23.38,-17.64],[23.38,-17.64,23.18,-17.47,22.96,-17.29,22.72,-17.07,22.55,-16.91,22.46,-16.81,22.3,-16.69,22.19,-16.63,22.15,-16.6,22.04,-16.26,21.98,-15.95,21.98,-15.72,21.98,-15.4,21.98,-15.08,21.98,-14.76,21.98,-14.44,21.98,-14.12,21.98,-13.8,21.98,-13.48,21.98,-13.16,21.98,-13.0,22.21,-13.0,22.47,-13.0,22.74,-13.0,23.04,-13.0,23.34,-13.0,23.64,-13.0,23.84,-13.0,23.9,-13.0,23.96,-12.99,23.97,-12.96,23.88,-12.8,23.89,-12.74,23.91,-12.64,23.95,-12.54,23.99,-12.42,24.0,-12.35,23.96,-12.12,23.96,-11.99,23.97,-11.85,23.99,-11.72,23.97,-11.64,23.99,-11.59,24.01,-11.52,24.03,-11.44,24.05,-11.4,24.04,-11.37,24.02,-11.32,24.01,-11.18,23.99,-11.0,23.97,-10.87],[23.97,-10.87,24.0,-10.88,24.08,-10.89,24.11,-10.96,24.14,-11.03,24.19,-11.03,24.32,-11.07,24.37,-11.13,24.4,-11.26,24.38,-11.32,24.33,-11.37,24.38,-11.42,24.47,-11.45,24.52,-11.44,24.67,-11.35,24.73,-11.34,24.81,-11.32,24.88,-11.3,25.08,-11.26,25.18,-11.24,25.25,-11.21,25.29,-11.21,25.32,-11.24,25.29,-11.33,25.28,-11.4,25.32,-11.55,25.35,-11.62,25.41,-11.67,25.46,-11.7,25.51,-11.75,25.62,-11.74,25.85,-11.82,25.93,-11.85,26.03,-11.89,26.09,-11.9,26.34,-11.93,26.43,-11.95,26.6,-11.97,26.73,-11.98,26.83,-11.97,26.89,-11.94,26.93,-11.92,26.95,-11.9,26.98,-11.83,27.03,-11.66,27.05,-11.62,27.1,-11.59,27.16,-11.58,27.2,-11.6,27.24,-11.78,27.42,-11.94,27.49,-12.08,27.53,-12.19,27.57,-12.23,27.64,-12.27,27.76,-12.28,27.86,-12.29,28.07,-12.37,28.24,-12.43,28.36,-12.48,28.41,-12.52,28.45,-12.58,28.47,-12.62,28.51,-12.74,28.55,-12.84,28.61,-12.85,28.67,-12.86,28.73,-12.93,28.77,-12.98,28.86,-13.12,28.92,-13.21,28.94,-13.31,29.01,-13.37,29.11,-13.39,29.2,-13.4,29.25,-13.37,29.38,-13.32,29.48,-13.27,29.55,-13.25,29.6,-13.26,29.63,-13.3,29.65,-13.37,29.65,-13.42,29.72,-13.45,29.77,-13.44,29.8,-13.39,29.8,-13.37,29.8,-13.17,29.8,-12.99,29.8,-12.83,29.8,-12.63,29.8,-12.45,29.8,-12.31,29.8,-12.15,29.75,-12.16,29.69,-12.2,29.56,-12.2,29.51,-12.23,29.49,-12.27,29.5,-12.32,29.5,-12.39,29.49,-12.42,29.43,-12.43,29.34,-12.4,29.19,-12.37,29.06,-12.35,28.97,-12.26,28.85,-12.12,28.77,-12.05,28.58,-11.91,28.54,-11.88,28.48,-11.81,28.43,-11.7,28.41,-11.62,28.38,-11.57,28.36,-11.48,28.4,-11.35,28.47,-11.11,28.52,-10.93,28.54,-10.8,28.64,-10.67,28.65,-10.55,28.61,-10.4,28.62,-10.31,28.62,-10.1,28.63,-9.92,28.63,-9.83,28.6,-9.68,28.54,-9.51,28.4,-9.27,28.4,-9.22,28.49,-9.17,28.61,-9.07,28.68,-9.01,28.76,-8.93,28.79,-8.89,28.87,-8.79,28.92,-8.7,28.94,-8.59,28.9,-8.48,28.97,-8.46,29.22,-8.43,29.48,-8.39,29.77,-8.34,30.05,-8.3,30.33,-8.26,30.58,-8.22,30.75,-8.19],[30.75,-8.19,30.78,-8.27,30.83,-8.39,30.89,-8.47,30.97,-8.55,31.03,-8.6,31.08,-8.61,31.35,-8.61,31.45,-8.65,31.53,-8.71,31.56,-8.81,Line truncated