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

Redesign the Jenkins header #10245

Draft
wants to merge 119 commits into
base: master
Choose a base branch
from
Draft

Conversation

janfaracik
Copy link
Contributor

@janfaracik janfaracik commented Feb 6, 2025

Hey there 👋

This PR redesigns the Jenkins header, bringing it a modern look and new functionality. This was demoed in the latest UX Sig as well as at the 2025 Jenkins Contributor Summit. The goal of this redesign is to simplify the header, whilst also introducing new functionality as well.

image image

What's new?

  • New theme, draws less attention to itself vs content on the page
  • Breadcrumb bar has been merged with the header, providing roughly 40px in extra vertical real estate, when combined with the removed margin its close to 90px extra

View comparison

  • Top level actions now show in the header
    • For example, Manage Jenkins now appears in the header by default - making it accessible on every page
    • Plugins like Design Library and the infamous Beer plugin behave the same way
    • They can also feature badges - this is currently used to highlight administrative monitors on the Manage Jenkins action
    • These actions collapse into an overflow menu when there's not enough space for them
  • The user account action now shows the users avatar
  • Breadcrumbs now collapse rather than scroll if theres too many, you'll see an overflow menu when there are too many
  • ➡️ Breadcrumbs no longer feature menus - this is something that can be restored based on user feedback in this thread, let me know if you use them and find them valuable - I personally find them rather fiddly but that could just be me
  • For header developers - the header features spots to show additional information now, so for simpler changes you'll no longer need to replace the entire header
Additional screenshots image image image image image

I've got a branch for Customizable header plugin in the works - it's quite fun:

image image image

What's left to do?

  • Get thoughts on the changes - discuss away!
  • Get tests passing
  • Get ATH passing
  • Get PCT passing
  • Update Customizable Header Plugin to work with this

Testing done

  • Breadcrumbs work, root actions appear as expected
  • Sign in/sign out works
  • High contrast mode works
  • Breadcrumbs and actions collapse/appear on window resize
  • Works with the updated Customisable Header plugin

Proposed changelog entries

  • Redesign the Jenkins header

Developer changelog

  • Root actions can now display badges in the header, as well as a jumplist of actions by implementing jumplist.jelly

Proposed upgrade guidelines

N/A

Submitter checklist

Preview Give feedback

Desired reviewers

@jenkinsci/sig-ux

Before the changes are marked as ready-for-merge:

Maintainer checklist

Preview Give feedback

@janfaracik
Copy link
Contributor Author

@jenkinsci/sig-ux @daniel-beck @MarkEWaite

Hey. Few questions for those of you who use the model links in the breadcrumbs, what are your common interactions with them like?

What functions do you commonly use?

Do you ever use the children dropdown?
Screenshot 2025-02-15 at 14 43 29

How often do you access the 'Manage Jenkins' submenu?

@mawinter69
Copy link
Contributor

I never use the separator dropdowns (the menus behind the >)
I sporadically use the the Dashboard dropdown to go to Manage Jenkins or select something from its submenu.
For me it would be no big loss if the dropdowns are no longer available.

I assume the audience that will look in this PR here is not representative enough to get a real guess how much this is used.

Potentially the dropdowns can be made a user specific setting with default to be disabled.

@timja
Copy link
Member

timja commented Feb 16, 2025

Hey. Few questions for those of you who use the model links in the breadcrumbs, what are your common interactions with them like?

Could you post the header design on community.jenkins.io and ask about it there? (Probably add a tracking issue to sig-ux with key points?

@daniel-beck
Copy link
Member

Would it be worth looking into making dropdown menu use a telemetry?

@github-actions github-actions bot added the unresolved-merge-conflict There is a merge conflict with the target branch. label Feb 18, 2025
Copy link
Contributor

Please take a moment and address the merge conflicts of your pull request. Thanks!

@github-actions github-actions bot removed the unresolved-merge-conflict There is a merge conflict with the target branch. label Feb 22, 2025
@janfaracik
Copy link
Contributor Author

janfaracik commented Feb 22, 2025

Would it be worth looking into making dropdown menu use a telemetry?

I think so - the more metrics the better.


Screen.Recording.2025-02-22.at.11.35.03.mov

I've updated the PR so that breadcrumbs behave in a similar fashion to the root actions, where on hover their context menu will appear. I'm not personally a fan of the menus but I think it's a nice middle ground, it doesn't have the fiddly chevron but at the same time the menu items are very usable. The hitboxes are a lot larger as a result and you don't the breadcrumbs shifting to accommodate either.

Let me know your thoughts.

@timja
Copy link
Member

timja commented Feb 22, 2025

it doesn't seem to be keyboard navigable? I wasn't able to open it with the keyboard anyway. Apart from that I think its a good compromise


Also design library side bar seems broken?

image

@janfaracik
Copy link
Contributor Author

it doesn't seem to be keyboard navigable?

I'll take a look 👍

Also design library side bar seems broken?

Yeah it is, just due to me using absolute positioning in it. I've got a branch to fix it up.

@@ -25,7 +25,4 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler">
<st:include page="/hudson/security/SecurityRealm/loginLink.jelly" />
<j:if test="${it.allowsSignup()}">
<a href="${rootURL}/signup">${%sign up}</a>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see that you removed the sign up but I seem not be able to find a substitution

Copy link
Member

@timja timja Feb 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its on the sign-in page:

image

Header looks like:
image

Then you can sign up on the sign in page.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for clarifying

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
major-rfe For changelog: Major enhancement. Will be highlighted on the top web-ui The PR includes WebUI changes which may need special expertise
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants