feat: mobile typography, hover-zoom detector, register + critique provenance - #23
Merged
Merged
Conversation
added 4 commits
July 14, 2026 11:00
Typography breaks worst at 375px — line-length blows past 85 chars, body text drops under the 14px floor, heroes go oversized — but the metrics snippet only ran on the desktop pass, so the evaluator graded every page on its widest, most forgiving viewport. Now snippetTypographyMetrics runs at mobile as well, the evaluator reads both viewports and grades the worse one (naming which viewport it fired on), and scoring/schema/visual-eval docs say so. Drift-guarded so it can't silently regress to desktop-only.
Adds an image-hover pass that hovers a sample of images and reads the transform delta. A lone product-zoom is a legit pattern, so this only fires on the template fingerprint: the identical transform on 3+ images covering most of the ones that move at all. Targets are stamped with a data attribute for unique selection — image grids collapse hand-built nth-of-type selectors, which would hover the first image N times and report false uniformity. Wired into the slop evaluator (counts only the uniform case), the pattern catalog, and the evidence schema.
Two review-framing features. Register (brand vs product): the setup agent forms a register hypothesis from route/component signals and confirms it with a leading question; config write stores it in a ## Register section; the design-director reads it to calibrate judgment (brand -> distinctiveness and emotional pull, product -> clarity and low friction). The 6 measured pillars stay register-blind -- a 90-char line or a 3:1 contrast ratio is a defect on any surface. The scan summary now closes with one highest-leverage next move instead of a menu. Provenance: the report header carries a Method line declaring whether the 7 evaluators ran isolated (spawned) or inline. The inline fallback emits a visible DEGRADED banner, because inline weakens the anti-anchoring isolation and a silent degraded run shouldn't look identical to a clean one.
Pixelslop's docs describe what Pixelslop does; where an idea came from isn't part of that. Drops the one remaining 'inspired by' credit.
gabelul
force-pushed
the
feat/viewport-typography-and-init-critique
branch
from
July 14, 2026 10:03
1846a3e to
47e1a05
Compare
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.
Four changes. Multi-commit branch — merge (don't squash) so each lands as its own changelog entry.
What's here
fix:measure typography at mobile too, not just desktopThe scanner captured all three viewports but only ran
snippetTypographyMetricson the desktop pass — so line-length, tiny body text, and oversized heroes were graded on the page's widest, most forgiving viewport. These fail at 375px first. Now the metrics run at mobile as well, and the typography evaluator grades the worse of the two viewports and names which one fired.feat:uniform image hover-zoom (slop pattern 26)New image-hover pass hovers a sample of images and reads the transform delta. A lone product-zoom is legitimate, so it only fires on the template fingerprint: the identical transform on 3+ images covering ≥60% of the ones that move. Targets are stamped with a data-attribute for unique selection (image grids collapse hand-built
nth-of-typeselectors — caught by an end-to-end smoke test that was hovering the first image N times). Wired to the slop evaluator (counts only the uniform case), the catalog, and the schema.feat:design register (brand vs product)Setup forms a register hypothesis from route/component signals and confirms it with a leading question;
config writestores it; the design-director reads it to calibrate judgment (brand → distinctiveness, product → clarity). The 6 measured pillars stay register-blind. The scan summary now closes with one highest-leverage next move.feat:critique provenance + DEGRADED bannerThe report header declares whether the 7 evaluators ran isolated or inline, with a visible
⚠️ DEGRADEDbanner on the inline path — so a run with weakened anti-anchoring isolation never looks identical to a clean one.Testing
Full suite green, 0 failures. New coverage:
image-hover.test.js(16),register-provenance.test.js(9), mobile-typography drift guards, register round-trip intools.test.js. Both new detectors verified end-to-end against real fixtures (uniform grid → flagged; single zoom → not flagged).Not done (deliberately)
cramped-paddingas a discrete detector stays parked — partially covered by spacing + cognitive-density.