neon-sprawl/client/test
VinPropane 63fecb1099 NEO-24: range-aware Tab cycle skips out-of-range anchors before POST
Previously Tab from no-lock always picked `ORDERED_IDS[0]` (alpha), so
standing next to beta and pressing Tab was denied with `out_of_range`
even though the client HUD clearly showed beta in range.

Added `PrototypeTargetConstants.next_in_range_id_after(current, world)`
which walks the cycle and returns the first anchor whose client-side
horizontal distance is within the anchor radius.
`TargetSelectionClient.request_tab_next()` prefers that pick when the
player reference is wired (same path `set_freshness_kick` uses) and
falls back to the plain cycle order when nothing is in range so the
server still owns the denial reason.

Server contract (NEO-23) untouched. Tests cover the beta pick, the
nothing-in-range fallback, and the no-player-ref regression. Plan
Decision 6 + review follow-up #3 + README + manual QA updated.
2026-04-21 23:26:56 -04:00
..
camera_state_test.gd NEON-25: isometric follow camera, CameraState, tests, and docs 2026-04-07 23:46:04 -04:00
camera_state_test.gd.uid NEON-25: isometric follow camera, CameraState, tests, and docs 2026-04-07 23:46:04 -04:00
ground_pick_test.gd.uid NS-21: add GdUnit4, client tests, and CI headless run 2026-04-06 22:08:37 -04:00
isometric_follow_camera_test.gd chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
isometric_follow_camera_test.gd.uid NEON-25: isometric follow camera, CameraState, tests, and docs 2026-04-07 23:46:04 -04:00
occlusion_policy_test.gd chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
occlusion_policy_test.gd.uid NEON-27: finalise review (Approved) + Godot uid files 2026-04-08 23:55:29 -04:00
player_idle_support_test.gd NEON-29: Fix CI tests (horizontal step flag, idle_support vectors) 2026-04-15 23:57:13 -04:00
player_idle_support_test.gd.uid NEON-29: Fix gdlint (player returns/lines, split idle tests, gdlintrc cap) 2026-04-15 23:48:15 -04:00
player_locomotion_wasd_test.gd NEO-22: Fix locomotion test static calls for GDScript + LSP 2026-04-17 20:24:16 -04:00
player_locomotion_wasd_test.gd.uid NEO-22: Add Godot .uid sidecars for WASD locomotion scripts 2026-04-17 20:51:16 -04:00
player_test.gd NEO-22: add move-stream API and WASD client locomotion 2026-04-17 19:21:33 -04:00
player_test.gd.uid NS-21: add GdUnit4, client tests, and CI headless run 2026-04-06 22:08:37 -04:00
position_authority_client_test.gd NEO-24: fix movement-driven target refresh via authoritative_ack signal 2026-04-21 22:35:41 -04:00
position_authority_client_test.gd.uid NS-21: add GdUnit4, client tests, and CI headless run 2026-04-06 22:08:37 -04:00
position_authority_test_double.gd NS-21: add GdUnit4, client tests, and CI headless run 2026-04-06 22:08:37 -04:00
position_authority_test_double.gd.uid NS-21: add GdUnit4, client tests, and CI headless run 2026-04-06 22:08:37 -04:00
target_refresh_on_locomotion_test.gd NEO-24: fix movement-driven target refresh via authoritative_ack signal 2026-04-21 22:35:41 -04:00
target_refresh_on_locomotion_test.gd.uid NEO-24: add visible target-anchor markers + HUD distance lines 2026-04-21 23:04:03 -04:00
target_selection_client_test.gd NEO-24: range-aware Tab cycle skips out-of-range anchors before POST 2026-04-21 23:26:56 -04:00
target_selection_client_test.gd.uid NEO-24: client tab-target + lock HUD synced to server 2026-04-21 22:14:16 -04:00
target_selection_test_double.gd NEO-24: client tab-target + lock HUD synced to server 2026-04-21 22:14:16 -04:00
target_selection_test_double.gd.uid NEO-24: client tab-target + lock HUD synced to server 2026-04-21 22:14:16 -04:00
zoom_band_config_test.gd chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
zoom_band_config_test.gd.uid NEON-26: ZoomBandConfig, discrete zoom input, CameraState sync 2026-04-08 22:32:45 -04:00