🌀 v0.9.0 — Loading States, Accessibility Overhaul, and Playwright
What Was Added
LoadingIconComponent— Animated loading indicators with 11 SVG variants:audio,ball-triangle,bars,circles,grid,oval,puff,rings,spinning-circles,tail-spin,three-dots.Loading states on
ButtonComponentand forms — Buttons enter a disabled loading state on click; forms enter a loading state on submit. Prevents double-submits.Accessibility features on
DropdownComponent— Full keyboard navigation (arrow keys, Enter, Escape) with a newkeyboard_navigationpreview.midwest:lookbook:installrake task — Mount the Midwest component docs (Lookbook) at/midwest-lookbookwith one command.Wizard/Carousel step blockers —
CarouselComponentin wizard mode blocks scroll, wheel, and touch-swipe events from advancing past locked steps.
What Changed
- Broad accessibility audit across 15+ components. Accessibility gaps reduced from 14 down to 4.
FileComponentupdated with improved controller behavior; new test fixtures added.ButtonComponentnil-guard pattern fixed; assorted bug fixes acrossAvatarComponent,DialogComponent,ProseComponent,SelectComponent,CardComponent,PopoverComponent.
What Was Removed
- Ruby 4.0 preview dropped from CI. Matrix now targets Ruby 3.3 and 3.4 only.
- Stubbed no-op Stimulus controllers deleted for
AvatarComponent,CalloutComponent,DropdownItemComponent,SwitchComponent, andVideoComponent.
Dev Process
- Selenium replaced with Playwright — System tests now use
capybara-playwright-driver. Cross-browser testing (Chromium, Firefox, WebKit) viaBROWSER=env var orbin/test --browser <name>. - Install scripts now prefer npm over Yarn.
bin/releasenow invokes theclaudeCLI to assist with generating release notes.