Skip to content

Tracking: upstream pop-os/iced changes into iced-rs/iced #1

Description

@FreddyFunk

Tracking: upstream pop-os/iced changes into iced-rs/iced

Tracker for systematically upstreaming the COSMIC fork's delta into iced-rs/iced, one PR at a time, so future rebases of pop-os/iced get cheaper.

Baseline: pop-os/iced@master (86b236f2e) vs iced-rs/iced@master (3c81aac2e) — merge-base b11ad9ff5, 254 fork-only commits. Of the 318 merged PRs in pop-os/iced, 91 were merged after the Jan 2026 iced 0.14 rebase and map 1:1 to commits; the remaining ~227 predate it and are collapsed into the single feat: pop-os megasquash commit (08fe1f3aa, 233 files, +24336/-1856), so those are tracked as subsystems in Part 2.

Legend: ⬜ not started · 🔄 PR open upstream · ✅ merged upstream · ❌ won't upstream / fork-only


Part 1 — Individual PRs merged since the 0.14 rebase

1a. Portable fixes & features (best upstream candidates)

Status pop-os PR Title Area
#262 fix(macOS): change super_key to meta_key for q press winit
#268 fix: tiny-skia rendering tiny_skia
#269 fix: keyboard events fire twice winit
#272 fix(scrollable): pixel scroll direction widget
#274 fix: winit does not consider space a named key anymore to comply with spec core, winit
#275 fix: Code needs space but Named does not core, winit
#276 fix(tiny-skia): avoid panic if image is not allocated tiny_skia
#278 fix(markdown): support the syntax for line breaks inside table cells widget
#279 chore: fix virtual offset widget
#280 winit: Fix cursor_position for touch events winit
#281 fix: update cursor pos when pointer enters winit
#282 fix: on_right_press handler widget
#283 fix(mouse area): on_drag widget
#284 fix(text): draw_with deadlock accessing font system graphics
#285 Mouse area (double click, etc.) widget
#288 fix: transform of tiny-skia rotation tiny_skia
#289 fix(viewport): must use logical size when scale changes winit
#290 fix windows build winit
#291 fix(ime): candidate window position for fcitx5 winit
#296 fix(wgpu): bounds check for images wgpu
#298 feat: add resize() to Paragraph core
#300 fix(markdown): export fields of iced::widget::markdown::Row widget
#301 fix(rule): allow changing thickness after creation widget
#302 fix: scale winit
#310 Add RTL support to TextInput widget widget
#312 fix: rustix fs feature wgpu
#313 Add functions for row/column widget
#319 feat: focus wrap-around core
#321 Regression fix: images > 2048px missing data in bottom-right corner wgpu
#323 Sort using more deterministic algorithm core, graphics
#325 fix: load image synchronously if no callback is set wgpu
#330 improv(wgpu): adapter selection wgpu
#332 fix(ime): flip candidate position when it overflows bottom screen edge winit
#335 fix(ime): don't panic on DeleteSurrounding events winit
#338 Selectable Text widget core, widget
#340 fix: crash while resizing on x11 wgpu
#342 reexport geometry from iced_graphics src
#345 fix: avoid deadlock in context menu rendering wgpu
#346 fix(text): don't reload cache every redraw tiny_skia, wgpu
#347 improv: reuse fonts loaded by cosmic-text for svg renderer graphics, tiny_skia
#352 fix: reuse wgpu compositor winit
#356 fix: add alt clipboard bindings for text_editor widget
#357 fix(slider): add handle bounds to avoid handle shifting on hover widget
#362 fix: avoid panic on sub-pixel rounded borders tiny_skia
#364 fix: intersect nested clip bounds with parent layer graphics
#366 feat: add overflow option to Pin widget widget
#372 fix: compiler error for e2k CPU architecture wgpu

1b. Depends on a fork-only subsystem landing first (see Part 2)

Status pop-os PR Title Blocked on
#306 Fix mac windows multi-surface runtime
#315 fix: double negative in a11y_ready state for sctk surfaces A11y
#322 Add DnD destination to stack widget DnD
#339 HasSelectableText trait A11y + pop-os#338
#353 Fix List widget not updating children because iterator not consumed widget::list
#367 fix: ignore resize border on fullscreen/maximized client-side resize border
#370 fix: consume XDG activation token on window creation Wayland activation
#371 fix: tear down dnd surface when the dnd is ended programmatically DnD

1c. Wayland / SCTK / COSMIC platform-specific

These only make sense upstream if the Wayland shell backend (Part 2, item 1) is accepted first.

Status pop-os PR Title
#267 fix: popup size not configuring correctly
#271 fix: resize border
#273 fix: popup creation handling of existing popups
#287 fix(iced): route all pointer events through SctkEvent::PointerEvent
#292 fix(ime): implement IME methods of SctkWinitWindow for single-instance
#297 fix(ime): composing text drawing on COSMIC's light theme
#303 increment surface version after sync
#314 fix: a11y_ready state for sctk surfaces
#324 feat: ext-background-effect blur
#326 fix: use 0 for position of blur rectangle
#327 fix(wayland): add mouse cursor entered event to SctkEvent
#328 winit: set WindowAttributesWayland without cctk feature
#329 fix: forward wayland IME events in SCTK only when single-instance enabled
#336 fix: send redraw request after events
#337 fix: bootstrap FrameStatus on session lock surface configure
#344 chore: modifiers event on keyboard enter and leave
#351 improv: ignore duplicate surfaces and log a warning
#358 Corner radius
#363 wgpu: apply Nvidia driver workaround regardless of cctk feature
#365 fix: validate corner radius against window geometry
#368 Don't collapse autosize popups to 1×1 on reconfigure
#375 Cleanup blur surface

1d. Already upstream or not applicable — no action

Status pop-os PR Title Reason
#277 Introduce a format blacklist in iced_wgpu cherry-pick from upstream
#286 Fix transformation of canvas primitives in tiny_skia present in upstream master
#304 Fix RTL relayout being skipped for single-line text present in upstream master
#333 wgpu: request devices with SHADER_F16 feature present in upstream master
#341 wgpu: request SHADER_F16 only when adapter advertises it superseded by upstream "Make shader_f16 optional" — verify
#259 feat: ellipsized text superseded by upstream Ellipsis support — verify
#261 Iced 0.14 the rebase itself
#307 fix: use highlight and cursor from cosmic-text editor dependency pin only
#311 / #316 Use crate for softbuffer + revert net no-op
#320 chore: update cosmic-text dependency pin only
#331 Update to wgpu 28 and pin cosmic-text 0.19 dependency pin only
#359 Revert "feat: add direct SCTK action sender for wayland popups" revert of fork-only code
#369 fix: feature gates fork build plumbing

Part 2 — Pre-rebase foundation (feat: pop-os megasquash, 08fe1f3aa)

~227 PRs merged before Jan 2026 were squashed into one commit, so there is no per-PR mapping. Tracked here as subsystems, each of which needs its own upstream design discussion before any code PR.

Status Subsystem Where Notes
Wayland/SCTK shell backend winit/src/platform_specific/wayland/** (~34 new files), core/src/event/wayland/**, runtime/src/platform_specific/wayland/** layer surfaces, popups, subsurfaces, session lock, xdg-activation, overlap-notify. Largest single chunk — needs an upstream RFC first.
Drag & drop runtime/src/dnd.rs, DnD source/destination in widgets, window_clipboard integration
Accessibility new accessibility/ crate + AccessKit wiring in core, widget, winit
Widget Id / focus infrastructure core/src/id.rs, core/src/widget/operation/search_id.rs prerequisite for a11y and pop-os#319
widget::list (virtualized list) widget/src/list.rs prerequisite for pop-os#353
mouse_area extensions widget/src/mouse_area.rs double click, right press, drag — partially covered by pop-os#282/pop-os#283/pop-os#285
Overflow / autosize widget support core, widget, winit
wgpu adapter selection + hybrid-GPU workarounds wgpu/src/window/**, x11 adapter extraction, NVIDIA/DRI workarounds overlaps pop-os#330, pop-os#340, pop-os#363
Multi-surface runtime & window management runtime, winit/src/application/**, program
Text stack deltas graphics, core::text configurable wrapping, cosmic-text integration changes
Misc portability Redox build support, extra serde derives, reserved Ids small, easy standalone PRs

Working notes

  • Local remotes: origin = FreddyFunk/iced, popos = pop-os/iced, upstream = iced-rs/iced.
  • Recheck what's already upstream before opening each PR: git log --format='%s' origin/master..upstream/master | grep -i <keyword>.
  • Prefer landing 1a items first — they are self-contained, have no fork dependencies, and build goodwill for the larger Part 2 discussions.

Note

This issue was generated with LLM assistance (Claude Code). The PR inventory and classification come from diffing pop-os/iced against iced-rs/iced and from the GitHub PR list, but the categorization — especially the "already upstream" rows in 1d and the subsystem groupings in Part 2 — has not been diff-verified end to end. Double-check before acting on any single row.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions