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 v1 branch to see the changelog of Lume 1.
- Feed plugin
- New option
info.hubs
- New option
2.5.1 - 2025-01-28
- Support for LumeCMS v0.9, that can perform git operations and restart the build.
- New
--hostnameargument tolume --serveandlume cmsto change the defaultlocalhostvalue to something else. - New
--open, -oargument tolume cmsto open automatically in the browser. - Feed plugin
- New option
info.image - New option
info.icon - New option
info.color
- New option
inline: Append classes to existing ones. #722
google_fonts: Fixed subset names for[1],[2], etc #692.google_fonts: Addedfont-display: swapto improve performance.- Normalize watcher ignored paths #716
- Updated dependencies:
katex,std,liquidjs,preact-render-to-string,unocss,vento,decap-cms,postcss,sassand some icons.
2.5.0 - 2025-01-11
- New plugin:
json_ldfor generating JSON-LD tags in the output #453 - New plugin:
purgecssto remove unused CSS. #693 - New plugin:
plaintextto remove Markdown and HTML syntax. - New middleware
router. google_fonts: Addedsubsetoption to filter character ranges. #692google_fonts: Added support forfont-stretch.prismplugin: AddedcssFileandplaceholderoption to themes.code_highlightplugin: AddedcssFileandplaceholderoption to themes.pagefindplugin: Newui.globalVariableoption.- Hot reload inline script tag includes integrity hash.
esbuild:- New
importMapoption to configure a import map instead of using deno.json. - New
esm.targetoption. - The
esm.depsaccepts the key*to add dependencies to all imports.
- New
autotrimplugin enabled by default for Vento.- Files with extension
.d.tsare ignored by default #707. lighningcss: Upload default browser versions:- Chromium browsers: 100 (from 98)
- Safari desktop & iOS: 16 (from 15)
- Firefox: 100 (from 97)
- Samsung: 19 (from 16)
theme.pathoption ofprismplugin.theme.pathoption ofcode_highlightplugin.
- Removed markdown syntax for some values in
metas,feedandjson_ld. relative_urlsplugin with no pretty urls #711.- Updated deps:
sass,preact,xml,katex,jsr,pagefind,highlight.js,tailwindcss,magic-string,std,esbuild,liquid,markdown-it-attrs,unocss,vento,deno_dom,unocss,satori,lightningcssand some icons. - Several changes on
esbuildplugin:- JSR using import maps #706.
- duplicated pages with generated js files.
- Use a custom module resolver instead of
import.meta.resolve()#715.
iconsplugin: Bug when using custom catalog for optionstransform_images: Conversion from animated gif to static format like jpg or png.
2.4.3 - 2024-12-11
- New option
finalHandlertoServerclass. metasplugin: Support for light and dark theme colors using an array. Example:color: ["white", "black"]
- Ensure
LUME_LIVE_RELOADenv variable is available in the _config file. on_demandmiddleware types.on_demandplugin doesn't filter scoped pages.- Added test for
check_urlsplugin. - Added tests for middlewares.
- Types errors in Deno 2.1.
og_imagesplugin: make satori options type partial.- Fixed
--portconfiguration on serve mode #704. - Updates dependencies:
std,sass,liquidjs,tailwindcss,postcss,lightningcss,preact,decap-cms,unocss,magic-string,vento,satori,terser,markdown-it-attrs,katex,xmland some icons.
2.4.2 - 2024-11-10
- Restore
minify_htmldependency creating a copy on deno.land/x #689. - Updated icon catalogs to the latest version.
- Removed license comment of lucide icon collection.
2.4.1 - 2024-11-07
- Several bugs in the
iconsplugin:- Broken urls because don't start with
/. - Options types.
- The default variant of Phosphor must be
regular. - The variant argument doesn't work.
- Broken urls because don't start with
- Some bugs in the
check_urlsplugin:- Report the exact URL for external links.
- Show a
Searchign for broken links...message to provide some feedback for sites with many links. - The ignore option doesn't qwork for external links.
- Updated dependencies:
pagefindandunocss.
2.4.0 - 2024-11-06
- New plugin:
check_urlsto detect broken links #675. - New plugin:
iconsto load automatically icons from popular icon catalogs. - New plugin:
google_fontsto download and self-host automatically fonts from Google Fonts. - New plugin:
brotlito compress files. #681 - New plugin:
gzipto compress files. #680 - New
precompressmiddleware, to serve precompressed files. #664 - Allow to specify fallbacks for
metasandfeedplugins #683. - Feed plugin: Add support for author #601.
base_path,modify_urlsrelative_urls: Add support for CSS files.- Metas plugin: New property
fediverseto create thefediverse:creatormeta tag. - New option
placeholdertounocssplugin. - New Site option
components.placeholder.
- Vento plugin: Cache invalidation on Windows.
- Nav plugin: Breadcrumb with urls with CJK characters.
- Enable tests for
sriandreading_infoplugins #677. - Fix tests for
esbuildplugin #676. code_highlightplugin: configuration type must be Partial #679.- Updated dependencies:
sass,terser,liquid,tailwindcss,std,preact,mdx,xml,satori,reacttypes,unocss,magic-string,vento,lightningcss. - esbuild plugin: Add support for
entryNamesoption #678. - esbuild plugin: Add proper support for lume url rewrites (
basenameandurl) #685. - Enable
--portargument tolume cmscommand #686.
2.3.3 - 2024-10-07
- Basic auth middleware: Added
errorMessageoption. - Added "none" merge strategy to reset a previously defined strategy.
- Esbuild plugin: added support for
outExtension#668. - New environment variable
LUME_CMSto check whether the site is built by the CMS. - Support for
localStorageandsessionStoragein watch mode.
- Multilanguage plugin: The 404 page must be ignored.
- Transform images plugin with animated images #671
- When using special value
git createdfordatevariable, it will fall back togit modifiedfirst, then filesystem last modified date #667. - Environment variables defined in
_cms.tsare available in_config.ts. - Updated dependencies:
linkedom,sass,satori,terser,liquidjs,tailwind,date-fns,std,esbuild,preact,lightningcss,postcss,remark-rehype,rehype-stringify,reacttypes,unocss.
2.3.2 - 2024-09-10
- Nav plugin: include
slugin thetoJSONexport.
2.3.1 - 2024-09-09
- New option
watcher.includeto add extra external paths to the watcher.
- Nav plugin: revert
child.slugproperty removal. - Updated deps:
sass,std,pagefind,xml,postcss,decap-cms,terser,deno-dom. - Nav plugin: Search for pages with basename as
index. - Reload on edit
_config.tsand_cms.tsfiles if they are out of the src directory. - Code improvements #662.
2.3.0 - 2024-08-30
- New function
site.parseBasename, to register new custom parsers to extract data from basenames. - Restart after changing the
_config.tsor_cms.tsfiles. - New plugin
sri. - Improved plugin docs with links to the online documentation.
- New functions
nav.nextPage()andnav.previousPage()fornavplugin. - New method
toJSON()added to the result ofnav.menu()fornavplugin. For example:const menu = nav.menu(); JSON.stringify(menu);
- New sort options
asc-localeanddesc-locale.
- BREAKING CHANGES in the
navplugin:- The
child.slugproperty was deleted. Usechild.data.basename. - All nav elements has the
dataattribute. - To check if a nav item corresponds to a page:
// Lume 2.2 if (item.data) { return `<a href="{{ item.data.url }}">{{ item.data.title }}</a>` } else { return `<strong>{{ item.slug }}</strong>` } // Lume 2.3 if (item.data.url) { return `<a href="{{ item.data.url }}">{{ item.data.title }}</a>` } else { return `<strong>{{ item.data.basename }}</strong>` }
- These changes improve the sorting of the elements in the nav tree.
- The
cms.tsfile.
- Escape the
%character in the URI #652. - Updated deps:
std,liquidjs,preact,tailwindcss,xml,postcss,autoprefixer,unocss,terser,eta,lightningcss,markdown-it-attrs,decap-server,liquidjs,preact-render-to-string,esbuild,reacttypes,sharp. - Remove empty directories in
destfolder #626. - Watcher new files on Windows.
- Feed plugin: error when the updated/published value is a string #638.
- Fixed esbuild reload #647.
- Fixed serve showing stale pages #649.
- Speed up logging to console with colors #651
- Nav plugin: did ignore default order option #655.
- Reload theme files if they are local.
2.2.4 - 2024-07-18
- New middleware
redirect_as2#632.
page.sourcePathwrongly returns the remote url instead of the path for remote files.- Reload remote files #633.
- Vento components must be sync.
- Updated dependencies:
std,terser,sass,xml,liquid,highlight.js,unocss,decap_cms,tailwindcss,vento,preact-render-to-string. - Use a pinned version of
npm:decap-serverpackage for stability. - DecapCMS script: switch from
unpkgtojsDelivrfor performance. - Add
Server.addrfor getting local address #634. - Bug calculating the filename of remote files.
- Replaced
unpkgwithjsdelivrfor stability and response times.
2.2.3 - 2024-07-05
- New option
caseSensitiveUrlsto allow to export two urls with the same name but different cases #625. - Support for
npmspecifiers to postcss and lightningcss plugins #621. - Redirects middleware: added
strictoption to configure whether distinguish the trailing slash or not. For backward compatibility istrueby default.
- Nav plugin: Improved behavior for sites with pretty urls disabled.
- Nav plugin: the
orderoption is not applied. - Updated dependencies:
std,postcss,esbuild,katex,preact,xml,vento,satori,unocss. - Vento plugin for component doesn't support multiline code.
- Removed
jxlintransform_imagesplugin because it's not supported by Sharp #630.
2.2.2 - 2024-06-21
search.data()doesn't return data for source files (likesearch.data("index.md")).- esbuild plugin: Fixed
basenamesupport #617. - Apply
mergedKeysconfiguration in layouts #618. - Extended Preact types with Lume's custom attributes #619.
- Hot reload: Ensure sockets are open before send updates #614, #615.
- Updated dependencies:
tailwindcss,terser,sass,std,react-render-to-string,xml,esbuild,vento,unocss,liquidjs,unified.
2.2.1 - 2024-06-04
- Allow to run a server with
deno serve -A _config.ts. - New
noCorsmiddleware to prevent CORS errors during development.
- Use
lume_initdependency to upgrade Lume
- Port detection in
lume cmscommand. - Show an error when trying to copy a file from outside the src folder #610.
- Updated dependencies:
std,preact-render-to-string,vento,lightningcss,unocss,pug,cms,liquid,lightningcss,esbuild,react-types,deno_dom,sass,unocss,xml,unidecode,react-render-to-string.
2.2.0 - 2024-05-17
LuΓsa Villalta edition.
- Feed plugin: Add image support #599, #598.
- New middleware
shutdown. - Esbuild plugin: support for
jsr:specifiers. - New
Lume.Loadertype. - New
afterLoadevent, triggered just after all files are (re)loaded. - Show the error if a file cannot be copied.
- New option
themeto download the theme CSS file automatically for theprismandcode_highlightplugins. - Metas plugin: allow to add custom metas #604, #608.
- BREAKING: Removed
lume/cms.tsmodule. Use import maps instead. - The minimum Deno version supported is
1.43. - For better predictability, the
_cachefolder is generated in the root folder, instead ofsrcfolder. - Simplified Esbuild plugin.
- Import
stdpackages fromjsrbecause they are not longer updated onland/x. - The default port when lume build the site (not serving) is
80or443, depending whether the location protocol is http or https. Previously it was3000.
liquidplugin. It never worked well withsearch.pages()#600.
- PostCSS plugin: Don't use nesting plugin by default since CSS nesting feature works across the latest devices and browser versions.
- Updated dependencies:
unocss,liquid,postcss-nesting,terser,xml,react,std,sass,preact,esbuild,svgo,cms,sheetjs. - FFF plugin: fix
getGitDatepriority #603. - Esbuild plugin:
- Resolve bare specifiers mapped to
npm:. - Renamed imports to
.jswhen bundle isfalse#594.
- Resolve bare specifiers mapped to
- Redirect plugin: resolve urls when site location has a subfolder #606.
- Bug merging options from CLI and _config file #607.
- The option
--portno longer depends on--serve.
2.1.4 - 2024-04-17
- Pagefind plugin: Updated the
uiobject with the new options introduced in v1.1.0.
init.tsfile.
esbuildtimeout #591.- Updated dependencies:
unocss,pagefind,postcss-nesting,sass,terser,vento,std,preact,unocss,liquid,reacttypes,sass,tailwind,magic-string,lume_cms,sharp,esbuild.
2.1.3 - 2024-03-28
- PostCSS plugin: new option
namewith the default valuepostcss#582. - date plugin: new formats
HUMAN_SINCEandHUMAN_SINCE_STRICTexposeformatDistanceToNowandformatDistanceToNowStrictin the date-fns package, so you can refer to the amount of time that has passed since the an article was last written/modified, rather than just the date it was written #589.
- Do not ignore the
/.well-knownfolder by default #585.
- Reload site on rename/delete file.
- Updated dependencies:
std,esbuild,lightningcss,unocss,date-fns,cms,eta,katex,liquid,markdown-it,postcss,postcss-import,autoprefixer,preact,sharp,tailwindcss,terser,vento.
2.1.2 - 2024-03-14
transform_imagesplugin: added the.webpextension to the default options.ventoplugin: New optionpluginsto use Vento plugins.- Added
ventoandaddVentoPluginhooks.
- UnoCSS plugin: the async process of adding
<style>elements is not awaited #578. - Updated dependencies:
std,terser,cms,postcss,reacttypes,unocss,vento,date-fns,sass,terser. - Replace Sharp with
svg2pngas the library to convert svg to png. - Init script creates always the
_cms.tsfile.
2.1.1 - 2024-03-01
- Bug on init command generating the _cms.ts file #575
- Updated dependencies:
lightningcss,terser,cms,postcss,postcss-nesting,std,vento,reacttypes.
2.1.0 - 2024-02-22
- Support
x-defaultfor unmatched languages #528 & #532multilanguagepluginsitemapplugin
- New plugin:
fff#529. - New plugin:
redirects#534. - New plugin:
og_images#534. - New plugin:
robots#570. - New command
lume cms. onDemandplugin: support async extraData function #560, #561.- Core:
lume:*global events. - Core:
lume.getWatcher()function.
- BREAKING: Removed deprecated
--unstableflag to the defaultlumetask. Use theunstableconfiguration indeno.json. - BREAKING: Upgrade
date-fnsdependency to version 3 #541. This affects to how to import locales in the _config file:// Old import gl from "npm:date-fns/locale/gl"; // New import { gl } from "npm:date-fns/locale/gl";
- Allow to get value from attribute in CSS query of
getDataValue()function #556, #558. Seemetasplugin for a clear example. faviconplugin: #562- Default ico size changed to 48.
- Add
sizes="any"to the svg icon. - Place the svg icon at end.
- logging:
deno task lume upgraderemoves thedeno.lockfile #527.transform_imagesplugin: don't enlarge images by default #530.
- Pages filtered with
filter_pagesplugin are exported to the sitemap. - Ensure
site.options.server.middlewaresarray is always defined. - Updated dependencies:
std,date-fns,lightningcss,vento,terser,autoprefixer,esbuild,sass,unocss,deno-dom,esbuild,postcss,postcss-import,preact,preact-render-to-string,mdx,terser,liquid,reacttypes. site.hooks.addMarkdownItPluginaccepts multiple optionsclicommands are loaded dynamically.- Added missing
Lume.Data.navvariable #567. - BREAKING:
slugify_urlsplugin only slugify.htmlfiles by default. The reason is to avoid unexpected behaviors like renaming the_headersfile #569. Useextensionsoption to add more file extensions. - Bug in
multilanguageplugin that add non-html pages in the list of alternates.
2.0.3 - 2024-01-12
metas&feedplugins: Suppport for functions to configure the data fields.mdxplugin: Newmdxfilter #550.
mdfilter fromremarkplugin is async.
- esbuild plugin: Fix support for subextensions added to JSX files.
For example:
file.client.jsx. - Conflict between
jsxand esbuild plugin withjsx#547. - Don't break if env variables are not granted #551.
- Nested components doesn't work in Vento #552
- Updated deps:
std,unocss,svgo,sass,postcss,postcss-import,vento,tailwindcss,reacttypes,remark,sharp.
2.0.2 - 2024-01-01
- Add critical log on rare case where developer forget to export the Site instance in the
_config.ts
decap_cmsplugin: Add a script in the homepage to redirect to /admin/ when an invite token or recovery token is detected from netlify identity.getOptionsFromCliis moved frommod.tstoutils/cli_options.ts#535, #540.
sitemapplugin: Add thexmlnsnamespace for localized urls.- Files with all caps extensions are ignored #542.
multilanguageplugin:- Fix error of two pages with the same id, type and lang.
- Fix the error of a page with lang, but undefined id.
- Removed unused
imagickdependency. - Added
Lume.PaginateResulttype. - Apply merge data strategies between multiple _data files/folders in the same folder.
- Date recovery from Git repositories #544.
- Updated dependencies:
std,esbuild,liquid,postcssNesting,react-domtypes,sharp,svgo,vento,tailwindcss,minify_html,unocss,sass.
2.0.1 - 2023-12-10
mdxplugin: NewrehypeOptionsoption #517
lightningcssplugin: use the correct includes folder #523.mdxandremarkplugins: improved types.- Lume needs Deno >= 1.38.
- Type of
Lume.Data.results. - Improved log messages of empty and ondemand pages #525.
pictureplugin using the wrong attribute name #526.- Updated deps:
markdown-it,preact,terser,esbuild.
2.0.0 - 2023-12-08
- New plugin
unocss, to replacewindi_css. - New plugin
transform_images, to replaceimagick. - New option
server.roottoSite. - New
basenamevariable to change the final name of files/directories. #494 - New function
site.getOrCreatePage(). - Allow to copy files/directories inside ignored directories #520
- Added generics to
searchfunctions. For example:search.pages<PageType>(). - New environment variable
LUME_NOCACHEto disable the cache of the remote files. - TOML plugin: New option
pageSubExtensionwith the default value.page. - YAML plugin: New option
pageSubExtension. - JSX plugin: New option
pageSubExtension. - JSON plugin: New option
pageSubExtension. - Eta plugin: New option
pageSubExtension. - Liquid plugin: New option
pageSubExtension. - Nunjucks plugin: New option
pageSubExtension. - Pug plugin: New option
pageSubExtension. - Vento plugin: New option
pageSubExtension. - Markdown plugin: New option
useDefaultPluginsthat it'strueby default. - Postcss plugin: new option
useDefaultPluginsthat it'strueby default. - Module plugin:
- New option
pageSubExtension. - New option
includes
- New option
- MDX plugin:
- New option
useDefaultPluginsthat it'strueby default. - New option
recmaPlugins#521. - New option
includes
- New option
- JSX Preact plugin
- New option
pageSubExtension. - New
precompileoption for faster jsx transform.
- New option
- Pagefind plugin: New option
highlightParam. - Not found middleware: Added default options.
- Remark plugin:
- Revamp of types.
- Removed
core.tsand createdtypes.ts. - New global namespace
Lume. - Use the lib
domanddom.iterabletypes instead ofdeno-dom.
- Removed
- Changed the signature of
processandpreprocessto behave likeprocessAllandpreprocessAll. - Changed the signature of
Page.create(). It has a single argument with an object with the page content. - Renamed the interface method
Engine.renderSynctoEngine.renderComponent. - Changed the
Formatinterface. - Pretty URLs option doesn't affect to the
/404.htmlpage by default. - Replace
fn-datewithTemporalpolyfill to convert dates. - Refactor of
Serverclass to work withDeno.serve()API #501. - Renamed
core/filesystem.tstocore/file.ts. - Picture plugin: Renamed the attribute
imagicktotransform-images. - TOML plugin:
- is installed by default
- Changed
extensionsoption type tostring[].
- Slugify URL: Slugify static files by default. #447
- JSX plugin:
- Removed
window.React#332. - Changed
extensionsoption type tostring[]. - The
includesfolder is automatically ignored.
- Removed
- NetlifyCMS plugin:
- Renamed to
decap_cms. - Changed
netlifyIdentityoption toidentity: "netlify"
- Renamed to
- Markdown plugin: Disable indented code blocks by default #376
- Postcss plugin: The
includesfolder is automatically ignored. - MDX plugin:
- Updated to MDX v3.
- The
includesfolder is automatically ignored.
- Module plugin
- Changed
extensionsoption type tostring[]. - Replaced
.tmplsubextension with.page. - The
includesfolder is automatically ignored.
- Changed
- Eta plugin
- Changed
extensionsoption type tostring[]. - The
includesfolder is automatically ignored.
- Changed
- JSON plugin
- Changed
extensionsoption type tostring[]. - Replaced
.tmplsubextension with.page.
- Changed
- JSX Preact plugin
- Changed
extensionsoption type tostring[]. - The
includesfolder is automatically ignored.
- Changed
- Liquid plugin
- Changed
extensionsoption type tostring[]. - The
includesfolder is automatically ignored.
- Changed
- Nunjucks plugin
- Disabled by default
- Changed
extensionsoption type tostring[]. - The
includesfolder is automatically ignored.
- Pug plugin
- Changed
extensionsoption type tostring[]. - The
includesfolder is automatically ignored.
- Changed
- Vento plugin
- Enabled by default
- Changed
extensionsoption type tostring[]. - The
includesfolder is automatically ignored.
- Multilanguage plugin
- Apply the default language to all pages with undefined language.
- Removed the ability to insert translations in the middle of the data object.
- The uniqueness of a page is defined by the combination of id + type.
- SASS plugin: The
includesfolder is automatically ignored. - LightningCSS plugin: The
includesfolder is automatically ignored. - Feed plugin
- Renamed the option
info.datetoinfo.published; - Renamed the option
item.datetoitem.published; - New option
item.updated;
- Renamed the option
- Removed plugin
windi_css. Useunocssinstead. - Removed plugin
imagick. Usetransform_imagesinstead. - Removed output extension detection in the filename: #430
- Removed
processAllandpreprocessAll. - Removed
Page.destproperty #290. - Removed
Page.updateDestfunction. - Removed
Page.src.lastModifiedandPage.src.createdbecause they are already inPage.src.entry. - Removed
Page.src.remotebecause it's already inPage.src.entry. - Removed
Page.src.slugbecause it's already inPage.data.basename. - Removed
--devmode #244, #201. Use the env variableLUME_DRAFTS=trueto output draft pages. - Removed
--quietargument Use the env variableLUME_LOGS=DEBUG|INFO|WARNING|ERROR|CRITICAL. - Removed
site.includes()function. - Renamed
site.searchertosite.search. - The
pageSubExtensionis used only to load pages, but not for layouts, components, etc. - Removed
site.loadComponents(). It's included insite.loadPages()options. - Removed
site.engine(). It's included insite.loadPages()options. - Removed
site.cacheFile() - Removed
Entry.setContent() - Removed message to upgrade Lume.
- Removed
Errorclass to print the errors.Deno.inspect()is used instead. - Removed
lume/core/utils.tsand moved all utilities to different files under/lume/core/utils/folder. - Search plugin:
- Removed
returnPageDataoption. Pages always return thedataobject #251 - Removed
search.tags()function. Usesearch.values("tags"). - Removed
datafilter.
- Removed
- YAML plugin: Changed
extensionsoption type tostring[]. - Removed WindiCSS plugin.
- Markdown plugin: removed
keepDefaultPlugins - Postcss plugin: removed
keepDefaultPlugins - MDX plugin:
- Removed
overrideDefaultPlugins - Removed
pragmaoption.
- Removed
- Remark plugin: Removed
overrideDefaultPluginsoption
- Updated dependencies:
std,deno_dom,eta,lightningcss,liquidjs,nunjucks types,pagefind,preact,react types,pug,svgo,esbuild,svgo,terser,unocss,vento,xml,postcss,markdown-it-defllist.