-
-
Notifications
You must be signed in to change notification settings - Fork 633
Release: v2.56.0 #2083
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Release: v2.56.0 #2083
Conversation
* Add Amiga logo * Update ASCII art in amiga.txt --------- Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
* Add OS2 Warp logo * Update ASCII art in os2warp.txt * Refactor OS/2 Warp logo names for consistency --------- Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
* fix: Codex Linux new logo reMarkable changed their logo so reflecting that change here too * Modify ASCII art in codex.txt --------- Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR represents the v2.56.0 release of fastfetch, which includes several new features, bug fixes, and logo additions.
Key Changes:
- Enhanced config file loading to search in user config directories when using relative paths with
--configor-c - Added NUMA node count detection support for CPU module (Linux, FreeBSD, Windows)
- Rewritten zpool module with improved property detection and expanded platform support (NetBSD, macOS)
Reviewed changes
Copilot reviewed 50 out of 50 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| CMakeLists.txt | Updated version to 2.56.0, refactored libzfs option from ENABLE_LIBZFS to ENABLE_ZFS, consolidated zpool source files |
| CHANGELOG.md | Added comprehensive release notes for v2.56.0 with features, bugfixes, and logo updates |
| debian/changelog.tpl | Added debian changelog entry for version 2.55.1 |
| README.md | Added Ubuntu PPA installation instructions and updated Debian/Ubuntu package availability info |
| src/util/path.h | Moved ffIsAbsolutePath from .c to .h as inline function to improve performance |
| src/util/path.c | Removed ffIsAbsolutePath implementation (moved to header) |
| src/util/FFstrbuf.h | Generalized ffStrbufGetline to ffStrbufGetdelim with delimiter parameter, added documentation |
| src/util/FFstrbuf.c | Refactored getline implementation to support custom delimiters |
| src/modules/zpool/zpool.c | Complete rewrite using runtime property lookup for portability |
| src/modules/zpool/zpool.h | Updated struct with guid, allocated, readOnly fields; removed version field |
| src/detection/zpool/zpool.c | New unified implementation replacing platform-specific files |
| src/detection/zpool/zpool_linux.c | Removed (consolidated into zpool.c) |
| src/detection/zpool/zpool_nosupport.c | Removed (consolidated into zpool.c) |
| src/detection/zpool/libzfs_simplified.h | Updated to use runtime property lookup instead of hardcoded enum values |
| src/modules/packages/packages.c | Added KISS package manager support |
| src/modules/packages/option.h | Added KISS package flag bit |
| src/detection/packages/packages.h | Added kiss field to result struct |
| src/detection/packages/packages_linux.c | Added KISS package counting logic |
| src/modules/cpu/cpu.c | Added numa-nodes format argument support |
| src/modules/cpuusage/cpuusage.c | Fixed preprocessor macro from WIN32 to _WIN32 |
| src/detection/cpu/cpu.h | Added numaNodes field to CPU result |
| src/detection/cpu/cpu_linux.c | Implemented NUMA node detection via /sys/devices/system/node |
| src/detection/cpu/cpu_windows.c | Added NUMA node detection via RelationNumaNode |
| src/detection/cpu/cpu_bsd.c | Added NUMA node detection via sysctl vm.ndomains |
| src/modules/command/option.h | Added splitLines option field |
| src/modules/command/command.c | Implemented splitLines functionality to output each line as separate module instance |
| src/detection/terminalshell/terminalshell.c | Improved ksh/mksh version detection, added sshd version detection, use absolute paths when available |
| src/detection/terminalshell/terminalshell_linux.c | Updated to use absolute path for version detection, improved sshd terminal name handling |
| src/detection/terminalshell/terminalshell_windows.c | Updated to use absolute path for version detection |
| src/detection/terminalfont/terminalfont.c | Updated Alacritty config parsing for new TOML format with proper default fonts |
| src/logo/builtin.c | Added Amiga and OS/2 Warp logos, fixed comment typo (Aeon→AerynOS) |
| src/logo/ascii/*.txt | Added new ASCII art files for Amiga, OS/2 Warp, and updated Codex |
| src/logo/logo.c | Improved builtin logo printing for better pipe and buffer support |
| src/logo/image/image.c | Changed file descriptor validation to use ffIsValidNativeFD() |
| src/detection/gpu/gpu_linux.c | Added Zhaoxin GPU driver-specific detection, renamed pciDetectNouveauSpecific to pciDetectTempGeneral |
| src/detection/gpu/gpu_apple.c | Fixed comment to reference correct property name (voltage-states9-sram) |
| src/detection/gpu/gpu.h | Added vendor name constants for Qualcomm, MTK, Broadcom, Loongson, etc. |
| src/detection/users/users_linux.c | Added systemd-based user detection fallback, improved utmp handling with resource leak fixes |
| src/detection/displayserver/displayserver_android.c | Added Android OEM UI detection for various manufacturers |
| src/common/io/io.h | Added ffIsValidNativeFD() helper function for cross-platform file descriptor validation |
| src/common/init.c | Fixed preprocessor macro from WIN32 to _WIN32, removed libzfs from feature list |
| src/common/font.h | Added ffFontInitMoveValues function declaration |
| src/common/font.c | Implemented ffFontInitMoveValues for efficient font initialization |
| src/common/processing_linux.c | Set exePath to filePath when readlink fails as fallback |
| src/fastfetch.c | Enhanced config file loading to search in user config directories, fixed preprocessor macro |
| src/data/help.json | Updated config option help text to mention stdin support |
| doc/json_schema.json | Added splitLines option to command module schema |
| .github/workflows/ci.yml | Removed unnecessary pkg install command for Solaris CI |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 50 out of 50 changed files in this pull request and generated 5 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| ffStrbufInitMove(&user->sessionName, tty.length ? &tty : &service); | ||
| if (loginTime.length) | ||
| { | ||
| ffStrbufSubstrBefore(&loginTime, loginTime.length - 3); // converts us to ms |
Copilot
AI
Dec 5, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's a potential underflow issue when loginTime.length is less than 3. The expression loginTime.length - 3 will underflow if the length is 0, 1, or 2 (since length is unsigned). This could cause unexpected behavior or crashes. Consider adding a length check: if (loginTime.length >= 3) ffStrbufSubstrBefore(&loginTime, loginTime.length - 3); or handle short timestamps appropriately.
| ffStrbufSubstrBefore(&loginTime, loginTime.length - 3); // converts us to ms | |
| if (loginTime.length >= 3) | |
| ffStrbufSubstrBefore(&loginTime, loginTime.length - 3); // converts us to ms | |
| // else: leave loginTime unchanged or handle as needed |
| } | ||
| else | ||
| { | ||
| ffStrbufSetS(exePath, filePath); |
Copilot
AI
Dec 5, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Setting exePath to filePath (which is /proc/%d/exe) when readlink fails is misleading. The path /proc/%d/exe is a symbolic link, not the actual executable path. If readlink fails, it would be more appropriate to leave exePath empty or set it to an error indicator, rather than providing a symlink path that could be misinterpreted as the actual executable location. Consider using ffStrbufClear(exePath) instead or documenting this fallback behavior.
| ffStrbufSetS(exePath, filePath); | |
| ffStrbufClear(exePath); |
| fastfetch (2.55.1~#UBUNTU_CODENAME#) #UBUNTU_CODENAME#; urgency=medium | ||
|
|
||
| * Update to 2.55.1 | ||
|
|
||
| -- Carter Li <zhangsongcui@live.cn> Mon, 17 Nov 2025 10:15:44 +0800 | ||
|
|
Copilot
AI
Dec 5, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The debian changelog template is missing an entry for version 2.56.0, which is the version being released in this PR (as indicated by the title "Release: v2.56.0" and the CMakeLists.txt version update). The latest entry is for 2.55.1. Consider adding an entry for 2.56.0 with the appropriate release date and changes.
| static inline bool ffIsAbsolutePath(const char* path) | ||
| { | ||
| #ifdef _WIN32 | ||
| return (ffCharIsEnglishAlphabet(path[0]) && path[1] == ':' && (path[2] == '\\' || path[2] == '/')) // drive letter path | ||
| || (path[0] == '\\' && path[1] == '\\'); // UNC path | ||
| #else | ||
| return path[0] == '/'; | ||
| #endif | ||
| } |
Copilot
AI
Dec 5, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The ffIsAbsolutePath function doesn't check if path is NULL before dereferencing it with path[0], path[1], or path[2]. On Windows, accessing path[1] and path[2] without bounds checking could cause buffer overruns if the path string is shorter than expected. Consider adding a NULL check and length validation, or document that the caller must ensure the path is non-NULL and non-empty.
| ffStrbufInit(&user->hostName); | ||
| ffStrbufInit(&user->sessionName); | ||
| ffStrbufInit(&user->clientIp); | ||
| ffStrbufSubstrBefore(&loginTime, loginTime.length - 3); // converts us to ms |
Copilot
AI
Dec 5, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's a potential underflow issue when loginTime.length is less than 3. The expression loginTime.length - 3 will underflow if the length is 0, 1, or 2 (since length is unsigned). This could cause unexpected behavior or crashes. Consider adding a length check: if (loginTime.length >= 3) ffStrbufSubstrBefore(&loginTime, loginTime.length - 3); or handle short timestamps appropriately.
No description provided.