Still not having received any screenshots that we could use to reproduce the reported Free Ball issues, I did a thorough review of all code related to Free Ball, Foul and a Miss, and replay handling.
The following changes have been made:
● In accordance with a WPBSA rule change from 2019, cushions will no longer affect Free Ball detection. This superseded the previous rule introduced in 1995.
● Frames will now also be terminated automatically after a foul if the point difference becomes too large (for example, when 5+ snookers would be required to draw level). Previously, this automatic termination was only checked after completing a break.
● Replays after a Foul and a Miss can now be requested indefinitely where the rules allow it.
● If full-ball contact was available before the original Foul and a Miss, the third consecutive failure from the restored position will result in an automatic loss of frame. Before the third attempt (the second replay shot), a "Last try!" warning will be displayed. This is in accordance with WPBSA rules.
● In accordance with WPBSA rules, a time foul does not count as a Miss. However, if a time foul occurs during a replay sequence, the opponent may still request another replay and continue that sequence. Choosing Pass instead will end the replay sequence.
If you still encounter a position where you believe a Free Ball was incorrectly awarded, or should have been awarded but wasn't, please post a top-view screenshot of the position so that we can analyze the geometry accurately.
Thanks!