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 121 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

@scherler
Copy link
Contributor

image
Regarding the '2nd' dropdown, can we move it within the only one we have, like on the bottom or top? The base problem is that the menu can be huge depending on the plugins you have installed and are contributing to the sidebar.

commit 847981e
Merge: 0ea6dcf 23f2b9e
Author: Kris Stern <[email protected]>
Date:   Wed Feb 26 09:16:52 2025 +0800

    Merge branch 'master' into add-groups-to-command-palette

commit 0ea6dcf
Merge: c0777db 68425e2
Author: Kris Stern <[email protected]>
Date:   Wed Feb 26 01:06:33 2025 +0800

    Merge branch 'master' into add-groups-to-command-palette

commit c0777db
Merge: 1638afe c37293c
Author: Jan Faracik <[email protected]>
Date:   Mon Feb 24 13:40:35 2025 +0000

    Merge branch 'master' into add-groups-to-command-palette

commit 1638afe
Merge: c987a9e b97764d
Author: Jan Faracik <[email protected]>
Date:   Fri Feb 21 11:49:03 2025 +0000

    Merge branch 'master' into add-groups-to-command-palette

commit c987a9e
Merge: f909eec 16748f4
Author: Jan Faracik <[email protected]>
Date:   Thu Feb 20 08:17:19 2025 +0000

    Merge branch 'master' into add-groups-to-command-palette

commit f909eec
Merge: 85eedb7 217b0f5
Author: Jan Faracik <[email protected]>
Date:   Wed Feb 19 16:12:45 2025 +0000

    Merge branch 'master' into add-groups-to-command-palette

commit 85eedb7
Author: Jan Faracik <[email protected]>
Date:   Wed Feb 19 16:11:24 2025 +0000

    Move to Item

commit 8f4f117
Author: Jan Faracik <[email protected]>
Date:   Wed Feb 19 15:43:50 2025 +0000

    Tighten up animations + improve contrast

commit d7b7d63
Merge: 8750f7c 4fa6127
Author: Jan Faracik <[email protected]>
Date:   Wed Feb 19 08:50:45 2025 +0000

    Merge branch 'master' into add-groups-to-command-palette

commit 8750f7c
Merge: 7b52734 a05c33f
Author: Jan Faracik <[email protected]>
Date:   Tue Feb 18 21:42:31 2025 +0000

    Merge branch 'master' into add-groups-to-command-palette

commit 7b52734
Merge: e2c133d 3505fb3
Author: Jan Faracik <[email protected]>
Date:   Mon Feb 17 20:59:02 2025 +0000

    Merge branch 'master' into add-groups-to-command-palette

commit e2c133d
Author: Jan Faracik <[email protected]>
Date:   Sun Feb 16 18:23:14 2025 +0000

    Update require-changelog-label.yml

commit d32a61c
Author: Jan Faracik <[email protected]>
Date:   Sun Feb 16 17:11:18 2025 +0000

    Update _theme.scss

commit 42ecfca
Author: Jan Faracik <[email protected]>
Date:   Sun Feb 16 17:10:48 2025 +0000

    Rename to Items

commit cc37791
Merge: 0f1cb21 2b9d4d6
Author: Jan Faracik <[email protected]>
Date:   Sun Feb 16 17:10:25 2025 +0000

    Merge branch 'master' into add-groups-to-command-palette

commit 0f1cb21
Merge: 04dc6cd 9474c89
Author: Jan Faracik <[email protected]>
Date:   Wed Feb 12 20:42:01 2025 +0000

    Merge branch 'master' into add-groups-to-command-palette

commit 04dc6cd
Author: Jan Faracik <[email protected]>
Date:   Tue Feb 11 17:06:31 2025 +0000

    Reduce spacing a touch, fix icon spacing

commit 0ab3665
Merge: 7c9e172 848ac9b
Author: Jan Faracik <[email protected]>
Date:   Tue Feb 11 14:44:03 2025 +0000

    Merge branch 'master' into add-groups-to-command-palette

commit 7c9e172
Author: Jan Faracik <[email protected]>
Date:   Tue Feb 11 11:23:27 2025 +0000

    Update Messages.properties

commit ec6a5e5
Author: Jan Faracik <[email protected]>
Date:   Tue Feb 11 08:51:16 2025 +0000

    Fix test

commit 14a6488
Author: Jan Faracik <[email protected]>
Date:   Mon Feb 10 16:44:39 2025 +0000

    Tidy up

commit 46a9e56
Author: Jan Faracik <[email protected]>
Date:   Mon Feb 10 16:28:15 2025 +0000

    Tidy

commit d7270b1
Author: Jan Faracik <[email protected]>
Date:   Mon Feb 10 16:06:04 2025 +0000

    Tidy

commit b2da3f8
Author: Jan Faracik <[email protected]>
Date:   Mon Feb 10 16:03:37 2025 +0000

    Tidy up

commit b746fba
Author: Jan Faracik <[email protected]>
Date:   Mon Feb 10 15:53:53 2025 +0000

    Move to extensionpoint

commit 7827304
Merge: cac127d d03a2e1
Author: Jan Faracik <[email protected]>
Date:   Mon Feb 10 15:45:28 2025 +0000

    Merge branch 'master' into add-groups-to-command-palette

commit cac127d
Merge: add75bf e3e3c45
Author: Tim Jacomb <[email protected]>
Date:   Mon Jan 13 11:03:10 2025 +0000

    Merge branch 'jenkinsci:master' into add-groups-to-command-palette

