You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The empty state of the viewer is currently a huge wasted opportunity.
This screen does convey that you can connect to it ("listening on port ...") and that nothing is broken ("Ready") but not much else. We could do a much better job of conveying what Rerun is and how to use it by showing what actions are available to take. This could e.g. be a grid of big buttons that might have helpful text and illustrations.
Possible actions
Open a recording
Shows that there are recordings that can be saved, and that the Rerun viewer is something that could view it
Should also indicate that you can drag and drop a recording file into the window
### What
This adds a MVP Welcome Screen that shows up instead of the current
"Loading" screen in certain circumstances.
In general terms:
- The Welcome Screen is drawn in the Viewport's place, ie. with the
panels visible.
- The Welcome Screen is never displayed when a recording is available.
- The current implementation of the Welcome Screen is very basic—mostly
links to webpages.
- The current "loading screen" still exists and is "sometimes"
displayed.
The tricky thing is when to show the Welcome Screen vs. the legacy
loading screen. This PR includes an heuristic (implemented in
`App::handle_default_blueprint()`). The main determinant is the nature
of the receiver (file, tcp, web socket, etc.) which we use as a proxy
for the workflow in which the viewer is being used. The TCP receiver is
a bit tricky, as it's used by both the Python SDK (we don't want the
Welcome Screen to distractingly flash at spawn, before data arrives) and
when running manually (`$ rerun`). To address this, this PR introduces a
new `--skip-welcome-screen` CLI option, used by the Python SDK. This
situation is still not entirely perfect though: #3018.
Implementation details:
- Technically, the Welcome Screen is triggered when the app ID is set to
`StoreHub::welcome_screen_app_id()`. A corresponding blank blueprint is
created at startup (by `StoreHub`) to make the UI happy.
`App::handle_default_blueprint()` basically sets that app ID to trigger
the Welcome Screen.
- Likewise, an empty recording is _always_ set as active whenever the
app ID is set but no recording is available. This empty recording isn't
in the list of available recordings
(`ViewerContext::alternate_recordings`). This make the UI happy.
- The status string and source originally displayed in the legacy
loading screen are _also_ displayed on the Welcome Screen in some
circumstances (i.e for "infinite" data sources, tcp, ws, etc.)
Expect these follow-up PRs:
- display the status string in the menu bar instead (as per Mårten
designs)
- address #2229
- address #3018
- fix UI of streams with empty recording
- add `external_link` icon wherever we have external links
Fixes#2513
<img width="1456" alt="image"
src="https://github.com/rerun-io/rerun/assets/49431240/d35a3f02-571d-4fc0-ae7f-67ce8b9d416d">
### 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/2982) (if
applicable)
- [PR Build Summary](https://build.rerun.io/pr/2982)
- [Docs
preview](https://rerun.io/preview/pr%3Aantoine%2Fwelcome-screen-v0/docs)
- [Examples
preview](https://rerun.io/preview/pr%3Aantoine%2Fwelcome-screen-v0/examples)
---------
Co-authored-by: Emil Ernerfeldt <[email protected]>
The empty state of the viewer is currently a huge wasted opportunity.
This screen does convey that you can connect to it ("listening on port ...") and that nothing is broken ("Ready") but not much else. We could do a much better job of conveying what Rerun is and how to use it by showing what actions are available to take. This could e.g. be a grid of big buttons that might have helpful text and illustrations.
Possible actions
The text was updated successfully, but these errors were encountered: