Repository navigation
feat(lint): five interface-craft floors from the interfaces.dev cheat sheet - #189
Merged
Merged
Conversation
… sheet content-lint gains dumb-punctuation (typewriter ellipsis/quotes in visible copy) and bare-confirm-button (OK/Yes labels); a11y-lint gains paste-blocked (error — cancelled paste breaks password managers and one-time codes); validate-layout gains sticky-hover-unguarded (raw :hover outside @media (hover: hover) on a mobile-intent document); taste-lint gains data-numbers-not-tabular (numeric table columns without tabular figures), with the rubric sentence the Table emitter already practised. The kit's Button and Breadcrumb hover rules move behind @media (hover: hover) so the kit passes the floor it now enforces; the hover check blanks CSS comments first, which its own emitter comment proved necessary.
jangtrinh
force-pushed
the
feat/interfaces-cheatsheet-floor
branch
from
August 19, 2026 06:05
ece3c92 to
d2a811d
Compare
…ion line truth, guarded floors paste-blocked scopes its search to the paren-matched listener handler (a neighboring handler's preventDefault can no longer bleed in), exempts clipboard re-inserts (paste-as-plain-text is the opposite of blocking), and the scripted-listener form downgrades to warning; lintA11y strips HTML comments first via the now-shared stripCommentsPreservingOffsets, so no a11y check fires inside <!-- -->. dumb-punctuation blanks regions newline-preserving so findings point at the ORIGINAL source line, blanks pre/code/kbd/samp alongside script/style, skips prime marks after a digit, and refuses quote pairs spanning a sentence boundary. checkDumbPunctuation reaches the public lint surface via re-export; bare-confirm-button reads single-quoted and unquoted values too. The kit gate now asserts none of the five new checkIds fire (warnings included) — proven red with a broken guard, green restored. hasViewportMeta is one shared definition across a11y-checks and layout-checks-hover.
jangtrinh
force-pushed
the
feat/interfaces-cheatsheet-floor
branch
from
August 19, 2026 06:05
d2a811d to
679189b
Compare
Owner
Author
|
Stage-4 review resolved (fix round in
Gates re-run on the exact merge tree: typecheck, lint, build, 3526 passed / 10 skipped. Follow-ups (not this PR): bringing |
This was referenced Aug 19, 2026
jangtrinh
added a commit
that referenced
this pull request
Oct 29, 2026
… sheet (#189) * feat(lint): five interface-craft floors from the interfaces.dev cheat sheet content-lint gains dumb-punctuation (typewriter ellipsis/quotes in visible copy) and bare-confirm-button (OK/Yes labels); a11y-lint gains paste-blocked (error — cancelled paste breaks password managers and one-time codes); validate-layout gains sticky-hover-unguarded (raw :hover outside @media (hover: hover) on a mobile-intent document); taste-lint gains data-numbers-not-tabular (numeric table columns without tabular figures), with the rubric sentence the Table emitter already practised. The kit's Button and Breadcrumb hover rules move behind @media (hover: hover) so the kit passes the floor it now enforces; the hover check blanks CSS comments first, which its own emitter comment proved necessary. * fix(lint): resolve stage-4 review — paste-blocked precision, punctuation line truth, guarded floors paste-blocked scopes its search to the paren-matched listener handler (a neighboring handler's preventDefault can no longer bleed in), exempts clipboard re-inserts (paste-as-plain-text is the opposite of blocking), and the scripted-listener form downgrades to warning; lintA11y strips HTML comments first via the now-shared stripCommentsPreservingOffsets, so no a11y check fires inside <!-- -->. dumb-punctuation blanks regions newline-preserving so findings point at the ORIGINAL source line, blanks pre/code/kbd/samp alongside script/style, skips prime marks after a digit, and refuses quote pairs spanning a sentence boundary. checkDumbPunctuation reaches the public lint surface via re-export; bare-confirm-button reads single-quoted and unquoted values too. The kit gate now asserts none of the five new checkIds fire (warnings included) — proven red with a broken guard, green restored. hasViewportMeta is one shared definition across a11y-checks and layout-checks-hover.
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.
What
Adopts the five machine-checkable rules from the interfaces.dev cheat sheet that our linter families did not yet cover, each as an emitter+linter pair per the paired-standard rule:
dumb-punctuation.../'/"in visible copy — typeset copy uses…'curly quotes; scripts/styles/attributes never firebare-confirm-buttonpaste-blockedonpastethat cancels, or a paste listener callingpreventDefault— breaks password managers and OTP entrysticky-hover-unguarded:hoveroutside@media (hover: hover)on a mobile-intent document; Tailwindhover:utilities and desktop-only pages never firedata-numbers-not-tabulartabular-numsand no mono faceEmitter side
:hoverrules move behind@media (hover: hover)(static.is-hoverspecimens untouched) — the kit passes the floor it now enforces (sweep: 0 findings across 27 components).tabular-nums; the rubric now states the rule it practised.Verification
:hoverin prose) — fixed at the check layer (CSS comments blanked first) with a pinned test.Prose-only cheat-sheet items (press-scale, icon cross-fade, will-change discipline, text-wrap, image outline, underline tuning, writing rules) are recorded as gaps e1689–e1691 for the librarian loop, not hand-edited into knowledge/.
🤖 Generated with Claude Code