Skip to content

Release v2.67.0 - #2490

Merged
CarterLi merged 67 commits into
masterfrom
dev
Aug 5, 2026
Merged

Release v2.67.0#2490
CarterLi merged 67 commits into
masterfrom
dev

Conversation

@CarterLi

@CarterLi CarterLi commented Aug 4, 2026

Copy link
Copy Markdown
Member

Some files have been pre-pushed into master to reduce the number of changed files

Checklist

  • I have tested my changes locally.

CarterLi and others added 30 commits July 11, 2026 15:23
Note: Windows doesn't have a unix-like init system process, but it does have the first userland process, which is `smss.exe`
ffBase64EncodeRaw unconditionally byte-swapped the input word via
__builtin_bswap32, which only produces the intended big-endian byte
layout on little-endian hosts. On big-endian hosts the word is already
in the correct order, so the swap corrupted the encoded output.

Guard the swap with __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ so the
encoder is correct on both endiannesses.
* CI: add loong64 build workflow

Add reusable workflow for building fastfetch on LoongArch 64-bit
architecture using QEMU user-mode emulation + Docker container
(lcr.loongnix.cn/debian:14). Integrate into CI pipeline and
release dependencies.

* CI (loong64): pin docker/setup-qemu-action to full commit SHA

Pin to 06116385d9baf250c9f4dcb4858b16962ea869c3 (v4.1.0) for
immutable action reference as required by Codacy.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Release prep for v2.67.0, updating core functionality (config generation, option parsing), platform detection, module ordering, documentation, tests, and CI to match the new release behavior and fixes.

Changes:

  • Reworks --gen-config into an interactive TUI flow (with non-interactive fallback) and removes general.preRun handling for security.
  • Introduces module .defaultOrder and applies it across modules; includes various detection fixes (Wayland “done” handling, Windows init system, Apple M5 temps, networking safeguards).
  • Updates tests, docs/changelog, logos, and CI (adds loong64 workflow; disables Haiku in release aggregation).

Reviewed changes

