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

Show the welcome screen when closing recordings even with --skip-welcome-screen #3018

Closed
abey79 opened this issue Aug 17, 2023 · 0 comments · Fixed by #3035
Closed

Show the welcome screen when closing recordings even with --skip-welcome-screen #3018

abey79 opened this issue Aug 17, 2023 · 0 comments · Fixed by #3035
Labels
ui concerns graphical user interface

Comments

@abey79
Copy link
Contributor

abey79 commented Aug 17, 2023

#2982 introduced an heuristic to decide whether or not the new Welcome Screen should be displayed, manly based on the type or Receiver. The TCP case is ambiguous, so a --skip-welcome-screen was added for use by the Python SDK. Unfortunately, this means that the following workflow is broken:

  • Run python script with rr.init(spawn=True)
  • As intended, the loading UI is (possibly) shortly displayed instead of the Welcome Screen (which would be distracting). That's thanks to --skip-welcome-screen.
  • Data is displayed.
  • User closes all recordings.
  • The Welcome Screen should be displayed, but the loading UI is shown instead, which is bad.

As discussed at today's stand-up, this workflow must somehow be detected and the welcome screen shown despite --skip-welcome-screen.

@abey79 abey79 added the ui concerns graphical user interface label Aug 17, 2023
abey79 added a commit that referenced this issue Aug 17, 2023
### 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 <emil.ernerfeldt@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ui concerns graphical user interface
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant