A menu scanner does not fail loudly. It fails by handing you a wine called “£15 €24” and moving on. Most of today went into A Wine App, and most of that into the price pass: one Coravin list with a 75ml and a 125ml column and no bottle column at all broke three assumptions at once. Apple’s table detection merged the two prices into a single cell, the engine was picking the bottle price by position — rightmost wins — and rows with missing cells were renumbering themselves out of alignment with the header map. All three are fixed by reading what the menu calls its columns instead of guessing from layout.
The direction change came in the photo requeue. Re-staging bottle images from a larger source did nothing on its own: three separate places treat a wine as finished, and each is right for a normal re-scrape. The fix was to repoint the image at the new photo rather than clear it. Alongside that, a region resolver found 11 producers out of 400 and recorded the rest as absent — they were not absent, the search was matching the wrong string.
dennismilton.com got a 404 page, share cards, sitemap and a Danish translation; before this morning every wrong URL answered 200 with the front page. Plus small passes on Havnetryk, The Cloudy Brain and the ideas repo.
Tonight: build 156 is on TestFlight and the scan parser finally handles menus that do not behave.