Phone hit kit: pin the className expression, not its source text #140
Loading…
Reference in a new issue
No description provided.
Delete branch "void/phone-hit-kit-strict"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Tightens the PhoneHit class pin in src/app/phoneHitTestKit.ts. The class reader now parses with the TypeScript compiler API (TSX): className must appear once, with no JSX spread after it, and be the bare PhoneHit* identifier (imported unaliased from styles/PhoneHit.css), a classNames/clsx/cx call with it as a direct argument, or a template with it as a direct span. Everything else reads as no class: string literals, conditionals, object keys, nested templates, typeof, assignment, comma, arrow, member access, duplicate className.
wantin expectPhoneHitClasses is(string|null)[]: null means the button must carry no PhoneHit class.Soul (two rounds) falsified the regex reader; the AST reader held against its attack harness and 15 mutants. Known gaps: an inner-scope shadowing binding next to the real import,
import type; drawnPx/sizeProp still read tag text with regex.Nothing deployed.
🤖 Generated with Claude Code