fix(import): address review on metadata, bounds, navigation, clock and GPX

- Imported metadata stays inert: descriptions, native labels, properties and
  KML extended data are dropped from every entity; names are kept as short
  plain text. GeoJSON loads with a describe that builds no HTML, and
  simplestyle (including marker-symbol) is dropped, so no icon asset is
  fetched for a file and GeoJSON draws in its row's color.
- Bound geometry before loading: features and vertices are counted in the
  parsed GeoJSON, the KML document and while reading GPX, and a file over
  20,000 features or 250,000 vertices is refused before Cesium builds it.
- Imports run one batch at a time, so concurrent picks or drops cannot pass
  the 12-file cap.
- Fly-to framing walks long tracks by index instead of spreading them into a
  call.
- Fly-to is an immediate navigation through the application shell; the fly
  after an import is a deferred navigation stamped when the batch starts and
  re-asserted just before flying.
- Dated imports never change the shared clock: imported sources expose no
  clock, entities are available for all time, and a KML gx:Track is drawn as
  its line.
- GPX is read into GeoJSON with one line per track segment, without times.
- KML/KMZ rows show a hatched swatch (they keep their own styles); keyboard
  focus is kept on the same control after hide/show and moves to the next
  row after remove.
- Unit regressions for each, and the rendered QA now imports hostile
  metadata, dated KML/GPX and a two-segment track, and fails on any request
  for a file's contents or icon assets, a clock change, or surviving
  metadata.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
kapturnerandClaude Opus 5.5 committed 2026-10-07 08:50:35 -05:00
1 parent 2fec1091d4
commit 644a341b4c
11 files changed
+1199 -75

No files matched your search

+9 -5
View File
@@ -30,11 +30,15 @@
under NLOD 2.0.
- Import your own GeoJSON, KML, KMZ and GPX files (DISPLAY ▸ Import, or drop
them onto the globe). Each file is drawn on the ground in its own color with
a row to show, hide, fly to or remove it. Files stay in the browser for the
session, and KML/KMZ network links, remote icons, remote styles and balloon
HTML are left out so an imported file cannot make the page fetch anything.
The import half of #890.
them onto the globe). GeoJSON and GPX files are drawn on the ground in the
color shown on their row; KML and KMZ keep the styles written in them. Each
file gets a row to show, hide, fly to or remove it. Files stay in the
browser for the session. An import cannot make the page fetch anything (KML
network links, remote icons and styles are left out), keeps only plain-text
names from the file (no descriptions, balloons or native labels), never
moves the app's clock (dated tracks draw for all time), and keeps GPX track
segments apart. Size limits are checked before anything is built. The import
half of #890.
## [0.2.1] — 2026-10-02 — God's Eye View through Your Agent (with security fixes and other features)