What's new since build 18
Build 19 was build 18 re-uploaded, with nothing new in it, so everything below is new to you whichever of the two you are on.
Until this build nothing on the server ever scored a challenge. Two anglers competed, the window closed, and neither was ever told who won. A finished challenge is now headed RESULT rather than STANDINGS, names the winner, and emails everyone who took part.
Every catch by every competitor is on the board: the picture, the measurement, where and when it was caught, the clip, and the angler's own tape figure beside the app's.
That includes the catches that did not count, and why. A fish the measurement pipeline would not stand behind is shown and marked as being checked, rather than quietly missing — that is precisely the catch a losing angler will go looking for. The board reads the same from either side, because a scoreboard that differs by viewer is one nobody can argue with.
An angler's photo and their best catch both open full screen, with pinch to zoom.
If camera access had been denied, or another app held the camera, Start Recording still looked normal and the app quit instead of recording. It now asks for camera access properly, and says so when it cannot get it. The permission was never actually being requested at all — the check existed and was never called.
This fix was written for a build 19 that ended up carrying build 18's binary instead, so it reaches anyone for the first time here.
The "no coin in shot" warning is also a little stricter now, so fewer captures come back unmeasurable.
The rules screen argues that a challenge is a contest of skill with no house and no odds, and then the next heading said "THE POT GROWS". A betting product's vocabulary wrapped around a tournament's argument undercuts the argument.
Visible on the composer, the challenge detail screen, the rules screen and in every challenge email.
This is the one worth knowing about. The Firebase extension that the app's mail code names as its delivery mechanism had never been installed on the project. Every message the product had ever composed — challenge invites, lock-in notices, cancellations, event receipts — was written to a collection nobody was watching. All 16 documents queued at the time carried no delivery stamp.
The PvP notification bug was never four challenges that reached nobody, as a past event. Nothing had ever reached anybody. It is installed and verified: a real invite composed, queued, sent and confirmed in an inbox rather than in spam, by reading the mailbox instead of trusting the send receipt.
No app change was needed for that, so an angler still on build 19 gets the same benefit.
The iOS suite runs 134 tests, all passing, with 8 skipped and no restarts. The Android suite runs 115, all passing. Settlement has 24 end-to-end checks.
The 8 skips are data-dependent and each says so rather than passing quietly: three need catches in the local store, five need an event near the simulator's location.
Tape-measure a fish and enter the number. It is the only real reference we have, and every one of them makes the measurements better.
Second: finish a challenge and check the result screen against what you think should have happened, especially if you lost. That path has never run outside a test.