# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project try to adheres to [Semantic Versioning](https://semver.org/). Go to the `v2` branch to see the changelog of Lume 2. Go to the `v1` branch to see the changelog of Lume 1. ## [3.3.1] - Unreleased ### Changed - New icon catalog `mingcute` has updated to 3.0.0 (that changes the icon names `arrow/arrow_left_fill` => `arrow-left:filled`). Set the option `versions.mingcute = 2` to back to the v2 version. ### Fixed - `og_images`: Pass helpers in the second argument of the layout function. - Updated dependencies: `html-validate`, `postcss`, `markdown-it-attrs`, `markdown-it-deflist` and `ai_robots` and some icons. ## [3.3.0] - 2026-07-29 ### Added - New plugin: `pwa`. - New plugin: `git_date`. - New plugin: `git_info`. - New plugin: `well_known`. - New plugin: `toc`. - New option `disallowAI` for `robots_txt` plugin. - Implement HMR in `serve` mode, using Node module hooks API. - `site.archetype()` to register archetypes from the _config.ts file. - New flag `--dry-run` to check for build errors [#860] - Predefined archetypes for common code scaffolds - `plugin` to create a Lume plugin in the local folder `_plugins/[name].ts`. - `archetype` to create a Lume archetype in the local folder `_archetype/[name].ts`. - `cms` to create the `_cms.ts` file. - `feed` plugin: added `authorAvatar` property [#859]. - RAM usage info in the debugBar. - Starting info in the debugBar. - New flag `--inspect, -i` to start a inspector server for debugging. - New `site.debugBar.action()` to add visible actions in the debugBar. ### Changed - The `merge` utility function changed the types to better reflect its returned type. This change only affects to plugin creators. For now on, the default options object must be declared with `satisfies`. You can learn more about this change here: [#853]. ```ts // Old way export const defaults: Options = {}; // New way export const defaults = {} satisfies Options; const options = merge(defaults, userOptions); ``` - `favicon` plugin: Don't override favicons added explicitly with `site.add()` or `site.copy()`. - Archetypes are loaded from the cwd, not the `src` folder. - Moved `Logger` class to the `core/` folder. - Removed `@std/testing/snapshot` dependency in favor of buil-in `t.assertSnapshot()` function introduced in Deno 2.9 - DebugBar: - Inline the code in the HTML pages instead of loading remotely from jsdelivr. - The CMS button is now visible in the tab bar. - Prims and Code Highlight plugins: load `vento` language by default. ### Removed - String value for `serve.debugBar` option. Now only allows a boolean value. ### Fixed - `icons` plugin: Added missing type for `spriteIcon` helper [#852]. - Updated dependencies: `cliffy`, `date-fn`, `decap`, `esbuild`, `postcss`, `sass`, `sharp`, `tailwindcss`, `unocss`, `std`, `html-validate`, `markdown-it`, `svgo`, `terser`, `zip-js`, `katex`, `lightningcss`, `postcss`, `autoprefixer`, `decapcms`, `satori`, `unocss`, `magic-string` and some icons. - `json_ld` plugin: Allow some html tags in the `description` key (according to google's docs). - `feed` plugin: Set absolute urls for icons, and images. - Don't break the build on error loading a `_data` file. - Don't break the build on error rendering a page or layout. ## [3.2.6] - 2026-05-25 ### Fixed - Revert removal of `@std/crypto` dependency because it's needed for MD5. ## [3.2.5] - 2026-05-25 ### Added - `robots` plugin: support rule grouping [#838] - `robots` plugin: support Content-Signal rule [#838] - `feed` plugin: Allow `html` extension for pretty URL [#839] - `feed` plugin: New `info.self` option to customize the `self` url [#839] - `feed` plugin: Add `items.categories` support, defaults to `"=tags"` [#848] - `image_size` plugin: Support for remote files and external URLs. - `icons` plugin: Add icons from theSVG. - `icons` plugin: Add support for generating an SVG spritesheet. [#851] - New `LUME_CONCURRENCY` env var to define a custom global concurrency limit [#843]. - `transform_images` plugin: New `concurrency` option to limit the number of images processed in parallel (10 by default) [#843]. ### Changed - `brotli` plugin: Replace `deno_brotli` dependency with Deno native support. - Removed `@std/encoding/base64` dependency and use native `Uint8Array.toBase64()` method. - Removed `@std/encoding/hex` dependency and use native `Uint8Array.toHex()` method. - Removed `@std/crypto` dependency because it's not needed. - Replaced some `@std` imports with `node:*` API to reduce the number of external dependencies. - `robots` and `sitemap` plugins: the generated `robots.txt` content will always end with a newline [#838]. - Move the Lume debug bar to this repo. ### Removed - Support for Deno 2.5.x & 2.6.x - `quality` option of the `brotli` plugin. ### Fixed - `google_fonts` plugin: don't ignore the display parameter [#834] - `esbuild` plugin: configure the `platform` option of the Deno loader to "browser". - Don't break the build if a loader throws an error. - Updated dependencies: `std`, `cliffy`, `pagefind`, `postcss`, `autoprefixer`, `html-validate`, `decap-cms`, `tailwindcss`, `terser`, `sass`, `remove-markdown`, `image-dimensions`, `katex`, `date-fns`, `partytown`, `markdown-it-attrs` and some icons. ## [3.2.4] - 2026-04-10 ### Added - `paginate.first` and `paginate.last` properties to get the first and last page of the pagination [#827]. - `feed` plugin: upgrade JSON output to JSON Feed 1.1 [#830]. - `feed` plugin: add Atom feed support [#831]. ### Fixed - Duplicated pages now logs the error instead of throwing it. - Updated dependencies: `schema-dts`, `esbuild`, `sass`, `terser`, `katex`, `satori`, `zip-js`, `xml`, `deno-loader`, `pug`, `tailwindcss`, `decap-cms`, `partytown`, `unocss`, `pagefind`, `postcss` and icons. ## [3.2.3] - 2026-03-11 ### Fixed - `image_size` plugin was unable to extract image dimensions in some cases due to faulty path resolution. ## [3.2.2] - 2026-03-11 ### Added - New `site.removePage` to make easier to remove files or pages during the build. - Redirect middleware: `copySearchParams` option. - New `replace` hook to update or add new replacements to the `replace` plugin. - Abort the fetch of remote files after 10s. - `json_ld` plugin: `insert` options to control whether to place the JSON-LD data into pages. ### Fixed - `transform_images` plugin incorrectly deduplicates when format is an object [#823] - `extract_order` plugin: convert the order to number if cascade option is disabled. - Added names to some processor functions to show up in the debug bar. - Updated dependencies: `cliffy`, `zip-js`, `markdown-it`, `std`, `katex`, `html-validate`, `autoprefixer`, `tailwind`, `vento`, `decap`, `satori`, `unocss`, `svgo`, `deno/loader`, `satori`, `sass`, `lightningcss` and some icons. ## [3.2.1] - 2026-02-10 ### Fixed - LumeCMS: the preview url wasn't detected. - SEO plugin: revert change in 3.2.0 to ensure the custom output is exported after build or update. - Validate HTML plugin: revert change in 3.2.0 to ensure the custom output is exported after build or update. - Updated dependencies: `zip-js`, `satori`. ## [3.2.0] - 2026-02-09 ### Added - New plugin `epub` to export the site into a `.epub` file. - New plugin `image_size` to generate automatically the `width` and `height` attributes of `img` elements. - New plugin `extract_order` to extract the `order` property from the filename. (i.e. `23.hello-world.md`) - New plugin `replace` to perform basic replacements in the pages. - New `watcher.dependencies` option to map manual dependencies. - `katex` plugin: add support for `mhchem` extension [#805]. - `katex` plugin: Allow not downloading CSS and font assets for KaTeX plugin [#810] - `parseBasename` functions accept a second argument with the parent data object, useful for aggregated values. For example to parse the full date in `/posts/2024/06/21/hello-world.md`. - `relativeUrls` plugin: add `relativeUrl` filter. - Support for `.xhtml` pages (required to build ebooks). - Support for `.mjs` as the extension of \_component scripts' output file [#815]. - `remark` plugin: add `mdRemark` filter. ### Changed - `date` plugin: if no language is specified to the filter, use the current page language. If it's not defined, use the default language. - Simplified the logic to detect the hostname, port and location in `--serve` mode. - LumeCMS plugin: - Protect the whole site only when the location is not `localhost`. - Now it's mandatory that the CMS is registered in the import map as `lume/cms/`. - The `src` storage can be overwriten in the `_cms.ts` file. - Pages defined with `site.page({ url: "foo", content: (data) => "..." })` uses automatically `js` as the template engine. - The `server.root` option is always relative to the dest folder. - Capture `warn`, `error` and `fatal` logs to output at the end of the build. ### Removed - `LUME_PROXIED` environment variable is no longer needed. ### Fixed - LumeCMS: Ensure `previewUrl` is only applied for changes in the `src` storage. - Updated dependencies: `@deno/loader`, `std`, `sass`, `decap`, `html-validate`, `remove-markdown`, `satori`, `terser`, `unocss`, `lightningcss`, `purgecss`, `katex`, `autoprefixer`, `esbuild`, `zip-js`, `eta` and some icons. - Esbuild plugin resolution erroring with Windows style file paths [#807], [#808]. - Conflict with \_component scripts and script.ts file [#659] - `transform_images` plugin doesn't process image files generated by a `.page.ts` file [#813] - Allow `%` character in filenames [#809] - The property `sourcePath` of pages and files was wrongly returning the extension in lowercase, even if the original filename is in uppercase. - Make `this` type of `Lume.Helpers` compatible with consuming from an object (`helpers.foo()`). - When adding remote files from npm/github/jsdelivr, paths starting with `/*` are now correctly parsed [#818]. - Add missing types for helper functions to Lume global namespace [#817]. ## [3.1.4] - 2026-01-01 ### Fixed - Removed a 10s await in the dev server [#803] - Updated MynaUI icons. ## [3.1.3] - 2025-12-30 ### Changed - The dev server starts before the build, displaying a waiting screen until the build is complete. ### Fixed - Append search to redirect in `/core/server.ts` if path matches directory [#796]. - Import `esbuild` dependency from `npm` to avoid permissions issues [#795]. - Updated dependencies: `deno-loader`, `sass`, `xml`, `unocss`, `std`, `katex`, `html-validate`, `bar`, `eta`, `vento`, `autoprefixer`, `tailwindcss`, `esbuild`, `ssx` and icons. - Vento components shouldn't inherit the page's data [#797]. - `icons` plugin: ensure the SVG code includes the `viewBox` attribute. - `unocss` plugin: process HTML files with UnoCSS transformers. - `resvg` dependency works offline. ## [3.1.2] - 2025-11-18 ### Added - `search.file()` to search for a single file. - `favicon` plugin: The `input` option allows an object with different files per size. Example: ```ts site.use( favicon({ input: { 16: "favicon.svg", 180: "big-favicon.svg", }, }), ); ``` ### Changed - Cache results of `search.files()`. - `LUME_DRAFTS` environment variable is true by default with `--serve | -s`. ### Removed - `run` command code. It didn't work for a while and it's better to run Deno tasks. ### Fixed - Ensure console output for validate_html and seo plugins is shown after the build process. - Ensure `metas` plugin is registered after `og_images`. - `favicon` plugin: scale the SVG icons before render to PNG. - Added missing tests for SEO plugin. - Renamed `Config` interface of `seo` and `validate_html` plugins to `Options`. - Added export-ignore paths to `.gitattributes`. - `site.remote()`: support commit SHA for GitHub versions. - Don't prompt for the CMS login credentials in local development to access to the site. - Updated dependencies: `deno-loader`, `tailwindcss`, `html-validate`, `magic-string`, `minify-html`, `sass`, `esbuild`, `terser`, `sharp`, `decap-cms`, `unocss`, `eta`, `std` and some icons. ## [3.1.1] - 2025-10-20 ### Added - Plugin `icons`: added [Ionicons catalog](https://ionic.io/ionicons) - `site.remote()` allow a string as the third argument. ### Fixed - Ensure url pathname is normalized in `serveFile` [#789] - Updated some icons. ## [3.1.0] - 2025-10-17 ### Added - New plugin `validate_html`. - New plugin `partytown`. - Detect `form[action]` values by `modify_urls`, `base_path`, `check_urls` and `relative_urls` plugins. - `site.remote()` function that works like `site.remoteFile()` but allows an array of glob patterns for `npm:` and `gh:`. For example: ```js site.remote("_includes/styles/animate", "npm:animate.css@4.1.1/source", [ "/**/*.css", ]); ``` `site.remoteFile()` is now an alias of `site.remote()`. - `inline` plugin: Add support for CSS. For example `url("/image.png?inline")`. - `picture` plugin: Allow to crop images by setting the width and height dimmensions. For example: `200x400`. ### Changed - `check_urls` plugin: broken links details are no longer shown in the console. Use the debug bar or export to a file to see the details. - Switch from `deno.land/x` to `jsdelivr`. ### Removed - `cms` command. LumeCMS is automatically initialized if the file `_cms.ts` or `_cms.js` is detected. Use `--no-cms` option to disable it. ### Fixed - Plugins `katex` and `google_fonts` fails when running `site.build()` multiple times. - `feed` plugin: revert changes introduced in 3.0.7 (Use `textContent` instead of `innerHTML` to get values using CSS selectors). - Updated dependencies: `std`, `katex`, `html-validate`, `unocss`, `decap_cms`, `lightningcss`, `tailwindcss`, `vento`, `deno-loader`, `eta` and some icons. ## [3.0.11] - 2025-09-25 ### Added - Support for `gh:` specifiers in Lightningcss, Postcss and Tailwindcss. ### Fixed - `google_fonts` plugin: handle unnamed @font-face subsets [#785] - `tailwind` plugin: Support to import styles from npm. (i.e. `@import "npm:tw-animate-css"`) - `tailwind` plugin: Imports with relative paths don't work. - Updated dependencies. ## [3.0.10] - 2025-09-24 ### Added - New env variable `LUME_PROXIED` to use a location with a different hostname and port to the server's hostname and port. - New file `serve.ts` to run LumeCMS in a VPS (experimental, will be stable in 3.1). - Ignore `deno.json` and `deno.jsonc` files by the watcher. ### Fixed - `inline` plugin: Error when basePath plugin is used before. - `icons` plugin: clear the plugin list on update. - Updated dependencies: `vento`, `satori`, `sharp`, `esbuild`, `deno-loader`, `sass`, `unocss` and some icons. ## [3.0.9] - 2025-09-11 ### Added - `sourceURL` pragma to the live update script inlined in the HTML pages. - `vento` plugin: Support `slot` tags inside components. ### Fixed - Replaced `svg2png-wasm` dependency with `resvg`. - `sitemap` plugin: Don't add the `User-agent` rule to `robots.txt`. - `esbuild` plugin: Handle alias option. - `esbuild` plugin: Handle `json` files imported without `with { type: "json" }` attribute. - Type changes introduced in Deno 2.5.0 - Updated dependencies: `vento`, `tailwindcss`, `sass`, `satori`, `unocss` and some icons. ## [3.0.8] - 2025-09-04 ### Fixed - `esbuild` plugin: Handle external and node built-in modules. - Make sure development middlewares are registered at the begining. - Updated dependencies: `terser`, `sass`, `satori`, `std` and some icons. ## [3.0.7] - 2025-09-02 ### Added - `check_urls` plugin: New option `anchors` to check the URL hash. - `filter_pages` plugin: New option `beforeRender` to filter the pages before rendering. - `inline` plugin: New option `sourceURL` to add the `sourceURL=inline:...` pragma to inlined JS and CSS files [#779]. - `site.initDebugBar()` to initialize manually the `debugBar`. - `gh:` specifier for `add()` and `copy()`, to use files from GitHub repositories. - Allow to download several files from a GitHub or NPM package using glob patterns. For example `site.add("npm:ventojs/**")`. ### Fixed - Issues running `site.build()` multiple times in the same process. - `mergedKeys` key is not merged. - Use `textContent` instead of `innerHTML` to get values using CSS selectors by some plugins like metas [#782] - Updated [Vento to v2](https://lume.land/blog/posts/vento-2/). - Updated dependencies: `bar`, `unocss`, `tailwindcss`, `esbuild`, `std`, `deno/loader`, `sass`, `xml`, `magic-string`, `satori`, `mdx`, `pagefind` and some icons. ## [3.0.6] - 2025-08-07 ### Added - New `idle` event, triggered when the `build` or `update` process has finished or stopped. - New flag `--cms` for `deno task serve` to run the new experimental version of LumeCMS. - `sheets` plugin: New option `outputOptions` to configure the output of the data. - `prism` plugin: New `autoloadLanguages` option to load automatically the languages on demand. ### Changed - `esbuild` plugin: use `jsr:@deno/loader` official package instead of `@luca/esbuild-deno-loader`. - Middlewares configured in the `server.middlewares` option are registered before the dev middlewares. - `--watch` and `--serve` modes don't exit if there's an error on build. - `mdx` plugin: Now `stylePropertyNameCase` option is fixed to "css", ensuring generated HTML always uses kebab-case inline styles. - Local server: when the port is not explicitly set and the default `3000` is in use, Lume will use the next available port (from `3001` to `3010`). ### Fixed - Optimized file server by removing a `Deno.stat` call. - `jsx` plugin: Support `precompile` option [#770]. - `katex` plugin: Catch Katex errors when delimiters are allowed - Updated dependencies: `std`, `satori`, `vento`, `decap-cms`, `esbuild`, `ssx`, `lume-bar`, `deno-dom`, `unocss` and some icons. - Fixed bug with date handling in the `sheets` plugin [#772]. - Don't urlencode the `basename` variable. ## [3.0.5] - 2025-07-17 ### Changed - Unify browsers support accross several plugins like `postcss`, `highlightningcss` or `esbuild`. - Remove access request to env variables [#765] - `favicon`: Changed the default favicon.ico file size from 48x48 to 32x32. ### Fixed - `decap_cms`: prevent to apply a layout to the generated admin page. - When the update action fails, the watcher is paused indefinitely. - Updated dependencies: `svgo`, `terser`, `postcss`, `decap-cms`, `unocss`, `deno_dom`, `std`, `tailwindcsss`, `vento`, `sharp` and some icons. ## [3.0.4] - 2025-06-13 ### Fixed - Performance measurement error building an empty site. - Updated some icons. ## [3.0.3] - 2025-06-12 ### Added - Google fonts plugin: new option `ignoredSubsets` [#755]. - Lightningcss plugin: Report errors in the terminal and Lume bar. - Tailwindcss plugin: Add `minify` option [#757]. - Feed plugin: new option `stylesheet` to style xml outputs. - More build info in the Lume bar, like performance and ability to enable/disable drafts. ### Fixed - Sitemap plugin mangles already existing robots.txt file [#761] - The Lume bar is less invasive and hidden by default. - Updated dependencies: `std`, `terser`, `esbuild`, `tailwindcss`, `xml`, `sass`, `postcss`, `unocss`, `vento`, `satori`, `decap-cms`, `lume-bar` and some icons. - Redirects plugin with Netlify: append new redirects to the existing file instead of override the content. ## [3.0.2] - 2025-05-23 ### Added - Source maps support for tailwindcss plugin. - Decap CMS plugin: show the URL in the debugbar. ### Fixed - prism plugin: Allow `prism` as theme name. - Add/copy paths starting with `_` (`add("_assets", "assets")`) - minify_html plugin: Disable js and css minification by default unless `.css` and `.js` extensions are added. - Vento filters in components (ex: `{{ comp.button() |> toUpperCase }}) - Slugifier: ignore errors for malformed URLs. - Duplicated pages created with `site.page()`. - `HelperThis` type. - Error loading empty JSON files. - Tailwindcss: Resolve relative modules - Updated dependencies: `sass`, `lightningcss`, `std`, `terser`, `satori`, `decap-cms`, `ssx`, `tailwindcss`, `unocss`, `vento` and some icons. ## [3.0.1] - 2025-05-10 ### Added - Reintroduced `site.copy()` function removed in 3.0.0, because it's still useful in specific scenarios. - More info in the debugbar from minify_html, esbuild, terser, postcss, lightningcss, google_fonts and svgo plugins. ### Fixed - Warning message by the transform_images plugin. - Don't ignore `/.well-known` folders. - Updated dependencies: `tailwindcss`, `unocss`, `lume-bar` and some icons. ## [3.0.0] - 2025-05-07 ### Added - New `site.add()` with support URLs and NPM specifiers. - New debugbar for development mode. - New options `cssFile`, `jsFile` and `fontsFolder` to configure a default destination for automatic generated code. It's used by default by code_highlight, google_fonts, prism and unocss. It's also used by default by components. - New folder-based components. - Components: allow to define default data values in components. - `await` filter for nunjucks. - `page.text` and `page.bytes` getters and setters. - `site.process(callback)` as an alias of `site.process("*", callback)`. - `site.preprocess(callback)` as an alias of `site.preprocess("*", callback)`. - `Server` class is now compatible with `deno serve` command. - New data merging strategy named `data`, used by the multilanguage plugin. - `slugify_urls` plugin: new `transliterate` option to define a different library per language. - `katex`: `cssFile`, `placeholder` and `fontsFolder` option. The plugin downloads the CSS code. - `icons` plugin: Added css.gg and radix-ui.com/icons [#736] - `feed` plugin: Allow to pass an array of options or a function that return an array of options. - `sitemap` plugin: New option `stylesheet`. - Deno lint plugin. ### Changed - `Temporal` API is enabled by default. - Minimum Deno version supported is LTS (2.1.0) - Refactor source.build function to give priority to load over copy statically. - Always load files with extensions that need to be (pre)processed instead copy them. - Lume's components are now async. - `jsx` plugin uses SSX library instead of React. - The `jsx` pages have the `.page` subextension (`.page.jsx`). - `mdx` plugin no longer depends on a `jsx` plugin installed before. - Upgraded `tailwind` to v4 and removed the dependency on `postcss` plugin. - Replaced events-based operations with processors in the plugins code_highlight, decap_cms, favicon, feed, google_fonts, icons, prism, robots, sitemap and slugify_urls. - `metas` plugin: `generator` property is `true` by default. - `page.document` always returns a Document or throws and exception. - Refactor of `esbuild` plugin to use `esbuild-deno-loader` to resolve and load jsr and npm dependencies. - `transform_images` and `picture` plugins no longer load all images by default. Use `site.add()`. - Only the images that must be transformed are loaded. - `decap_cms`: create the admin html page once. - `postcss`, `sass`, `tailwindcss`, `unocss` and `lightningcss`, plugins no longer load all CSS files by default. Use `site.add()`. - `svgo` plugin no longer load all SVG files by default. Use `site.add()`. - `terser` and `esbuild` plugins no longer load all JS and TS files by default. Use `site.add()`. - `esbuild` bundles jsx and tsx files by default. - `sitemap` plugin: changed the options for something similar to `feed` and `metas`. - The basename variable reflects always the final URL instead of the original file [#660]. - Page generators can define the basename instead of the full URL to modify only the last part of the URL. - Moved the date extration from the file paths to the `extract_date` plugin. - `google_fonts`: renamed `folder` option to `fontsFolder`. - `og_images`: renamed `satori` option to `options`. - `redirects` middleware: `strict` option is false by default. - `multilanguage` plugin: Now it can handle generator pages with an array of languages. - `source_map` plugin: The `sourceContent` option is `true` by default. - Renamed `CRITICAL` log level to `FATAL`. And added `TRACE` level. - Renamed `site.server()` to `site.getServer()` for consistency with `site.getWatcher()`. - Use the `site.cache` instance instead of creating a different instance per plugin. - Changes in the `Cache` class: - Renamed `get()` to `getBytes()` for consistency with `getText()` - New method `remove()`. - Changed the signature of `getText()` and `getBytes()`. - `renderOrder` property is not applied to page layouts [#749]. - unocss plugin: Used presetWind3 as default. - renamed the `isRedirect` property created by redirects plugin to `unlisted`. ### Removed - `jsx_preact` plugin. Use `jsx` instead. - `liquid` plugin. Use `nunjucks` instead. - `site.copyRemainingFiles()` and `site.copy()`. Use `site.add()` instead. - Automatic `` to all HTML pages. - `extensions` option of the plugins `modify_urls`, `check_urls`, `base_path`, `code_highlight`, `fff`, `inline`, `json_ld`, `katex`, `metas`, `multilanguage`, `og_images`, `prism`, `purgecss`, `relative_urls`, `postcss`, `lightningcss`, `sass`, `svgo`, `filter_pages`. - `name` option of the plugins: `date`, `json_ld`, `metas`, `nav`, `paginate`, `picture`, `reading_info`, `search`, `transform_images`, `url`, `postcss`. - `site.loadAssets()` function. Use `site.add()` instead. - `on_demand` plugin and middleware. If you need some server-side logic, you can use router middleware. - `inline` plugin: removed the `attribute` option. - `cache` option in `transform_images`, `favicon` and `og_images`. Use `LUME_NOCACHE=true` env variable to disable cache. - `variable` option of Lume components. It's always `comp`. - `name` special variable of components to customize the name. It's always the filename. - `slugify_urls` plugin no longer handle unicode characters by default. Use the `transliterate` option to configure it. - Internal variable `page._data` because it's useless. - `site.globalData` variable due it's no longer needed. Use `site.scopedData.get("/")` if you need it. ### Fixed - The resolution of npm and jsr specifiers by esbuild plugin have been improved. - Replaced some thrown errors with warnings in the console (`icons`, `inline`, `picture`) [#740]. - Merging of multilanguage variables. - Parsing the escaped URLs in CSS files. - Improved the output CSS and JS code of components. - Components interoperability, specially between JSX vs text engines. - Improved reload after renaming or removing a folder. - Added live-reload to the 404 page. - Log an error if prism and codeHighlight plugins are registered at the same time [#497]. - Updated all dependencies to the latest version. - Plugin sheets: UTF-8 characters in .csv files. - Search plugin: Sorting when some pages lack key fields [#748] - json_ld plugin: alias to non-string value causes an error. - transform_images: preserve the animation between gif and webp formats [#750]. - Set `LUME_LIVE_RELOAD` env variable in the CMS environment - check_urls plugin: Handle correctly the spaces and other escaped characters. [#497]: https://github.com/lumeland/lume/issues/497 [#659]: https://github.com/lumeland/lume/issues/659 [#660]: https://github.com/lumeland/lume/issues/660 [#736]: https://github.com/lumeland/lume/issues/736 [#740]: https://github.com/lumeland/lume/issues/740 [#748]: https://github.com/lumeland/lume/issues/748 [#749]: https://github.com/lumeland/lume/issues/749 [#750]: https://github.com/lumeland/lume/issues/750 [#755]: https://github.com/lumeland/lume/issues/755 [#757]: https://github.com/lumeland/lume/issues/757 [#761]: https://github.com/lumeland/lume/issues/761 [#765]: https://github.com/lumeland/lume/issues/765 [#770]: https://github.com/lumeland/lume/issues/770 [#772]: https://github.com/lumeland/lume/issues/772 [#779]: https://github.com/lumeland/lume/issues/779 [#782]: https://github.com/lumeland/lume/issues/782 [#785]: https://github.com/lumeland/lume/issues/785 [#789]: https://github.com/lumeland/lume/issues/789 [#795]: https://github.com/lumeland/lume/issues/795 [#796]: https://github.com/lumeland/lume/issues/796 [#797]: https://github.com/lumeland/lume/issues/797 [#803]: https://github.com/lumeland/lume/issues/803 [#805]: https://github.com/lumeland/lume/issues/805 [#807]: https://github.com/lumeland/lume/issues/807 [#808]: https://github.com/lumeland/lume/issues/808 [#809]: https://github.com/lumeland/lume/issues/809 [#810]: https://github.com/lumeland/lume/issues/810 [#813]: https://github.com/lumeland/lume/issues/813 [#815]: https://github.com/lumeland/lume/issues/815 [#817]: https://github.com/lumeland/lume/issues/817 [#818]: https://github.com/lumeland/lume/issues/818 [#823]: https://github.com/lumeland/lume/issues/823 [#827]: https://github.com/lumeland/lume/issues/827 [#830]: https://github.com/lumeland/lume/issues/830 [#831]: https://github.com/lumeland/lume/issues/831 [#834]: https://github.com/lumeland/lume/issues/834 [#838]: https://github.com/lumeland/lume/issues/838 [#839]: https://github.com/lumeland/lume/issues/839 [#843]: https://github.com/lumeland/lume/issues/843 [#848]: https://github.com/lumeland/lume/issues/848 [#851]: https://github.com/lumeland/lume/issues/851 [#852]: https://github.com/lumeland/lume/issues/852 [#853]: https://github.com/lumeland/lume/issues/853 [#859]: https://github.com/lumeland/lume/issues/859 [#860]: https://github.com/lumeland/lume/issues/860 [3.3.1]: https://github.com/lumeland/lume/compare/v3.3.0...HEAD [3.3.0]: https://github.com/lumeland/lume/compare/v3.2.6...v3.3.0 [3.2.6]: https://github.com/lumeland/lume/compare/v3.2.5...v3.2.6 [3.2.5]: https://github.com/lumeland/lume/compare/v3.2.4...v3.2.5 [3.2.4]: https://github.com/lumeland/lume/compare/v3.2.3...v3.2.4 [3.2.3]: https://github.com/lumeland/lume/compare/v3.2.2...v3.2.3 [3.2.2]: https://github.com/lumeland/lume/compare/v3.2.1...v3.2.2 [3.2.1]: https://github.com/lumeland/lume/compare/v3.2.0...v3.2.1 [3.2.0]: https://github.com/lumeland/lume/compare/v3.1.4...v3.2.0 [3.1.4]: https://github.com/lumeland/lume/compare/v3.1.3...v3.1.4 [3.1.3]: https://github.com/lumeland/lume/compare/v3.1.2...v3.1.3 [3.1.2]: https://github.com/lumeland/lume/compare/v3.1.1...v3.1.2 [3.1.1]: https://github.com/lumeland/lume/compare/v3.1.0...v3.1.1 [3.1.0]: https://github.com/lumeland/lume/compare/v3.0.11...v3.1.0 [3.0.11]: https://github.com/lumeland/lume/compare/v3.0.10...v3.0.11 [3.0.10]: https://github.com/lumeland/lume/compare/v3.0.9...v3.0.10 [3.0.9]: https://github.com/lumeland/lume/compare/v3.0.8...v3.0.9 [3.0.8]: https://github.com/lumeland/lume/compare/v3.0.7...v3.0.8 [3.0.7]: https://github.com/lumeland/lume/compare/v3.0.6...v3.0.7 [3.0.6]: https://github.com/lumeland/lume/compare/v3.0.5...v3.0.6 [3.0.5]: https://github.com/lumeland/lume/compare/v3.0.4...v3.0.5 [3.0.4]: https://github.com/lumeland/lume/compare/v3.0.3...v3.0.4 [3.0.3]: https://github.com/lumeland/lume/compare/v3.0.2...v3.0.3 [3.0.2]: https://github.com/lumeland/lume/compare/v3.0.1...v3.0.2 [3.0.1]: https://github.com/lumeland/lume/compare/v3.0.0...v3.0.1 [3.0.0]: https://github.com/lumeland/lume/releases/tag/v3.0.0