fix(client): cold-start round 2 — DERIVING TERRAIN state, legend re-fit, release server for make atlas
Item 1: while zero tiles have arrived, the viewer draws a centered screen-space 'DERIVING TERRAIN…' label (text_dim role, no new hue), dropping the instant the first tile lands — a cold wait now reads as loading, not broken. New has_any_tile_arrived() predicate (distinct from has_pending_tiles(): both true mid-arrival, tested exactly there). Item 2: legend re-fit root-caused empirically, two plausible fixes disproven by trace before the real one: a manually-positioned Control's size NEVER tracks a shrinking minimum in this parenting shape, and RichTextLabel.fit_content reports degenerate minimums until laid out at real width once — so reset must be DEFERRED and run after refill, not inside clear(). ImplantPanel.reset_to_content_size() (call_deferred), wired into both legend refresh()es. The load-bearing test compares size.y to get_minimum_size().y — a size-to-size comparison passed trivially with both numbers equally stuck (caught on first draft). Item 3: make atlas now builds the RELEASE server and passes SR_SERVER_BIN (a cold DEBUG server delivers zero tiles for >10s on a new body — live-measured — vs 210ms warm; release serves cold in well under a second). atlas_standalone._server_binary_path() honors the env override per the SR_PORT two-tier precedent, debug path unchanged when unset. All fixes revert-verified; nine suites green collateral-checked; gdlint clean.
This commit is contained in:
@@ -126,6 +126,9 @@ build: build-server build-client
|
||||
build-server:
|
||||
cd server && cargo build
|
||||
|
||||
build-server-release:
|
||||
cd server && cargo build --release
|
||||
|
||||
build-client:
|
||||
@test -n "$(GODOT)" || { echo "Godot not found. Run 'make setup' first."; exit 1; }
|
||||
@# First import may error on theme/font loading before the import scan completes.
|
||||
@@ -161,9 +164,14 @@ game: stop build
|
||||
# without it SimBridge boots in test mode (instant fake CONNECTED, no network
|
||||
# at all), which would make the companion open the Atlas against a dynamic
|
||||
# test-harness snapshot instead of the real systems.db world via the wire.
|
||||
atlas: build-server build-client
|
||||
# Release server for the atlas: a cold DEBUG server takes >10s before the
|
||||
# first tile of a new body can exist (first-body terrain analysis), which
|
||||
# reads as a black/broken map on entry (live-verified 2026-07-22). The
|
||||
# release binary serves a cold body's first tiles in well under a second.
|
||||
# SR_SERVER_BIN tells atlas_standalone.gd's spawn path which binary to use.
|
||||
atlas: build-server-release build-client
|
||||
@test -n "$(GODOT)" || { echo "Godot not found. Run 'make setup' first."; exit 1; }
|
||||
@SR_LIVE=1 $(GODOT) --path client scenes/atlas_standalone.tscn
|
||||
@SR_LIVE=1 SR_SERVER_BIN=server/target/release/settled-reach-server $(GODOT) --path client scenes/atlas_standalone.tscn
|
||||
|
||||
stop:
|
||||
@lsof -ti :9876 | xargs -r kill 2>/dev/null || true
|
||||
|
||||
Reference in New Issue
Block a user