iced-yoda/CHANGELOG.md
Ashley Wulber 08fe1f3aa5
feat: pop-os megasquash
x11: Workaround nvidia driver lacking DRI

feat(mouse area): add double click

mouse area: add double click

compositor: Add code to extract adapter from x11

refactor: Extract ids_from_dev from wayland specific code

wayland: Don't crash if libwayland isn't available

feat(sctk): support for overflow widget

sctk: Fixes for cursor icon

* With multiple windows, `SetCursor` is only sent for the focused
  window. Fixing a flicker between icons when two windows are using
  different cursors.
* If there is a drag surface, let that surface set the cursor. And not
  any other.
* Set cursor on `enter`, and when switching between CSDs and app area.

Fixes https://github.com/pop-os/libcosmic/issues/533.

improv(sctk): per-surface cursor position tracking

feat(sctk): support ShowWindowMenu

Make text wrap configurable

fix(core): state order and handling of new trees

fix: settings.decorations enables SSD

refactor(sctk): convert window actions

fix: enable the tokio feature for accesskit_unix

fix: only try to connect to clipboard if on linux

iced_wgpu: don't query Wayland on macos

Update `window_clipboard`

sctk: Unmap subsurfaces instead of immediately destroying them

Destroying a surface is immediate, rather than synchronized with
commits.

This fixes a flickering behavior with drag and drop in
cosmic-workspaces.

sctk: Add alpha setting to `Subsurface` widget

sctk: Update `sctk`, `wayland-protocols`

Update for cosmic-text undefined buffer size

Adapt to cosmic-text undefined width change

fix: unset VK_LOADER_DRIVERS_DISABLE after enumeration

Allows applications to be launched on the NVIDIA GPU with Vulkan support

Adapt to new cosmic-text

wgpu: Fix wayland device id conversion

wgpu: Fix querying adapter, even if we already have one

wgpu: fix nvidia gpu powering up in hybrid setups

cargo fmt

fix: refactor dnd impl to support responsive widget

fix: update read and write methods so they don't recurse

fix(core): replace debug_assert in diff

fix: avoid with_borrow_mut

fix: better handling of state tree

This persists widget state associated with widgets assigned custom IDs even when the tree structure changes, but resets state if the custom ID is not found.

fix: emit Event::Resized to fix nav bar in cosmic-settings

fix(image): guess the image format before decoding

iced_wgpu: Query wayland for the device to use, if possible

sctk: Support `start_drag` with drags started from touch events

sctk: Add touch support

fix: update widnow-clipboard tag

fix: clean up dnd surfaces when a window is removed

Adjust to line ending needing to be specified as part of cosmic_text::BufferLine

sctk: Add support for drag-and-drop surface offsets

This adds an offset `Vector` as an argument to `on_drag`, and allows
passing an offset to `start_drag`.

Some applications using drag and drop want the top left corner of the
drag surface (as happens without an offset). But others want the drag
surface to be offset based on where the cursor is on the widget when
starting the drag. This can just be `-1 * offset`, but may be scaled if
the drag surface is a different size from the original widget.

fix(sctk): nested popup parent

feat(mouseare): mouse enter and exit

fix(tiny_skia): damage

fix(scrollable): filter scroll events in the wrong direction

sctk: Use empty input region for subsurfaces

This seems to work, and is a better way to deal with subsurface input if
there aren't any problems. This way, input events simply go to the
parent surface, so we don't have to deal with various edge cases related
to that. (Though for compositor-side issues, we still need to fix those
for other clients.)

This helps with an issue with drag-and-drop and subsurfaces on Smithay,
and a different issue on Kwin (in KDE 5.27, at least).

Send `DataSource` events to all surfaces

Previously these events are directed to the first surface, then removed
from `sctk_events`. Which is definitely not right.

slider & toggler roundness

Update window_clipboard to pop-dnd-4

fix(tiny-skia): non-simple border scaling

the issue can be seen with sharp corners when using the screenshot portal with scaling

Add read_primary/write_primary

chore: update tag

fix: translate offer positions in scrollable

fix(winit multi-window): handle exit_on_close request

fix(scrollable): pass child layout when calculating drag destinations

fix(container): id and set_id should use content

Clean up after lock surfaces are destroyed

Call unlock on session lock

chore: update tag

fixes for dnd

