Skip to content

Commit 111ba1a

Browse files
committed
Merge branch 'main' into antoine/filt9-slash-in-query
2 parents 2b2dc08 + 4ad2b04 commit 111ba1a

File tree

33 files changed

+782
-213
lines changed

33 files changed

+782
-213
lines changed

.github/workflows/contrib_checks.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ jobs:
111111
with:
112112
vulkan_version: ${{ env.VULKAN_SDK_VERSION }}
113113
install_runtime: true
114-
cache: false
114+
cache: true
115115
stripdown: true
116116

117117
- name: Setup software rasterizer

.github/workflows/reusable_checks_rust.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ jobs:
7979
with:
8080
vulkan_version: ${{ env.VULKAN_SDK_VERSION }}
8181
install_runtime: true
82-
cache: false
82+
cache: true
8383
stripdown: true
8484

8585
- name: Setup software rasterizer

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ __pycache__
3434
*.pyd
3535
*.so
3636
**/.pytest_cache
37+
**/.ipynb_checkpoints/
3738

3839
# Pixi environment
3940
.pixi

.vscode/settings.json

+8-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88
"files.autoGuessEncoding": true,
99
"files.insertFinalNewline": true,
1010
"files.trimTrailingWhitespace": true,
11+
"protoc": {
12+
"options": [
13+
"--proto_path=crates/store/re_protos/proto",
14+
]
15+
},
1116
// Whether `--workspace` should be passed to `cargo check`. If false, `-p <package>` will be passed instead.
1217
"rust-analyzer.check.workspace": false,
1318
"rust-analyzer.cargo.allTargets": true,
@@ -42,12 +47,10 @@
4247
},
4348
"rust-analyzer.diagnostics.enable": false, // False positives
4449
"rust-analyzer.showUnlinkedFileNotification": false,
45-
4650
// Uncomment the following options and restart rust-analyzer to get it to check code behind `cfg(target_arch=wasm32)`.
4751
// Don't forget to put it in a comment again before committing.
4852
// "rust-analyzer.cargo.target": "wasm32-unknown-unknown",
4953
// "rust-analyzer.cargo.cfgs": ["web","webgl","webgpu"],
50-
5154
"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools", // Use cmake-tools to grab configs.
5255
"C_Cpp.autoAddFileAssociations": false,
5356
"cmake.buildDirectory": "${workspaceRoot}/build/debug",
@@ -63,6 +66,9 @@
6366
],
6467
"prettier.requireConfig": true,
6568
"prettier.configPath": ".prettierrc.toml",
69+
"[proto3]": {
70+
"editor.defaultFormatter": "zxh404.vscode-proto3"
71+
},
6672
"[python]": {
6773
"editor.defaultFormatter": "charliermarsh.ruff"
6874
},

CHANGELOG.md

+134-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,139 @@
11
# Rerun changelog
22

