Unify asset build preparation and supervised development sessions - #37
Merged
Merged
Conversation
- Add Volt.build/1 with a typed complete-build result and one root manifest - Isolate Tailwind scanner state per profile and CSS root under supervision - Share one lazy QuickBEAM compiler runtime across Tailwind workers - Normalize manifests and emitted assets to typed structs - Keep Mix tasks as adapters and make development artifact identity configurable
Checkpoint the work-in-progress migration to session-owned ETS tables, compiler runtimes, and stylesheet workers. Serve retained CSS and reconcile compiler-discovered watches. Default-path migration and failure-recovery coverage remain unfinished.
Track failed resolution candidates for rebuild recovery, migrate default managed and CLI startup to session subtrees, and add real filesystem isolation coverage. Development groundwork checkpoint; lifecycle lookup races and combined CLI/Plug compatibility remain to be verified before release.
This was referenced Sep 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Incorporate Roman Kurakin's fix(js): read the format key only when it holds formatter options #36 formatter/discovery guards for The format option has two meanings #34, preserving authorship and adapting the regression to the renamed Discovery API with deterministic fixtures.
Require patched Igniter (>= 0.8.4) and Bandit (>= 1.12.5, still test-only in Volt); raise the Bandit floor in all five Phoenix examples.
Refresh example Phoenix and LiveView locks to compatible security-patched releases, preserving their existing LiveView minor series.
Require QuickBEAM 0.11.1 for release-optimized, baseline-CPU native builds and the Mint 1.10 dependency floor; refresh the Phoenix example lockfile.
Align nine source paths with established module names, normalize Mix-task test namespaces, and compile shared test support only in test builds.
Clarify discovery and cleanup API names; move hashing and file metadata helpers to their owners without changing behavior.
Compose module-graph and Tailwind output through typed artifact plans, validate manifests/collisions before emission, and stage publication with manifest-last installation.
Introduce session-owned ETS tables, compiler runtimes, stylesheet workers, and filesystem watching with restart-safe request handles and scoped HMR.
Retain Tailwind compiler contexts and track discovered sources/dependencies, including failed-load recovery; serve last successful CSS and order document reloads after successful CSS builds.
Isolate vendor caches by compilation context, normalize output layout/assets directories, and organize Mix task source/tests into matching nested directories.
Handle disappearing session processes with retryable responses and document explicit CLI-owned session attachment for Phoenix/Plug hosts.
Keep cached asset requests independent of watcher rebuilds by verifying immutable configuration through the session state owner.
Serve resolved outside-root stylesheet assets through session-scoped URL grants rather than filesystem-path requests.
Normalize disabled Tailwind configuration and expose dependency-ordered manifest stylesheet traversal.
Assemble scoped Vue component exports for both template-only and script-bearing SFCs without capturing module bindings such as
Object.Compatibility
Volt.JS.Discovery.files/0,1andformat_files/0replaceVolt.JS.Helpers.discover_files/0,1anddiscover_format_files/0; this public rename is recorded in Unreleased breaking changes.Validation
mix ci: 697 passed, 5 skipped, 39 integration tests excluded.mix compile --force --warnings-as-errorspasses. Corrected a naming-rewrite artifact (state.session()instead of field access) found during fresh consumer compilation.Objectbinding and preserves component identity.Boundaries / follow-up
Volt.entry_path/1deprecation remains a separate migration concern.