835d26cc7e1e74802b392aada711914a5b30ef5c
Bruno and Dex floated on the felt interior while Ada, Cleo and Enzo straddled the rail, so the row looked inconsistent. The cause was that vertical lanes were hand-picked constants (0.30 / 0.15 / 0 / 0.15 / 0.30) with no relationship to the oval they were meant to sit on — any value would put some seats on the edge and others adrift, which is why tuning them kept trading one complaint for another. Seat placement now solves the felt ellipse for each seat's own horizontal position, and reads the same FELT_LEFT/RIGHT/TOP/BOTTOM constants the felt is drawn from. The rail and the seats can no longer disagree, and a test asserts every seat lands on the rail at every supported width rather than merely checking that lanes are ordered. At 384dp the solved fractions are 0.247 / 0.095 / 0.055 / 0.095 / 0.247 — a real curve rather than three seats abreast. Seat gap widened from 6dp to 10dp so the name plates have breathing room now that the shoulder seats sit nearer the crown. Verified on Galaxy S24+ geometry: nothing clipped at either edge. 261 tests, 0 failures. Lint 0 errors. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Description
No description provided
Languages
Kotlin
89.4%
HTML
10.3%
Shell
0.3%