# Changelog All notable changes to the StellarX project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). [中文文档](CHANGELOG.md) ## [v2.0.1] - 2025-10-03 ### Added - New example: 32-bit register viewer tool implemented based on StellarX (supports bit inversion, left shift, right shift, hexadecimal/decimal signed/unsigned toggle, grouped binary display). - Example path: `examples/register-viewer/` - `TextBox` added `setText` API, allowing external setting of text box content - `TextBox::setText` API modified: immediately calls `draw` method to redraw after setting text - `Button` added `setButtonClick` API, allowing external functions to modify button click state and execute corresponding callback functions - ==All documents updated with corresponding English versions(.en)== ## [v2.0.0] - 2025-09-21 ### Overview v2.0.0 is a major release. This release introduces dialog and message box factory (Dialog / MessageBox), with several important fixes and improvements to event distribution, API semantics, and internal resource management. Some APIs/behaviors have breaking changes that are not backward compatible. ### Added - **Dialog System**: - Added `Dialog` class, inheriting from `Canvas`, for building modal and non-modal dialogs - Added `MessageBox` factory class, providing two convenient APIs: `ShowModal` (synchronous blocking) and `ShowAsync` (asynchronous callback) - Supports six standard message box types: `OK`, `OKCancel`, `YesNo`, `YesNoCancel`, `RetryCancel`, `AbortRetryIgnore` - Automatically handles dialog layout, background saving and restoration, event propagation, and lifecycle management - **Enhanced Event System**: - All controls' `handleEvent` methods now return `bool` type, indicating whether the event was consumed - Introduced event consumption mechanism, supporting finer-grained event propagation control - Window class event loop now prioritizes dialog event processing - **Control State Management**: - Control base class added `dirty` flag and `setDirty()` method, uniformly managing redraw state - All controls now implement `IsVisible()` and `model()` methods - **API Enhancements**: - Button class added `setButtonFalseColor()` method - TextBox class `setMaxCharLen()` now accepts `size_t` type parameter - Window class added dialog management methods and duplicate detection mechanism ### Breaking Changes - **API Signature Changes**: - All controls' `handleEvent(const ExMessage& msg)` method changed from returning `void` to returning `bool` - Control base class added pure virtual functions `IsVisible() const` and `model() const`, all derived classes must implement them - **Resource Management Changes**: - Control base class style saving changed from stack objects to heap objects, managed using pointers - Enhanced resource release safety, all resources are properly released in destructors - **Event Handling Logic**: - Window's `runEventLoop()` method completely rewritten, now prioritizes dialog events - Introduced event consumption mechanism, events do not continue propagating after being consumed ### Fixed - **Memory Management**: - Fixed memory leak issue in `Button::setFillIma()` - Fixed resource release issues in Control base class destructor - Fixed background image resource management issues in Dialog class - **Layout and Rendering**: - Fixed pagination calculation, column width, and row height boundary issues in `Table` component - Fixed layout disorder caused by `pX` coordinate accumulation error in `Table` - Fixed dirty determination issue in `Canvas::draw()` that prevented child controls from being drawn - Fixed asymmetric call issues between `TextBox::draw()` and `restoreStyle()` - **Event Handling**: - Fixed window event distribution logic to ensure dialog/top-level controls prioritize event processing - Fixed delayed state updates when mouse moves out of button area - Fixed race conditions in non-modal dialog event handling - **Other Issues**: - Fixed potential errors in text measurement and rendering - Fixed incomplete background restoration after dialog closure - Fixed z-order management issues in multi-dialog scenarios ### Changed - **Code Quality**: - Refactored numerous internal APIs, enhancing exception safety and maintainability - Used smart pointers and modern C++ features to replace raw new/delete - Unified code style and naming conventions - **Performance Optimization**: - Optimized event processing flow, reducing unnecessary redraws - Improved dialog background saving and restoration mechanism - Reduced memory allocation and copy operations - **Documentation and Examples**: - Added detailed usage examples for all new features - Improved code comments and API documentation - Updated README and CHANGELOG to reflect latest changes ## [1.1.0] - 2025-09-08 ### Added - **Window Class API Enhancements**: - Added complete getter method set, improving class encapsulation and usability - `getHwnd()` - Get window handle for integration with native Windows API - `getWidth()` - Get window width - `getHeight()` - Get window height - `getHeadline()` - Get window title - `getBkcolor()` - Get window background color - `getBkImage()` - Get window background image pointer - `getControls()` - Get reference to control management container, allowing iteration and manipulation of added controls ### Improved - **API Consistency**: Provided symmetric setter and getter methods for all important attributes - **Code Documentation**: Further improved class comments, making them clearer and more professional ## [1.0.0] - 2025-09-08 ### Release Summary First stable release ### Added - First stable version of StellarX framework - Complete control library: Button, Label, TextBox, Canvas, Table, and Window - CMake-based build system - Detailed documentation and example code - **Explicit declaration: This framework is specifically designed for Windows platform** ### Released - **First release of pre-compiled binary library files**, facilitating quick integration without compiling from source - Provided release packages include: - `StellarX-v1.0.0-x64-Windows-msvc-x64.zip` - **Build Environment**: Visual Studio 2022 (MSVC v143) - **Architecture**: x64 (64-bit) - **Runtime Library**: `/MD` - **Build Modes**: `Release | Debug` - **Contents**: Includes all necessary header files (`include/`) and static library files (`lib/StellarX-Debug.lib StellarX-Release.lib`) ### Core Features - Modular design following SOLID principles - Unified control interface (`draw()` and `handleEvent()`) - Support for multiple control shapes and styles - Custom event handling callbacks - Lightweight design with no external dependencies ## [0.1.0] - 2025-08-15 ### Added - Initial project structure and core architecture - Control base class and basic event handling system - Basic examples and documentation setup