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

rustdoc: redesign toolbar and disclosure widgets #129545

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

notriddle
Copy link
Contributor

@notriddle notriddle commented Aug 25, 2024

Fixes #77899
Fixes #90310

Preview

before after
image image
image image
image image
image image
image image
N/A image
image image
image image

https://notriddle.com/rustdoc-html-demo-12/toolbar-v2/std/index.html

Description

This adds labels to the icons and moves them away from the search box.

These changes are made together, because they work together, but are based on several complaints:

The toggle-all and toggle-individual buttons both need done at once, since we want them to look like they go together. This changes them from both being [+/-] to both being arrows.

CC #113074 (comment) and @jsha regarding the use of triangles for disclosure, which is what everyone wanted, but was pending a good toggle-all button. This PR adds a toggle-all button that should work.

Settings and Help are also migrated, so that the whole group can benefit from being described using actual words.

The breadcrumbs also get redesigned, so that they use less space, by shrinking the parent module path parts. This is done at the same time as the toolbar redesign because it's, effectively, moving space from the toolbar to the breadcrumbs.
This is aimed at avoiding any line wrapping at desktop sizes.

Prior art

This style of toolbar, with explicit labels on the buttons, used to be more popular. It's not very common in web browsers nowadays, and for truly universal icons like ⬅️ I can understand why, but words are great when icons fail.

image

@notriddle notriddle added the T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. label Aug 25, 2024
@rustbot
Copy link
Collaborator

rustbot commented Aug 25, 2024

r? @GuillaumeGomez

rustbot has assigned @GuillaumeGomez.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added A-testsuite Area: The testsuite used to check the correctness of rustc S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) labels Aug 25, 2024
@rust-log-analyzer

This comment has been minimized.

@bjorn3
Copy link
Member

bjorn3 commented Aug 25, 2024

These buttons are way too big on mobile IMO. Here is what it looks on a Galaxy S20 emulated by Firefox with the crate name replaced by a slightly larger one:

Screenshot

image

@notriddle
Copy link
Contributor Author

notriddle commented Aug 25, 2024

@bjorn3 Does this look more reasonable?

361238057-3e6f324a-8878-4102-82c0-ce9f58c7ba19

@rust-log-analyzer

This comment has been minimized.

@bjorn3
Copy link
Member

bjorn3 commented Aug 25, 2024

Much better! Thanks!

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@notriddle notriddle added the S-waiting-on-team Status: Awaiting decision from the relevant subteam (see the T-<team> label). label Aug 26, 2024
@rust-log-analyzer

This comment has been minimized.

@GuillaumeGomez
Copy link
Member

Just to say: I LOVE IT! It looks so good. Well done!

@notriddle notriddle force-pushed the notriddle/toolbar-v2 branch 2 times, most recently from 579c823 to 9ca4403 Compare August 27, 2024 03:09
@rustbot rustbot added the A-run-make Area: port run-make Makefiles to rmake.rs label Aug 27, 2024
@notriddle notriddle marked this pull request as ready for review August 27, 2024 03:12
@rustbot
Copy link
Collaborator

rustbot commented Aug 27, 2024

Some changes occurred in HTML/CSS/JS.

cc @GuillaumeGomez, @jsha

Some changes occurred in src/tools/compiletest

cc @jieyouxu

This PR modifies tests/run-make/. If this PR is trying to port a Makefile
run-make test to use rmake.rs, please update the
run-make port tracking issue
so we can track our progress. You can either modify the tracking issue
directly, or you can comment on the tracking issue and link this PR.

cc @jieyouxu

Some changes occurred in GUI tests.

cc @GuillaumeGomez

@rust-log-analyzer

This comment has been minimized.

@GuillaumeGomez
Copy link
Member

So about the help button: it has important information like a link to the rustdoc book or the version of rustdoc used to generate this doc. So displaying it only on the search results page is not an improvement imo.

@notriddle
Copy link
Contributor Author

It can’t be that important. It was already hidden on mobile.

@GuillaumeGomez
Copy link
Member

GuillaumeGomez commented Aug 27, 2024

Maybe the problem here is that this menu contains too many different kind of information:

  1. Shortcuts
  2. Search tricks
  3. Link to rustdoc book
  4. Version used to generate this doc

2 can be hidden away on mobile all the time, 3 and 4 seems like we're not providing all information we should. 1 is only useful on desktop, but then it'd be better to display it all the time.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@lolbinarycat
Copy link

big fan of labeled icons that collapse to just icons on mobile. docs.rs uses the same approach for its menubar, so there's some nice parity with that too.

@lolbinarycat
Copy link

one slight issue: the "copy path" button is probably a bit more confusing now that the module and name have been split up.

@camelid
Copy link
Member

camelid commented Sep 21, 2024

This looks amazing, thanks for the great work @notriddle. I only have one comment, and I don't feel strongly about it: What if instead of disabling "Summary" when in search view (etc.), we just delete it? We would also have to move it to be the leftmost icon, but I think that might make more sense anyway. It's a little strange to have content-related buttons after settings.

@camelid
Copy link
Member

camelid commented Sep 21, 2024

I checked my box since, like I said, I don't feel strongly, and it can always be tweaked later.

@lolbinarycat
Copy link

