Skip to content

deps: consolidated safe dependabot bumps (supabase-js, openai, radix-ui, types/node, upload-artifact)#190

Merged
iamjohnnymac merged 14 commits into
mainfrom
claude/beer-reports-notifications-ul5z47
Jun 12, 2026
Merged

deps: consolidated safe dependabot bumps (supabase-js, openai, radix-ui, types/node, upload-artifact)#190
iamjohnnymac merged 14 commits into
mainfrom
claude/beer-reports-notifications-ul5z47

Conversation

@iamjohnnymac

Copy link
Copy Markdown
Owner

Consolidates the open dependabot PRs into one locally-verified bump:

Excluded — left for a future migration: react-leaflet-cluster 4 (#168) hard-requires React 19 via @react-leaflet/core 3 (we're on React 18); Next 15 (#170) and Tailwind 4 (#169) are major framework migrations, not merge-button bumps.

Verified locally at this commit: tsc --noEmit clean, 321 tests pass, full next build succeeds.

Dependabot will auto-close #166/#167/#171 once this lands on main.

https://claude.ai/code/session_01HRdu5eYTJoUZ5sPJqVUzkk


Generated by Claude Code

claude added 14 commits June 10, 2026 04:01
- New src/lib/slackNotify.ts: posts to a Slack incoming webhook
  (SLACK_WEBHOOK_URL env var), best-effort and never throws
- /api/price-report POST now pings Slack the moment a report lands
  (price report, happy hour report, or stale-price flag)
- Daily price-check cron now also checks the review queue and sends
  a reminder listing pending price reports (with oldest age) and pub
  submissions; silent when the queue is empty
- Piggybacks on the existing cron because Vercel Hobby caps cron jobs
  at two and both slots are taken

https://claude.ai/code/session_01HRdu5eYTJoUZ5sPJqVUzkk
- Happy hour row no longer reads 'TBC · 7 days 4pm - 5pm': the schedule
  is the value when the price is unknown, and '7 days' renders as
  'daily'; when the price IS known it shows red with the schedule on a
  right-aligned sub-line, so the dotted leader never gets crushed
- Checked row flags stale prices: aging/stale dates render amber with
  '· Nd ago' appended (recency tier now passed into the receipt)
- 'from an aggregator lead' provenance jargon is now 'spotted online',
  moved to its own SOURCE row
- Standard-pint row only renders when it differs from the hero price
  (it duplicated the big number on every non-happy-hour pub)
- Micro-type floor raised from 8px to ~10px (banner sub-line, price
  label, amenity chips, CTA); CTA flex-wraps instead of squeezing

https://claude.ai/code/session_01HRdu5eYTJoUZ5sPJqVUzkk
…r browser poll

Supabase free-tier egress warnings traced to three compounding causes:

1. ~20 server routes each pulled the full pubs table (~2.0MB) per
   revalidation via getPubs()'s select('*'), and suburb pages pulled it
   up to 8x per render (getSuburbBySlug + getSuburbPubs + getNearbySuburbs
   + getSiteStats, in both generateMetadata and the page body). One
   production build cost 167MB of egress across 1,108 requests (measured
   through a byte-counting proxy).

2. HappyHourClient re-fetched the entire table from every visitor's
   browser every 60 seconds (~122MB/hour per open tab) even though the
   live 'on now' state is derived client-side from schedules + a clock.

3. select('*') shipped columns nothing reads (context, created_at,
   phone, place_id, updated_at) plus google_opening_hours (~735KB, 35%
   of a pull) to pages that never render it.

Fixes:
- src/lib/cachedPubs.ts: unstable_cache-shared pulls, 1h TTL, tag
  'pubs'. Raw rows cached (not Pub objects) so toPub() computes live
  happy-hour status fresh per render. List pull excludes
  google_opening_hours to stay under Vercel's 2MB data-cache entry
  limit; happy-hour pages get full columns for just happy-hour pubs.
- supabase.ts: explicit column lists everywhere; aggregate helpers
  accept a pre-fetched pubs array.
- All server callers switched to the cached variants; weekly-snapshot
  cron deliberately keeps a fresh pull.
- HappyHourClient poll removed.
- /api/admin/review calls revalidateTag('pubs') on approvals so price
  changes don't wait out the TTL.

Measured: build egress 167.2MB -> 1.7MB (-99%); tsc clean; 309 tests
pass. Runtime + independent agent verification in progress before PR.

https://claude.ai/code/session_01HRdu5eYTJoUZ5sPJqVUzkk
…dead Pub.source, fix stale copy

Independent verification (agent-run, against the built app through a
byte-counting proxy) found no correctness bugs; these are its three
minor flags:
- TransportHubPage (4 pubs-near-* routes) was still on uncached getPubs()
- Pub.source was dead — no pubs.source column exists in any migration
  and nothing rendered it; removed from toPub and the Pub type
- /happy-hour blurb said 'auto-refreshes every 60s' — data no longer
  refetches; the live status updates from the clock

https://claude.ai/code/session_01HRdu5eYTJoUZ5sPJqVUzkk
…red pubs cache

The happy-hour declutter on main supersedes the refresh-copy tweak from
this branch; both PROJECT-STATUS timelines kept.

https://claude.ai/code/session_01HRdu5eYTJoUZ5sPJqVUzkk
- @supabase/supabase-js 2.106.2 -> 2.107.0, openai -> 6.42.0,
  radix-ui -> 1.5.0 (dependabot #167)
- @types/node 20 -> 24.13.1 (#171)
- actions/upload-artifact v4 -> v7 in ci.yml (#166)

react-leaflet-cluster 4 (#168) excluded: its peer chain requires
React 19 (@react-leaflet/core 3), and we're on React 18 — belongs
to the same future migration as Next 15 / Tailwind 4.

Verified: tsc clean, 321 tests pass, production build succeeds.

https://claude.ai/code/session_01HRdu5eYTJoUZ5sPJqVUzkk
@vercel

vercel Bot commented Jun 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
perthpintprices Building Building Preview, Comment Jun 12, 2026 3:06am

Request Review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants