- chore: adw::ToggleGroup factory over adw::Toggle & refactor nix
- core: Implement container and factory traits for
adw::WrapBox - docs: Document
update_viewrequirement on factory methods - core: Implement container traits for
gtk::TreeExpander,gtk::MenuButton,gtk::SearchBar,gtk::Viewport, andadw::Dialog - macros: Allow setting conditional widget
gtk::Stackproperties - core: Implement factory view for
gtk::Fixed - macros: Conditional root widgets
- macros: Deprecate
#[transition]conditional widget attribute - examples: Replace deprecated
#[transition]attribute
- exclude nix files when publishing to crates.io. commit
- components: Let popover menu of recent files from
OpenButtoncomponent grow and shrink naturally. - components: Let popover menu of recent files from
OpenButtoncomponent to show vertical scrolling when it is necessary. - components: Deactivate recent files popover menu button from
OpenButtoncomponent when there are no recent files and activate it back when files were opened. - examples: Documentation
- GNOME 50 features
- all: Update dependencies
- build: Switch documentation build back to latest Rust nightly version to match how docs.rs builds it.
- core: Increase MSRV to 1.93 to incorporate latest Rust features
- all: Update dependencies in
relm4crate torelm4-*crate to0.10.1to make sureunused_assignmentsfix is delivered onrelm4version update. Fixes #842. - core: Fix incorrectly enabled
adw/v1_9dependent feature flag forgnome_49. Gnome 49 ships withlibadwaita1.8. - components: Set modality on actual window when is_modal set in AlertSettings. Fixes #837.
- components: Fix
Gtk-CRITITCALin popover menu of recent files inOpenButtoncomponent. Fixes #858. - documentation: Fix broken link in
relm4crate
- core: Add
AsyncReducibleandAsyncReducerfor reducers that can useasync/await - core: Add gnome_49 feature flag for GNOME 49
- core: Export
RelmSelectionExttrait publicly fromrelm4::typed_viewmodule to allow for user extensions ofTypedColumnView - core: Implement
Bindingfor various Adwaita widgets - build: Use
workspace.dependenciesto unify dependencies version management across all crates in project's workspace. - examples: New example
message_from_grid_view, that shows how to send a message from grid view
- core: Increase MSRV to 1.92 to incorporate latest Rust features
- build: update all dependencies to fix check-docs ci failure
- all: Update dependencies
- docs: Fix invalid syntax in
menu!documentation - examples: derive Default impl for
GameState
- all: Update dependencies
- components: Add
icontoIconButton - core: Implement container traits to allow easier usage of libpanel widgets in the view macro
- core: Support naturally appending any
Widgets as children toListBoxandFlowBoxin view macro. - examples: Add an example that shows how to use
adw::NavigationSplitViewwith aadw::Stack - core: Add convenience methods for setting the active
StackPageinFactoryVecDequeandFactoryHashMap - core: Impl
Bindingforgtk::CheckButton - core: Added a method to change column headers in
RelmColumn. Useful for translations - core: Add a
itermethods for iterating items inTypedColumnView,TypedGridViewandTypedListView - core: Add method
FactoryVecDeque::extendto append multiple components efficiently.
- all: Use the 2024 edition and increase MSRV to 1.85 to match the dependencies
- example "tracker": Display identical background when initial icons are in fact identical.
- core: Add gnome_47 feature flag for GNOME 47
- core: Add more async factory types to prelude
- core: Add
notify_filter_changedto typed views to allow dynamic filters
- components: Hide recent button from
OpenButtoncomponent when there is no entries
- core: Target gtk/gnome_46 with the gnome_46 feature flag
- components: Replace deprecated
from_pixbuf()usage - components: Don't panic in
get_active_elem()when calling onSimpleComboBoxwith empty variants - core: Ignore sending error if async component was dropped quickly
- macros: Destructure fields of returned widgets
- examples: Add example that shows embedded logo
- core: Add
set_alignandset_expandtoRelmWidgetExtto set horizontal and vertical properties at once - core: Add
allow_multiple_instances()toRelmAppto allow multiple concurrent instances of the same application - core: Add extension traits for
adw::PreferencesPage - examples: drop sub-components instead of hiding
- examples: Add example for using multiple windows
- core: Add functions to set priority of CSS stylesheets
- core: Rewrite
Alertcomponent from scratch to work with both GTK4 and Adwaita - css: Add Adwaita style classes and colors
- core: Migrate codebase over to using
relm4-css - components: Increase flexibility of
Alertcomponent - components: Make
Alertcomponent match styling of Adwaita'sMessageDialogbetter
- core: Simplified internal code for runtime creation
- all: update dependencies
- core: Don't require
CloneandDebugfor the generic action name parameter inRelmAction - examples: show the dialog before closing in "components" example
- docs: Fix builds on docs.rs (by upgrading relm4-icons)
- components: Don't use libadwaita by default
- core: Switch to regular async traits in favor of the async-trait crate
- all: Updated all dependencies to their latest version
- all: Increase MSRV to 1.75 to match the dependencies
- docs: Fix builds on docs.rs (by upgrading relm4-icons)
- core: Add
Toasteras abstraction overadw::ToastOverlayfor usage in the model of a component - core: Add
TypedGridViewas idiomatic wrapper overgtk::GridView
- core: Remove unmaintained actions code
- core: Move libadwaita examples in regular examples folder
- core: Move
drawingmodule toabstractions
- core: Implement more traits for libadwaita 1.4 widgets
- core: Add
size()method toDrawHandlerfor easier access of width and height - core: Add method to set
RelmActionenabled or disabled - core: Add method to get the inner
gio::SimpleActionused byRelmAction - core: Add resizeable/expandable column functionality to
RelmColumnandLabelColum - core: Pass the
Rootas owned parameter (without reference) toComponent::init - core: Add
visible_on_activate()toRelmAppto prevent the app window from being visible immediately - core: Make
into_stream()method onReceiverpublic - examples: Add libadwaita
Toastexample
- core: Make
set_global_cssandset_global_css_from_filemethods ofRelmAppto prevent calling them before initializing GTK - core: Always pass the
Rootas owned parameter (without reference) (affectsComponent::init,Factory::init_widgets,AsyncComponent::init_loading_widgets,AsyncFactory::init_widgetsandAsyncFactory::init_loading_widgets) - core: Move internal initialization to
gtk::Application::startupsignal handler - core: Remove deprecated RelmApp methods
- components: Increase flexibility of
Alertcomponent - core: Bump version of libpanel dependency to 0.3
- all: Increase MSRV to 1.74 to match the dependencies
- core: Report the correct dimensions in DrawingHandler when a scaling factor is set
- core: Setting the visibility of the main window isn't overridden by
RelmAppanymore - core: Fix timing of
transient_for()when called after app init
- core: Add builder for initializing async factories
- core: Add
launch_default()method to factory builders for launching with default parent widget - core: Implement
RelmContainerExtfor libadwaita 1.4'sNavigationView - core: Implement
RelmSetChildExtfor libadwaita 1.4'sNavigationPage
- core: Return
ResultfromFactorySender#outputmethod (so that errors are not silently unwrapped) - core: Move parameters from
builder()tolaunch()in factories for more consistency
- core: Properly re-export factory builder types and document them
- core: Add
AsyncComponentStreamto supports streams for async components as well - core: Builder pattern for initializing factories similar to regular components
- components: Add
SimpleComboRowhelper for libadwaita'sComboRow, analogous toSimpleComboBox - components: Add an example for
SimpleComboRow - components: Add an example how to use
SimpleComboBox
- core: Add
Inittype to theWidgetTemplatetrait to allow passing data toinit() - core: Just require
AsRef<gtk::Window>inRelmApp::run - core: Add
AsRef<Root>as requirement to theWidgetTemplatetrait - core: Removed
forward_to_parentfromFactoryComponent
- macros: Improve spans in code generation to prevent false positive lints
- macros: Fix track attribute for template children
- macros: Allow trailing commas in the last match arm
- core: Add gnome_45 feature flag for GNOME 45
- core: Bump version of gtk4 dependency to 0.7
- core: Bump version of libadwaita dependency to 0.5
- macros: Add support for accessing nested template children
- core: Add
TypedColumnViewas a typed wrapper forgtk::ColumnView - core: Add
set_margin_verticalandset_margin_horizontalto RelmWidgetExt
- core: Don't panic when dropping components from asynchronous contexts
- core: Fix an issue with using
connect_openongtk::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
- examples: Add a separator to the libadwaita leaflet example.
- core: Implemented
RelmRemoveExtforadw::ExpanderRow. - core: Implemented
ContainerChildforadw::ExpanderRow. - core: Add
TypedListViewas idiomatic wrapper overgtk::ListView
- macros: Improve error messages for non-identifier parameter patterns
- core: Introduce setting and action safeties
- core: Implement
RelmSetChildExtforgtk::AspectFrame - core: Add
FactoryHashMapas alternative toFactoryVecDeque - core: Add gnome_44 feature flag for GNOME 44
- core: Documentation and better support for data bindings
- core: Add
set_tooltipmethod toRelmWidgetExt - core: Add
main_adw_applicationmethod to retrieve theadw::Applicationwhen the libadwaita feature is enabled - macros: Add
skip_initoption for watch and track attributes to skip their initialization - examples: Introduce setting and action safeties
- examples: Example for using relm4-icons
- core: Replace
FactoryVecDeque's associated functionfrom_vecwithfrom_iter - core: Added
Indextype to theFactoryComponenttrait - core: Rename factory component traits
output_to_parent_inputmethod toforward_to_parent - core: Improved
RelmActionGroupAPI - all: Increase MSRV to 1.65 to match the dependencies
- all: Fix doc links
- core: Improve worker docs
- core: Remove the deprecated
send!macro
- core: Add data bindings
- core: Implement
FactoryViewforadw::Leaflet - components: WebImage as component for easily loading images from the web
- macros: Support template children of templates that are root widgets
- macros: Fix order of assignment and connect statements
- core: Add
RelmAppbuilder methodswith_argsandwith_broker - core: Add
MessageBrokersupport forAsyncComponent
- core: Change
MessageBrokergeneric type parameter to message type - core: Rename
RelmAppmethodwith_apptofrom_app - core: Deprecate
RelmAppmethodsrun_with_argsandrun_async_with_args
- core: Implement
RelmSetChildExtforgtk::Expander - macros: Support submenus in menu! macro
- macros: Support widget templates as root widgets of components and factories
- macros: Implement
Clonefor widget templates
- all: Use docs.rs to host the documentation. The documentation on the website will be deprecated.
- 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
- core: Increase MSRV to 1.64 to match the gtk4 crate
- all: Move examples into the corresponding crates
- core: Add
broadcasttoFactoryVecDeque
- core: Don't crash when the application is started multiple times
- core: Support tokio also on local futures
- core: Prevent leaking
CommandSenderInnerstruct - 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::ComponentSenderisn’t longer required
- core: Add
try_readandtry_writemethods toSharedState - core: Allow initializing
FactoryVecDequefrom aVecand make it cloneable - core: Support factories with
adw::PreferencePage
- core: Pass
&selfto thePosition::position()function for positioning widgets - core: Take
&strinstead of&[u8]inset_global_css() - macros: Allow expressions for names of menu entries
- core: Initialize GTK when calling
RelmApp::new()
- 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
LoadingWidgetsto help with temporary loading widgets in async factories and components - core: Add
Reduceras message based alternative toSharedState - core: Synchronous API for commands
- core: Remove async-broadcast dependency
- core: Runtimes of
Components andAsyncComponentscan now be detached for a static lifetime - core: Add
ComponentStreamas alternative toControllerthat implementsStreamfor async message handling - core: Add
gnome_42andgnome_43feature flags - core: Implement
RelmContainerExtforadw::Squeezer - core: Implement
RelmSetChildExtforgtk::WindowHandle - macros: Auto-generate the name of the
Widgetstype if possible
- core: Rename
FactoryComponentSendertoFactorySenderandAsyncFactoryComponentSendertoAsyncFactorySender - core: The sender API now supports proper error handling
- core: Pass
Rootduringupdateandupdate_cmdforComponentandAsyncComponent - core: Rename
OnDestroytoRelmObjectExt - core: Remove
EmptyRootin favor of the unit type - macros: Allow using methods calls as widget initializers in the
viewmacro - macros: Explicitly using
visibilityas attribute name is no longer supported
- 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:
shutdownonComponentnow works as expected - core:
shutdownonFactoryComponentnow works as expected - core:
transient_foronComponentBuildernow 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
- core: Added
doxfeature 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
ContainerChildandRelmSetChildExtforadw::ToastOverlay - components: Added
doxfeature 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
- core: Improved
DrawHandler - core: Made the
macrosfeature 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_actionofRelmActionGroupnow takes a reference to aRelmActionas a parameter - examples: Many improvements
- macros:
parse_with_path,update_stream,inject_view_codeandgenerate_tokenstake references for some of their parameters - artwork: Update logo
- macros: Fix usage of RelmContainerExt with local_ref attribute
- macros: Report RelmContainerExt error at the correct span
- core: Add
iter_muttoFactoryVecDeque - core: Impl extension traits and
FactoryViewforadw::PreferencesGroup - core: Add a
preludemodule that contains commonly imported traits and types - core: Implement RelmContainerExt for Leaflet, Carousel and TabView
- core: Add
iter()method toFactoryVecDeque - 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
DynamicIndexafter inserting into a factory - macros: Add shorthand syntax for simple input messages
- macros: Add chain attribute for properties
- components: Add
SimpleComboBoxtype as a more idiomatic wrapper aroundgtk::ComboBoxText - components: Port
OpenButtonto 0.5 - book: Many chapters ported to 0.5
- core: Improve
SharedStateinterface and prefer method names related toRwLock - core: Remove Debug requirement for FactoryComponent
- core: Remove
inputandoutputfields onComponentSenderandFactoryComponentSenderin favor ofinput_senderandoutput_sendermethods - core: Make
ComponentSenderandFactoryComponentSenderstructs instead of type aliases - core: Increase MSRV to 1.63 to match the gtk4 crate
- core: Rename
ParentMsgandoutput_to_parent_msgtoParentInputandoutput_to_parent_input, respectively. - core: Do not call
gtk_initandadw_initin favor of the application startup handler - core: Remove
Applicationtype alias in favor ofgtk::Application - core: Make
appfield onRelmAppprivate - 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
- core: Append children for
gtk::Dialogto its content area instead of usingset_child - macros: Fix returned widgets assignment in the view macro
- all: Use more clippy lints and clean up the code in general
- 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
- 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
- macros: Fix unsoundness with thread local memory
- core: Introduce commands
- 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
- all: Repositories were transferred to the Relm4 organization
- macros: Don't interpret expr != expr as macro
- core: Always initialize GTK/Libadwaita before running apps
- macros: Some doc link fixes
- core: Add WidgetRef trait to make AsRef easier accessible for widgets
- macros: Destructure widgets in Widgets::view
- 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)
- macros: Parse whole expressions instead of just literals
- macros: The view macro now allows dereferencing widgets with *
- 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
- macros: Improved documentation
- core: Action macros now include the required traits themselves
- macros: Allow connecting events in the view macro
- 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
- 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
- core: Fix panic caused by the clear method of FactoryVecDeque
- core: A factory view implementation for libadwaita's StackView
- macros: Allow early returns in manual_view (by euclio)
- core: Make GTK's command line argument handling optional (by euclio)
- core: DynamicIndex now implements Send but panics when used on other threads
- macros: Add optional returned widget syntax
- core: Micro components
- core: Type safe actions API
- macros: Menu macro for creating menus
- macros: New returned widget syntax
- examples Micro components example
- core: Initialize widgets from the outermost components to the app
- macros: component! removed and parent! was added instead
- core: RelmComponent::with_new_thread
- core: Added sender method to RelmComponent
- macros: New shorthand tracker syntax
- macros: Allow generic function parameters in properties
- core: Use adw::Application when "libadwaita" feature is active
- 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
- 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)
- macros: Support usage of re-export paths in the widget macro (by 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
- macros: Parsing the first widget should now always work as expected
- macros: #20 Fix wrong order when using components in the widget macro
- 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
- book: Added message handler chapter and reworked the threads and async chapter
- book: Many book improvements by 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
- macros: Use fully qualified syntax for factories
- macros: Passing additional arguments now works for components and other properties, too.
- 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
- macros: Parsing additional fields should be more stable now
- macros: Widgets can not include comments at the top
- 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
- macros: Improved error messages
- book: Factory, components, worker and thread + async chapters
- core: get and get_mut of FactoryVec and FactoryVecDeque now return an Option to prevent panics
- macros: Fixed components
- core: Fixed unsound removal of elements in FactoryVecDeque
- core: Improved and adjusted the FactoryPrototype trait
- core: Added the FactoryListView trait for more flexibility
- core: Added a FactoryVecDeque container
- core: Implemented FactoryView and FactoryListView for more widgets
- examples: More examples
- macros: Fixed the factory! macro
- core: Drawing handler for gtk::DrawingArea
- core: New CSS methods in WidgetPlus trait
- examples: Many new examples
- core: Many doc improvements
- macros: Improved tracker! macro