Skip to content

Releases: Geekstrange/enhanced-ls

v0.1.4 - Enlighten. Enable. Erase.

16 Jun 07:46
v0.1.4
81efc61

Choose a tag to compare

📦 Release v0.1.4 - Enlighten. Enable. Erase.

This release refines the mode column in -l long‑format output. The symlink type character is now shown as a lowercase l in cyan, matching the symlink name color. Unset permission bits are rendered in gray, reducing noise and making the actual permissions easier to scan.


✨ New Features

  • Colorized mode column in -l
    • Symlink type character L is now displayed as l in cyan (\033[96m), consistent with the symlink file‑type color used in the name column
    • Placeholder - characters are rendered in gray (\033[90m), visually receding unset permission bits and reducing visual clutter

🐛 Bug Fixes

None.


⚠️ Upgrade Notes

No breaking changes. The content of the mode column remains exactly the same (l was already used in place of L in POSIX ls output); only color codes are added. Scripts parsing raw mode strings without ANSI stripping are unaffected.


📦 发布版本 v0.1.4 - 点亮。引导。消隐。

本版本进一步细化了 -l 长格式输出中权限列的显示。符号链接类型字符现在以小写 l 青色呈现,与名称列中的符号链接颜色一致。未设置的权限位使用灰色渲染,降低视觉噪声,让有效权限更易于浏览。


✨ 新功能

  • -l 模式权限列着色
    • 符号链接类型字符 L 现显示为小写 青色 l\033[96m),与名称列中符号链接的文件类型颜色保持一致
    • 占位符 - 字符以灰色\033[90m)渲染,让未设置的权限位视觉上退后,减少干扰

⚠️ 升级注意事项

无破坏性变更。权限列的文本内容保持不变(l 本身就已经是 POSIX ls 中使用的字符);仅新增了 ANSI 颜色码。不处理颜色码的脚本不受影响。

v0.1.3 Dereference. Display. Detail.

11 Jun 03:55
v0.1.3
dc8149e

Choose a tag to compare

📦 Release v0.1.3 - Dereference. Display. Detail.

This release adds symlink target display in -l long format mode. The name column now shows linkname -> target just like standard ls -l, making symlinks instantly readable without extra commands.


✨ New Features

  • Show symlink targets in -l mode
    • Symlink entries display as name -> target in the name column
    • Example: info -> /usr/share/doc/info
    • Matches POSIX ls -l behavior
    • Non‑symlink entries remain unchanged

🐛 Bug Fixes

None.


⚠️ Upgrade Notes

No breaking changes. If you have scripts parsing -l output and relying on the name column containing only the filename, they may need to account for the -> suffix on symlinks.


📦 发布版本 v0.1.3 - 解引用。显示。细节。

本版本在 -l 长格式模式下增加了符号链接目标的显示。名称列现显示 链接名 -> 目标路径,与标准 ls -l 一致,无需额外命令即可看清链接指向。


✨ 新功能

  • -l 模式显示符号链接目标
    • 符号链接条目在名称列中显示为 名称 -> 目标
    • 示例:info -> /usr/share/doc/info
    • 符合 POSIX ls -l 行为
    • 非链接条目保持不变

⚠️ 升级注意事项

无破坏性变更。如果你有解析 -l 输出且假设名称列仅包含文件名的脚本,需要留意符号链接处会增加 -> 后缀。


v0.1.2 Cycling. Coloring. Clarifying.

18 May 04:07
v0.1.2
9e793e9

Choose a tag to compare

📦 Release v0.1.2 - Depth‑Cycling Tree Colors

This release adds a subtle but powerful visual aid to the -r tree view. Connectors (├──, ╰──, ) now cycle through six dim colors (yellow, cyan, green, magenta, blue, red) based on directory depth. The result: you can instantly see which branch a file belongs to without counting indentation.


✨ New Features

  • Depth‑cycling dim colors for tree connectors (-r)
    • Each directory depth level gets a distinct dim (faded) color:
      • Depth 0 → yellow
      • Depth 1 → cyan
      • Depth 2 → green
      • Depth 3 → magenta
      • Depth 4 → blue
      • Depth 5 → red
      • Depth 6+ → cycles back from yellow
    • Applies to connector symbols: ├──, ╰──, and vertical line
    • File/directory names remain unaffected – only the guiding lines are colored
    • Helps the eye track nesting levels without relying on indentation alone

⚠️ Upgrade Notes

No breaking changes. If you have scripts that parse -r output with hardcoded ANSI sequences, note that new color codes appear on the connector lines – but the exact text of filenames and directory names is unchanged.


📦 发布版本 v0.1.2 - 树形连接符深度循环暗色

本版本为 -r 树形视图增加了一项细腻但实用的视觉辅助功能。连接符(├──╰──)现在会根据目录深度循环使用六种暗色(黄、青、绿、品、蓝、红)。效果:无需数缩进,一眼就能看出文件属于哪个分支。


✨ 新功能

  • 树形连接符(-r)深度循环暗色
    • 每个目录深度层级获得一种独特的暗色(淡化色):
      • 深度 0 → 黄色
      • 深度 1 → 青色
      • 深度 2 → 绿色
      • 深度 3 → 品红色
      • 深度 4 → 蓝色
      • 深度 5 → 红色
      • 深度 6+ → 从黄色重新开始循环
    • 作用于连接符符号:├──╰── 以及竖线
    • 文件/目录名称本身不受影响——只有引导线被着色
    • 帮助眼睛追踪嵌套层级,不再仅靠缩进

⚠️ 升级注意事项

无破坏性变更。如果你有脚本通过硬编码 ANSI 序列解析 -r 输出,请注意连接符上出现了新的颜色码——但文件名和目录名的文本内容不变。

v0.1.1 Brushing. Blushing. Bordered.

18 May 03:03
v0.1.1
f92e676

Choose a tag to compare

📦 Release v0.1.1 - Table Header & Tree View Style Refinements

This minor release polishes the visual details of both -l and -r outputs. The long format table now uses a shorter links header and adds permission‑character coloring (d/r/w/x). The tree output (-r) adopts rounded corners with gray borders, making the hierarchy feel softer and more modern.


✨ Style Improvements

  • Long format (-l) table refinements

    • Renamed num_links header to simply links for cleaner display
    • Mode column now colorizes individual permission characters:
      • d (directory) → blue
      • r (read) → yellow
      • w (write) → red
      • x (execute) → green
    • Directory entries also receive colored mode column for better visual grouping
  • Tree output (-r) rounded corners and gray borders

    • Replaced sharp corners with rounded ╰── style
    • Added gray‑colored (ANSI 90) border characters to reduce visual noise

⚠️ Upgrade Notes

No breaking changes. These are purely visual tweaks; scripts relying on -l or -r text output (e.g., parsing raw strings with color codes) may need minor adjustments if they expect specific ANSI sequences.


📦 发布版本 v0.1.1 - 表头与树形视图样式细化

本小版本精细化打磨了 -l-r 输出的视觉细节。长格式表格使用更简洁的 links 表头,并增加了权限字符(d/r/w/x)的颜色渲染。树形输出(-r)改用圆角加灰色边框,使层次结构看起来更柔和、更现代。


✨ 样式改进

  • 长格式 (-l) 表格细化

    • 将表头 num_links 重命名为 links,显示更简洁
    • 权限列现在对单个权限字符着色:
      • d(目录)→ 蓝色
      • r(读)→ 黄色
      • w(写)→ 红色
      • x(执行)→ 绿色
    • 目录条目的权限列也会被着色,便于视觉分组
  • 树形输出 (-r) 圆角与灰色边框

    • 将尖锐角替换为圆角样式 ╰──
    • 为边框字符增加灰色(ANSI 90)以降低视觉干扰

⚠️ 升级注意事项

无破坏性变更。仅为视觉调整;依赖于 -l-r 原始文本输出的脚本(例如解析带颜色码的字符串)可能需要小幅调整以适配新的 ANSI 序列。

v0.1.0 Breaking. Building. Borderless.

17 May 02:17
v0.1.0
02d58fa

Choose a tag to compare

📦 Release v0.1.0 - Platform Refactoring & Nushell‑Style Output

We’re thrilled to introduce enhanced-ls v0.1.0 – a major internal cleanup that makes the codebase more maintainable and cross‑platform friendly. The highlight is a brand‑new -l output format inspired by Nushell, featuring rounded borders, space‑padded cells, and relative timestamps. This is a breaking change for scripts parsing the long format output. We also fixed several cross‑compilation type mismatches.


🚀 Highlights

  • Nushell‑style -l output: Rounded corners (╭╮╰╯), aligned columns, and relative timestamps (e.g., 2 mins ago).
  • Platform code consolidation: Removed runtime.GOOS conditionals, now using build tags for cleaner separation.
  • Cross‑compilation fixes: Corrected Nlink type mismatches on arm64, loong64, and darwin.
  • Executable detection refactored: Platform‑specific logic moved to dedicated files, improving Windows support.

✨ New Features

  • Long format (-l) now follows Nushell ls -l style:
    • Columns: # / name / mode / num_links / user / group / size / modified
    • Borders: (top‑left), (top‑right), (bottom‑left), (bottom‑right)
    • Cell content is space‑padded for perfect alignment
    • Timestamps are relative (e.g., “3 hours ago”, “yesterday”) instead of absolute
  • Platform files platform_unix.go / platform_windows.go now contain all OS‑specific implementations.

🐛 Bug Fixes

  • Cross‑compilation type mismatch – Converted stat.Nlink to uint64 on arm64, loong64, and darwin to satisfy Go’s strict typing.
  • Executable detection on Windows – Now uses detectExecutableByExtension constant properly.
  • Symbolic link countgetLinkCount now calls the correct syscall on Unix (using Nlink) and returns 0 on Windows.

🧰 Maintenance & Code Health

  • Removed all runtime.GOOS checks from getFileType – Replaced with build‑tag dispatched implementations.
  • Consolidated owner logicowner_unix.go and owner_windows.go merged into platform_*.go.
  • Moved getLinkCount to platform files – Unix uses real syscall.Stat_t.Nlink, Windows returns 0.
  • Extracted executable detectioncheckExecutable() and detectExecutableByExtension now live in platform files.

⚠️ Upgrade Notes (Breaking Change)

  • -l output format is completely different:

    • Column order changed: previously mode links user group size date name → now # name mode links user group size modified
    • Borders and header style updated (rounded corners, space‑padding)
    • Timestamps are relative rather than absolute
    • Scripts that parse enls -l output will break – please adjust your parsers accordingly.
  • No changes to flags like -r, -a, -s, -S – they behave the same as in v0.0.9.


📥 Download & Installation

Platform Architecture File
Windows x86_64 windows_amd64
Windows ARM64 windows_arm64
Linux x86_64 linux_amd64
Linux ARM64 linux_arm64
Linux LoongArch linux_loong6
macOS x86_64 darwin_amd64
macOS ARM64 darwin_arm6

Note: Binary names follow the pattern enls-<version>-<os>_<arch>.tar.gz when using the build.sh script.


🙏 Acknowledgments

Thanks to the contributors who pushed for cleaner platform abstractions and a more modern ls experience. This release brings us one step closer to a truly portable, pleasant ls alternative.


📦 发布版本 v0.1.0 - 平台重构与 Nushell 风格输出

我们激动地推出 enhanced-ls v0.1.0 – 一次重大的内部清理,使代码库更易于维护、跨平台更友好。最大亮点是全新的 -l 输出格式,灵感来自 Nushell,采用圆角边框、空格填充单元格和相对时间戳。这是一个破坏性变更,依赖旧版长格式输出的脚本需要更新。同时修复了多个交叉编译的类型不匹配问题。


🚀 核心亮点

  • Nushell 风格的 -l 输出:圆角边框(╭╮╰╯)、对齐列、相对时间戳(例如 “2 分钟前”)。
  • 平台代码整合:移除 runtime.GOOS 条件判断,改用构建标签实现清晰分离。
  • 交叉编译修复:修正 arm64、loong64、darwin 上的 Nlink 类型不匹配。
  • 可执行文件检测重构:平台特定逻辑移至专属文件,改善 Windows 支持。

✨ 新增功能

  • 长格式 (-l) 现采用 Nushell ls -l 风格
    • 列顺序:# / 名称 / 权限 / 硬链接数 / 用户 / 组 / 大小 / 修改时间
    • 边框符号:(左上)、(右上)、(左下)、(右下)
    • 单元格内容使用空格填充以实现完美对齐
    • 时间戳为相对时间(如 “3 小时前”、“昨天”),不再显示绝对时间
  • 平台文件 platform_unix.go / platform_windows.go 现包含所有 OS 特定实现。

🐛 Bug 修复

  • 交叉编译类型不匹配 – 在 arm64、loong64 和 darwin 上将 stat.Nlink 转换为 uint64,以满足 Go 的严格类型要求。
  • Windows 可执行文件检测 – 现在正确使用 detectExecutableByExtension 常量。
  • 符号链接计数getLinkCount 在 Unix 上调用正确的系统调用(使用 Nlink),在 Windows 上返回 0。

🧰 维护与代码健康

  • 移除 getFileType 中所有 runtime.GOOS 检查 – 改用构建标签分发的实现。
  • 整合 owner 逻辑owner_unix.goowner_windows.go 合并为 platform_*.go
  • getLinkCount 移到平台文件 – Unix 使用真实的 syscall.Stat_t.Nlink,Windows 返回 0。
  • 提取可执行文件检测checkExecutable()detectExecutableByExtension 现位于平台文件中。

⚠️ 升级注意事项(破坏性变更)

  • -l 输出格式完全改变

    • 列顺序变更:原为 权限 链接数 用户 组 大小 日期 名称 → 现为 序号 名称 权限 链接数 用户 组 大小 修改时间
    • 边框和标题样式更新(圆角、空格填充)
    • 时间戳变为相对时间而非绝对时间
    • 依赖于 enls -l 输出的脚本会失效 – 请相应调整解析器。
  • 其他标志如 -r-a-s-S 行为与 v0.0.9 一致。


📥 下载与安装

平台 架构 文件名
Windows x86_64 windows_amd64
Windows ARM64 windows_arm64
Linux x86_64 linux_amd64
Linux ARM64 linux_arm64
Linux LoongArch linux_loong6
macOS x86_64 darwin_amd64
macOS ARM64 darwin_arm6

注意:使用 build.sh 脚本时,二进制文件压缩包命名模式为 enls-<版本>-<系统>_<架构>.tar.gz


🙏 致谢

感谢推动更清晰平台抽象和更现代 ls 体验的贡献者。本次发布让我们距离真正便携、愉悦的 ls 替代品又近了一步。

v0.0.9 Refined. Reliable. Ready.

18 Apr 05:09

Choose a tag to compare

以下是基于本次重构内容的 Release Notes(发布说明),采用中英双语,适合在 GitHub Releases 页面或项目文档中发布。


📦 Release v0.0.9 - Comprehensive Optimization & Robustness Enhancement

Release Date: 2026-04-18

We're excited to announce enhanced-ls v0.09.0! This release focuses on stability, performance, and cross-platform polish. It addresses several long-standing bugs (especially in recursive mode) and significantly improves the user experience on Windows. We highly recommend all users upgrade.


🚀 Highlights

  • Recursive Tree Fixed: No more duplicate directory names when using -r.
  • Windows Improvements: Better path handling, hidden Links column, extended file type detection, and graceful ANSI color fallback.
  • Performance Boost: File type detection and recursive traversal are now faster, especially for large directories.
  • New -a Option: Show hidden files (dotfiles) just like ls -a.
  • Better Error Visibility: Permissions issues during recursion are now reported to stderr.

✨ New Features

  • -a / --all flag: Include hidden files (entries starting with .) in all output modes. (Contributed by the community)
  • Windows: The Links column in long format (-l) is now hidden, as hard links are not a native concept on Windows. Future releases may show file attributes instead.

🐛 Bug Fixes

  • Recursive mode (-r) duplicate directory names – Directories are now printed only once, matching the standard tree command behavior.
  • Symbolic link detection – Now uses os.Lstat with ModeSymlink for accurate detection, preventing false positives.
  • Path handling on Windows – Removed redundant slash-to-backslash conversion that could corrupt UNC paths (e.g., \\server\share).
  • Mutual exclusivity of -s and -S – Using both flags together now triggers an error instead of undefined behavior.
  • Time field truncation in -l – Now displays an ellipsis () when the timestamp exceeds the column width.

⚡ Performance Optimizations

  • File type detection – Replaced O(n) extension loops with O(1) map lookups.
  • Recursive traversal – Avoids redundant os.Lstat calls by leveraging DirEntry.Info().
  • Column width calculation – Reduced repeated calls to formatSize() during long format rendering.

🪟 Windows‑Specific Enhancements

  • ANSI color support detection – Automatically disables colors if the terminal does not support VT100 sequences.
  • Extended extension lists – Added Windows‑specific types.

🧰 Maintenance & Code Health

  • Extracted duplicate tree entry formatting logic into a reusable helper function.
  • Defined a constant for valid type indicators (/*@#~%) to improve maintainability.
  • Added unit tests for core utilities (CJK width calculation, layout algorithm, filtering, and symlink detection).
  • Improved error reporting for unreadable directories during recursive traversal.

⚠️ Upgrade Notes

  • Breaking Change (minor): On Windows, the Links column is no longer displayed in -l output. Scripts that parse this output may need adjustment.
  • The -a flag is now available; previous behavior of automatically hiding dotfiles in -r mode remains the default unless -a is specified.
  • Simultaneous use of -s and -S will now cause the program to exit with an error message (previously it silently picked one).

📥 Download & Installation

Platform Architecture Binary
Windows x86_64 enls_windows_amd64.exe
Windows ARM64 enls_windows_arm64.exe
Linux x86_64 enls_linux_amd64
Linux ARM64 enls_linux_arm64
Linux LoongArch enls_linux_loong64
macOS x86_64 enls_darwin_amd64
macOS ARM64 enls_darwin_arm64

🙏 Acknowledgments

Thank you to all users who reported issues and suggested improvements. This release is dedicated to making ls colorful, fast, and reliable everywhere.


📦 发布版本 v0.0.9 - 全面优化与健壮性提升

发布日期:2026-04-18

我们很高兴发布 enhanced-ls v0.09.0!本次更新聚焦于稳定性、性能以及跨平台体验的打磨。修复了多个长期存在的 Bug(尤其是递归模式下的显示问题),并显著改善了 Windows 平台的使用感受。强烈建议所有用户升级。


🚀 核心亮点

  • 修复递归树显示:使用 -r 时不再出现重复的目录名。
  • Windows 体验优化:更健壮的路径处理、隐藏无意义的 Links 列、扩充文件类型识别、ANSI 颜色自动降级。
  • 性能提升:文件类型检测与递归遍历速度更快,大目录下感知明显。
  • 新增 -a 选项:类似 ls -a,可显示以 . 开头的隐藏文件。
  • 更清晰的错误提示:递归时遇到无权限目录会输出警告信息。

✨ 新增功能

  • -a / --all 标志:在所有输出模式中包含隐藏条目(以 . 开头)。
  • Windows 平台:长格式 (-l) 下的 Links 列已隐藏(Windows 无硬链接概念),未来版本或替换为文件属性列。

🐛 Bug 修复

  • 递归模式 (-r) 目录名重复打印 — 目录名称现在仅出现一次,与标准 tree 命令行为一致。
  • 符号链接检测 — 改用 os.Lstat 结合 ModeSymlink,避免误判。
  • Windows 路径处理 — 移除多余的斜杠转反斜杠替换,避免破坏 UNC 路径(如 \\server\share)。
  • -s-S 互斥检查 — 同时指定两个标志将报错退出,而非产生未定义行为。
  • 长格式时间字段截断 — 当时间戳超出列宽时,末尾添加省略号 () 表示截断。

⚡ 性能优化

  • 文件类型检测 — 将扩展名循环匹配(O(n))替换为 map 查询(O(1))。
  • 递归遍历 — 利用 DirEntry.Info() 避免重复调用 os.Lstat
  • 列宽计算 — 减少 formatSize() 在长格式渲染中的重复调用。

🪟 Windows 专属增强

  • ANSI 颜色支持检测 — 若终端不支持 VT100 序列,自动禁用颜色输出。
  • 扩展名列表扩充 — 新增 Windows 特有类型。

🧰 维护与代码健康

  • 抽取重复的树条目格式化逻辑为独立辅助函数。
  • 定义类型指示符常量 (/*@#~%) 以提高可维护性。
  • 为核心功能添加单元测试(CJK 宽度计算、布局算法、过滤逻辑、符号链接检测)。
  • 改进递归过程中对不可读目录的错误报告。

⚠️ 升级注意事项

  • 细微不兼容变更:在 Windows 上,-l 输出不再包含 Links 列。依赖此列输出的脚本可能需要调整。
  • -a 标志现已可用;递归模式默认仍隐藏点文件,除非显式指定 -a
  • 同时使用 -s-S 将导致程序报错退出(之前会静默忽略其中一个)。

📥 下载与安装

平台 架构 二进制文件
Windows x86_64 enls_windows_amd64.exe
Windows ARM64 enls_windows_arm64.exe
Linux x86_64 enls_linux_amd64
Linux ARM64 enls_linux_arm64
Linux LoongArch enls_linux_loong64
macOS x86_64 enls_darwin_amd64
macOS ARM64 enls_darwin_arm64

🙏 致谢

感谢所有反馈问题与提出建议的用户。这个版本致力于让 ls 在任何平台上都变得多彩、快速且可靠。

v0.0.8 ∞finity

19 Jul 11:04

Choose a tag to compare

更新内容

  1. 标识符变更

Media file (audio/video/image)标识符变更为@
Symbolic Link标识符变更为&

  1. 功能更新

-r参数可以实现与-f -s -S 结合使用

版本选择指南

根据您的操作系统和架构,请选择对应的安装文件以下是不同平台的版本对应关系:

操作系统 架构 文件名
Windows x86_64/AMD64 enls-v0.0.6-windows_amd64.exe
ARM64/AArch64 enls-v0.0.6-windows_arm64.exe
Linux x86_64/AMD64 enls-v0.0.6-linux_amd64
ARM64/AArch64 enls-v0.0.6-linux_arm64
LoongArch enls-v0.0.6-linux_loong64
macOS Intel (x86_64/AMD64) enls-v0.0.6-darwin_amd64
Apple Silicon (ARM64/AArch64) enls-v0.0.6-darwin_arm64

v0.0.7 - Hello,LoongArch

08 Jul 06:57

Choose a tag to compare

更新内容

  1. 使用-r可递归输出目录下内容
  2. 加入对loong64架构Linux的支持

版本选择指南

根据您的操作系统和架构,请选择对应的安装文件以下是不同平台的版本对应关系:

操作系统 架构 文件名
Windows x86_64/AMD64 enls-v0.0.6-windows_amd64.exe
ARM64/AArch64 enls-v0.0.6-windows_arm64.exe
Linux x86_64/AMD64 enls-v0.0.6-linux_amd64
ARM64/AArch64 enls-v0.0.6-linux_arm64
LoongArch enls-v0.0.6-linux_loong64
macOS Intel (x86_64/AMD64) enls-v0.0.6-darwin_amd64
Apple Silicon (ARM64/AArch64) enls-v0.0.6-darwin_arm64

v0.0.6-六代登场,兼容更广,功能更爽!

07 Jul 11:19

Choose a tag to compare

更新内容

  1. 更详细地-l输出
  2. 兼容性提升

版本选择指南

根据您的操作系统和架构,请选择对应的安装文件以下是不同平台的版本对应关系:

操作系统 架构 文件名
Windows x86_64/AMD64 enls-v0.0.6-windows_amd64.exe
ARM64/aarch64 enls-v0.0.6-windows_arm64.exe
Linux x86_64/AMD64 enls-v0.0.6-linux_amd64
ARM64/aarch64 enls-v0.0.6-linux_arm64
macOS Intel (x86_64) enls-v0.0.6-darwin_amd64
Apple Silicon (ARM64) enls-v0.0.6-darwin_arm64

v0.0.5

02 Jul 15:16

Choose a tag to compare

  1. 项目由enhanced-ls-for-powershell更名为enhanced-ls

  2. 跳过v0.0.4

  3. 跨平台支持

Windows(PowerShell 7.5+)
Linux
MacOS