- Add Python Environment Manager with local switching & one-click download - Support Folder Mode (--onedir) and custom contents directory (--contents-directory) - Replace pipreqs with native recursive AST static analysis for dependency scanning - Add Playwright browser download mirror support (npmmirror / huaweicloud) - Upgrade UPX exclusion rules to dynamically exclude Python core & runtime DLLs - Refactor UI dialogs, thread cancellation handling, and polish i18n translations
20 KiB
20 KiB
Changelog
All notable changes to the QPyPack project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
English | 中文版
[2.7.3] - 2026-08-04
Added
- Python Environment Manager: Added a new management dialog that supports intelligent detection and switching of local Python installations, as well as one-click download/installation via official or mirror sources.
- Folder Mode (
--onedir): Added Folder Mode to execution settings, along with support for customizable internal contents directory names (--contents-directory). - Native AST Dependency Analysis: Refactored the dependency scanner using native AST parsing instead of
pipreqs, significantly improving speed and accuracy for implicit dependency detection. - Playwright Mirror Acceleration: Added mirror source downloads for Playwright browser binaries with automatic fallback to official CDNs.
Improved
- Dynamic UPX Exclusion: Upgraded UPX compression rules to automatically detect and exclude core Python DLLs and
vcruntime140_1.dllto prevent runtime errors. - Thread & Interruption Control: Strengthened build cancellation and cleanup logic to prevent lingering threads and locked temporary files.
- Platform Compatibility & Timeouts: Optimized macOS Bundle Identifier generation and introduced command execution timeout protection.
- UI Polish: Refactored execution mode radio buttons, streamlined About tab layout and spacing, and updated copyright notices.
- i18n Updates: Refined wording and updated translations across various UI text and logs.
[2.7.2] - 2026-08-03
Key Improvements
- Compiler Selection Strategy Refactored: Removed hardcoded Zig compiler forcing for Python 3.13+. Prioritizes local MSVC / Clang / GCC(MinGW64) environments; falls back to Nuitka auto-detection and toolchain download if none are found.
- Updated Compatibility Matrix: Refined interpreter status cards to accurately reflect Nuitka's adaptive C compiler detection capabilities.
- Enhanced Build Prompts: Displays MinGW-w64 auto-download notices when no local compiler is found; adds explicit detection feedback for local compilers.
- UI Polish: Updated resource list tooltips to recommend saving via "Export Preset"; simplified temporary directory selection labels.
- Restored Default Dependency Directory: Reverted PyInstaller's one-dir dependency folder name back to the official default (
_internal), allowing packaged apps to share runtime libraries and reduce disk footprint. - State Persistence Optimized: The custom output directory setting is no longer cleared when loading a new script or resetting the workspace, improving the workflow for continuous packaging.
[2.7.1] - 2026-08-02
Added
- Lock-Prevention Temp Directory Option: Added a "Temp Directory" location setting on the Settings page, allowing Nuitka's intermediate compilation sandbox to be switched to the system Temp directory. This resolves build interruption issues caused by OneDrive or antivirus software locking files.
Improved
- Seamless Multi-Version Rebuilding: After packaging is completed, switching Python interpreters or saving and returning from configuration changes now automatically retains the loaded script state. Icons, version metadata, implicit imports, and additional resources are 100% preserved, eliminating the tedious workflow of repeatedly dragging files or reloading presets.
[2.7.0] - 2026-08-01
Added
- Automated Compiler Sniffing & Invocation: Added auto-detection and invocation for
Clang(LLVM) andZig(optimized for Python 3.13+ C backend) compilers in Nuitka, prioritizing MSVC (--msvc=latest) or Clang when available. - Zero-Config Package Presets: PyInstaller engine now includes automated
--collect-alland--collect-datahandling for frequently problematic packages likettkbootstrap,customtkinter,playwright, andmoviepy. - Dual-Mode Real-Time Log Viewer: Introduced a dual-mode log viewer with "Concise Mode" and "Detailed Mode" stacked views, supporting real-time seamless switching, clearing, and exporting above the log panel.
- Smart Python Platform Compatibility Matrix: Added a dynamic HTML platform support matrix to the Python interpreter selector in Settings, displaying real-time compatibility status for Windows 7/8/10/11, macOS, and Linux along with official download links.
- Build Fault Tolerance & Fallback Protection: Added pre-compilation system RAM and disk space evaluation; automatically triggers single-thread (
--jobs=1) fallback retries onZstdError(OOM) and strips icon flags if antivirus software locks icon resources.
Fixed
- Source Encoding & BOM Compatibility: Fixed an issue where the AST module could throw decoding exceptions on source code containing BOM (
utf-8-sig) or non-standard system fallback encodings. - Cloud Drive Sync Warning: Fixed unexpected build interruptions caused by OneDrive/Dropbox file synchronization locks by introducing early lock detection and warnings.
- Console Runtime Crash: Fixed crashes caused by console "pause on exit (
input)" scoping conflicts by refactoring the injection logic to register strictly viaatexit.register.
Changed
- Native In-Process AST Parsing: Refactored implicit dependency scanning from spawning subprocesses to native same-process AST parsing, drastically reducing system overhead and multiplying scan speed.
- Asynchronous Parallel Environment Detection: Introduced multi-threaded concurrent detection for candidate Python environments, eliminating startup I/O blocking.
- Pure Vector UI & Emoji Cleanup: Stripped emojis from sidebars, tab headers, and language selectors in favor of Google Material SVG vector icons, eliminating font fallback glitches and layout jumps on Linux and older Windows systems.
- Granular Build Progress Feedback: Main drop cards and status bars now capture and stream live compilation progress text from backend engines (Nuitka / Scons / PyInstaller), eliminating waiting anxiety.
- Redesigned About Page & Sponsorship Integration: Overhauled the About tab layout with interactive action buttons for GitHub, PyPI, and Issues, introducing a voluntary sponsorship encouragement section.
- Atomic Dependency Resolution & Fallback: Unified dependency build logic into an atomic manifest; automatically strips strict version constraints (
==) and retries if specific version installs fail. - Native Byte-Stream Icon Generation: Removed reliance on macOS
sipsCLI tool, refactoring pure Python byte-stream assembly for cross-platform.icoand.icnsgeneration. - Expanded Package Mapping Library: Expanded the built-in package mapping library to cover common third-party packages such as
pyside6_addons,pyside6_essentials,attrs,psycopg2-binary, etc.
[2.6.2] - 2026-07-27
- UI Slide Transition Animations: Refactored page switching logic with dual-layer smooth slide animations, eliminating visual flickering and icon displacement when returning to the main dashboard.
- Non-Intrusive Notification System: Fully replaced invasive
QMessageBoxpopups with lightweight status bar Toast notifications to maintain smooth packaging workflows. - Error Log Red Highlighting: Automatically expands the log panel and highlights fatal exceptions, locked files, or missing dependencies in bright red HTML font for fast troubleshooting.
- GNU gettext Engine Refactor: Introduced
TranslationEngine, refactoring hardcoded Chinese strings into English Base Keys; built-inzh_CNfallback dictionary ensures zero external dependency execution. - Global Multilingual Support: Added translation packages for Japanese (
ja_JP), Korean (ko_KR), French (fr_FR), German (de_DE), Spanish (es_ES), Russian (ru_RU), Portuguese (pt_BR), and Traditional Chinese (zh_TW). - Smart Language Selector: Added language selector dropdown in Settings displaying native language names (e.g., Deutsch, Français) with automatic OS locale detection.
- Scope Variable Collision Fix: Fixed a critical issue where
QFileDialogunpacking (fp, _) accidentally shadowed global translation function_(), causing local scope crashes. - Qt Animation Engine Warning: Fixed low-level geometry animation warnings (
starting an animation without end value) when applied toQStackedLayout. - PyPI Static Asset Packaging: Updated
pyproject.tomlto includelocales/*.jsonresources, ensuring i18n support works seamlessly afterpip install.
[2.6.1] - 2026-07-25
- Dependency Contamination Elimination: Fixed a bug in "Lite Mode" where AST incorrectly traversed parent directories, preventing unrelated packages from leaking into the output bundle.
- Build Sandbox Isolation: Isolated target scripts in dedicated sandboxes during parsing to prevent interference from adjacent files; added an option to "Allow scanning all files in directory".
- MSVC Smart Detection: Added C++ compilation environment sniffing. If MSVC is installed, Nuitka automatically applies
--msvc=latest, prioritizing native compilers and skipping MinGW downloads. - UPX Warning Suppression: Automatically recognizes and ignores UPX compression errors on system core DLLs, slightly boosting build speed.
[2.6.0] - 2026-07-24
🎨 UI & UX Refactoring
- Tab Navigation Refactor: Reorganized TAB layouts for improved aesthetics and usability.
- Typography & Layout Refinement: Compacted engine description boxes; introduced cross-platform safe font stacks with graceful fallbacks.
- High-DPI Rendering: Prioritized extracting 256px HD icon layers combined with floating-point precision rendering, eliminating icon blurriness on 125%~200% DPI scales.
🛠️ Engine & Stability Fixes
- Package Name Fallback: Built-in C-extension hardcoded mapping dictionary to prevent "module not found" errors.
- False Mirror Timeout Suppression: Smartly identifies pip package name typos to prevent false "Mirror Connection Timeout" alerts when network connections are normal.
- Read-Only Directory Protection: Console anti-crash scripts are now written to system temp directories to prevent build interruptions in read-only source folders.
[2.5.7] - 2026-07-23
- Log Context Menu: Added "Clear Log" and "Export Log" options.
- Dropdown & Styling Fixes: Fixed text overlapping bugs in non-editable combo boxes.
- Button & Layout Standardization: Unified sizes for action buttons like "Browse" and "AST Scan".
- UX Enhancements: Enabled auto-wrapping for drag-and-drop region titles to prevent UI clipping on long file paths.
[2.5.6] - 2026-07-23
- PIP Dual-Source Backup: Added backup PyPI mirror configuration and auto-retry fallback mechanisms, pre-loaded with major Chinese PyPI mirrors.
- UI Visual Overhaul: Refactored
QComboBoxdrop-down popups to unify minimal white themes and scrolling experiences; centered Tab bar labels and set minimum window width (710px). - Packaging Stability: Full-lifecycle control over dependency installations with auto-fallback mirror switching; populated Windows binary metadata
VarFileInfotranslation headers; optimized exclusion strategies in Lite Mode.
[2.5.5] - 2026-07-22
- Accidental Deletion Prevention: Optimized
build/distsmart cleanup to protect desktop and workspace directories. - Full Sandbox Compilation: Isolated build outputs in system temp directories, resolving cross-drive and path separator issues.
- Path Mapping & UX Fixes: Redirected
cwdto source script directories during builds to resolve relative path references; fixedopen_distfolder opening behavior. - pipreqs Crash Fix: Resolved encoding crashes during automated dependency scanning.
[2.5.4] - 2026-07-18
- Lite Mode Introduced: Automatically strips redundant modules like
pipandunittestand enables Nuitka-OOoptimization to drastically reduce output size; paired with deep source scanning (up to 500 local dependencies) to maintain runtime stability. - False UPX Error Fix: Explicitly passes
--noupxwhen UPX is unchecked, blocking PyInstaller from quietly invoking system UPX tools and generating log noise. - Log Encoding Fix: Enforced
encoding="utf-8"across all underlying process calls (subprocess), solving console encoding garbles on Windows systems with GBK defaults.
[2.5.3] - 2026-07-17
- Engine Version Locking: Allows custom version pin settings for Nuitka, PyInstaller, and pipreqs in Advanced Settings to prevent upstream breakage.
- Dynamic Progress UI: Main dashboard titles now update and cycle build steps in real-time to eliminate perceived hanging.
- Compilation Crash Fix: Enforced global UTF-8 environments, resolving fatal GBK encoding errors when Nuitka parses libraries like PyTorch on Chinese Windows systems.
- High-DPI Rendering Fix: Resolved font blurriness on fractional scale factors (e.g., 125%) and cleaned up DPI permission errors.
- Adaptive Dependency Scanning: Fixed
pipreqscrashes on non-UTF-8 source files by adding automatic fallback to local encodings. - Smart Interpreter Search: Merged duplicate
.EXEpaths, default-selected current active environment, and stripped\\?\path prefixes to prevent subprocess invocation errors. - Absolute Clean Recycles: Added forced cleanup for
nuitka-crash-report.xmland temporary__pycache__folders to keep user directories clean. - Icon Update Fix: Fixed an issue where icons failed to update when initiating new packaging tasks.
[2.5.2] - 2026-07-15
- Refactored Compiler Command Generators: Completely separated PyInstaller and Nuitka instruction generation into independent pipelines to eliminate cross-engine flag pollution.
- Nuitka Asset Path Fix: Fixed Nuitka compilation crashes when relative target paths for data files were set to
.viaos.path.normpathpath normalization. - Nuitka Module Exclusion Fix: Standardized module exclusion parameters to Nuitka's official
--nofollow-import-to. - Windows Metadata Mapping: Correctly mapped application description to
--file-description, application name to--product-name, and added support for--product-version.
[2.5.1] - 2026-07-15
- Multi-Platform CI/CD: Utilized GitHub Actions to run concurrently across
windows-latest,macos-latest, andubuntu-latest, automatically attaching builds to Tag Releases. - Flat Icon Style: Removed Emoji icons and updated UI to flat Google-style vector icons.
- Copyright Notice Update: Removed author name from the window title bar and added a subtle persistent copyright notice on the right side of the status bar.
[2.5.0] - 2026-07-15
- Cross-Platform Safety & Decoupling: Fully isolated Windows
winregregistry calls to ensure safe static module loading on macOS and Linux. - Adaptive Image Format Engine: Introduced
convert_image_to_formatgraphics converter supporting SVG, PNG, and JPG conversion into.icoand.icns. - Metadata Translation: Automatically writes
VSVersionInfometadata on Windows and maps standard Bundle IDs (e.g.,com.company.appname) on macOS. - Artifact Extraction: Refactored output file moving and resetting logic to accurately capture Windows
.exe, macOS.app, and UNIX extensionless binaries.
[2.4.6] - 2026-07-12
- Cross-Platform Compatibility: Fixed crashes on non-Windows platforms caused by Windows-specific
creationflagsin subprocess calls; refactored UNIX Python interpreter detectors. - Modernized UI & UX: Adopted card-based layouts and pill-tabs, resolving component overlap issues on low-resolution displays.
- Multi-Version Kernel Sandboxing: Supports selecting or browsing any local Python interpreter for code analysis and isolated compilation.
- About Page Overhaul: Introduced interactive action rows with seamless links to open-source repositories; fixed ICO anti-aliasing distortion.
[2.4.5] - 2026-07-06
- Source Parsing Security: Removed line-ending manipulation (CRLF to LF) during dependency scans and anti-crash injections, preventing multiline string corruption.
[2.4.4] - 2026-07-06
- Visual Asset Manager: Added a visual list component supporting file and directory additions via dialogs, with double-click support to modify target release paths.
- Path Parsing Upgrade: Rewrote underlying storage and
--add-dataflag construction to prevent absolute paths from being improperly truncated.
[2.4.3] - 2026-07-01
- Custom Dependency List Support: Added support for configuring custom
requirements.txtpaths per script. - Console Import Fixes: Adjusted anti-crash injection to write temporary entry scripts in the source directory, preserving relative imports.
- Background Thread Control: Replaced unsafe
QThread.terminate()calls with signal disconnection to eliminate UI freezes and deadlocks. - Nuitka Standalone Compatibility: Switched to dynamic matching for
.distoutput folders, preventing build failures caused by entry point renaming.
[2.4.2] - 2026-06-28
- Syntax Error Diagnostics: Automatically scans build logs upon failure to pinpoint
IndentationError,SyntaxError, andTabErrorin source files. - Precise Error Localization: Highlights file names, line numbers, and error messages to distinguish between source code bugs and packaging engine failures.
[2.4.1] - 2026-06-25
- Modular Settings Refactor: Reorganized settings into "App Metadata", "Build Control", "Resources & Sandbox", and "Software Settings".
- Custom Output Directory: Supports exporting build artifacts to custom global directories with auto-creation of missing parent folders.
- Compilation Concurrency Limits: Added options to cap max CPU core usage during parallel compilation.
- Build Sounds & Auto-Logging: Introduced system audio notifications upon build completion and options to automatically save
.logfiles to the output directory.
[2.4.0] - 2026-06-22
- Console Anti-Crash Mechanism: Automatically injects pause logic at the end of scripts when building non-GUI applications.
- Robust File Deletion: Refactored temp folder cleanup using
robust_rmtreewith delayed retries and read-only attribute stripping. - Cloud Storage Lock Pre-Check: Added I/O pre-checks to catch OneDrive/Dropbox sync file locks before compilation starts.
- CI/CD Automation: Added GitHub Actions workflows to auto-publish releases to PyPI and GitHub Release attachments on Tag pushes.
[2.3.5] - 2026-06-17
- Triple-Layer Dependency Safety Net: Refactored dependency resolution into a 3-layer net (
Requirements -> Pipreqs -> AST Scan), eliminating missing package runtime crashes. - Zero Workspace Pollution: Moved configuration files to global path
~/.qpypack/config.iniand shifted intermediate build files to system temp folders. - Standardized Build Logs: Introduced CI/CD lifecycle status tags (
[Init],[Env],[Deps],[Build],[Pack]). - Virtual Environment Self-Healing: Automatically upgrades pip upon isolated venv creation, eliminating verbose legacy module warnings.
[2.3.0] - 2026-06-15
- GUI Framework Upgrade: Upgraded from PyQt5 to PySide6 for superior High-DPI scaling support.
- Streamlined Engines: Removed cx_Freeze to focus on refining PyInstaller and Nuitka double-engine cores.
- Nuitka Best Practices: Enforced
zstandardcompression in single-file mode; enabledanti-bloatplugins; added automatictkinterprobe detection.
[2.2.0] - 2026-06-14
- Rebranding: Officially rebranded to QPyPack, standardizing internal sandbox and temp file naming conventions.
- Watchdog Timeouts: Added timeout watchdog mechanisms to critical build steps to prevent hanging builds.
- Smart Output Naming: Automatically parses script versions to default output names as
{Name}_{Version}.
[1.0.1] - 2026-05-31
- Custom PIP Mirror Support: Added PIP mirror configuration defaulting to Tsinghua University mirrors, with immediate UI application and
QSettingspersistence. - Unified Build Logic: Virtual environment initialization and dependency resolution now strictly adhere to user-configured PIP mirrors.
📄 License
Copyright (C) 2026 QwejayHuang.
Licensed under the GNU General Public License v3.0.