- Added four WebAssembly info providers, one per language, each with an
xfetch-plugin.jsonmanifest and capabilities declared explicitly:wasm-crypto— Rust core module quoting BTC/ETH/... through the allowlisted HTTP host call.wasm-ip-geo— Python component (componentize-py) showing public IP, location, network and timezone from ipapi.co.wasm-pacman— Go core module counting repository vs AUR packages via allowlistedpacmanexec, using the Go wasm host bridge (//go:wasmimport///go:wasmexport).wasm-proc— freestanding C core module (no wasi-libc) reading load average, uptime and memory from a read-only/procpreopen.
- Added
scripts/ci-wasm.sh: local CI that builds every example with whichever toolchains are installed. - Fixed the broken swap glyph in the animate-logo
layout_dots_full.jsoncpreset (U+FFFD replaced withnf-md-swap_horizontal).
- All plugins now wrap their work in
with_timeoutwith an own runtime budget (2–25 s); on timeout they respond with fallback lines or exit gracefully, so a hung plugin can never hang xfetch. - A plugin without a runtime limit is rejected — enforced by CI (
ci/unix.sh,ci/windows.ps1, running on Linux, macOS and Windows). PRs must pass CI. - Requires
xfetch-plugin-apiwithwith_timeout(see theapirepo).
animate-logo— logo animation for the daemonchocolatey— count of packages installed via Chocolatey (Windows)display-resolution— screen resolutiondocker— container statsgithub-stats— GitHub profile statisticsmusic-player— MPD/Spotify statustemperature— CPU/thermal zone temperaturestheme-detection— GTK theme detectiontheme-manager— theme registry managementtimezone— local time and UTC offsetuser-info— user, host and groupsweather— weather via wttr.in
Each plugin has its own CHANGELOG with its specific budget and changes.