v1.6.8
v1.6.8 — Guest spawn, camera, and pill sync
Tagged 2026-09-27 on merge commit 30c39a5 (PR #168).
Summary
Patch on top of v1.6.7. Two live-play reports from Jerod, both guest-only: the guest's screen
stayed on the wrong part of the map after joining, with base icons showing in unexplored fog;
and a guest that died carrying pills could not pick them back up, then died at once driving onto
the centre one, which the host showed as a damaged live pillbox. Both were reproduced with a
real host and a real join client in one test process before anything was changed.
Fixed since v1.6.7
- Guest spawned twice.
applyBoloPreamblespawns the guest locally at a random start; the
host, which simulates guest tanks, then picks its own start and teleports the guest there
(SRTankStatus). The camera centred once on the first pick and never moved, and the first
pick counted as a fog vision source.- Fix: the join path starts the local player dead until the host places it
(joinPathInitialState,GameSession.swift).GameRenderViewre-centres whenever the
local player goes dead -> alive, matchingrefresh:'sclient.spawnedcheck in the
reference (GSXBoloController.m:2574-2598). Host and solo respawns re-centre too.
- Fix: the join path starts the local player dead until the host places it
- Own-pill pickups were never reported. The host's per-tick capture broadcast was keyed on
a pill's owner changing. A guest re-collecting pills it already owned changed only
ground -> onboard, so the guest never saw them leave the ground.- Fix: the diff in
HostGameEngine.tick()also reports ground -> onboard.
- Fix: the diff in
- Guest counted pill damage twice. A join client's dead-reckoning ran
shellTickfor
remote shells against its own world, damaging pills locally on top of the host'sSRDamage.
The guest's armour ran low, so a pill the host held at armour 1 looked destroyed; driving
onto it made the hostsuperboomthe guest.- Fix:
applyRemotePlayerUpdatetakesextrapolationMutatesWorld;UDPSessionpasses
false, keeping player state and discarding pill, base, and terrain changes.
- Fix:
- Stale fog test.
aLivePlayerWithinItsOwnVisionRectResolvesLiveleft its player dead and
had been failing sincecb1f456. The player is now alive.
Testing
Nine new tests in Bolo 2026Tests: SpawnRecenterTests (4), JoinPathSpawnTests (2),
PillDesyncReproTests (2), and one camera test in GameViewFocusRoutingTests. App suite is
162 tests. Each new test fails with its fix removed.
Live-verified by Jerod on the 1.6.8 Desktop build, 2026-09-27: every previously observed
issue is gone and nothing new appeared.
Known, not resolved in this release:
- The two
PillDesyncReproTestsand the older
guestRequestingAndLeavingAnAllianceUpdatesItsOwnStatepass when their suite runs alone and
fail inside the full app run, parallel or serial. The alliance test fails the same way
without this release's changes. Cause not found. swift testhung twice during this work and was stopped. Of the package tests that ran,
dispatchBuildRoadTerrainByteMatchesTheNewTerrainD40failed, including before any package
source was changed.
Found, not fixed
- A guest builder's pill repair costs no trees: the host never deducts them.
- A guest builder killed while carrying a pill drops it locally only (from code reading).
- No tank-follow scrolling; the reference re-centres near the view edge
(GSXBoloController.m:2600-2619).
Docs
HOSTMODELS.md moved out of docs/notes/; the two-Mac fog script, its run notes, and
U.S.A.map removed, with references updated.