Refine rest-forwarding guidance: per-category precedence (combine/compose/clobber) + composeEventHandlers Correct the earlier oversimplified 'spread ...rest' rule. Document that prop collisions resolve per category: className/style combine (mergeProps), contract props let the component win (set after {...rest}), owned handlers compose (composeEventHandlers, #3863), neutral pass-throughs forward. Update the Component Auditor check to match — it's a judgment check on collision handling, not just 'does ...rest exist'.
Revert "Release process: advance latest branch to the release commit in post-release" This reverts commit 20347a4ead94b1d5dca01f7ea6087bb1f3275170.
Release process: advance latest branch to the release commit in post-release
Component Auditor: catch components that extend BaseProps but never forward ...rest Add a check (and the underlying API convention) for the silent-drop bug fixed in #3738 and #3852: a component extends BaseProps so data-testid/aria-* type-check, but never captures/spreads ...rest, so those pass-through attributes never reach the DOM. Documents the placement rule (after mergeProps, before component-owned role/aria) and distinguishes it from the composed-component overwrite check.
vibe-test: scores 2026-07-11
Updated Blog Review Rubric (markdown)
docs: add Blog Review Rubric wiki page
docs: document lab→core and hidden→visible template promotion gates
vibe-test: scores 2026-07-10
Design Conventions: restructure state sections by driver and prominence - Rename section headings to 'User/System/Agent Interaction States Visuals' - Move Disabled into System interaction states - Label states as 'State (variant style)' (e.g. Selected (Depressed style)) - Split System status by prominence tier: Muted (inputs + in-flow surfaces), Inverted (badges + high-severity toasts), Temporal (toasts + tooltips) - Add a Temporal row (tooltip + default toast) for brief high-prominence states - One consolidated description per row; rows may show several example images - Capture real selected list/nav items (SideNav, TreeList) and toggle buttons for Selected (Depressed style); fix previously-broken image references
Design Conventions: fix Focused button capture to show the focus ring The previous capture didn't hold :focus-visible, so no outline was visible. Recapture via keyboard Tab so the accent focus ring renders.
vibe-test: scores 2026-07-09
Design Conventions: wrap state visuals in white bordered cards Bake a white rounded card with a thin border into each state screenshot so they stand out against the wiki table's zebra striping instead of blending into the colored rows.
Design Conventions: retitle foundations, fold Generative description column - Foundation headings use 'Title (Category)' format instead of <sub> suffix (e.g. 'Consistent vertical rhythm (Size | Density)') - Generative States table folds its Description column into the State column, matching the Foundation and Async tables
Design Conventions: split state rows by distinct visual treatment - Split Focused into Focused and Focused (Input) - Split Selected into 5 rows by what's being selected: Toggles (checkbox/ radio/switch), Control (segmented), Navigation (tabs/outline/stepper), Container (cards), List (nav item/list row) - Merge Loading and Processing into one row; add input-family loading examples (skeleton placeholder, busy input group) - Fold the status prominence tiers into the Async table (each status row shows its tiers side by side) instead of a separate table - Add the Outline component as a Navigation selection visual
Updated Design Conventions (markdown)
Design Conventions: format foundation Smells as bullet lists Break each foundation's Smells cell from a packed run-on paragraph into a bulleted list (one smell per line, bold term leading) for readability.
Design Conventions: colocate state visuals in the state table; drop gray canvas - Trim state screenshots to the component on its own clean surface (no gray padding canvas, no white bleed) - Merge the separate image tables into the main state table: each state row now holds its own visuals with inline description + API/ARIA reference
Design Conventions: uniform framing for state visuals Reframe every state screenshot onto a consistent 640x300 canvas with the component auto-cropped and centered on a light-gray surface, matching the reference layout. Wide components (inputs, banners, nav) recaptured at a form-like width so they no longer render as thin strips.
Design Conventions: simplify State Representations - Drop the per-archetype columns (action/input/control/container); show one summary row per state with an approved-visuals count - Fold API/ARIA into each state's description - Enlarge the state visuals (width 240) so the image is the main reference - Standardize caption format: backticked token(s) + how it's applied
Design Conventions: foundations as tables; 'minimize visuals per state' Reformat the Design Foundations section from stacked bold-paragraph cards into a label-column table per foundation (Principle / Why / Smells / Got it right) for scannability. Reword the principle to 'minimize visuals per state'.
Add Design Conventions page Design-side sibling of API Conventions: the intention behind token choices (foundations), standard state representations across component archetypes, and how design quality is evaluated. - Wire the Contributing Design Review section and Home index to the new page - Component Auditor gains a Design Conventions dimension for the objectively-checkable rules (spacing grid, concentric radius, contrast, type hierarchy, motion safety, stacking); subjective visual judgment stays in Hardening Layer 3
PM: add PR labeling step to hourly checklist
vibe-test: scores 2026-07-08
Doc Reviewer: fix theming (check 5) false positives; mark componentsUsed (check 7) advisory Check 5 (theming sync) two bugs, both inflated DRIFT: - The doc_map regex only matched visualProps on the SAME line as className, so any target whose visualProps span multiple lines read as empty ([]), a false drift. Parse the whole target object with a multiline-aware regex instead. - Targets may expose 'states' (selectors like selected/disabled/today) INSTEAD of visualProps. The old script ignored states entirely, so every state-only target (astryx-calendar-day, etc.) looked like it was missing its props. Track states separately and never flag a states-only target as a visualProps drift. DRIFT drops from 32 (mostly false) to 17 genuine; documented in the schema. Check 7 (componentsUsed) cannot be made reliably green by a regex: the convention is not uniform in the source (module vs named import, and layout primitives recorded inconsistently as alias vs module). Rewrote it as an explicitly ADVISORY check (union of named imports + module names removes the module-vs-named class of false positive) with a prominent warning not to open block-metadata PRs off its output. A real fix needs a maintainer decision on the canonical componentsUsed contract plus a one-time normalization.
vibe-test: scores 2026-07-07
wiki(night-watch): add quarterly milestone (major features/library updates) to PM role
vibe-test: scores 2026-07-06
vibe-test: scores 2026-07-05
vibe-test: scores 2026-07-04