Repository navigation
Behaviour Changes
-
A Theme Takes the Place of
LS_COLORS: When lez reads atheme.yml, it no longer readsLS_COLORS. The system'sdircolorsoften sets that variable for every program, and it used to override a theme's directory, executable and other colours.LEZ_COLORSandEZA_COLORSare still laid over the theme, and a glob there now colours a name ahead of the theme'sfilenames,extensionsandmimetypesentries for it. To keep a colour fromLS_COLORSbeside a theme, give it in the theme or inLEZ_COLORS. CopyingLS_COLORSintoLEZ_COLORSwholesale is not a substitute, as somedircolorskeys (tw,su,do) mean other things there. Under--no-configwithout--theme,LS_COLORSis read as before (eza#1700, eza#1224, #156). -
QUOTING_STYLEIs Read: GNUls's variable now sets the default quoting, afterLEZ_QUOTING_STYLEandEZA_QUOTING_STYLEand before the configuration file:literalquotes nothing.shellandshell-escapeareauto.shell-alwaysandshell-escape-alwaysquote every name.- GNU's
c,escapeandlocalehave no counterpart and are passed over.
A shell that sets the variable for
lsnow changes lez too. SetLEZ_QUOTING_STYLEor pass--quotesto keep lez's own style (eza#584, #157). -
Case Variants in
LS_COLORS: Globs still ignore letter case. Two that differ only in case and give different colours now each match only their own case, as in GNUlssince coreutils 9.2:*.c=33:*.C=36tells C sources from C++ ones. Globs inLEZ_COLORSare weighed with those inLS_COLORSas one list (eza#1576, #154).
Features & Enhancements
-
--explain: List each entry with the rule that chose the colour of its name and the one that chose its icon. The colour rule is one of:- a glob, with the variable it was given in;
- a theme entry, and any
LEZ_COLORSglob laid over it; - a built-in file type;
- a file kind such as
di,exorln=target.
The answers come from the code the listing runs, so they cannot drift from what it prints (eza#1954, #157).
-
Named Themes:
--theme=NAME,LEZ_THEME(orEZA_THEME), ornameunder[theme]in the configuration file readthemes/NAME.ymlorthemes/NAME.yamlfrom the configuration directory instead oftheme.yml. A name holding a directory is a path, and a theme that is not there is an error (eza#1945, #157). -
.zipInspection:--inspect-archiveslists the files of a.zipas it does those of a.tar. The reader takes them from the archive's central directory and decompresses nothing. It handles ZIP64, archive comments and data put in front of the archive, and reads names as UTF-8 or CP437 (eza#600, #157). -
--owner-width:--owner-width=COLS, orowner_widthin the configuration file, cuts user and group names wider thanCOLSdisplay columns and ends them in…. Numeric IDs and--jsonstay whole (eza#1760, eza#1948, #157). -
--group-dotfiles-first: List dotfiles before the rest within each directory group. With--group-directories-first --sort=extension, that lists directories, then dotfiles, then the other files by extension (eza#1920, #157). -
-N/--literal: Print names without quoting, asls -Ndoes: the same as--quotes=never. The last of--quotes,--no-quotesand--literalwins (eza#584, #157). -
.tzstArchives: Zstandard tarballs named.tzstget the compressed colour and icon (eza#1956, #154).
Bug Fixes & Hardening
- Control Characters in Archive Entries:
--inspect-archivesprinted an entry's path as the archive stored it. A crafted.tarcould send escape sequences to the terminal, and a newline split the row. Control characters in an entry are now shown as escapes, as they are in names on disk (#157). - Directory Icons:
.atom,.idea,.rvmand.zsh_sessionsare always directories, but their icons were filed under file names, where a directory is never looked up. They are now filed with the directory names, so they show (eza#1940, eza#1943, #153).
Documentation
- One Spelling of "color":
--help, the shell completions and the option lists in the README andlez(1)say "color".--helpalso names the--colour,--colour-scaleand--colour-scale-modealiases, so a search for either spelling finds every colour option (eza#1243, #155). - Upstream Triage:
docs/UPSTREAM_TRIAGE.mdis refreshed against upstream as of 2026-10-05, with the open bugs re-run against v0.28.5. Every pending decision is now settled; the SF Symbol overlays of eza#1949 are declined (#154, #156, #157).
Testing & Quality Assurance
- Debug Builds Within a Small Stack: Building the command-line parser took a frame of nearly a mebibyte in a debug build, the whole of a Windows main thread's stack, and a few more flags overflowed it. Each help heading's flags are now added by a function of their own, and a test holds the build to half a mebibyte (#157).
- Archive Readers Under Corrupt Input: A
fuzz_zip_archivetarget joins the fuzz canary, and a test overwrites a.zipbyte by byte and cuts it at every length (#157).
Checksums
362d7b988165300330e74b00de212f464017ed134df985b5878905461dc168a6 ./completions-v0.29.0.tar.gz
6ea7229f156b77720f8a88fc4d9be6abdc56a6a5b228598fa4b4495844b96f1b ./lez_0.29.0-1_amd64.deb
a20ac9657a0437456fbb24c1ce9b826b2a2ea19a1637862150c37d23853f04d5 ./lez_aarch64-apple-darwin.tar.gz
1666050ca9ddd03ef8e6489b14f5cc143652042cd35e1f54edf2d7063d77cf6b ./lez_aarch64-pc-windows-msvc.zip
b2e0160560d7020729bfb41e6444ceae45bc7efcbbc388931dbe417bfd1c90a9 ./lez_x86_64-apple-darwin.tar.gz
36ed05ab0a8ab7ee448ad85a415e6c1454d136bb8d823cb004e4d3c70eb79983 ./lez_x86_64-pc-windows-msvc.zip
26cb35ff820ddcee99acfac3dbc282476a88e693dec9dfd909dfd3e325158a5a ./lez_x86_64-unknown-linux-gnu.tar.gz
a9b0ba02a023647b5c5e28e8d1e6289db15a3ae3653d07ea7dcaea52003c7586 ./man-v0.29.0.tar.gz