Skip to main content

v0.0.119

Released Oct 20, 2026


Release Notes

A release about tidying up after audits that never finished, and about how the accessibility checks read <style> blocks. Crawls that killed audits leave behind are now retired instead of piling up in project.db, squirrel self disk --prune carries on past a project it cannot open, Ctrl-C marks the crawl it interrupts as stopped, and a :root block of design tokens no longer turns a page's accessibility failures into warnings.

Thanks to @deniskern, whose report is behind the abandoned-crawl fix below.

Fixed

  • The accessibility checks that skip hidden controls no longer report every unnamed control on a page as unconfirmed because of a :root block of design tokens. Since 0.0.118, a custom property whose name or value mentions display (such as --font-display: swap, or the "Display" typography preset WordPress writes into its global styles) next to a calc() or var() made the whole page unreadable. So a11y/button-name, a11y/aria-labels, a11y/aria-command-name and the other naming checks, and a11y/aria-hidden-focus, warned where they should fail.
    • squirrel now reads a style block one declaration at a time. A declaration other than display, visibility or all, such as a custom property or transition: all .2s next to a var(), no longer makes a rule unreadable, though an escape, an unclosed string or an animation still can. A :root rule now applies to <html> only.
    • A control with the hidden attribute, in a closed <dialog> or in an unopened popover, that a <style> rule or a plain inline style shows again is now unconfirmed, not a failure, on a page that also loads an external stylesheet, since a rule there such as [hidden] { display: none !important } may keep it hidden. An inline display with !important still counts.
    • Still unconfirmed, possibly across the whole page: controls that a <style> rule squirrel cannot settle could reach, when its declarations can only show an element, such as WordPress's .wp-block-image>a { display: inline-block } (#940), and controls on a page whose <style> inlines a hiding rule that uses :where() or :is(), such as Tailwind v4's [hidden]:where(…) preflight (#951).
    • See a11y/button-name.
  • Crawls left behind by audits that were killed before they finished (kill -9, a watchdog, an out-of-memory kill) are now retired: by [storage] keep_audits after an audit, unless keep_audits is off, and by squirrel self disk --prune. A crawl qualifies once a newer audit has finished and the crawl has fetched nothing for more than 30 minutes (7 days for a stopped or paused crawl, which --resume continues), and is retired at the next such pass. These crawls no longer take a slot of the keep_audits window, and a failed crawl follows the same rule. A crawl newer than the newest finished audit, or one that fetched a page in the last 30 minutes, may be live or waiting for analyze, and is never retired. A crawl that no longer qualifies when the pass re-checks it is skipped on its own instead of stopping the rest. Retiring a crawl drops its results and crawl data, and the crawl stays listed. See Storage.
  • squirrel self disk --prune no longer stops at the first project it cannot open. Each project is handled on its own, and one that fails is reported with its reason. After pruning, the run prints how many projects were pruned, had their rebuild skipped and failed, and exits 1 when a project failed. The rebuild is skipped, with a stated reason, when the measured free space is below what it needs. --dry-run lists abandoned crawls apart from finished audits, with their status and age, and the unfinished crawls it leaves alone, with their last activity. See self.
  • Ctrl-C during squirrel audit marks the crawl the audit was still fetching as stopped, the state --resume continues, so it no longer looks like a killed audit's crawl. Marking it is best effort: if another process holds the database locked for more than a second, the crawl stays running.

Update to this version

squirrelscan will auto-update, or run this command to update now:

$

Downloads

macOS

Detected
Intel
squirrel-0.0.119-darwin-x64 · 76.3 MB
Download
SHA-256
Apple Silicon (M-series)
squirrel-0.0.119-darwin-arm64 · 69.8 MB
Download
SHA-256

Linux

x64 (musl/Alpine)
squirrel-0.0.119-linux-x64-musl · 81.6 MB
Download
SHA-256
ARM64
squirrel-0.0.119-linux-arm64 · 87.4 MB
Download
SHA-256
ARM64 (musl/Alpine)
squirrel-0.0.119-linux-arm64-musl · 80.8 MB
Download
SHA-256
x64
squirrel-0.0.119-linux-x64 · 87.5 MB
Download
SHA-256

Windows

x64 (Intel/AMD)
squirrel-0.0.119-windows-x64.exe · 93.5 MB
Download
SHA-256

Audit your site in one command

SEO, performance, security, accessibility and agent experience issues, with exact fixes for your coding agent.

Install
$

No account needed for the CLI. Cloud audits include free monthly credits.