Leaderboard's 4 tab buttons in one row got their labels trimmed on
phone-width screens — split into 2 rows of 2 buttons instead, with the
button payload now shaped as inline_keyboard rows end-to-end (backend,
outbox, Worker).
/ip now also queues a static map photo (both DM and group) showing the
resolved location, alongside the existing text. Every free hosted static-
map service turned out to be dead or key-gated (verified live), so this
renders one itself: fetches a small grid of raw OSM tiles server-side,
stitches them with Pillow, and draws a pin — served via a new signed
GET /telegram/map.png endpoint, same pattern as chart.png.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>