deps: consolidated safe dependabot bumps (supabase-js, openai, radix-ui, types/node, upload-artifact)#190
Merged
Conversation
- 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
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This was referenced Jun 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Consolidates the open dependabot PRs into one locally-verified bump:
@supabase/supabase-js2.106.2 → 2.107.0,openai→ 6.42.0,radix-ui→ 1.5.0 (closes what deps(deps): bump the minor-and-patch group with 3 updates #167 proposed)@types/node20 → 24.13.1 (deps(deps-dev): bump @types/node from 20.19.37 to 24.13.1 #171)actions/upload-artifactv4 → v7 in ci.yml (chore(deps): bump actions/upload-artifact from 4 to 7 #166)Excluded — left for a future migration:
react-leaflet-cluster4 (#168) hard-requires React 19 via@react-leaflet/core3 (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 --noEmitclean, 321 tests pass, fullnext buildsucceeds.Dependabot will auto-close #166/#167/#171 once this lands on main.
https://claude.ai/code/session_01HRdu5eYTJoUZ5sPJqVUzkk
Generated by Claude Code