Changelog
All notable changes to this project will be documented in this file.
See Conventional Commits for commit guidelines.
6.3.3
9 Sept 2026
🔧 Fixed
- html-crush: preserve CSS escapes across whitespace edits (0c1ce07)
- html-crush: preserve CSS strings and decoded inline contexts (4157b3c)
- html-crush: preserve token boundaries when removing CSS comments (ce3b25f)
- html-crush: report only effective CSS comment removal (0d53f83)
6.3.0
1 Sept 2026
🔧 Fixed
- align input option types with runtime (ecbe95f)
- align range input and output types (1a13db6)
- avoid unrelated comment line breaks (e5e2ae6)
- classify Unicode letters by code point (e166119)
- keep progress within configured bounds (4486713)
- normalize end-of-file whitespace cleanup (e13fd99)
- preserve comment-like CSS strings (4680eac)
- preserve quoted attribute values (6b0546e)
- protect raw HTML element contents (c6ffb0a)
- remove unfinished CSS comments through EOF (a0ebd01)
- report conditional comment applicability (2ee76fd)
- report terminal ranges-apply progress (329e080)
✨ Features
- report explicit output size units (70f0cad)
Performance Improvements
- avoid repeated range normalization (07185c0)
6.2.2
22 Aug 2026
Performance Improvements
- optimise package hot paths and JSON editing (f3112bd)
6.2.1
19 Aug 2026
Performance Improvements
- Recorded a 3,440.01% higher normalized benchmark score than v6.1.3 (4.209022369707907 → 149).
6.2.0
19 Aug 2026
🔧 Fixed
- do not let a Jinja expression shorten an enclosing protection (85d955d)
- isolate range state per crush call (dec5331)
- make validation diagnostics safe (7b01074)
- protect every Jinja expression, not only the first (741d3f5)
- resolve various review findings (b60e9ee)
- retire direct publish aliases (f98e31e)
✨ Features
- add codsen-glob and migrate glob consumers (5595a2b)
- refresh the tooling and generate with the latest dependencies (781f802)
6.0.0
1 Dec 2022
💥 BREAKING CHANGES
- Minimum supported Node version is v14.18; we’re dropping v12 support
5.0.22
2 Aug 2022
🔧 Fixed
- export Opts and Res types (a91c313)
Performance Improvements
- Recorded a 74.74% higher normalized benchmark score than v5.0.21 (4.961380484122148 → 8.66929113024107).
5.0.19
5 Jul 2022
Performance Improvements
- Recorded a 73.35% higher normalized benchmark score than v5.0.18 (7.006415294859441 → 12.145485913370925).
5.0.18
4 May 2022
Performance Improvements
- Recorded a 76.45% higher normalized benchmark score than v5.0.16 (3.9706987428986844 → 7.006415294859441).
5.0.16
18 Apr 2022
🔧 Fixed
- tweak types (104a64a)
5.0.15
17 Apr 2022
Performance Improvements
- Recorded a 40.42% higher normalized benchmark score than v5.0.14 (4.349890317664265 → 6.108300966767633).
5.0.10
24 Dec 2021
Performance Improvements
- Recorded a 29.01% higher normalized benchmark score than v5.0.9 (4.936752654741147 → 6.36902994522682).
5.0.9
24 Dec 2021
Performance Improvements
- Recorded a 2.77% higher normalized benchmark score than v5.0.8 (4.803840859907383 → 4.936752654741147).
5.0.7
30 Nov 2021
Performance Improvements
- Recorded a 29.15% higher normalized benchmark score than v5.0.5 (6.773020416495399 → 8.747356153811113).
5.0.0
9 Sept 2021
🔧 Fixed
- tweaks to the line length calculation (4ec1fe2)
✨ Features
💥 BREAKING CHANGES
- programs now are in ES Modules and won’t work with Common JS
require()
4.2.0
24 May 2021
✨ Features
- config file based major bump blacklisting (e15f9bb)
4.1.9
11 Apr 2021
⏪ Reverts
- Revert “chore: setup refresh” (23cf206)
4.1.5
28 Mar 2021
🔧 Fixed
- retain the same type of line endings as the input (b171628)
4.1.0
27 Feb 2021
✨ Features
4.0.1
28 Jan 2021
🔧 Fixed
- add
testStatsto npmignore (f3c84e9) - correct the line length calculation around inline tags (073f7a5)
4.0.0
23 Jan 2021
✨ Features
- rewrite in TS (0ad6b4b)
💥 BREAKING CHANGES
- there are no changes to the API, but just for safety, we’re bumping major
2.0.5
15 Sept 2020
🔧 Fixed
- improve CRLF line ending recognition (ff3e3e7)
2.0.0
4 Jul 2020
🔧 Fixed
- fix typo in the output, in
log.timeTakenInMilliseconds(48debda)
✨ Features
opts.removeHTMLComments(2e51439)- add recognition for outlook conditionals (61f61c1)
- crop tighter around conditional comments (cbc7383)
- report
applicableOptsin the output (fd3c879)
💥 BREAKING CHANGES
- in output,
log.timeTakenInMilisecondsis now calledlog.timeTakenInMilliseconds(two l’s)
1.9.35
24 May 2020
🔧 Fixed
1.9.0
14 Sept 2019
✨ Features
- don’t remove space in front of !important within HTML conditionals (e997f51)
Davide Riva reported on emailgeeks slack that space in front of !important should not be removed, for example:
<!--[if lte mso 11]>
<style type="text/css">
.class {
width: 100% !important;
}
</style>
<![endif]-->
That’s now implemented.
1.8.5
4 Sept 2019
🔧 Fixed
- stop breaking
<!--<![endif]-->into two parts, in front of<
1.8.3
24 Aug 2019
🔧 Fixed
- adding one more breaking point for insurance, thanks Mark Robbins (b21651b)
1.8.0
8 Aug 2019
🔧 Fixed
- previously inner tag whitespace removal was too lax, risking false positives (ab59492)
- update the program’s name on throw error reports (abd093a)
✨ Features
- don’t minify whitespace around brackets if there is a number on either side (21ea2ff)
1.7.0
24 Jul 2019
✨ Features
- Don’t delete whitespace between closing curly brace and opening curly brace (ef5efaa)
1.6.0
15 Jul 2019
🔧 Fixed
- Fix the rare cases where state of being within style tag was not terminated properly (fefc206), closes #11
✨ Features
- Inline tag recognition and proper spacing (ad97faf)
1.5.0
29 Jun 2019
✨ Features
- Set up perf checks (c3ff0bf)
1.4.0
21 Jun 2019
✨ Features
- Break to the right of opening style tag if breaking on the left is turned on (67ca84a)
1.3.0
18 Jun 2019
✨ Features
opts.reportProgressFuncFromandopts.reportProgressFuncTo(4ebf439)- Re-distribute the ratio of progress reported during main and final tasks (1e80408)
1.2.0
1 Jun 2019
✨ Features
- Delete leading whitespace inside inline CSS (614d11b)
1.1.0
1 Jun 2019
✨ Features
- Inline CSS minification (0518f05)
- Only replace line breaks when result will be smaller in size, not the same (a431686)
1.0.11
6 Apr 2019
🔧 Fixed
- Algorithm improvement not to break in front of
</a>to prevent accidentally adding new spaces (8939654)
0.8.0
20 Jan 2019
- Various documentation and setup tweaks after we migrated to monorepo
- Setup refresh: updated dependencies and all config files using automated tools
0.7.0
11 Jan 2019
- Add one more tag before which there will be a line break (4f00871)
0.6.0
26 Dec 2018
- Add licence block at the top of built files in dist/ folder (cb2c259)
- Add more logging for doNothing state (25262e5)
- Do not touch
CDATAblocks (920e9d9) - Don’t minify script tags contents (557e8fa)
- Don’t touch code within pre-code blocks (d32c092)
- Fetch a handful of real websites and minify them for tests (f7e8153)
- Remove whitespace within
<script>blocks, in front of</script>(d1efb20) - Treat the whitespace in front of
<script>(75d85dc)
0.5.0
14 Dec 2018
- Added licence banner at the top of each built file (all files in
dist/folder) - Improved readme file
0.4.0
13 Dec 2018
- Delete whitespace within
<script>tag, before closing</script>. - Added unit tests minifying a handful of real-world websites. If URL fetch succeeds and source HTML is a string and not an empty-one, we minify with couple settings and measure, are results less than or equal to the original sources.
0.3.0
12 Dec 2018
- Improvements to whitespace control in front of
<script>tag when some options are on.
0.2.0
11 Dec 2018
- Program will not touch:
CDATAblocks<pre><code>...</code></pre>blocks<script>tag contents
0.1.0
10 Dec 2018
- First public release