Bug bash — September 4, 2026
35 bugs fixed · fifteen accessibility, twenty behavior
Three rounds, the same day: nine bugs found in the site's first audit, nine more found going back over the accessibility and usability findings still open after that round, and fifteen more from a third pass that went looking for what those two rounds' own fixes had exposed or left standing — including one, a roadtrip deep-link showing zero results no matter how long you waited, that had likely been broken for a while. Every one below shipped, and every one was checked against a full rebuild of the site before it did. Two more accessibility findings, flagged in earlier audits and still open when this page first went up, were addressed in a follow-up pass later the same day — a bookmark and an itinerary row hiding their own controls from some screen readers, fixed, and a store number on the document pages that fell short of readable contrast, also fixed; a second color on that same finding, the top bar's wordmark, was a decision made to keep rather than a fix. This page is what the Bug Bash line on the roadmap points at.
By severity
- Critical 1
- High 12
- Medium 20
- Low 2
By section
- Critical
- High
- Medium
- Low
| Section | Critical | High | Medium | Low | Total |
|---|---|---|---|---|---|
| Accessibility | 0 | 7 | 7 | 1 | 15 |
| Behavior | 1 | 5 | 13 | 1 | 20 |
| All 35 | 1 | 12 | 20 | 2 | 35 |
Bashed Bugs — 35, worst first
| Severity | Section | Issue |
|---|---|---|
| critical | behavior | A roadtrip deep-link showed zero results, permanently Sep 4Every "Find 'Em" button on all 20 roadtrip pages, and any link built the same way, landed on a results screen showing nothing — not slow, not occasionally, every single time, for as long as the page sat open. The map's route data loads a moment after the page does, and the very first search always ran before it arrived; the retry that was supposed to run once it did was comparing against a cache of that first, empty attempt and never noticed the data had shown up. The retry now knows the difference between "no route yet" and "a route that's actually here." |
| high | accessibility | Two controls lost keyboard focus after use Sep 3Resetting the search and saving an itinerary both dropped keyboard focus back to the top of the page instead of the control that made sense next — and saving an itinerary could silently focus a control hidden inside a closed panel. Both now land focus somewhere you can act on, opening that panel first if it's shut. |
| high | accessibility | Some form labels weren't actually attached to their fields Sep 3A screen reader or voice-control user heard some fields by a generic name instead
of the label sighted users read beside them — an |
| high | accessibility | The map hid its own dots from assistive tech Sep 4The map carried |
| high | accessibility | A zoomed map couldn't be panned by keyboard, and trapped scroll on a phone Sep 4Zoom worked from a keyboard; pan didn't — arrow keys did nothing. And once zoomed
in, the map's |
| high | accessibility | The results weren't marked up as a list Sep 4The result cards were a plain stack of |
| high | accessibility | The phone menu didn't behave like the dialog it looked like Sep 4Opening the phone nav didn't trap focus inside it or mark it as a dialog, so a screen reader user tabbing through could wander back onto the page underneath a menu that was still visually open, and a link inside it threw focus back to the top of the page on activation instead of wherever it actually landed. |
| high | accessibility | A bookmark row and an itinerary row hid their own controls from some screen readers Sep 4A bookmark's Directions link and Remove button, and an itinerary's Delete button,
were nested inside the |
| high | behavior | Resetting the search left "Open now" armed and hidden Sep 3Reset Everything cleared every other filter but left the Open Now toggle on — and then hid the Reset button itself, since the toggle was the only thing left set. Reset now clears it too. |
| high | behavior | Some roadtrip pages listed stops in the wrong direction Sep 3A handful of the named roadtrip pages measured mileage from the wrong end of the drive, so the stop table ran backwards — starting at the destination instead of the origin. Fixed for all eight named drives. |
| high | behavior | The "halfway" stop wasn't actually near halfway Sep 3The stop named as roughly the midpoint of a drive was picked by its position in a list, not by actual mileage — on a long drive that could be nowhere close to the real halfway point. It's now the stop whose own mileage is nearest the true midpoint. |
| high | behavior | A roadtrip page's own link didn't match its own stated corridor Sep 3A page would say "stops within 10 miles" and then link to a search that didn't carry that number, so the results you landed on didn't match the sentence you read. The link now carries the same corridor width the page states. |
| high | behavior | A long hours line was clipped with no ellipsis on a phone Sep 4The one-line hours summary on a result card was supposed to end in "…" when it ran out of room; instead it just got cut off mid-word, because the CSS that was supposed to add the ellipsis silently doesn't work the way the line was built. It's built a different way now, and the ellipsis actually shows. |
| medium | accessibility | Torchy's and P. Terry's name tags fell short on contrast Sep 4Each chain's own color was reused as the small text naming it on a result card — fine for a color swatch (3:1), not enough for text (4.5:1), and Torchy's and P. Terry's missed it in most color schemes. The label now reads in the page's own high-contrast text color; the color stripe beside it still carries the chain's look. |
| medium | accessibility | Several controls were smaller than a comfortable tap target Sep 4The map's zoom buttons, the "More" button on a chain card, and the dots on the map itself all measured under the usual 44px comfortable-tap floor on a phone. Zoom buttons and "More" are bigger now; each map dot keeps its small visual size but gained an invisible, larger tap area centered on the same point. |
| medium | accessibility | The skip link on 86 document pages moved the scroll but not the focus Sep 4A skip link is supposed to put your next keystroke inside the content it names — this
one scrolled the page there and left focus sitting wherever it already was, because a
browser will not move focus to a plain |
| medium | accessibility | A document page's way home and its map link had no name a screen reader could use Sep 4The breadcrumb's link back up a level carried no indication it was a link beyond its styling, and the map thumbnail's link was named after the picture rather than what tapping it does. Both now carry a real accessible name. |
| medium | accessibility | A filter that would empty the results said so only in 35% opacity Sep 4A chip for an amenity that would leave nothing in the results dimmed itself but stayed exactly as pressable, with nothing in its accessible name saying why tapping it might feel like it did nothing. It now carries a real disabled state a screen reader announces, not just a look a sighted eye reads as one. |
| medium | accessibility | A store's number on the document pages fell short of readable contrast Sep 4The top bar's "Find 'Em" wordmark and a store's number in a city or attribute page's table both read in a brand color sized for a badge or a dot, not for 11px text — 2.34:1 and 3.06:1 against their background, both well under the 4.5:1 small text needs. The store number is fixed: it stays in its chain's own color rather than going neutral — the same mark the heading rule and the fact-card stripe beside it wear — just lightened along that chain's own hue only as far as text needs, so H-E-B's number is still visibly H-E-B's red and Torchy's still visibly Torchy's purple, each now clearing 4.5:1. The wordmark is a call Dave made rather than a fix: a shade that clears 4.5:1 on this dark bar reads as a washed-out pink next to the vivid red everywhere else on it (the Find 'Em button, the fixed store number, the heading rule) — a dark background and a small saturated red are both low-luminance, so the trade-off holds regardless of which red you start from. Kept the brand's own red, contrast shortfall (2.34:1) knowingly accepted, same shape as the CSS/document- page budget items above. |
| medium | accessibility | Two different controls were both named "Near me" Sep 4The search-mode button and the button that asks your browser for a GPS fix read identically in a screen reader's element list, eight lines apart, and only one of them has a privacy consequence. The GPS button is named "Locate me" now. |
| medium | behavior | Roadtrip mileage was cached without a direction Sep 3A drive from A to B and the same drive from B to A shared one cache entry, so the second direction you searched silently got the first direction's numbers back. The cache key now includes which way the drive runs. |
| medium | behavior | "Open now" never rechecked the clock Sep 3A tab left open past a store's closing time kept calling it open, because nothing ever re-ran the check after the initial search. The page now rechecks once a minute while the tab is visible, and immediately when you switch back to it. |
| medium | behavior | A malformed saved-trip record could break the whole page Sep 3Yer Stuff data lives in your browser, and one bad record in it — from an old version of the page, or a manual edit — could throw an error that broke the page on load. Saved trips are now checked record by record, and a bad one is dropped instead of crashing anything. |
| medium | behavior | The sticky bar's "Find 'Em" button didn't find anything Sep 4The red pill in the bar that follows you down the page was named and colored identically to the button that runs a search, but tapping it only scrolled you back to the search panel — the results on screen never changed. It now runs the search first, the way its name always said it would. |
| medium | behavior | A returning visitor could be silently shown a stale build Sep 4The site caches itself so it still works with no signal, which is the whole point — but that means a tab you already had open can sit on yesterday's data while the page's own "Data Freshness" line still reads as current. A small, dismissable notice now offers a reload when a newer version is ready. |
| medium | behavior | An itinerary's date field quietly discarded whatever you typed Sep 4The date box on a saved itinerary looked exactly as editable as the time and minutes boxes beside it, but the date can't actually be changed after the fact — the itinerary is filed under that date — so any edit was silently thrown away and reverted the next time you opened the page. It's shown as plain text now: nothing to type into, nothing to quietly ignore. |
| medium | behavior | The breadcrumb in the page's structured data disagreed with the one on the page Sep 4On all 86 document pages, what a search engine reads as the page's location in the site and what a visitor actually sees printed at the top could name different paths. Both are now built from the exact same list, so they can't drift apart again. |
| medium | behavior | Rudy's and P. Terry's chain pages had each other's headline Sep 4One chain's hub page promised amenities it doesn't publish any of; the other's hid the ones it actually has. The titles were swapped between the two. Fixed. |
| medium | behavior | A world record was stated as this site's own claim Sep 4Buc-ee's "world's largest" badges — on the store table, on a bookmark, on a saved itinerary, and missing outright from every roadtrip corridor page that passes one — read as arithmetic this site worked out, with no source and no read date attached. Every place the badge appears now says whose count it is, links where it came from, and names when it was read. |
| medium | behavior | Whole tiers of facts never reached the file that tracks them Sep 4Every city page and the provenance page compute real facts and questions about themselves, but the record-keeping that feeds the site's own duplicate-answer and minimum-fact checks never picked them up — 25 city pages and the provenance page were invisible to their own quality gate. They're counted now, and two answers that turned out to be identical across different towns once they were finally checked got named for the town they're about, fixing the collision on their way in. |
| medium | behavior | 45 pages' structured data dropped store hours the table right above it showed Sep 4A chain hub page and an attribute page already told a search engine what hours each store keeps; a city page or a roadtrip page telling the exact same story left hours out of its own structured data entirely. Both now carry it, off the same lookup every other page tier already uses. |
| medium | behavior | A store that hasn't opened yet still offered you Directions to it Sep 4A "coming soon" listing carries whatever address the chain announced, which for a store under construction is sometimes a rezoning filing or an empty lot — Directions sent you there anyway, with nothing on the card saying that's a bad idea. The button is gone from a coming-soon card; the announcement itself is still there. |
| medium | behavior | Past ninety days, a store's hours line turned into machine syntax Sep 4Once a store's hours data aged past this site's own ninety-day freshness window, the card fell back to printing the raw database format underneath it instead of a plain sentence — clipped mid-string on a phone, and never meant for anyone to read. It reads as an actual sentence now, whatever its age. |
| low | accessibility | Two of the four jump links didn't say what their section said Sep 4The masthead's compact nav read "Places" and "Trips" while the sections they land on are headed "The Places" and "Roadtrips" — fine for a sighted reader watching the page scroll, silent for anyone reading the link list on its own. Spelled out in full now, matching the sticky bar below it. |
| low | behavior | A short drive's map picture was 99.7% empty road Sep 4A roadtrip page's hero map always framed the whole state, whether the drive itself was 400 miles or 12 — so a short corridor's actual route was a hairline nobody could make out. It now frames the drive it's a picture of. |
Ops — 3 budgets resolved
| Severity | Section | Issue |
|---|---|---|
| medium | ops | Document-page tier was 8.82 MB against a 6.5 MB budget, 2.3 MB over — the tier grew from 60 pages to 124 (Whataburger's 751 stores, How It Werks splitting into its own page) |
| medium | ops | facts.json was 329,105 bytes against a 240,000 budget, 89,105 over — grown by city and provenance-page facts, the how-we-know method fact, and the sourced-answer flag |
| low | ops | css/page.css was 30,334 bytes against a 26,000 budget, over for four straight audits — grown by a ninth color scheme and new tokens |