Releases: reflex-dev/reflex
v0.6.1
Regression Fixes
- re add removed method with better behaviour and tests by @Lendemor in #3986
- hash the state file name by @adhami3310 in #4000
- EventFnArgMismatch fix to support defaults args by @LeoGrosjean in #4004
- serialize default value for disk state manager by @adhami3310 in #4008
- remove format_state and override behavior for bare by @adhami3310 in #3979
- Handle bool cast for optional NumberVar by @masenf in #4010
- use literal var instead of serialize for toast props by @adhami3310 in #4027
New Features
Experimental Dynamic Components
In this release, state vars can be of rx.Component
type and @rx.var
computed vars can return rx.Component
, allowing dynamic component structures to be created on the backend at runtime. This enables the full use of python expressions in generated components, as opposed to rx.cond
and rx.foreach
.
There are performance implications when using dynamic components so prefer static components where possible.
- Component as Var type by @masenf in #3732
- add basic integration test for dynamic components by @adhami3310 in #3990
- use bundled radix ui for dynamic components by @adhami3310 in #3993
- implement _evaluate in state by @adhami3310 in #4018
Run Backend with Granian server
install granian
package and set REFLEX_USE_GRANIAN=1
to run with the new, experimental granian backend (instead of the default uvicorn).
- can run with granian by setting REFLEX_USE_GRANIAN var by @Lendemor in #3919
- change loglevel and fix granian on linux by @adhami3310 in #4012
REFLEX_USE_SYSTEM_NODE
and REFLEX_USE_SYSTEM_BUN
If you prefer to run your own versions of node
and bun
, ensure they are on the PATH
and set these environment variables to 1
.
Improvements
Bump nextjs to 14.2.13
Miscellaneous
- [ENG-3717] [flexgen] Initialize app from refactored code by @masenf in #3918
- Added fill color for progress by @wassafshahzad in #3926
- Use tailwind typography plugin by default by @minimav in #3593
- disable prose by default for rx.html by @adhami3310 in #4001
- use
class_name="prose"
to enable default formatting forrx.html
- allow link as metatags by @Lendemor in #3980
- allow classname to be state vars by @adhami3310 in #3991
- default on_submit in form set to prevent_default by @Lendemor in #4005
Bug Fixes
- [ENG-3824]Make AI template use light mode by @ElijahAhianyo in #3963
- don't camel case keys of dicts in style by @adhami3310 in #3982
- add missing message when running in backend_only by @Lendemor in #4002
- [ENG-3849] Track backend-only vars that are declared without a default value by @masenf in #4016
- improve lifespan typecheck and debug by @Lendemor in #4014
Documentation
- fix: Adding in-line comments for the segmented control: value and on_change by @elviskahoro in #3933
- fix: Adding code comments for segmented control type by @elviskahoro in #3935
Other Changes
- add some unit tests for coverage by @Lendemor in #3947
- always print passed_type by @adhami3310 in #3950
- remove unused badge by @Lendemor in #3955
- add some more tests by @Lendemor in #3965
- use svg elements instead of raw html for logo by @Lendemor in #3978
- bump to 0.6.1 for further dev by @masenf in #3995
- reorganize all tests in a single top folder by @Lendemor in #3981
- Update markdown component map to use new rx.code_block.theme enum by @masenf in #3996
- remove all runtime asserts by @Lendemor in #4019
New Contributors
- @minimav made their first contribution in #3593
- @LeoGrosjean made their first contribution in #4004
Full Changelog: v0.6.0...v0.6.1
v0.6.0
Overview of Changes from 0.5.0 to 0.6.0
Breaking Changes
Drop support for python 3.8
Remove Deprecated Features
rx.input.root
(0.5.0)rx.Component._apply_theme
(0.5.0)_type
,_min
,_max
prop rewriting (0.4.0)- Passing props to rx.foreach (0.5.0)
rx.el
aliases fordefs
,lineargradient
,stop
,path
(userx.el.svg
namespace)- Lucide icons that were removed upstream (0.4.6)
- passing children to
rx.color_mode.button
(0.5.0) rx.cached_var
(0.5.6)- Specifying
REDIS_URL
without a url scheme (0.3.6)
PRs
- [REF-3568][REF-3569]Remove deprecations by @ElijahAhianyo in #3852
- [REF-3570] Remove deprecated REDIS_URL syntax by @masenf in #3892
New Var System
A Var
is a placeholder for a value which is sent to the frontend or rendered as Javascript code in the app. Most users of Reflex do not interact with the var system directly, but it becomes relevant for advanced users that are wrapping components or handling custom types.
rx.Var.create(...)
now returns aLiteralVar
subclass wrapping the provided value._var_is_string
is deprecated, passing a string will always create aStringVar
rx.Var(...)
returns anImmutableVar
representing a raw javascript expression.- Replaces the deprecated
_var_is_local
param
- Replaces the deprecated
- Vars are not automatically cast as
bool
, when passing a non-bool var to a prop that expects a boolean, add.bool()
after the var -- error message will include this hint.
The new Var
system brings a much more accurate translation of literal python values into javascript, especially of object and array types.
rx.chakra
removed from main repo
First, pip install reflex-chakra
. Then import reflex_chakra as rc
. rx.chakra
will still work until 0.7.0, but it is recommended to move now to avoid deprecation warning.
- Upper bound for reflex-chakra dependency by @masenf in #3824
- [REF-3566]Remove demo template by @ElijahAhianyo in #3888
- [REF-3562][REF-3563] Replace chakra usage (#3872)
Var Shadowing Detection
When a dynamic route arg name conflicts with the name of an existing state Var, the framework will raise DynamicRouteArgShadowsStateVar
. This is intended to avoid unexpected behavior wherein the dynamic var takes precedence over the state var, even in a substate. A fix for the underlying cause is forthcoming.
In the meantime, define any pages that use dynamic route arguments early, so the dynamic var is available for use in the page functions.
- Dynamic route vars silently shadow all other vars by @benedikt-bartscher in #3805
- cleanup dead test code by @benedikt-bartscher in #3909
When a computed var name conflicts with the name of an existing state Var, the framework will raise ComputedVarShadowsStateVar
.
- Forbid Computed var shadowing by @benedikt-bartscher in #3843
- remove reference to computed var by @adhami3310 in #3906
rx.progress
is now Radix Themes Progress
The previous Radis Primitives progress is available as rx.radix.primitives.progress
- [REF-3592]Promote
rx.progress
from radix themes by @ElijahAhianyo in #3878
Watchfiles dependency removed
If you are upgrading reflex in an existing environment run pip uninstall watchfiles
first to ensure the hot reload mechanism is properly ignoring the .web
directory.
New Features
DiskStateManager
- preserve state across hot reloads in dev mode
- implement disk state manager by @adhami3310 in #3826
- Disk state manager don't use byref by @picklelo in #3874
- delete states if it exists on run by @adhami3310 in #3901
/_health
endpoint
http://localhost:8000/_health
{"status":true,"db":true,"redis":false}
- /health endpoint for K8 Liveness and Readiness probes by @samarth9201 in #3855
Improvements
- improve state hierarchy validation, drop old testing special case by @benedikt-bartscher in #3894
- fix var dependency dicts by @benedikt-bartscher in #3842
- Update docker-example by @masenf in #3324
- use current version as default for new custom components (#3957)
Var System
- fully migrate vars into new system by @adhami3310 in #3743
- guess_type: if the type is optional, treat it like it's "not None" by @masenf in #3839
- Fix double-quoting of defaultColorMode by @masenf in #3840
- ImmutableVar perf optimizations by @masenf in #3814
- Get attribute access type fix by @benedikt-bartscher in #3803
- fix var in bare by @adhami3310 in #3873
- add var_operation and move some operations to the new style by @adhami3310 in #3841
- Adding array to array pluck operation. by @abulvenz in #3868
- simplify ImmutableComputedVar.get by @benedikt-bartscher in #3902
- Use old serializer system in LiteralVar by @adhami3310 in #3875
- Fix type propagation in ToStringOperation by @abulvenz in #3895
- [ENG-3833] handle object in is bool (#3974)
- suggest bool() for wrong values (#3975)
- use is true for bool var (#3973)
- Add shim for
format_event_chain
(#3958) - use serializer before serializing base yourself (#3960)
- [ENG-3817] deprecate _var_name_unwrapped (instead of removing it) (#3951)
- move the filterwarning to appropriate file (#3952)
- fix unionize recursion (#3948)
- add special handling for infinity and nan (#3943)
- use is true (#3946)
- use serializer for state update and rework serializers (#3934)
- replace old var system with immutable one (#3916)
- Remove Pydantic from some classes (#3907)
Documentation / Error Messages
- Add comments to DataList components by @elviskahoro in #3827
- [REF-3589] raise EventHandlerArgMismatch when event handler args don't match spec by @masenf in #3853
- better errors in state.py (#3929)
Other Changes
- Fix benchmark tests by @ElijahAhianyo in #3822
- [REF-3416] [REF-3632] Update fastapi, gunicorn, watchdog deps by @masenf in #3859
- Remove watchfiles and watchdog [REF-2133] [REF-3694] by @picklelo in #3862
Bug Fixes
- [REF-3597]Type check Radio items by @ElijahAhianyo in #3856
- Bug fix rx.toast. Allow passing
title
kwarg by @TimChild in #3857 - Update find_replace by @samarth9201 in #3886
- Use correct flexgen backend URL by @masenf in #3891
- gitignore .web by @benedikt-bartscher in #3885
- [bugfix] Allow scroll in text_area when limited by max_height by @VishDev12 in #3882
- Retain mutability inside
async with self
block by @masenf in #3884 - Include child imports in markdown component_map by @masenf in #3883
- mixin computed vars should only be applied to highest level state in β¦ by @benedikt-bartscher in #3833
- fix initial state without cv fallback by @benedikt-bartscher in #3670
- add fragment to foreach by @adhami3310 in #3877
- fix set value logix for client state (#3966)
- [0.6.0 blocker] state: update inherited_vars and tracking dicts when adding vars (#2822)
- fix template fetch during init (#3932)
- Fix string color (#3922)
New Contributors
- @elviskahoro made their first contribution in #3827
- @TimChild made their first contribution in #3857
- @samarth9201 made their first contribution in #3855
- @VishDev12 made their first contribution in #3882
Full Changelog: v0.5.10...v0.6.0
v0.5.10
Improvements
- add message when installing requirements.txt is needed for chosen template during init by @Lendemor in #3750
- use different registry when in china, fixes #3700 by @adhami3310 in #3702
- [REF-3536][REF-3537][REF-3541]Move chakra components into its repo(reflex-chakra) by @ElijahAhianyo in #3798
- Preparing for the eventual removal of chakra from the core reflex package
- Recognize
SSL_NO_VERIFY=1
to disable certificate verification when downloading tools likebun
andfnm
#3846
Bug Fixes
- #3752 bugfix add domain for XAxis by @dimritium in #3764
- fix appharness app_source typing by @benedikt-bartscher in #3777
- fix import clash between connectionToaster and hooks.useState by @Lendemor in #3749
- do not reload compilation if using local app in AppHarness by @Lendemor in #3790
- [REF-3334]Validate Toast Props by @ElijahAhianyo in #3793
- fix get_uuid_string_var by @dimritium in #3795
- minor State cleanup by @benedikt-bartscher in #3768
- Fix code wrap in markdown by @Alek99 in #3755
Other Changes
New Contributors
- @dimritium made their first contribution in #3764
Full Changelog: v0.5.9...v0.5.10
v0.5.9
Bug Fixes
- fix silly bug when style is set directly to breakpoints by @adhami3310 in #3719
- Fix event actions like
stop_propagation
for recharts event triggers - fix initial_value for computed_var by @benedikt-bartscher in #3726
- add test for initial state dict by @benedikt-bartscher in #3727
- Improve Client-Side Routing on Page Not Found by @Manas1820 in #3723
- Use the new state name when setting
is_hydrated
to false by @masenf in #3738 - Use
._is_mutable()
to account for parent state proxy by @masenf in #3739
Doc Updates
Var Refactor
This release includes some new experimental features being developed incrementally in reflex._x.vars.
- [REF-3328] Implement getitem for ArrayVar by @adhami3310 in #3705
- add type hinting to existing types by @adhami3310 in #3729
Full Changelog: v0.5.8...v0.5.9
v0.5.8
New Features
Improvements
- Recharts Improvements
- [REF-3273]Add SVG circle, polygon and rect components by @ElijahAhianyo in #3684
- notifying frontend about backend error looks better by @Lendemor in #3491
Bug Fixes
- debounce: pass through key and special_props by @masenf in #3655
- [REF-3135]Radix Primitive components should not ignore provided
class_name
prop by @ElijahAhianyo in #3676 - [REF-3101]
rx.list
Dont set/hardcodelist_style_position
css prop by @ElijahAhianyo in #3695 - [REF-3184] [REF-3339] Background task locking improvements by @masenf in #3696
- [REF-3375] useMemo on generateUUID props to maintain consistent value by @masenf in #3708
- Define BaseVar fields on ComputedVar by @paoloemilioserra in #3659
Var Refactor
This release includes some new experimental features being developed incrementally in reflex._x.vars.
- [REF-3222] define new JS-type var classes by @adhami3310 in #3668
- [REF-3228] implement LiteralStringVar and format/retrieval mechanism by @adhami3310 in #3669
- [REF-3227] implement more literal vars by @adhami3310 in #3687
- [REF-3321] implement var operation decorator by @adhami3310 in #3698
Other Changes
- cleanup unused useReducer import by @benedikt-bartscher in #3667
- feat: Improve documentation in Japanese README.md file by @l-melon in #3650
- Benchmarking Updates by @Alek99 in #3680
- add Persian translation and update the language links in the README.m⦠by @BenyaminZojaji in #3666
- fix var warning by @Lendemor in #3704
New Contributors
- @Manas1820 made their first contribution in #3662
- @l-melon made their first contribution in #3650
- @BenyaminZojaji made their first contribution in #3666
- @paoloemilioserra made their first contribution in #3659
Full Changelog: v0.5.7...reflex-0.5.8
v0.5.7
New Features
- Catch unhandled errors on both frontend and backend by @maximvlah in #3572
rx.App
now supportsfrontend_exception_handler
andbackend_exception_handler
which are called when unhandled exceptions occur.- Fix the error boundary by @maximvlah in #3637
- Bare SQLAlchemy mutation tracking by @benedikt-bartscher in #3628
- feat: Adding an event to go back just as the user would. by @abulvenz in #3636
return rx.event.back()
Improvements
- Recharts Improvements
- minor chart clean up by @Alek99 in #3551
- update graphing by @tgberkeley in #3606
- Tom/recharts missing props by @tgberkeley in #3645
- add warning when using css props on recharts by @Lendemor in #3651
- Make domain props work for
y_axis
by @Lendemor in #3652
- dedupe config overrides by @benedikt-bartscher in #3600
- gitignore external assets by default by @benedikt-bartscher in #3621
- only write .gitignore if needed by @benedikt-bartscher in #3618
- [REF-3160] fix rx.Var._replace raise TypeError on invalid kwargs by @Jishnu-Nandhiath in #3625
- add module prefix to generated state names by @benedikt-bartscher in #3214
- Allow DebounceInput as child of FormControl Component by @ElijahAhianyo in #3660
Bug Fixes
- fix sqla python_type issues, add tests by @benedikt-bartscher in #3613
- Fix 404 on dynamic routes during hot reload
- Avoid model metaclass error with pydantic < 1.10.15
- Fix warnings
- fix unclosed file by @benedikt-bartscher in #3639
- migrate deprecated connections to net_connections by @benedikt-bartscher in #3641
- Pkg resources deprecation by @benedikt-bartscher in #3646
- fix Var.contains pyi by @benedikt-bartscher in #3663
Documentation
- [Graphing Docs] small update by @tgberkeley in #3612
Var Refactor
This release includes some new experimental features being developed incrementally in reflex._x.vars.
- add immutable var class by @adhami3310 in #3607
- [REF-3225] implement format for immutable vars by @adhami3310 in #3617
Other Changes
- pyproject.toml: bump to 0.5.6 by @masenf in #3635
- benchmarks.yml: use node 18.x with reflex-web@main by @masenf in #3657
New Contributors
- @maximvlah made their first contribution in #3572
Full Changelog: v0.5.6...v0.5.7
v0.5.6
New Features
rx.clipboard
Handle global and component-scoped on_paste
with multi-type data
rx.breakpoints
- Set breakpoints by name
- introduce customizable breakpoints by @adhami3310 in #3568
- add responsive props to radix components by @adhami3310 in #3583
Computed Backend Vars
- add computed backend vars by @benedikt-bartscher in #3573
- improve backend var determination by @benedikt-bartscher in #3587
Improvements
- [REF-3056]Config knob for redis StateManager expiration times by @ElijahAhianyo in #3523
- [Perf] Ensure rx.match gets memoized to avoid excessive re-rendering by @masenf in #3552
- bare sqlalchemy session + tests by @benedikt-bartscher in #3522
- Remove chakra from codeblock by @abulvenz in #3570
- add compilation timestamp in log by @Lendemor in #3563
- [REF-3148] add props for tabs by @Lendemor in #3560
- show the value causing problem in deprecation warning by @Lendemor in #3558
- Better support for Github Codespaces
- Better hot reload times on Windows with python 3.12 and uvicorn > 0.20
rx.theme
appearance is reset in dev mode- [REF-2588]Clear color mode local storage for dev mode by @ElijahAhianyo in #3548
Bug Fixes
- Fix radix radio cards component by @emmakodes in #3545
- fix small typing issue by @Lendemor in #3562
- [REF-3185][REF-3180]Dont escape backticks in JS string interpolation by @ElijahAhianyo in #3566
- classvars should not be backend vars by @benedikt-bartscher in #3578
- ComponentState and State mixins now work with backend vars
- copy backend vars from mixins by @benedikt-bartscher in #3580
- fix var dependency over properties by @benedikt-bartscher in #3588
- [REF-3157] Avoid SQLModel metaclass conflict (#3610)
- [REF-3220] Fix rx.cancel_upload EventSpec (#3608)
- do not get_config in global scope (#3597)
Other Changes
- Validate ComputedVar dependencies, add tests by @benedikt-bartscher in #3527
- do not validate non-cached var deps by @benedikt-bartscher in #3576
- Radio group fix deprecation warning for creating vars with strings by @ElijahAhianyo in #3567
- update dependencies pinning by @Lendemor in #3556
- fix formatting by @benedikt-bartscher in #3574
- order type annotations in pyi_generator by @benedikt-bartscher in #3585
- Deprecate cached var by @benedikt-bartscher in #3582
- Change Strategy Prop to Literal by @Alek99 in #3575
- pyi_generator cleanup: ruff, remove fully qualified reflex. names by @masenf in #3591
- cleanup unused check by @benedikt-bartscher in #3590
- split lifespan and middleware logic in separate mixin files by @Lendemor in #3557
- Update links to /docs/library/dynamic-rendering/foreach/ (#3609)
New Contributors
Welcome Khaleel to the Core Team
- @adhami3310 made their first contribution in #3568
Full Changelog: v0.5.5...v0.5.6
v0.5.5
New Features
- Feat: Add Session storage to store data on client storage by @TG199 in #3420
- add in rx.el.style by @tgberkeley in #3511
Improvements
- [REF-3012] Add defs, lineargradient and stop html elements by @carlosabadia in #3467
- More recharts improvements
- Hanson recharts batch #2 by @HongyuHansonYao in #3472
- (WIP) recharts fixes batch #3 by @HongyuHansonYao in #3496
- Hanson/tooltip-improvement/props by @HongyuHansonYao in #3525
- Hanson/radial bar chart by @HongyuHansonYao in #3532
- add event triggers for rx.video by @Lendemor in #2700
- allow return from run_in_thread by @Lendemor in #3477
- update launch message by @Lendemor in #3453
- [REF-2830] server side events and stateless components should not require not require a backend by @ElijahAhianyo in #3475
- Make
.web
configurable with REFLEX_WEB_WORKDIR by @Lendemor in #3462 - Improve ClientState compatibility with rx.input by @masenf in #3490
- add allow_system prop to colormode iconbutton, and clean up logic by @Lendemor in #3507
Bug Fixes
- [REF-3016]Allow special characters in upload ID by @ElijahAhianyo in #3449
- Protect StateProxy with an asyncio.Lock by @masenf in #3508
- fix segmented_control by @Lendemor in #3516
- Updated radio group component by @sagarhedaoo in #3474
- fix checkbox_group component by @emmakodes in #3454
- Always treat the call_script callback as a string of JS code by @masenf in #3521
- [REF-3079] state.js: disconnect websocket for window "pagehide" event by @masenf in #3540
- fix hydration error by @Lendemor in #3542
Other Changes
- use add_imports everywhere by @Lendemor in #3448
- swap all use of get_event_triggers to rx.EventHandler props by @Lendemor in #3458
- fix missing event triggers from docs by @Lendemor in #3495
- upgrade to latest ruff by @Lendemor in #3497
- pass validation of valid_parent if inheriting from valid class by @Lendemor in #3519
- Abstract color_mode related Var creation by @masenf in #3533
- [REF-3149] Bring back py3.12 hot reload warning by @masenf in #3537
- German README.md by @unfortunatelyalex in #3547
New Contributors
- @unfortunatelyalex made their first contribution in #3547
Full Changelog: v0.5.4...v0.5.5
v0.5.4
Improvements
- [REF-2956]Fail When Backend port or frontend port is explicitly provided and the port is in use by @ElijahAhianyo in #3432
- promote toast to main namespace by @Lendemor in #3422
- [REF-2977] [REF-2982] Plotly: Merge layout prop and automatic darkmode by @masenf in #3442
- Recharts supporting radix color, add event triggers by @HongyuHansonYao in #3430
- [REF-3009] type transforming serializers by @benedikt-bartscher in #3227
- default color_mode is now system color by @Lendemor in #3457
- Refactor: make better/less use of dict.keys() calls by @alexandermorgan in #3455
Bug Fixes
- [REF-2602]Do not suppress import errors in rxconfig by @ElijahAhianyo in #3434
- [REF-3006] Inline code rendered in rx.markdown has extra trailing space by @masenf in #3426
- Address an issue with pydantic v2 models as Vars by @kroo in #3396
- state.js: set event_processing = false when websocket connects by @masenf in #3443
- [REF-2879] Make client_state work without global refs (local only) by @masenf in #3379
Other Changes
- PR zh/zh_tw readme update for relex 0.5.2 by @milochen0418 in #3415
- fix: correct zh_tw and zh_cn README for hyperlink issues by @milochen0418 in #3440
- clean up hooks and update component to use add_hooks by @Lendemor in #3439
- fix warning about props by @Lendemor in #3451
- Webdriver ArgOptions improvements by @benedikt-bartscher in #3429
- [bug] Avoid deleting endpoint port when running on Replit by @blast-hardcheese in #3447
- [REF-3013] Only run
pyi_generator
on files in reflex/components or reflex/init.py by @masenf in #3452 - Pass _var_is_string parameter to Var.create by @masenf in #3470
- Override _var_is_string when handling str literals by @masenf in #3473
- compat: do not patch pydantic if the installed version starts with "1." by @masenf in #3482
New Contributors
- @blast-hardcheese made their first contribution in #3447
- @kroo made their first contribution in #3396
- @alexandermorgan made their first contribution in #3455
Full Changelog: v0.5.3...v0.5.4
v0.5.3
New Features
- External assets by @abulvenz in #3220
- add mapping between client_token and socket id by @Lendemor in #3388
- add config knob for react_strict_mode by @Lendemor in #3389
- [REF-2202] Implement event handlers for Plotly by @masenf in #3397
Improvements
- Radix Themes + Tailwind Harmony by @masenf in #3355
- Explicit deps and interval for computed vars by @benedikt-bartscher in #3231
- Add domain prop for the PolarRadiusAxis component by @TG199 in #3349
- [REF-2710]Recommend Running with
REFLEX_USE_NPM=1
if npm run fails after installing packages with bun. by @ElijahAhianyo in #3399 - refactor: radix section default size by @Jishnu-Nandhiath in #3406
- [REF-2978] Ignore Redis config_set for AWS ElastiCache by @masenf in #3401
- [REF-1356] Track changes applied to
Base
subclass via helper method. by @masenf in #2242 - include resize and radius props to the text area component by @carlosabadia in #3383
Each component import is now independently lazy
Save time by avoiding imports for components which are not used in the app.
- [REF-2821]Improve Dynamic Imports by @ElijahAhianyo in #3345
Bug Fixes
- Layout property not pushed through on rx.plotly by @HongyuHansonYao in #3394
Other Changes
- [REF-2895]Benchmarks getting skipped on merge by @ElijahAhianyo in #3369
- Updated in/readme.md with current readme by @sagarhedaoo in #3333
- update image for readme by @tgberkeley in #3395
New Contributors
- @sagarhedaoo made their first contribution in #3333
- @TG199 made their first contribution in #3349
- @HongyuHansonYao made their first contribution in #3394
- @carlosabadia made their first contribution in #3383
Full Changelog: v0.5.2...v0.5.3