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: show crate name beside smaller logo #115948

Merged
merged 9 commits into from
Oct 11, 2023

Commits on Oct 9, 2023

  1. rustdoc: show crate name beside small logo

    This commit changes the layout to something a bit less "look at my logo!!!111"
    gigantic, and makes it clearer where clicking the logo will actually take you.
    It also means the crate name is persistently at the top of the sidebar, even
    when in a sub-item page, and clicking that name takes you back to the root.
    
    |         | Short crate name | Long crate name |
    |---------|------------------|-----------------|
    | Root    | ![short-root]    | ![long-root]
    | Subpage | ![short-subpage] | ![long-subpage]
    
    [short-root]: https://github.com/rust-lang/rust/assets/1593513/fe2ce102-d4b8-44e6-9f7b-68636a907f56
    [short-subpage]: https://github.com/rust-lang/rust/assets/1593513/29501663-56c0-4151-b7de-d2637e167125
    [long-root]: https://github.com/rust-lang/rust/assets/1593513/f6a385c0-b4c5-4a9c-954b-21b38de4192f
    [long-subpage]: https://github.com/rust-lang/rust/assets/1593513/97ec47b4-61bf-4ebe-b461-0d2187b8c6ca
    
    https://notriddle.com/rustdoc-html-demo-4/logo-lockup/image/index.html
    
    https://notriddle.com/rustdoc-html-demo-4/logo-lockup/crossbeam_channel/index.html
    
    https://notriddle.com/rustdoc-html-demo-4/logo-lockup/adler/struct.Adler32.html
    
    https://notriddle.com/rustdoc-html-demo-4/logo-lockup/crossbeam_channel/struct.Sender.html
    
    This improves visual information density (the construct with the logo and
    crate name is *shorter* than the logo on its own, because it's not
    square) and navigation clarity (we can now see what clicking the Rust logo
    does, specifically).
    
    Compare this with the layout at [Phoenix's Hexdocs] (which is what this
    proposal is closely based on), the old proposal on [Internals Discourse]
    (which always says "Rust standard library" in the sidebar, but doesn't do the
    side-by-side layout).
    
    [Phoenix's Hexdocs]: https://hexdocs.pm/phoenix/1.7.7/overview.html
    [Internals Discourse]: https://internals.rust-lang.org/t/poc-of-a-new-design-for-the-generated-rustdoc/11018
    
    In newer versions of rustdoc, the crate name and version are always shown in
    the sidebar, even in subpages. Clicking the crate name does the same thing
    clicking the logo always did: return you to the crate root.
    
    While this actually takes up less screen real estate than the old layout on
    desktop, it takes up more HTML. It's also a bit more visually complex.
    
    I could do what the Internals POC did and keep the vertically stacked layout
    all the time, instead of doing a horizontal stack where possible. It would
    take up more screen real estate, though.
    
    This design is lifted almost verbatim from Hexdocs. It seems to work for them.
    [`opentelemetry_process_propagator`], for example, has a long application name.
    
    [`opentelemetry_process_propagator`]: https://hexdocs.pm/opentelemetry_process_propagator/OpentelemetryProcessPropagator.html
    
    Has anyone written the rationale on why the Rust logo shows up on projects that
    aren't the standard library? If we turned it off on non-standard crates by
    default, it would line wrap crate names a lot less often.
    
    Or maybe we should encourage crate authors to include their own logo more
    often? It certainly helps give people a better sense of "place."
    
    I'm not sure of anything that directly follows up this one. Plenty of other
    changes could be made to improve the layout, like
    
    * coming up with a less cluttered way to do disclosure (there's a lot of `[-]`
      on the page)
    * doing a better job of separating lateral navigation (vec::Vec links to
      vec::IntoIter) and the table of contents (vec::Vec links to vec::Vec::new)
    * giving readers more control of how much rustdoc hows them, and giving doc
      authors more control of how much it generates
    * better search that reduces the need to browse
    
    But those are mostly orthogonal, not future possibilities unlocked by this change.
    notriddle committed Oct 9, 2023
    Configuration menu
    Copy the full SHA
    28ee5da View commit details
    Browse the repository at this point in the history
  2. compiletest: add a way to specify params with spaces

    This use single quotes, because those aren't used in params,
    while double quotes are and would be tougher to parse.
    notriddle committed Oct 9, 2023
    Configuration menu
    Copy the full SHA
    957c5db View commit details
    Browse the repository at this point in the history
  3. rustdoc: clean up the layout for annotated version numbers

    This should result in a layout for the actual standard library,
    when built on CI, that looks like this:
    
        _____
       /     \ std
       |  R  | 1.74.0-nightly
       \_____/
    
       (203c57d 2023-09-17)
    
    Having the whole version as one string caused it to flex wrap,
    because the sidebar isn't wide enough to fit the whole thing.
    notriddle committed Oct 9, 2023
    Configuration menu
    Copy the full SHA
    6d6fa79 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    c6e6ecb View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    7c10c6f View commit details
    Browse the repository at this point in the history
  6. rustdoc: align crate name with search bar

    Based on PR feedback.
    notriddle committed Oct 9, 2023
    Configuration menu
    Copy the full SHA
    b0d76a7 View commit details
    Browse the repository at this point in the history
  7. rustdoc: clean up the In [name] up-pointer

    This commit makes three changes for consistency and readability:
    
      - It shows the sibling navigation on module pages. It's weird
        that it didn't work before, and is inconsistent with everything
        else (even Crates have sibling navigation with other Crates).
      - It hides the "In [parent]" header if it's the same as the
        current crate, and if there's no other header between them.
        We need to keep it on modules and types, since they have
        their own header and data between them, and we don't want
        to show siblings under a header implying that they're children.
      - It adds a margin to deal with the headers butting directly into
        the branding lockup.
    notriddle committed Oct 9, 2023
    Configuration menu
    Copy the full SHA
    47c4632 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    7bb2c96 View commit details
    Browse the repository at this point in the history
  9. Clean up subversion layout

    notriddle committed Oct 9, 2023
    Configuration menu
    Copy the full SHA
    8222335 View commit details
    Browse the repository at this point in the history