πΊοΈ Roadmap
This roadmap groups items from the Future Plans reference into versioned milestones. Each minor release targets 2β3 new components and 5β6 improvements to existing ones. Ordering reflects priority and implementation dependency, not a delivery commitment.
v0.21 β Repeatable Forms, Date Display & MCP Foundation
Dynamic field arrays, date-range display, and the first Model Context Protocol server release.
New Components
Repeatable Fieldsβ β Dynamic field array for adding/removing nested form sets.Form::RepeatableComponentwith Stimulus controller, Rails nested attributes integration (accepts_nested_attributes_for), min/max limits, animated add/remove with_destroysupport, template-based new rows, form builder shorthand (f.repeatable), and Lookbook previewsCalendar Dateβ β Date/time display tiles with range support.CalendarDateComponentwith single date and date-range modes (start/end tiles with arrow separator), analog SVG clock face with accurate hour/minute hand rotation, formatted time text, customstrftimeformat mode, inline two-column time layout, vertical stacking, three sizes (sm/default/lg), semantic state theming, string date parsing, and Lookbook playground previewMCP Server (Alpha)β β Model Context Protocol server for AI-powered component assistancelist_componentsβ Full component catalog with categories, descriptions, deprecation statusget_component_apiβ Detailed API information for a specific component (options, slots, methods)search_componentsβ Search for components by feature, keyword, or capabilityget_component_examplesβ Usage examples from previews and tests- Component metadata parsing,
midwest_mcpexecutable
MCP Server Features
Component Discoveryβ β Full component catalog with categories, descriptions, deprecation status- Multi-Framework Support β Rails and Bridgetown integration documentation per component
- Asset Dependencies β JavaScript/CSS requirements per component (Chart.js, Stimulus controllers, etc.)
- Component Lifecycle β Stability indicators (alpha/beta/stable/deprecated) per component
- Lookbook Integration β API panel with component documentation in Lookbook UI
Improvements
β βAvatarComponentprocessing:spinner overlay, extended shape variantsβ βBreadcrumbComponentas: :buttonrender modeβ βDropdownComponentalign:positioning prop (12 positions)β βForm::SelectComponentno_clear:andresize: falseoptions
v0.22 β Password, Groups, Code & MCP Patterns
Password UX, grouped overflow components, syntax highlighting, and MCP enhancements.
New Components
Password Requirementsβ β Visual checklist for real-time password validationGroupβ β Horizontal cluster with+N moreoverflow indicatorCode Blockβ β Syntax-highlighted code via Rouge with copy-to-clipboard, theme system (rouge/midwest), CardComponent composition, language badge, line numbersDate Pickerβ β Native date input with calendar popupTime Pickerβ β 12/24 hour formats with increment/decrement buttons
MCP Server Features
β β Helper method signatures and descriptionsget_helper_methodsβ β Form builder integration, available methods, wrapper patternsget_form_builder_infoβ β Component composition patterns and related componentsget_component_relationshipsβ β Validate option names, constant-constrained values, and slot names with suggestionsvalidate_component_usageStimulus Controllersβ β Controller values, actions, targets per component (viaget_component_api)Component Descriptionsβ β Add class-level doc comments to all components for richer MCP search results and listingsForm Validation Patternsβ β Shopify-style validation, error display, integration docsTemplate Language Examplesβ β HAML, ERB, Ruby, and HTML output for all examplesCustomization Pointsβ β Allowed/discouraged customizations and extension points per component
Improvements
βForm::FileComponentβ Drag-and-drop zoneβBadgeComponentβ Action slot for dismissible tagsβTooltipComponentβ Full 9-position alignment gridβCalloutComponentβdark:variantβ β Removed; clashed with the Dialogable concern's designDialogComponentβ Remote content loadingForm Validation β Shopify-style validation patternsβ
v0.23 β Content, Intersection, Accessibility & MCP Validation
Markdown rendering, social previews, viewport detection, onboarding tours, accessibility improvements, and MCP validation tools.
New Components
Markdownβ β Server-side rendering via CommonmarkerSocial Previewβ β Platform-specific social media post previews (Facebook, Twitter/X, LinkedIn, Instagram) with image mosaic grids, link preview cards, avatar layouts, and platform-accurate styling. ParentSocialPreviewComponentorchestrates platform sub-components via slotsIntersection Observerβ β Declarative Stimulus controller for viewport detectionGuided Onboardingβ β Native (dependency-free) product tours: a parentOnboardingComponentorchestrates nestedOnboarding::StepComponentslots through a Stimulus tour engine (dimmed overlay, target highlighting, positioned card with arrow, Back/Next/Done + keyboard navigation, focus trapping, optional exit confirmation)Skip Linksβ β Skip navigation components for keyboard usersFocus Trapβ β Focus management wrapper for modals
MCP Server Features
β β Moved to v0.22validate_component_usageβ β Context-aware component suggestions from a code/markup snippet or NL description, combining an intent map (raw HTML tags + synonyms), keyword search, and complementary slot-composition signals; reports what you already usesuggest_componentsβ β Symptom-driven debugging: runs nesting, Stimulus-wiring, form-context, constrained-option, and accessibility checks against parsed metadata, ranks likely causes by symptom keywords, and surfaces curated common fixesdiagnose_componentβ β ARIA roles, keyboard patterns, focus management, and WCAG criteria per component. Data-driven viaget_accessibility_infoaccessibility.yml(managed withbin/a11y) with a shared roving-focus pattern; covers the interactive component set (dropdown, dialog, tabs, command palette, onboarding, notification, tooltip, skip link, focus trap, live region)Accessibility Checklistβ β Per-component WCAG success criteria (level + note) surfaced throughget_accessibility_infoScreen Reader Patternsβ β Announcement/semantic behavior documented per component inaccessibility.ymlKeyboard Interaction Docsβ β Per-component keyboard tables, with shared patterns (roving focus) merged inAuto-Generated Previewsβ βgenerate_previewscaffolds a Lookbook preview from a component's parsed metadata: adefaultexample, aplaygroundwith@paramcontrols inferred from options (constantβselect, booleanβtoggle, integerβnumber, else text), optional extra example stubs, and matching sidecar.html.erbtemplates that render the component through its registered view helper (with slot setters seeded for slotted components)
Improvements
ARIA Patternsβ β SharedAriaHelperconcern:aria_live_attributes(polite/assertive live regions) +humanized_labelauto aria-label generation. NewLiveRegionComponent;NotificationComponentpoliteness now state-aware;IconComponentlabels fixed for multi-hyphen namesKeyboard Navigationβ β SharedhandleRovingFocusKeydown()helper (arrow/Home/End/Escape/Tab roving focus);DropdownComponentrefactored as reference consumerScreen Readerβ βLayoutComponentopt-in<main>landmark (display:contents, pairs withmidwest_skip_link);midwest_headinghelper for level-clamped heading hierarchy;EmptyStateComponentheading_level:βForm::SwitchComponentβchange_theme:for dark/light mode toggle
v0.24 β Device Frames, Media, Theming & MCP Tokens
Device mockups, rich media players, theming system, and MCP design token tools.
New Components
Social Preview: TikTok, YouTubeβ β Video-centric social platform previews extending theSocialPreview::BasePlatformComponentpattern.TiktokComponent(vertical 9:16 frame, right-hand action rail with abbreviated engagement counts, follow badge, bottom caption + sound row) andYoutubeComponent(16:9 thumbnail, duration badge, watch-row with channel avatar/title/verified badge and "views Β· timestamp" meta). Sharedformat_counthelper on the base platform (1.2K/1.2M abbreviation); both wired into the parent orchestrator and Lookbook previewsDevice Frameβ β Pure-CSS, zero-dependency Apple device bezels:DeviceFrameComponentwrapping asrc:screenshot or richscreenslot content (Video, Carousel, live markup) in an iPhone (Dynamic Island + home indicator + side buttons), iPad (thin bezel + camera), MacBook (lid + hinge base with thumb notch), Apple Watch (digital crown + side button + top/bottom band), or Apple TV (16:9 panel + stand).orientation: :portrait/:landscapefor handhelds, four bodycolor:variants (black/silver/gold/blue), optional dropshadow:, and aresponsive:mode (container-query--duscale unit) that fluidly scales the entire frame + contents to the parent's inline size. Wired into themidwest_device_framehelper and Lookbook previewsPlaylistβ β Native, zero-dependency audio playlist player.PlaylistComponentorchestrates nestedSongComponentslots through a Stimulus controller wrapping a single<audio>element: play/pause toggle, previous/next transport, click-to-seek progress bar with elapsed/total time, keyboard controls (space/k, arrow keys), and auto-advance on track end. Two display modes β a scrollable track list (view: :playlist) and an album-art focus view (view: :art) with details revealed on hover. Per-trackartwork:shows album-art previews + a blurred backdrop;autoplay:,dark:, and a collapsible list round it out. Wired intomidwest_playlist/midwest_songhelpers and Lookbook previews360Β° Viewerβ β Native, zero-dependency drag-to-pan viewer for wide panoramic (360Β°) images and video.PanoramaComponentsizes the media to fill the viewport height and pans it horizontally via Pointer Events (unified mouse + touch with pointer capture), keyboard (arrow keys / Home-to-reset), and release inertia. Imageswrap:seamlessly for a true 360Β° loop (the controller clones the media and applies modulo offsets); video panning is clamped to the frame. Optionalauto_rotate:drift (pauses on hover/focus/drag, honorsprefers-reduced-motion), a fading drag hint + reset button (controls:),start:position, and ansr-onlylive region announcing pan percentage. Wired into themidwest_panoramahelper and Lookbook previewsTheme Switcherβ βDynamic theme switching with persistenceβ CANCELLED: Panel context doesn't support loading Midwest CSS/JS reliablyTheme Builder Panelβ βLookbook panel for theme customizationβ CANCELLED: Panel context doesn't support loading Midwest CSS/JS reliably
AI & Agents
Command Palette AI Chatβ β Opt-in conversational mode onCommandPaletteComponent(chat:) that streams from any OpenAI-compatible endpoint (cocore.dev, OpenAI, Ollama, β¦) with a dependency-free native markdown renderer. Two transports: direct browser fetch (local/dev) and a server proxy.β β Controller concern +Midwest::LlmAgentRails featureMidwest::Routing::LLM_AGENT+ generator, powered by the optional RubyLLM gem: server-owned key/model/system prompt,ActionController::LiveSSE relay, and durable history viaacts_as_chat(history: :fresh/:resume)Agentic toolsβ β The model can run palette commands:RubyLLM::Toolserver tools plus client-directive tools (tools: :commands) that stream inline action rows and reuse the palette's existing selection path, gated by a server-side allowlist
MCP Server Features
β β Full token tree (colors, spacing, typography, shadows, motion), scoped by optionalget_design_tokenscategory; parsed from the gem's token source of truth viaMidwest::Tokensβ β Breaking changes between versions, compiled from the changelog (the version source of truth). Aget_migration_guideChangelogParserreads eachdemo/app/docs/changelog/vX_Y_Z.md.erbinto version/title/sections;ChangelogIndexorders releases by semver and answers range queries. Passfrom/toto bound the range (defaults to the latest release); each release returns its removals, changes, adoptable additions (the###headings), and heuristic migration notes β sentences carrying conservative signals (removed/renamed/replaced/no longer/deprecated), with bug-description false positives ("breaking the β¦") deliberately excluded. A flattenedmigration_summarygives the quick "what breaks" scanDesign Token Exportβ β CLI:midwest_mcp tokens:export --format json|css|scssToken Usage Mappingβ β Which components use which design tokens, via theget_token_usageMCP tool. ATokenReferenceParserpulls token references from each component's CSS and templates (var(--token)refs plus Tailwind colour utilities likebg-theme-7, which resolve to Midwest colours through@theme);TokenUsageIndexclassifies them against the canonical token registry built fromMidwest::Tokens(so component-local CSS variables like--du/--card-widthare excluded) and builds both forward and inverse maps. Three query modes: passcomponent:for the tokens it uses (grouped by category),token:for the components using a given token, or neither for an adoption overview (per-category usage counts, unused scalar tokens, and most-used tokens). Doubles as an adoption audit β surfaces that colour tokens are broadly used (59/210 across 61 components) while the v0.24 scalar token layer (spacing/radius/shadow/typography) is still barely consumedTheme Migration Guideβ β Migration paths for the theming/styling engine, served throughget_migration_guide'stopic:filter (Midwest has no separately-versioned themes β Theme Switcher/Builder were cancelled β so theme migrations live in the changelog like everything else).get_migration_guide(topic: "tailwind")traces the styling engine across all history (v0.8.0 β the v0.23.4 Tailwind v3βv4 migration);topic: "theme"/"tokens"trace the colour/token system. The topic scan spans all versions rather than a single rangeAnimation Documentationβ β Per-component animation behavior via theget_animation_infoMCP tool. AMotionParserextracts the facts straight from each component's CSS (the source of truth) β keyframes, durations, easing curves, animated properties,prefers-reduced-motionsupport, and whether it uses the motion tokens β across all 39 animated components. TheAnimationIndexmerges those parsed facts with a curated YAML overlay (data/animation.yml, 14 flagship entries) adding a prose summary, customization guidance, and JS-driven-motion notes. The tool matches every parsed duration/easing against the canonical--duration-*/--ease-*tokens (surfacing on-system vs one-off values) and emits auto-derived advisories (missing reduced-motion fallback, off-token durations). Managed withbin/motion(list/show/check)Responsive Breakpointsβ β Breakpoint system documentation via theget_breakpointsMCP tool. Documents Midwest's design-token breakpoint scale (--breakpoint-*, xsβ2xl, parsed from the token source of truth), the root-font-size ladder those breakpoints drive inresponsive-system.css(10pxβ16px, so rem/em-sized components scale fluidly without per-component media queries), CSS container-query support (the--dudesign unit), and β crucially β how the token scale (400/600/800/1000/1200/1400px) differs from Tailwind's utility-variant defaults (640/768/β¦px) plus how to align them. Scopable viasection:(strategy/breakpoints/container_queries/tailwind)
Improvements
Design Token Systemβ β Token architecture intokens.css(@layer midwest.tokens: spacing, radius, elevation, motion, typography, z-index, breakpoints) with aMidwest::TokensRuby API; colours delegate to the existingMidwest::Theme. CSS is the single source of truth, parsed by Ruby (mirrorscolor-system.css/Midwest::Theme)Dark Modeβ β Comprehensive palette: a:not([class])-scoped bare-element foundation indark-mode.css(selection,hr, links, inlinecode/kbd, blockquote, tables) plus per-component dark overrides for surfaces that assumed light backgrounds (AccordionComponent,TreeViewComponent,TimelineComponentneutral tokens)Tailwind CSS v4β β Upgraded the styling engine to Tailwind v4 (CSS-first@theme/@custom-variant/@source, Lightning CSS). Fixes a v3 cascade-layer corruption bug; drops the JStailwind.config.js+postcss.config.js. v4 consumers useconfig/tailwind.theme.css(the JStailwind.theme.jsis v3-only)Token Exportβ β JSON, CSS, SCSS export viaMidwest::Tokens.to_json/to_css/to_scss(surfaced through thetokens:exportCLI)β β Sparkline rendering mode (ChartComponentsparkline: true): compact, chrome-less trend line β hides axes, legend, tooltip, and title, applies tight-padding presets, and defaults to a:linechart. Every preset is overridableβ β EmbeddedStatComponentsparkline:(array or{ data:, type:, color: }, color follows trend direction) plus a comparison-period baseline (comparison:/comparison_label:)βCommandPaletteComponentβ AI chat mode composed from ButtonGroup, Timeline, and CardβTimelineComponentβchat:conversation variant with per-item left/right placementβButtonComponentβ type-relative sizing (font-size in rem, box metrics in em)
v0.25 β Motion, Maps, Audio & Animation
Parallax effects, maps, web audio, and motion system.
New Components
- Social Preview: Threads, Bluesky β Newer text-based social platform previews extending the
SocialPreview::BasePlatformComponentpattern - Parallax β Scroll-driven parallax components
- Map β Google Maps integration with markers
- Web Audio β AudioContext suite for audio applications
- Motion Primitives β Fade, slide, scale, rotate animations
- Page Transitions β Turbo navigation transitions
MCP Server Features
- Motion System Docs β Standardized easings, duration scale, preference detection
- Performance Characteristics β Rendering time, dataset limits per component
- Animation API β Play/pause, seek, playback rate documentation
Improvements
- Motion System β Standardized easings and duration scale
- Animation Controller β Play/pause, seek, motion preference detection
FormComponentβautosave:,ajax:,close_modal_on_success:
v0.26 β Data Visualization Enhancements
Enhanced charting and data display capabilities.
New Components
- Social Preview: Pinterest, Reddit β Community and visual social platform previews extending the
SocialPreview::BasePlatformComponentpattern - Sparkline β Mini trend indicators with trend arrow
- Heatmap β Color scale visualization with tooltips
MCP Server Features
- Chart Relationship Graph β Chart component relationships and data flow
- Data Requirement Docs β Data format requirements per chart type
- Turbo Integration Patterns β Turbo Frames, Streams, and Channels documentation
Improvements
ChartComponentβ Hover crosshairs, drill-down, selection highlighting, exportTableComponentβ Inline editing, column resizing, multi-sort, advanced filteringStatComponentβ Enhanced metric card with sparkline integration
v0.27 β Navigation Patterns
Comprehensive navigation components.
New Components
- Social Preview: Mastodon β Federated social platform preview extending the
SocialPreview::BasePlatformComponentpattern - Mega Menu β Multi-column dropdowns with icons and descriptions
- Sidebar Navigation β Collapsible sections with nested menus
- Context Menu β Right-click activation with submenus
MCP Server Features
- Navigation Component Graph β Navigation patterns and relationship mapping
- Route-to-Component Mapping β Active state detection patterns
Improvements
TabsComponentβ Overflow menu, drag to reorder, badges, mobile bottom sheetBreadcrumbsComponentβ Truncation and dropdown for intermediatesMobileNavComponentβ Enhanced with gesture support- Route Helpers β Active path detection, active link component
- Scrollspy β Section highlighting with smooth scroll
v0.28 β Advanced Layout
Layout components for complex structures.
New Components
- Masonry Grid β Pinterest-style layout
- Split View β Resizable panes with persistent sizing via localstorage
- Stack Layout β Vertical/horizontal stack with gap control
- Container Queries β Responsive-at-container components
- Dashboard Grid β Widget grid with draggable items
MCP Server Features
get_responsive_infoβ Breakpoint system, responsive behavior per component- Layout Pattern Docs β Composition patterns for complex layouts
- Error Diagnosis β Common layout issues and fixes
Improvements
LayoutComponentβ App shell pattern with fixed header/footerEmptyStateComponentβ Enhanced with action suggestions and illustrations
v0.29 β Performance & Loading
Performance optimizations and loading states.
New Components
- Lazy Load β Intersection observer-based lazy loading (investigate if turbo frames provides this functionality)
- Virtual Scroll β Large list rendering with dynamic heights (Use https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/content-visibility and NO JavaScript, EVER.)
- Progressive Image β Blur-up effect with low-quality placeholders
MCP Server Features
- Performance Monitor CLI β Component render time, interaction delay tracking
- Bundle Analyzer β Component size, dependency analysis
- Lazy Loading Docs β Which components support lazy loading, how to implement
Improvements
SkeletonComponentβ Enhanced with proper shimmer effectsImageComponentβ Progressive loading mode- Performance Monitor β Render time, interaction delay tracking
- Bundle Analyzer β Component size, dependency analysis
v0.30 β Turbo, Real-time & i18n
Deep Turbo/Hotwire integration and internationalization.
New Components
- Turbo Frame Wrapper β Frame component with loading states
- Cable Ready Integration β Real-time list updates
- Broadcasting Components β Turbo Streams broadcasting
- Optimistic UI Helpers β Optimistic deletion/creation
MCP Server Features
- Turbo Integration Docs β Complete Turbo/Hotwire pattern documentation
- i18n Support β Internationalization capabilities per component
- RTL Layout Docs β Right-to-left layout support
- Real-time Patterns β Turbo Streams, Cable Ready patterns
Improvements
- Hotwire Modals β Modal frame navigation with history
- Hotwire Forms β Turbo form submissions with progress
- Request Lifecycle β Start/end handlers, error states, retry
- Real-time Presence β Online user indicators
- i18n β Translation keys, Rails integration, RTL support
1.0.0 β Stable Release (Target: Q2 2027)
First stable release with API stability guarantees.
Stability Guarantees
- Semantic Versioning with 6-month deprecation policy
- Backward compatible component, option, and slot APIs
- Automated upgrade tools
Documentation
- Complete API docs for all components
- Design guidelines and accessibility guide
- Migration guides for breaking changes
MCP Server Completeness
- [ ] All 14 MCP tools implemented (v0.21βv0.28)
- [ ] Lookbook integration complete
- [ ] CLI commands (tokens:export, docs:generate, validate)
- [ ] Multi-framework support documented
Testing & Quality
- 95%+ test coverage
- Integration and visual regression tests
- A11y test suite, cross-browser E2E tests
- Security audit passed
Release Checklist
- [ ] All components stable with committed APIs
- [ ] All breaking changes documented
- [ ] Migration guides complete
- [ ] Performance benchmarks met
- [ ] Accessibility audit passed
- [ ] Security audit passed
- [ ] MCP server feature-complete
Beyond 1.0
Potential areas for post-1.0 development:
- Bridgetown 3.0 support
- ViewComponent 4.0 features
- Stimulus 3.0 patterns
- CSS nesting & container queries
- Web Components support
- React/Vue wrappers
Last Updated: July 2026
Current Version: 0.24.0 β released. All new components (Device Frames, Playlist/Song, 360Β° Panorama, TikTok/YouTube social previews), AI & Agents (agentic Command Palette chat, expanded Midwest::LlmAgent), and the token/introspection MCP set landed; Theme Switcher/Builder cancelled. The MCP server ships 17 tools: get_breakpoints, get_animation_info, get_token_usage, and get_migration_guide completed the milestone's token/introspection set.
Next Target: 0.25.0 β Motion, Maps, Audio & Animation