damascene 0.4.1
·
69 commits
to main
since this release
HDR & color management
- Color-managed images end to end — wide-gamut and HDR image sources are decoded, tagged, and converted through the paint stream on all backends (fe21b1e)
- Per-image HDR luminance remaster —
dynamic_range_limit(à la CSS) tone-maps authored-HDR images via BT.2390, using measured peak × live headroom (ae41bbe) - PQ images anchored to reference white —
BT2020_PQcontent maps 203 nits to UI white instead of clipping (#46) (7e9fbc1) - Live HDR negotiation —
preferred_changed2lets HDR output follow the window across monitors (26932de) HostDiagnostics::hdr_active()— one true check for "is this window actually rendering HDR right now" (#46) (f83b1e5)- UI white now scales to the scRGB reference level on HDR swapchains (a4a85cb)
- Host clear colors route through the paint-stream conversion (#45) (0047dfa)
Scene3D
- Translucent meshes — materials with alpha < 1 render in a second, depth-sorted pass (#39) (2f2809f)
- Grid/axes record after opaque meshes so depth resolves correctly (6e144ba)
- Label occlusion now works on WebGL2 via packed depth-as-color capture; backends without depth read-back degrade gracefully (9364b8b, 79d01c8)
Widgets & API
page()— semantic window-root scaffold for app shells (#46) (6f27dbf)EventCx—on_eventhandlers and app code can query rects of keyed elements (#43) (bf61bd5)- External wakeup in
damascene-winit-wgpufor push-driven event-class redraws (#44) (3c298a8) - Debug warning when
.tooltip()re-set replaces different text (#46) (109806a)
Lints
- New
TooltipWithoutOverlayRoot— catches theoverlays()requirement statically (#46) (b717502) - New
UnpaddedViewportLeaf— flags flush window chrome at the root level (#46) (2d4ad4b, 7afe0ba) - Adjacency checks now run across container boundaries (#37) (dbfef84)
Fixes
- Wrap text measures at its own
Fixedwidth underHugancestors (#47) (51e1651) - Runner capabilities derive from the adapter in
winit-wgpu, matching the web host (4aa1a3d, 31d0a54)
Build
- Dev-profile opt-level overrides for the text rasterization stack — debug time-to-first-present drops 22.1 s → 1.14 s. Note: profile overrides don't propagate; downstream app workspaces need the same block in their own root
Cargo.toml(ef6eff2)