Skip to content

Releases: elixir-volt/volt

v0.9.1

24 Apr 17:53

Choose a tag to compare

Added

  • Vue compile-time feature flags are now provided by the built-in Vue plugin.
  • process.env.NODE_ENV is now defined automatically from Volt's build mode.

v0.9.0

24 Apr 17:21

Choose a tag to compare

Added

  • Added Volt.entry_path/2 for resolving source entries in development and hashed manifest assets in production.
  • Added built-in React prebundle coordination for React, React DOM client, and JSX runtime imports.
  • Added plugin prebundle hooks for canonical dependency aliases and generated proxy entries.
  • Added Vue, Svelte, and React example Phoenix apps.
  • Added built-in Svelte support, including prebundle coordination for svelte and svelte/internal/client through a single runtime bundle.

Changed

  • Vendor prebundling now uses filesystem entries through OXC with browser conditions, named exports, and strict entry signatures.
  • Updated dependencies to QuickBEAM 0.10.6 and OXC 0.11.0.
  • Replaced the old demo app with focused framework examples.

Fixed

  • Package imports using # specifiers now resolve in both dev server rewriting and production builds.
  • Production entry paths now read Volt's manifest output through a first-class helper instead of requiring app-local layout helpers.

Volt 0.8.4

23 Apr 12:12

Choose a tag to compare

Fixed

  • Tailwind CSS builds now resolve relative @plugin and @import paths correctly from the CSS file's directory (css_base option propagated from all callers).
  • QuickBEAM builtins (fs, path, process, etc.) are now available to CJS vendor plugins loaded by the Tailwind runtime.
  • Bundled CJS plugins with __esModule + .default (e.g. daisyui) are now unwrapped so Tailwind v4 receives the plugin function directly.
  • mix igniter.install volt now auto-detects assets/js/app.js vs assets/js/app.ts instead of hardcoding .ts.

Volt 0.8.3

23 Apr 10:56

Choose a tag to compare

Fixed

  • mix igniter.install volt now fully removes legacy esbuild and tailwind configuration:
    • Deletes config :esbuild and config :tailwind blocks from config/config.exs and config/dev.exs.
    • Removes esbuild: and tailwind: watchers from the endpoint watchers list in config/dev.exs.
    • Updates mix aliases so assets.setup, assets.build, and assets.deploy no longer reference removed tasks.

Changed

  • Refactored Mix.Tasks.Volt.Install for readability: added module aliases, extracted predicate helpers, flattened nested control flow.

v0.8.2

21 Apr 15:20

Choose a tag to compare

Added

  • Volt.Formattermix format plugin for JS/TS
  • mix igniter.install volt now adds Volt.Formatter to .formatter.exs automatically

Fixed

  • Dev server vendor pre-bundling — bare imports like react no longer 404 at /@vendor/
  • CJS packages (React 19, etc.) bundled as ESM with process.env.NODE_ENV resolved at compile time
  • Cross-package CJS require() calls rewritten to ESM imports via AST

v0.8.1

21 Apr 10:31

Choose a tag to compare

Added

  • Configurable file discovery via sources: and ignore: in config :volt
  • Default sources: ["**/*.{js,ts,jsx,tsx,vue}"]
  • Default ignore: ["node_modules/**", "vendor/**"]

Changed

  • Unified file discovery across volt.js.format, volt.js.check, and volt.lint

v0.8.0

21 Apr 10:07

Choose a tag to compare

Added

  • mix volt.js.format — format JS/TS assets with oxfmt via NIF. No Node.js required.
  • mix volt.js.check — format check + lint in one command via NIF.
  • mix volt.install — Igniter-based project setup. Removes esbuild/tailwind, adds Volt config. Migrates Prettier config.
  • config :volt, :format — Elixir-native format config.

Changed

  • Replaced npx-based formatting/linting with NIF bindings.
  • Renamed mix volt.js.fmtmix volt.js.format.

v0.7.1

20 Apr 18:35

Choose a tag to compare

  • Improve mix volt.lint output to match credo style — grouped by category, severity tags, edge markers, summary by category

v0.7.0

20 Apr 18:12

Choose a tag to compare

Added

  • mix volt.lint — lint JS/TS/JSX/TSX/Vue assets with oxlint's 650+ built-in rules via NIF. No Node.js required. Configurable plugins, rules, and custom Elixir lint rules via config :volt, :lint.

v0.6.5

17 Apr 12:27

Choose a tag to compare

Added

  • Strip TypeScript types from Vue SFCs with <script lang="ts"> after Vize compilation
  • Resolve import './types.js' to ./types.ts when the .js file doesn't exist (standard TS convention)
  • Resolve bare specifiers in directories without package.json (e.g. Phoenix colocated hooks via resolve_dirs: [Mix.Project.build_path()])

Fixed

  • Fix Vue SFC compiler-injected vue imports being externalized in SSR bundles — bare specifiers introduced by Vize are now resolved via a global fallback map
  • Fix JSON module imports crashing OXC.bundle — .json labels are renamed to .json.js so Rolldown treats the export default wrapper as JavaScript
  • Skip JSON files in import extraction (they have no imports)