All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
fetch_positioncommand inwindowmodule. #2280
Many thanks to...
- @n1ght-hunter
0.12.1 - 2024-02-22
extendandfrom_vecmethods forColumnandRow. #2264PartialOrd,Ord, andHashimplementations forkeyboard::Modifiers. #2270clipboardmodule inadvancedmodule. #2272- Default
disabledstyle forcheckboxandhoveredstyle forSvg. #2273 From<u16>andFrom<i32>implementations forborder::Radius. #2274size_hintmethod forComponenttrait. #2275
- Black images when using OpenGL backend in
iced_wgpu. #2259 - Documentation for
horizontal_spaceandvertical_spacehelpers. #2265 - WebAssembly platform. #2271
- Decouple
Keyfromkeyboard::Modifiersand apply them totextinKeyboardInput. #2238 - Text insertion not being prioritized in
TextInputandTextEditor. #2278 iced_tiny_skiaclipping line strokes. #2282
Many thanks to...
- @PolyMeilex
- @rizzen-yazston
- @wash2
0.12.0 - 2024-02-15
- Multi-window support. #1964
TextEditorwidget (or multi-line text input). #2123Shaderwidget. #2085- Shadows. #1882
- Vectorial text for
Canvas. #2204 - Layout consistency. #2192
- Explicit text caching. #2058
- Gradients in Oklab color space. #2055
Themerwidget. #2209Transformprimitive. #2120- Cut functionality for
TextEditor. #2215 - Primary clipboard support. #2240
- Disabled state for
Checkbox. #2109 skip_taskbarwindow setting for Windows. #2211fetch_maximizedandfetch_minimizedcommands inwindow. #2189run_with_handlecommand inwindow. #2200show_system_menucommand inwindow. #2243text_shapingmethod forTooltip. #2172interactionmethod forMouseArea. #2207hoveredstyling forSvgwidget. #2163heightmethod forTextEditor. #2221- Customizable style for
TextEditor. #2159 - Customizable style for
QRCode. #2229 - Border width styling for
Toggler. #2219 RawTextvariant forPrimitiveiniced_graphics. #2158Streamsupport forCommand. #2150- Access to bounds/content bounds from a
Scrollableviewport. #2072 Frame::scale_nonuniformmethod. #2070theme::Custom::with_fnto generate completely custom themes. #2067styleattribute forFont. #2041- Texture filtering options for
Image. #1894 defaultandshift_stepmethods forsliderwidgets. #2100Customvariant tocommand::Action. #2146- Mouse movement events for
MouseArea. #2147 - Dracula, Nord, Solarized, and Gruvbox variants for
Theme. #2170 - Catppuccin, Tokyo Night, Kanagawa, Moonfly, Nightfly and Oxocarbon variants for
Theme. #2233 From<T> where T: Into<PathBuf>forsvg::Handle. #2235on_openandon_closehandlers forPickList. #2174- Support for generic
ElementinTooltip. #2228 - Container and
gapstyling forScrollable. #2239 - Use
Borrowfor bothoptionsandselectedin PickList. #2251 clipproperty forContainer,Column,Row, andButton. #2252
- Enable WebGPU backend in
wgpuby default instead of WebGL. #2068 - Update
glyphonto0.4. #2203 - Require
Sendon stored pipelines. #2197 - Update
wgputo0.19,glyphonto0.5,softbufferto0.4,window-clipboardto0.4, andraw-window-handleto0.6. #2191 - Update
winitto0.29. #2169 - Provide actual bounds to
Shaderprimitives. #2149 - Deny warnings in
testworkflow. #2135 - Update
wgputo0.18andcosmic-textto0.10. #2122 - Compute vertex positions in the shader. #2099
- Migrate twox-hash -> xxhash-rust and switch to Xxh3 for better performance. #2080
- Add
keyboardsubscriptions and renamesubscription::eventstoevent::listen. #2073 - Use workspace dependencies and package inheritance. #2069
- Update
wgputo0.17. #2065 - Support automatic style type casting for
Button. #2046 - Make
with_clipandwith_saveinFrameable to return the data of the provided closure. #1994 - Use
Radiansfor angle fields inArcandarc::Elliptical. #2027 - Assert dimensions of quads are normal in
iced_tiny_skia. #2082 - Remove
positionfromoverlay::Element. #2226 - Add a capacity limit to the
GlyphCacheiniced_tiny_skia. #2210 - Use pointer equality to speed up
PartialEqimplementation ofimage::Bytes. #2220 - Update
bitflags,glam,kurbo,ouroboros,qrcode, andsysinfodependencies. #2227 - Improve some widget ergonomics. #2253
- Clipping of
TextInputselection. #2199 Paragraph::grapheme_positionwhen ligatures are present. #2196- Docs to include missing feature tags. #2184
PaneGridclick interaction on the top edge. #2168iced_wgpunot rendering text in SVGs. #2161- Text clipping. #2154
- Text transparency in
iced_tiny_skia. #2250 - Layout invalidation when
Tooltipchangesoverlay. #2143 Overlaycomposition. #2142- Incorrect GIF for the
progress_barexample. #2141 - Standalone compilation of
iced_renderercrate. #2134 - Maximize window button enabled when
Settings::resizableisfalse. #2124 - Width of horizontal scrollbar in
Scrollable. #2084 ComboBoxwidget panic on wasm. #2078- Majority of unresolved documentation links. #2077
- Web examples not running. #2076
- GIFs and video examples broken. #2074
@interpolate(flat)not used as attribute. #2071CheckboxandTogglerhidden behind scrollbar instylingexample. #2062- Absolute
LineHeightsometimes being0. #2059 - Paste while holding ALT. #2006
Command<T>::performto return aCommand<T>. #2000convert_textnot called onSvgtrees. #1908- Unused
backend.rsfile in renderer crate. #2182 - Some
clippy::pedanticlints. #2096 - Some minor clippy fixes. #2092
- Clippy docs keyword quoting. #2091
- Clippy map transformations. #2090
- Inline format args for ease of reading. #2089
- Stuck scrolling in
Scrollablewith touch events. #1940 - Incorrect unit in
system::Information. #2223 size_hintnot being called fromelement::Map. #2224size_hintnot being called fromelement::Explain. #2225- Slow touch scrolling for
TextEditorwidget. #2140 Subscription::mapusing unreliable function pointer hash to identify mappers. #2237- Missing feature flag docs for
time::every. #2188 - Event loop not being resumed on Windows while resizing. #2214
- Alpha mode misconfiguration in
iced_wgpu. #2231 - Outdated documentation leading to a dead link. #2232
Many thanks to...
- @akshayr-mecha
- @alec-deason
- @arslee07
- @AustinMReppert
- @avsaase
- @blazra
- @brianch
- @bungoboingo
- @Calastrophe
- @casperstorm
- @cfrenette
- @clarkmoody
- @Davidster
- @Decodetalkers
- @derezzedex
- @DoomDuck
- @dtzxporter
- @Dworv
- @fogarecious
- @GyulyVGC
- @hicaru
- @ids1024
- @Imberflur
- @jhannyj
- @jhff
- @jim-ec
- @joshuamegnauth54
- @jpttrssn
- @julianbraha
- @Koranir
- @lufte
- @matze
- @MichalLebeda
- @MoSal
- @MrAntix
- @nicksenger
- @Nisatru
- @nyurik
- @Remmirad
- @ripytide
- @snaggen
- @Tahinli
- @tarkah
- @tzemanovic
- @varbhat
- @VAWVAW
- @william-shere
- @wyatt-herkamp
0.10.0 - 2023-07-28
- Text shaping, font fallback, and
iced_wgpuoverhaul. #1697 - Software renderer, runtime renderer fallback, and core consolidation. #1748
- Incremental rendering for
iced_tiny_skia. #1811 - Configurable
LineHeightsupport for text widgets. #1828 text::Shapingstrategy selection. #1822- Subpixel glyph positioning and layout linearity. #1921
- Background gradients. #1846
- Offscreen rendering and screenshots. #1845
- Nested overlays. #1719
- Cursor availability. #1904
- Backend-specific primitives. #1932
ComboBoxwidget. #1954web-colorsfeature flag to enable "sRGB linear" blending. #1888PaneGridlogic to split panes by drag & drop. #1856PaneGridlogic to drag & drop panes to the edges. #1865- Type-safe
Scrollabledirection. #1878 Scrollablealignment. #1912- Helpers to change viewport alignment of a
Scrollable. #1953 scroll_towidget operation. #1796scroll_tohelper. #1804visible_boundswidget operation forContainer. #1971- Command to fetch window size. #1927
- Conversion support from
Fntrait to custom theme. #1861 - Configurable border radii on relevant widgets. #1869
border_radiusstyling toSliderrail. #1892application_idinPlatformSpecificsettings for Linux. #1963- Aliased entries in
text::Cache. #1934 - Text cache modes. #1938
operatemethod forprogram::State. #1913Viewportargument toWidget::on_event. #1956- Nix instructions to
DEPENDENCIES.md. #1859 - Loading spinners example. #1902
- Workflow that verifies
CHANGELOGis always up-to-date. #1970 - Outdated mentions of
iced_nativeinREADME. #1979
- Updated
wgputo0.16. #1807 - Updated
glamto0.24. #1840 - Updated
winitto0.28. #1738 - Updated
paletteto0.7. #1875 - Updated
ouroborosto0.17. #1925 - Updated
resvgto0.35andtiny-skiato0.10. #1907 - Changed
mouse::Button::Otherto takeu16instead ofu8. #1797 - Changed
subscription::channelto take aFnOncenon-Syncclosure. #1917 - Removed
Copyrequirement for textStyleSheet::Style. #1814 - Removed
min_widthof 1 from scrollbar & scroller forScrollable. #1844 - Used
Widget::overlayforTooltip. #1692
Responsivelayout not invalidated when shell layout is invalidated. #1799Responsivelayout not invalidated when size changes without aviewcall. #1890- Broken link in
ROADMAP.md. #1815 boundsof selected option background inMenu. #1831- Border radius logic in
iced_tiny_skia. #1842 Svgfiltered color not premultiplied. #1841- Race condition when growing an
image::Atlas. #1847 - Clearing damaged surface with background color in
iced_tiny_skia. #1854 - Private gradient pack logic for
iced_graphics::Gradient. #1871 - Unordered quads of different background types. #1873
- Panic in
glyphonwhen glyphs are missing. #1883 - Empty scissor rectangle in
iced_wgpu::trianglepipeline. #1893 Scrollablescrolling when mouse not over it. #1910translationinlayoutofNestedoverlay. #1924- Build when using vendored dependencies. #1928
- Minor grammar mistake. #1931
- Quad rendering including border only inside of the bounds. #1843
- Redraw requests not being forwarded for
Componentoverlays. #1949 - Blinking input cursor when window loses focus. #1955
BorderRadiusnot exposed in root crate. #1972- Outdated
ROADMAP. #1958
- Keybinds to cycle
ComboBoxoptions. #1991 Tooltipoverlay position insideScrollable. #1978iced_wgpufreezing on empty layers. #1996image::Viewerreacting to any scroll event. #1998TextInputpasting text whenAltkey is pressed. #2006- Broken link to old
iced_nativecrate inREADME. #2024 Rectangle::containsbeing non-exclusive. #2017- Documentation for
Arcandarc::Elliptical. #2008
Many thanks to...
- @a1phyr
- @alec-deason
- @AustinMReppert
- @bbb651
- @bungoboingo
- @casperstorm
- @clarkmoody
- @Davidster
- @Drakulix
- @genusistimelord
- @GyulyVGC
- @ids1024
- @jhff
- @JonathanLindsey
- @kr105
- @marienz
- @malramsay64
- @nicksenger
- @nicoburns
- @NyxAlexandra
- @Redhawk18
- @RGBCube
- @rs017991
- @tarkah
- @thunderstorm010
- @ua-kxie
- @wash2
- @wiiznokes
0.9.0 - 2023-04-13
MouseAreawidget. #1594channelhelper insubscription. #1786- Configurable
widthforScrollable. #1749 - Support for disabled
TextInput. #1744 - Platform-specific window settings. #1730
- Left and right colors for sliders. #1643
- Icon for
TextInput. #1702 - Mouse over scrollbar flag for
scrollable::StyleSheet. #1669 - Better example for
Radio. #1762
wgpuhas been updated to0.15iniced_wgpu. #1789resvghas been updated to0.29iniced_graphics. #1733subscription::runnow takes a function pointer. #1723
- Redundant
on_scrollmessages forScrollable. #1788 - Outdated items in
ROADMAP.md#1782 - Colons in shader labels causing compilation issues in
iced_wgpu. #1779 - Re-expose winit features for window servers in Linux. #1777
- Replacement of application node in Wasm. #1765
clippylints for Rust 1.68. #1755- Unnecessary
Componentrebuilds. #1754 - Incorrect package name in checkbox example docs. #1750
- Fullscreen only working on primary monitor. #1742
Padding::fiton irregular values for an axis. #1734Debugimplementation ofFontdisplaying its bytes. #1731- Sliders bleeding over their rail. #1721
Fillvariant forAlignment. #1735
Many thanks to...
- @ahoneybun
- @bq-wrongway
- @bungoboingo
- @casperstorm
- @Davidster
- @ElhamAryanpur
- @FinnPerry
- @GyulyVGC
- @JungleTryne
- @lupd
- @mmstick
- @nicksenger
- @Night-Hunter-NF
- @tarkah
- @traxys
- @Xaeroxe
0.8.0 - 2023-02-18
- Generic pixel units. #1711
custommethod towidget::Operationtrait. #1649Groupoverlay. #1655- Standalone
drawhelper forimage. #1682 - Dynamic
pick_list::Handle. #1675 Idsupport forContainer. #1695- Custom
Checkboxicon support. #1707 windowaction to change always on top setting. #1587windowaction to fetch its unique identifier. #1589
- Annotated
CommandandSubscriptionwith#[must_use]. #1676 - Replaced
FnwithFnOnceincanvas::Cache::draw. #1694 - Used
[default]on enum ingame_of_lifeexample. #1660 - Made
QRCodehide when data is empty inqr_codeexample. #1665 - Replaced
CowwithBytesinimageto accept any kind of data that implementsAsRef<[u8]>. #1551
- Blank window on application startup. #1698
- Off-by-one pixel error on
pick_listwidth. #1679 - Missing
text_inputimplementation inoperation::Map. #1678 - Widget-driven animations for
Component. #1685 - Layout translation in
overlay::Group. #1686 - Missing
is_overimplementation for overlays oficed_lazywidgets. #1699 - Panic when overlay event processing removes overlay. #1700
- Panic when using operations with components in certain cases. #1701
TextInputwidth when using padding. #1706iced_glowcrash on some hardware. #1703- Height of
overlay::Menu. #1714 - Size of images in
README. #1659 - New
clippylints. #1681
Many thanks to...
- @13r0ck
- @bungoboingo
- @casperstorm
- @frey
- @greatest-ape
- @ids1024
- @Jedsek
- @nicksenger
- @Night-Hunter-NF
- @sdroege
- @Sn-Kinos
- @sushigiri
- @tarkah
0.7.0 - 2023-01-14
- Widget-driven animations. #1647
- Multidirectional scrolling support for
Scrollable. #1550 VerticalSliderwidget. #1596Shift+Clicktext selection support inTextInput. #1622- Profiling support with the
chrome-tracefeature. #1565 - Customization of the handle of a
PickList. #1562 windowaction to request user attention. #1584windowaction to gain focus. #1585windowaction to toggle decorations. #1588Copyimplementation forgradient::Location. #1636
- Replaced
Application::should_exitwith awindow::closeaction. #1606 - Made
focusable::Countfields public. #1635 - Added
Dependencyargument to the closure ofLazy. #1646 - Switched arguments order of
Toggler::newfor consistency. #1616 - Switched arguments order of
Checkbox::newfor consistency. #1633
- Compilation error in
iced_glowwhen theimagefeature is enabled butsvgisn't. #1593 - Widget operations for
Responsivewidget. #1615 - Overlay placement for
Responsive. #1638 overlayimplementation forLazy. #1644- Minor typo in documentation. #1624
- Links in documentation. #1634
- Missing comment in documentation. #1648
Many thanks to...
- @13r0ck
- @Araxeus
- @ben-wallis
- @bungoboingo
- @casperstorm
- @nicksenger
- @Night-Hunter-NF
- @rpitasky
- @rs017991
- @tarkah
- @wiktor-k
0.6.0 - 2022-12-07
- Support for non-uniform border radius for
Primitive::Quad. #1506 - Operation to query the current focused widget. #1526
- Additional operations for
TextInput. #1529 - Styling support for
Svg. #1578
- Triangle geometry using a solid color is now drawn in a single draw call. #1538
- Gradients for WebAssembly target. #1524
Overlaylayout cache not being invalidated. #1528- Operations not working for
PaneGrid. #1533 - Mapped
widget::Operationalways returningOutcome::None. #1536 - Padding of
TextInputwithLength::Unitswidth. #1539 - Clipping of
ImageandSvgwidgets iniced_glow. #1557 - Invalid links in documentation. #1560
Customstyle ofPickListwidget. #1570- Scroller in
Scrollablealways being drawn. #1574
Many thanks to...
- @bungoboingo
- @l1Dan
- @mmstick
- @mtkennerly
- @PolyMeilex
- @rksm
- @rs017991
- @tarkah
- @wash2
0.5.0 - 2022-11-10
-
Stabilization of stateless widgets (#1393)
The old widget API has been completely replaced by stateless widgets (introduced in #1284). Alongside the new API, there are a bunch of new helper functions and macros for easily describing view logic (likerow!andcolumn!). -
First-class theming (#1362)
A complete overhaul of our styling primitives, introducing aThemeas a first-class concept of the library. -
Widget operations (#1399)
An abstraction that can be used to traverse (and operate on) the widget tree of an application in order to query or update some widget state. -
Lazywidget (#1400)
A widget that can call some view logic lazily only when some data has changed. Thanks to @nicksenger! -
Linear gradient support for
Canvas(#1448)
TheCanvaswidget can draw linear gradients now. Thanks to @bungoboingo! -
Touch support for
Canvas(#1305)
TheCanvaswidget now supports touch events. Thanks to @artursapek! -
ImageandSvgsupport foriced_glow(#1485)
Our OpenGL renderer now is capable of rendering both theImageandSvgwidgets. Thanks to @ids1024!
0.4.2 - 2022-05-03
Paddingtype not exposed iniced.
0.4.1 - 2022-05-02
- Version number in
README.
0.4.0 - 2022-05-02
-
Stateless widgets (#1284)
A brand new widget API that removes the need to keep track of internal widget state. No morebutton::Statein your application! -
Componenttrait (#1131)
A new trait to implement custom widgets with internal mutable state while using composition and The Elm Architecture. -
Responsivewidget (#1193)
A widget that is aware of its dimensions and can be used to easily build responsive user interfaces. -
Experimental WebGL support (#1096)
Applications can now be rendered into an HTMLcanvaswhen targeting Wasm by leveraging the WebGL support inwgpu. Thanks to @pacmancoder and @kaimast! -
Support for Raspberry Pis and older devices (#1160)
The compatibility of our OpenGL renderer has been improved and should run on any hardware that supports OpenGL 3.0+ or OpenGL ES 2.0+. Additionally, we started maintaining Docker images foraarch64andarmv7to easily cross-compileicedapplications and target Raspberry Pis. Thanks to @derezzedex! -
Simpler
RendererAPIs (#1110)
The surface of theRendererAPIs of the library has been considerably reduced. Instead of aRenderertrait per widget, now there are only 3 traits that are reused by all the widgets.
0.3.0 - 2021-03-31
- Touch support. #57 #650 (thanks to @simlay and @discordance!)
- Clipboard write access for
image::Viewerwidget. It allows panning and scaling of an image. #319 (thanks to @tarkah!)Tooltipwidget. It annotates content with some text on mouse hover. #465 (thanks to @yusdacra!)- Support for the
smolasync runtime. #699 (thanks to @JayceFayne!) - Support for graceful exiting when using the
Applicationtrait. #804 - Image format features in
iced_wgputo reduce code bloat. #392 (thanks to @unrelentingtech!) FocusedandUnfocusedvariant towindow::Event. #701 (thanks to @cossonleo!)WGPU_BACKENDenvironment variable to configure the internal graphics backend oficed_wgpu. #789 (thanks to @Cupnfish!)
- The
TitleBarof aPaneGridnow supports generic elements. #657 (thanks to @clarkmoody!) - The
Errortype now implementsSendandSync. #719 (thanks to @taiki-e!) - The
Styletypes iniced_stylenow implementCloneandCopy. #720 (thanks to @taiki-e!) - The following dependencies have been updated:
- The following examples were improved:
- Button events not being propagated to contents. #668
- Incorrect overlay implementation for the
Buttonwidget. #764 Viewport::physical_widthreturning the wrong value. #700- Outdated documentation for the
Sandboxtrait. #710
0.2.0 - 2020-11-26
-
Canvasinteractivity (#325)
A trait-based approach to react to mouse and keyboard interactions in theCanvaswidget. -
iced_graphicssubcrate (#354)
A backend-agnostic graphics subcrate that can be leveraged to build new renderers. -
OpenGL renderer (#354)
An OpenGL renderer powered byiced_graphics,glow, andglutin. It is an alternative to the defaultwgpurenderer. -
Overlay support (#444)
Basic support for superpositioning interactive widgets on top of other widgets. -
Faster event loop (#597)
The event loop now takes advantage of the data dependencies in The Elm Architecture and leverages the borrow checker to keep the widget tree alive between iterations, avoiding unnecessary rebuilds. -
Event capturing (#614)
The runtime now can tell whether a widget has handled an event or not, easing integration with existing applications. -
PickListwidget (#444)
A drop-down selector widget built on top of the new overlay support. -
QRCodewidget (#622)
A widget that displays a QR code, powered by theqrcodecrate.
0.1.1 - 2020-04-15
Settings::with_flagsto easily initialize some default settings with flags. #266Defaultimplementation forcanvas::layer::Cache. #267Ctrl + Delsupport forTextInput. #268- Helper methods in
canvas::Pathto easily draw lines, rectangles, and circles. #293 From<Color>implementation forcanvas::Fill. #293From<String>implementation forcanvas::Text. #293From<&str>implementation forcanvas::Text. #293
newmethod ofRadioandCheckboxnow take a genericInto<String>for the label. #260Frame::fillnow takes a genericInto<canvas::Fill>. #293Frame::strokenow takes a genericInto<canvas::Stroke>. #293Frame::fill_textnow takes a genericInto<canvas::Text>. #293
- Feature flags not being referenced in documentation. #259
- Crash in some graphics drivers when displaying an empty
Canvas. #278 - Text measuring when spaces where present at the beginning of a
TextInputvalue. #279 TextInputproducing aClipprimitive when unnecessary. #279- Alignment of
Textprimitive iniced_wgpu. #281 CursorEnteredandCursorLeftnot being generated. #289
- Unnecessary
'staticlifetimes inRendererbounds. #290
0.1.0 - 2020-04-02
-
Event subscriptions (#122)
A declarative way to listen to external events asynchronously by leveraging streams. -
Custom styling (#146)
A simple, trait-based approach for customizing the appearance of different widgets. -
Canvaswidget (#193)
A widget for drawing 2D graphics with an interface inspired by the Web Canvas API and powered bylyon. -
PaneGridwidget (#224)
A widget that dynamically organizes layout by splitting panes that can be resized and drag and dropped. -
Svgwidget (#111)
A widget that renders vector graphics on top ofresvgandraqote. Thanks to @Maldela! -
ProgressBarwidget (#141)
A widget to notify progress of asynchronous tasks to your users. Thanks to @Songtronix! -
Configurable futures executor (#164)
Support for pluggingtokio,async-std,wasm-bindgen-futures, or your own custom futures executor to an application. -
Compatibility with existing
wgpuprojects (#183)
A bunch of improvements to the flexibility oficed_wgputo allow integration in existing codebases. -
Text selection for
TextInput(#202)
Thanks to @FabianLars and @Finnerale! -
Texture atlas for
iced_wgpu(#154)
An atlas on top ofguillotierefor batching draw calls. Thanks to @Maldela!
0.1.0-beta - 2019-11-25
- The old
icedbecomesiced_native. The currenticedcrate turns into a batteries-included, cross-platform GUI library.
0.1.0-alpha - 2019-09-05
- First release! 🎉