📦 v0.27.2 — Async Assets Ship Prebuilt
A packaging patch. The per-component async CSS/JS artifacts that v0.27.0 introduced are now committed to the repository instead of generated only at release time. If you install Midwest straight from git (a git: line in your Gemfile, a fork, or a vendored checkout), async mode now works out of the box — no gem build, no npm install, no local build step. Installing from the published RubyGem is unaffected.
What's New
Async mode works on git-based installs
v0.27.0 shipped Async Assets — a lean core stylesheet plus one content-hashed CSS/JS file per component — but deliberately kept those ~160 artifacts out of git, relying on gem build to collect them from the working tree at release. That's fine for the published gem, but it left a gap: point a Gemfile at the git repo and the async manifest named files that were never in the checkout, so every async request 404'd.
Those artifacts now live in the repo under app/assets/builds/midwest-async/. Pin Midwest to a git ref and async mode serves correctly with nothing extra to run:
# Gemfile — async assets now resolve without a build stepgem "midwest", git: "https://github.com/unabridged/midwest.git", tag: "v0.27.2"The single bundled stylesheet remains the default; this only affects consumers who opted into async delivery.
What Changed
Async artifacts are committed, not generated-at-release
This reverses the packaging decision documented in v0.27.0's "Serving and packaging" note. The content-hashed CSS/JS files and their manifest.json are now tracked in git, and the release pipeline keeps the committed tree byte-for-byte identical to what a fresh build produces:
bin/releasestages the async output withgit add -A app/assets/builds/, so the content-hash churn — files renamed or orphaned on every rebuild — is captured as deletions too, never leaving stale artifacts behind.bin/buildandbin/releasestill runscripts/check_async_package.rbto verify the manifest and the on-disk files agree before a release goes out — a mismatch would ship a manifest naming files that aren't present and silently 404 in async mode..gitignoreno longer excludes/app/assets/builds/.
The trade-off is deliberate: ~160 hashed files now show up in history on each version cut, in exchange for git installs that just work.
What Was Removed
Nothing user-facing was removed. No component options, slots, or helpers were dropped, and there are no breaking API changes. The only removal is the /app/assets/builds/ entry in .gitignore.
Dev Process
- Roadmap — no new roadmap items are completed by this release; the v0.27 milestone was already marked complete in v0.27.1. The roadmap's "Serving and packaging" note has been updated to reflect that the async artifacts are now committed rather than generated at release.
- Version bumps — the gem, the
@unabridged/midwestnpm package, and the@unabridged/midwest-language-serverLSP package are all bumped to0.27.2.