Skip to content

[Sync to prerelease] Blog post: Chrome Headless Shell in Quarto#1992

Merged
cwickham merged 1 commit intoprereleasefrom
sync-1991-to-prerelease
Apr 14, 2026
Merged

[Sync to prerelease] Blog post: Chrome Headless Shell in Quarto#1992
cwickham merged 1 commit intoprereleasefrom
sync-1991-to-prerelease

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

Description

Sync of #1991 to prerelease.

Original PR

Blog post: Chrome Headless Shell in Quarto

Summary

  • Adds a blog post skill (.claude/skills/blog-post/) codifying conventions from 40+ existing quarto.org/blog posts: frontmatter schema, post-type structures, writing voice, technical conventions, and thumbnail design patterns.
  • Drafts a feature announcement blog post for chrome-headless-shell — the replacement for Puppeteer Chromium added in 1.9 but never formally communicated. Covers what it is, why the switch, migration path, CI compatibility, and the v1.9/v1.10 timeline.
  • Adds pr-preview Quarto profile and draft detection to the deploy preview workflow so that draft: true pages are rendered and visible in PR previews, with inline warnings in the preview comment.
  • Adds a draft-check.yml required status check that blocks merging PRs containing draft: true pages. Uses a reusable composite action (.github/workflows/actions/detect-drafts/) shared with the preview workflow.
  • Adds _tools/publish-date.ts — a quarto run script to set a blog post date to today and rename its directory to match. Zero dependencies (uses Deno stdlib bundled with Quarto).
  • Adds _tools/README.md documenting all project scripts.

Draft page handling in PR previews

quarto render (used in CI) hides draft: true pages by default — unlike quarto preview (used locally) which always shows them. This meant draft blog posts were blank in Netlify deploy previews, making them impossible to review.

This PR fixes that with three changes:

  1. _quarto-pr-preview.yml — A Quarto profile that sets website: draft-mode: visible, used by the preview workflow so drafts render in deploy previews.
  2. Draft tagging in PR comments — The preview comment now tags draft pages inline (⚠️ draft) and shows a warning callout reminding to remove draft: true before merging.
  3. draft-check.yml — A standalone workflow (no paths-ignore, runs on all PRs) that fails if any changed .qmd file has draft: true. This is configured as a required status check on main, blocking merge until the draft status is removed. Admin override is available for intentional draft merges.

Review feedback addressed

  • Removed specific platform examples (Raspberry Pi) from arm64 bullet per Charlotte's feedback
  • Redesigned thumbnail: light background (#F0F5F9) with Quarto blue (#5286AB) elements for better contrast
  • Documented Quarto brand colors and contrast guidelines in the thumbnail skill guide
  • SVG source saved alongside PNG for future editing (PNG is the thumbnail, not SVG)

* add blog post writing skill

Skill codifies conventions derived from 40+ existing quarto.org/blog posts:
frontmatter schema, post-type structures, writing voice, and technical
conventions (images, code blocks, links, callouts). Uses progressive
disclosure with SKILL.md core + references/post-types.md loaded on demand.

* draft blog post: chrome-headless-shell announcement

Feature announcement covering chrome-headless-shell as replacement for
Puppeteer Chromium: what it is, why the switch, migration path, CI
compatibility, and v1.9/v1.10 timeline.

* add thumbnail design guide to blog post skill

Gap found during live test: skill had no guidance on thumbnail dimensions,
visual style, or design patterns. Adds references/thumbnail-guide.md with
conventions derived from 40 existing thumbnails (1200x630 standard, steel
blue palette, per-type patterns).

* add thumbnail and icon attribution to blog post

Thumbnail created from HTML/CSS with actual SVG logos and screenshotted
at 1200x630. Chromium icon by Jeremiah (CC BY 4.0), arrow from SVG Repo
(Public Domain). Attribution line at end of post matches existing blog
convention (see 1.9 release post OpenMoji credit).

* update thumbnail guide with HTML/CSS creation method

Documents the HTML-to-screenshot approach for creating thumbnails with
real SVG logos, icon sourcing (svgrepo.com PD, icon-icons.com CC BY),
and the attribution format used in existing blog posts.

* show draft pages in PR deploy previews

Add pr-preview Quarto profile that sets draft-mode: visible, so draft
blog posts and pages are rendered in Netlify deploy previews. Without
this, quarto render (used in CI) hides drafts by default — unlike
quarto preview (used locally) which always shows them.

* detect draft pages in PR previews and warn before merge

- Render drafts as visible in deploy previews (pr-preview profile)
- Detect draft: true pages among changed files
- Tag draft pages inline in the Modified Documents list
- Add a WARNING callout listing all draft pages
- Create a "No draft pages" commit status check (can be made required
  in branch protection to block merging with drafts)

* extract draft detection into reusable composite action

Moves draft: true detection to .github/workflows/actions/detect-drafts/
composite action, used by both preview.yml (PR comment tagging) and the
new draft-check.yml (standalone required check). The dedicated workflow
runs on all PRs with no paths-ignore, so the required check is always
created.

* simplify draft warning in PR comment to avoid duplicate links

* document draft-check workflow and detect-drafts action in README

* document pr-preview profile in README

* fix review findings: shell injection, POSIX grep, .md coverage, CI wording

- Use env var instead of expression interpolation for changed-files input
  in composite action (shell injection risk)
- Replace \s with POSIX [[:space:]] in grep pattern (portability)
- Include .md files in draft detection (draft-check.yml and composite action)
- Fix CI section in blog post: v1.9 shows deprecation warning, v1.10
  does the transparent redirect

* update thumbnail background to Quarto blue (#5286ab)

* shorten blog post description for listing card

* address review feedback: light thumbnail, remove platform examples

- Redesign thumbnail with light background (#F0F5F9) and Quarto blue
  (#5286AB) elements per Charlotte's contrast feedback
- Remove "Raspberry Pi or AWS Graviton" platform examples from arm64 bullet
- Save thumbnail SVG source alongside PNG for future editing
- Update image-alt to match actual visual content
- Add brand colors table and contrast guidance to thumbnail skill guide
- Make screenshot tooling generic (not tied to specific CLI tools)

* fix file:// example in thumbnail guide to include --allow-file-access

* add prerequisites section to thumbnail guide for tool availability

* remove draft: true from chrome-headless-shell blog post

* note in thumbnail guide: always use PNG, never SVG directly

SVGs don't center properly in listing cards — the HTML uses flexbox
for layout which standalone SVGs can't replicate.

* update blog post date to 2026-04-14 and rename directory to match

* add publish-date script for blog post date + directory rename

TypeScript script (quarto run) that sets the post date to today and
renames the directory to match. Zero dependencies — uses Deno stdlib
bundled with Quarto.

* add README to _tools/ documenting project scripts

* note renv/pipenv setup in _tools README

* fix publish-date: rename dir even when date matches, rename before write

Two fixes from code review:
- Don't exit early when date matches — directory prefix may still be stale
- Rename directory before writing file to avoid partial updates on failure

(cherry picked from commit f91afd4)
@cderv
Copy link
Copy Markdown
Collaborator

cderv commented Apr 14, 2026

/deploy-preview

@github-actions
Copy link
Copy Markdown
Contributor Author

📝 Preview Deployment

🔍 Full site preview: https://deploy-preview-1992.quarto.org

🔄 Modified Documents

@cwickham cwickham merged commit 7a06644 into prerelease Apr 14, 2026
@cwickham cwickham deleted the sync-1991-to-prerelease branch April 14, 2026 17:11
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