Releases: DolbyDAX2/LlamaTray
v1.1.3 - Stability Refactor & Crash Prevention Update
🌐 v1.1.3 Release Notes / Sürüm Notları
🇬🇧 English
v1.1.3 - Stability Refactor & Crash Prevention Update
This update is a comprehensive stability and code quality release, derived from three independent code review reports. It focuses on eliminating crash risks, memory leaks, performance bottlenecks, and security vulnerabilities without changing any UI functionality.
Critical Fixes:
- Unified
_tray_instanceArchitecture: Resolved a critical global variable conflict where_tray_instancewas defined in two places (ui.pyandui_utils.py) with different references, causingcleanup_tray_icon()andcleanup_on_exit()to silently fail. Now a single centralized reference inui_utils.pyis used, ensuring reliable tray icon and server process cleanup on application exit or crash. - Removed Fragile
sys.modulesAccess: Eliminated all race-condition-prone dynamic module lookups viasys.modules['LlamaTray.ui']incleanup_tray_icon(),cleanup_on_exit(), andAboutDialog. All components now use the centralizedui_utils._tray_instancereference directly. - Duplicate Cleanup Registration Prevented: Removed the duplicate
atexit.register(cleanup_on_exit)mechanism. Cleanup is now handled exclusively through the QtaboutToQuitsignal, preventing double-execution and potential crashes. - closeEvent NoneType Crash Prevention: Added
callable(original_close_event)check and safeQMainWindow.closeEvent(self.window, event)delegation to preventTypeError: 'NoneType' object is not callablecrashes when closing the window. - QComboBox Validator Fix: Fixed
QComboBox.setValidator()which silently fails in PyQt6. Now correctly usesself.context_size_combobox.lineEdit().setValidator(QIntValidator(512, 1000000))to properly validate context size input.
Server Process Management Hardening:
- Shell Injection Prevention: Replaced
["bash", "-c", f"lsof -ti:{port} | xargs kill -9"]with safe list-basedsubprocess.run(["lsof", "-ti", str(port)])calls, eliminating shell injection risk. - Graceful Process Termination: Port cleanup now sends
SIGTERMfirst, polls for port release with 0.5s intervals (up to 3 seconds), and only falls back toSIGKILLif the process doesn't respond gracefully. find_llama_server()Caching: Results ofshutil.which("llama-server")are now cached at module level, eliminating redundantwhichlookups instart_server().
Performance Optimizations:
- Non-blocking CPU Monitoring: Changed
psutil.cpu_percent(interval=0.1)tointerval=0, removing the 100ms UI thread blockage that occurred every second during system monitor updates. - NVML Resource Leak Fix: Added
pynvml.nvmlShutdown()call inSystemMonitor.__del__()and a dedicated_shutdown_gpu()method, preventing NVIDIA driver resource leaks on application exit.
Desktop Environment Compatibility:
- Dynamic QT Theme Detection: Replaced hardcoded
os.environ["QT_QPA_PLATFORM_THEME"] = "kde"with dynamic detection usingXDG_CURRENT_DESKTOP. Now correctly sets the theme for KDE, GNOME, or falls back to Qt defaults for other environments (XFCE, i3, Sway, etc.).
Code Quality Cleanup:
- Removed Unused Imports: Cleaned up unused
import jsonandimport osinprofile_manager.py. - Version Bump: All version strings updated to
v1.1.3.
🇹🇷 Türkçe
v1.1.3 - Kararlılık Refactoring ve Çökme Önleme Güncellemesi
Bu güncelleme, üç bağımsız kod inceleme raporundan elde edilen bulgular doğrultusunda hazırlanmış kapsamlı bir kararlılık ve kod kalitesi sürümüdür. Herhangi bir UI işlevselliğini değiştirmeden çökme risklerini, bellek sızıntılarını, performans darboğazlarını ve güvenlik açıklarını ortadan kaldırmaya odaklanır.
Kritik Düzeltmeler:
- Birleşik
_tray_instanceMimarisi:_tray_instancedeğişkeninin iki ayrı yerde (ui.pyveui_utils.py) farklı referanslarla tanımlanmasından kaynaklanan kritik global değişken çakışması giderildi. Artıkui_utils.py'deki tek bir merkezi referans kullanılarak, uygulama kapanışında veya çökmesinde tepsi ikonu ve sunucu sürecinin güvenilir şekilde temizlenmesi sağlanıyor. - Kırılgan
sys.modulesErişimi Kaldırıldı:cleanup_tray_icon(),cleanup_on_exit()veAboutDialogiçindeki race-condition riskli tüm dinamik modül okumaları (sys.modules['LlamaTray.ui']) temizlendi. Tüm bileşenler artık doğrudan merkeziui_utils._tray_instancereferansını kullanıyor. - Çifte Temizlik Kaydı Önlendi: Yinelenen
atexit.register(cleanup_on_exit)mekanizması kaldırıldı. Temizlik artık yalnızca QtaboutToQuitsinyali ile yönetilerek çift çalıştırma ve olası çökmeler önleniyor. - closeEvent NoneType Çökme Önleme: Pencere kapatılırken
TypeError: 'NoneType' object is not callablehatasıyla çökmeyi önlemek içincallable(original_close_event)kontrolü ve güvenliQMainWindow.closeEvent(self.window, event)delegasyonu eklendi. - QComboBox Validator Düzeltmesi: PyQt6'da sessizce başarısız olan
QComboBox.setValidator()kullanımı düzeltildi. Artıkself.context_size_combobox.lineEdit().setValidator(QIntValidator(512, 1000000))ile context size girişi doğru şekilde doğrulanıyor.
Sunucu Süreç Yönetimi Güçlendirmesi:
- Shell Injection Önlemi:
["bash", "-c", f"lsof -ti:{port} | xargs kill -9"]yapısı güvenli liste tabanlısubprocess.run(["lsof", "-ti", str(port)])çağrılarıyla değiştirilerek shell injection riski tamamen ortadan kaldırıldı. - Kademeli Süreç Sonlandırma: Port temizliği artık önce
SIGTERMgönderiyor, 0.5 saniye aralıklarla portun boşalmasını poll ediyor (maksimum 3 saniye) ve sadece süreç yanıt vermezseSIGKILLaşamasına geçiyor. find_llama_server()Önbellekleme:shutil.which("llama-server")sonucu modül seviyesinde önbelleğe alınarakstart_server()içindeki gereksiz ikincilwhicharamaları ortadan kaldırıldı.
Performans İyileştirmeleri:
- Bloke Etmeyen CPU İzleme:
psutil.cpu_percent(interval=0.1)değeriinterval=0olarak değiştirilerek sistem monitörü güncellemeleri sırasında her saniye yaşanan 100ms'lik UI thread blokajı kaldırıldı. - NVML Kaynak Sızıntısı Düzeltmesi:
SystemMonitor.__del__()içinepynvml.nvmlShutdown()çağrısı ve özel_shutdown_gpu()metodu eklenerek uygulama kapanışında NVIDIA sürücü kaynak sızıntısı önlendi.
Masaüstü Ortamı Uyumluluğu:
- Dinamik QT Tema Algılama: Sabit
os.environ["QT_QPA_PLATFORM_THEME"] = "kde"satırı,XDG_CURRENT_DESKTOPdeğişkenini kullanan dinamik algılama ile değiştirildi. Artık KDE, GNOME için doğru tema ayarlanıyor, diğer ortamlarda (XFCE, i3, Sway vb.) Qt varsayılanları kullanılıyor.
Kod Kalitesi Temizliği:
- Kullanılmayan Import'lar Temizlendi:
profile_manager.py'deki kullanılmayanimport jsonveimport ossatırları kaldırıldı. - Sürüm Güncellemesi: Tüm sürüm bilgileri
v1.1.3olarak güncellendi.
Full Changelog: v1.1.2...v1.1.3
v1.1.2 - Bug Fix, Cleanup & Language Compliance Update
🌐 v1.1.2 Release Notes / Sürüm Notları
🇬🇧 English
v1.1.2 - Bug Fix, Cleanup & Language Compliance Update
This update focuses on fixing critical application bugs, removing dead code, improving language consistency, and enhancing the hardware monitoring display.
What's New & Bug Fixes:
- Critical Bug Fixes: Resolved the non-functional
cleanup_tray_icon()andcleanup_on_exit()methods by fixing incorrect instance access, ensuring reliable tray icon and server cleanup on exit. Fixedmodel_pathbeing silently reset after configuration load, allowing immediate server start without re-selecting the model file. - Language Compliance: Fixed the system monitor widget labels to properly respect the selected language at runtime, eliminating hardcoded Turkish strings that persisted even after switching to English.
- Enhanced Monitoring Display: RAM and VRAM usages now show precise Gigabyte values alongside percentage progress bars, providing clearer resource insight.
- Process Management Hardening: Removed the aggressive
killall -9 llama-servercall to prevent unintended termination of other system processes. Eliminated redundantos.killcalls in the cleanup flow. - Codebase Cleanup: Removed 323 lines of dead code (
base_widget.py,main_window.py), duplicate icon files, unused imports (ctypes,signal,atexit), and a dead conditional block in the logging method for improved maintainability. - Dependencies & Warnings: Updated requirements from deprecated
pynvmltonvidia-ml-pyand suppressed relatedFutureWarningmessages for a cleaner console output.
🇹🇷 Türkçe
v1.1.2 - Hata Düzeltme, Temizlik ve Dil Uyumluluğu Güncellemesi
Bu güncelleme, kritik uygulama hatalarını gidererek, ölü kodları temizleyerek, dil tutarlılığını iyileştirerek ve donanım izleme görüntüsünü geliştirerek uygulamayı daha kararlı ve kullanıcı dostu hale getirmektedir.
Yenilikler ve Hata Düzeltmeleri:
- Kritik Hata Düzeltmeleri: Çalışmayan
cleanup_tray_icon()vecleanup_on_exit()metodları yanlış instance erişimi düzeltilerek onarıldı; böylece uygulama kapanışında tepsi ikonu ve sunucu süreci güvenilir şekilde temizleniyor. Yapılandırma yüklemesinden sonramodel_pathdeğerinin sessizce sıfırlanması sorunu giderildi; böylece uygulama yeniden başlatıldığında model dosyasını yeniden seçmeye gerek kalmadan doğrudan sunucu başlatılabiliyor. - Dil Uyumluluğu: Sistem monitörü bileşenindeki etiketlerin seçili dili çalışma anında doğru şekilde yansıtması sağlandı; İngilizce'ye geçildiğinde bile görünen Türkçe sabit metinler sorunu tamamen giderildi.
- Gelişmiş İzleme Görünümü: RAM ve VRAM kullanımları artık yüzde çubuklarının yanında Gigabyte cinsinden hassas değerlerle gösterilerek daha net kaynak bilgisi sunuyor.
- Süreç Yönetimi Güçlendirmesi: Diğer sistem süreçlerini yanlışlıkla sonlandırmayı önlemek için agresif
killall -9 llama-serverçağrısı kaldırıldı. Temizlik akışındaki gereksizos.killçağrıları da elimine edildi. - Kod Tabanı Temizliği: 323 satır ölü kod (
base_widget.py,main_window.py), yinelenen ikon dosyaları, kullanılmayan import'lar (ctypes,signal,atexit) ve log metodundaki ölü koşul bloğu temizlenerek bakım kolaylığı artırıldı. - Bağımlılıklar ve Uyarılar: Bağımlılıklar güncellenerek kullanım dışı
pynvmlpaketi yerinenvidia-ml-pyeklendi ve ilişkiliFutureWarningmesajları bastırılarak daha temiz bir konsol çıktısı sağlandı.
Full Changelog: v1.1.1...v1.1.2
v1.1.1 - System Stability and Security Update
🌐 v1.1.1 Release Notes / Sürüm Notları
🇬🇧 English
v1.1.1 - System Stability and Security Update
This update significantly improves application robustness and security by addressing critical process management vulnerabilities, enhancing hardware monitoring, and optimizing code structure.
What's New & Bug Fixes:
- Security Enhancements: Fixed a shell injection vulnerability by eliminating
shell=Truein subprocess calls and added input overflow protection for context sizes. - AMD GPU & VRAM Monitoring: Introduced precise VRAM tracking for AMD hardware via direct file checks (
mem_info_vram_used), moving away from generic assumptions. - Robust Process Management: Implemented PID-based zombie process prevention to ensure that process termination only affects intended instances, improving overall system stability.
- Exception Handling & Codebase Optimization: Enhanced error logging for hardware monitoring and refactored the UI components into a base class (
ResourceMonitorBase) to reduce code duplication and improve maintainability.
🇹🇷 Türkçe
v1.1.1 - Sistem Kararlılığı ve Güvenlik Güncellemesi
Bu güncelleme; kritik süreç yönetimi açıklarını kapatarak, donanım izleme mekanizmalarını güçlendirerek ve kod yapısını optimize ederek uygulamanın kararlılığını ve güvenliğini önemli ölçüde artırmaktadır.
Yenilikler ve Hata Düzeltmeleri:
- Güvenlik İyileştirmeleri:
shell=Truekullanımı kaldırılarak shell injection güvenlik açığı kapatıldı ve bağlam (context) boyutu için girdi taşma koruması eklendi. - AMD GPU ve VRAM İzleme: AMD donanımları için varsayımlar yerine doğrudan dosya kontrolü (
mem_info_vram_used) kullanan hassas VRAM takip yöntemi getirildi. - Güçlü Süreç Yönetimi: PID tabanlı zombi süreç engelleme mekanizması uygulandı; böylece süreç sonlandırma işlemlerinin sadece hedeflenen instance'ı etkilemesi sağlanarak sistem kararlılığı artırıldı.
- Hata Yönetimi ve Kod Optimizasyonu: Donanım izleme için detaylı hata günlükleri eklendi ve kod tekrarını azaltmak adına UI bileşenleri bir temel sınıfa (
ResourceMonitorBase) taşınarak sürdürülebilirlik iyileştirildi.
Full Changelog: v1.1.0...v1.1.1
v1.1.0 - Multilingual Support & Code Architecture Refactoring
🌐 v1.1.0 Release Notes / Sürüm Notları
🇬🇧 English
v1.1.0 - Multilingual Support & Code Architecture Refactoring
This major release introduces full English language support, a completely restructured modular codebase, and critical UI/UX improvements based on extensive code analysis.
What's New & Bug Fixes:
-
Full English Language Support: The entire application interface, configuration settings, log outputs, and notifications have been fully translated into English to provide global usability.
-
Code Architecture Refactoring (Modular UI): Decoupled the monolytic ui.py file into separate, logical modules (tabs, widgets, dialogs). Functions and business logic are kept fully intact, drastically improving code maintainability.
-
Smart Profile Verification: Added verification to check if any configuration changes were actually made before allowing a profile update, preventing accidental duplicate rewrites.
🇹🇷 Türkçe
v1.1.0 - Çok Dilli Dil Desteği ve Kod Mimarisi Yenilenmesi
Bu majör sürüm; tam İngilizce dil desteğini, tamamen yeniden yapılandırılmış modüler bir kod tabanını ve kapsamlı kod analizine dayalı kritik UI/UX iyileştirmelerini içermektedir.
Yenilikler ve Hata Düzeltmeleri:
-
Tam İngilizce Dil Desteği: Uygulama arayüzü, yapılandırma ayarları, log çıktıları ve bildirimlerin tamamı, küresel kullanılabilirlik sağlamak amacıyla tamamen İngilizceye çevrildi.
-
Kod Mimarisi Yenilenmesi (Modüler Arayüz): Tek parça halindeki devasa ui.py dosyası; mantıksal alt modüllere (tabs, widgets, dialogs) bölündü. Fonksiyon bütünlüğü korunarak kodun bakımı ve geliştirilebilirliği ciddi oranda artırıldı.
-
Akıllı Profil Doğrulaması: Profil güncelleme işlemi öncesine aktif değişiklik kontrolü eklendi; böylece ekranda hiçbir değişiklik yapılmadıysa profilin gereksiz yere tekrar yazılması engellendi.
Full Changelog: v1.0.2...v1.1.0
v1.0.2 - Profile Management Improvements
🌐 v1.0.2 Release Notes / Sürüm Notları
🇬🇧 English
v1.0.2 - Profile Management Improvements
This release focuses on profile management improvements and user experience enhancements for better control over your LLM server configurations.
What's New & Bug Fixes:
-
Disable Automatic Config Update on Model Selection: Fixed an issue where selecting a different model while a profile was active would automatically update the config, potentially corrupting profiles during model switching. Model selection no longer triggers automatic config updates.
-
"Update Profile" Button Added: A new "🔄 Update Profile" button has been added between the "Save Profile" and "Delete Profile" buttons. This button allows you to update the currently selected profile with the current form values displayed on the screen.
-
Profile-Specific Context Size Support: The context size combobox now properly shows profile-specific custom values (e.g., 128000) when loading profiles, while still maintaining the predefined options list (16384, 32768, 65536, 131072, 262144).
🇹🇷 Türkçe
v1.0.2 - Profil Yönetimi İyileştirmeleri
Bu sürüm, LLM sunucu yapılandırmalarınız için daha iyi kontrol sağlayacak profil yönetimi iyileştirmelerine ve kullanıcı deneyimi geliştirmelerine odaklanmaktadır.
Yenilikler ve Hata Düzeltmeleri:
-
Model Seçiminde Otomatik Config Güncellemesinin Devre Dışı Bırakılması: Aktif bir profil seçiliyken farklı bir model seçildiğinde, config'in otomatik olarak güncellenmesi sorunu düzeltildi. Bu durum model değiştirme sırasında profillerin bozulmasına yol açıyordu. Artık model seçimi otomatik config güncellemesini tetiklemiyor.
-
"Profili Güncelle" Butonu Eklendi: "💾 Profili Kaydet" ve "🗑 Profili Sil" butonları arasına yeni bir "🔄 Profili Güncelle" butonu eklendi. Bu buton, ekranda görünen mevcut değerlerle seçili profili güncellemenizi sağlar.
-
Profil-Spesifik Context Boyutu Desteği: Context boyutu combobox'ı artık profilleri yüklerken profil-spesifik custom değerleri (örn: 128000) doğru şekilde gösteriyor, aynı zamanda hazır seçenekler listesini (16384, 32768, 65536, 131072, 262144) de koruyor.
Full Changelog: v1.0.1...v1.0.2
v1.0.1 - Thread-Safety Hotfix
🌐 v1.0.1 Release Notes / Sürüm Notları
🇬🇧 English
v1.0.1 - Thread-Safety Hotfix
This release focuses on critical stability improvements on Linux systems (Arch Linux / CachyOS).
What's New & Bug Fixes:
- Thread-Safe Logging Implemented: Fixed a critical issue where background server logs directly modified UI components outside the Main UI Thread, which previously risked random application crashes or segmentation faults. Appending logs to
QTextEditis now completely thread-safe.
🇹🇷 Türkçe
v1.0.1 - Thread-Safe Loglama Yaması
Bu sürüm, Linux (Arch Linux / CachyOS) sistemleri üzerinde kritik kararlılık iyileştirmelerine odaklanmaktadır.
Yenilikler ve Hata Düzeltmeleri:
- Thread-Safe Loglama Altyapısı: Arka plandaki sunucu loglarının, Ana UI İş Parçacığı (Main UI Thread) dışından arayüz bileşenlerine doğrudan müdahale etmesiyle oluşan ve uygulamanın rastgele çökmesine (Segmentation Fault) yol açabilen kritik hata düzeltildi. Logların
QTextEdit'e yazılması tamamen güvenli hale getirildi.
Full Changelog: v1.0.0...v1.0.1
LlamaTray v1.0.0
LlamaTray v1.0.0 — Initial Stable Release 🦙
English
PyQt6 based Llama.cpp (llama-server) Tray Manager for Linux (Arch Linux / CachyOS).
✨ Features
- Effortless Server Management: Start/stop
llama-serverwith a single click - Zombie Process Prevention: Automatic cleanup on close or crash
- Real-Time Monitoring: CPU, RAM, GPU, VRAM tracking (1s refresh)
- Profile Management: Save/load/delete named configurations
- Advanced Configuration: GPU layers, context size, port, extra params
- Web UI Integration: One-click to open llama.cpp web interface
- Persistent Settings: Auto-saved to
~/.llamatray/ - GPU Agnostic: NVIDIA (pynvml), AMD (rocm-smi), integrated GPUs
- Native Linux: Wayland & KDE Plasma support
📦 Arch Linux Package
sudo pacman -U llamatray-1.0.0-1-any.pkg.tar.zst
LlamaTrayTürkçe
Linux için PyQt6 tabanlı Llama.cpp (llama-server) Tepsi Yöneticisi.
✨ Özellikler
- Kolay Sunucu Yönetimi:
llama-server'ı tek tıkla başlatın/durdurun - Zombi Süreç Koruması: Kapatma veya çökme durumunda otomatik temizlik
- Gerçek Zamanlı İzleme: CPU, RAM, GPU, VRAM takibi (1sn aralık)
- Profil Yönetimi: İsimli yapılandırmaları kaydedin/yükleyin/silin
- Gelişmiş Yapılandırma: GPU katmanları, context boyutu, port, ek parametreler
- Web UI Entegrasyonu: Tek tıkla llama.cpp web arayüzünü açın
- Kalıcı Ayarlar:
~/.llamatray/dizinine otomatik kayıt - GPU Bağımsız: NVIDIA (pynvml), AMD (rocm-smi), tümleşik GPU'lar
- Yerel Linux: Wayland & KDE Plasma desteği
📦 Arch Linux Paketi
sudo pacman -U llamatray-1.0.0-1-any.pkg.tar.zst
LlamaTray🔗 Links / Bağlantılar
- GitHub: https://github.com/DolbyDAX2/LlamaTray
- Gitea: https://gitea.fatihdurdu.xyz/dolbydax2/LlamaTray
- Developer / Geliştirici: https://fatihdurdu.xyz