Files
StellarX/CHANGELOG.en.md
2025-10-03 16:34:58 +08:00

7.0 KiB

Changelog

All notable changes to the StellarX project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

中文文档

[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