The touch panel was never miscalibrated
TFT_eSPI's own touch layer produced a panel where calibration appeared not to
hold — taps landed erratically, swipes barely registered. The cause is in
validTouch(), which requires two successive samples to agree within
20 ADC counts.
That is a stationarity test, and a moving finger cannot pass it. It is a reasonable filter for buttons and a fatal one for gestures: most of a swipe is rejected outright, and the readings that survive are whichever ones caught the finger momentarily still — which is why the symptom presents as bad calibration rather than as dropped input.
So the firmware keeps TFT_eSPI for bus arbitration and raw conversions, and replaces only the validation layer: a pressure gate first, a median of five instead of a deadband, the burst bracketed by the pressure gate at both ends, and a release that has to stay quiet for 70 ms.