Copilot reviewed 131 out of 131 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
tests/strbuf.c Updates strbuf allocation expectation for fixed-length ensure behavior.
tests/list.c Adds tests for new list insert/remove-at operations.
src/options/general.c Removes general.preRun support and returns a deprecation error.
src/options/display.c Destroys additional display option strbuf fields (leak fix).
src/modules/zpool/zpool.c Adds module defaultOrder.
src/modules/wmtheme/wmtheme.c Adds module defaultOrder.
src/modules/wm/wm.c Adds module defaultOrder.
src/modules/wifi/wifi.c Adds module defaultOrder.
src/modules/weather/weather.c Fixes option cleanup; adds module defaultOrder.
src/modules/wallpaper/wallpaper.c Adds module defaultOrder.
src/modules/vulkan/vulkan.c Adds module defaultOrder.
src/modules/version/version.c Adds module defaultOrder.
src/modules/users/users.c Adds module defaultOrder.
src/modules/uptime/uptime.c Adds module defaultOrder.
src/modules/tpm/tpm.c Adds module defaultOrder.
src/modules/title/title.c Adds module defaultOrder.
src/modules/theme/theme.c Adds module defaultOrder.
src/modules/terminaltheme/terminaltheme.c Adds module defaultOrder.
src/modules/terminalsize/terminalsize.c Adds module defaultOrder.
src/modules/terminalfont/terminalfont.c Adds module defaultOrder.
src/modules/terminal/terminal.c Adds module defaultOrder.
src/modules/swap/swap.c Adds module defaultOrder.
src/modules/sound/sound.c Adds module defaultOrder.
src/modules/shell/shell.c Adds module defaultOrder.
src/modules/separator/separator.c Fixes option cleanup; adds module defaultOrder.
src/modules/publicip/publicip.c Adds module defaultOrder.
src/modules/processes/processes.c Adds module defaultOrder and normalizes formatArgs initializer.
src/modules/poweradapter/poweradapter.c Adds module defaultOrder.
src/modules/player/player.c Adds module defaultOrder.
src/modules/physicalmemory/physicalmemory.c Adds module defaultOrder.
src/modules/physicaldisk/physicaldisk.c Adds module defaultOrder.
src/modules/packages/packages.c Adds module defaultOrder.
src/modules/os/os.c Adds module defaultOrder.
src/modules/opengl/opengl.c Adds module defaultOrder.
src/modules/opencl/opencl.c Adds module defaultOrder.
src/modules/netio/netio.c Adds module defaultOrder.
src/modules/mouse/mouse.c Adds module defaultOrder.
src/modules/monitor/monitor.c Adds module defaultOrder.
src/modules/memory/memory.c Adds module defaultOrder.
src/modules/media/media.c Adds module defaultOrder.
src/modules/localip/localip.c Adds module defaultOrder.
src/modules/locale/locale.c Adds module defaultOrder.
src/modules/loadavg/loadavg.c Adds module defaultOrder.
src/modules/lm/lm.c Adds module defaultOrder.
src/modules/keyboard/keyboard.c Adds module defaultOrder.
src/modules/kernel/kernel.c Adds module defaultOrder.
src/modules/initsystem/initsystem.c Adds module defaultOrder.
src/modules/icons/icons.c Adds module defaultOrder.
src/modules/host/host.c Adds module defaultOrder.
src/modules/gpu/gpu.c Adds module defaultOrder.
src/modules/gamepad/gamepad.c Adds module defaultOrder.
src/modules/font/font.c Adds module defaultOrder.
src/modules/editor/editor.c Adds module defaultOrder.
src/modules/dns/dns.c Adds module defaultOrder.
src/modules/display/display.c Adds module defaultOrder.
src/modules/diskio/diskio.c Adds module defaultOrder.
src/modules/disk/disk.c Adds module defaultOrder.
src/modules/de/de.c Adds module defaultOrder.
src/modules/datetime/datetime.c Adds module defaultOrder.
src/modules/cursor/cursor.c Adds module defaultOrder.
src/modules/cpuusage/cpuusage.c Adds module defaultOrder.
src/modules/cpucache/cpucache.c Adds module defaultOrder.
src/modules/cpu/cpu.c Adds module defaultOrder.
src/modules/command/command.c Adjusts initializer formatting (no .defaultOrder added here).
src/modules/colors/colors.c Adds module defaultOrder.
src/modules/codec/codec.c Adds module defaultOrder.
src/modules/chassis/chassis.c Adds module defaultOrder.
src/modules/camera/camera.c Fixes cleanup of newly tracked vendor field; adds module defaultOrder.
src/modules/btrfs/btrfs.c Adds module defaultOrder.
src/modules/brightness/brightness.c Adds module defaultOrder.
src/modules/break/break.c Adds module defaultOrder.
src/modules/bootmgr/bootmgr.c Adds module defaultOrder.
src/modules/board/board.c Adds module defaultOrder.
src/modules/bluetoothradio/bluetoothradio.c Adds module defaultOrder.
src/modules/bluetooth/bluetooth.c Adds module defaultOrder.
src/modules/bios/bios.c Adds module defaultOrder.
src/modules/battery/battery.c Changes battery status to list/array; adds module defaultOrder.
src/logo/ascii/m/magpieos.txt Removes logo asset.
src/logo/ascii/m/magix.txt Removes logo asset.
src/logo/ascii/m.inc Removes Magix/MagpieOS logo registrations.
src/logo/ascii/h/hypros.txt Removes logo asset.
src/logo/ascii/h.inc Removes HyprOS logo registration.
src/logo/ascii/f/furreto.txt Removes logo asset.
src/logo/ascii/f.inc Removes Furreto logo registration.
src/logo/ascii/e/emperoros.txt Removes logo asset.
src/logo/ascii/e.inc Removes EmperorOS logo registration.
src/fastfetch.c Implements interactive --gen-config; adds --watch; adjusts config writing behavior.
src/detection/theme/theme_windows.c Uses display server state to report “Basic” theme when DWM is disabled.
src/detection/terminalshell/terminalshell.c Adjusts fish version parsing to handle localized output.
src/detection/terminalfont/terminalfont.c Improves Ghostty/Alacritty config parsing behavior and performance.
src/detection/publicip/publicip.c Fixes URL path splitting without mutating raw buffer incorrectly.
src/detection/os/os_linux.c Fixes Ubuntu Studio Core detection heuristic.
src/detection/opengl/opengl_shared.c Adjusts EGL platform display call argument.
src/detection/libc/libc_windows.cpp Fixes MSVCRT version formatting and minor refactor.
src/detection/initsystem/initsystem_windows.c Adds Windows init system detection via NtQuerySystemInformation.
src/detection/gpu/gpu_windows.c Expands Windows GPU detection (friendly name/vendor, indirect adapters, caching).
src/detection/gpu/gpu_apple.c Adds Apple M5 GPU temperature support.
src/detection/displayserver/linux/wayland/wayland.h Adds dispatch-timeout support and “done” tracking.
src/detection/displayserver/linux/wayland/wayland.c Loads dispatch symbols lazily; swaps stub listener use.
src/detection/displayserver/linux/wayland/kde-output.c Adds “done” listener and avoids late-event missing outputs.
src/detection/displayserver/linux/wayland/global-output.c Switches to typed listener struct; adds “done” wait path.
src/detection/cpu/cpu_apple.c Adds Apple M5 CPU temperature support.
src/detection/codec/codec_apple.c Improves codec enumeration/decoder registration on macOS.
src/common/unused.h Reworks unused callback helper.
src/common/option.h Adds defaultOrder to module base info.
src/common/mallocHelper.h Adds C++ global new/delete overrides and aligned allocation helpers.
src/common/library.h Adds “lazy” symbol load macro.
src/common/impl/networking_windows.c Reworks async wait logic; adds response size limit; relaxes HTTP 200 checks.
src/common/impl/networking_linux.c Adds response size limit; relaxes HTTP 200 checks.
src/common/impl/netif_gnu.c Fixes auto-close macro placement with FILE*.
src/common/impl/jsonconfig.c Aligns option buffer for module option parsing.
src/common/impl/genconfig.c Adds interactive config generation TUI implementation.
src/common/impl/FFstrbuf.c Adds overflow checks and adjusts fixed-length allocation behavior.
src/common/impl/commandoption.c Aligns option buffer for structure parsing.
src/common/impl/base64.c Fixes base64 encoding on big-endian hosts.
src/common/genconfig.h Declares interactive config generator entrypoint.
src/common/FFstrbuf.h Uses ffStrbufEnsureFree consistently in inline append helpers.
src/common/FFlist.h Adds list insert/remove-at helpers and macros.
src/common/ffdata.h Tracks interactive gen-config mode flag.
src/common/apple/version.m Fixes memcpy length cast.
src/common/apple/smc_temps.h Adds M5 temp sensor enum values.
src/common/apple/smc_temps.c Adds M5 sensor keys and extra memory proximity sensors.
README.md Expands package-count FAQ details (apt + rpm).
doc/json_schema.json Removes general.preRun schema entry.
doc/help.json Updates CLI help: adds --watch; changes --gen-config description and removes old variants.
CMakeLists.txt Bumps version to 2.67.0; adds musl detection tweak; adds genconfig source; switches Windows init system impl.
CHANGELOG.md Adds 2.67.0 release notes and breaking changes.
.github/workflows/ci.yml Adds loong64 build; disables Haiku job.
.github/workflows/build-linux-loong64.yml Adds loong64 reusable build workflow.
.github/workflows/build-freebsd-amd64.yml Fixes FreeBSD dependency list.
.github/ISSUE_TEMPLATE/logo_request.yml Tightens logo request requirements and guidance.

