Anderungsprotokoll

Anderungsprotokoll

v0.8.0 · Crates.io-Installation, schlankere Abhängigkeiten und HTTPS-Public-IP · 2026-08-21

  • crates.io: cargo install xfetch-cli wird 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üssel
  • formats-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 set andert nur den theme-Schlussel und erhalt Kommentare und Formatierung; Themes tragen keine icons mehr (Schriftwahl des Benutzers, wird aus den Standardwerten befullt); neue Felder logo_color und logo_colors (pro Zeile)
  • Live-Statistik-Daemon (daemon_live): fixiert die Ausgabe oben im Terminal und fragt alle daemon_live_refresh Sekunden eine leichte Teilmenge der Module neu ab; Hot Reload uber daemon_live_reload (uberwacht Config und Theme); Flags --no-daemon-live, --daemon-live-stop, --daemon-live-reload
  • Windows: winget zahlt 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.rs mit begrenztem Pipe-Drain — Kindprozesse, die die Pipe halten, konnen xfetch nicht mehr aufhangen; optionales timeout_secs pro 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 trennt pacman (offiziell) vom neuen aur-Eintrag (pacman -Qm); Gentoo-portage-Zahl wird angezeigt; WSL-bewusste Darstellung
  • Effekte: Intro-Animationen uber den neuen effects-Schlussel und die Befehle xfetch 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 Katalog xfetch-cli/logos, mit --logo <id>-Override und XFETCH_LOGOS_URL fur Forks
  • Neues Flag --layout <name> fur --gen-config; der Ordner configs/ wurde entfernt — die Vorlage ist jetzt im Binary eingebettet und die Installer erzeugen die erste Config mit xfetch --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-only zahlt nicht mehr falsch; scoop list zahlt 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 in shared/
  • Neue Layouts: section-box (umrandete Boxen pro Modulgruppe) und custom-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_kitty Toggle (natives Protokoll vs Half-Block), logo_gap fur konfigurierbaren Bild-Text-Abstand, logo_width/logo_height fur explizite Grose, und auto-responsive Breite (28% des Terminals, clamp 12–42 Spalten)
  • Cursor-Positionierung korrigiert: MoveUp/MoveToColumn durch SavePosition/RestorePosition ersetzt 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/ConfigProviderResponse Protokoll, 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/remove hinzugefugt
  • 100 bildbasierte Konfigurationen fur config-roulette mit logo_gap: 3 und logo_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