Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pay off accumulated debt from DataQuery refactor #4377

Closed
7 of 11 tasks
jleibs opened this issue Nov 28, 2023 · 0 comments · Fixed by #4643
Closed
7 of 11 tasks

Pay off accumulated debt from DataQuery refactor #4377

jleibs opened this issue Nov 28, 2023 · 0 comments · Fixed by #4643
Labels
🟦 blueprint The data that defines our UI 🎄 tracking issue issue that tracks a bunch of subissues
Milestone

Comments

@jleibs
Copy link
Member

jleibs commented Nov 28, 2023

The initial introducing of DataQuery (#4311) left plenty of things to still clean up:

  • Need to implement exclusions for the DataQueryBlueprint to support removal (Add support for exclusion expressions to the DataQueryBlueprint #4380)
  • space_view.rs: SpaceViewBlueprint::on_frame_start still passes per_system_entities to on_frame_start. Move to PerSystemDataResults.
    • Not doing this since PerSystemEntities might line up better with store-view-managed things in the future
  • space_view_heuristics.rs: default_created_space_views still passes per_system_entities to auto_spawn_heuristic. Move to PerSystemDataResults.
    • Not doing this since PerSystemEntities might line up better with store-view-managed things in the future
  • Fix performance regressions for heuristics #4490 space_view_heuristics.rs: We run a query for every candidate space view during creation. This is extremely painful when we have a bunch of image spaces, for example. Need to be much smarter about how we evaluate candidates.
  • space_view_heuristics.rs: Removed context_collections from systems_per_required_components because otherwise annotation-contexts trigger incorrect heuristics. Need to figure out what this broke.
    • I believe this has been refactored away.
  • space_view_highlights.rs: Group hover/selection needs to look-up and walk query result
  • viewport_blueprint_ui.rs: Entity/group logic needs to use exclusions (Wire the remove-entity buttons to query exclusions #4381)
  • space_view_entity_picker.rs: Maybe: fix add/remove logic to use query expressions
    • Better yet just replace with a new QueryEditor
  • Removing entity from blueprint panel sometimes collapses parent #4453
  • Decide on and implement inclusion/exclusion semantics. We probably want explicit inclusions to take priority over recursive exclusions.
  • Actually remove SpaceViewContents now that it's almost entirely unused.
@jleibs jleibs added the 🟦 blueprint The data that defines our UI label Nov 28, 2023
jleibs added a commit that referenced this issue Nov 28, 2023
jleibs added a commit that referenced this issue Nov 28, 2023
@jleibs jleibs added this to the 0.12 milestone Nov 29, 2023
@jleibs jleibs changed the title Fix regressions from DataQuery refactor Pay off accumulated debt from DataQuery refactor Nov 29, 2023
jleibs added a commit that referenced this issue Nov 29, 2023
@abey79 abey79 added the 🎄 tracking issue issue that tracks a bunch of subissues label Nov 29, 2023
jleibs added a commit that referenced this issue Nov 29, 2023
jleibs added a commit that referenced this issue Nov 29, 2023
jleibs added a commit that referenced this issue Nov 29, 2023
### What
- Part of the #4308 stack:
  - #4310
  - THIS PR: #4311
  - #4380
  - #4381

This activates the new expression-based DataQueries and removes the
usages of SpaceViewContents.
Also includes a very primitive query-expression editor.

### Known issues
- #4377 captures several issues, specifically:
- Add/Remove Entity logic is broken. (See:
#4381)
  - Heuristics run way too slowly for complex scenes

However, for the sake of reviewer sanity, that work will be broken out
as a follow-on PR. This PR is going to be painful enough as it is.

### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested [demo.rerun.io](https://demo.rerun.io/pr/4311) (if
applicable)
* [x] The PR title and labels are set such as to maximize their
usefulness for the next release's CHANGELOG

- [PR Build Summary](https://build.rerun.io/pr/4311)
- [Docs
preview](https://rerun.io/preview/68b22fecfb162e692db791f53e2cdbce1969b53d/docs)
<!--DOCS-PREVIEW-->
- [Examples
preview](https://rerun.io/preview/68b22fecfb162e692db791f53e2cdbce1969b53d/examples)
<!--EXAMPLES-PREVIEW-->
- [Recent benchmark results](https://build.rerun.io/graphs/crates.html)
- [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)
teh-cmc pushed a commit that referenced this issue Nov 30, 2023
### What
- Part of the #4308 stack:
  - #4310
  - THIS PR: #4311
  - #4380
  - #4381

This activates the new expression-based DataQueries and removes the
usages of SpaceViewContents.
Also includes a very primitive query-expression editor.

### Known issues
- #4377 captures several issues, specifically:
- Add/Remove Entity logic is broken. (See:
#4381)
  - Heuristics run way too slowly for complex scenes

However, for the sake of reviewer sanity, that work will be broken out
as a follow-on PR. This PR is going to be painful enough as it is.

### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested [demo.rerun.io](https://demo.rerun.io/pr/4311) (if
applicable)
* [x] The PR title and labels are set such as to maximize their
usefulness for the next release's CHANGELOG

- [PR Build Summary](https://build.rerun.io/pr/4311)
- [Docs
preview](https://rerun.io/preview/68b22fecfb162e692db791f53e2cdbce1969b53d/docs)
<!--DOCS-PREVIEW-->
- [Examples
preview](https://rerun.io/preview/68b22fecfb162e692db791f53e2cdbce1969b53d/examples)
<!--EXAMPLES-PREVIEW-->
- [Recent benchmark results](https://build.rerun.io/graphs/crates.html)
- [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)
Wumpf added a commit that referenced this issue Dec 22, 2023
…#4612)

### What

* Part of:
   * #4377 
   * #4388

Previously, we assumed that the `heuristic_filter` on applicable
entities (== entities that fullfill all required components and some
additional global properties as determined by store subscriber) applies
on a per space view _class_ basis.
However, this is not entirely accurate and misses that "visualizability"
is determined on a per-space-view-instance basis: The most prominent
example of this is that a 2D primitive may or may not be visualizable in
a 3D view depending on where the 3D origin is.
Another, more forward looking problem was had in this area is that
`heuristic_filter` of visualizers should be applied as part of the
_query_ since a query determines whether visualizers are picked
automaticall/all/single.

This PR separates all these concerns more clearly and introduces types
wrapping lists of entities to make it harder to confuse which set
represents what:

* `ApplicableEntities`
   * global set, already produced by a store subscriber
* `VisualizableEntities`
* produced per space view instance. Space view instances can compute a
context (replaces `HeuristicContext`!) to guide their systems. This is
an `Any` which allows visualizer systems to react to different "parent"
space views!
* `IndicatorMatchingEntities`
   * global set, already produced by a store subscriber
* to be used as base for the "ActiveEntities" for each visualizer. For
simplicity the "ActiveEntities" itself is right now not a type. Instead,
the query uses `IndicatorMatchingEntities`and passed in
`VisualizableEntities` on the fly to determine this final set. In the
**future** it:
* may opt out to do so because a query warrants a specific visualizer(s)
* may opt out to do so because a query warrants all possible visualizers
       * visualizers and/or classes may modify the heuristic set


Great care was taken to not regress performance of the (still per frame
applied) heuristics. However, since we're doing a lot more work now
there's still a bit of a performance hit:

Before:

![image](https://github.com/rerun-io/rerun/assets/1220815/e6fe0acc-535b-40c4-be7a-e5e66a752834)

After:

![image](https://github.com/rerun-io/rerun/assets/1220815/14d91e6f-2f9c-4de0-92af-03ea4fff0b74)

I decided that any further improvements in this area should be done in
the context of not recomputing heuristics every frame and instead react
to relevant changes. (#4388)


### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested the web demo (if applicable):
* Using newly built examples:
[app.rerun.io](https://app.rerun.io/pr/4612/index.html)
* Using examples from latest `main` build:
[app.rerun.io](https://app.rerun.io/pr/4612/index.html?manifest_url=https://app.rerun.io/version/main/examples_manifest.json)
* Using full set of examples from `nightly` build:
[app.rerun.io](https://app.rerun.io/pr/4612/index.html?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json)
* [x] The PR title and labels are set such as to maximize their
usefulness for the next release's CHANGELOG

- [PR Build Summary](https://build.rerun.io/pr/4612)
- [Docs
preview](https://rerun.io/preview/7b0485ba1d74511929facf0c06a42f6c95eb5881/docs)
<!--DOCS-PREVIEW-->
- [Examples
preview](https://rerun.io/preview/7b0485ba1d74511929facf0c06a42f6c95eb5881/examples)
<!--EXAMPLES-PREVIEW-->
- [Recent benchmark results](https://build.rerun.io/graphs/crates.html)
- [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)

---------

Co-authored-by: Jeremy Leibs <jleibs@users.noreply.github.com>
jleibs added a commit that referenced this issue Jan 3, 2024
### What
 - Resolves: #4377

Restores the behavior of group hover/selection using the cached data
query result.

Also removes some deprecated TODOs.

### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested the web demo (if applicable):
* Using newly built examples:
[app.rerun.io](https://app.rerun.io/pr/4643/index.html)
* Using examples from latest `main` build:
[app.rerun.io](https://app.rerun.io/pr/4643/index.html?manifest_url=https://app.rerun.io/version/main/examples_manifest.json)
* Using full set of examples from `nightly` build:
[app.rerun.io](https://app.rerun.io/pr/4643/index.html?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json)
* [x] The PR title and labels are set such as to maximize their
usefulness for the next release's CHANGELOG

- [PR Build Summary](https://build.rerun.io/pr/4643)
- [Docs
preview](https://rerun.io/preview/cfc9311cc36a57c15ac46eede644d60e67b5d050/docs)
<!--DOCS-PREVIEW-->
- [Examples
preview](https://rerun.io/preview/cfc9311cc36a57c15ac46eede644d60e67b5d050/examples)
<!--EXAMPLES-PREVIEW-->
- [Recent benchmark results](https://build.rerun.io/graphs/crates.html)
- [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)
emilk added a commit that referenced this issue May 29, 2024
* Uses: rerun-io/egui_tiles#67
* Uses: lampsitter/egui_commonmark#51
* Split off from #6171
* Closes #5280

### Test
* [x] image loading
* [x] gltf
 
### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested the web demo (if applicable):
* Using examples from latest `main` build:
[rerun.io/viewer](https://rerun.io/viewer/pr/6448?manifest_url=https://app.rerun.io/version/main/examples_manifest.json)
* Using full set of examples from `nightly` build:
[rerun.io/viewer](https://rerun.io/viewer/pr/6448?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json)
* [x] The PR title and labels are set such as to maximize their
usefulness for the next release's CHANGELOG
* [x] If applicable, add a new check to the [release
checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)!

- [PR Build Summary](https://build.rerun.io/pr/6448)
- [Recent benchmark results](https://build.rerun.io/graphs/crates.html)
- [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)

To run all checks from `main`, comment on the PR with `@rerun-bot
full-check`.

# egui changelog so far

Full diff at https://github.com/emilk/egui/compare/0.27.0..HEAD

#### ecolor
* Fix `hex_color!` macro by re-exporting `color_hex` crate from `ecolor`
[#4372](emilk/egui#4372) (thanks
[@dataphract](https://github.com/dataphract)!)
* Remove `extra_asserts` and `extra_debug_asserts` feature flags
[#4478](emilk/egui#4478)

#### eframe
* Add `register_native_texture` in `eframe::Frame`
[#4246](emilk/egui#4246) (thanks
[@Chaojimengnan](https://github.com/Chaojimengnan)!)
* Early-out from context switching the `glow` backend
[#4284](emilk/egui#4284)
* Fix `ViewportCommand::InnerSize` not resizing viewport on Wayland
(#4211) [#4211](emilk/egui#4211) (thanks
[@rustbasic](https://github.com/rustbasic)!)
* Only avoid glow context switching on Windows
[#4296](emilk/egui#4296)
* Improve IME support with new `Event::Ime`
[#4358](emilk/egui#4358) (thanks
[@rustbasic](https://github.com/rustbasic)!)
* Allow users to create viewports larger than monitor on Windows & macOS
[#4337](emilk/egui#4337) (thanks
[@lopo12123](https://github.com/lopo12123)!)
* Use `objc2` and its framework crates
[#4395](emilk/egui#4395) (thanks
[@madsmtm](https://github.com/madsmtm)!)
* Update to Rust 1.76 [#4411](emilk/egui#4411)
* Egui-winit: emit physical key presses when a non-Latin layout is
active [#4461](emilk/egui#4461) (thanks
[@TicClick](https://github.com/TicClick)!)
* IME for chinese [#4436](emilk/egui#4436)
(thanks [@rustbasic](https://github.com/rustbasic)!)
* Fix : In Windows, the 'egui_demo_app' screen does not appear.
[#4410](emilk/egui#4410) (thanks
[@rustbasic](https://github.com/rustbasic)!)
* Fix: Window position creeps between executions on scaled monitors
[#4443](emilk/egui#4443) (thanks
[@avery-radmacher](https://github.com/avery-radmacher)!)
* Update `image` crate to 0.25
[#4160](emilk/egui#4160)
* Ignore synthetic key presses
[#4514](emilk/egui#4514) (thanks
[@hut](https://github.com/hut)!)
* Fix: still track mouse when dragging outside web canvas
[#4522](emilk/egui#4522)
* Add `NativeOptions::persistence_path`
[#4423](emilk/egui#4423) (thanks
[@lucasmerlin](https://github.com/lucasmerlin)!)
* Use ResizeObserver instead of `resize` event
[#4536](emilk/egui#4536) (thanks
[@jprochazk](https://github.com/jprochazk)!)
* Fix: Don't `.forget()` RAF closure
[#4551](emilk/egui#4551) (thanks
[@jprochazk](https://github.com/jprochazk)!)

#### egui_extras
* Update `image` crate to 0.25
[#4160](emilk/egui#4160)

#### egui_plot
* `Plot::Items:allow_hover` give possibility to masked the interaction
on hovered item [#2558](emilk/egui#2558) (thanks
[@haricot](https://github.com/haricot)!)
* Expose `ClosestElem` and `PlotConfig`
[#4380](emilk/egui#4380) (thanks
[@Narcha](https://github.com/Narcha)!)
* Disable interaction for `ScrollArea` and `Plot` when UI is disabled
[#4457](emilk/egui#4457) (thanks
[@varphone](https://github.com/varphone)!)
* Make sure plot size is positive
[#4429](emilk/egui#4429) (thanks
[@rustbasic](https://github.com/rustbasic)!)
* Introduce lifetime to `egui_plot::Plot` to replace `'static` fields
[#4435](emilk/egui#4435) (thanks
[@Fabus1184](https://github.com/Fabus1184)!)
* Hide all other series when alt-clicking in the legend
[#4549](emilk/egui#4549) (thanks
[@abey79](https://github.com/abey79)!)
* Plot now respects the `interact_radius` set in the UI's style
[#4520](emilk/egui#4520) (thanks
[@YgorSouza](https://github.com/YgorSouza)!)

#### egui_glow
* Enable egui_glow's winit feature on wasm (#4420)
[#4421](emilk/egui#4421) (thanks
[@simon-frankau](https://github.com/simon-frankau)!)

#### egui-wgpu
* Update to wgpu 0.20 [#4433](emilk/egui#4433)
(thanks [@KeKsBoTer](https://github.com/KeKsBoTer)!)
* Revert update to wgpu 0.20 => downgrade to wgpu 0.19.1
[#4559](emilk/egui#4559)

#### egui-winit
* Update `webbrowser` to `v1.0.0`
[#4394](emilk/egui#4394) (thanks
[@torokati44](https://github.com/torokati44)!)
* Emit physical key presses when a non-Latin layout is active
[#4461](emilk/egui#4461) (thanks
[@TicClick](https://github.com/TicClick)!)
* IME for chinese [#4436](emilk/egui#4436)
(thanks [@rustbasic](https://github.com/rustbasic)!)
* Fix: Window position creeps between executions on scaled monitors
[#4443](emilk/egui#4443) (thanks
[@avery-radmacher](https://github.com/avery-radmacher)!)
* Ignore synthetic key presses
[#4514](emilk/egui#4514) (thanks
[@hut](https://github.com/hut)!)

#### egui
* Improve the UI for changing the egui theme
[#4257](emilk/egui#4257)
* Change the resize cursor when you reach the resize limit
[#4275](emilk/egui#4275)
* Make `TextEdit` an atomic widget
[#4276](emilk/egui#4276)
* Overload operators for `Rect + Margin`, `Rect - Margin` etc
[#4277](emilk/egui#4277)
* Implement blinking text cursor in `TextEdit`
[#4279](emilk/egui#4279)
* Rename `fn scroll2` to `fn scroll`
[#4282](emilk/egui#4282)
* Change `Frame::multiply_with_opacity` to multiply in gamma space
[#4283](emilk/egui#4283)
* Support order on windows
[#4301](emilk/egui#4301) (thanks
[@alexparlett](https://github.com/alexparlett)!)
* Fix wrong replacement function in deprecation notice of
`drag_released*` [#4314](emilk/egui#4314)
(thanks [@sornas](https://github.com/sornas)!)
* Consider layer transform when positioning text agent
[#4319](emilk/egui#4319) (thanks
[@juancampa](https://github.com/juancampa)!)
* Fix incorrect line breaks
[#4377](emilk/egui#4377) (thanks
[@juancampa](https://github.com/juancampa)!)
* Fix `hex_color!` macro by re-exporting `color_hex` crate from `ecolor`
[#4372](emilk/egui#4372) (thanks
[@dataphract](https://github.com/dataphract)!)
* Change `Ui::allocate_painter` to inherit properties from `Ui`
[#4343](emilk/egui#4343) (thanks
[@varphone](https://github.com/varphone)!)
* Use parent `Ui`s style for popups
[#4325](emilk/egui#4325) (thanks
[@alexparlett](https://github.com/alexparlett)!)
* Fix : take `rounding` into account when using `Slider::trailing_fill`
[#4308](emilk/egui#4308) (thanks
[@rustbasic](https://github.com/rustbasic)!)
* Add a way to specify Undoer settings and construct Undoers more easily
[#4357](emilk/egui#4357) (thanks
[@valadaptive](https://github.com/valadaptive)!)
* Add xtask crate [#4293](emilk/egui#4293)
(thanks [@YgorSouza](https://github.com/YgorSouza)!)
* Add `ViewportCommand::RequestCut`, `RequestCopy` and `RequestPaste` to
trigger Clipboard actions
[#4035](emilk/egui#4035) (thanks
[@bu5hm4nn](https://github.com/bu5hm4nn)!)
* Fix `Panel` incorrect size
[#4351](emilk/egui#4351) (thanks
[@zhatuokun](https://github.com/zhatuokun)!)
* Improve IME support with new `Event::Ime`
[#4358](emilk/egui#4358) (thanks
[@rustbasic](https://github.com/rustbasic)!)
* Allow users to create viewports larger than monitor on Windows & macOS
[#4337](emilk/egui#4337) (thanks
[@lopo12123](https://github.com/lopo12123)!)
* Added ability to define colors at UV coordinates along a path
[#4353](emilk/egui#4353) (thanks
[@murl-digital](https://github.com/murl-digital)!)
* Eframe: update ViewportBuilder.with_icon() documentation
[#4408](emilk/egui#4408) (thanks
[@roccoblues](https://github.com/roccoblues)!)
* Update to Rust 1.76 [#4411](emilk/egui#4411)
* Add a `Display` impl for `Vec2`, `Pos2`, and `Rect`
[#4428](emilk/egui#4428) (thanks
[@tgross35](https://github.com/tgross35)!)
* Remove `extra_asserts` and `extra_debug_asserts` feature flags
[#4478](emilk/egui#4478)
* Egui-winit: emit physical key presses when a non-Latin layout is
active [#4461](emilk/egui#4461) (thanks
[@TicClick](https://github.com/TicClick)!)
* Disable interaction for `ScrollArea` and `Plot` when UI is disabled
[#4457](emilk/egui#4457) (thanks
[@varphone](https://github.com/varphone)!)
* Update ahash 0.8.6 -> 0.8.11
[#4507](emilk/egui#4507) (thanks
[@hellodword](https://github.com/hellodword)!)
* `include_image!` now accepts expressions
[#4521](emilk/egui#4521) (thanks
[@YgorSouza](https://github.com/YgorSouza)!)
* Remove `Event::Scroll` and handle it in egui
[#4524](emilk/egui#4524)
* Remove scroll latency for smooth trackpads
[#4526](emilk/egui#4526)
* Smooth out zooming with discreet scroll wheel
[#4530](emilk/egui#4530)
* Add `Options::line_scroll_speed` and `scroll_zoom_speed`
[#4532](emilk/egui#4532)
* Don't panic when replacement glyph is not found
[#4542](emilk/egui#4542) (thanks
[@RyanBluth](https://github.com/RyanBluth)!)
* Make `TextEdit::return_key` optional
[#4543](emilk/egui#4543) (thanks
[@doonv](https://github.com/doonv)!)
* Add `TextEdit::hint_text_font`
[#4517](emilk/egui#4517) (thanks
[@zaaarf](https://github.com/zaaarf)!)
* Add `Options::reduce_texture_memory` to free up RAM
[#4431](emilk/egui#4431) (thanks
[@varphone](https://github.com/varphone)!)
* Fix `Ui::scroll_with_delta` only scrolling if the `ScrollArea` is
focused [#4303](emilk/egui#4303) (thanks
[@lucasmerlin](https://github.com/lucasmerlin)!)
* Add support for text truncation to `egui::Style`
[#4556](emilk/egui#4556) (thanks
[@abey79](https://github.com/abey79)!)
* Hide toolip when opening `ComboBox` drop-down
[#4546](emilk/egui#4546) (thanks
[@abey79](https://github.com/abey79)!)
* Better spacing and sizes for (menu) buttons
[#4558](emilk/egui#4558)

#### epaint
* Add `RectShape::blur_width` to implement shadows
[#4267](emilk/egui#4267)
* Overload operators for `Rect + Margin`, `Rect - Margin` etc
[#4277](emilk/egui#4277)
* Fix incorrect line breaks
[#4377](emilk/egui#4377) (thanks
[@juancampa](https://github.com/juancampa)!)
* Fix `hex_color!` macro by re-exporting `color_hex` crate from `ecolor`
[#4372](emilk/egui#4372) (thanks
[@dataphract](https://github.com/dataphract)!)
* Add `emath::OrderedFloat` (moved from `epaint::util::OrderedFloat`)
[#4389](emilk/egui#4389)
* Added ability to define colors at UV coordinates along a path
[#4353](emilk/egui#4353) (thanks
[@murl-digital](https://github.com/murl-digital)!)
* Add a `Display` impl for `Vec2`, `Pos2`, and `Rect`
[#4428](emilk/egui#4428) (thanks
[@tgross35](https://github.com/tgross35)!)
* Remove `extra_asserts` and `extra_debug_asserts` feature flags
[#4478](emilk/egui#4478)
* Make `epaint::mutex::RwLock` allow `?Sized` types
[#4485](emilk/egui#4485) (thanks
[@crumblingstatue](https://github.com/crumblingstatue)!)
* Update ahash 0.8.6 -> 0.8.11
[#4507](emilk/egui#4507) (thanks
[@hellodword](https://github.com/hellodword)!)
* Don't panic when replacement glyph is not found
[#4542](emilk/egui#4542) (thanks
[@RyanBluth](https://github.com/RyanBluth)!)

---------

Co-authored-by: Antoine Beyeler <antoine@rerun.io>
Co-authored-by: Andreas Reich <r_andreas2@web.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🟦 blueprint The data that defines our UI 🎄 tracking issue issue that tracks a bunch of subissues
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants