- core: Add
allow_multiple_instances()
toRelmApp
to allow multiple concurrent instances of the same application - core: Add extension traits for
adw::PreferencesPage
- core: Simplified internal code for runtime creation
- core: Don't require
Clone
andDebug
for 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
Toaster
as abstraction overadw::ToastOverlay
for usage in the model of a component - core: Add
TypedGridView
as idiomatic wrapper overgtk::GridView
- core: Remove unmaintained actions code
- core: Move libadwaita examples in regular examples folder
- core: Move
drawing
module toabstractions
- core: Implement more traits for libadwaita 1.4 widgets
- core: Add
size()
method toDrawHandler
for easier access of width and height - core: Add method to set
RelmAction
enabled or disabled - core: Add method to get the inner
gio::SimpleAction
used byRelmAction
- core: Add resizeable/expandable column functionality to
RelmColumn
andLabelColum
- core: Pass the
Root
as owned parameter (without reference) toComponent::init
- core: Add
visible_on_activate()
toRelmApp
to prevent the app window from being visible immediately - core: Make
into_stream()
method onReceiver
public - examples: Add libadwaita
Toast
example
- core: Make
set_global_css
andset_global_css_from_file
methods ofRelmApp
to prevent calling them before initializing GTK - core: Always pass the
Root
as owned parameter (without reference) (affectsComponent::init
,Factory::init_widgets
,AsyncComponent::init_loading_widgets
,AsyncFactory::init_widgets
andAsyncFactory::init_loading_widgets
) - core: Move internal initialization to
gtk::Application::startup
signal handler - core: Remove deprecated RelmApp methods
- components: Increase flexibility of
Alert
component - 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
RelmApp
anymore - 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
RelmContainerExt
for libadwaita 1.4'sNavigationView
- core: Implement
RelmSetChildExt
for libadwaita 1.4'sNavigationPage
- core: Return
Result
fromFactorySender#output
method (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
AsyncComponentStream
to supports streams for async components as well - core: Builder pattern for initializing factories similar to regular components
- components: Add
SimpleComboRow
helper for libadwaita'sComboRow
, analogous toSimpleComboBox
- components: Add an example for
SimpleComboRow
- components: Add an example how to use
SimpleComboBox
- core: Add
Init
type to theWidgetTemplate
trait to allow passing data toinit()
- core: Just require
AsRef<gtk::Window>
inRelmApp::run
- core: Add
AsRef<Root>
as requirement to theWidgetTemplate
trait - core: Removed
forward_to_parent
fromFactoryComponent
- 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
TypedColumnView
as a typed wrapper forgtk::ColumnView
- core: Add
set_margin_vertical
andset_margin_horizontal
to RelmWidgetExt
- core: Don't panic when dropping components from asynchronous contexts
- core: Fix an issue with using
connect_open
ongtk::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
RelmRemoveExt
foradw::ExpanderRow
. - core: Implemented
ContainerChild
foradw::ExpanderRow
. - core: Add
TypedListView
as idiomatic wrapper overgtk::ListView
- macros: Improve error messages for non-identifier parameter patterns
- core: Introduce setting and action safeties
- core: Implement
RelmSetChildExt
forgtk::AspectFrame
- core: Add
FactoryHashMap
as alternative toFactoryVecDeque
- core: Add gnome_44 feature flag for GNOME 44
- core: Documentation and better support for data bindings
- core: Add
set_tooltip
method toRelmWidgetExt
- core: Add
main_adw_application
method to retrieve theadw::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
- core: Replace
FactoryVecDeque
's associated functionfrom_vec
withfrom_iter
- core: Added
Index
type to theFactoryComponent
trait - core: Rename factory component traits
output_to_parent_input
method toforward_to_parent
- core: Improved
RelmActionGroup
API - 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
FactoryView
foradw::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
RelmApp
builder methodswith_args
andwith_broker
- core: Add
MessageBroker
support forAsyncComponent
- core: Change
MessageBroker
generic type parameter to message type - core: Rename
RelmApp
methodwith_app
tofrom_app
- core: Deprecate
RelmApp
methodsrun_with_args
andrun_async_with_args
- core: Implement
RelmSetChildExt
forgtk::Expander
- macros: Support submenus in menu! macro
- macros: Support widget templates as root widgets of components and factories
- macros: Implement
Clone
for 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
broadcast
toFactoryVecDeque
- 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
- core: Add
try_read
andtry_write
methods toSharedState
- core: Allow initializing
FactoryVecDeque
from aVec
and make it cloneable - core: Support factories with
adw::PreferencePage
- core: Pass
&self
to thePosition::position()
function for positioning widgets - core: Take
&str
instead 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
LoadingWidgets
to help with temporary loading widgets in async factories and components - core: Add
Reducer
as message based alternative toSharedState
- core: Synchronous API for commands
- core: Remove async-broadcast dependency
- core: Runtimes of
Component
s andAsyncComponents
can now be detached for a static lifetime - core: Add
ComponentStream
as alternative toController
that implementsStream
for async message handling - core: Add
gnome_42
andgnome_43
feature flags - core: Implement
RelmContainerExt
foradw::Squeezer
- core: Implement
RelmSetChildExt
forgtk::WindowHandle
- macros: Auto-generate the name of the
Widgets
type if possible
- core: Rename
FactoryComponentSender
toFactorySender
andAsyncFactoryComponentSender
toAsyncFactorySender
- core: The sender API now supports proper error handling
- core: Pass
Root
duringupdate
andupdate_cmd
forComponent
andAsyncComponent
- core: Rename
OnDestroy
toRelmObjectExt
- 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
- 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
onComponent
now works as expected - core:
shutdown
onFactoryComponent
now works as expected - core:
transient_for
onComponentBuilder
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
- 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
andRelmSetChildExt
foradw::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
- 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
ofRelmActionGroup
now takes a reference to aRelmAction
as a parameter - examples: Many improvements
- macros:
parse_with_path
,update_stream
,inject_view_code
andgenerate_tokens
take 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_mut
toFactoryVecDeque
- core: Impl extension traits and
FactoryView
foradw::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 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
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 aroundgtk::ComboBoxText
- components: Port
OpenButton
to 0.5 - book: Many chapters ported to 0.5
- core: Improve
SharedState
interface and prefer method names related toRwLock
- core: Remove Debug requirement for FactoryComponent
- core: Remove
input
andoutput
fields onComponentSender
andFactoryComponentSender
in favor ofinput_sender
andoutput_sender
methods - core: Make
ComponentSender
andFactoryComponentSender
structs instead of type aliases - core: Increase MSRV to 1.63 to match the gtk4 crate
- core: Rename
ParentMsg
andoutput_to_parent_msg
toParentInput
andoutput_to_parent_input
, respectively. - core: Do not call
gtk_init
andadw_init
in favor of the application startup handler - core: Remove
Application
type alias in favor ofgtk::Application
- core: Make
app
field onRelmApp
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
- core: Append children for
gtk::Dialog
to 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