Anderungsprotokoll
v1.0.0 · Native Windows-Probes, Daemons unter Windows und Abhängigkeits-Refresh · 2026-09-18
- Native Windows-Probes: CPU, Datum, Akku und GPU werden über die Win32-API (
platform/windows/) gelesen statt über sysinfos PDH-Zähler und PowerShell/wmic-Subprozesse — der Standard-Fetch ging auf einem 16-Thread-Rechner von ~575 ms auf ~33 ms (warm), mit identischen Werten - Daemons unter Windows: Logo-Animations- und Live-Statistik-Daemon sind jetzt implementiert (
ui/win_daemon.rs); der Worker teilt die Konsole,--daemon-stop/--daemon-live-stopsignalisieren sein Stop-Event und er beendet sich selbst, wenn die Shell die Konsole verlässt - Daemons beenden sich beim Schließen des Terminals auf allen Plattformen: sie pollen stdout auf den Pty-Hangup statt als Waisen in ein totes Pty zu rendern, stellen das Terminal wieder her und entfernen ihre PID-/Zeilen-Dateien
- Disk-Modul im Live-Daemon korrigiert auf allen Plattformen: die Standardlisten sagten
"disks", während Probe und Renderer nur"disk"kennen xfetch | headstürzt nicht mehr ab: Schreibfehler auf stdout werden im statischen Renderpfad ignoriert, wie bei Daemons und Animation- Sicherheitsnetz für Gäste: native und wasm-Plugins, -Effekte und -Erweiterungen nutzen 30 s Timeout, wenn
timeout_secsfehlt (0deaktiviert das Limit) - Modulfarben: akzeptieren jetzt Namen, 256-Farben-Indizes (
"196") und Hex-RGB ("#FF8800"), dieselben Formate wie die Logofarbe - Konfigurationen mit UTF-8-BOM werden jetzt geparst (PowerShell 5.1
Set-Content -Encoding UTF8und Notepad schreiben eins), statt still auf die Standardwerte zurückzufallen - Atomare Installer-Schreibvorgänge: Binaries und Manifeste werden gestaged und über das Ziel umbenannt;
install-prebuilt.shwählt den musl-Build auf musl-Distributionen (Alpine) - Abhängigkeits-Refresh:
rustls0.23.43 → 0.23.45 behebt RUSTSEC-2026-0285; Major-Updates ohne Codeänderungen fürbase640.23,sha20.11,dirs7 undsysinfo0.39;ureqbleibt auf 2.x (v3 braucht eine Migration) - 218 Tests plus 6 wasm-End-to-End-Tests, Clippy sauber, null Hinweise in der Lockfile
v0.9.0 · WebAssembly-Gaeste, Host-Aufrufe und nützliche Beispiele · 2026-09-12
- Sandboxed WebAssembly Runtime: Plugins, Effekte und Erweiterungen können
.wasm-Artefakte (Core-Module und Komponenten) sein, ausgeführt von wasmtime mit im Manifest deklarierten, standardmäßig verweigerten Fähigkeiten (HTTP, Exec, Dateisystem, Umgebung) und Limits für Zeit, Speicher und Ausgabe - Dasselbe Protokoll: Core-Module behalten den JSON-Vertrag über stdin/stdout; Komponenten exportieren
runaus der WIT-Weltxfetch:runtimemit typisierten Host-Imports - Werkzeuge:
xfetch wasm inspect,xfetch wasm runundxfetch wasm wit; die Installer akzeptieren vorgebaute Artefakte,build-Befehle,artifact_urloder direkte URLs - Neues Crate
xfetch-guest-apifür Rust-Core-Gäste und wasm-kompatibleswith_timeoutin allen API-Crates - Nuetzliche Beispiele in vier Sprachen: Krypto-Preise, IP-Geolokation, Pacman-Paketzahlen und
/proc-Werte, dazu die Erweiterungen Nachtmodus, Update-Fusszeile und lokalisierte Labels - Der
swap-Glyph generierter Konfigurationen wurde korrigiert und restliche Emojis aus Presets und Wetter-Dokumentation entfernt - Gast-Logs werden standardmäßig gefiltert (nur
warn/errorwerden gezeigt);XFETCH_WASM_LOG_LEVEL(off..debug) steuert die Schwelle - Neuer Befehl
xfetch update: prueft GitHub-Releases, verifiziert Prebuilt-Downloads per SHA256 und ersetzt nur erkannte Prebuilt-Installationen (cargo installund Paketmanager bleiben unberuehrt) - Windows-Prebuilt-Installer (
install-prebuilt.ps1): laedt das Release-ZIP, prueft SHA256 und installiert es pro Benutzer - Wiki-Seiten fuer die WebAssembly-Runtime und die neuen Gaeste auf Englisch, Spanisch und Deutsch
- 195 Tests plus CLI-End-to-End-Wasm-Tests, clippy sauber
v0.8.0 · Crates.io-Installation, schlankere Abhängigkeiten und HTTPS-Public-IP · 2026-08-21
- crates.io:
cargo install xfetch-cliwird jetzt unterstützt - Verschlankter Abhängigkeitsbaum: die AVIF-Encoder-Kette (
ravif/rav1e/rayon) wurde entfernt — von 196 auf 133 Crates, null Schwachstellen;image-Codecs auf die vom Logo-Renderer genutzten beschränkt; API-Crates auf einen festen Commit gepinnt - Public IP über HTTPS: die Public-IP-Sonden verwenden jetzt TLS (Mozilla-Roots) mit strenger
IpAddr-Validierung, 64-Byte-Limit und ohne Redirects - Härtung des Logo-Katalogs: heruntergeladene Logo-Grafiken lehnen ANSI-Escape-Sequenzen und Steuerzeichen ab und fallen auf das Standardlogo zurück
- 147 Tests, Clippy sauber
v0.7.0 · Konfigurierbare Labels und Wertformate · 2026-08-20
labels-Konfigurationsmap: benennt den pro Modul angezeigten Schlüssel in jedem Layout um; eine leere Zeichenkette verbirgt den Schlüssel (nur-Icon-Zeile); Farben verwenden weiterhin den rohen Modulschlüsselformats-Konfigurationsmap: Wertvorlagen mit{feld}-Platzhaltern pro Modul — CPU{brand}/{model}/{cores}/{freq}, GPU{name}/{vendor}/{model}/{vram}, Speicher/Swap{used}/{total}/{percent}, Disk{fs}, os{distro}/{version}/{arch}/{wsl}, packages ein Feld pro Manager plus{count}/{manager}/{managers}, Akku{percent}/{state}, Uptime{days}/{hours}/{mins}, datetime{date}/{time}; unbekannte Felder werden leer gerendert,{{/}}escapen geschweifte Klammern- Akku-Fix (Linux): Peripherie-Akkus (z. B. Logitech HID++) werden nicht mehr als Systemakkus gezählt
- 141 Tests, Clippy sauber
v0.6.0 · Themes, Live-Statistik-Daemon und Plattform-Modularisierung · 2026-08-19
- Theme-Format vereinfacht:
theme setandert nur dentheme-Schlussel und erhalt Kommentare und Formatierung; Themes tragen keineiconsmehr (Schriftwahl des Benutzers, wird aus den Standardwerten befullt); neue Felderlogo_colorundlogo_colors(pro Zeile) - Live-Statistik-Daemon (
daemon_live): fixiert die Ausgabe oben im Terminal und fragt alledaemon_live_refreshSekunden eine leichte Teilmenge der Module neu ab; Hot Reload uberdaemon_live_reload(uberwacht Config und Theme); Flags--no-daemon-live,--daemon-live-stop,--daemon-live-reload - Windows:
wingetzahlt nur uber winget installierte Pakete; Chocolatey verließ die Kern-Probes (kommt als Plugin zuruck); Shell-Erkennung lauft uber die Eltern-Prozesskette (cmd.exe wird nicht mehr als PowerShell gemeldet); Versions-zu-Logo-Zuordnung nutzt Build-Nummern - Plugin- und Erweiterungs-Timeouts: neue
subprocess.rsmit begrenztem Pipe-Drain — Kindprozesse, die die Pipe halten, konnen xfetch nicht mehr aufhangen; optionalestimeout_secspro Plugin/Erweiterung in der Config;with_timeout-Helfer in den API-Crates - Plattform-Modularisierung: macOS und Linux spiegeln die Windows-Struktur (
platform/<os>/version.rs,software.rs,network.rs, ...); Arch trenntpacman(offiziell) vom neuenaur-Eintrag (pacman -Qm); Gentoo-portage-Zahl wird angezeigt; WSL-bewusste Darstellung - Effekte: Intro-Animationen uber den neuen
effects-Schlussel und die Befehlexfetch effects install/list/remove
v0.5.0 · Performance, Paketmanager und Distro-Logos · 2026-08-18
- Performance-Runden: Paketzahlen direkt aus den Distro-Datenbanken (dpkg/pacman/apk/flatpak, Mikrosekunden statt Subprozessen); PATH-Prufung vor dem Spawnen von Probes; battery/datetime in den parallelen Abschnitt verschoben; Public-IP-Hosts parallel abgefragt; Probes erst alle spawnen, dann joinen (kalter Fetch 8.7 s → 0.05 s auf WSL)
- Distro-Logos in
--gen-config: holt das ASCII-Logo des erkannten OS/Distro aus dem neuen Katalogxfetch-cli/logos, mit--logo <id>-Override undXFETCH_LOGOS_URLfur Forks - Neues Flag
--layout <name>fur--gen-config; der Ordnerconfigs/wurde entfernt — die Vorlage ist jetzt im Binary eingebettet und die Installer erzeugen die erste Config mitxfetch --gen-config - WSL-Darstellung: neuer Schlussel
os_wsl_style(off/minimal/full) - Weitere Paketmanager: Void (xbps-Datenbank) und Gentoo (portage) unterstutzt; unbekannte Config-Schlussel werden ignoriert
- Windows:
winget-Unterstutzung hinzugefugt;choco list --local-onlyzahlt nicht mehr falsch;scoop listzahlt Zeilen korrekt - Parallele Plugins: Plugins laufen in parallelen Threads — API unverandert, kein Plugin muss angepasst werden
v0.4.0 · Daemon-Modus, neue Layouts und Hang-Fixes · 2026-08-17
- Daemon-Modus (
--daemon): fixiert das animierte Logo in einem festen Scrollbereich und beendet sich sofort; stoppen mit--daemon-stop - Externe Befehls-Timeouts:
run_cmd_with_timeout()beendet hangende Befehle — snap ohne snapd-Daemon blockiert den Fetch nicht mehr; Timeouts pro Befehl fur Paketmanager und Hardware-Probes - Plattformtrennung: neue Struktur
src/info/platform/{linux,macos,windows}/mit gemeinsamem Vertrag und Mechanik inshared/ - Neue Layouts:
section-box(umrandete Boxen pro Modulgruppe) undcustom-x(vollstandig anpassbare Rahmenvorlagen mit{fill}/{title}, Breite auto/full/fest) - Neue Optionen:
show_keys,key_width,logo_color(Namen, 256-Farb-Indizes und Hex-RGB),logo_padding,logo_type(auto/ascii/image) - XDG_CONFIG_HOME-Unterstutzung (macOS-Fix) und lokale CI-Skripte (
scripts/ci.sh,scripts/ci.ps1)
v0.3.0 · Bild-Rendering und Erweiterungen · 2026-07-25
- Kitty Bild-Rendering uberarbeitet:
logo_kittyToggle (natives Protokoll vs Half-Block),logo_gapfur konfigurierbaren Bild-Text-Abstand,logo_width/logo_heightfur explizite Grose, und auto-responsive Breite (28% des Terminals, clamp 12–42 Spalten) - Cursor-Positionierung korrigiert:
MoveUp/MoveToColumndurchSavePosition/RestorePositionersetzt fur korrektes Verhalten bei allen Bildprotokollen - Stacked-Layout korrigiert:
print_stacked_output()fur reine Bildlogos (ohne ASCII-Text) repariert - Erweiterungs-API:
api/crates/extension-api/erstellt —ConfigProviderRequest/ConfigProviderResponseProtokoll,config_providers[]Feld, stdin/stdout JSON-Kommunikation - config-roulette Erweiterung: Wahlt zufallige oder tagliche Konfiguration aus einer JSON-Routenliste, unterstutzt 100+ Routen
- layout-override Erweiterung: Erzwingt Layout und/oder Module beim Konfigurationsladen
- Erweiterungs-CLI: Befehle
xfetch extension install/list/removehinzugefugt - 100 bildbasierte Konfigurationen fur config-roulette mit
logo_gap: 3undlogo_kitty: true
Phase 0 · Grundlage und Kern
- Rust-Projekt mit Abhangigkeiten initialisieren
- Plattformubergreifende OS-Erkennung (Linux, Windows, macOS)
- Modul zur Systeminformationserfassung
- Konfigurationssystem mit JSONC-Unterstutzung
- UI-Rendering-Engine mit crossterm
Phase 1 · Systeminformationsmodule
- OS-Name & Architektur anzeigen
- Kernel-Version erkennen
- Hostname auflosen
- Shell erkennen und anzeigen
- Terminalemulator erkennen
- CPU-Modell & Frequenzinformationen
- GPU-Erkennung (diskret & integriert)
- Arbeitsspeicher- und RAM-Auslastung
- Festplattennutzungsstatistiken
- Akkustand und -prozentsatz
- Systemlaufzeit berechnen
- Paketanzahl fur mehrere Verwaltungsprogramme (pacman, dpkg, scoop)
- Desktop-Umgebung / Fenstermanager erkennen
Phase 2 · Visuelle Anpassung und Layouts
- Benutzerdefinierte ASCII-Kunst aus Textdateien
- Bild-/SVG-Logo-Unterstutzung uber viuer
- ANSI-Farbcodes in ASCII-Logos
- Symbolanpassung pro Modul (Nerd Fonts)
- Farbanpassung pro Modul
- Standardlayout (nebeneinander)
- Pac-Man-Layout mit benutzerdefiniertem Kopf-/Fußbereich
- Seitenblock-Layout
- Baum-Layout
- Abschnittslayout
- Farbpalette mit Stiloptionen
Phase 3 · Dokumentation und Beispiele
- Installationsanleitung
- Konfigurationsanleitung
- Schnellinstallationsskript fur Linux/macOS
- PowerShell-Installationsskript fur Windows
- 20+ Beispielkonfigurationen
- Beispiel-Logos (Text und SVG)
- Deinstallationsskripte
- Layout-Dokumentation
Phase 4 · Paketverwalter-Erweiterung
- RPM-Paketverwalter-Unterstutzung (Fedora, RHEL)
- APK-Paketverwalter-Unterstutzung (Alpine)
- Nix-Paketverwalter-Unterstutzung
- Homebrew-Paketverwalter-Unterstutzung (macOS/Linux)
- Chocolatey-Paketverwalter-Unterstutzung (Windows)
- Mehrere installierte Paketverwalter erkennen
- Leistungsoptimierung der Paketanzahlerkennung
Phase 5 · Netzwerk und Konnektivitat
- Lokale IP-Adresserkennung
- Offentliche IP-Adresse abrufen (mit Datenschutzoption)
- IPv6-Unterstutzung
- Netzwerkschnittstelleninformationen anzeigen
- Option zum Deaktivieren des IP-Abrufs
Phase 6 · Erweiterte Module
- Musikplayer-Integration (MPD-Unterstutzung)
- Spotify-Titelanzeige
- Wettermodul mit Standort-API
- Zeitzonen- und Weltuhranzeige
- Benutzerinfo und Anmeldestatus
- Bildschirmauflosung und Bildwiederholfrequenz
- Themen- und Farbschemaerkennung
Phase 7 · Zusatzliche Layouts
- Kompaktes Layout
- Horizontales Layout
- Unteres Layout
- Minimales Layout (nur Text)
- Layout-Vorschau-Dokumentation
Phase 8 · Leistungsoptimierung
- Parallelisierung langsamer Hardwareabfragen
- Zwischenspeicherung von Moduldaten
- GPU-Erkennung fur Multi-GPU-Systeme optimiert
- Nachladen fur optionale Module
- Leistungsmessung und -profilierung
- Modularisierte Dateistruktur
Phase 9 · CI/CD und Vertrieb
- GitHub Actions fur automatisierte Builds
- Binar-Releases fur Linux x86_64, macOS (Intel & ARM) und Windows
- AUR-Paket fur Arch Linux
- Homebrew-Tap fur macOS
- Installationsskripte fur alle Plattformen
- Automatisierte Rust-Installation in install.ps1 fur Windows
Phase 10 · Gemeinschaft und Okosystem
- Themen-Repository und Registry
- Theme-Download-Manager (Plugin)
- Online-Theme-Vorschau-Tool
- Gemeinschaftsprozess fur Theme-Beitrage
- Plugin-System fur benutzerdefinierte Module
- Issue-Templates fur xfetch, Plugins, Konfigurationen und API
- Beitragsrichtlinien
Phase 11 · Tests und Qualitätssicherung
- Unit-Tests fur das Info-Modul
- Unit-Tests fur das Konfigurationsmodul
- Integrationstests fur Layouts
- 41 Tests insgesamt, alle bestanden
Phase 12 · Erweiterte Funktionen
Aus Respekt vor der Privatsphare unserer Benutzer: Wir haben uns entschlossen, selbst die Moglichkeit auszuschließen. Wir behalten dies als Aufzeichnung dessen, was unter keinen Umstanden in der Zukunft getan werden sollte.
Phase 13 · Dokumentation und Marketing
- Umfassendes Benutzerhandbuch
- Projektwebsite mit Showcase
- Entwicklerdokumentation