Starts the completion program (SocialPub docs/ROADMAP.md, "Owner decisions on finishing everything", 2026-10-17). - The localizer's namespace is decePubClient.Services; collAnon is gone from the repo. - Dead code: PagesBase, VConstants, SettingsOptions, ViewLanguage, unused APIs routes, InstanceService.Self, RequestStats.LastOf/AverageMs, PostAnon/DeleteTotallyAnon, unused AppStatusService methods and their main.js helpers (the app badge stays for Web Push), ExtensionMethods/SUtility leftovers (Markdig and BlazorZXingJs packages go), unused PublicCacheData/PageSettings/AppConfiguration fields, commented-out code. - The client log in IndexedDB, which nothing ever read, goes with the whole IndexedDB layer (DnetIndexedDb, IStorage): logs go to the browser console; main.js deletes the old "data" database once. - The solution names the real ClientModels project. Unused vendor assets (fontawesome, solid, open-iconic, rxjs) go. - robots.txt disallows everything; manifest.json and index.html say decePub; the service worker's cache name follows each publish's assets version, so old caches are purged. - MessageType is Visibility (member names kept: they are resx keys); ExpandMessage.razor is Thread.razor (same route). - i18n: dead keys removed, Italian "camera" is "punto di vista", DInputBase/DCalendar validation messages come from ErrorMessages, DataTransfer's spinner has its label. - CLAUDE.md follows: client storage, JS interop, PWA, the D fields' messages. Verified: dotnet build decePubClient.csproj and decePubClient.sln -c Release (0 errors, no new warnings); a Pasture publish served by the pasture's decepub peer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WpVCoDeM1qUTRp4fXQdfof
3.7 KiB
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, 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 map on both sides, only on rows where the two sides agree, and gives the rows within half a degree of each pole one colour.
| File | From | Licence | sha256 |
|---|---|---|---|
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.
Before upgrading globe.gl, check what the app relies on inside the bundle, since it never sees window.THREE:
-
wwwroot/js/instruments.jstakes three.js's classes from objects globe.gl made (classesOf):- the globe mesh, whose material is
globeMaterial(), inside aGroup; - the graticules, a
LineSegmentswith aLineBasicMaterial, added hidden; - an empty
Mesh, forBufferGeometryandMeshBasicMaterial; - the camera's
Vector3.
It also relies on the scene's
onBeforeRenderandonAfterRenderrunning on every frame. If any of these change, the instruments fall back to the ring and the legend, andglobe.js'sstats()reportsinstruments.built: falsewith what ismissing. - the globe mesh, whose material is
-
wwwroot/js/globe.jsrelies on the texture class of the day map and on the globe material's shader chunks.