Skip to content

PPG 1.2.0 - The BIGGEST Update Yet! 🚀

Latest

Choose a tag to compare

@runesc runesc released this 21 Sep 02:52
· 4 commits to main since this release
a3af012

We're excited to announce PPG 1.2.0, our most significant release to date! This update brings revolutionary new features and major architectural improvements that will transform your development experience.

⚡ Major New Features

Hot Reloading

  • Instant development feedback - See your changes in real-time without manual refreshes
  • Smart change detection - Only updates what's actually changed for optimal performance
  • Zero-configuration setup - Works out of the box with your existing projects

Reactive Components

  • Declarative UI paradigm - Build dynamic interfaces with reactive data binding
  • Component lifecycle management - Full control over component creation, updates, and destruction
  • State synchronization - Automatic UI updates when data changes
  • Performance optimized - Efficient rendering with minimal DOM manipulation

WebEngineBridge

  • Seamless Python-JavaScript integration - Bridge the gap between backend and frontend
  • Bidirectional communication - Call Python functions from JavaScript and vice versa
  • Type-safe interfaces - Full IntelliSense support with proper type checking
  • Event system - Real-time event handling across the bridge

Core Utilities & Architecture Improvements

  • Enhanced module system - Better dependency management and lazy loading
  • Improved error handling - More descriptive error messages and stack traces
  • Memory optimization - Reduced memory footprint and better garbage collection
  • Plugin architecture - Extensible system for custom functionality

Pydux 2.0 Integration

  • Predictable state management - Redux-inspired state container for Python
  • Time-travel debugging - Step through state changes for easier debugging
  • Middleware support - Extend functionality with custom middleware
  • DevTools integration - Visual state inspection and modification

Migration Notes

Breaking Changes

  • New component system introduced
  • Hot reloading enabled by default
  • WebEngineBridge replaces previous JS-Python communication methods
  • PPGStore deprecated in favor of Pydux
  • Updated project structure for better organization
  • Updated CLI commands to support new features
  • Removed support for Python versions below 3.8
  • Updated dependencies to latest stable versions
  • Legacy component syntax deprecated

🐛 Bug Fixes & Improvements

Compatibility & Core Fixes

  • Added compatibility with PySide6.2+
  • Fixed compatibility issues with PySide2 (exec() vs exec_())
  • Fixed issue preventing window maximization in new projects
  • Added compatibility with PyInstaller 6.9.0+
  • Fixed QApplication singleton destruction issue before new instance creation
  • Fixed get_resource method (now works as expected)
  • Resolved macOS compilation issue with Sparkle
  • Added Apple Silicon installer support

CLI & Project Management

  • Fixed CLI generator issue when "views" or "components" folder didn’t exist
  • Fixed missing resources folder creation when running ppg init
  • Fixed missing src/build/settings/base.json breaking ppg init on new projects
  • Fixed application names not properly converted to CamelCase
  • Fixed build_settings access in compiled apps and source projects
  • Updated icons

Major New Features: Pydux State Management

  • Added Pydux: global state container for components, enabling real-time communication
  • CLI-generated components now natively support Pydux

Advanced Pydux Features

  • Type-safe state management with full Pydantic integration and dynamic schema validation
  • Nested model support with automatic validation
  • Partial updates via update_nested_model() for efficient handling of nested objects
  • Dot notation access with get_nested("user.name") for intuitive retrieval
  • Schema flexibility: evolve from simple dicts to strict Pydantic models
  • Production-ready validation with runtime type checking and clear errors

Reactive Widgets

  • Introduced Reactive Widgets as part of the new component system
  • Components now update automatically when bound state changes
  • Integrated with Pydux for seamless two-way state ↔ UI synchronization

Deprecation Notice

  • PPGStore is deprecated. Use Pydux instead.
  • Backward compatibility maintained in 1.1.x, but PPGStore will be removed in a future major release.

Installation & Upgrade Instructions

New Installation

pip install ppg

Upgrading from Previous Versions

pip install --upgrade ppg

What's Next?

Our immediate focus will be on stability and fixing issues following the PPG 1.2.0 update. We want to ensure a smooth transition for all developers upgrading their projects.

All upcoming major features and architectural changes will move into the new core project Qyro Engine, which will power PPG 2.0.

This means:

  • PPG 1.2.x → Will be focused on compatibility, bug fixes, and incremental improvements.
  • PPG 2.0 → Will include all next-generation features, performance improvements, and an all-new architecture.

📚 Resources

🙏 Acknowledgments

Special thanks to our amazing community contributors who made this release possible! Your feedback, bug reports, and feature requests continue to drive PPG forward.


Happy coding with PPG 1.2.0! 🎊

Have questions? Found a bug? Open an issue or join our Discussion Forum to connect with other users and the development team.