Releases: schnidi/VenvHub
Release list
v2.5.24
VenvHub Pro - Consolidated Release Notes (Changelog)
Version: v2.5.24 (Cumulative Release from v2.5.22 to v2.5.24)
This document consolidates all architectural improvements, new features, security fixes, and bug fixes introduced across versions 2.5.23 and 2.5.24.
🚀 New Features and Improvements
Automatic Core Build Tools Injection (setuptools & wheel) [v2.5.24]
- Self-Healing Venv Creation: Updated
create.pyandpip_installer.pyto automatically injectsetuptoolsandwheelinto every newly created virtual environment and repaired Python runtime. - Embedded Python Support: Guaranteed that embedded and portable Python environments are fully equipped out of the box to build and install complex packages without requiring manual intervention.
Multi-Level Path Normalization for Nested Requirements [v2.5.24]
- Recursive File Discovery: Implemented
PipManager._get_all_requirement_files()to recursively scan and resolve all nested requirement files (e.g.,-r subfolder/requirements.txt). - Complete Path Sanitization: Integrated
PathNormalizer.sanitize_requirements_file()across all discovered requirement files before initiating package installation. This guarantees cross-platform path slash compatibility (/vs\).
Preserved Native Package Specifiers & Environment Markers [v2.5.24]
- Full Pip/UV Feature Preservation: Refactored requirement installation logic to preserve native version specifiers (
==,>=), environment markers (sys_platform), extra index URLs, and direct editable links (-e) while eliminating path syntax errors.
Clean Architecture & Single Responsibility Principle (APT System) [v2.5.23]
- Structural Overhaul: The APT dependency system underwent a major architectural cleanup. The
AptListenerwas stripped of heavy logic and now acts strictly as an Interceptor (capturing actions). - Logic Migration: All analytical methods (e.g.,
_get_editable_packages,_is_package_required_by_others,_get_requires_for_package) were moved to the coreAptLogicmodule. The core logic analyzes data while the listener manages the UI flow.
Dependency Injection & Inversion of Control (Container Logic) [v2.5.23]
- Modern Design Pattern: Implemented Dependency Injection in the
HookManager(hook.py). - Dynamic Registration: Instead of hardcoding dependencies,
HookManagernow allows external modules (such asRespawnManager) to dynamically register their crash-checking functions (register_respawn_checker), making container lifecycle management modular and testable.
🐛 Bug Fixes and Stability
Security Fix for Path Traversal & Symlink Vulnerabilities in RequirementsParser [v2.5.24]
- Root Entry Point Boundary Enforcement: Fixed a critical security vulnerability in
RequirementsParser.parse()where initial entry files (such as symlinks pointing to unauthorized files outside the project root) bypassed Path Traversal checks. Directory boundary validation is now strictly executed at the entry point for both primary and recursively nested (-r) requirement files.
Fix for PEP 517 Build Backend Failures [v2.5.24]
- Resolved
BackendUnavailableError: Fixed the issue where installing local editable packages (-e) failed withCannot import 'setuptools.build_meta'. Pre-installingsetuptoolsandwheelinto the environment ensures smooth PEP 517 builds.
Fix for Windows/Linux Slash Mismatches in -r Flag [v2.5.24]
- Path Parsing Fix: Resolved errors where
pip install -rcrashed due to unescaped Windows backslashes or malformed relative paths inside nested requirements files.
Embedded Python Environment Post-Processing [v2.5.24]
EmbedPythonCreatedService Enhancement: Streamlined post-creation verification (verify_pip_functional&fix_pth_file) to ensure._pthfiles are unlocked andsite-packagesis immediately accessible.
Resolved APT Circular Dependency Loop [v2.5.23]
- Fix: Completely eliminated a critical circular import loop between
apt_listener.pyandapt_logic.py. - Impact: Prevents hidden
ImportErrorcrashes during application startup or background operations.
Resolved Container Hook Circular Dependency Loop [v2.5.23]
- Fix: Broke an architectural loop between
hook.pyandrespawn_multi.pyin the container logic folder. - Impact:
hook.pyno longer imports the Respawn Manager directly to check failure counts, ensuring seamless background terminal management.
🧹 Code Refactoring & Project Housekeeping
Decoupled About Dialog (AboutLogic Service) [v2.5.24]
- Eliminated Circular Dependencies: Extracted multilingual HTML parsing and dialog initialization logic from
CustomTitleBarinto a dedicatedAboutLogicservice (core/logic/sluzby/about_logic.py). - Dynamic Registration: Registered
AboutDialogat startup inmain.py, ensuring a clean architecture and preventing circular import risks.
📁 Modified and Affected Files
core/logic/sluzby/requirements_parser.pycore/logic/sluzby/apt_listener.pycore/logic/sluzby/apt_logic.pycore/logic/sluzby/about_logic.pycore/logic/sluzby/pip_installer.pycore/logic/sluzby/create.pycore/logic/containers/logic/hook.pycore/logic/containers/logic/respawn_multi.pymain.py
v2.5.22
📝 VenvHub Pro - Release Notes (Changelog)
Version: v2.5.22 (Jump from version v2.5.17)
This document summarizes all differences, new features, and bug fixes between versions 2.5.17 and 2.5.22.
🚀 New Features and Improvements
Intelligent Dependency Management (APT Logic and Uninstall Guard)
- An invisible background process (
AptListener.start_listening) was added to monitor installations and uninstallations. - Uninstall Guard: The system now prevents the user from uninstalling a package that other installed packages depend on (prevents breaking the environment).
- Auto-Remove: Automatic removal of "orphaned" dependencies when the main package is uninstalled (similar to
apt-get autoremovein Linux).
Parallel Package Loading (Pip Manager Speedup)
- Parallel processing (
concurrent.futures.ThreadPoolExecutor) was implemented in theload_list.pyfile. - The list of installed and outdated packages is now loaded concurrently, cutting the Pip Manager loading time in half.
New Robust Parser for requirements.txt
- Created a new service
RequirementsParserthat reads package requirements with extreme precision. - Supports nested files (
-r), editable installations (-e), direct URL links (@ url), ignoring comments, and line continuation (\). - Includes security protection against Path Traversal attacks.
Bulk Operations
- New commands
show_multipleanduninstall_multiplewere added topip_commands.pyanduv_commands.pyfor extremely fast bulk operations on packages.
Comprehensive Test Suite
- Added a
tests/folder to the project structure with an extensive suite of automated tests (e.g.,test_detectors_flow.py,test_apt_listener.py,test_requirements_parser.py).
🐛 Bug Fixes and Stability
Thread-Safety Locks (Protection Against Freezes and Thread Crashes)
- LanguageManager: Added
threading.Lock(). Prevents application crashes if multiple windows attempt to read/change language files simultaneously. - AptLogic: Implemented reentrant locks (
threading.RLock) separated for each virtual environment (Venv). Multiple operations in a single Venv can no longer conflict over writing to files.
Atomic Configuration Writing (Data Loss Protection)
- In
system_listener.py, the method for savingportable_system_py.jsonwas rewritten. Data is first written to a temporary file (.tmp), flush to disk is forced (os.fsync), and subsequently the old file is replaced in a single atomic operation (os.replace). If the PC crashes during saving, the configuration file will never be corrupted.
GUI Freeze Fixes
- In
python_ver.py, when deleting runtimes, signals were connected with an explicitQt.ConnectionType.QueuedConnectionparameter. This prevented the main window from freezing when working with background threads.
More Accurate and Safer uv Installer Detection
- The
uv_detector.pymodule underwent a complete rewrite. The old (slow and error-prone) method usingpip show uvwas replaced by intelligent searching. - The application now strictly checks whether the detected
uv.exeactually belongs to the actively selected Python. This prevents launching an incompatibleuvfrom another (foreign) Python version. - Added an accurate error message in the GUI if the user attempts to enable
uvfor a Python that does not have it installed.
Proper Pip Worker Success Evaluation
- In the
PipWorkerandUpdateAllWorkerclasses, theself.successattribute was fixed. Previously, callbacks for APT logic could trigger even when a background installation actually failed (e.g., due to an error code). Now,process.returncode == 0is checked.
v2.5.17
Changelog and Bug Fixes – VenvHub Pro v2.5.17
This release focuses on resolving bugs related to coordination with the VS Code development environment and local package management (Linker). Below is an overview of the key changes you will notice during daily use:
Selective Task Scanning:
Where the change occurred: In the process of transferring tasks and keybindings to VS Code.
How it works now: The application no longer scans the entire local packages root folder upon saving. It analyzes only those modules that are actively checked for the current environment. This prevents tasks from unrelated (unlinked) projects from cluttering your active editor.
Consistent Task Removal Upon Deactivation (Brutal Check):
Where the change occurred: In the package removal logic.
How it works now: When unchecking (deactivating) a package, the program reads its configuration and safely removes the associated tasks and keybindings from VS Code without affecting any tasks you created manually in the editor.
Recovery System for Manually Deleted Folders:
Where the change occurred: Through the introduction of a tracking helper file (.vscode/venvhub_tracker.json).
How it works now: If you delete a local package folder manually via File Explorer without unchecking it first in the application, the program will not halt. It utilizes the information from the tracking helper file (the "receipt") to safely identify and clean up the orphaned tasks from the VS Code configuration.
Task Alignment During Environment Switching:
Where the change occurred: In the default environment activation service (clicking the "Star" in the Manager).
How it works now: Previously, when switching to another Venv, the program only updated the Python interpreter paths, leaving tasks from the previous environment behind in the editor. As of version 2.5.17, changing the default Venv automatically aligns all associated tasks and keybindings in VS Code (deregistering old ones and writing new ones).
Automatic Cleanup of Empty Configuration Files:
Where the change occurred: In the saving of configurations inside .vscode.
How it works now: If no active tasks or keybindings remain in tasks.json or keybindings.json after uninstalling a package or switching the Venv, the application physically deletes these empty files (including the tracking helper file) from the disk, preventing the accumulation of empty configuration files in the project folder.
Global Support and Integrity Verification for UV (Astral):
Where the change occurred: In the asynchronous workers managing bulk and individual package actions (PipWorkerAllUpdate, PipCommandWorker, and PipWorker).
How it works now: If the UV manager is active in your settings, the program automatically runs a background uv check after every package installation, uninstallation, or upgrade. If incompatible versions are identified, it automatically attempts a recovery (performing version downgrades or reinstalling exact compatible versions).
Full UV Integration for Quick Actions from the Mini-Bar:
Where the change occurred: In the quick installer of the Mini-Bar and Quick Settings.
How it works now: Quick package installation initiated directly from the mini-panel now respects the active UV manager and executes post-installation dependency checking and conflict resolution.
Legacy Codebase Cleanup:
Where the change occurred: Removal of redundant files (update_all.py and install.py).
How it works now: Outdated, unused scripts that did not support the UV installer and bypassed the unified dispatcher have been completely removed, ensuring a cleaner codebase and faster execution of the package management core.
v2.5.16
VenvHub Pro v2.5.16 Release Notes
We are excited to announce the release of VenvHub Pro v2.5.16! This update brings a major architectural overhaul, introducing a fully isolated local package linker (no UAC required), AI-powered dependency autopilot with UV, and deep, non-destructive VS Code integration.
✨ New Features
🔗 Local Package Linker (No UAC Required)
Introduced an advanced sys.meta_path Import Hook architecture. You can now link local packages to your virtual environments without creating filesystem junctions or requiring Administrator (UAC) privileges. Packages are dynamically resolved at runtime, making the system fully portable and secure.
⚙️ UV Autopilot (Dependency Auto-Fix)
Integrated Astral's ultra-fast uv package manager. When updating multiple packages, the system now automatically runs uv pip check and performs an intelligent Auto-Fix—downgrading conflicting packages to restore 100% environment stability without manual intervention.
💻 Isolated VS Code User Profiles
Full support for dedicated VS Code profiles using --user-data-dir and --extensions-dir. Each project or developer can now have completely isolated extensions, settings, and keybindings. You can import your current system profile into a portable container with a single click.
🧩 Meta-Sync for VS Code (Tasks & Keybindings)
Local packages can now define their own VS Code Tasks and Keybindings directly inside local_meta.json. When linked to a project, VenvHub Pro automatically injects these definitions into .vscode/tasks.json and .vscode/keybindings.json, eliminating manual configuration.
⚓ Orchestration Anchors (Kotva / Hook)
Added a robust inter-process signaling system for the Autostart Container. Scripts can now signal readiness by creating a unique file defined in the VENVHUB_KOTVA environment variable. The launcher waits for this signal before starting dependent services, ensuring sequential and reliable boot order.
⚡ Improvements
🧠 Smart Respawn & 3-Strike Rule
The Watchdog (Respawn Manager) now tracks consecutive crashes. If a process crashes 3 times in a row, the system blocks further restart attempts to prevent log flooding and infinite loops, keeping the system stable and allowing developers to inspect the error.
📁 Enhanced USB Portable Path Logic
When running in Portable mode, the system now automatically rewrites absolute paths inside .pth files (for pip -e packages) and .vscode/settings.json when the drive letter changes (e.g., from E: to F:). Projects remain functional instantly on any machine.
📦 Instant Birth Certificate Updates
The internal venv_birth_certificate.json is now regenerated automatically after every pip install, update, or uninstall operation. The environment state is always synchronized with the filesystem, eliminating lag or stale data in the UI.
🎨 Advanced Icon Modding & QSS Overrides
Complete overhaul of the theme engine. You can now replace all system Emoji characters with professional SVG icons using QSS qproperty- overrides. Added specific support for qproperty-scaledContents to perfectly scale window title bar icons regardless of Python backend constraints.
🧩 Architectural Enhancements
Dual-Framework (PyQt6/PySide6) Compatibility Bridge
The core now features a MetaPathFinder interceptor. The source code is written strictly for PyQt6, but the system automatically translates all imports to PySide6 at runtime if the environment only has PySide6 installed.
Windows Job Object & Process Handles
Implemented low-level Windows Job Objects and Process Handles (via ctypes). This guarantees that if the main VenvHub Pro application crashes, all child processes are immediately terminated by the OS. Additionally, holding Process Handles prevents the system from recycling PIDs, ensuring perfect process ownership tracking.
Process Ownership Matrika (Registry)
Introduced strict Process Ownership logic. If a process belongs to Group A, the "Stop" button in Group B will ignore it. This prevents accidental shutdowns of services that are shared between different container groups.
🐛 General Stability
Fixed various thread-locking issues in the Multi-run launcher.
Improved error handling in the Venv Validator for broken pyvenv.cfg files.
Optimized memory usage by clearing stale Process Handles on stop commands.
If you are upgrading from an older version, your existing containers and Venvs are fully compatible. However, due to the new Import Hook architecture, we recommend re-linking your local packages (Linker) to activate the new No-UAC system.