Skip to content

Blog post: Chrome Headless Shell in Quarto#1991

Open
cderv wants to merge 14 commits intomainfrom
blog-post-skill
Open

Blog post: Chrome Headless Shell in Quarto#1991
cderv wants to merge 14 commits intomainfrom
blog-post-skill

Conversation

@cderv
Copy link
Copy Markdown
Collaborator

@cderv cderv commented Apr 13, 2026

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.

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.

TODO

  • Thumbnail image for the blog post
  • Remove draft: true when ready to publish
  • Review post content with the team

@github-actions github-actions bot temporarily deployed to pull request April 13, 2026 12:33 Inactive
@github-actions
Copy link
Copy Markdown
Contributor

📝 Preview Deployment

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

🔄 Modified Documents

@github-actions github-actions bot temporarily deployed to pull request April 13, 2026 13:59 Inactive
@github-actions
Copy link
Copy Markdown
Contributor

📝 Preview Deployment

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

🔄 Modified Documents

⚠️ Draft Pages

Warning

This PR contains pages with draft: true. Remove the draft status before merging if the content is ready to publish.

@github-actions github-actions bot temporarily deployed to pull request April 13, 2026 14:29 Inactive
@github-actions
Copy link
Copy Markdown
Contributor

📝 Preview Deployment

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

🔄 Modified Documents

Warning

This PR contains pages with draft: true. Remove the draft status before merging if the content is ready to publish.

@cderv cderv requested a review from cwickham April 13, 2026 14:36
@github-actions github-actions bot temporarily deployed to pull request April 13, 2026 14:45 Inactive
@github-actions
Copy link
Copy Markdown
Contributor

📝 Preview Deployment

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

🔄 Modified Documents

Warning

This PR contains pages with draft: true. Remove the draft status before merging if the content is ready to publish.

cderv added 14 commits April 13, 2026 17:51
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.
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.
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).
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).
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.
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.
- 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)
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.
…rding

- 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
@github-actions
Copy link
Copy Markdown
Contributor

📝 Preview Deployment

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

🔄 Modified Documents

Warning

This PR contains pages with draft: true. Remove the draft status before merging if the content is ready to publish.

Copy link
Copy Markdown
Collaborator

@cwickham cwickham left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Post looks really good!

Puppeteer-bundled Chromium served Quarto well, but it had limitations that kept coming up:

- **System dependencies in containers**: The Puppeteer Chromium binary requires system libraries that aren't always present in minimal Docker images or WSL environments. This led to cryptic errors that were hard to debug.
- **No arm64 Linux support**: Puppeteer didn't distribute Chromium builds for arm64 Linux, leaving users on platforms like Raspberry Pi or AWS Graviton without an easy install path.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have users on Raspberry Pi? This sounds a bit more generic than may be applicable to Quarto users. Just mention AWS Graviton?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The contrast of the blue background and Chrome logo is very low. It might look better if the background was very light, and we used the quarto blue for the other elements (arrow, window, quarto logo).

Copy link
Copy Markdown
Collaborator Author

@cderv cderv Apr 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have our color brand somewhere ? We could add to the skill.
What would be the light we want ?

This one ?
image

I think having a set of example would help do that. Claude was really good to create the thumbnail with SVG once having the right pointers

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we have a set of brand colors anywhere...but we should. I usually just grab something from the website CSS. Maybe the light blue used in the light version of the homepage hero?
Screenshot 2026-04-13 at 11 50 20 AM

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