Skip to content

Latest commit

 

History

History
463 lines (412 loc) · 24.6 KB

File metadata and controls

463 lines (412 loc) · 24.6 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project try to adheres to Semantic Versioning. Go to the v2 branch to see the changelog of Lume 2. Go to the v1 branch to see the changelog of Lume 1.

Added

  • paginate.first and paginate.last properties to get the first and last page of the pagination.
  • feed plugin: upgrade JSON output to JSON Feed 1.1.
  • feed plugin: add Atom feed support.

Fixed

  • Duplicated pages throws an error instead of using the log.error helper.
  • Updated dependencies: schema-dts, esbuild, sass, terser, katex, satori, zip-js, xml, deno-loader, pug, tailwindcss, decap-cms, partytown, unocss 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:
    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
  • 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:
    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.
  • 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 <!doctype html> 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.