From 7ea2115a350d00f9f6f77f45934814e02d11c36d Mon Sep 17 00:00:00 2001 From: Ernis Date: Tue, 3 Nov 2026 13:40:49 +0600 Subject: [PATCH] feat(cli): check warns on a small headline and a narrow kinetic hero word Two craft warnings beside text_below_floor (28 px on 1080): - headline_small: a frame's largest reading text stays under 56 px on 1080 (5.2% of the short side) for 0.5 s or more. - hero_word_narrow: under a data-kinetic-type element, a frame's largest line spans under 60% of the frame's width at its median size. Co-Authored-By: Claude Opus 5.5 --- docs/packages/cli.mdx | 2 + packages/cli/src/commands/check.test.ts | 1 + .../cli/src/commands/layout-audit.browser.js | 1 + packages/cli/src/utils/checkBrowser.ts | 3 +- packages/cli/src/utils/checkTypes.ts | 13 +- packages/cli/src/utils/craftAudit.test.ts | 74 +++++- packages/cli/src/utils/craftAudit.ts | 235 ++++++++++++++++-- .../src/utils/craftTypeSize.chromium.test.ts | 116 +++++++++ skills-manifest.json | 4 +- .../references/lint-validate-inspect.md | 2 + skills/hyperframes/references/review.md | 2 +- 11 files changed, 423 insertions(+), 30 deletions(-) create mode 100644 packages/cli/src/utils/craftTypeSize.chromium.test.ts diff --git a/docs/packages/cli.mdx b/docs/packages/cli.mdx index 6bcbba6a5f3..d4a30f50bdc 100644 --- a/docs/packages/cli.mdx +++ b/docs/packages/cli.mdx @@ -1290,6 +1290,8 @@ edges re-measured to about 0.01 s, and skipped for a `--range` check. | `line_unread` | A reading-size line (30 px or taller at 1080) is on screen for less than its floor: 0.4 s for one or two words, otherwise three quarters of 0.5 s + 0.3 s a word. The film's last line needs 2 s. | | `dead_stretch` | Nothing on screen changes for more than 3 s, by the same classifier `keepsMoving` uses. | | `text_below_floor` | Text under 2.6% of the frame's short side (28 px on 1080) stays on screen 0.5 s or more. One finding per file lists every such element. | +| `headline_small` | The largest text on screen stays under 5.2% of the short side (56 px on 1080, the smallest headline) for 0.5 s or more, while above the type floor. One finding per file. | +| `hero_word_narrow` | Inside a `data-kinetic-type` element, a frame's largest line spans under 60% of the frame's width at its median size. One finding per file. | | `first_frame_empty` | Frame 0 paints nothing but the background (no text, image, video, canvas or SVG), or an opaque element covers every other clip and is named. The first frame is the thumbnail on social players. | | `film_silent` | A film longer than 15 s has no unmuted `