feat(client): Atlas screenshot capture matrix + set_view API (T-1120)

AtlasViewer gains public set_view(zoom, offset)/get_view_offset (clamped, review-flagged API gap) + gdUnit suite. visual_capture.gd gains an atlas_matrix scenario (one boot, tests/atlas_shots.json-driven: 7 verified bodies x zoom x overlay sets, signal-gated waits on atlas_layers_received/city_names_received with timeout fallback). 12 individually-addressable golden scenarios registered in tests/visual.json. Root-level settings.db* gitignored (capture-spawned servers write their settings store to cwd). Fixes found live: GDScript lambdas capture value-type locals BY VALUE (wait-flag moved to Array carrier); RegionalScreen.enter() no-ops when the screen id is unchanged (direct enter() per body after the first).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-16 20:29:14 +02:00
co-authored by Claude Fable 5
parent 17cad2bbf9
commit 799156b140
7 changed files with 808 additions and 0 deletions
+60
View File
@@ -89,6 +89,66 @@
"scene": "res://scenes/locomotion_sandbox.tscn",
"env": { "SR_AUTOPILOT": "stance_up,south:6.0" },
"description": "Live 3D sandbox: autopilot walks south into a wall — cutaway stub golden (T-1088)"
},
"atlas_GJ380c_zfit_C": {
"ticks": 240,
"live": true,
"description": "T-1120 curated Atlas golden: Lendel (GJ380c), fit zoom, overlay set C (district+settlements+roads+rivers)"
},
"atlas_GJ380c_z4_0_B": {
"ticks": 240,
"live": true,
"description": "T-1120 curated Atlas golden: Lendel (GJ380c), 4.0 zoom, overlay set B (settlements+roads)"
},
"atlas_GJ144e_zfit_A": {
"ticks": 240,
"live": true,
"description": "T-1120 curated Atlas golden: Vethis (GJ144e), fit zoom, overlay set A (district only)"
},
"atlas_GJ144e_z2_0_C": {
"ticks": 240,
"live": true,
"description": "T-1120 curated Atlas golden: Vethis (GJ144e), 2.0 zoom (labels on), overlay set C"
},
"atlas_GJ338Bd_z2_0_C": {
"ticks": 240,
"live": true,
"description": "T-1120 curated Atlas golden: Arbour (GJ338Bd), 2.0 zoom (labels on), overlay set C"
},
"atlas_GJ338Bd_z4_0_B": {
"ticks": 240,
"live": true,
"description": "T-1120 curated Atlas golden: Arbour (GJ338Bd), 4.0 zoom, overlay set B"
},
"atlas_GJ820Bc_zfit_A": {
"ticks": 240,
"live": true,
"description": "T-1120 curated Atlas golden: Ferrath (GJ820Bc), fit zoom, overlay set A (district only)"
},
"atlas_GJ820Bc_z2_0_C": {
"ticks": 240,
"live": true,
"description": "T-1120 curated Atlas golden: Ferrath (GJ820Bc), 2.0 zoom (labels on), overlay set C"
},
"atlas_GJ251c_z2_0_B": {
"ticks": 240,
"live": true,
"description": "T-1120 curated Atlas golden: Ruhr (GJ251c), 2.0 zoom (labels on), overlay set B (settlements+roads)"
},
"atlas_GJ251c_zfit_C": {
"ticks": 240,
"live": true,
"description": "T-1120 curated Atlas golden: Ruhr (GJ251c), fit zoom, overlay set C — highest-population body in the sample"
},
"atlas_GJ244Ad_zfit_C": {
"ticks": 240,
"live": true,
"description": "T-1120 curated Atlas golden: Edict (GJ244Ad), fit zoom, overlay set C — frozen planet_class pick"
},
"atlas_GJ445c-m1_z4_0_B": {
"ticks": 240,
"live": true,
"description": "T-1120 curated Atlas golden: Jinghu (GJ445c-m1), 4.0 zoom, overlay set B — inhabited moon pick"
}
},
"flows": {