commit add75bf
Author: Jan Faracik <[email protected]>
Date:   Sat Jan 11 19:02:52 2025 +0000

    Update _command-palette.scss

commit eb4073f
Author: Jan Faracik <[email protected]>
Date:   Sat Jan 11 18:59:37 2025 +0000

    Tidy up

commit 323e48f
Author: Jan Faracik <[email protected]>
Date:   Sat Jan 11 18:47:34 2025 +0000

    Update Job.java

commit 3cbdfbc
Author: Jan Faracik <[email protected]>
Date:   Sat Jan 11 18:47:13 2025 +0000

    Update _command-palette.scss

commit 8fecf0d
Merge: 428e826 331c768
Author: Jan Faracik <[email protected]>
Date:   Sat Jan 11 18:45:30 2025 +0000

    Merge branch 'master' into add-groups-to-command-palette

commit 428e826
Merge: 5657369 f1b6d31
Author: Jan Faracik <[email protected]>
Date:   Mon Dec 16 20:53:15 2024 +0000

    Merge branch 'master' into add-groups-to-command-palette

commit 5657369
Merge: 26f17a2 674d508
Author: Jan Faracik <[email protected]>
Date:   Fri Dec 13 09:46:35 2024 +0000

    Merge branch 'add-icons-to-command-palette' into add-groups-to-command-palette

commit 674d508
Merge: 809d2e6 7020e80
Author: Jan Faracik <[email protected]>
Date:   Fri Dec 13 09:42:59 2024 +0000

    Merge branch 'master' into add-icons-to-command-palette

commit 26f17a2
Author: Jan Faracik <[email protected]>
Date:   Wed Dec 11 22:10:56 2024 +0000

    Update _command-palette.scss

commit 2b6ffc8
Author: Jan Faracik <[email protected]>
Date:   Wed Dec 11 22:09:09 2024 +0000

    Init

commit 809d2e6
Author: Jan Faracik <[email protected]>
Date:   Wed Dec 11 21:37:47 2024 +0000

    Make iconXml private, rename to icon

commit 3d45ca7
Author: Jan Faracik <[email protected]>
Date:   Wed Dec 11 21:29:27 2024 +0000

    Add group field

commit 80f24cb
Author: Jan Faracik <[email protected]>
Date:   Wed Dec 11 21:25:23 2024 +0000

    Init

commit 1b9faa8
Merge: d6868c9 2673844
Author: Tim Jacomb <[email protected]>
Date:   Wed Dec 11 21:11:56 2024 +0000

    Merge branch 'add-icons-to-command-palette' of github.com:janfaracik/jenkins into add-icons-to-command-palette

commit d6868c9
Author: Tim Jacomb <[email protected]>
Date:   Wed Dec 11 21:11:41 2024 +0000

    Reword javadoc

commit 2673844
Author: Jan Faracik <[email protected]>
Date:   Wed Dec 11 21:03:29 2024 +0000

    Implement IconSpec in IComputer

commit 5791010
Merge: 661f994 05ed756
Author: Jan Faracik <[email protected]>
Date:   Wed Dec 11 20:23:58 2024 +0000

    Merge branch 'master' into add-icons-to-command-palette

commit 661f994
Merge: 2357020 dad5ef3
Author: Jan Faracik <[email protected]>
Date:   Wed Dec 11 20:15:22 2024 +0000

    Merge branch 'refine-command-palette' into add-icons-to-command-palette

commit 2357020
Merge: 436a02b 788ae63
Author: Tim Jacomb <[email protected]>
Date:   Wed Dec 11 16:35:43 2024 +0000

    Merge branch 'add-icons-to-command-palette' of github.com:janfaracik/jenkins into add-icons-to-command-palette

commit 436a02b
Author: Tim Jacomb <[email protected]>
Date:   Wed Dec 11 16:35:24 2024 +0000

    Add support for images

commit a3fdb3e
Merge: ea67d6a d22cc2f
Author: Tim Jacomb <[email protected]>
Date:   Wed Dec 11 15:27:12 2024 +0000

    Merge branch 'master' into add-icons-to-command-palette

commit 788ae63
Merge: ea67d6a d22cc2f
Author: Jan Faracik <[email protected]>
Date:   Wed Dec 11 10:00:04 2024 +0000

    Merge branch 'jenkinsci:master' into add-icons-to-command-palette

commit dad5ef3
Merge: cc63c9c d22cc2f
Author: Tim Jacomb <[email protected]>
Date:   Wed Dec 11 09:07:05 2024 +0000

    Merge branch 'master' into refine-command-palette

commit ea67d6a
Author: Jan Faracik <[email protected]>
Date:   Tue Dec 10 22:26:16 2024 +0000

    Update Search.java

commit a9aadba
Author: Jan Faracik <[email protected]>
Date:   Tue Dec 10 22:25:40 2024 +0000

    Revert "Update Search.java"

    This reverts commit 24837ea.

commit 24837ea
Author: Jan Faracik <[email protected]>
Date:   Tue Dec 10 21:59:03 2024 +0000

    Update Search.java

commit d43a8d3
Author: Jan Faracik <[email protected]>
Date:   Tue Dec 10 21:54:23 2024 +0000

    Init

commit cc63c9c
Author: Jan Faracik <[email protected]>
Date:   Tue Dec 10 21:37:09 2024 +0000

    Refine command palette
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