sctk: Fix handling of DnD with subsurfaces (#122)

Map subsurface to parent and add offset.

refactor: remove Sync bound for Message

fix: pass correct state and layout for container widgets

fix: docs

feat: update advertised drag destinations after rebuilding an interface

fix: color format & multi-window

fix: doc

feat: winit dnd

fix: ambiguous import

chore: reexport mime from window_clipboard

chore: use tag

clippy

feat: add actions and commands for new clipboard methods

cleanup docs

feat: custom mime types for Clipboard

sctk: Fix handling of layer surface `pointer_interactivity` (#115)

A null `region` represents an infinite region (the default). To set an
empty region, we need to create a `wl_region`.

fix(tiny_skia): disable shadows due to rendering glitch

fix(winit): add static lifetimes to multi-window application update

fix(winit): add static lifetimes to application update

Use `TypeId` to identify `subscription::Map`

(cherry picked from commit f39a5fd895)

fix(sctk): destroy drag icon and send event after cancel action

fix: clipboard cleanup

fix(sctk): clipboard dummy impl typo

refactor(sctk): optional clipboard

fix(sctk): broadcast events after update

when broadcasting events for no specific surface, it should be done after update so that the runtime subscription is current

fix(multi_window): enable drag resize

sctk: Map subsurface pointer events to parent surface, with offset

sctk_subsurface: Use two surfaces, handle button presses

Useful for testing pointer input to subsurfaces.

sctk: Add `subsurface_ids` mapping subsurface to parent and offset

sctk_subsurface_gst: NV12 surface suppport; disabled

Whether or not this works seems to depend on driver, or gstreamer
version...

Handle frame callbacks for subsurfaces, and `commit` parent surface

If the main surface is occluded completely by opaque subsurfaces, it may
not receive `frame` events. So we need to request frame events for all
subsurfaces as well.

Additionally, with "synchronized" subsurfaces, we need to `commit` the
parent surface for subsurface changes to take effect.

Fixes issues with subsurfaces updating slowly, or only when mouse moved
under some circumstances.

examples/sctk_subsurface_gst: Cache `BufferSource` in `BufferRef` qdata

Similar to `waylandsink`. Allows us to avoid creating a buffer source
(and ultimately `wl_buffer`) for every buffer swap.

sctk/subsurface: Cache `wl_buffer`s

Creating a new `wl_buffer` each frame seems to perform poorly. We can
instead keep a cache of `wl_buffer`s we have created from a
`BufferSource`.

sctk/subsurface: Avoid unnecessary subsurface commits if unchanged

feat(slider): add breakpoints

fix: autosize surface layout

Autosized surfaces perform the layout step to get the size and then again when building the interface, but sometimes the calculated size is not enough space when used as a bound, so we need to add a tiny amount to the calculated size. This also makes the event loop timeout duration configurable. Viewport physical size is calculated directly from the logical size now as well in iced-sctk to avoid inconsistencies that resulted from recalculating the logical size after using it to calculate the physical size.

fix(sctk): send close event instead of close requested when a window is closed

sctk: add command to set maximize state

Add `show_window_menu` action

Winit currently supports this only on Windows and Wayland.

This requests that a context menu is shown at the cursor position,
like the menu normally triggered by right clicking the title bar. This
is important for implementing client side decorations with Iced widgets.

Remove unnecessary redraw request

This was particularly visible on Redox where there is no vsync, but also
causes unnecessary redraws on Linux

chore: update accesskit

Disable broken rustdoc links

sctk: Add `Subsurface` widget (#79)

This adds a widget that attaches an shm or dma buffer to a subsurface,
scaled with `wp_viewporter`.

By exposing this as a widget, rather than as a type of window, it can be
positioned and scaled like any other iced widget. It provides an API
that's similar to an iced image.

The initial version of this just took a `wl_buffer`. But this makes
buffer re-use problematic. In particular, the docs for `wl_surface::attach`
note that `wl_buffer::release` events become unreliable if a buffer is
attached to multiple surfaces. And indicates that a client should create
multiple `wl_buffer` instances, or use `wp_linux_buffer_release`.

So we store information about the buffer, and create `wl_buffer`s as
needed. `SubsurfaceBuffer::new` also returns a future that's signaled
when all references are destroyed, both `wl_buffer`s and any instance of
the `SubsurfaceBuffer` that might still be used in the `view`.

So this seems like the best solution for now, within the
model-view-update architecture.

This has two examples: `sctk_subsurface`, showing a single-color shm
buffer, and `sctk_subsurface_gst`, which plays an h264 video to a
subsurface with vaapi decoding.

chore: use pop-os fork of winit

chore: unpin cosmic-text

Update wgpu to a commit that fixes use on Nvidia drivers

This can be tested with something like
`VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json cargo run -p tour
--features iced/wgpu`.

On Nvidia I'm seeing a flood of `Suboptimal present of frame` warnings.
So some improvement may still be needed here. But if it doesn't regress
behavior on other hardware, that seems like an improvement over
freezing.

fix(winit): pass text with modifiers in event

chore: update cosmic-text and glyphon

fix: distinguish between the key character and the utf8 of a key event

feat(wgpu): use alpha modes for compositing if available

chore: use updated softbuffer

fix: typo

fix: downgrade resvg

fix: core/serde

chore: remove default features

typo: add rev to glyphon

Update to cosmic-text refactor

Fix docs error

Add function to fill a Raw

Fixes for last commit

fix: broadcast surface events

dnd_listener: Fix behavior when there are multiple listeners (#87)

A `dnd_listener` widget shouldn't handle a DnD event when the dnd drag
isn't within the widget's bounds. So add a few more checks for this.

Enter/leave events generated by `DndOfferEvent::Motion` also don't
behave as one might expect, since the enter may occur before the leave
depending on the order it calls `on_event` on the widget. Not sure how
to address that, but cosmic-workspaces can just ignore the leave events
for now.

Otherwise, this seems to be working fine, after these changes.

chore: fix sctk multi-window dependency

cleanup: formatting and clippy

fix(example): sctk_drag id

fix: translate the wayland event position for content inside a scrollable

fix: set web-sys to =0.3.64

fix: clip mask checks

chore: use advanced text shaping for pick list

fix: dnd widget layout

fix: ambiguous palette import

chore: remove artifacts job

fix: CI tests

fix: add back the window id to the frames subscription

fix: tooltip children and diff

refactor: udpate gradient angles for slider

reexport limits

fix: editor and sctk_todos examples

cleanup: clippy

cleanup git workflows

chore: cleanup iced_widget

refactor

Update mod.rs

chore: update softbuffer

Hack to remove image blur

iced_core: feature for serde serialization of KeyCode

fix(wgpu): handle border_radius property with image raster

feat: add border radius to image rendering

feat: Add side mouse button events

cleanup: clippy fixes and formatting

Part of this is a refactor of the ID

cleanup: clippy and fmt

fix: test workflow

fix: add note in CHANGELOG

fix: clippy

refactor: restore default style of slider

feat: allow setting the width and height of a rule

fix: slider gradient angle

feat: gradient backgground for the slider rail

feat(mouse-area): added on_drag method

fix(widget): container inherited wrong icon color from renderer

fix(button): inherit icon color if set to none

feat(renderer): define default icon color

By default, this is the same as the text color for best visibility.

feat(winit): client-side resize drag support

feat(winit): client-side resize drag support

Make vertical scroll properties optional

fix: quad rendering including border only inside of the bounds

Move `Screenshot` inside `window` module

Added offscreen rendering support for wgpu & tiny-skia exposed with the window::screenshot command.

Provide access to font from each crate

Use nested for lazy widgets

Use layout with children for nesting

Introduce internal `overlay::Nested` for `UserInterface`

fix: reset button state if the cursor leaves

runtime: Handle widget operations in `program::State` helper (#46)

chore: default line height, text size, and shaping for cosmic

feat: sctk shell

fix: quad rendering including border only inside of the bounds

fix: better slider drawing (it allows just the border part of the handle quad outside of the layout bouds, which isn't great, but is ok for our purposes due to being transparent)

cleanup: fix & format

fix: use iced_core::Font

cleanup

fix: allow leaving out winit & iced-sctk

fix: settings

fix: slider draw improvements

fix: websocket example

fix: modal example

fix: scrollable example

fix: toast example

fix: avoid panicking in iced_sctk with lazy widgets in auto-size surfaces

fix: todos panic

fix: only diff auto-sized surfaces in iced_sctk build_user_interface & improve sctk examples

wip (iced-sctk): window resize with icons

feat (iced-sctk): support for setting cursor

refactor: default decorations to client

fix: set window geometry after receiving configure

fix: size limits with no max bound must be cut off

fix: send size update when autosized surface resizes

fix: use ceil size for positioner

cleanup: remove dbg statement

fix: remove a destroyed surface from compositor surfaces

fix errors after rebase and wip scaling support

fix: handling of scale factor in set_logical_size

fix (sctk_drag example): add .into for border radius

fix: fractional scaling

sctk: Fire RedrawRequests

wip: animations via frame event

fix / refactor iced-sctk redraw & frame event handling

cleanup: note about frame request in iced-sctk

fix: send resize when necessary for layer surface and popups too

fix: always request redraw for a new surface

fix: scaling and autosize surface improvements

refactor: sctk_lazy keyboard interactivity

feat(sctk): configurable natural_scroll property

feat: send state and capabilities events when there are changes

fix: redraw when an update is needed and clean up the logic

Update sctk to latest commit

Fix compilation of sctk drag example

fix(sctk): update interface before checking if it has a redraw request

refactor: after autosize surface resize wait to redraw until the resize has been applied

refactor: better handling of autosize surfaces

chore: update sctk

chore: update sctk

fixes sctk_drag example

fix: default to ControlFlow::Wait for applications with no surface

this seems to help CPU usage for app library and launcher

default to 250ms timeout in the event loop

Update sctk

sctk: Implement xdg-activation support

fix: don't require Flags to be clone for settings on wayland

chore: error if neither winit or wayland feature is set

chore: Allow compiling without windowing system (#65)

fix(iced-sctk): handle exit_on_close_request

fix: make sure that each widget operation operates on every interface

This should be ok even for widget actions like focus next because there can only ever be a single focused widget

cargo fmt

cleanup: dbg statement

fix(iced-sctk): replace panic with handling for remaining enum variants

refactor: use iced clipboard for interacting with the selection

refactor: allow passing an activation token when creating a window

sctk: Add support for `ext-session-lock` protocol

fix(sctk): build and use tree for layout of autosize surfaces

Update winit to latest commit used by upstream iced

fix(sctk): send key characters

fix(sctk): check if key is a named key first

refactor(sctk): keep compositor surface in state

feat: accessibility with some widget impls

feat: stable ids

a11y: Don't unconditionally pull winit (#43)

Update conversion.rs

integration fixes

integration

integration

integration

integration

s

integration

some integration work

more integration

Update Cargo.toml

Update mod.rs

Update multi_window.rs

s

more integration

more integration (ryanabx wip #100000)

more integration!!

integration 2

integration

more integration (rbx)

s

integration

integration work

integration

Update Cargo.toml

integration

simple integration things

int

integration to 175

integration(170)

Co-Authored-By: Ashley Wulber <48420062+wash2@users.noreply.github.com>
Co-Authored-By: Victoria Brekenfeld <4404502+Drakulix@users.noreply.github.com>
Co-Authored-By: Eduardo Flores <edfloreshz@gmail.com>
Co-Authored-By: Michael Murphy <michael@mmurphy.dev>
Co-Authored-By: wiiznokes <78230769+wiiznokes@users.noreply.github.com>
Co-Authored-By: Jeremy Soller <jeremy@system76.com>
Co-Authored-By: Ryan Brue <56272643+ryanabx@users.noreply.github.com>

fix(column): handle keys len change

fix: iced-sctk a11y

wip: winit single window updates

tokio feature hangs even without a11y feature

fix: multiwindow a11y fixes

fix: component

update winit

wip: sctk integration to winit shell

refactor: remove accesskit_unix

fix: svg

fix: remove wayland default feature

feat: derive Hash for image Handle

fix: cleanup 0.13 rebase errors

fix: remove path dependencies

conversion for Radius

conversion for Padding

setter for Svg border radius

re-export Limits

fix: connect clipboard if disconnected on layer surface or popup creation

fix: connect clipboard if disconnected on session lock surface creation

fix: update size of layer surface after configure

fix: insert user interfaces for popup and lock surfaces on creation

fix: svg scaling

feat: popups on winit windows

fix: default text shaping to advanced

fix: fallback to renderer icon style if svg is symbolic

fixes

fix: sctk frame handling

feat: autosize handling

fix: better autosize handling

fix: avoid duplicate window events from sctk

fix: better handling of popups

fix: refactor redraw handling for sctk

fix: include id in frames

fix: image

fix: scrollable delta direction

sctk: unregister clipboard when surface is done

set min / max size when size is requested

fix: popups

filter pointer events

feat: add Hide variant to mouse Interaction

dnd fixes

fix: use physical width for DnD surface

fix: tiny-skia svg quality

refactor: peek_dnd try to parse data

cleanup text conversion

cleanup

svg scaling fixes

background color fix

Introduce consecutive_click_distance like other toolkits do such as gtk,qt,imgui.
2026-01-21 13:12:08 -05:00

85 KiB

Changelog

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.

Unreleased

0.14.0 - 2025-12-07

Added

  • Reactive rendering. #2662
  • Time travel debugging. #2910
  • Animation API for application code. #2757
  • Headless mode testing. #2698
  • First-class end-to-end testing. #3059
  • Input method support. #2777
  • Hot reloading. #3000
  • Concurrent image decoding and uploading (and more cool stuff). #3092
  • comet debugger and devtools foundations. #2879
  • Presentation metrics for comet. #2881
  • Custom performance metrics for comet. #2891
  • Smart scrollbars. #2922
  • System theme reactions. #3051
  • table widget. #3018
  • grid widget. #2885
  • sensor widget. #2751
  • float widget and other cool stuff. #2916
  • pin widget. #2673
  • wrap method for column widget. #2884
  • auto_scroll support for scrollable widget. #2973
  • delay support for tooltip widget. #2960
  • Auto strategy to text::Shaping. #3048
  • Incremental markdown parsing. #2776
  • Customizable markdown rendering and image support. #2786
  • Quote support for markdown widget. #3005
  • Tasklist support for markdown widget. #3022
  • crisp feature for default quad snapping. #2969
  • Basic layer merging for graphics::layer::Stack. #3033
  • Headless mode for iced_wgpu and concurrency foundations. #2857
  • Primitive culling in column and row widgets. #2611
  • Lazy Compositor initialization in winit shell. #2722
  • Support for Justified text alignment. #2836
  • Support for double click event to mouse_area. #2602
  • Default implementation for iced_wgpu::geometry::Cache. #2619
  • physical_key field to KeyReleased event. #2608
  • total_size method for qr_code widget. #2606
  • PartialEq implementations for widget styles. #2637
  • Send marker to iced_wgpu::Renderer by using Arc in caches. #2692
  • Disabled Status for scrollbar widget. #2585
  • warning color to theme::Palette. #2607
  • maximized and fullscreen fields to window::Settings. #2627
  • window tasks for controlling sizes and resize increments. #2633
  • window task for drag resizing. #2642
  • Helper functions for alignment to widget module. #2746
  • time::repeat subscription. #2747
  • Vertical support for progress_bar. #2748
  • scale support for image widget. #2755
  • LineEnding support for text_editor. #2759
  • Mul<Transformation> implementation for mouse::Cursor and mouse::Click. #2758
  • animation module support for Wasm target. #2764
  • Flake for a dev shell in DEPENDENCIES. #2769
  • unfocus widget operation. #2804
  • sipper support and some QoL. #2805
  • Variable text size for preedit IME window. #2790
  • is_focused widget operation. #2812
  • Notification of window pre-presentation to windowing system. #2849
  • Customizable vertical spacing for wrapped rows. #2852
  • Indent and unindent actions for text_editor. #2901
  • Floating Images. #2903
  • min_size method to PaneGrid. #2911
  • Generic key for sensor widget. #2944
  • Debug implementation for Task. #2955
  • draw_with_bounds method to canvas::Cache. #3035
  • Synchronous Task Execution and RedrawRequested Consistency. #3084
  • id method to text_editor. #2653
  • horizontal and vertical methods to Padding. #2655
  • is_focused selector and find / find_all operations. #2664
  • push and into_options methods to combo_box::State. #2684
  • Hidden variant to mouse::Interaction. #2685
  • menu_height method to pick_list and combo_box widgets. #2699
  • text_color to toggler::Style. #2707
  • text_shaping method to combo_box widget. #2714
  • transparent field for window::Settings. #2728
  • closeable and minimizable fields to window::Settings. #2735
  • window::monitor_size task. #2754
  • Division operation for Size and Vector. #2767
  • hidden method to scrollable widget. #2775
  • Support for macOS-specific key shortcuts with Control modifier. #2801
  • Additional variants to mouse::Interaction. #2815
  • vsync field to window::Settings. #2837
  • wgpu-bare feature flag to disable default wgpu features. #2828
  • ratio method for Size. #2861
  • Support for ⌘ + Backspace and ⌘ + Delete macOS shortcuts. #2862
  • Expandable selection-by-word after double click in text editors. #2865
  • x11 and wayland feature flags. #2869
  • label method for checkbox widget. #2873
  • shader::Pipeline trait for easier wgpu resource management. #2876
  • select_range widget operation. #2890
  • grid! macro helper. #2904
  • warning style for container widget. #2912
  • Current toggle state to toggler::Status::Disabled. #2908
  • Cursor size awareness for input methods. #2918
  • allow_automatic_tabbing task to runtime::window. #2933
  • FromStr and Display implementations for Color. #2937
  • text::Renderer trait in iced_graphics with fill_raw method. #2958
  • font_maybe helper for text widget. #2988
  • filter_map method to Subscription. #2981
  • repeat field to keyboard::Event::KeyPressed. #2991
  • Additional settings to control the fonts used for markdown rendering. #2999
  • Rescaled variant to window::Event. #3001
  • Environment variable to define beacon server listen address. #3003
  • push_under method to stack widget. #3010
  • NONE constant to keyboard::Modifiers. #3037
  • shadow field to overlay::menu::Style. #3049
  • draw_mesh_cache method in mesh::Renderer trait. #3070
  • Efficient is_empty method for text_editor::Content. #3117
  • *Assign implementations for Point and Vector. #3131
  • Support Background instead of Color styling for scrollable. #3127
  • CornerPreference window setting for Windows. #3128
  • move_to method for Editor API. #3125
  • Background and padding_ratio support for toggler styling. #3129
  • More syntaxes for iced_highlighter. #2822
  • Implement Sub<Vector> for Cursor. #3137

Changed

  • Replace Rc with Arc for markdown caching. #2599
  • Improved button::Catalog and Style documentation. #2590
  • Improved clock example to display ticks and numbers. #2644
  • Derived PartialEq and Eq for mouse::click::Kind. #2741
  • Marked Color::from_rgb8 and Color::from_rgba8 as const. #2749
  • Replaced unmaintained directories-next crate with directories. #2761
  • Changed Widget::update to take Event by reference. #2781
  • Improved gallery example with blurhash previews. #2796
  • Replaced wasm-timer with wasmtimer. #2780
  • Tweaked Palette Generation. #2811
  • Relaxed Task::perform bound from Fn to FnOnce. #2827
  • Improved quad shader to use a single SDF in iced_wgpu. #2967
  • Leveraged Limits::min directly in scrollable::layout. #3004
  • Overhauled theme::Palette generation by leveraging Oklch. #3028
  • Mutable Widget Methods. #3038
  • Prioritized Shrink over Fill in layout logic. #3045
  • Replaced format! with concat! for string literals. #2695
  • Replaced window::run_with_handle with a more powerful window::run. #2718
  • Made color helpers in palette module public. #2771
  • Changed default PowerPreference to HighPerformance in iced_wgpu. #2813
  • Made button::DEFAULT_PADDING public. #2858
  • Replaced Url parsing in markdown widget with String URIs. #2992
  • Improved alignment docs of container. #2871
  • Made input_method module public. #2897
  • iced logo to built-in icons font. #2902
  • Made Layout::children return an ExactSizeIterator. #2915
  • Enabled fancy-regex instead of onig for syntect. #2932
  • Added warning status to toast example. #2936
  • Improved scroll_to and snap_to to allow operating on a single axis. #2994
  • Disabled png-format feature from iced_tiny_skia. #3043
  • Unified keyboard subscriptions into a single listen subscription. #3135
  • Updated to Rust 2024. #2809
  • Updated wgpu to 22.0. #2510
  • Updated wgpu to 23.0. #2663
  • Updated wgpu to 24.0. #2832
  • Updated wgpu to 26.0. #3019
  • Updated wgpu to 27.0. #3097
  • Updated image to 0.25. #2716
  • Updated cosmic-text to 0.13. #2834
  • Updated cosmic-text to 0.14. #2880
  • Updated cosmic-text to 0.15. #3098
  • Updated resvg to 0.45. #2846
  • Updated wasmtimer to 0.4.2. #3012
  • Updated dark-light to 2.0. #2724
  • Updated openssl to 0.10.70. #2783
  • Updated our winit fork with 0.30.8 fixes. #2737

Fixed

  • Slow wgpu documentation. #2593
  • Documentation for open_events. #2594
  • Layout for wrapped row with spacing. #2596
  • Flex layout of Fill elements in a Shrink cross axis. #2598
  • Incorrect triangle mesh counting in wgpu. #2601
  • Dropped images and meshes when pasting Frame. #2605
  • loading_spinners example skipping part of the animation cycle. #2617
  • Window File* events not marked as unsupported for Wayland. #2615
  • Coupling of markdown::view iterator lifetime with resulting Element. #2623
  • Delete key not working in text_editor widget. #2632
  • Consecutive clicks triggering independently of distance. #2639
  • pane_grid losing continuity when adding or removing panes. #2628
  • Synthetic keyboard events not being discarded. #2649
  • sort_by without total ordering in tiny-skia damage tracking. #2651
  • Outdated docs of Scrollable::with_direction and direction. #2668
  • button calling its on_press handler unnecessarily. #2683
  • system_information example getting stuck at boot. #2681
  • tooltip widget not redrawing when hovered. #2675
  • pane_grid::DragEvent::Canceled not emitted within deadband. #2691
  • Inconsistent positions in window-related operations. #2688
  • text::Wrapping not being applied to Paragraph. #2723
  • Broken nested markdown lists without empty line. #2641
  • Unnecessary cast in the_matrix example. #2731
  • Incorrect layer counting in iced_wgpu. #2701
  • Image not respecting viewport bounds. #2752
  • Attempting to draw empty meshes in iced_wgpu. #2782
  • Input placeholder text not clearing when IME is activated. #2785
  • Missing redraw request in image::Viewer. #2795
  • Wrong position of preedit text on scrolled content. #2798
  • Wrong initial candidate position for IME. #2793
  • Text spans in IME preedit not being properly cached. #2806
  • cpu_brand in system_information always being empty. #2797
  • Horizontal text alignment being ignored on multi-line text. #2835
  • Missing redraw request in mouse_area when hovered. #2845
  • futures-executor being pulled even when it's not the default executor. #2841
  • WebGPU failing to boot in Chromium. #2686
  • Crash when using WebGL due to wrong binding alignment. #2883
  • Wrong calculation of rows in grid widget when evenly distributed. #2896
  • Panic in combo_box due to cleared children during diff. #2905
  • OpenGL backend in wgpu interpreting atlas texture as cube map instead of texture array. #2919
  • quad shader blending without pre-multiplication. #2925
  • Inconsistent primitive pixel snapping in iced_wgpu. #2962
  • Inconsistent Rectangle::is_within implementation. #2966
  • Text damage calculation in iced_tiny_skia. #2964
  • Leftover title mention in documentation. #2972
  • Text bounds cutoff in iced_wgpu. #2975
  • Rectangle vertices not being snapped to the pixel grid independently. #2768
  • Lints for Rust 1.89. #3030
  • debug builds on macOS Tahoe. #3056
  • Typo in documentation comment for filter_map. #3052
  • container::Style not respecting crisp feature. #3112
  • Incorrect padding in text_editor. #3115
  • Outdated documentation of Widget::mouse_interaction. #2696
  • Incorrect render pass viewport in custom_shader example. #2738
  • Capturing ButtonReleased event inside image::Viewer. #2744
  • Incomplete docs for on_link_click in rich_text. #2803
  • Stale syntax highlighting on text_editor after theme changes. #2818
  • Wrong background color for window::Preedit on translucent themes. #2819
  • Panic on Chromium-like browsers when canvas initial size is (0, 0). #2829
  • Outdated dev shell templates. #2840
  • Missing derive feature for serde dependency. #2854
  • bezier_tool listed as an example in the Widget trait docs. #2867
  • Incomplete doc comment of Length::is_fill. #2892
  • scrollable touch scrolling when out of bounds. #2906
  • Element::explain being hidden by multi-layer widgets. #2913
  • Missing Shell::request_redraw on component. #2930
  • Text clipping in iced_tiny_skia. #2929
  • Inconsistent naming of tree parameter in Widget trait. #2950
  • text_editor syntax highlighting not updating on paste. #2947
  • svg scaling in iced_tiny_skia. #2954
  • Stroke bounds calculation and clip transformations in iced_tiny_skia. #2882
  • Artifacts when drawing small arcs in canvas widget. #2959
  • Path not being closed in Path::circle. #2979
  • Incorrect transformation of cached primitives in iced_tiny_skia. #2977
  • Panic when drawing empty image in iced_tiny_skia. #2986
  • Incorrect mapping of navigation keys on higher keyboard layers. #3007
  • Status of svg widget not being updated on cursor movement. #3009
  • hover widget ignoring events in certain conditions. #3015
  • OpenGL backend in iced_wgpu choosing wrong texture format in wgpu::image::atlas. #3016
  • Missing redraw request in geometry example. #3020
  • Buffer presentation logic in iced_tiny_skia. #3032
  • combo_box text not getting cleared on selection. #3063
  • wgpu surface not being reconfigured on SurfaceError::Lost or Outdated. #3067
  • Incorrect cursor for slider widget on Windows . #3068
  • Paragraph::hit_span returning false positives at end of content. #3072
  • Incorrect Limits::loose documentation. #3116
  • Missing semicolon triggering a clippy lint. #3118
  • iced_tiny_skia using a Window instead of a Display handle for softbuffer::Context creation. #3090
  • Missing fn operate in tooltip widget. #3132
  • Panic when rendering problematic svg. #3123
  • Hotkey combinations not working on non-latin keyboard layouts. #3134
  • keyboard::listen reporting captured key events. #3136

Removed

  • is_over method in Overlay trait. #2921
  • Short-hand notation support for color! macro. #2592
  • surface argument of Compositor::screenshot. #2672
  • once_cell dependency. #2626
  • winapi dependency. #2760
  • palette dependency. #2839

Many thanks to...

  • @edwloef
  • @rhysd
  • @DKolter
  • @pml68
  • @andymandias
  • @dtzxporter
  • @tarkah
  • @tvolk131
  • @alex-ds13
  • @B0ney
  • @bbb651
  • @JL710
  • @kenz-gelsoft
  • @mfreeborn
  • @mtkennerly
  • @watsaig
  • @13r0ck
  • @airstrike
  • @bungoboingo
  • @EmmanuelDodoo
  • @karolisr
  • @Remmirad
  • @semiversus
  • @Ultrasquid9
  • @xosxos
  • @Zarthus
  • @7h0ma5
  • @7sDream
  • @Adam-Ladd
  • @AMS21
  • @Atreyagaurav
  • @AustinEvansWX
  • @Azorlogh
  • @berserkware
  • @biglizards
  • @boondocklabs
  • @bradysimon
  • @camspiers
  • @chrismanning
  • @codewing
  • @csmoe
  • @davehorner
  • @DavidAguilo
  • @dcz-self
  • @dejang
  • @dependabot[bot]
  • @EleDiaz
  • @ellieplayswow
  • @Exidex
  • @Fili-pk
  • @flakes
  • @Gobbel2000
  • @GyulyVGC
  • @hammerlink
  • @hydra
  • @ibaryshnikov
  • @ids1024
  • @iMohmmedSA
  • @Integral-Tech
  • @inthehack
  • @jakobhellermann
  • @janTatesa
  • @jbirnick
  • @jcdickinson
  • @Jinderamarak
  • @jsatka
  • @kbjr
  • @kgday
  • @kiedtl
  • @Konsl
  • @Koranir
  • @kosayoda
  • @Krahos
  • @l-const
  • @l4l
  • @laycookie
  • @leo030303
  • @Leonie-Theobald
  • @libkurisu
  • @lmaxyz
  • @mariinkys
  • @max-privatevoid
  • @MichelleGranat
  • @misaka10987
  • @mytdragon
  • @njust
  • @nrjais
  • @nz366
  • @OpenSauce
  • @Ottatop
  • @Redhawk18
  • @rhogenson
  • @rizzen-yazston
  • @rotmh
  • @Rudxain
  • @ryco117
  • @Seppel3210
  • @sgued
  • @sopvop
  • @T-256
  • @tafia
  • @thorn132
  • @tigerros
  • @tsuza
  • @vincenthz
  • @will-lynas

0.13.1 - 2024-09-19

Added

  • Some From trait implementations for text_input::Id. #2582
  • Custom Executor support for Application and Daemon. #2580
  • rust-version metadata to Cargo.toml. #2579
  • Widget examples to API reference. #2587

Fixed

  • Inverted scrolling direction with trackpad in scrollable. #2583
  • scrollable transactions when on_scroll is not set. #2584
  • Incorrect text color styling in text_editor widget. #2586

Many thanks to...

  • @dcampbell24
  • @lufte
  • @mtkennerly

0.13.0 - 2024-09-18

Added

  • Introductory chapters to the official guide book.
  • Pocket guide in API reference.
  • Program API. #2331
  • Task API. #2463
  • Daemon API and Shell Runtime Unification. #2469
  • rich_text and markdown widgets. #2508
  • stack widget. #2405
  • hover widget. #2408
  • row::Wrapping widget. #2539
  • text macro helper. #2338
  • text::Wrapping support. #2279
  • Functional widget styling. #2312
  • Closure-based widget styling. #2326
  • Class-based Theming. #2350
  • Type-Driven Renderer Fallback. #2351
  • Background styling to rich_text widget. #2516
  • Underline support for rich_text. #2526
  • Strikethrough support for rich_text. #2528
  • Abortable Task. #2496
  • abort_on_drop to task::Handle. #2503
  • Ferra theme. #2329
  • auto-detect-theme feature. #2343
  • Custom key binding support for text_editor. #2522
  • align_x for text_input widget. #2535
  • center widget helper. #2423
  • Rotation support for image and svg widgets. #2334
  • Dynamic opacity support for image and svg. #2424
  • Scroll transactions for scrollable widget. #2401
  • physical_key and modified_key to keyboard::Event. #2576
  • fetch_position command in window module. #2280
  • filter_method property for image::Viewer widget. #2324
  • Support for pre-multiplied alpha wgpu composite mode. #2341
  • text_size and line_height properties for text_editor widget. #2358
  • is_focused method for text_editor::State. #2386
  • canvas::Cache Grouping. #2415
  • ICED_PRESENT_MODE env var to pick a wgpu::PresentMode. #2428
  • SpecificWith variant to window::Position. #2435
  • scale_factor field to window::Screenshot. #2449
  • Styling support for overlay::Menu of pick_list widget. #2457
  • window::Id in Event subscriptions. #2456
  • FromIterator implementation for row and column. #2460
  • content_fit for image::viewer widget. #2330
  • Display implementation for Radians. #2446
  • Helper methods for window::Settings in Application. #2470
  • Copy implementation for canvas::Fill and canvas::Stroke. #2475
  • Clarification of Border alignment for Quad. #2485
  • "Select All" functionality on Ctrl+A to text_editor. #2321
  • stream::try_channel helper. #2497
  • iced widget helper to display the iced logo ☄️. #2498
  • align_x and align_y helpers to scrollable. #2499
  • Built-in text styles for each Palette color. #2500
  • Embedded Scrollbar support for scrollable. #2269
  • on_press_with method for button. #2502
  • resize_events subscription to window module. #2505
  • Link support to rich_text widget. #2512
  • image and svg support for canvas widget. #2537
  • Compact variant for pane_grid::Controls. #2555
  • image-without-codecs feature flag. #2244
  • container::background styling helper. #2261
  • undecorated_shadow window setting for Windows. #2285
  • Tasks for setting mouse passthrough. #2284
  • *_maybe helpers for text_input widget. #2390
  • Wasm support for download_progress example. #2419
  • scrollable::scroll_by widget operation. #2436
  • Enhancements to slider widget styling. #2444
  • on_scroll handler to mouse_area widget. #2450
  • stroke_rectangle method to canvas::Frame. #2473
  • override_redirect setting for X11 windows. #2476
  • Disabled state support for toggler widget. #2478
  • Color::parse helper for parsing color strings. #2486
  • rounded_rectangle method to canvas::Path. #2491
  • width method to text_editor widget. #2513
  • on_open handler to combo_box widget. #2534
  • Additional mouse::Interaction cursors. #2551
  • Scroll wheel handling in slider widget. #2565

Changed

  • Use a StagingBelt in iced_wgpu for regular buffer uploads. #2357
  • Use generic Content in Text to avoid reallocation in fill_text. #2360
  • Use Iterator::size_hint to initialize Column and Row capacity. #2362
  • Specialize widget::text helper. #2363
  • Use built-in [lints] table in Cargo.toml. #2377
  • Target #iced container by default on Wasm. #2342
  • Improved architecture for iced_wgpu and iced_tiny_skia. #2382
  • Make image Cache eviction strategy less aggressive in iced_wgpu. #2403
  • Retain caches in iced_wgpu as long as Rc values are alive. #2409
  • Use bytes crate for image widget. #2356
  • Update winit to 0.30. #2427
  • Reuse glyphon::Pipeline state in iced_wgpu. #2430
  • Ask for explicit Length in center_* methods. #2441
  • Hide internal Task constructors. #2492
  • Hide Subscription internals. #2493
  • Improved view ergonomics. #2504
  • Update cosmic-text and resvg. #2416
  • Snap Quad lines to the pixel grid in iced_wgpu. #2531
  • Update web-sys to 0.3.69. #2507
  • Allow disabled TextInput to still be interacted with. #2262
  • Enable horizontal scrolling without shift modifier for srollable widget. #2392
  • Add mouse::Button to mouse::Click. #2414
  • Notify scrollable::Viewport changes. #2438
  • Improved documentation of Component state management. #2556

Fixed

  • Fix block_on in iced_wgpu hanging Wasm builds. #2313
  • Private PaneGrid style fields. #2316
  • Some documentation typos. #2317
  • Blurry input caret with non-integral scaling. #2320
  • Scrollbar stuck in a scrollable under some circumstances. #2322
  • Broken wgpu examples link in issue template. #2327
  • Empty wgpu draw calls in image pipeline. #2344
  • Layout invalidation for Responsive widget. #2345
  • Incorrect shadows on quads with rounded corners. #2354
  • Empty menu overlay on combo_box. #2364
  • Copy / cut vulnerability in a secure TextInput. #2366
  • Inadequate readability / contrast for built-in themes. #2376
  • Fix pkg-config typo in DEPENDENCIES.md. #2379
  • Unbounded memory consumption by iced_winit::Proxy. #2389
  • Typo in icon::Error message. #2393
  • Nested scrollables capturing all scroll events. #2397
  • Content capturing scrollbar events in a scrollable. #2406
  • Out of bounds caret and overflow when scrolling in text_editor. #2407
  • Missing derive(Default) in overview code snippet. #2412
  • image::Viewer triggering grab from outside the widget. #2420
  • Different windows fighting over shared image::Cache. #2425
  • Images not aligned to the (logical) pixel grid in iced_wgpu. #2440
  • Incorrect local time in clock example under Unix systems. #2421
  • ⌘ + ← and ⌘ + → behavior for text_input on macOS. #2315
  • Wayland packages in DEPENDENCIES.md. #2465
  • Typo in documentation. #2487
  • Extraneous comment in scrollable module. #2488
  • Top layer in hover widget hiding when focused. #2544
  • Out of bounds text in text_editor widget. #2536
  • Segfault on Wayland when closing the app. #2547
  • lazy feature flag sometimes not present in documentation. #2289
  • Border of progress_bar widget being rendered below the active bar. #2443
  • radii typo in iced_wgpu shader. #2484
  • Incorrect priority of Binding::Delete in text_editor. #2514
  • Division by zero in multitouch example. #2517
  • Invisible text in svg widget. #2560
  • wasm32 deployments not displaying anything. #2574
  • Unnecessary COM initialization on Windows. #2578

Removed

  • Unnecessary struct from download_progress example. #2380
  • Out of date comment from custom_widget example. #2549
  • Clone bound for graphics::Cache::clear. #2575

Many thanks to...

  • @Aaron-McGuire
  • @airstrike
  • @alex-ds13
  • @alliby
  • @Andrew-Schwartz
  • @ayeniswe
  • @B0ney
  • @Bajix
  • @blazra
  • @Brady-Simon
  • @breynard0
  • @bungoboingo
  • @casperstorm
  • @Davidster
  • @derezzedex
  • @DKolter
  • @dtoniolo
  • @dtzxporter
  • @fenhl
  • @Gigas002
  • @gintsgints
  • @henrispriet
  • @IsaacMarovitz
  • @ivanceras
  • @Jinderamarak
  • @JL710
  • @jquesada2016
  • @JustSoup312
  • @kiedtl
  • @kmoon2437
  • @Koranir
  • @lufte
  • @LuisLiraC
  • @m4rch3n1ng
  • @meithecatte
  • @mtkennerly
  • @myuujiku
  • @n1ght-hunter
  • @nrjais
  • @PgBiel
  • @PolyMeilex
  • @rustrover
  • @ryankopf
  • @saihaze
  • @shartrec
  • @skygrango
  • @SolidStateDj
  • @sundaram123krishnan
  • @tarkah
  • @vladh
  • @WailAbou
  • @wiiznokes
  • @woelfman
  • @Zaubentrucker
  • @ryanabx
  • @edfloreshz

0.12.1 - 2024-02-22

Added

  • extend and from_vec methods for Column and Row. #2264
  • PartialOrd, Ord, and Hash implementations for keyboard::Modifiers. #2270
  • clipboard module in advanced module. #2272
  • Default disabled style for checkbox and hovered style for Svg. #2273
  • From<u16> and From<i32> implementations for border::Radius. #2274
  • size_hint method for Component trait. #2275

Fixed

  • Black images when using OpenGL backend in iced_wgpu. #2259
  • Documentation for horizontal_space and vertical_space helpers. #2265
  • WebAssembly platform. #2271
  • Decouple Key from keyboard::Modifiers and apply them to text in KeyboardInput. #2238
  • Text insertion not being prioritized in TextInput and TextEditor. #2278
  • iced_tiny_skia clipping line strokes. #2282

Many thanks to...

  • @PolyMeilex
  • @rizzen-yazston
  • @wash2

0.12.0 - 2024-02-15

Added

  • Multi-window support. #1964
  • TextEditor widget (or multi-line text input). #2123
  • Shader widget. #2085
  • Shadows. #1882
  • Vectorial text for Canvas. #2204
  • Layout consistency. #2192
  • Explicit text caching. #2058
  • Gradients in Oklab color space. #2055
  • Themer widget. #2209
  • Transform primitive. #2120
  • Cut functionality for TextEditor. #2215
  • Primary clipboard support. #2240
  • Disabled state for Checkbox. #2109
  • skip_taskbar window setting for Windows. #2211
  • fetch_maximized and fetch_minimized commands in window. #2189
  • run_with_handle command in window. #2200
  • show_system_menu command in window. #2243
  • text_shaping method for Tooltip. #2172
  • interaction method for MouseArea. #2207
  • hovered styling for Svg widget. #2163
  • height method for TextEditor. #2221
  • Customizable style for TextEditor. #2159
  • Customizable style for QRCode. #2229
  • Border width styling for Toggler. #2219
  • RawText variant for Primitive in iced_graphics. #2158
  • Stream support for Command. #2150
  • Access to bounds/content bounds from a Scrollable viewport. #2072
  • Frame::scale_nonuniform method. #2070
  • theme::Custom::with_fn to generate completely custom themes. #2067
  • style attribute for Font. #2041
  • Texture filtering options for Image. #1894
  • default and shift_step methods for slider widgets. #2100
  • Custom variant to command::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> for svg::Handle. #2235
  • on_open and on_close handlers for PickList. #2174
  • Support for generic Element in Tooltip. #2228
  • Container and gap styling for Scrollable. #2239
  • Use Borrow for both options and selected in PickList. #2251
  • clip property for Container, Column, Row, and Button. #2252

Changed

  • Enable WebGPU backend in wgpu by default instead of WebGL. #2068
  • Update glyphon to 0.4. #2203
  • Require Send on stored pipelines. #2197
  • Update wgpu to 0.19, glyphon to 0.5, softbuffer to 0.4, window-clipboard to 0.4, and raw-window-handle to 0.6. #2191
  • Update winit to 0.29. #2169
  • Provide actual bounds to Shader primitives. #2149
  • Deny warnings in test workflow. #2135
  • Update wgpu to 0.18 and cosmic-text to 0.10. #2122
  • Compute vertex positions in the shader. #2099
  • Migrate twox-hash -> xxhash-rust and switch to Xxh3 for better performance. #2080
  • Add keyboard subscriptions and rename subscription::events to event::listen. #2073
  • Use workspace dependencies and package inheritance. #2069
  • Update wgpu to 0.17. #2065
  • Support automatic style type casting for Button. #2046
  • Make with_clip and with_save in Frame able to return the data of the provided closure. #1994
  • Use Radians for angle fields in Arc and arc::Elliptical. #2027
  • Assert dimensions of quads are normal in iced_tiny_skia. #2082
  • Remove position from overlay::Element. #2226
  • Add a capacity limit to the GlyphCache in iced_tiny_skia. #2210
  • Use pointer equality to speed up PartialEq implementation of image::Bytes. #2220
  • Update bitflags, glam, kurbo, ouroboros, qrcode, and sysinfo dependencies. #2227
  • Improve some widget ergonomics. #2253

Fixed

  • Clipping of TextInput selection. #2199
  • Paragraph::grapheme_position when ligatures are present. #2196
  • Docs to include missing feature tags. #2184
  • PaneGrid click interaction on the top edge. #2168
  • iced_wgpu not rendering text in SVGs. #2161
  • Text clipping. #2154
  • Text transparency in iced_tiny_skia. #2250
  • Layout invalidation when Tooltip changes overlay. #2143
  • Overlay composition. #2142
  • Incorrect GIF for the progress_bar example. #2141
  • Standalone compilation of iced_renderer crate. #2134
  • Maximize window button enabled when Settings::resizable is false. #2124
  • Width of horizontal scrollbar in Scrollable. #2084
  • ComboBox widget 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. #2071
  • Checkbox and Toggler hidden behind scrollbar in styling example. #2062
  • Absolute LineHeight sometimes being 0. #2059
  • Paste while holding ALT. #2006
  • Command<T>::perform to return a Command<T>. #2000
  • convert_text not called on Svg trees. #1908
  • Unused backend.rs file in renderer crate. #2182
  • Some clippy::pedantic lints. #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 Scrollable with touch events. #1940
  • Incorrect unit in system::Information. #2223
  • size_hint not being called from element::Map. #2224
  • size_hint not being called from element::Explain. #2225
  • Slow touch scrolling for TextEditor widget. #2140
  • Subscription::map using 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

Many thanks to...

  • @jackpot51
  • @wash2

0.10.0 - 2023-07-28

Added

  • Text shaping, font fallback, and iced_wgpu overhaul. #1697
  • Software renderer, runtime renderer fallback, and core consolidation. #1748
  • Incremental rendering for iced_tiny_skia. #1811
  • Configurable LineHeight support for text widgets. #1828
  • text::Shaping strategy 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
  • ComboBox widget. #1954
  • web-colors feature flag to enable "sRGB linear" blending. #1888
  • PaneGrid logic to split panes by drag & drop. #1856
  • PaneGrid logic to drag & drop panes to the edges. #1865
  • Type-safe Scrollable direction. #1878
  • Scrollable alignment. #1912
  • Helpers to change viewport alignment of a Scrollable. #1953
  • scroll_to widget operation. #1796
  • scroll_to helper. #1804
  • visible_bounds widget operation for Container. #1971
  • Command to fetch window size. #1927
  • Conversion support from Fn trait to custom theme. #1861
  • Configurable border radii on relevant widgets. #1869
  • border_radius styling to Slider rail. #1892
  • application_id in PlatformSpecific settings for Linux. #1963
  • Aliased entries in text::Cache. #1934
  • Text cache modes. #1938
  • operate method for program::State. #1913
  • Viewport argument to Widget::on_event. #1956
  • Nix instructions to DEPENDENCIES.md. #1859
  • Loading spinners example. #1902
  • Workflow that verifies CHANGELOG is always up-to-date. #1970
  • Outdated mentions of iced_native in README. #1979

Changed

  • Updated wgpu to 0.16. #1807
  • Updated glam to 0.24. #1840
  • Updated winit to 0.28. #1738
  • Updated palette to 0.7. #1875
  • Updated ouroboros to 0.17. #1925
  • Updated resvg to 0.35 and tiny-skia to 0.10. #1907
  • Changed mouse::Button::Other to take u16 instead of u8. #1797
  • Changed subscription::channel to take a FnOnce non-Sync closure. #1917
  • Removed Copy requirement for text StyleSheet::Style. #1814
  • Removed min_width of 1 from scrollbar & scroller for Scrollable. #1844
  • Used Widget::overlay for Tooltip. #1692

Fixed

  • Responsive layout not invalidated when shell layout is invalidated. #1799
  • Responsive layout not invalidated when size changes without a view call. #1890
  • Broken link in ROADMAP.md. #1815
  • bounds of selected option background in Menu. #1831
  • Border radius logic in iced_tiny_skia. #1842
  • Svg filtered 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 glyphon when glyphs are missing. #1883
  • Empty scissor rectangle in iced_wgpu::triangle pipeline. #1893
  • Scrollable scrolling when mouse not over it. #1910
  • translation in layout of Nested overlay. #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 Component overlays. #1949
  • Blinking input cursor when window loses focus. #1955
  • BorderRadius not exposed in root crate. #1972
  • Outdated ROADMAP. #1958

Patched

  • Keybinds to cycle ComboBox options. #1991
  • Tooltip overlay position inside Scrollable. #1978
  • iced_wgpu freezing on empty layers. #1996
  • image::Viewer reacting to any scroll event. #1998
  • TextInput pasting text when Alt key is pressed. #2006
  • Broken link to old iced_native crate in README. #2024
  • Rectangle::contains being non-exclusive. #2017
  • Documentation for Arc and arc::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

Added

  • MouseArea widget. #1594
  • channel helper in subscription. #1786
  • Configurable width for Scrollable. #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

Changed

  • wgpu has been updated to 0.15 in iced_wgpu. #1789
  • resvg has been updated to 0.29 in iced_graphics. #1733
  • subscription::run now takes a function pointer. #1723

Fixed

  • Redundant on_scroll messages for Scrollable. #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
  • clippy lints for Rust 1.68. #1755
  • Unnecessary Component rebuilds. #1754
  • Incorrect package name in checkbox example docs. #1750
  • Fullscreen only working on primary monitor. #1742
  • Padding::fit on irregular values for an axis. #1734
  • Debug implementation of Font displaying its bytes. #1731
  • Sliders bleeding over their rail. #1721

Removed

  • Fill variant for Alignment. #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

Added

  • Generic pixel units. #1711
  • custom method to widget::Operation trait. #1649
  • Group overlay. #1655
  • Standalone draw helper for image. #1682
  • Dynamic pick_list::Handle. #1675
  • Id support for Container. #1695
  • Custom Checkbox icon support. #1707
  • window action to change always on top setting. #1587
  • window action to fetch its unique identifier. #1589

Changed

  • Annotated Command and Subscription with #[must_use]. #1676
  • Replaced Fn with FnOnce in canvas::Cache::draw. #1694
  • Used [default] on enum in game_of_life example. #1660
  • Made QRCode hide when data is empty in qr_code example. #1665
  • Replaced Cow with Bytes in image to accept any kind of data that implements AsRef<[u8]>. #1551

Fixed

  • Blank window on application startup. #1698
  • Off-by-one pixel error on pick_list width. #1679
  • Missing text_input implementation in operation::Map. #1678
  • Widget-driven animations for Component. #1685
  • Layout translation in overlay::Group. #1686
  • Missing is_over implementation for overlays of iced_lazy widgets. #1699
  • Panic when overlay event processing removes overlay. #1700
  • Panic when using operations with components in certain cases. #1701
  • TextInput width when using padding. #1706
  • iced_glow crash on some hardware. #1703
  • Height of overlay::Menu. #1714
  • Size of images in README. #1659
  • New clippy lints. #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

Added

  • Widget-driven animations. #1647
  • Multidirectional scrolling support for Scrollable. #1550
  • VerticalSlider widget. #1596
  • Shift+Click text selection support in TextInput. #1622
  • Profiling support with the chrome-trace feature. #1565
  • Customization of the handle of a PickList. #1562
  • window action to request user attention. #1584
  • window action to gain focus. #1585
  • window action to toggle decorations. #1588
  • Copy implementation for gradient::Location. #1636

Changed

  • Replaced Application::should_exit with a window::close action. #1606
  • Made focusable::Count fields public. #1635
  • Added Dependency argument to the closure of Lazy. #1646
  • Switched arguments order of Toggler::new for consistency. #1616
  • Switched arguments order of Checkbox::new for consistency. #1633

Fixed

  • Compilation error in iced_glow when the image feature is enabled but svg isn't. #1593
  • Widget operations for Responsive widget. #1615
  • Overlay placement for Responsive. #1638
  • overlay implementation for Lazy. #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

Added

  • 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

Changed

  • Triangle geometry using a solid color is now drawn in a single draw call. #1538

Fixed

  • Gradients for WebAssembly target. #1524
  • Overlay layout cache not being invalidated. #1528
  • Operations not working for PaneGrid. #1533
  • Mapped widget::Operation always returning Outcome::None. #1536
  • Padding of TextInput with Length::Units width. #1539
  • Clipping of Image and Svg widgets in iced_glow. #1557
  • Invalid links in documentation. #1560
  • Custom style of PickList widget. #1570
  • Scroller in Scrollable always being drawn. #1574

Many thanks to...

  • @bungoboingo
  • @l1Dan
  • @mmstick
  • @mtkennerly
  • @PolyMeilex
  • @rksm
  • @rs017991
  • @tarkah
  • @wash2

0.5.0 - 2022-11-10

Added

  • 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 (like row! and column!).

  • First-class theming (#1362)
    A complete overhaul of our styling primitives, introducing a Theme as 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.

  • Lazy widget (#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)
    The Canvas widget can draw linear gradients now. Thanks to @bungoboingo!

  • Touch support for Canvas (#1305)
    The Canvas widget now supports touch events. Thanks to @artursapek!

  • Image and Svg support for iced_glow (#1485)
    Our OpenGL renderer now is capable of rendering both the Image and Svg widgets. Thanks to @ids1024!

0.4.2 - 2022-05-03

Fixed

  • Padding type not exposed in iced.

0.4.1 - 2022-05-02

Fixed

  • Version number in README.

0.4.0 - 2022-05-02

Added

  • Stateless widgets (#1284)
    A brand new widget API that removes the need to keep track of internal widget state. No more button::State in your application!

  • Component trait (#1131)
    A new trait to implement custom widgets with internal mutable state while using composition and The Elm Architecture.

  • Responsive widget (#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 HTML canvas when targeting Wasm by leveraging the WebGL support in wgpu. 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 for aarch64 and armv7 to easily cross-compile iced applications and target Raspberry Pis. Thanks to @derezzedex!

  • Simpler Renderer APIs (#1110)
    The surface of the Renderer APIs of the library has been considerably reduced. Instead of a Renderer trait per widget, now there are only 3 traits that are reused by all the widgets.

0.3.0 - 2021-03-31

Added

  • Touch support. #57 #650 (thanks to @simlay and @discordance!)
  • Clipboard write access for
    • TextInput widget. #770
    • Application::update. #773
  • image::Viewer widget. It allows panning and scaling of an image. #319 (thanks to @tarkah!)
  • Tooltip widget. It annotates content with some text on mouse hover. #465 (thanks to @yusdacra!)
  • Support for the smol async runtime. #699 (thanks to @JayceFayne!)
  • Support for graceful exiting when using the Application trait. #804
  • Image format features in iced_wgpu to reduce code bloat. #392 (thanks to @unrelentingtech!)
  • Focused and Unfocused variant to window::Event. #701 (thanks to @cossonleo!)
  • WGPU_BACKEND environment variable to configure the internal graphics backend of iced_wgpu. #789 (thanks to @Cupnfish!)

Changed

  • The TitleBar of a PaneGrid now supports generic elements. #657 (thanks to @clarkmoody!)
  • The Error type now implements Send and Sync. #719 (thanks to @taiki-e!)
  • The Style types in iced_style now implement Clone and Copy. #720 (thanks to @taiki-e!)
  • The following dependencies have been updated:
  • The following examples were improved:
    • download_progress now showcases multiple file downloads at once. #283 (thanks to @Folyd!)
    • solar_system uses the new rand API. #760 (thanks to @TriedAngle!)

Fixed

  • Button events not being propagated to contents. #668
  • Incorrect overlay implementation for the Button widget. #764
  • Viewport::physical_width returning the wrong value. #700
  • Outdated documentation for the Sandbox trait. #710

0.2.0 - 2020-11-26

Added

0.1.1 - 2020-04-15

Added

  • Settings::with_flags to easily initialize some default settings with flags. #266
  • Default implementation for canvas::layer::Cache. #267
  • Ctrl + Del support for TextInput. #268
  • Helper methods in canvas::Path to easily draw lines, rectangles, and circles. #293
  • From<Color> implementation for canvas::Fill. #293
  • From<String> implementation for canvas::Text. #293
  • From<&str> implementation for canvas::Text. #293

Changed

  • new method of Radio and Checkbox now take a generic Into<String> for the label. #260
  • Frame::fill now takes a generic Into<canvas::Fill>. #293
  • Frame::stroke now takes a generic Into<canvas::Stroke>. #293
  • Frame::fill_text now takes a generic Into<canvas::Text>. #293

Fixed

  • 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 TextInput value. #279
  • TextInput producing a Clip primitive when unnecessary. #279
  • Alignment of Text primitive in iced_wgpu. #281
  • CursorEntered and CursorLeft not being generated. #289

Removed

  • Unnecessary 'static lifetimes in Renderer bounds. #290

0.1.0 - 2020-04-02

Added

0.1.0-beta - 2019-11-25

Changed

  • The old iced becomes iced_native. The current iced crate turns into a batteries-included, cross-platform GUI library.

0.1.0-alpha - 2019-09-05

Added

  • First release! 🎉