# Changelog of Website Screenshot & PDF - Fixed Price per File (`tidyfetch/screenshot-fixed-price`) Actor

- **URL**: https://apify.com/tidyfetch/screenshot-fixed-price/changelog.md
- **Full Actor documentation**: https://apify.com/tidyfetch/screenshot-fixed-price.md

## Changelog

### 0.1 (build 0.1.4 and later) - fixes after a third-party review, 2026-09-26

- Cookie banners: accept buttons are pressed only inside a consent banner (a container named after cookies or consent, a dialog whose own text is about cookies, or a consent-manager frame). An "OK" or "I agree" elsewhere on the page is no longer pressed.
- robots.txt: redirect targets are checked against their own site's robots.txt before storing; a disallowed target gives `skipped-robots` and is neither stored nor charged.
- README and input descriptions: the run fee is stated wherever charging is described; "successful" means a file was stored, not that the content was validated; the scope of `maxHeightPx`, `timeoutSecs` and `ignoreHttpsErrors` is described exactly.
- Title: "per File" instead of "per Page" (a multi-page PDF is one file).

### 0.1 (first Store release, 2026-09-26)

First version.

- PNG / JPEG / PDF output, one file per URL, stored in the key-value store with a download URL in the dataset.
- Full-page or viewport capture, `maxHeightPx` cap (default 20,000 px), `clipSelector` for a single element.
- Cookie-banner auto-accept for common consent libraries and multilingual "Accept" buttons; CSS fallback that hides what could not be clicked.
- Sticky / fixed elements frozen so full-page captures show them once; bottom-anchored widgets hidden.
- Device emulation (Playwright device names) and dark mode.
- Lazy-load scrolling before full-page captures.
- Colour emoji and CJK fonts installed in the image.
- `robots.txt` respected by default (`User-agent: *` rules); skipped URLs are not charged.
- Per-URL timeout; one failure never stops the run.
- Pay-per-event billing: `run-started`, `screenshot`, `pdf`; per-file events are charged only for stored files; stops with `skipped-budget` rows when the run's maximum charge is reached. Store + charge run under a lock so parallel pages cannot exceed the run's maximum charge.
- HTTP 4xx/5xx answers are errors (not stored, not charged) unless `captureErrorPages` is on.
- A charging failure after the file was stored keeps the `ok` row and reports `chargeError` / `charged: 0`.
- robots.txt: only `User-agent: *` groups are evaluated (merged); 5xx / unreachable robots.txt skips the site's URLs (RFC 9309), 404 means no rules.
