Releases: gabelul/pixelslop
pixelslop: v0.3.1
pixelslop: v0.3.0
Pixelslop 0.3.0 is a ground-up rework of how design quality gets measured. The scanner that used to be one monolithic agent is now a collector feeding 6 specialist evaluators. The browser runtime that depended on Playwright MCP is now direct Playwright execution. And the collector doesn't just look at static screenshots anymore — it scrolls, hovers, tabs through elements, and clicks interactive widgets to verify they actually work.
The /20 scoring model hasn't changed. The 5 pillars are the same. But the evidence behind each score is substantially deeper, and the evaluators are sharper about what they penalize.
Scanner Architecture
The old scanner was a single agent that captured screenshots, extracted styles, and scored everything in one pass. That's gone.
- Evidence collector — captures screenshots, computed styles, contrast ratios, typography, spacing, a11y snapshots, and persona checks across 3 viewports (1440px, 768px, 375px). Outputs a structured evidence bundle.
- 6 specialist evaluators — hierarchy, typography, color, responsiveness, accessibility, and slop. Each reads the evidence bundle, applies its rubric, and returns a scored JSON finding. They run in parallel and can't see each other's work.
- Evidence schema — formal contract between collector and evaluators. Defines every field, its type, which evaluator owns it, and confidence flags.
Direct Browser Runtime
Replaced Playwright MCP tool declarations with direct Playwright execution via pixelslop-tools browser * commands. No MCP middleware, no tool-call overhead.
Interaction Evidence Layer
The collector now runs 4 interaction passes after static evidence capture:
- Scroll pass — fold-by-fold screenshots, sticky element tracking, lazy image detection, below-fold typography sampling
- Hover pass — before/after computed style diffs on up to 15 interactive elements
- Focus pass — keyboard Tab-through with focus indicator detection and non-semantic clickable identification
- Promise verification — click→verify for mobile menus, anchor links, tabs/accordions. Binary pass/fail.
--deepflag — doubles budgets and raises caps for complex pages
Each pass has its own time budget with graceful bailout. Skipped probes (ambiguous triggers) classified as unverifiable, not broken.
Evaluator Wiring
- Accessibility — focus indicator gaps (>30% missing = cap at 2), non-semantic clickables (>3 = cap at 2), broken widget ARIA
- Responsiveness — broken mobile menu (cap at 2), anchor failures scoped to mobile/no-sticky-nav
- Hierarchy — scroll data for content priority signals
Interactive Installer
npx pixelslop install is an interactive wizard. Detects runtimes, picks scope, rewrites paths, configures MCP. npx pixelslop@latest update upgrades with backup + diff.
Release Infrastructure
- PR title linting via
amannn/action-semantic-pull-request - Draft release PRs for changelog review
- Changelog section grouping (features/fixes/refactoring visible, noise hidden)
Tests
781 tests (was 470 at 0.2.0). 7 interaction fixtures, prompt contract tests, evidence schema validation, browser runtime integration tests.
Breaking Changes
None. /20 scoring model, report format, plan format, CLI interface all unchanged.
pixelslop: v0.2.7
Release infrastructure: PR title linting, changelog section grouping, draft release PRs for review before publish. No functional changes.
pixelslop: v0.2.6
Interaction evidence inside the existing evaluators. The browser collector now scrolls, hovers, tabs, and clicks interactive elements — then feeds what it finds into the accessibility, responsiveness, and hierarchy evaluators. No new pillar, no scoring model change. The existing /20 score gets sharper because evaluators can see things they couldn't before: missing focus indicators, divs masquerading as buttons, broken hamburger menus.
Features
- Scroll pass — fold-by-fold page analysis with screenshots, sticky element tracking, lazy image detection, and below-fold typography sampling. Pages that scroll for 8+ viewport heights get flagged for content priority issues.
- Hover pass — before/after computed style diffs on up to 15 interactive elements at desktop. Detects elements with no hover feedback.
- Focus pass — keyboard Tab-through that tests up to 30 elements for visible focus indicators. Identifies non-semantic clickables (divs/spans with
cursor:pointeroronclickthat should be buttons). - Promise verification — click→verify loop for mobile menus, anchor links, and tabs/accordions. Binary pass/fail outcomes — if the nav doesn't open or the anchor doesn't scroll, that's a measurable failure.
--deepflag — doubles all time budgets and raises element caps for extended collection on complex pages.- Evaluator wiring — accessibility evaluator now caps score at 2 when >30% of focused elements lack visible indicators, or when >3 non-semantic clickables are found. Responsiveness evaluator caps at 2 for broken mobile menus. Hierarchy evaluator uses scroll data for content priority.
- Skipped probe handling — ambiguous or unclickable triggers classified as "skipped" (unverifiable), not "failed" (broken). Evaluators only penalize real click-action failures.
Architecture
- Element ref system assigns stable selectors to interactive elements with semantic classification.
- Probe isolation: state reset between every interaction and every pass. A noisy probe never contaminates subsequent collection.
- Per-pass time budgets (scroll 8s, hover 5s, focus 3s, promises 12s) with graceful bailout.
- Evidence schema updated with formal field specifications and evaluator routing rules.
Tests
781 tests (was 616). 7 new test fixtures, 3 new test files, prompt contract tests for accessibility and responsiveness evaluators.
pixelslop: v0.2.5
pixelslop: v0.2.4
0.2.4 (2026-03-26)
Features
- evidence schema, 6 specialist evaluator agents, evaluator tests (35c6e93)
- scanner decomposition into evidence collector + specialist fan-out (4e89083)
- specialist agent architecture — scanner decomposition (67faf02)
Bug Fixes
- add pixelslop-code-scanner to installer AGENT_FILES (ecd2116)
- address Codex review — paths, schema fields, slop coverage, responsiveness evidence (91c7b49)
- Codex round 2 — schema/snippet alignment, test lockdown, evaluator field refs (19fdb7d)
- remaining Codex review items — schema drift, title, uninstall safety (2034284)
pixelslop: v0.2.3
pixelslop: v0.2.2
pixelslop: v0.2.1
0.2.1 (2026-03-24)
Features
- pixelslop v0.1.0 — browser-first design quality scanner (c80a7c3)
- static site support, interactive discovery, two-phase architecture, debug logging (635b314)
Bug Fixes
- add focus-visible outlines for nav links, buttons, CTAs, tabs, and footer links (4b7d653)
- add prefers-reduced-motion query to disable animations for motion-sensitive users (08af8df)
- add screen-reader description for gallery images hidden by aria-hidden track (b87c690)
- add skip navigation link and main landmark for keyboard/screen reader users (6ce17b1)
- add srcset and sizes to hero image for responsive image loading (d3e6129)
- bump minimum font sizes for menu tags and labels (b8a40a8)
- clone gallery images via JS instead of duplicating in HTML (66ec376)
- darken muted text from #7C6D5F to #716356 for AA contrast on cream backgrounds (eb1fee7)
- darken muted text from #8A7B6E to #7C6D5F for AA contrast compliance (5f6bb2a)
- darken terracotta accent from #C4613A to #B25531 for AA contrast compliance (a61be70)
- enforce 44px minimum touch targets on mobile interactive elements (4549354)
- improve form label and placeholder contrast on dark charcoal background (216ea25)
- lighten footer text for AA contrast compliance on dark background (eda8403)
- replace static 2024 copyright with dynamic current year (0772a68)
- replace transition: all with scoped properties on .btn, .menu__tab, .footer__social a (fe61000)