Skip to content

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.json now 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; consolidated DEAD_DOMAINS registry into scripts/post_utils.py with two intentionally-scoped lists; replaced as any casts in PostManager.tsx with proper union types.

April 16–17 — Senior Front-End Audit (6 PRs)

  • SVG logo — 25 KB JPG replaced with 650 B SVG (currentColor for theme adaptation). Every page loads lighter.
  • Image pipeline — New remark plugin transforms every markdown ![]() into <picture> with WebP source + explicit width/height (read via sharp) + loading="lazy". PostCard and BlogPost hero get the same treatment via a shared getImageInfo() utility. 7,503 previously-unused WebPs now actually serve.
  • Accessibility pass — Skip link, aria-current="page" on active nav, aria-expanded/aria-pressed on toggles, dynamic aria-label on the theme button, :focus-visible outline rule, @media (prefers-reduced-motion) override.
  • Contrast fixes — Light-mode --color-stone darkened from #78716C to #655F5B (4.3:1 → 5.6:1 on cream). Dark-mode --color-amber lightened 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.com CDN dependency); closed venues now render as dashed hollow rings so color-blind users can distinguish them; visible legend added.
  • Build cleanup — Latin-only @fontsource imports (33 woff2 + 33 woff files → 6 + 6, ~1.1 MB → 324 KB font bytes in dist); print stylesheet that hides chrome, switches to system fonts, and reveals external link URLs.
  • Quick winsscroll-padding-top: 5rem so anchors stop hiding under the sticky header; /posts-admin.json deindexed via robots.txt Disallow + X-Robots-Tag: noindex; orphaned BaseHead.astro deleted.
  • 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.

← Back to About