Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
8c98bf1
CMake: discovers module file automatically
CarterLi Sep 2, 2026
e9f719f
Doc: update CONTRIBUTING.md [ci skip]
CarterLi Sep 2, 2026
90a6e90
Processes (macOS): eliminates a compiler warning
CarterLi Sep 2, 2026
caf64f5
Packaging: updates debian stuff [ci skip]
CarterLi Sep 2, 2026
20597bf
Logo (image): also try unsuffixed ImageMagick library names
pkubaj Sep 2, 2026
ce61783
Wallpaper (macOS): extracts image path from NSData `Configuration` field
CarterLi Sep 3, 2026
1128a75
InitSystem: uses SystemBasicProcessInformation if available
CarterLi Sep 2, 2026
00af2d1
WM: uses SystemBasicProcessInformation if available
CarterLi Sep 2, 2026
62f78ca
Processes (Windows): uses SystemHandleCountInformation if available
CarterLi Sep 2, 2026
4e78f1b
Packages (Linux): adds support for package detection for CRUX linux
mhoush Sep 4, 2026
ecee569
Global: uses `strtoull` for uint64_t
CarterLi Sep 4, 2026
6a275da
Sound: removes an unused file
CarterLi Sep 4, 2026
c708b6f
CPU (Linux): adds apple code of M5x
CarterLi Sep 4, 2026
2e542be
CMake: bumps min version to 3.21 (#2565)
Guiorgy Sep 5, 2026
5d290cc
Common (CommandOption): find module configuration from JSON config file
CarterLi Sep 5, 2026
66e9e38
Logo (Builtin): adds ALT Atomic (#2549)
x1z53 Sep 6, 2026
a70c37f
Logo (Builtin): removes Zerene
CarterLi Sep 7, 2026
7d0256f
CPU (Linux): adds SPARC support (#2572)
shalseth Sep 8, 2026
222fe7e
3rdparty (yyjson): upgrades to 0.13.0
CarterLi Sep 9, 2026
29818d2
Top (macOS): improves performance and accuracy‌ of process name
CarterLi Sep 11, 2026
9a9f82b
Processes (macOS): adds a comment
CarterLi Sep 11, 2026
f37a5a2
OpenBSD: removes kvm dep
CarterLi Sep 11, 2026
eff8514
CI (macOS): builds Intel version with macport
CarterLi Sep 11, 2026
61e3f61
CI: Bump the github-actions group with 3 updates (#2569)
dependabot[bot] Sep 12, 2026
20c155e
TerminalFont (Windows): honors JSON fragment
CarterLi Sep 12, 2026
19725cd
Packages (Windows): adds `--source winget` to improve performance of …
CarterLi Sep 13, 2026
ec8b9be
Packages: opens SQLite DB in immutable mode
CarterLi Sep 13, 2026
ced49ab
Chore: dont let clang-format break my code style
CarterLi Sep 13, 2026
1ee8528
Format: makes `{#title}` and `{#key}` honors `brightColor` config
CarterLi Sep 13, 2026
8334035
Logo: small optimizations
CarterLi Sep 13, 2026
cd5a2de
DE (Linux): uses `COSMIC_VERSION` if available
CarterLi Sep 13, 2026
d796945
CI: Bump docker/setup-qemu-action in the github-actions group (#2583)
dependabot[bot] Sep 14, 2026
98e9b6e
3rdparty: embeds libsixel
CarterLi Sep 13, 2026
e8350a0
Logo (Image): drops IM in favor of WIC on Windows
CarterLi Sep 13, 2026
35ffdb3
Logo (Image): drops IM in favor of ImageIO on macOS
CarterLi Sep 14, 2026
e3b3b5d
Packages: fixes a copy-paste bug
CarterLi Sep 14, 2026
375d0c6
Common (IO): adds `ffPathGetMtime` and uses it
CarterLi Sep 14, 2026
a90ae02
IO (Windows): prefers unicode APIs
CarterLi Sep 14, 2026
3d7ea72
Logo (Image): improves caching logic; takes mtime into account
CarterLi Sep 14, 2026
464adb3
Logo (Image): migrates `recache` to `cache: bool|regen`
CarterLi Sep 14, 2026
129bb73
Logo (Icat): adds `--stdin=no` so icat doesn't try to read stdin
CarterLi Sep 14, 2026
6178256
Logo (Icat): adds `logo-padding` support
CarterLi Sep 14, 2026
98ec0a6
IO: increases `FF_IO_TERM_RESP_WAIT_MS`
CarterLi Sep 15, 2026
ff3360e
Logo (Image): fixes potencial memleaks
CarterLi Sep 15, 2026
416715a
Presets: fixes neofetch keys
CarterLi Sep 15, 2026
fbf79ac
FFstrbuf: improves empty-string handling
CarterLi Sep 15, 2026
53e8686
Logo (Image): fixes a copy-paste error
CarterLi Sep 15, 2026
02dc6a4
Modules: adds `*` to format args which are available in key format
CarterLi Sep 15, 2026
7b28ad0
Chore: updates gitignore
CarterLi Sep 15, 2026
b96d7e7
Networking: supports chunked response & custom port number
CarterLi Sep 15, 2026
d1b7471
Logo (Image): adds animation (gif / apng) support
CarterLi Sep 16, 2026
9bac273
NetIO / DiskIO: reduces `waitTime` & improves accurency
CarterLi Sep 16, 2026
e004c97
CMake: adds option `-DENABLE_IMAGE_LOGO=<BOOL>`
CarterLi Sep 17, 2026
59e3315
CPU (Android): updates the marketing name of Dimensity 9600 Pro
CarterLi Sep 17, 2026
1b7cc1c
CPU (Linux): adds SoC name of MacBook Neo
CarterLi Sep 17, 2026
43988a8
Release: v2.69.0
CarterLi Sep 17, 2026
c23c98a
Logo (Image): supports transparent background of sixel logos
CarterLi Sep 17, 2026
f8fd708
Global: addresses Copilot's review comments
CarterLi Sep 17, 2026
6ff7f27
Tests: adds more UTs
CarterLi Sep 17, 2026
97ac94e
Common: adds more gcc constrants
CarterLi Sep 17, 2026
70d2dd3
Image (Logo): uses native image decoder on Android
CarterLi Sep 17, 2026
560a9f4
WM (Linux): supports Umbriel version detection (#2594)
oldirtty Sep 18, 2026
7baaae1
DE (Android): improves Android ROM detection
CarterLi Sep 18, 2026
098b501
Camera (Android): uses NDK instead of the unstable `termux-api`
CarterLi Sep 18, 2026
811e634
Display (Android): adds real support via `/system/bin/cmd`
CarterLi Sep 18, 2026
2fb7fab
CI (Haiku): don't reboot after installing deps
CarterLi Sep 18, 2026
ecbf218
Chore: fixes compiling errors
CarterLi Sep 18, 2026
873a881
Battery (Android): rewrites impl via `/dev/binder`
CarterLi Sep 18, 2026
e1d7360
Display (Android): adds richer information and adds detectWithGetprop…
CarterLi Sep 18, 2026
2594c01
Common: renames `androidApi.h` for `android/api.h`
CarterLi Sep 18, 2026
665c472
Wifi (Android): rewrites impl via `/dev/binder`
CarterLi Sep 18, 2026
58692ad
Common (Networking): fixes a non-pure function marked as pure
CarterLi Sep 18, 2026
6142077
Chore: eliminates a compiler warning
CarterLi Sep 19, 2026
efbfda9
Doc: updates changelog [ci skip]
CarterLi Sep 19, 2026
34639b6
Presets: updates examples/25 [ci skip]
CarterLi Sep 19, 2026
4a33a2c
Player (Windows): improves player name detection
CarterLi Sep 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/workflows/build-haiku-amd64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ jobs:
run: uname -a

- name: Install dependencies
shell: cpa.sh {0} --reboot
run: pkgman install -y git dbus_devel mesa_devel libelf_devel imagemagick_devel opencl_headers ocl_icd_devel vulkan_devel zlib_devel chafa_devel cmake llvm22_clang ninja pkgconfig python3.10 lua || pkgman install -y git dbus_devel mesa_devel libelf_devel imagemagick_devel opencl_headers ocl_icd_devel vulkan_devel zlib_devel chafa_devel cmake llvm22_clang ninja pkgconfig python3.10 lua

- name: CMake configuration
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build-linux-hosts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ jobs:

- name: Initialize CodeQL
if: inputs.arch == 'amd64'
uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8
uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9
with:
languages: c

Expand All @@ -64,7 +64,7 @@ jobs:

- name: perform CodeQL analysis
if: inputs.arch == 'amd64'
uses: github/codeql-action/analyze@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8
uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9

- name: list features
run: ./fastfetch --list-features
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-linux-i686.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
run: cmake --version

- name: configure project
run: CC=gcc-13 CMAKE_PREFIX_PATH=/home/linuxbrew/.linuxbrew PKG_CONFIG_PATH=/home/linuxbrew/.linuxbrew/lib/pkgconfig:$PKG_CONFIG_PATH cmake -DCMAKE_C_FLAGS="-m32 -march=i686 -mtune=i686" -DCMAKE_SYSTEM_PROCESSOR_OVERRIDE=i686 -DCPACK_DEBIAN_PACKAGE_ARCHITECTURE=i386 -GNinja -DSET_TWEAK=Off -DBUILD_TESTS=On -DENABLE_EMBEDDED_PCIIDS=On -DENABLE_EMBEDDED_AMDGPUIDS=On -DCMAKE_INSTALL_PREFIX=/usr .
run: CC=gcc-13 CMAKE_PREFIX_PATH=/home/linuxbrew/.linuxbrew PKG_CONFIG_PATH=/home/linuxbrew/.linuxbrew/lib/pkgconfig:$PKG_CONFIG_PATH cmake -DCMAKE_C_FLAGS="-m32 -march=i686 -mtune=i686" -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_VERSION=5.10.0 -DCMAKE_SYSTEM_PROCESSOR=i686 -DCPACK_DEBIAN_PACKAGE_ARCHITECTURE=i386 -GNinja -DSET_TWEAK=Off -DBUILD_TESTS=On -DENABLE_EMBEDDED_PCIIDS=On -DENABLE_EMBEDDED_AMDGPUIDS=On -DCMAKE_INSTALL_PREFIX=/usr .

- name: build project
run: cmake --build . --target package --verbose -j4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-linux-loong64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: set up QEMU for loong64
uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
uses: docker/setup-qemu-action@1f40c72289eff860ee54a304f1438e3cff362e0a # v4.3.0

- name: build in loong64 container
run: |
Expand Down
21 changes: 19 additions & 2 deletions .github/workflows/build-macos-hosts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,30 @@ jobs:
- name: uname -a
run: uname -a

- name: install required packages
- name: install required packages with MacPorts # Homebrew dropped Intel support
if: inputs.arch == 'amd64'
run: |
curl -fsSL https://github.com/macports/macports-base/releases/download/v2.12.6/MacPorts-2.12.6-15-Sequoia.pkg -o "$RUNNER_TEMP/MacPorts.pkg"
sudo installer -pkg "$RUNNER_TEMP/MacPorts.pkg" -target /
echo /opt/local/bin >> "$GITHUB_PATH"
echo /opt/local/sbin >> "$GITHUB_PATH"
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
sudo port selfupdate
sudo port install vulkan-loader vulkan-headers MoltenVK ImageMagick7 chafa lua quickjs-ng jq

- name: install required packages with Homebrew
if: inputs.arch == 'aarch64'
run: |
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew update
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install --overwrite vulkan-loader vulkan-headers molten-vk imagemagick chafa lua quickjs-ng jq

- name: configure project
run: cmake -DSET_TWEAK=Off -DBUILD_TESTS=On .
run: |
if [ "${{ inputs.arch }}" = "amd64" ]; then
export CMAKE_PREFIX_PATH=/opt/local
export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}
fi
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On .

- name: build project
run: cmake --build . --target package --verbose -j4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-no-features-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
run: uname -a

- name: configure project
run: cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr . -DENABLE_VULKAN=OFF -DENABLE_WAYLAND=OFF -DENABLE_XCB_RANDR=OFF -DENABLE_XCB=OFF -DENABLE_XRANDR=OFF -DENABLE_X11=OFF -DENABLE_DRM=OFF -DENABLE_DRM_AMDGPU=OFF -DENABLE_GIO=OFF -DENABLE_DCONF=OFF -DENABLE_DBUS=OFF -DENABLE_SQLITE3=OFF -DENABLE_RPM=OFF -DENABLE_IMAGEMAGICK7=OFF -DENABLE_IMAGEMAGICK6=OFF -DENABLE_CHAFA=OFF -DENABLE_ZLIB=OFF -DENABLE_EGL=OFF -DENABLE_GLX=OFF -DENABLE_OPENCL=OFF -DENABLE_FREETYPE=OFF -DENABLE_PULSE=OFF -DENABLE_DDCUTIL=OFF -DENABLE_ELF=OFF -DENABLE_EET=OFF -DENABLE_THREADS=OFF
run: cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr . -DENABLE_VULKAN=OFF -DENABLE_WAYLAND=OFF -DENABLE_XCB_RANDR=OFF -DENABLE_XCB=OFF -DENABLE_XRANDR=OFF -DENABLE_X11=OFF -DENABLE_DRM=OFF -DENABLE_DRM_AMDGPU=OFF -DENABLE_GIO=OFF -DENABLE_DCONF=OFF -DENABLE_DBUS=OFF -DENABLE_SQLITE3=OFF -DENABLE_RPM=OFF -DENABLE_IMAGEMAGICK7=OFF -DENABLE_IMAGEMAGICK6=OFF -DENABLE_CHAFA=OFF -DENABLE_ZLIB=OFF -DENABLE_EGL=OFF -DENABLE_GLX=OFF -DENABLE_OPENCL=OFF -DENABLE_FREETYPE=OFF -DENABLE_PULSE=OFF -DENABLE_DDCUTIL=OFF -DENABLE_ELF=OFF -DENABLE_EET=OFF -DENABLE_THREADS=OFF -DENABLE_IMAGE_LOGO=OFF

- name: build project
run: cmake --build . --target package --verbose -j4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-solaris-amd64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: run VM
uses: vmactions/solaris-vm@315163f088b66e55bbcc45928bd224d4973b2312 # v1.3.8
uses: vmactions/solaris-vm@96d8d976f9e67d82ec6c7e8ce9c1060731f9e21c # v1.3.9
with:
usesh: true
envs: 'CMAKE_BUILD_TYPE'
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ fastfetch.kdev4
*.swp
*.log
/*.zh.md
/.*-ai/
/.work*
95 changes: 95 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,98 @@
# 2.69.0

Changes:
* ImageMagick is no longer used for image logos on Windows, macOS and Android, and has been replaced by the platform image frameworks (WIC on Windows, ImageIO on macOS, AImageDecoder on Android). (Logo)
* An image logo needs Android 11 (API 30), the release that introduced the platform image decoder, and is reported as an error on Android 10 and older.
* ImageMagick 6 support is deprecated. It is kept only for old Debian and Ubuntu releases that don't have ImageMagick 7 available.
* It is intended to be removed in a future release. Users are encouraged to upgrade to ImageMagick 7 when possible.

* The `--logo-recache` option has been replaced by `--logo-cache <bool|regen>`, and the `logo.recache` JSON property has been renamed to `logo.cache`. (Logo)
* `--logo-cache true` (the default) reuses a cached rendering when it is valid, and writes it back on a cache miss.
* `--logo-cache false` ignores the image logo cache completely: nothing is read from it and nothing is written to it.
* `--logo-cache regen` does what `--logo-recache true` used to do.
* `logo.cache` accepts a boolean, or the string `"regen"`.
* The `waitTime` option of `DiskIO` and `NetIO` now defaults to `250` ms instead of `500`. (DiskIO / NetIO)
* The byte counters are maintained by the kernel as I/O happens, so a shorter sampling window still yields an accurate rate, and both modules now finish about 250 ms sooner.
* Note that the two modules wait concurrently, so enabling both does not cost twice the wait time.

Features:
* Improved image logo support
* Backend rewritten
* Added a native image decoding backend on Windows (WIC), macOS (ImageIO) and Android (AImageDecoder).
* Added an embedded libsixel encoder, used to produce sixel output on Windows, macOS and Android. It is reported by `fastfetch --list-features` as "Embedded sixel".
* Enabled chafa image output on Windows, macOS and Android independently of ImageMagick.
* As a result, `fastfetch --sixel X:\path\to\image` now works out of the box on Windows Terminal.
* Image logo cache entries are now validated against the modification time of the source image. (Logo)
* Editing an image logo in place now invalidates its cached rendering.
* Cache entries written by older versions are not reused, as they carry no modification time.
* Image logos can now be animated when the terminal and the image protocol support it. (Logo)
* `--logo-animation-frame <0>` (`logo.animationFrame: 0` in the JSON config) plays a GIF or APNG. Only the `kitty` image protocol can play an animation; the frames are decoded and composed by fastfetch, so no external program is involved.
* `--logo-animation-frame <N>` renders the Nth frame as a still image, and negative values count back from the end, so `-1` is the last frame. This works for the `sixel`, `kitty` and `chafa` logo types. Note that negative values can only be given in the JSON config, as the command line parser reads a leading `-` as another option.
* The default is `1`, which renders a still image, so nothing changes for anyone who does not opt in.
* The frames come from the platform image framework (WIC on Windows, ImageIO on macOS, AImageDecoder on Android, ImageMagick 7 on Linux). A single-frame GIF falls back to a still image.
* On Android an animation needs Android 12 (API 31). The repeat count is not available there, so an animation is reported as looping forever. A build with no image decoder, or one built with ImageMagick 6, reports an error instead of silently showing a still image.
* A terminal that supports the kitty graphics protocol but not its animation frames, such as Konsole, shows the first frame.
* Added the CMake option `ENABLE_IMAGE_LOGO`, which defaults to `ON`. Configure with `-DENABLE_IMAGE_LOGO=OFF` to build fastfetch without any image logo support. (Logo)
* Image logos are the only consumer of ImageMagick, chafa, and the embedded libsixel encoder, so none of the three is searched for at configure time, and no image decoding sources are compiled in.
* The `sixel`, `kitty`, `kitty-direct`, `kitty-icat`, `iterm` and `chafa` logo types are rejected with an error, both on the command line and in the JSON config, and the `auto` logo type never tries an image.
* `--logo-type raw` keeps working: it passes a pre-rendered byte stream through unchanged and needs no decoder, so a logo can still be displayed by converting the image externally.
* This is intended only to reduce binary size on embedded systems (such as OpenWrt).
* Added CPU name and frequency detection support on SPARC. (CPU, Linux)
* Added package detection support for CRUX. (Packages, Linux)
* Exposed in custom format as `{crux}`.
* Improved Android ROM detection (DE, Android)
* Added support for HarmonyOS, HarmonyOS NEXT, Flyme, JOYUI, SmartisanOS, realme UI, HydrogenOS, ZUI, ZUXOS, MyOS, NebulaAIOS, ObricUI, MiFavor, LineageOS, PixelExperience, EUI and 360 UI.
* Added support for MagicUI 3.x, which stores a bare version number instead of a `MagicUI_x.y.z` string.
* Added Samsung OneUI support (#2541)
* It is read from system properties, so no particular Android version is required.
* This is mostly untested due to lack of available devices running these ROMs. Please report any issues you encounter.
* Improved Camera detection on Android (Camera, Android)
* The camera list is now read from the camera2 NDK instead of `termux-api CameraInfo`, so the Termux:API app is no longer required and no subprocess is spawned.
* This needs Android 7.0 (API 24), which is where the camera2 NDK was introduced.
* Improved Battery detection on Android (Battery, Android)
* The charge level and charging state are now read from the battery properties service over `/dev/binder` instead of `termux-api BatteryStatus`, so the Termux:API app is no longer required and no subprocess is spawned.
* The service interface changed in Android 10, and the right request is picked at run time, so every Android release is covered.
* Battery temperature, cycle count, manufacturer, model name, serial number and manufacture date need the `BATTERY_STATS` permission, which an app cannot obtain, so they are no longer reported.
* Improved Display detection on Android (Display, Android)
* The displays are now read from the display service instead of a vendor property that only some Xiaomi devices set. The preferred mode, the physical size, the rotation, the manufacture date and the display id are now reported as well.
* This needs Android 13 (API 33). On Android 12 and older only that vendor property is available to an app, and a device that does not set it reports no display.
* The refresh rate is now the rate of the active display mode, and the HDR capability is read from the display itself, for every display rather than only for the built-in one.
* Improved WiFi detection on Android (Wifi, Android)
* The connection details are now read from the WiFi service over `/dev/binder` instead of `termux-api WifiConnectionInfo`, so the Termux:API app is no longer required and no subprocess is spawned.
* The interface name and its state, the connection state and the Wi-Fi standard are now reported as well.
* This needs Android 11 (API 30), the release that moved the Wi-Fi framework into an APEX. There is no fallback, so Android 10 and older report an error instead.
* Improved COSMIC detection (DE / WM, Linux)
* The version is now read from the `COSMIC_VERSION` environment variable when it is set.
* Improved accuracy and performance of process name detection in the Top module. (Top, macOS)
* Improved Packages detection on Windows (Packages, Windows)
* `winget list` is now invoked with `--source winget`, so only packages installed by winget itself are counted, and the slow msstore HTTP round trips are skipped.
* Improved Wallpaper detection on macOS Sonoma and later (#2559, Wallpaper, macOS)
* The image path is now also extracted from the `Configuration` field of the wallpaper plist, and the `NSWorkspace` fallback is used only as a last resort.
* Removed the `kvm` dependency on OpenBSD by using `sysctl` directly. (General, OpenBSD)
* Modules that were selected on the command line via `--structure` / `-s` now honor module options configured in the JSON config. (CommandOption)
* Improved reliability of fastfetch's built-in HTTP client. (PublicIP, Weather)
* It now supports custom ports and can properly handle chunked transfer encoding.
* It is designed for minimal resource usage and fast performance. It does not support full HTTP features like HTTPS. Users can always use the `Command` module with `curl` to achieve similar functionality.
* Added Umbriel wayland compositor version detection (WM, Linux)
* Improved the player name detection on Windows to show the name Windows shows for it. (Player, Windows)
* An unpackaged player such as Chrome is now reported as `Google Chrome` instead of `Chrome`.

Bugfixes:
* Fixed Base64 encoding producing incorrect output for some inputs. (General)
* Fixed image logos not working when ImageMagick is built without a quantum depth suffix in its library name, as is the case on FreeBSD. (Logo, FreeBSD)
* Fixed TerminalFont detection on Windows ignoring Windows Terminal JSON fragment files. (#2573, TerminalFont, Windows)
* Fixed 64-bit values being truncated by `strtoul` on platforms where `unsigned long` is 32-bit. (Swap / PhysicalDisk / PhysicalMemory / GPU)
* Fixed read-only SQLite databases failing with `SQLITE_READONLY` when the database directory is not writable. (Packages)
* This fixes PKG package count detection on FreeBSD.
* Fixed `{#keys}` and `{#title}` in module format strings not honoring the `brightColor` display option. (Format)
* Fixed `paddingTop` and `paddingLeft` being ignored by the `kitty-icat` image logo type. (Logo)
* Fixed issues when running on big-endian platforms.
* Some internal cleanups and optimizations.

Logos:
* Added ALT Atomic
* Removed Zerene

# 2.68.1

Changes:
Expand Down
Loading
Loading