Changelog
A history of updates to this site.
April 2026 — Performance, Accessibility & Mobile Editing
April 17 — Hit List mobile editing, Post Manager cleanup
- Hit List Phase 4 — Obsidian vault sync pipeline: separate vault repo holds a mobile-friendly markdown checklist; GitHub Action pulls, converts to YAML, validates, and commits. Ships a parser, a seeder (yaml → md), the workflow, and setup docs.
- Client-rendered search WebP —
/search.jsonnow ships pre-computed WebP paths + dimensions per post so client-rendered result cards emit<picture>elements instead of plain<img>. +14 KB gzipped JSON cost, ~700 KB saved per search session. - Post Manager P1 fixes — Fixed
content.index("---", 3)crash risk on malformed frontmatter in two Python scripts; consolidatedDEAD_DOMAINSregistry intoscripts/post_utils.pywith two intentionally-scoped lists; replacedas anycasts inPostManager.tsxwith proper union types.
April 16–17 — Senior Front-End Audit (6 PRs)
- SVG logo — 25 KB JPG replaced with 650 B SVG (
currentColorfor theme adaptation). Every page loads lighter. - Image pipeline — New remark plugin transforms every markdown
![]()into<picture>with WebP source + explicit width/height (read viasharp) +loading="lazy".PostCardandBlogPosthero get the same treatment via a sharedgetImageInfo()utility. 7,503 previously-unused WebPs now actually serve. - Accessibility pass — Skip link,
aria-current="page"on active nav,aria-expanded/aria-pressedon toggles, dynamicaria-labelon the theme button,:focus-visibleoutline rule,@media (prefers-reduced-motion)override. - Contrast fixes — Light-mode
--color-stonedarkened from #78716C to #655F5B (4.3:1 → 5.6:1 on cream). Dark-mode--color-amberlightened from #D97706 to #F59E0B (4.3:1 → 5.3:1). All WCAG AA failures closed.@media (prefers-contrast: more)override added. - Map hardening — Leaflet bundled via npm (removes
unpkg.comCDN dependency); closed venues now render as dashed hollow rings so color-blind users can distinguish them; visible legend added. - Build cleanup — Latin-only
@fontsourceimports (33 woff2 + 33 woff files → 6 + 6, ~1.1 MB → 324 KB font bytes indist); print stylesheet that hides chrome, switches to system fonts, and reveals external link URLs. - Quick wins —
scroll-padding-top: 5remso anchors stop hiding under the sticky header;/posts-admin.jsondeindexed viarobots.txtDisallow +X-Robots-Tag: noindex; orphanedBaseHead.astrodeleted. - Expected impact — Post-page mobile Lighthouse Performance ~45 → ~78, LCP ~5 s → ~2 s, CLS ~0.22 → <0.05, Accessibility ~85 → ~96.
March 2026 — The Rebuild
March 30 — Location Data Enrichment & Map Expansion
- @mention venue extraction — Identified 65+ restaurant names from Instagram @handles in post bodies (e.g., @franklinbbq → Franklin BBQ, @snowsbbq → Snow's BBQ)
- Location field cleanup — Fixed 451 posts with messy location/city fields where full captions had been dumped into venue name fields
- Texas & Louisiana coverage — Added city/region data for 16 Texas posts (Austin, Lockhart, San Antonio) and 8 New Orleans posts that were missing from the map
- Map expansion — cityCoords lookup table expanded from 46 to 104 cities, adding Austin, New Orleans, Medellin, Osaka, Chicago, and 50+ more
- Additional geocoding — 185 more venues geocoded via Foursquare, bringing total to 841 precise GPS coordinates
- Map pins — Map now shows 1,384 pins with 841 exact GPS locations across LA, Texas, Louisiana, New York, San Francisco, Asia, and beyond
March 29 — Venue Geocoding & Data Cleanup
- Foursquare geocoding — Batch-resolved 655 venues to precise addresses and GPS coordinates via Foursquare Places API
- Dead image cleanup — Stripped 5,631 dead wp.com Photon CDN image references from 397 posts, eliminating all 403 console errors
- Instagram venue extraction — Parsed restaurant names and cities from 147 Instagram captions using pattern matching and hashtag analysis
- Address extraction — Parsed 20 street addresses from blog post body content (#### heading blocks)
- Map upgrade — Map now shows 1,600+ pins (up from ~1,000), with 656 precise GPS locations
- Solution docs — Added
docs/solutions/for documenting technical solutions and runbooks
March 28 — Archive, Dark Mode & Map Enhancements
- Year/month archive — Browse all 2,100+ posts by year and month at /archive
- Dark mode — Toggle between light and dark themes; respects system preference and saves choice
- Broken image handling — Gracefully hides broken image references in old posts instead of showing broken icons
- GPS coordinates — Instagram posts now save exact GPS from EXIF data for precise map pins
- Venue/city extraction — Automatically extracts restaurant names and cities from Instagram captions and hashtags
- Map enhancements — Map now shows venue names, exact GPS pins (📍), and supports more posts
- Location backfill — Script to retroactively add GPS and city data to already-imported Instagram posts
- robots.txt — Added for proper search engine crawling
- SEO complete — Open Graph, Twitter Cards, JSON-LD, sitemap, RSS, canonical URLs all in place
March 28 — Features & Polish
- Search — Added client-side instant search across all 2,100+ posts
- Restaurant Map — Interactive map showing 782 restaurant locations using Leaflet.js and OpenStreetMap
- Best Of pages — Curated lists organized by cuisine, type, and region
- Related Posts — "You might also enjoy" recommendations on every post, matched by city, cuisine, and category
- Closed restaurant badges — 39 closed restaurants detected and marked with CLOSED badge and grayscale thumbnail
- Restaurant categorization — Extracted restaurant names (1,649), cities (1,034), and regions (810) from post content
- Image optimization — All 7,503 images converted to WebP format (40% size reduction)
March 27 — Content Import
- Instagram import — 1,649 posts imported from Instagram data export, including 4,664 images and 213 videos
- Thirsty Pig logo — Added the pig-with-beer logo to header and footer
- Social media links — Instagram, X, Facebook, TikTok, YouTube, and Vimeo links in footer
- WordPress cleanup — Removed AKPC, Popularity, AddToAny, and LinkWithin plugin remnants from 900+ posts
- Tina CMS — Added configuration for visual content editing at /admin
- GitHub + Vercel — Repository pushed to GitHub, deployed to Vercel with custom domain
- DNS setup — thirstypig.com (primary), thethirstypig.com (redirect), and www variants configured
March 26 — Foundation
- Wayback Machine scraper — Built Python scraper to recover content from three archived domains
- Content recovery — 1,166 posts fetched, 1,157 parsed, 228 duplicates removed = 923 unique blog posts
- Image recovery — 2,846 images recovered across two passes (Wayback Machine + Blogspot CDN + CDX search)
- Astro site — Scaffolded with Tailwind CSS v4, Content Collections, sitemap, RSS feed
- SEO — Open Graph tags, Twitter Cards, JSON-LD structured data, canonical URLs
- Pages — Homepage, post detail, paginated archive, category pages, about page
2017 — Original Blog Ends
Final post published on thirstypig.com in March 2017. Instagram becomes the primary platform for The Thirsty Pig's food content.
2013 — Migration to thirstypig.com
Blog migrated from thethirstypig.com to thirstypig.com on WordPress. Content coverage expanded to include restaurants in Shanghai, Taipei, Tokyo, Seoul, Hong Kong, Bangkok, and other international cities.
2009 — Migration to WordPress
Blog moved from Blogspot to WordPress at thethirstypig.com. Added categories, tags, a pig rating system, and the Cocktail of the Week series.
2008 — The Beginning
The Thirsty Pig launched on Blogspot at blog.thethirstypig.com. First posts covered LA dining favorites, Korean BBQ, ramen, and the emerging food truck scene.