NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #2831 most downloaded on npm
Leaner CSS
Last release today
03 Oct 2026
Release timing varies
gaps range from 8 days to 3 months
Most releases are documented
notes for 53 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
16 years old
165 releases · first in 2011
Include dist files, missing from 1.7.2 Do not round the results of color functions, like lightness, hue, luma etc. Support cover and contain keywords
Include dist files, missing from 1.7.2 Do not round the results of color functions, like lightness, hue, luma etc. Support cover and contain keywords in background definitions
Fix detection of recursive mixins Fix the paths option for later versions of node (0.10+) Fix paths joining bug Fix a number precision issue on some v
Fix detection of recursive mixins Fix the paths option for later versions of node (0.10+) Fix paths joining bug Fix a number precision issue on some versions of node Fix an IE8 issue with importing css files Fix IE11 detection for xhr requests Modify var works if the last line of a less file is a comment. Better detection of valid hex colour codes Some stability fixes to support a low number of available file handles Support comparing values with different quote types e.g. "test" now === 'test' Give better error messages if accessing a url that returns a non 200 status code Fix the e() function when passed empty string Several minor bug fixes
One column per quarter.
Add support for rulesets in variables and passed to mixins to allow wrapping Change luma to follow the w3c spec, luma is available as luminance. Contr
Add support for rulesets in variables and passed to mixins to allow wrapping Change luma to follow the w3c spec, luma is available as luminance. Contrast still uses luma so you may see differences if your threshold % is close to the existing calculated luma. Upgraded clean css which means the --selectors-merge-mode is now renamed --compatibility Add support for using variables with @keyframes, @namespace, @charset Support property merging with +_ when spaces are needed and keep + for comma separated Imports now always import once consistently - a race condition meant previously certain configurations would lead to a different ordering of files Fix support for .mixin(@args...) when called with no args (e.g. .mixin();) Do unit conversions with min and max functions. Don't pass through if not understood, throw an error Allow % to be passed on its own to the unit function e.g. unit(10, %) Fix a bug when comparing a unit value to a non-unit value if the unit-value was the multiple of another unit (e.g. cm, mm, deg etc.) Fix mixins with media queries in import reference files not being put into the output (they now output, they used to incorrectly not) Fix lint mode - now reports all errors Fixed a small scope issue with & {} selector rulesets incorrectly making mixins visible - regression from 1.6.2 Browser - added log level "debug" at 3 to get less logging, The default has changed so unless you set the value to the default you won't see a difference Browser - logLevel takes effect regardless of the environment (production/dev) Browser - added postProcessor option, a function called to post-process the css before adding to the page Browser - use the right request for file access in IE
luma follow spec (@seven-phases-max, @lukeapage)replace and % funcs improvement. (@seven-phases-max)+_ (replaces #1788) (@seven-phases-max, @mouyang)Fix issue with calling toCSS twice not working in some situations (like with bootstrap 2)
Fix issue with calling toCSS twice not working in some situations (like with bootstrap 2)
The Rhino release is fixed! ability to use uppercase colours Fix a nasty bug causing syntax errors when selector interpolation is preceded by a long c
The Rhino release is fixed! ability to use uppercase colours Fix a nasty bug causing syntax errors when selector interpolation is preceded by a long comment (and some other cases) Fix a major bug with the variable scope in guards on selectors (e.g. not mixins) Fold in & when () { to the current selector rather than duplicating it fix another issue with array prototypes add a url-args option which adds a value to all urls (for cache busting) Round numbers to 8 decimal places - thereby stopping javascript precision errors some improvements to the default() function in more complex scenarios improved missing '{' and '(' detection
( and { error detection. (@seven-phases-max)default() guards conflict detection. (@seven-phases-max)support ^ and ^^ shadow dom selectors fix sourcemap selector (used to report end of the element or selector) and directive position (previously not su
support ^ and ^^ shadow dom selectors fix sourcemap selector (used to report end of the element or selector) and directive position (previously not supported) fix parsing empty less files error on (currently) ambiguous guards on multiple css selectors older environments - protect against typeof regex returning function Do not use default keyword use innerHTML in tests, not innerText protect for-in in case Array and Object prototypes have custom fields
Properties can be interpolated, e.g. @{prefix}-property: value; a default function has been added only valid in mixin definitions to determine if no o
Properties can be interpolated, e.g. @{prefix}-property: value; a default function has been added only valid in mixin definitions to determine if no other mixins have been matched Added a plugins option that allows specifying an array of visitors run on the less AST Performance improvements that may result in approx 20-40% speed up Javascript evaluations returning numbers can now be used in calculations/functions fixed issue when adding colours, taking the alpha over 1 and breaking when used in colour functions when adding together 2 colours with non zero alpha, the alpha will now be combined rather than added the advanced colour functions no longer ignore transparency, they blend that too Added --clean-option and cleancssOptions to allow passing in clean css options rgba declarations are now always clamped e.g. rgba(-1,258,258, -1) becomes rgba(0, 255, 255, 0) Fix possible issue with import reference not bringing in styles (may not be a bugfix, just a code tidy) Fix some issues with urls() being prefixed twice and unquoted urls in mixins being processed each time they are called Fixed error messages for undefined variables in javascript evaluation Fixed line/column numbers from math errors
default error. (@seven-phases-max)Added source-map-URL option Fixed a bug which meant the minimised 1.5.0 browser version was not wrapped, meaning it interfered with require js Fixed a
Added source-map-URL option Fixed a bug which meant the minimised 1.5.0 browser version was not wrapped, meaning it interfered with require js Fixed a bug where the browser version assume port was specified Added the ability to specify variables on the command line Upgraded clean-css and fixed it from trying to import correct a bug meaning imports weren't synchronous (syncImport option available for full synchronous behaviour) better mixin matching behaviour with calling multiple classes e.g. .a.b.c;
…0) and transparent remove sys.puts calls to stop deprecation warnings in future node.js releases Browser: added logLevel option to control logging (2…
sourcemap support support for import inline option to include css that you do NOT want less to parse e.g. @import (inline) "file.css"; better support for modifyVars (refresh styles with new variables, using a file cache), is now more resiliant support for import reference option to reference external css, but not output it. Any mixin calls or extend's will be output. support for guards on selectors (currently only if you have a single selector) allow property merging through the +: syntax Added min/max functions Added length function and improved extract to work with comma seperated values when using import multiple, sub imports are imported multiple times into final output fix bad spaces between namespace operators do not compress comment if it begins with an exclamation mark Fix the saturate function to pass through when using the CSS syntax Added svg-gradient function Added no-js option to lessc (in browser, use javascriptEnabled: false) which disallows JavaScript in less files switched from the little supported and buggy cssmin (previously ycssmin) to clean-css support transparent as a color, but not convert between rgba(0, 0, 0, 0) and transparent remove sys.puts calls to stop deprecation warnings in future node.js releases Browser: added logLevel option to control logging (2 = everything, 1 = errors only, 0 = no logging) Browser: added errorReporting option which can be "html" (default) or "console" or a function Now uses grunt for building and testing A few bug fixes for media queries, extends, scoping, compression and import once.
length function (#1542). Added scalar value handling for extract and length (#1576). (@seven-phases-max)Nothing published for this version
- #1552 Replace deprecated sys.puts with console.log, resolve #1529 (@picomancer) - #1543 Sourcemap basepath option (@andjo) - #1412 Allow imports fro
- #1537 Fix Changelog link (@radium-v)
- #1519 Update main property value of bower.json (@JacopKane) - #1 Refactoring browser unit tests into grunt-contrib-jasmine (@SomMeri) - #1449 resolv
if you don't pass a strict maths option, font size/line height options are output correctly again
fix syncImports and yui-compress option, as they were being ignored
Notes relative to last stable release (1.3.3)
Notes relative to last stable release (1.3.3)
:extend() in selectors (e.g. input:extend(.button) {}) and &:extend(); in ruleset (e.g. input { &:extend(.button all); })(~"@var") selector interpolation is removed. Use @{var} in selectors to have variable selectors@import-once has been removed.@import (less) "file.css" will process the file as less@import supports https and 301'sNothing published for this version
- #1278 Better fix for local path (cross-platform) (@losnir) - #1277 contributing.md updates. Fellow nerds! please wrap words with @ signs in backtick
@ signs in backticks! (@jonschlinkert)- #1230 package.json edited (@jonschlinkert)
- #1197 Updates copyright year in README.md (@Starefossen) - #1148 Better implementation of luma (@Synchro) - #1147 HSV support for #1143 (@Synchro) -
Nothing published for this version
Nothing published for this version
- #889 Add dppx and dpcm units to parser dimensions (@feelepxyz) - #890 Add vmin unit to parser dimensions (@feelepxyz) - #879 Allow numbers and under
- #673 mocha found a couple global variable leaks. Here's the fix. (@andrewjstone) - #634 Add @media bubbling/nesting/merging (@NDMarcel) - #631 Fixed
percentage (@hokaccha)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →