Skip to content

fix(cli): recognize textual motion in sweep checks - #3707

Open
miguel-heygen wants to merge 1 commit into
mainfrom
magi/fix-sweep-static-text-fingerprint
Open

fix(cli): recognize textual motion in sweep checks#3707
miguel-heygen wants to merge 1 commit into
mainfrom
magi/fix-sweep-static-text-fingerprint

Conversation

@miguel-heygen

Copy link
Copy Markdown
Collaborator

What

hyperframes check now recognizes fixed-geometry text, generated content, CSS counters, and form-control state as real motion instead of failing them with sweep_static. A genuinely frozen composition still fails the guard.

Why

The sweep guard compared box geometry, opacity, variable-font axes, and media pixels across seek samples. A fixed-width countdown could visibly change from 10 to 09 while every recorded field stayed identical, so check concluded that the timeline never advanced. Exact elapsed-time values passed only when their glyph widths happened to alter geometry.

Leading-zero coercion in data-txt remains unchanged because GSAP AttrPlugin owns that behavior. This PR fixes only HyperFrames' liveness proof; authoring guidance or a lint hint for numeric attribute strings remains separate.

How

  • Fold direct text, resolved ::before/::after content, and live form values into the existing per-sample fingerprint.
  • Include checkbox/radio state, every selected option, and counter state from visible elements, zero-box owners, and composition ancestors.
  • Hash length-delimited fields incrementally so raw text does not leave the page and per-sample payloads stay compact.
  • Keep the existing sweep_static decision and severity unchanged when all visible-state fingerprints remain equal.

Test plan

  • Browser audit suite: 92 tests passed.
  • Check pipeline suite: 52 tests passed, including all four frozen-sweep guard controls.
  • Regression coverage proves fixed-width text, resolved attr() content, pseudo-content, zero-box counter owners, text inputs, checkboxes, and multi-select state change the fingerprint.
  • A frozen countdown with the same channels retains an identical fingerprint.
  • Changed-file formatting, oxlint, and diff checks passed.
  • CLI typecheck in the reused local dependency environment reached two unrelated baseline/setup errors: studioServer.ts NonSharedBuffer typing and missing ajv/dist/2020.js.
  • Documentation updated (not applicable; GSAP attribute-string guidance is separate scope).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant