Skip to content

Conversation

@CarterLi
Copy link
Member

@CarterLi CarterLi commented Dec 5, 2025

No description provided.

CarterLi and others added 30 commits November 17, 2025 08:59
* 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>
Copilot AI review requested due to automatic review settings December 5, 2025 11:46
Copilot finished reviewing on behalf of CarterLi December 5, 2025 11:50
Copy link
Contributor

Copilot AI left a 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 --config or -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.

@CarterLi CarterLi requested a review from Copilot December 5, 2025 14:32
Copilot finished reviewing on behalf of CarterLi December 5, 2025 14:36
Copy link
Contributor

Copilot AI left a 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
Copy link

Copilot AI Dec 5, 2025

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.

Suggested change
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

Copilot uses AI. Check for mistakes.
}
else
{
ffStrbufSetS(exePath, filePath);
Copy link

Copilot AI Dec 5, 2025

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.

Suggested change
ffStrbufSetS(exePath, filePath);
ffStrbufClear(exePath);

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +6
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

Copy link

Copilot AI Dec 5, 2025

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.

Copilot uses AI. Check for mistakes.
Comment on lines +7 to +15
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
}
Copy link

Copilot AI Dec 5, 2025

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.

Copilot uses AI. Check for mistakes.
ffStrbufInit(&user->hostName);
ffStrbufInit(&user->sessionName);
ffStrbufInit(&user->clientIp);
ffStrbufSubstrBefore(&loginTime, loginTime.length - 3); // converts us to ms
Copy link

Copilot AI Dec 5, 2025

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.

Copilot uses AI. Check for mistakes.
@CarterLi CarterLi merged commit e50421a into master Dec 5, 2025
51 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants