fix(public): guard the live site against missing social preview imagery - #153
Conversation
The repo fix for the 7 pages missing og:image/twitter:image is already in main (#26), and test-public-social-preview.mjs guards the static files. But nothing guards the DEPLOYED site: the live tinystudio.in still serves a stale bundle, and exactly the 7 pages from the class-gap item (privacy, privacy-choices, terms, promptly/support, promptly/privacy, drishti/support, drishti/privacy) ship with no og:image and a summary-only twitter card, so shared links render as bare text cards. Add scripts/check-public-live-social-preview.mjs, which fetches all 12 public pages from the live site and requires the complete og:image block (secure_url, type, 1200x630, alt), the summary_large_image card, matching twitter:image, and that every referenced image file is served. It runs as npm run site:check-live-social-preview and from the nightly live-site-check workflow, following the #84 pattern for live-site guards (live-only, network-tolerant, SKIP_LIVE_CHECKS escape hatch, deliberately NOT part of npm run ci so the blocking chain stays green on repo state). Verified against the live site: the guard fails with exactly the 7 stale pages (21 failures) while all three social images are served, so the staleness alarm is live. All public-site tests pass; npm test's unrelated retention failure pre-exists on clean origin/main. Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
…ive blocked on missing Cloudflare token Lane 1 verification report: the 7-page social preview imagery fix is already merged to main (PR #26, ffe6e1f) and test-public-social-preview.mjs guards the static files. The live tinystudio.in still serves the stale bundle with exactly the 7 pages from the item missing og:image, and live delivery is blocked only by the missing CLOUDFLARE_API_TOKEN secret (NEEDS-NISH, deploy-pipeline item). Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
|
Warning Review limit reached
Next review available in: 22 minutes Limit details: You’ve used the included review currently available. Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits within each organization. For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Free Run ID: 📒 Files selected for processing (4)
Note 🎁 Summarized by CodeRabbit FreeYour organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login. Comment |
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
PR #152 landed a live-tap-targets job in live-site-check.yml at the same place this branch adds live-social-preview. Kept both as separate jobs with the same scaffolding; YAML re-validated.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
The item
Social preview imagery missing on 7 of 12 public pages — class gap after the closed /promptly work.
Finding
The source fix is already merged to main (PR #26,
ffe6e1f): all 12 pages inpublic/declare the fullog:image+twitter:imageblocks, andscripts/test-public-social-preview.mjsguards the static files. The gap is live-only: the deployed tinystudio.in is a stale bundle and exactly the 7 pages from the item (privacy, privacy-choices, terms, promptly/support, promptly/privacy, drishti/support, drishti/privacy) still ship with noog:imageand asummary-only twitter card. Live deploy is blocked by the missingCLOUDFLARE_API_TOKENsecret (NEEDS-NISH, canonical deploy-pipeline item).What this PR adds
A live-site guard so the stale state can never silently recur:
scripts/check-public-live-social-preview.mjs— fetches all 12 public pages from the live site and requires the completeog:imageblock (secure_url,type, 1200x630,alt), thesummary_large_imagecard, matchingtwitter:image, and that every referenced image is served.npm run site:check-live-social-preview.live-social-previewjob in the nightlylive-site-check.yml, following the fix(public): keep live-site soft-404 check out of the blocking ci chain #84 pattern (live-only, network-tolerant,SKIP_LIVE_CHECKS=1escape hatch, deliberately not innpm run ciso the blocking chain stays green on repo state).Verification
node --checkpasses; all public-site tests pass (test-public-social-preview.mjsand the other 9 public tests).npm test's retention failure is pre-existing and unrelated (reproduces on a clean origin/main checkout; it inspects the canonical main worktree's private state, not this lane).Live delivery is still blocked
This PR makes the stale deployment loud (nightly red run until the token exists), matching how the soft-404 and heading-hierarchy gaps are guarded. The actual byte-level delivery of the merged imagery fix needs the Cloudflare token:
gh secret set CLOUDFLARE_API_TOKEN -R nish3451/tinystudio-in— then the deploy lane publishes on the next main push.