Merged
Conversation
Contributor
There was a problem hiding this comment.
Hi! Thanks for opening this pull request.
Because this is your first time contributing to this repository, make sure you've read our Contributor Guide and Code of Conduct.
Contributor
|
@lucasmerlin @jleibs @Wumpf Any feedback on this? |
emilk
approved these changes
Apr 22, 2026
Member
emilk
left a comment
There was a problem hiding this comment.
Ah good catch. Yeah, Cargo.lock should handle this without the =
Member
|
@rerun-bot reality-sync |
Contributor
|
Sync complete. Mirror PR in reality: https://github.com/rerun-io/reality/pull/1698 Triggered by @emilk |
nymph-ai
added a commit
to nymph-ai/rerun
that referenced
this pull request
Apr 23, 2026
… + re_audio + AudioView (#1) * Ensure unique `RowId`s when mapping a component ### Related * Closes RR-4450. ### What We need to ensure `RowId`s for a given component column are always unique. Source-Ref: 1fca59e1251df87ab6228b1b467c4b54f5165cf7 * Improve handling of NaN & Infinity values in time series view ### Related * Fixes RR-4360 * Fixes RR-4358 ### What Three distinct fixes for non-finite handling * visible y range determination filters out non-finite values, only becomes NaN/Inf if ALL values in range are. (this caused glitches in automatic scalar range) * if a line series point is now surrounded by non-finite values, it will be drawn as a single point instead of being ignored * intra pixel aggregation no longer aggregates non-finite values and instead passes them through Example image: these are lines for data that is mostly non-finite: <img width="693" height="502" alt="image" src="https://github.com/user-attachments/assets/75a5d8b0-716b-4651-a266-5704cafd57f3" /> ### Testing Aggregation got dedicated unit tests & proper documentation how they should all behave. NaN/inf "island" rendering got its own new test --------- Source-Ref: 4c909ab7a48c37f549b8df13faa009377e405d8f Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Andreas Reich <Wumpf@users.noreply.github.com> * Migrate more checks to `ghat` Migrate `rerun/` Rust/Python checks into the `.github/ghat/workflows/reusable_checks.ts`. Main goals are to reduce the amount of handwritten YAML and the number of jobs we have. Source-Ref: 8f22bf8e30c6b254ad275fbf6952f293aac38d0b * By default, fetch similar chunks 30 seconds of playtime forward ### Related - Closes RR-4235 - Closes RR-4319 ### What By default, instead of fetching all similar chunks, now fetch 30 seconds forward of similar chunks. This 30 seconds is 30 seconds of playtime. So on 1x speed on a timestamp timeline it is 30 seconds forward on the timeline. On a sequence timeline with 30 fps it is 900 steps forward. This is configurable by a slider when "similar" chunks has been selected. For previews this is 10 seconds forward. Source-Ref: cbbfe8f16be3419f127d482cd2990faadfe3325d * Add tracing to dataloader * Part of RR-4427 ~Very difficult to test because we don't actually have an example or benchmark of the dataloader yet.~ Review with whitespaces turned off ### Instructions Start Jaeger with: pixi run compose-dev open “http://localhost:16686/” Then run your training with: TELEMETRY_ENABLED=true OTEL_SDK_ENABLED=true uv run python train.py Source-Ref: b78f5457f37fa7cdd3461db6d4155308a5868c7f * Remember memory limit between viewer relaunches ### Related * Closes rerun-io#12727 ### What The memory budget/limit you enter in the settings panel is now persisted even when you relaunch the viewer. Also in the web viewer. `--memory-limit` is still there for convenience and backwards compatibility, and will change the stored value. --------- Source-Ref: 868a9672535ffaa5049b396b26be58a58599d55a Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Emil Ernerfeldt <emilk@users.noreply.github.com> * Add `SystemCommand::RemoveRedapServer` for more thorough cleanup ### Related * Closes RR-4437 * Follow-up rerun-io#1696 ### What We never cleaned up blueprints that belonged to server after removing them. This PR ensures that any blueprints that are associated with a server (including persisted ones) get cleaned up. For this we lift `Command::RemoveServer` to a `SystemCommand::RemoveRedapServer` so that we have access to the `StoreHub`. Source-Ref: 571641c8990835b6185d4a7bae4ca1eb23f7a0d4 * Removing all calls to `StoreBundle::entry` apart from `entity_db_entry` ### Related * Part of RR-4404. ### What First step, removing all calls to `StoreBundle::entry` apart from `StoreHub::entity_db_entry`. Also renames `StoreBundle::recording_store` to just `StoreBundle::stores` because the bundle most certainly includes blueprints as well. --------- Source-Ref: 3d5647a73287c97755add6893745f13579aa0987 Co-authored-by: Andreas Reich <andreas@rerun.io> * Adds experimental Status archetype ### Related Closes RR-4244 Closes RR-4371 ### What Part of the effort to log and visualize states. - Adds the Status archetype (rerun.archetypes.Status) for logging discrete state/status transitions over time - Adds the StatusView (experimental) that renders status transitions as horizontal colored lanes with a time axis - Adds the StatusVisualizer that queries Status archetypes and groups them into lanes per entity - New re_view_status crate with pan/zoom, time cursor dragging, timeline switching, and hover tooltips Gated behind enable_experimental_status_view startup option (Settings > Experimental > "Enable Status view") - Blueprint view definition (StatusView) for programmatic view creation - Example snippets in Rust, Python, and C++ (archetypes/status, views/status) - `status_example` Rust example app from @grtlr: * [x] @rerun-bot full-check --------- Source-Ref: dc0dcc3fc03f655e90bd7d03cb5c122bb467bd11 Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Add `apply_selector` methods to `Chunk` ### Related * Parallel work to RR-4442. * [x] Requires rerun-io#1694. ### What This introduces `apply_selector` on Rust and Python as a convenient way to modify component columns, while keeping the original chunk structure intact. rerun-io#1694 makes sure that there won't be collisions with existing chunks / rows, by generating new `RowId`s. Source-Ref: 5d54782916e8bba60a21bc676b415ebb8d64535a * Lazy RRD loading in OSS server ### Related * related to https://linear.app/rerun/project/py-chunk-chunk-centric-processing-pipeline-and-lenses-apis-in-python-1cf386cd9cd3 * closes https://linear.app/rerun/issue/RR-4383/make-oss-server-lazy-using-lazyrrdstore * closes https://linear.app/rerun/issue/RR-4458/make-chunkstoreextract-properties-report-all-chunks-it-needs ### What This PR makes the OSS server lazy: recordings with an RRD footer no longer need to be read fully into memory at registration. Chunks stay on disk and are fetched on demand. - **Lazy RRD loading in the OSS server.** RRDs with a footer register in time proportional to the footer, not the file. Chunk data is materialized only when a client actually requests it. Footerless RRDs still work via an eager fallback. - **Unified backend abstraction.** Dataset, query, and registration logic now operates over a single "resolved store" type that covers both the in-memory (eager) and file-backed (lazy) cases, so the rest of the server is agnostic to which backend is underneath. - **Manifest responses without materialization.** `GetChunks` and `GetRrdManifest` synthesize their responses directly from the cached footer manifest for lazy layers, skipping the chunk-decoding pass that was previously required. - **Per-layer manifests, merged at the segment level.** Each layer emits its own manifest — lazy clones the cached footer, eager rebuilds from chunks — and a schema-polymorphic merge kernel combines them for multi-layer segments. The same kernel now also backs the commercial side. - **Batched lazy loads.** Requests that reference many chunks inside the same lazy file are served in a single pass, amortizing the per-chunk lock and IPC-decode overhead. - **On-demand property extraction.** Layer properties are fetched incrementally on lazy stores — only the chunks actually needed to compute properties are pulled in. - **Size semantics aligned with commercial.** Lazy layers report the same on-disk IPC byte length the commercial implementation exposes. - **Shared manifest-metadata helpers.** Index-column conventions (`is_index`, start/end/len markers, per-component temporal, etc.) now have a single canonical implementation reused by both OSS and commercial. - **Equivalence tests.** Lazy-backed and eager-backed layers are checked end-to-end to produce manifests that agree on every client-observable axis: chunk IDs, entity paths, staticness, row counts, schema shape, and decodable chunk keys. ### Testing Yes ### Compatibility No user facing API change. Source-Ref: 887dfa7b4121071c37a7235dc9df7534068ceb03 * Clean up errors in `re_lenses_core` ### Related * [x] Requires rerun-io#1701 ### What The error variants in `re_lenses_core` have grown organically. This PR cleans them up a bit. Source-Ref: 207c8a3e817426af4dab28638ceae23771176305 * Unpin wasm-bindgen (rerun-io#12737) The comment specifically specifies to never pin this dependency, but we do anyways. This prevents us from upgrading. [> Do not make this an `=` dependency, because that may break Rust users’ builds when a newer ](https://github.com/rerun-io/rerun/blob/main/Cargo.toml#L428) This was done correctly prior to rerun-io@af1f737 which pinned it without clear justification. Source-Ref: 70423f3a07754aa84dab6b6b9a004c82425b653f * Improve tracing on the Python SDK's Rust side ## What * Cherry-picked from commits I made to https://github.com/rerun-io/reality/pull/1693 ## Summary - Fix tracing ancestry in DataFusion table providers (`SegmentTableProvider`, `DatasetManifestProvider`, `SearchResultsTableProvider`, `TableEntryTableProvider`): capture `Span::current()` at construction so spans created on DataFusion-spawned worker tasks re-parent under the caller's span instead of surfacing as root traces. - Add `read_trace_context_from_python` to methods that were missing it in `PyDatasetViewInternal` (`segment_ids`, `filter_segments`, `filter_contents`) and minor additions in `connection_*`, `dataset_entry`, `trace_context` helpers. - Prefix all `read_trace_context_from_python` span names with the Python class name (e.g. `segment_ids` → `DatasetView.segment_ids`, `schema` → `DatasetEntry.schema`) so Jaeger traces are unambiguous across `DatasetView` / `DatasetEntry` / `CatalogClient` / `TableEntry` / `RegistrationHandle`. All changes are Rust-only (`crates/store/re_datafusion/**`, `crates/store/re_redap_client/**`, `rerun_py/src/catalog/**`). No API or behavior change when `perf_telemetry` is off. Source-Ref: a147a58986a1c017b2d12c850bfe6caa2eb699ca * Add native audio support: AudioStream / AssetAudio / AudioSampleReference archetypes, re_audio runtime, AudioView - Three new archetypes (AudioStream, AssetAudio, AudioSampleReference) plus audio components (codec, sample_rate, channel_count/layout, chunk, duration_samples, seekable, discontinuity, stream_id, sequence_number, priming_delay, timestamp) — codec-agnostic schema, Opus-selective first. - New re_audio crate: decoder (libopus native / WebCodecs wasm), media clock, resampler, segment indexing, AudioStreamPlayer + ring buffer, pluggable AudioSink trait with cpal (native, dedicated thread) and WebAudio (wasm, scheduled AudioBufferSourceNodes) implementations. - New re_view_audio crate: AudioView + AudioStreamVisualizerSystem, per-view playback state driving the sink each frame, mute transport, diagnostic surface for sequence gaps / out-of-order / discontinuities. - Asset+stream caches in re_viewer_context for sharing decoded state across frames. - Python SDK, C++ bindings, generated docs, and reflection wired through codegen; synthetic Opus demo snippet; smoke test for the view registration + round-trip logging path. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Jochen Görtler <grtlr@users.noreply.github.com> Co-authored-by: Andreas Reich <andreas@rerun.io> Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Andreas Reich <Wumpf@users.noreply.github.com> Co-authored-by: Jan Procházka <pjanv42@gmail.com> Co-authored-by: Isse <git@isse.rs> Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com> Co-authored-by: Emil Ernerfeldt <emilk@users.noreply.github.com> Co-authored-by: Gábor Gyebnár <korteur@gmail.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Antoine Beyeler <49431240+abey79@users.noreply.github.com> Co-authored-by: Anass Al <dev@anassinator.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The comment specifically specifies to never pin this dependency, but we do anyways. This prevents us from upgrading.
> Do not make this an
=dependency, because that may break Rust users’ builds when a newerThis was done correctly prior to af1f737 which pinned it without clear justification.