clone

an offline map explorer where each world, from a game map to a city's open data, ships as one .atlas file

chore: drop the working notes, and ignore the generate binary

Dami committed 5f836d2
The scraper prompt and the progress list were scaffolding for work that has
since landed in the code. Left in the tree they describe a plan rather than
what is there, which is worse than nothing to read.

The generate binary joins atlas and crawl as something built rather than kept.
commit
5f836d24caba756d35f8fa24a858f960d345d23a
parent
e0c67a0d1f9eb212057236f63285d11d56060751
author
Dami <dami.etoile@gmail.com>
3 files changed, +1 -131
M.gitignore1+
DSCRAPER_PROMPT.md60-------------------------
Dprogress.md71------------------------------
M .gitignore +1 -0
D SCRAPER_PROMPT.md +0 -60
@@ -1,60 +0,0 @@
1-# Prompt: preserve MapGenie text labels and zones2-3-Use this prompt in the `gamemap` scraper repository:4-5-> Extend the FMG scraper/archive pipeline so downstream map clients can render6-> MapGenie text labels and geographic zones without inferring behavior from7-> category names.8->9-> First inspect the current full-map response and archive format. The raw10-> snapshots may already contain some or all of these fields; do not add a11-> second representation when preservation through the existing pipeline is12-> sufficient.13->14-> Preserve these category and location fields:15->16-> - `groups[].categories[].display_type` exactly as returned by MapGenie.17-> Known values are `marker` and `text`; retain unknown future values.18-> - `groups[].categories[].icon`, `id`, `title`, `visible`, and `locations`.19-> - `locations[].region_id`, including explicit `null`.20-> - Existing location `id`, `title`, `description`, `latitude`, and21-> `longitude`.22->23-> Preserve the map's complete `regions` collection. For every region and24-> nested subregion retain:25->26-> - `id`, `map_id`, `title`, `subtitle`, and `order`27-> - `parent_region_id`28-> - `center_x` and `center_y`, preserving nulls and numeric strings29-> - `features[]` as valid GeoJSON Features, including the complete30-> `geometry.type` and `geometry.coordinates`31-> - `subregions[]` recursively32->33-> Do not flatten away hierarchy, discard polygon holes, reduce coordinate34-> precision, calculate centers during scraping, or classify a category as text35-> merely because its title is `Area`. Behavior must be driven by36-> `display_type`.37->38-> Keep the archive deterministic: stable key ordering where the project39-> already guarantees it, no timestamps beyond the existing capture metadata,40-> and no changes to tile paths or content hashes for an unchanged response.41-> Update the JSON schema emitted beside snapshots so these fields are covered.42->43-> Add fixtures and tests proving:44->45-> 1. Marathon / Cryo Archive / Locations / Area retains46-> `display_type: "text"` and the `PANOPTICON` location with its original47-> latitude and longitude.48-> 2. All four Marathon `Area` categories remain text categories. The current49-> fixture set contains 40 such locations in total.50-> 3. Forza Horizon 6 / Japan retains its 10 titled regions, polygon geometry,51-> hierarchy, and the `region_id` on all 806 current locations.52-> 4. Polygon coordinates round-trip without precision loss.53-> 5. Pokémon FireRed/LeafGreen's category titled `Area` remains54-> `display_type: "marker"`; category names must not control rendering.55-> 6. Older snapshots lacking these optional fields still decode.56->57-> Document the downstream contract: `display_type: "text"` is rendered as a58-> floating title at the location coordinate; `marker` is rendered as an59-> ordinary pin; `regions[].features[].geometry` supplies optional zone60-> boundaries and region titles.
D progress.md +0 -71
@@ -1,71 +0,0 @@
1-Original prompt: Implement a toggleable geohash telescoping layer with keyboard and click navigation.2-3-- In progress: standard base32 hierarchy over the Atlas pixel extent.4-- Controls: G toggles; click or type descends; Escape ascends.5-- Selected cells should render all enabled annotations without decluttering.6-- Implemented the OpenLayers grid source/layer, base32 extents, cell promotion,7- dedicated geohash input, click navigation, G/Escape controls, and diagnostics.8-- Added per-cell annotation counts to diagnostics and refresh promotion when9- switching raster variants.10-- Verified root and click descent, typed input, editable-focus shortcut11- isolation, Escape ascent, and the pixel-map fourth level in Chromium.12-- Added recursively shaded ancestor sibling cells above ordinary annotations13- so all space outside the current cell is dimmed and directly traversable.14-- Verified the shaded context visually at `s4`; clicking the precision-minus-one15- `s5` sibling traversed laterally and changed promoted annotations from 17 to 3.16-- `go generate .`, frontend build, and `go test ./...` pass after the migration.17-- `go vet ./...` and `go build -tags dev .` pass.18-- Remaining: repository diff review only; migration changes intentionally remain19- uncommitted after the requested initial baseline commit.20-21-Follow-up: focus the map viewport by default so wheel zoom works before a click.22-23-- Added semantic autofocus and a post-initialization focus call that runs only24- once; later search, geohash, and selector focus remains user-controlled.25-- Verified a fresh page starts with `activeElement === "map"` and wheel zoom26- changes zoom from 1.94 to 2.94 without a preceding click.27-- Verified search retains focus and its entered value afterward; no new browser28- console errors.29-30-Follow-up: add a zone table of contents with direct navigation and per-zone31-highlighting.32-33-- Added a hierarchical, alphabetized zone index above the category legend.34-- Left-click fits the OpenLayers view to the selected zone.35-- Right-click toggles a persistent high-contrast zone highlight; the global36- zone control still hides or shows all boundary and title layers.37-- Visually verified navigation and highlight toggling on Clair Obscur's Ancient38- Sanctuary and on the nested Pokémon Celadon City / Celadon Gym hierarchy.39-- Verified right-clicking a zone restores the global zone layer when hidden,40- and the browser console remains free of errors.41-- Verified a map with no zones removes the index without stale entries.42-- `npm run build`, `go test ./...`, `go vet ./...`, and `git diff --check` pass.43-44-Follow-up: make map wheel zoom independent of sidebar focus and dim zone45-context around active highlights.46-47-- The map target now takes focus during wheel capture, so the same wheel event48- reaches OpenLayers immediately after a filter or zone-list interaction.49-- Highlighting one or more zones darkens unrelated zone geometry and labels;50- ancestors remain undimmed so a highlighted child is not shaded by its parent.51-- Pins outside the highlighted zone union are culled, while pins inside it are52- rendered in an independent declutter group. This gives the focused zones more53- annotation capacity without stacking every colliding pin. Selected and54- searched pins remain exempt from zone culling.55-- Explicitly enabled OpenLayers wheel interactions without its focus-only56- default. Browser verification confirmed a filter can retain focus while a57- wheel gesture over the map changes zoom from 1.646 to 2.646; the same gesture58- over the sidebar leaves map zoom unchanged.59-- Verified a two-zone focus reports 56 enabled annotations and renders a60- decluttered 40-annotation sample after fitting Crimson Forest. No browser61- console errors were reported.62-- Final `go generate .`, `go test ./...`, `go vet ./...`,63- `go build -tags dev .`, and `git diff --check` all pass.64-65-Follow-up: cap geohash precision at three characters and make terminal cells66-inspectable.67-68-- Geohash input and click descent now stop at three characters for every map.69-- All raster types permit two display-only overzoom levels. The source tile70- grid remains bounded at native detail, so overzoom reuses the final native71- tiles with each map's configured nearest-neighbor or smooth interpolation.