Repository navigation
Blog post https://freyaui.dev/posts/0.5
What's Changed
π Documentation
- chore(docs): Document events combos api by @marc2332 in #2200
- chore(docs): Optimizing guide by @marc2332 in #2289
- chore(core): Docs for fonts by @marc2332 in #2280
- chore(docs): Add arrow icon in web demo external link button by @marc2332 in #2300
- chore(router): Improve docs by @marc2332 in #2313
- chore(docs): AI doc by @marc2332 in #2351
- chore(docs): Improve docs of UI by @marc2332 in #2364
- chore(core): Better docs for
Effectby @marc2332 in #2377 - chore(radio): Reorganize freya-radio docs by @marc2332 in #2428
- chore(components): Remove
ContextMenu::getand document the method by @marc2332 in #2437 - chore(docs): Improve extension trait docs by @marc2332 in #2436
- chore(docs): Improve context and global context docs by @marc2332 in #2438
- chore(docs): Add flex docs by @marc2332 in #2439
- fix(winit/testing/web): Set the root size in platform as logical size by @marc2332 in #2443
- chore(torin): Document
Content::Normal/Fit/Wrapby @marc2332 in #2455 - chore(docs): Add 'building an app' guide by @marc2332 in #2456
- chore(docs): Note about size fill by @marc2332 in #2462
π§° Maintenance
- chore(deps): Update to hotpath v0.22 by @marc2332 in #2085
- chore(deps): Bump freya-skia-safe to v0.100.0-beta.1 by @marc2332 in #2342
Other Changes
- chore: Dont enable os-dependant features in workspace by default by @marc2332 in #2016
- fix(components): Select all text on double click in Input with masked text by @marc2332 in #1989
- chore(core): Add
style_datamethod to set an element's data by @marc2332 in #2052 - fix(core): Emit all file events files all at once by @marc2332 in #2066
- chore: Clarify clone instructions by @marc2332 in #2068
- feat(core): Change
main_alignandcross_alignto takeìmpl Into<Alignment>by @marc2332 in #2060 - fix(components): Export AssetAge by @marc2332 in #2025
- chore(core): Export
EventHandlerstype by @marc2332 in #2058 - feat(components): Implement
ContainerWithContentExtforSkeletonby @marc2332 in #2059 - fix(components): Card spacing and padding by @marc2332 in #2063
- fix(components): More reliable context menu closing by @marc2332 in #2067
- feat(components): Per item virtual scroll view sizing by @marc2332 in #1985
- Add docs lifecycle tasks by @aspnxdd in #2073
- fix(core): Prevent borrow when reseting scopes after hot reload by @marc2332 in #2051
- fix(components): Hide scrollbar and thumb when its smaller than the minimum by @marc2332 in #2037
- feat(components): Flexibilize Tooltip by @marc2332 in #2056
- fix(core): Handle a11y auto focus separately from focus requests by @marc2332 in #2065
- chore(winit): Switch from hooking to catch unwind by @marc2332 in #2000
- fix(components): Implement VirtualScrollView min/max width/height by @marc2332 in #2032
- remove rust toolchain from nix devshell by @RobertasJ in #2075
- chore: Move rendering backend features selection to freya-winit by @marc2332 in #2079
- fix(core): Make blur work with opacity by @marc2332 in #1983
- feat(core): More ergonomic children api by @marc2332 in #2074
- feat(terminal): Focus reporting by @marc2332 in #2080
- feat(core): Allow changing the scale factor of the app dynamically and at window config by @marc2332 in #2082
- feat(core): More accurate cursor rendering in special characters by @marc2332 in #2034
- feat(core): Better
CornerRadiusapi by @marc2332 in #2077 - fix(components): Adjust drag offset according to the dragging element size by @marc2332 in #2086
- feat(components): DragZone::enabled by @marc2332 in #2088
- fix(core): Differenciate scopes with the same key but different component type by @marc2332 in #2084
- feat(terminal): Better defaults and allow passing multiple font families preferences by @marc2332 in #2093
- feat(components): LayerExt and EventHandlersExt for SelectableText by @marc2332 in #2106
- fix(freya): Proper features reexport of lucide icons by @marc2332 in #2108
- chore(core): Default impl for rect, label and paragraph by @marc2332 in #2109
- feat(core): Add `Color::with_af32 by @marc2332 in #2119
- feat(query): Add
errgetters by @marc2332 in #2113 - fix(winit): Better error handling in vulkan driver by @marc2332 in #1991
- fix(winit): Better Opengl error handling by @marc2332 in #2091
- chore(winit): Better GPU picking by @marc2332 in #2117
- feat(components):
Input::scroll_enabledby @marc2332 in #2122 - feat(query): Automatic
Into<Mutation>conversion by @marc2332 in #2115 - fix(components): Dont make Input capture Shift as ScrollView uses it for scrolling by @marc2332 in #2123
- fix(core): Render cursor when text is completely empty by @marc2332 in #2125
- feat(perfomance-plugin): Async tasks metrics by @marc2332 in #2033
- feat(core): Reactive
use_futureby @marc2332 in #2110 - fix(core): Reset scope when component with the same key changes its type by @marc2332 in #2129
- fix(winit): Release all pressed keys on lost window focus by @marc2332 in #2131
- chore(core): Custom rendering ticker notifier by @marc2332 in #2130
- fix(core): Cursor should render in new line if current line ends with line breaks by @marc2332 in #2132
- fix(edit): Fix arrow down clamp, and add home/end movement by @marc2332 in #2134
- feat(components): Snap context menu origin by @marc2332 in #2138
- feat(winit): set main window title as a11y label by @bitfehler in #2133
- chore: Track Cargo.lock by @marc2332 in #2142
- fix(components/radio): Enable necessary features in dev for tests by @marc2332 in #2141
- fix(core): Dont clip shadows in elements with overflow clip and overlay level by @marc2332 in #2140
- fix(components):
Button::secondary_downshould run on down not press by @marc2332 in #2136 - feat(core):
try_read,try_write,try_peek, + unchecked by @marc2332 in #2139 - Swap alacritty_terminal for rio-vt in freya-terminal by @raphamorim in #2116
- feat(components): Portal animation dependency by @marc2332 in #2087
- chore(core): Derive
Cloneon buit-in elements by @marc2332 in #2156 - fix(components): Only render popup when background is visible by @marc2332 in #2155
- fix(freya): Reexport LaunchProxy by @marc2332 in #2154
- feat(edit): Ctrl + Backspace / Delete by @marc2332 in #2064
- feat(query): Query mocking by @marc2332 in #2083
- feat(core): GlobalContext context for all windows to share lazy-initialize reactive state between each other, for features like i18n or queries storage by @marc2332 in #2111
- feat(components): Implement ChildrenExt in DragZone and DropZone by @marc2332 in #2151
- feat(query): Disable queries by passing
Noneto the keys by @marc2332 in #2114 - fix(query): Prevent query clear race by @marc2332 in #2149
- fix(components): Stop click press propagation on Switch by @marc2332 in #2152
- chore(animation): Make sync
use_animation_with_dependenciesby @marc2332 in #2158 - fix(animation): Request redraw after advancing animation by @marc2332 in #2161
- feat(components): Scroll input into cursor by @marc2332 in #2160
- feat(core): Move mouse on scroll by @marc2332 in #2159
- chore(devtools): Change interface to 0.0.0.0 by @marc2332 in #2162
- chore(deps): Bump freya-skia-safe to v0.99 by @marc2332 in #2163
- feat(components): Slider step by @marc2332 in #2145
- chore(components): Fix progress bar % to 2 decimals by @marc2332 in #2170
- feat(core):
spawn_in_scopeby @marc2332 in #2171 - chore(core): More core benchmarks by @marc2332 in #2165
- fix(torin): Fix benchmark by @marc2332 in #2185
- fix(components): Properly exclude inner marging from pointer events in Input by @marc2332 in #2173
- fix(core): Break the press combos after dragging by @marc2332 in #2174
- fix(core): Dont early return on task polling if there are dirty scopes by @marc2332 in #2175
- fix(core): Separate global context by @marc2332 in #2183
- feat(winit/testing/core): Dynamic font loading by @marc2332 in #2172
- chore: Remove unused deps by @marc2332 in #2187
- chore(core): Add track caller for context getters by @marc2332 in #2186
- chore(pathgraph): Some optimizations by @marc2332 in #2166
- fix(core): More robust insertion of elements with moved parents by @marc2332 in #2150
- fix(core): Announce a11y text on isolated (that are not wrapped) elements like label and paragraph by @marc2332 in #2189
- chore(ci): Tangled sync by @marc2332 in #2190
- perf(core): Cache computed clip areas on render pipeline as they are deterministic by @marc2332 in #2188
- chore(core): Diffing optimizations by @marc2332 in #2167
- feat(core):
on_visibleby @marc2332 in #1997 - feat(components):
Lazyby @marc2332 in #2168 - feat(core/edit): Proper vertical cursor navigation on multi line single paragraphs by @marc2332 in #2176
- fix(core): Wrapped line clicks should land on their clicked lines not the next below by @marc2332 in #2177
- feat(components): Multi line input by @marc2332 in #2192
- fix(core): Proper text gradient without clipping by @marc2332 in #2193
- chore(components): Some style and animation adjustements to
SelectandMenuItemby @marc2332 in #2194 - feat(core): Per element cursor styling by @marc2332 in #2089
- feat(borderless-plugin): Add freya-borderless-plugin by @marc2332 in #2181
- perf(torin): Scale layout nodes incrementally based on mutations rather than on measuring phase by @marc2332 in #2184
- feat(core): Opt-in snap images by @marc2332 in #2137
- chore(website): Optimize serving by @marc2332 in #2195
- chore(deps): Bump rio-vt to 0.5.26 by @marc2332 in #2196
- perf(core): Skip noop opacity layers and join the rest by @marc2332 in #2210
- fix(components): Capture slider drag by @marc2332 in #2211
- chore(ci): Audit CI by @marc2332 in #2220
- feat(core):
is_finishedfor Tasks by @marc2332 in #2227 - feat(components): Allow passing scrollbar themes in Scrollviews by @marc2332 in #2226
- feat(winit): Getter for current window id by @marc2332 in #2197
- feat(winit): Renderer preference by @marc2332 in #2203
- chore(winit): Relax windows hooks bounds by @marc2332 in #2235
- feat(winit):
LaunchConfig::with_globalby @marc2332 in #2222 - fix(components): Select a11y closing, round 2 by @marc2332 in #2212
- feat(core): Letter spacing by @marc2332 in #2209
- fix(query): Dont borrow across await when running queries and mutations by @marc2332 in #2208
- fix(core): Scale color opacity in with_a by @marc2332 in #2237
- fix(ci): Build with static CRT on Windows's build example workflow by @marc2332 in #2229
- chore(ci): Deps report by @marc2332 in #2201
- fix(core): Dont drop cache values still in use in
LRUCacheby @marc2332 in #2231 - fix(borderless) Disable rounding if window is maximized by @marc2332 in #2242
- fix(router): Guard outlet's context providing for hotreload by @marc2332 in #2234
- feat(web):
freya-webby @marc2332 in #2206 - feat(web): Proper typing by @marc2332 in #2214
- feat(componets): Touch dragging by @marc2332 in #2216
- feat(components): Smooth scrolling by @marc2332 in #2217
- feat(core):
TargetPlatform, runtime platform detection by @marc2332 in #2218 - feat(core): Opt-in scoped event handlers by @marc2332 in #2230
- feat(borderless-plugin): Shadows by @marc2332 in #2243
- fix(borderless): Only render shadow on wayland and when not maximized / tiled by @marc2332 in #2244
- chore(ci): Rework release process by @marc2332 in #2219
- fix(core): Keep stored in the intrinstic a11y id to use it for when elements stop overriding it by @marc2332 in #2247
- fix(winit): Skip opengl emulation drivers and bound software rendering frames manually on Windows by @marc2332 in #2241
- feat(components): Adaptive popups sizing by @marc2332 in #2245
- feat(winit):
Platform::post_render_callbackby @marc2332 in #2199 - feat(terminal): Custom terminal backends by @marc2332 in #2238
- feat(borderless-plugin): Remove custom shadow by @marc2332 in #2246
- chore(performance-plugin): Revamp overlay by @marc2332 in #2249
- fix(borderless): Canvas clip by @marc2332 in #2252
- fix(components): Missing theme methods for Table by @marc2332 in #2251
- fix(winit): Renderer-level clipboard by @marc2332 in #2240
- perf(core): Skip work in runner and tree if nothing changed by @marc2332 in #2254
- feat(freya): Opt-in software-only renderer by @marc2332 in #2081
- feat(core): Font features by @marc2332 in #2255
- fix(deps): update dependency astro to v7 [security] by @renovate[bot] in #2256
- fix(performance-plugin): Track closing windows by @marc2332 in #2258
- chore(components): Make canvas element clip by default by @marc2332 in #2266
- chore(core): Improve text selection contrast by @marc2332 in #2262
- chore(ci): use letmerelease by @marc2332 in #2263
- fix(winit): Avoid double throttle on vulkan + wayland by @marc2332 in #2260
- feat(winit): Winit window dragging movement threshold by @marc2332 in #2257
- chore: Revamp web demo gallery by @marc2332 in #2261
- chore(core): Debug impls for
EventHandler,CallbackandNoArgCallbackby @marc2332 in #2278 - chore(winit): Log
openerrors by @marc2332 in #2275 - feat(components): Custom overflow for resizable panel by @marc2332 in #2274
- fix(components): Type-aware events combos by @marc2332 in #2272
- feat(core): Non static read and writes in state by @marc2332 in #2279
- faet(winit): Better GPU Resources cache limit management by @marc2332 in #2286
- chore(components): More resilient virtual scroll view test by @marc2332 in #2285
- fix(core): Update cursor icon regardless of trigger event by @marc2332 in #2283
- fix(core): Move cursor to effect data by @marc2332 in #2273
- feat(metrics-plugin): Revamp by @marc2332 in #2287
- feat(winit): Opt out of a11y backend by @marc2332 in #2288
- chore(docs): Remove debris
vulkanfeature by @marc2332 in #2292 - feat(code-editor): Flexibilize CodeEditor by @marc2332 in #2228
- chore(components): Refactor scroll controller by @marc2332 in #2268
- feat(web): Optimize wasm blob by @marc2332 in #2296
- feat(core):
withby @marc2332 in #2271 - chore(core): Improve docs for Platform by @marc2332 in #2294
- chore(ci): Bump letmerelease to 0.1.4 by @marc2332 in #2293
- fix(core): Proper support for padding in
labelandparagraphby @marc2332 in #2281 - chore(components): Bounded controlled scroll by @marc2332 in #2295
- feat(components): Flexibilize Table by @marc2332 in #2270
- chore(metrics): Switch to debug logs by @marc2332 in #2305
- chore(ci): Bump hotpath to 0.26 by @marc2332 in #2291
- feat(core): Rename blur to backdrop_blur and add image blur by @marc2332 in #2307
- fix(winit): Share vulkan context between windows by @marc2332 in #2301
- chore(docs): Remove components embedded previews by @marc2332 in #2303
- fix(freya): Typo in font docs by @marc2332 in #2317
- feat(components): Show Text cursor in SelectableText always by @marc2332 in #2316
- chore(components): Revamp Scrollbar styling by @marc2332 in #2265
- feat(components): Allow custom scrollbars by @marc2332 in #2298
- chore(core): Add sparse reorder benchmark by @marc2332 in #2318
- chore(docs): Custom elements by @marc2332 in #2311
- feat(components): Better async rasterization API for SvgViewer by @marc2332 in #2309
- chore(website): Optimize deploys by @marc2332 in #2321
- chore: Switch to mbx by @marc2332 in #2312
- feat(winit): Load variable fonts weights by @marc2332 in #2310
- feat(winit): Per platform text gamma and contrast by @marc2332 in #2314
- feat(html): Replace
freya-webviewwith Blitz-poweredfreya-htmlby @marc2332 in #2157 - chore(website): More strict path filter on website deploys by @marc2332 in #2329
- fix(html): More robust latest stylesheet test by @marc2332 in #2328
- chore(engine): Reexport Size by @marc2332 in #2326
- chore(freya): Reexport torin by @marc2332 in #2325
- chore(html): Move freya-html example to its own crate by @marc2332 in #2324
- chore(core): Make
Border::is_visiblepublic by @marc2332 in #2330 - feat(components): More layout customization on ResizableContainer by @marc2332 in #2323
- chore(ci): hotpath cloud by @marc2332 in #2332
- fix(core): Use span text style for font families in paragraph spans by @marc2332 in #2334
- chore(torin): Const methods by @marc2332 in #2331
- chore(core): Rename global event press to global event up and clarify event docs by @marc2332 in #2322
- fix(core/winit): Platform-level exit event instead of move when cursor leaves window by @marc2332 in #2335
- fix(core): Use text bounds for text gradients and shaders by @marc2332 in #2336
- fix(components): Fix Input not always following cursor when typing and overflowing past size by @marc2332 in #2338
- chore(components): Fix flaky VirtualScrollView test by @marc2332 in #2341
- fix(website) Bump emsdk to v5.0.0 by @marc2332 in #2343
- chore(deps): Hotpath 0.27 by @marc2332 in #2344
- feat(metrics): Show window size in performance overlay by @marc2332 in #2346
- feat(winit): Manual vsync fallback in OpenGL for Windows by @marc2332 in #2345
- chore(deps): hotpath 0.28 and configure CI by @pawurb in #2353
- feat(edit): Whole-word text selection dragging by @marc2332 in #2349
- fix(ragnarok): Also consider movement if no enter is available, to emit the leave event by @marc2332 in #2350
- chore(core): Render benchmarks by @marc2332 in #2357
- feat(core): Split
StyleExtintoDecorationExtandBackgroundExtby @marc2332 in #2359 - chore(nix): add android shell by @marc2332 in #2358
- chore(core): Remove
canvasin favour ofFill::Callbackby @marc2332 in #2327 - feat(core): Implement IntoReadable for Readable and IntoWritable for Writable by @marc2332 in #2361
- feat(animation): Allow custom easing functions by @marc2332 in #2363
- feat(components): Flexible calendar components by @marc2332 in #2339
- feat:
elements_atforHtmlHandleby @SpikeHD in #2366 - chore: Add
alsato nix flake by @marc2332 in #2370 - chore: Remove
CLAUDE.mdby @marc2332 in #2378 - feat(website): Revamp by @marc2332 in #2320
- feat(pathgraph):
no_stdsupport by @marc2332 in #2374 - chore(docs): Split crates list in contributing guide by @marc2332 in #2373
- feat(winit): Prefer Integrated GPUs by default over Discrete, on Vulkan by @marc2332 in #2372
- chore(ci): Parallel by @marc2332 in #2381
- feat(ragnarok):
no_stdby @marc2332 in #2375 - fix(components): Fix flaky scroll vew scrollbar test by @marc2332 in #2384
- feat(core):
cursor_visibleby @hgourvest in #2382 - fix(devtools): Remove unnecessary multithread shenanigans by @marc2332 in #2383
- feat(html): ResourceCache for HTMLViewer by @marc2332 in #2367
- feat(components): Opt-out auto hide of scrollbars by @marc2332 in #2386
- fix: Update to freya-skia-safe 0.104.0 by @marc2332 in #2387
- feat(core/winit): Respond to accesskit action requests by sending an event to the elements by @marc2332 in #2379
- chore: Nightly tests and coverage by @marc2332 in #2388
- feat(core): Split
spawn_foreverinspawn_in_windowandspawn_globalby @marc2332 in #2352 - feat(core/winit): Split
PlatformintoPlatformandPlatformWindowby @marc2332 in #2354 - feat(core): Global effects by @marc2332 in #2371
- feat(winit):
WindowConfig::with_contextby @marc2332 in #2369 - chore: Bump rust to 1.99 by @marc2332 in #2362
- fix(ci): Update nightly tests with the platform api changes by @marc2332 in #2391
- fix(winit): Disable gtk locale by @marc2332 in #2392
- fix(winit): Revert preferred gpu to dGPU in Vulkan in Linux by @marc2332 in #2395
- chore(core): Rename render benchmarks to paint by @marc2332 in #2399
- chore(ci): Permissions read for workflows by @marc2332 in #2398
- chore(core): More idiomatic rust extensions data getters by @marc2332 in #2396
- chore(html): Update to Blitz 0.3.0-beta.3 by @marc2332 in #2401
- fix: RUSTSEC-2026-0341 by @marc2332 in #2405
- feat(torin): no_std by @marc2332 in #2403
- fix(audit): Bump rustls to 0.23.46 by @marc2332 in #2409
- fix(components): Fix flaky virtualscrollview test by @marc2332 in #2413
- chore(ci):
cargo-denyby @marc2332 in #2411 - fix(core): Process requested focus on tree initialization by @marc2332 in #2423
- feat(winit): Manual frame throttling for all platforms using software rendering by @marc2332 in #2417
- feat(core): Custom text paint by @marc2332 in #2397
- chore(ci): Build scripts list in
cargo-denyby @marc2332 in #2418 - fix(winit): Request alpha size 8 bits in opengl on Android for backblur to work by @marc2332 in #2419
- chore: Remove unused deps by @marc2332 in #2420
- chore(core):
tiny-notifyandtiny-cacheby @marc2332 in #2408 - feat(core): Color brigthness API by @marc2332 in #2422
- feat(core): Expose scale factor in fill render callback by @marc2332 in #2427
- fix: Bump webpkit-roots to 1.0.10 by @marc2332 in #2429
- chore(components): Rethink resizable container by @marc2332 in #2412
- chore: Configure thread diff for hotpath benchmarks by @pawurb in #2430
- fix(ci): Patch RUSTSEC-2026-0367, RUSTSEC-2026-0368, RUSTSEC-2026-0369 by @marc2332 in #2434
- chore(docs): Clean up links in optimizing docs by @marc2332 in #2431
- chore(tiny-diff): Move element diffing to
tiny-diffby @marc2332 in #2424 - chore: Add hotpath-rs badge by @pawurb in #2441
- fix(deps): update dependency astro to v7.3.3 [security] by @renovate[bot] in #2440
- chore(website): Improve SEO by @marc2332 in #2442
- feat(core): Smooth scrolling for touchpads with Linux by @marc2332 in #2421
- fix(winit): Better renderer fallback for linux + wayland + dual gpu by @marc2332 in #2433
- fix(core): Better handling of mixed additions and movements diff by @marc2332 in #2259
- fix(core): Keyed component-root element removal uses stale index, just use node id instead. by @marc2332 in #2425
- chore(ci): Update to hotpath 0.29 by @marc2332 in #2448
- feat(components): Make blinking and scroll controller bounds api public by @marc2332 in #2450
- chore: Use merged mode for hotpath benchmarks by @pawurb in #2454
- fix(components): Make Input scroll to the cursor properly when dragging the text to the right by @marc2332 in #2453
- fix(components): Dont disable Button's pointer out by @marc2332 in #2452
- feat(components):
Input::new_callbackby @marc2332 in #2445 - feat(core):
WritableSetterby @marc2332 in #2446 - fix(components): Use content fit for segmented button by @marc2332 in #2451
- chore: Remove unnecessary width call in layout_content_flex.rs example by @marc2332 in #2457
- chore(freya): Bump to 0.5.0-rc.13 by @marc2332 in #2458
- chore(ci): Bump letmerelease to 0.2 by @marc2332 in #2461
- fix(radio): Peek antenna instead of reading by @marc2332 in #2466
- fix(core): Update accessibility node when its diff says so, not just when the id changes by @marc2332 in #2464
- fix(markdown): Bump pulldown-cmark to 0.13.5 by @marc2332 in #2470
- chore(winit):
tray-icon0.26.1, drop dependency on gtk and libxdo by @marc2332 in #2460 - chore: Configure hotpath criterion benchmark by @pawurb in #2469
- fix(ci): Put alloca in build scripts allow list by @marc2332 in #2471
- fix(ci): Fix hotpath relay pinned rev by @marc2332 in #2473
- chore: Use GitHub marketplace hotpath-relay by @pawurb in #2474
- fix(core): Respect disabled focus on focus requests by @marc2332 in #2475
- feat(html): Rework the resources and font caching in freya-html by @marc2332 in #2435
- feat(clipboard): Android support by @marc2332 in #2476
New Contributors
- @raphamorim made their first contribution in #2116
- @pawurb made their first contribution in #2353
- @SpikeHD made their first contribution in #2366
- @hgourvest made their first contribution in #2382
Full Changelog: v0.4.0...v0.5.0