🐳 v0.13.1 — Docker Support & Bug Fixes
What Was Added
Docker support for the demo app
A production-grade Dockerfile and .dockerignore are now included at the repo root. The image builds the full demo app (CSS, JS, icons) and runs it via a minimal slim Ruby image with jemalloc.
docker build -t midwest-demo .docker run -d -p 3000:3000 -e SECRET_KEY_BASE=<key> --name midwest-demo midwest-demoA demo/bin/docker-entrypoint script handles db:prepare automatically on first boot.
--docker flag for bin/dev
Running bin/dev --docker now starts the demo via Docker instead of Foreman. If the image hasn't been built yet, it builds it automatically.
bin/dev --docker # runs the demo in Docker on port 3000PORT=8080 bin/dev --docker # or on a custom portform: option on ButtonComponent
Buttons can now be associated with an out-of-flow <form> element via the HTML form attribute:
<a class="midwest-button variant-default size-default theme-primary" name="button" form="my-form-id" href="/"> <span class="midwest-button-content">Submit</span><div class="midwest-loading-icon" role="img" aria-label="Loading" aria-hidden="true" style="display: none"> <div class="midwest-loading-icon-inner"> <!-- By Sam Herbert (@sherb), for everyone. More @ http://goo.gl/7AJzbL --><svg viewbox="0 0 120 30" xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="Midwest-LoadingIcon__Svg" focusable="false" aria-hidden="true"> <circle cx="15" cy="15" r="15"> <animate attributename="r" from="15" to="15" begin="0s" dur="0.8s" values="15;9;15" calcmode="linear" repeatcount="indefinite"></animate> <animate attributename="fill-opacity" from="1" to="1" begin="0s" dur="0.8s" values="1;.5;1" calcmode="linear" repeatcount="indefinite"></animate> </circle> <circle cx="60" cy="15" r="9" fill-opacity="0.3"> <animate attributename="r" from="9" to="9" begin="0s" dur="0.8s" values="9;15;9" calcmode="linear" repeatcount="indefinite"></animate> <animate attributename="fill-opacity" from="0.5" to="0.5" begin="0s" dur="0.8s" values=".5;1;.5" calcmode="linear" repeatcount="indefinite"></animate> </circle> <circle cx="105" cy="15" r="15"> <animate attributename="r" from="15" to="15" begin="0s" dur="0.8s" values="15;9;15" calcmode="linear" repeatcount="indefinite"></animate> <animate attributename="fill-opacity" from="1" to="1" begin="0s" dur="0.8s" values="1;.5;1" calcmode="linear" repeatcount="indefinite"></animate> </circle></svg> </div></div></a>Additional input types for Form::InputComponent
AVAILABLE_TYPES now includes color, date, time, datetime_local, month, and week, in addition to the existing set.
What Changed
midwest_tasks.rake— a newmidwest_pkg_runhelper detects yarn vs npm at runtime and builds the correct command string. All CSS, JS, and icon rake tasks now route through this helper instead of hardcodingyarn.- Demo production config —
config.public_file_server.enabledis now unconditionallytrue(was gated onRAILS_SERVE_STATIC_FILES), which is required for the Docker deployment path.
What Was Removed
- The
Concernsnamespace wrapper was removed fromThemeablein the demo's preview concern (Concerns::Themeable→Themeable). No public API impact.
Dev Process
- A
Dockerfileanddemo/bin/docker-entrypointare now part of the standard development and demo-deployment workflow. bin/dev --dockerprovides a one-command path to run the demo app in a container without needing a local Ruby/Node setup.- Rake tasks for CSS, JS, and icons now work with either yarn or npm, removing a hard dependency on yarn in contributor environments.
VS Code Extension
The compiled extension (lsp/midwest-language-server.vsix) is bundled in this release's assets and can be installed directly:
code --install-extension lsp/midwest-language-server.vsix