strictly speaking, the "collapse all" view would be more accurately described as an outline, not a summary, although it doesn't matter that much as long as it is clearly a button, since it's function will become apparent once it is clicked (just looking at the screenshots, it wasn't immediately obvious to me what it does)

@notriddle
Copy link
Contributor Author

We would also have to move it to be the leftmost icon, but I think that might make more sense anyway.

I intentionally wanted to put the Settings button near the middle of the popover, so that switching themes is easier, while putting the Summary button near the scrollbar.

bitmap

@GuillaumeGomez
Copy link
Member

Seems like we got the frontend team to agree with the changes. Thanks everyone! Time to approve it. Can't wait for this change to be available. :D

@bors r+ rollup

@bors
Copy link
Contributor

bors commented Sep 21, 2024

📌 Commit 1be4e7f has been approved by GuillaumeGomez

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. S-waiting-on-team Status: Awaiting decision from the relevant subteam (see the T-<team> label). labels Sep 21, 2024
workingjubilee added a commit to workingjubilee/rustc that referenced this pull request Sep 22, 2024
…GuillaumeGomez

rustdoc: redesign toolbar and disclosure widgets

Fixes rust-lang#77899
Fixes rust-lang#90310

## Preview

| before | after
| ------ | -----
| ![image](https://github.com/user-attachments/assets/ebeec185-3a72-481d-921e-a9a885f348d9) | ![image](https://github.com/user-attachments/assets/08735a65-99d1-4523-ab77-ddb164c0a5db)
| ![image](https://github.com/user-attachments/assets/ae8e0f24-49cb-445d-b9bd-cec9c57b94e7) | ![image](https://github.com/user-attachments/assets/ba484f94-b031-41fc-b8a8-6cd81be8fb6b)
| ![image](https://github.com/user-attachments/assets/8c2cc041-a138-4950-a12e-3d529c8a5339) | ![image](https://github.com/user-attachments/assets/e7f010bd-19e2-4711-85bf-3fd00c3e5647)
| ![image](https://github.com/user-attachments/assets/e2b63785-971c-489e-b069-eb85f6a30620) | ![image](https://github.com/user-attachments/assets/b65eea16-d6a3-4aa3-8a27-6ded74009010)
| ![image](https://github.com/user-attachments/assets/1c7b0901-a61a-4325-9d01-9d8b14b476aa) | ![image](https://github.com/user-attachments/assets/d4a485db-d9f1-4a62-94bc-a3d125ea6dc1)
| N/A | ![image](https://github.com/user-attachments/assets/7add0a2a-7fd7-483d-87ee-51ee45a2fe5d)
| ![image](https://github.com/user-attachments/assets/334f50bc-9f8d-42d9-a7df-95058f7cdfd5) | ![image](https://github.com/user-attachments/assets/451fcc22-b034-453c-ae4b-b948fd6bd779)
| ![image](https://github.com/user-attachments/assets/132f720c-802a-466d-bd55-c7a4750acdc3) | ![image](https://github.com/user-attachments/assets/177b7921-06c5-467d-87d3-9cdf88c4e50b)

https://notriddle.com/rustdoc-html-demo-12/toolbar-v2/std/index.html

## Description

This adds labels to the icons and moves them away from the search box.

These changes are made together, because they work together, but are based on several complaints:

* The [+/-] thing are a Reddit-ism. They don't look like buttons, but look like syntax <https://rust-lang.zulipchat.com/#narrow/stream/266220-t-rustdoc/topic/More.20visual.20difference.20for.20the.20.2B.2F-.20.20Icons>, <rust-lang#59851> (some of these are laundry lists with more suggestions, but they all mention [+/-] looking wrong)

* The settings, help, and summary buttons are also too hard to recognize <https://lwn.net/Articles/987070/>, <rust-lang#90310>, <rust-lang#14475 (comment)>, <https://internals.rust-lang.org/t/improve-rustdoc-design/12758> ("Not all functionality is self-explanatory, for example the [+] button in the top right corner, the theme picker or the settings button.")

The toggle-all and toggle-individual buttons both need done at once, since we want them to look like they go together. This changes them from both being [+/-] to both being arrows.

CC <rust-lang#113074 (comment)> and `@jsha` regarding the use of triangles for disclosure, which is what everyone wanted, but was pending a good toggle-all button. This PR adds a toggle-all button that should work.

Settings and Help are also migrated, so that the whole group can benefit from being described using actual words.

The breadcrumbs also get redesigned, so that they use less space, by shrinking the parent module path parts. This is done at the same time as the toolbar redesign because it's, effectively, moving space from the toolbar to the breadcrumbs.
This is aimed at avoiding any line wrapping at desktop sizes.

## Prior art

This style of toolbar, with explicit labels on the buttons, used to be more popular. It's not very common in web browsers nowadays, and for truly universal icons like ⬅️ I can understand why, but words are great when icons fail.

![image](https://github.com/user-attachments/assets/9a4a0498-232d-4d60-87b9-f601f4515254)
@rust-log-analyzer

This comment has been minimized.

@workingjubilee
Copy link
Member

@bors r-

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Sep 22, 2024
@notriddle
Copy link
Contributor Author

@bors r=GuillaumeGomez

@bors
Copy link
Contributor

bors commented Sep 22, 2024

📌 Commit 6260680 has been approved by GuillaumeGomez

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Sep 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-run-make Area: port run-make Makefiles to rmake.rs A-testsuite Area: The testsuite used to check the correctness of rustc S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.
Projects
Status: Done
10 participants