Comment thread src/common/unused.h
Comment on lines +3 to +4
static inline void ffUnused(...) { /* no-op */ }
#define FF_UNUSED(...) ffUnused(__VA_ARGS__);
Comment on lines +92 to +96
uint32_t index = ffStrbufFirstIndexC(version, ' '); // skip "fish,"
index = ffStrbufNextIndexC(version, index + 1, ' '); // skip "version"
while (!ffCharIsDigit(version->chars[index + 1])) {
index = ffStrbufNextIndexC(version, index + 1, ' '); // skip "version"
if (index == version->length) {
return false;
Comment thread src/common/mallocHelper.h Outdated
Comment on lines +145 to +150
void* operator new(size_t size, std::align_val_t alignment) {
if (void* ptr = ffAlignedAlloc(size, alignment)) {
return ptr;
}
std::abort();
}
Comment thread src/common/mallocHelper.h Outdated
Comment on lines +72 to +83
[[gnu::always_inline]]
void* operator new(size_t size) {
if (void* ptr = ::malloc(size)) [[likely]] {
return ptr;
}
std::abort();
}

[[gnu::always_inline]]
void operator delete(void* ptr) noexcept {
::free(ptr);
}
Comment thread src/detection/initsystem/initsystem_windows.c Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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 131 out of 131 changed files in this pull request and generated 2 comments.

Suppressed comments (2)

src/common/impl/genconfig.c:192

  • collectModuleInfos currently skips modules with defaultOrder == 0, which excludes valid modules that don't set this new field (e.g. ffCommandModuleInfo, ffCustomModuleInfo). That makes them unavailable in the interactive config UI.

Collect all modules here, and handle ordering separately in the comparator.

        for (FFModuleBaseInfo** it = ffModuleInfos[i]; *it; ++it) {
            if ((*it)->defaultOrder == 0) {
                continue;
            }
            *(FFModuleBaseInfo**) ffListAdd(modules, sizeof(FFModuleBaseInfo*)) = *it;

src/common/impl/genconfig.c:182

  • compareModuleInfo sorts by defaultOrder directly; modules that don't specify a defaultOrder will have it default-initialized to 0, causing them to sort before everything else. If 0 means “unspecified”, it should sort after all explicit orders to keep a stable, predictable default UI ordering.
    const FFModuleBaseInfo* const* ma = (const FFModuleBaseInfo* const*) a;
    const FFModuleBaseInfo* const* mb = (const FFModuleBaseInfo* const*) b;
    if ((*ma)->defaultOrder != (*mb)->defaultOrder) {
        return (int) (*ma)->defaultOrder - (int) (*mb)->defaultOrder;
    }
    return strcmp((*ma)->name, (*mb)->name);

Comment thread src/fastfetch.c
Comment on lines +20 to +24
#include <unistd.h>
#else
#include <windows.h>
#include "common/windows/nt.h"
#endif
Comment on lines +229 to +233
IO_STATUS_BLOCK cancelIosb = {};
if (NT_SUCCESS(NtCancelIoFileEx((HANDLE) state->sockfd, (PIO_STATUS_BLOCK) &state->overlapped, &cancelIosb))) {
NtWaitForSingleObject(state->overlapped.hEvent, TRUE, &(LARGE_INTEGER) { .QuadPart = (int64_t) 10 * -10000 });
}
NtClose(state->overlapped.hEvent);
@CarterLi
CarterLi merged commit 56950e7 into master Aug 5, 2026
48 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.

7 participants