Modernize the screenie runtime and deployment stack#30
Merged
Conversation
- Replace puppeteer-pool with puppeteer-cluster (concurrency via contexts) - Update dependencies (Puppeteer, Koa, Winston) and require Node >=20 - Add structured/log-format improvements (JSON option, colorized dev output, stack traces) - Introduce cluster sizing vars (SCREENIE_CLUSTER_MIN / MAX, fallback to legacy POOL vars) - Improve error handling & graceful SIGTERM shutdown (cluster.idle + close) - Modernize Dockerfile: Node 20 slim, system Chromium, non-root user, npm ci, build arg PUPPETEER_SKIP_DOWNLOAD - Add .dockerignore to shrink build context - Add GitHub Actions workflow (multi-arch build & push to GHCR with cache) - Add package-lock.json and caching-friendly Docker layer ordering - Update README for new org (mailmojo), cluster usage, new env vars, Docker instructions - Enhance logging clarity & reduce noisy missing-url errors path (docs guidance) BREAKING CHANGE: - Node.js version requirement raised to >=20. - puppeteer-pool removed; replace SCREENIE_POOL_* with SCREENIE_CLUSTER_* (legacy names still recognized but should be migrated). - New logging format (may affect log parsers if relying on previous plain output).
fdanielsen
approved these changes
Apr 13, 2026
Member
fdanielsen
left a comment
There was a problem hiding this comment.
LGTM, I've tested a local build of the Docker image and used it in our local app stack running simple tests.
Just consider changing the new version everywhere to 5.0.0.
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.
Update the service to use the current Puppeteer stack and tighten the request lifecycle around it.
Replace the old browser pool with puppeteer-cluster, refresh the runtime dependencies, and require Node.js 20. Improve request validation and error handling for invalid URLs, unsupported formats, upstream load failures, and shutdown behavior so the server fails more predictably.
Modernize the container and release plumbing by updating the Docker image to use system Chromium with a non-root runtime, refreshing the publish workflow, and syncing the README and changelog with the current behavior.