Files
ewwii/CHANGELOG.md
2026-01-04 15:26:56 +05:30

9.6 KiB

Changelog

All notable changes to ewwii are documented here.

This changelog follows the Keep a Changelog format, and this project adheres to Semantic Versioning.

[UNRELEASED]

Added

  • gtk_ui function for loading .ui files.
  • widget-control (wc in short) command for controlling widgets.
  • placeholder property to input widget.
  • transition_duration property to stack widget.
  • widget_control utility function for dynamic widget handling.
  • text and show_text property to progressbar widget.
  • content_fit property to image widget.
  • can_shrink property to image widget.
  • mutations property to localsignal.
  • eval_ignore property to all widgets.
  • Touch support to scale widget.

Fixed

  • clockwise property not working on circular_progress.

Removed

  • icon widget.

[0.3.1] - 2025-11-01

Fixed

  • Circular progress bar not updating dynamically.
  • LocalSignal values not getting transformed to suite property type.
  • LocalBind not finding properties of range subclasses.

[0.3.0] - 2025-11-01

Added

  • localsignal signal for fast and cheap property update.
  • localbind utility for binding localsignal to a widget property.
  • onkeypress property to eventbox.
  • onkeyrelease property to eventbox.
  • Selection of dash as shell if it installed.
  • --with-plugin flag for daemon command.
  • register_function API in ewwii_plugin_api for registering functions that rhai can call to.
  • slib rhai module for calling functions registered via register_function.
  • orientation property to eventbox.
  • spacing property to eventbox.
  • space_evenly property to eventbox.
  • An advanced widget named flowbox.
  • focusable property to all widget.
  • widget_name property to all widget.
  • lifetime flag for update command.
  • circular-progress widget back.

Fixed

  • Old widget creeping into new ones after hot reload.
  • Ewwii defaulting to default gtk4 theme. #9
  • Few issues with eventbox drop target.
  • Poll/Listen variables not exposed in other modules on first launch.
  • Not able to define poll/listen variables in other files.
  • Overlay and Tooltip widgets not being reactive.

[0.3.0-beta] - 2025-10-11

Added

  • Support for binary level plugins.
  • set-plugin command to load shared libraries (i.e plugins).
  • ewwii_plugin_api crate for building ewwii plugins easily.

Changed

  • The name of slider widget to scale.

Fixed

  • focusable property not working issue.
  • Poll/Listen variable scope not accessable to all modules.

[0.3.0-alpha] - 2025-10-04

Added

  • GTK4 support.
  • can_target boolean property for all widgets.
  • icon widget which always preserves a scaling of 1:1.
  • Full native wayland compatibility (x11 compatibility has decreased).

Changed

  • The way dynamic updates are handled.
  • Window positioning logic.
  • X11 communication and x11 based window handling.
  • Daemon GTK main loop.
  • Application of sticky and stacking propery of window on X11.
  • The full implementation of eventbox widget.
  • GTK controller/signal handling.
  • Initialization logic of window.
  • Overlay widget dynamic post-creation re-creation logic (bugs are expected).

Removed

  • show_details property of calendar.
  • angle property from label.
  • icon_size property from image widget.
  • same_size property from stack widget (box is a replacement).
  • icon_name from image widget as a result of the introduction of icon widget.
  • transform, graph, and circular_progress widget (temporarily).
  • Application of css class on the window.
  • Legacy GTK3 related code.
  • Centerbox widget.

[0.2.0] - 2025-09-29

Added

  • state command to print the current poll/listen variable state.
  • m as another duration unit for minute.
  • std::regex library for regex matching.
  • engine-override command which can be used to change engine settings of a configuration.
  • force_normal property for ewwii windows. It allows user to create normal windows on wayland.
  • Better error support by migrating to rhai_trace v0.3.0.
  • File path indicator in rhai errors.

Fixed

  • The logs going to eww_{}.log instead of ewwii_{}.log.
  • Logs not truncating if it is over 100MB and not deleting if over 7 days old.
  • Ewwii crashing on invalid duration property.
  • The module resolver throwing error at import defenition.
  • Fixed commands sending error with success status.

Removed

  • Legacy true/false support for focusable window property.
  • $INPUT_VAL variable injected in commands ran by input widget.
  • Many dependencies and code for faster build and lesser binary size.
  • monitor library as a step towards GTK4.

[0.1.4] - 2025-09-18

Added

  • --preserve flag to the update command which preserves the new updates.

[0.1.3] - 2025-09-17

Changed

  • update command so that it preserves current widget state.
  • --inject-vars argument of update to just --inject (or -i in short).

Fixed

  • image_width and image_height not working for image widget.

[0.1.2] - 2025-09-13

Added

  • "Parent-death signal is not supported" warning on macOS.
  • Error logging on parent-death signal fail.

Fixed

  • Code not compiling for FreeBSD.

[0.1.1] - 2025-09-07

Added

  • Better poll handling for performance.

Changed

  • update to not require a window argument.

Fixed

  • Poll/Listen handlers not working for multiple windows.

[0.1.0] - 2025-09-06

Added

  • SIGINT and SIGTERM catching to KILL AND OBLITERATE children cleanly.
  • Proper poll/listen handler setup in open_window(...).
  • Cleaner poll/listen handler shutdown on ewwii close.
  • api::linux for getting system information like cpu, gpu, ram, disk, kernel version etc.
  • Support for defining multiple enter([..]) at top level.

Changed

  • Changed std::monitor return values so that it will work fine with Rhai.
  • Error handling so that it uses rhai_trace and codespan-reporting for more user-friendly and pretty errors.
  • Internal WidgetNode parsing so that user don't have to return anything (in rhai).

Fixed

  • Ewwii creating zombie process on opening window.
  • Ewwii shutting down all poll/listen handlers when any window closes.
  • Broken % based width/height in window definition.
  • Default poll/listen variables not working in external modules.
  • call-fns command not returning anything.
  • poll/listen definition extractor not skipping comments.

Removed

  • Deprecated attribute warning which cluttered the logs.
  • std::json (Rhai has built in json support).
  • std::math (Rhai already convers everything that it has).
  • The need for dyn_id for dynamic system. THIS IS A MAJOR UX change as it massivly reduces errors and the burden on users.
  • Daemon exit on configuration error mechanism in favor of hot-reloading.

[0.1.0-beta] - 2025-08-27

Added

  • std::json module to handle all json related tasks in Rhai.
  • api::wifi module for handling wifi related tasks.
  • Better error handling for ErrorFunctionNotFound.
  • Better dynamic system which can handle dyn_id issues and reodering.
  • std::math module for mathematics related tasks.
  • propagate_natural_height property to scroll widget.
  • Faster re-evaluation of configuration by reusing compiled configuration.
  • Improved runtime error handling of WidgetNode casting.
  • Caching for ParseConfig in re-evaluation system.
  • Proper error handling for runtime error in external module code.
  • call-fns command for calling a Rhai function. Note: The function can only see poll/listen variables as their initial value.
  • update command with --inject-vars flag to update widget state. Note: All poll/listen variables will reset to their initial values.
  • std::command module for running shell commands.
  • INPUT_VAL environment variable for Input widget commands (onchange and onaccept), containing the current text of the input field.
  • Parse error handling for external module code.
  • Killing poll/listen handlers feature in ewwii kill command.

Changed

  • x, y, widget, and height properties on window definition are now optional.
  • Internal Id to WidgetInfo mapping now borrows values instead of owning them to improve performance.
  • homogeneous is no longer set to true if space_evenly property on box is not defined.
  • Widget creation and diffing system to borrow WidgetNode instead of owning them to improve performance.

Fixed

  • Ewwii window not closing when user requests with WM_DELETE_WINDOW event.
  • Ewwii window not resizable by default.
  • Ewwii not printing errors from external modules.
  • Prevents early termination caused by kill_on_drop on listen.
  • Slider updating value while dragging issue.

[0.1.0-alpha] - 2025-08-18

Added

  • Introduced new programmable configuration system based on Rhai, replacing the Yuck syntax.
  • New widget tree system using Rhai functions like box, centerbox, defwidget, etc.
  • Diffing system which is the backbone of dynamic updates.

Changed

  • Complete rewrite of the internal widget compiler to support declarative Rhai input.
  • GTK widget construction is redesigned to work with the new tree.
  • Replaced Simplexpr and Yuck AST with Rhai's built in expression system and widget trees.
  • Removed dependency on Yuck parser.
  • Full rewrite of Documentation.

Removed

  • Entire Yuck and Simplexpr code from the parsing and rendering codebase.