559 lines
18 KiB
Markdown
559 lines
18 KiB
Markdown
# Changelog
|
||
|
||
## Unreleased
|
||
|
||
## 0.6.2 - 2023-9-27
|
||
|
||
### Fixed
|
||
|
||
+ macros: Add support for accessing nested template children
|
||
|
||
## 0.6.1 - 2023-8-9
|
||
|
||
### Added
|
||
|
||
+ core: Add `TypedColumnView` as a typed wrapper for `gtk::ColumnView`
|
||
+ core: Add `set_margin_vertical` and `set_margin_horizontal` to RelmWidgetExt
|
||
|
||
### Fixed
|
||
|
||
+ core: Don't panic when dropping components from asynchronous contexts
|
||
+ core: Fix an issue with using `connect_open` on `gtk::Application`
|
||
+ core: Use GNOME 42 as baseline feature to help with Ubuntu 22.04
|
||
+ core: Fix compiler error when not using the "macros" feature
|
||
+ macros: Allow trailing commas in view!
|
||
+ macros: Allow multiple instances of the same template children
|
||
+ components: Disable default features of relm4
|
||
+ examples: Fix libadwaita tab examples
|
||
|
||
### Changed
|
||
|
||
+ examples: Add a separator to the libadwaita leaflet example.
|
||
|
||
## 0.6.0 - 2023-5-31
|
||
|
||
### Added
|
||
|
||
+ core: Implemented `RelmRemoveExt` for `adw::ExpanderRow`.
|
||
+ core: Implemented `ContainerChild` for `adw::ExpanderRow`.
|
||
+ core: Add `TypedListView` as idiomatic wrapper over `gtk::ListView`
|
||
|
||
### Fixed
|
||
|
||
+ macros: Improve error messages for non-identifier parameter patterns
|
||
|
||
## 0.6.0-beta.1 - 2023-4-19
|
||
|
||
### Added
|
||
|
||
+ core: Introduce setting and action safeties
|
||
+ core: Implement `RelmSetChildExt` for `gtk::AspectFrame`
|
||
+ core: Add `FactoryHashMap` as alternative to `FactoryVecDeque`
|
||
+ core: Add gnome_44 feature flag for GNOME 44
|
||
+ core: Documentation and better support for data bindings
|
||
+ core: Add `set_tooltip` method to `RelmWidgetExt`
|
||
+ core: Add `main_adw_application` method to retrieve the `adw::Application` when the libadwaita feature is enabled
|
||
+ macros: Add `skip_init` option for watch and track attributes to skip their initialization
|
||
+ examples: Introduce setting and action safeties
|
||
+ examples: Example for using relm4-icons
|
||
|
||
### Changed
|
||
|
||
+ core: Replace `FactoryVecDeque`'s associated function `from_vec` with `from_iter`
|
||
+ core: Added `Index` type to the `FactoryComponent` trait
|
||
+ core: Rename factory component traits `output_to_parent_input` method to `forward_to_parent`
|
||
+ core: Improved `RelmActionGroup` API
|
||
+ all: Increase MSRV to 1.65 to match the dependencies
|
||
|
||
### Fixed
|
||
|
||
+ all: Fix doc links
|
||
+ core: Improve worker docs
|
||
|
||
### Removed
|
||
|
||
+ core: Remove the deprecated `send!` macro
|
||
|
||
## 0.6.0-alpha.2 - 2023-3-13
|
||
|
||
### Added
|
||
|
||
+ core: Add data bindings
|
||
+ core: Implement `FactoryView` for `adw::Leaflet`
|
||
+ components: WebImage as component for easily loading images from the web
|
||
|
||
### Fixed
|
||
|
||
+ macros: Support template children of templates that are root widgets
|
||
+ macros: Fix order of assignment and connect statements
|
||
|
||
## 0.6.0-alpha.1 - 2023-2-29
|
||
|
||
### Added
|
||
|
||
+ core: Add `RelmApp` builder methods `with_args` and `with_broker`
|
||
+ core: Add `MessageBroker` support for `AsyncComponent`
|
||
|
||
### Changed
|
||
|
||
+ core: Change `MessageBroker` generic type parameter to message type
|
||
+ core: Rename `RelmApp` method `with_app` to `from_app`
|
||
+ core: Deprecate `RelmApp` methods `run_with_args` and `run_async_with_args`
|
||
|
||
## 0.5.0 - 2023-2-17
|
||
|
||
### Added
|
||
|
||
+ core: Implement `RelmSetChildExt` for `gtk::Expander`
|
||
+ macros: Support submenus in menu! macro
|
||
+ macros: Support widget templates as root widgets of components and factories
|
||
+ macros: Implement `Clone` for widget templates
|
||
|
||
### Changed
|
||
|
||
+ all: Use docs.rs to host the documentation. The documentation on the website will be deprecated.
|
||
|
||
### Fixed
|
||
|
||
+ core: Call shutdown on components even on application shutdown
|
||
+ core: Clearing and dropping a factory properly calls the shutdown method of its elements
|
||
+ components: Fix doc links to examples on GitHub
|
||
+ macros: Fix panic on incorrect root type syntax
|
||
+ macros: Fix incorrect type generation for generics
|
||
+ macros: Allow mutably root widgets
|
||
|
||
## 0.5.0-rc.2 - 2023-2-5
|
||
|
||
### Changed
|
||
|
||
+ core: Increase MSRV to 1.64 to match the gtk4 crate
|
||
+ all: Move examples into the corresponding crates
|
||
|
||
### Added
|
||
|
||
+ core: Add `broadcast` to `FactoryVecDeque`
|
||
|
||
### Fixed
|
||
|
||
+ core: Don't crash when the application is started multiple times
|
||
+ core: Support tokio also on local futures
|
||
+ core: Prevent leaking `CommandSenderInner` struct
|
||
+ core: Improve error message when sending input messages to dropped components
|
||
+ core: Fix scaping of examples on docs.rs
|
||
+ core: Fix crash caused by UID overflow with very large or frequently changing factories
|
||
+ macros: Fix clippy warning triggered by the view macro in some edge cases
|
||
+ macros: Import `relm4::ComponentSender` isn’t longer required
|
||
|
||
## 0.5.0-rc.1 - 2022-12-21
|
||
|
||
### Added
|
||
|
||
+ core: Add `try_read` and `try_write` methods to `SharedState`
|
||
+ core: Allow initializing `FactoryVecDeque` from a `Vec` and make it cloneable
|
||
+ core: Support factories with `adw::PreferencePage`
|
||
|
||
### Changed
|
||
|
||
+ core: Pass `&self` to the `Position::position()` function for positioning widgets
|
||
+ core: Take `&str` instead of `&[u8]` in `set_global_css()`
|
||
+ macros: Allow expressions for names of menu entries
|
||
|
||
### Fixed
|
||
|
||
+ core: Initialize GTK when calling `RelmApp::new()`
|
||
|
||
## 0.5.0-beta.5 - 2022-11-26
|
||
|
||
### Added
|
||
|
||
+ core: Add asynchronous components including macro support
|
||
+ core: Add asynchronous factories including macro support
|
||
+ core: Temporary widget initialization for async components and factories
|
||
+ core: Add `LoadingWidgets` to help with temporary loading widgets in async factories and components
|
||
+ core: Add `Reducer` as message based alternative to `SharedState`
|
||
+ core: Synchronous API for commands
|
||
+ core: Remove async-broadcast dependency
|
||
+ core: Runtimes of `Component`s and `AsyncComponents` can now be detached for a static lifetime
|
||
+ core: Add `ComponentStream` as alternative to `Controller` that implements `Stream` for async message handling
|
||
+ core: Add `gnome_42` and `gnome_43` feature flags
|
||
+ core: Implement `RelmContainerExt` for `adw::Squeezer`
|
||
+ core: Implement `RelmSetChildExt` for `gtk::WindowHandle`
|
||
+ macros: Auto-generate the name of the `Widgets` type if possible
|
||
|
||
### Changed
|
||
|
||
+ core: Rename `FactoryComponentSender` to `FactorySender` and `AsyncFactoryComponentSender` to `AsyncFactorySender`
|
||
+ core: The sender API now supports proper error handling
|
||
+ core: Pass `Root` during `update` and `update_cmd` for `Component` and `AsyncComponent`
|
||
+ core: Rename `OnDestroy` to `RelmObjectExt`
|
||
+ core: Remove `EmptyRoot` in favor of the unit type
|
||
+ macros: Allow using methods calls as widget initializers in the `view` macro
|
||
+ macros: Explicitly using `visibility` as attribute name is no longer supported
|
||
|
||
### Fixed
|
||
|
||
+ all: Fix doc builds on docs.rs and add a CI job to prevent future doc failures
|
||
+ core: Fix various bugs related to component shutdown
|
||
+ core: `shutdown` on `Component` now works as expected
|
||
+ core: `shutdown` on `FactoryComponent` now works as expected
|
||
+ core: `transient_for` on `ComponentBuilder` now works properly when called after the application has been initialized
|
||
+ macros: Mark template children of public widget templates as public as well
|
||
+ macros: Only get template children in scope when they are actually used
|
||
+ macros: Fix type parsing after arrow operator in widget assignments
|
||
|
||
## 0.5.0-beta.4 - 2022-10-24
|
||
|
||
### Added
|
||
|
||
+ core: Added `dox` feature to be able to build the docs without the dependencies
|
||
+ core: Added widget templates
|
||
+ core: Allow changing the priority of event loops of components
|
||
+ core: Impl `ContainerChild` and `RelmSetChildExt` for `adw::ToastOverlay`
|
||
+ components: Added `dox` feature to be able to build the docs without the dependencies
|
||
+ examples: Add libadwaita Leaflet sidebar example
|
||
+ examples: Port entry, actions and popover examples to 0.5
|
||
|
||
### Changed
|
||
|
||
+ core: Improved `DrawHandler`
|
||
+ core: Made the `macros` feature a default feature
|
||
+ core: Remove async-oneshot dependency and replace it with tokio's oneshot channel
|
||
+ core: Remove WidgetPlus in favor of RelmWidgetExt
|
||
+ core: Add convenience getter-methods to Controller
|
||
+ core: `add_action` of `RelmActionGroup` now takes a reference to a `RelmAction` as a parameter
|
||
+ examples: Many improvements
|
||
+ macros: `parse_with_path`, `update_stream`, `inject_view_code` and `generate_tokens` take references for some of their parameters
|
||
+ artwork: Update logo
|
||
|
||
### Fixed
|
||
|
||
+ macros: Fix usage of RelmContainerExt with local_ref attribute
|
||
+ macros: Report RelmContainerExt error at the correct span
|
||
|
||
## 0.5.0-beta.3 - 2022-9-28
|
||
|
||
### Added
|
||
|
||
+ core: Add `iter_mut` to `FactoryVecDeque`
|
||
+ core: Impl extension traits and `FactoryView` for `adw::PreferencesGroup`
|
||
+ core: Add a `prelude` module that contains commonly imported traits and types
|
||
+ core: Implement RelmContainerExt for Leaflet, Carousel and TabView
|
||
+ core: Add `iter()` method to `FactoryVecDeque`
|
||
+ core: Add getter for global application to simplify graceful shutdown of applications
|
||
+ core: Add MessageBroker type to allow communication between components on different levels
|
||
+ core: Return a clone of the `DynamicIndex` after inserting into a factory
|
||
+ macros: Add shorthand syntax for simple input messages
|
||
+ macros: Add chain attribute for properties
|
||
+ components: Add `SimpleComboBox` type as a more idiomatic wrapper around `gtk::ComboBoxText`
|
||
+ components: Port `OpenButton` to 0.5
|
||
+ book: Many chapters ported to 0.5
|
||
|
||
### Changed
|
||
|
||
+ core: Improve `SharedState` interface and prefer method names related to `RwLock`
|
||
+ core: Remove Debug requirement for FactoryComponent
|
||
+ core: Remove `input` and `output` fields on `ComponentSender` and `FactoryComponentSender` in favor of `input_sender` and `output_sender` methods
|
||
+ core: Make `ComponentSender` and `FactoryComponentSender` structs instead of type aliases
|
||
+ core: Increase MSRV to 1.63 to match the gtk4 crate
|
||
+ core: Rename `ParentMsg` and `output_to_parent_msg` to `ParentInput` and `output_to_parent_input`, respectively.
|
||
+ core: Do not call `gtk_init` and `adw_init` in favor of the application startup handler
|
||
+ core: Remove `Application` type alias in favor of `gtk::Application`
|
||
+ core: Make `app` field on `RelmApp` private
|
||
+ core: Use late initialization for transient_for and its native variant
|
||
+ core: Rename InitParams to Init in SimpleComponent and Worker too
|
||
+ macros: Don't generate dead code in the widgets struct
|
||
+ macros: Improve error reporting on invalid trait implementations
|
||
|
||
### Fixed
|
||
|
||
+ core: Append children for `gtk::Dialog` to its content area instead of using `set_child`
|
||
+ macros: Fix returned widgets assignment in the view macro
|
||
|
||
### Misc
|
||
|
||
+ all: Use more clippy lints and clean up the code in general
|
||
|
||
## 0.5.0-beta.2 - 2022-8-12
|
||
|
||
### Added
|
||
|
||
+ core: Add oneshot_command method to ComponentSender
|
||
+ core: Implement FactoryView for adw::Carousel
|
||
+ components: Complete port to 0.5
|
||
+ examples: More examples ported to 0.5
|
||
|
||
### Changed
|
||
|
||
+ core: Rename InitParams to Init
|
||
+ core: Pass senders by value
|
||
+ core: Make factories use FactoryComponentSender instead of individual senders for input and output
|
||
+ core: Remove generics from FactoryComponent
|
||
|
||
### Fixed
|
||
|
||
+ macros: Fix unsoundness with thread local memory
|
||
|
||
## 0.5.0-beta.1 - 2022-7-26
|
||
|
||
### Added
|
||
|
||
+ core: Introduce commands
|
||
|
||
### Changed
|
||
|
||
+ core: The Component trait replaces AppUpdate, ComponentUpdate, AsyncComponentUpdate, MessageHandler, MicroModel, MicroWidgets, Components and Widgets
|
||
+ core: Replace FactoryPrototype with FactoryComponent
|
||
+ core: Drop FactoryVec and make FactoryVecDeque easier to use
|
||
+ core: Improved component initialization and lifecycle
|
||
+ macros: Replace iterate, track and watch with attributes
|
||
+ macros: Replace args! with only parenthesis
|
||
+ macros: Improved macro syntax
|
||
+ examples: Many rewrites for the new version
|
||
|
||
## 0.4.4 - 2022-3-30
|
||
|
||
### Changed
|
||
|
||
+ all: Repositories were transferred to the Relm4 organization
|
||
|
||
### Fixed
|
||
|
||
+ macros: Don't interpret expr != expr as macro
|
||
+ core: Always initialize GTK/Libadwaita before running apps
|
||
+ macros: Some doc link fixes
|
||
|
||
## 0.4.3 - 2022-3-13
|
||
|
||
### Added
|
||
|
||
+ core: Add WidgetRef trait to make AsRef easier accessible for widgets
|
||
+ macros: Destructure widgets in Widgets::view
|
||
|
||
### Fixed
|
||
|
||
+ macros: Use correct widget type in derive macro for components
|
||
+ macros: Fix parsing of `property: value == other,` expressions
|
||
+ core: Fixed the position type for TabView
|
||
+ core: Fixed state changes in FactoryVec (by [V02460](https://github.com/V02460))
|
||
+ macros: Parse whole expressions instead of just literals
|
||
|
||
## 0.4.2 - 2022-2-4
|
||
|
||
### Added
|
||
|
||
+ macros: The view macro now allows dereferencing widgets with *
|
||
|
||
### Fixed
|
||
|
||
+ core: Fixed clear method of FactoryVec
|
||
+ macros: The micro_component macro now parses post_view correctly
|
||
+ macros: Fix the ordering of properties in the view macro
|
||
+ macros: Fix the ordering of widget assignments in the view macro
|
||
|
||
## 0.4.1 - 2022-1-17
|
||
|
||
### Added
|
||
|
||
+ macros: Improved documentation
|
||
|
||
### Fixed
|
||
|
||
+ core: Action macros now include the required traits themselves
|
||
+ macros: Allow connecting events in the view macro
|
||
|
||
## 0.4.0 - 2022-1-16
|
||
|
||
### Added
|
||
|
||
+ all: Update gtk4-rs to v0.4
|
||
+ core: Introduce the "macro" feature as alternative to using relm4-macros separately
|
||
+ macros: Add a macros for MicroComponents and Factories
|
||
+ macros: Add a post_view function to execute code after the view code of the macro
|
||
+ macros: Allow using the view and menu macros independently from the widget macro
|
||
+ macros: Allow using mutable widgets in view
|
||
+ macros: Improve error messages for anonymous widgets
|
||
|
||
### Changed
|
||
|
||
+ core: Renamed methods of the FactoryPrototype trait to better match with the rest of Relm4
|
||
+ macros: manual_view is now called pre_view
|
||
+ book: Reworked introduction and first chapter
|
||
|
||
### Fixed
|
||
|
||
+ core: Fix panic caused by the clear method of FactoryVecDeque
|
||
|
||
## 0.4.0-beta.3 - 2021-12-28
|
||
|
||
### Added
|
||
|
||
+ core: A factory view implementation for libadwaita's StackView
|
||
+ macros: Allow early returns in manual_view (by [euclio](https://github.com/euclio))
|
||
|
||
### Changed
|
||
|
||
+ core: Make GTK's command line argument handling optional (by [euclio](https://github.com/euclio))
|
||
+ core: DynamicIndex now implements Send but panics when used on other threads
|
||
|
||
## 0.4.0-beta.2 - 2021-11-26
|
||
|
||
+ macros: Add optional returned widget syntax
|
||
|
||
## 0.4.0-beta.1 - 2021-11-21
|
||
|
||
### Added
|
||
|
||
+ core: Micro components
|
||
+ core: Type safe actions API
|
||
+ macros: Menu macro for creating menus
|
||
+ macros: New returned widget syntax
|
||
+ examples Micro components example
|
||
|
||
### Changed
|
||
|
||
+ core: Initialize widgets from the outermost components to the app
|
||
+ macros: component! removed and parent! was added instead
|
||
|
||
### Removed
|
||
|
||
+ core: RelmComponent::with_new_thread
|
||
|
||
## 0.2.1 - 2021-10-17
|
||
|
||
### Added
|
||
|
||
+ core: Added sender method to RelmComponent
|
||
+ macros: New shorthand tracker syntax
|
||
+ macros: Allow generic function parameters in properties
|
||
|
||
### Changed
|
||
|
||
+ core: Use adw::Application when "libadwaita" feature is active
|
||
|
||
## 0.2.0 - 2021-10-09
|
||
|
||
### Changed
|
||
|
||
+ core: Pass model in connect_components function of the Widgets trait
|
||
+ core: Mini rework of factories
|
||
+ core: Removed DefaultWidgets trait in favor of Default implementations in gkt4-rs
|
||
+ book: Many book improvements by [tronta](https://github.com/tronta)
|
||
|
||
### Added
|
||
|
||
+ core: Added with_app method that allows passing an existing gtk::Application to Relm4
|
||
+ core: Methods to access the widgets of components
|
||
+ core: Re-export for gtk
|
||
+ macros: Support named arguments in the widget macro (by [mskorkowski](https://github.com/mskorkowski))
|
||
+ macros: Support usage of re-export paths in the widget macro (by [mskorkowski](https://github.com/mskorkowski))
|
||
+ macros: Added error message when confusing `=` and `:`
|
||
+ macros: Allow usage of visibilities other than pub
|
||
+ macros: New pre_connect_components and post_connect_components for manual components code
|
||
|
||
### Fixed
|
||
|
||
+ macros: Parsing the first widget should now always work as expected
|
||
+ macros: [#20](https://github.com/Relm4/relm4/issues/20) Fix wrong order when using components in the widget macro
|
||
|
||
## 0.1.0 - 2021-09-06
|
||
|
||
### Added
|
||
|
||
+ core: Added message handler type
|
||
+ core: More methods for factory data structures
|
||
+ macros: Add syntax for connecting events with components
|
||
+ examples: Stack example
|
||
+ book: Added macro expansion chapter
|
||
|
||
### Changed
|
||
|
||
+ book: Added message handler chapter and reworked the threads and async chapter
|
||
+ book: Many book improvements by [tronta](https://github.com/tronta)
|
||
+ core: The send! macro no longer clones the sender
|
||
+ macros: Make fields of public widgets public
|
||
+ components: Use &'static str instead of String for configurations
|
||
+ examples: Many improvements
|
||
|
||
### Fixed
|
||
|
||
+ macros: Use fully qualified syntax for factories
|
||
+ macros: Passing additional arguments now works for components and other properties, too.
|
||
|
||
## 0.1.0-beta.9 - 2021-08-24
|
||
|
||
### Added
|
||
|
||
+ components: Open button with automatic recent files list
|
||
+ components: Removed trait duplication and added more docs
|
||
+ core: Iterators added to factory data structures
|
||
+ core: More widgets added as FactoryView
|
||
|
||
### Changed
|
||
|
||
+ book: Many book improvements by [tronta](https://github.com/tronta)
|
||
+ core: Removed class name methods from WidgetPlus [#14](https://github.com/Relm4/relm4/pull/14)
|
||
|
||
### Fixed
|
||
|
||
+ macros: Parsing additional fields should be more stable now
|
||
+ macros: Widgets can not include comments at the top
|
||
|
||
## 0.1.0-beta.8 - 2021-08-20
|
||
|
||
### Added
|
||
|
||
+ core: Support for libadwaita 🎉
|
||
+ macros: Fully qualified syntax for trait disambiguation
|
||
+ macros: Allow passing additional arguments to widget initialization (useful e.g. for grids)
|
||
+ book: Reusable components and widget macro reference chapters
|
||
|
||
### Changed
|
||
|
||
+ macros: Improved error messages
|
||
|
||
## 0.1.0-beta.7 - 2021-08-19
|
||
|
||
### Added
|
||
|
||
+ book: Factory, components, worker and thread + async chapters
|
||
|
||
### Changed
|
||
|
||
+ core: get and get_mut of FactoryVec and FactoryVecDeque now return an Option to prevent panics
|
||
|
||
### Fixed
|
||
|
||
+ macros: Fixed components
|
||
+ core: Fixed unsound removal of elements in FactoryVecDeque
|
||
|
||
|
||
## 0.1.0-beta.6 - 2021-08-18
|
||
|
||
### Changed
|
||
|
||
+ core: Improved and adjusted the FactoryPrototype trait
|
||
|
||
### Added
|
||
|
||
+ core: Added the FactoryListView trait for more flexibility
|
||
+ core: Added a FactoryVecDeque container
|
||
+ core: Implemented FactoryView and FactoryListView for more widgets
|
||
+ examples: More examples
|
||
|
||
### Fixed
|
||
|
||
+ macros: Fixed the factory! macro
|
||
|
||
## 0.1.0-beta.5 - 2021-08-15
|
||
|
||
### Added
|
||
|
||
+ core: Drawing handler for gtk::DrawingArea
|
||
+ core: New CSS methods in WidgetPlus trait
|
||
+ examples: Many new examples
|
||
|
||
### Changed
|
||
|
||
+ core: Many doc improvements
|
||
+ macros: Improved tracker! macro
|