3-
## [Unreleased](https://github.com/rerun-io/rerun/compare/latest...HEAD)
3+
## [Unreleased](https://github.com/rerun-io/rerun/compare/0.21.0...HEAD) - Entity filter & improved partial update API
4+
5+
TODO(andreas): add link to release video
6+
7+
📖 Release blogpost: TODO(andreas): add link
8+
9+
🧳 Migration guide: https://rerun.io/docs/reference/migration/migration-0-22?speculative-link
10+
11+
### ✨ Overview & highlights
12+
13+
#### Viewer
14+
* 🔎 Added entity filtering/searching
15+
* 🔔 Recent notifications show now in a dedicated panel
16+
* 🖱️ Entity ranges can now be selected with shift + click
17+
18+
#### APIs
19+
* 🔄 [Much easier partial updates of archetypes](https://rerun.io/docs/howto/logging/send-partial-updates?speculative-link)
20+
* 📊 [Greatly improved ease of use of `send_columns`](https://rerun.io/docs/howto/logging/send-columns?speculative-link)
21+
* ⏱️ Python notebooks & JS can now control the timeline with `set_time_ctrl` TODO(#8894): link to the api/an example
22+
* 📝 Lots of [new snippets](https://github.com/rerun-io/rerun/blob/0.22.0/docs/snippets/INDEX.md?speculative-link) for demonstrating partial updates & custom data logging in Python/C++/Rust
23+
24+
The API & related under-the-hood changes pave the way for better support for multiple archetypes on the same entity and components with generic types in future releases.
25+
Stay tuned!
26+
27+
### ⚠️ Breaking changes
28+
TODO(andreas): fill in
29+
🧳 Migration guide: https://rerun.io/docs/reference/migration/migration-0-22?speculative-link
30+
31+
### 🔎 Details
32+
33+
#### 🪵 Log API
34+
- Tensor shape and dimension names are now separate arrow fields [#8376](https://github.com/rerun-io/rerun/pull/8376)
35+
- Remove deprecated `DisconnectedSpace` archetype & component [#8545](https://github.com/rerun-io/rerun/pull/8545)
36+
- Add `any_values` and `extra_values` snippets for rust [#8718](https://github.com/rerun-io/rerun/pull/8718)
37+
- Implement gRPC log sink [#8709](https://github.com/rerun-io/rerun/pull/8709)
38+
- Implement gRPC log stream [#8730](https://github.com/rerun-io/rerun/pull/8730)
39+
40+
#### 🌊 C++ API
41+
- Fix compilation for GCC 13.3 (missing `cstdint` include) [#8609](https://github.com/rerun-io/rerun/pull/8609) (thanks [@plumonito](https://github.com/plumonito)!)
42+
- Introduce eager serialization & update/clear APIs in the C++ SDK [#8727](https://github.com/rerun-io/rerun/pull/8727)
43+
- Make all C++ archetypes eager serialized & provide generated update/clear APIs [#8779](https://github.com/rerun-io/rerun/pull/8779)
44+
- C++ `columns` method for convenient `send_columns` call through archetypes [#8828](https://github.com/rerun-io/rerun/pull/8828)
45+
- Add `with_many_` variants for C++ archetype mono fields & port remaining snippets [#8836](https://github.com/rerun-io/rerun/pull/8836)
46+
- Require descriptors to be provided on all log calls in C++ (either explicitly or implicitly via archetype) [#8853](https://github.com/rerun-io/rerun/pull/8853)
47+
- Deprecate C++ `TimeColumn::from_sequence_points` in favor of `TimeColumn::from_sequence` [#8882](https://github.com/rerun-io/rerun/pull/8882)
48+
- `AsComponents::serialize` is now `AsComponents::as_batches` and returns `Collection<ComponentBatch>` [#8884](https://github.com/rerun-io/rerun/pull/8884)
49+
- Make it easy to log custom arrow data in C++ [#8880](https://github.com/rerun-io/rerun/pull/8880)
50+
- Rerun CMake dependency now automatically ensures C++17 or newer [#8898](https://github.com/rerun-io/rerun/pull/8898)
51+
52+
#### 🐍 Python API
53+
- Autogenerated partial updates APIs for Python [#8671](https://github.com/rerun-io/rerun/pull/8671)
54+
- Remove unused `num_instances()` method [#8702](https://github.com/rerun-io/rerun/pull/8702)
55+
- Tagged columnar updates: Python [#8792](https://github.com/rerun-io/rerun/pull/8792)
56+
- Include a python API for routing time control commands to the notebook instance [#8809](https://github.com/rerun-io/rerun/pull/8809)
57+
- Python: remove legacy `send_columns` and update everything left [#8799](https://github.com/rerun-io/rerun/pull/8799)
58+
- Deprecate Python's `log_components` [#8892](https://github.com/rerun-io/rerun/pull/8892)
59+
60+
#### 🦀 Rust API
61+
- Update MSRV to 1.81 [#8529](https://github.com/rerun-io/rerun/pull/8529)
62+
- Fix `RecordingStream::log` implicitly requiring `Sized` [#8587](https://github.com/rerun-io/rerun/pull/8587)
63+
- Add example for extending the viewer with custom callbacks [#8284](https://github.com/rerun-io/rerun/pull/8284)
64+
- `EntityPathFilter` variable substitutions are now delegated to (new) `ResolvedEntityPathFilter` [#8543](https://github.com/rerun-io/rerun/pull/8543)
65+
- Specify, test, and fix all broken `AsComponents`<>`ComponentBatch` interactions from blanket impls [#8591](https://github.com/rerun-io/rerun/pull/8591)
66+
- New types and traits for (co-existing!) eager serialization [#8642](https://github.com/rerun-io/rerun/pull/8642)
67+
- Autogenerate tagging-compliant descriptor methods for all archetypes [#8643](https://github.com/rerun-io/rerun/pull/8643)
68+
- Automatically generate partial update APIs for eager archetypes [#8647](https://github.com/rerun-io/rerun/pull/8647)
69+
- Tagged columnar updates: Rust [#8764](https://github.com/rerun-io/rerun/pull/8764)
70+
- Make `Box`/`AssetVideo`/`ViewCoordinates`/`Asset3D` eager serialized in Rust [#8785](https://github.com/rerun-io/rerun/pull/8785)
71+
- Make `Pinhole` archetype in Rust eager serialized [#8789](https://github.com/rerun-io/rerun/pull/8789)
72+
- Make `Image` & `Mesh3D` archetypes in Rust eager serialized [#8793](https://github.com/rerun-io/rerun/pull/8793)
73+
- Make rust `Tensor` archetype eager serialized [#8801](https://github.com/rerun-io/rerun/pull/8801)
74+
- Rust: remove legacy `send_columns` and update everything left [#8804](https://github.com/rerun-io/rerun/pull/8804)
75+
- `ComponentBatch` doesn't implement `AsComponents` anymore [#8820](https://github.com/rerun-io/rerun/pull/8820)
76+
77+
#### 🪳 Bug fixes
78+
- Fix WSL support, update troubleshooting guide [#8610](https://github.com/rerun-io/rerun/pull/8610)
79+
- Handle empty line strips in the viewer [#8653](https://github.com/rerun-io/rerun/pull/8653)
80+
- Fix clicking of links in markdown [#8794](https://github.com/rerun-io/rerun/pull/8794)
81+
- Fix CPU spike caused by hanging connection after socket closure (#8806) [#8810](https://github.com/rerun-io/rerun/pull/8810) (thanks [@goktug97](https://github.com/goktug97)!)
82+
- Make it possible to change the contents of a view multiple times per frame [#8854](https://github.com/rerun-io/rerun/pull/8854)
83+
- Fix playback issues with some h264 videos on native & Safari [#8850](https://github.com/rerun-io/rerun/pull/8850)
84+
- Fix handling null timestamps in the dataframe [#8897](https://github.com/rerun-io/rerun/pull/8897)
85+
86+
#### 🌁 Viewer improvements
87+
- Remove all legacy Chunk iteration APIs [#8556](https://github.com/rerun-io/rerun/pull/8556)
88+
- Implement copy-screenshot-to-clipboard on Web [#8607](https://github.com/rerun-io/rerun/pull/8607)
89+
- Improve transform performance (by caching affine transforms resulting from transform components) [#8691](https://github.com/rerun-io/rerun/pull/8691)
90+
91+
#### 🧑‍🏫 Examples
92+
- add prompt depth anything example [#8888](https://github.com/rerun-io/rerun/pull/8888) (thanks [@pablovela5620](https://github.com/pablovela5620)!)
93+
94+
#### 📚 Docs
95+
- Add new `Transform3D` partial updates snippet for all languages [#8690](https://github.com/rerun-io/rerun/pull/8690)
96+
- doc: Update `annotation-context.rs` to use correct API [#8708](https://github.com/rerun-io/rerun/pull/8708) (thanks [@OlivierLDff](https://github.com/OlivierLDff)!)
97+
98+
#### 🖼 UI improvements
99+
- Show the `GraphNode` as a label by default [#8542](https://github.com/rerun-io/rerun/pull/8542)
100+
- Short circuit graph simulation if all nodes are fixed [#8549](https://github.com/rerun-io/rerun/pull/8549)
101+
- Panel with recent notifications [#8465](https://github.com/rerun-io/rerun/pull/8465)
102+
- Fix tooltips being dragged along in graph view [#8573](https://github.com/rerun-io/rerun/pull/8573)
103+
- Restore the time panel help button [#8599](https://github.com/rerun-io/rerun/pull/8599)
104+
- Filter entities in the UI (part 0): Make `CustomContent` more useful [#8645](https://github.com/rerun-io/rerun/pull/8645)
105+
- Filter entities in the UI (part 1): Introduce a filter widget [#8652](https://github.com/rerun-io/rerun/pull/8652)
106+
- Filter entities in the UI (part 2): Introduce entity filtering in the time panel [#8654](https://github.com/rerun-io/rerun/pull/8654)
107+
- Filter entities in the UI (part 3): Move action to a menu in the blueprint panel and keep default blueprint when using heuristics [#8672](https://github.com/rerun-io/rerun/pull/8672)
108+
- Filter entities in the UI (part 4): Add entity filtering in the blueprint tree [#8706](https://github.com/rerun-io/rerun/pull/8706)
109+
- Draw nodes above edges in graph view [#8738](https://github.com/rerun-io/rerun/pull/8738)
110+
- Filter entities in the UI (part 5): Add snapshot tests for the blueprint tree [#8728](https://github.com/rerun-io/rerun/pull/8728)
111+
- Filter entities in the UI (part 6): Refactor `re_blueprint_tree` and add more tests [#8795](https://github.com/rerun-io/rerun/pull/8795)
112+
- Improve performance for Blueprint & Streams Panel for many entities [#8808](https://github.com/rerun-io/rerun/pull/8808)
113+
- The empty/full entity icon now reflects presence of component on the current timeline [#8839](https://github.com/rerun-io/rerun/pull/8839)
114+
- Show start of large arrow values instead of just their size [#8861](https://github.com/rerun-io/rerun/pull/8861)
115+
- Implement range selection with shift-click in the blueprint tree [#8852](https://github.com/rerun-io/rerun/pull/8852)
116+
- Filter entities in the UI (part 7): Refactor and optimize `re_time_panel` and add more tests [#8863](https://github.com/rerun-io/rerun/pull/8863)
117+
- Clickable URLs in named components / `AnyValues` [#8864](https://github.com/rerun-io/rerun/pull/8864)
118+
- Implement range selection with shift-click in the time panel [#8870](https://github.com/rerun-io/rerun/pull/8870)
119+
- Improve look of bar charts slightly [#8875](https://github.com/rerun-io/rerun/pull/8875)
120+
121+
#### 🕸️ Web
122+
- Add JS timeline control and callback APIs [#8673](https://github.com/rerun-io/rerun/pull/8673)
123+
124+
#### ✨ Other enhancement
125+
- Remove `Chunk::iter_component_arrays` [#8548](https://github.com/rerun-io/rerun/pull/8548)
126+
- Introduce new Chunk iteration APIs [#8553](https://github.com/rerun-io/rerun/pull/8553)
127+
128+
#### 📈 Analytics
129+
- Add analytics for wgpu backend and whether the viewer runs in WSL [#8612](https://github.com/rerun-io/rerun/pull/8612)
130+
131+
#### 📦 Dependencies
132+
- Update wgpu to 24.0.0 [#8743](https://github.com/rerun-io/rerun/pull/8743)
133+
134+
#### 🤷‍ Other
135+
- Introduce snapshot unit tests for `re_component_ui` [#8546](https://github.com/rerun-io/rerun/pull/8546)
136+
4137

5138
## [0.21.0](https://github.com/rerun-io/rerun/compare/0.20.3...0.21.0) - Graph view, 3D Grid & UI/UX improvements
6139

Cargo.lock

+2-1
Original file line numberDiff line numberDiff line change
@@ -6899,6 +6899,7 @@ dependencies = [
68996899
"image",
69006900
"itertools 0.13.0",
69016901
"mimalloc",
6902+
"ndarray",
69026903
"nohash-hasher",
69036904
"once_cell",
69046905
"ordered-float",
@@ -6918,6 +6919,7 @@ dependencies = [
69186919
"re_video",
69196920
"re_view",
69206921
"re_viewer_context",
6922+
"re_viewport",
69216923
"re_viewport_blueprint",
69226924
"serde",
69236925
"smallvec",
@@ -7102,7 +7104,6 @@ dependencies = [
71027104
"egui_kittest",
71037105
"egui_tiles",
71047106
"emath",
7105-
"env_logger",
71067107
"glam",
71077108
"half",
71087109
"home",

crates/store/re_protos/proto/rerun/v0/remote_store.proto

+3-4
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ service StorageNode {
3030
rpc RegisterRecording(RegisterRecordingRequest) returns (DataframePart) {}
3131

3232
rpc UnregisterRecording(UnregisterRecordingRequest) returns (UnregisterRecordingResponse) {}
33-
rpc UnregisterAllRecordings(UnregisterAllRecordingsRequest) returns (UnregisterAllRecordingsResponse) {}
33+
rpc UnregisterAllRecordings(UnregisterAllRecordingsRequest)
34+
returns (UnregisterAllRecordingsResponse) {}
3435
}
3536

3637
// ---------------- Common response message ------------------
@@ -83,7 +84,7 @@ message IndexProperties {
8384

8485
message InvertedIndex {
8586
bool store_position = 1;
86-
string base_tokenizer = 2;
87+
string base_tokenizer = 2;
8788
// TODO(zehiko) add other properties as needed
8889
}
8990

@@ -108,7 +109,6 @@ message CreateIndexResponse {
108109
uint64 indexed_rows = 1;
109110
}
110111

111-
112112
// ---------------- SearchIndex ------------------
113113

114114
message SearchIndexRequest {
@@ -188,7 +188,6 @@ message UnregisterRecordingResponse {}
188188
message UnregisterAllRecordingsRequest {}
189189
message UnregisterAllRecordingsResponse {}
190190

191-
192191
// ---------------- UpdateCatalog -----------------
193192

194193
message UpdateCatalogRequest {

crates/top/re_sdk/src/log_sink.rs

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ pub trait LogSink: Send + Sync + 'static {
3131

3232
/// Blocks until all pending data in the sink's send buffers has been fully flushed.
3333
///
34+
/// If applicable, this should flush all data to any underlying OS-managed file descriptors.
3435
/// See also [`LogSink::drop_if_disconnected`].
3536
fn flush_blocking(&self);
3637

crates/top/re_sdk/src/recording_stream.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -696,9 +696,9 @@ impl RecordingStreamBuilder {
696696
/// thread originally sent them in, from its point of view.
697697
/// - There isn't any well defined global order across multiple threads.
698698
///
699-
/// This means that e.g. flushing the pipeline ([`Self::flush_blocking`]) guarantees that all
700-
/// previous data sent by the calling thread has been recorded; no more, no less.
701-
/// (e.g. it does not mean that all file caches are flushed)
699+
/// This means that e.g. flushing the pipeline ([`Self::flush_blocking`]) guarantees that all previous data sent by the calling thread
700+
/// has been recorded and (if applicable) flushed to the underlying OS-managed file descriptor,
701+
/// but other threads may still have data in flight.
702702
///
703703
/// ## Shutdown
704704
///

crates/utils/re_log/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ pub fn default_log_filter() -> String {
9595
if cfg!(debug_assertions) {
9696
"debug".to_owned()
9797
} else {
98-
"info".to_owned()
98+
"warn".to_owned()
9999
}
100100
});
101101

crates/viewer/re_blueprint_tree/src/blueprint_tree.rs

+8-7
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ impl BlueprintTree {
9999
.menu_button(&re_ui::icons::MORE, |ui| {
100100
add_new_view_or_container_menu_button(ctx, viewport_blueprint, ui);
101101
set_blueprint_to_default_menu_buttons(ctx, ui);
102-
set_blueprint_to_auto_menu_button(ctx, viewport_blueprint, ui);
102+
set_blueprint_to_auto_menu_button(ctx, ui);
103103
}),
104104
);
105105
});
@@ -1202,12 +1202,13 @@ fn set_blueprint_to_default_menu_buttons(ctx: &ViewerContext<'_>, ui: &mut egui:
12021202
}
12031203
}
12041204

1205-
fn set_blueprint_to_auto_menu_button(
1206-
ctx: &ViewerContext<'_>,
1207-
viewport: &ViewportBlueprint,
1208-
ui: &mut egui::Ui,
1209-
) {
1210-
let enabled = !viewport.auto_layout() || !viewport.auto_views();
1205+
fn set_blueprint_to_auto_menu_button(ctx: &ViewerContext<'_>, ui: &mut egui::Ui) {
1206+
// Figuring out when resetting to heuristic blueprint is not changing anything is actually quite hard.
1207+
// There's a wide variety of things to consider that aren't easily caught:
1208+
// * does running view-generation/layout-generation change anything?
1209+
// * these heuristics run incrementally, does rerunning them in bulk change anything?
1210+
// * any changes in overrides/defaults/view-property means that a reset would change something
1211+
let enabled = true;
12111212

12121213
if ui
12131214
.add_enabled(

crates/viewer/re_time_panel/Cargo.toml

+5-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@ all-features = true
2020

2121
[features]
2222
default = []
23-
testing = ["re_viewer_context/testing", "re_viewport_blueprint/testing"]
23+
testing = [
24+
"re_viewer_context/testing",
25+
"re_viewport_blueprint/testing",
26+
"smallvec/serde",
27+
]
2428

2529
[dependencies]
2630
re_chunk_store.workspace = true

crates/viewer/re_view_spatial/Cargo.toml

+5
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,13 @@ web-time.workspace = true
6464

6565

6666
[dev-dependencies]
67+
re_viewer_context = { workspace = true, features = ["testing"] }
68+
re_viewport.workspace = true
69+
re_viewport_blueprint = { workspace = true, features = ["testing"] }
70+
6771
criterion.workspace = true
6872
mimalloc.workspace = true
73+
ndarray.workspace = true
6974

7075
[lib]
7176
bench = false

0 commit comments

Comments
 (0)