Skip to content

Conversation

@timja
Copy link
Member

@timja timja commented Dec 19, 2025

Goal of this is to reduce duplication of information in e.g.:
image

Whilst making it easier to read and understand.
Also should stop credentials with longer names of descriptions from overflowing and breaking out of the page.

Root action before image
Root action after image

The above highlights that the display names are not the best for all credential types. I think its optimised for the credentials picker dropdown, but not great for the credentials list, I'd like to look at this if I have time but not for this PR

Domain image
Empty state domain modifiable image
Empty state domain not modifiable image
Empty state root action image

Testing done

Added a few credentials of differing types.
Added ones without description
Tested with read only stores (Azure key vault)

Ath passed as at b8944f9 in jenkinsci/acceptance-test-harness#2565

cc @janfaracik

Submitter checklist

  • Make sure you are opening from a topic/feature/bugfix branch (right side) and not your main branch!
  • Ensure that the pull request title represents the desired changelog entry
  • Please describe what you did
  • Link to relevant issues in GitHub or Jira
  • Link to relevant pull requests, esp. upstream and downstream changes
  • Ensure you have provided tests that demonstrate the feature works or the issue is fixed

@timja timja requested a review from a team as a code owner December 19, 2025 22:54
@timja timja marked this pull request as draft December 19, 2025 22:54
value="${c.description==null?'':app.markupFormatter.translate(c.description)}"/>

<div class="credentials-wrapper">
<div class="credentials-card">
Copy link
Member Author

Choose a reason for hiding this comment

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

I started with the jenkins-card but its title can't take html / an icon and I don't think its flexible enough for this sort of thing.

I used the exact same layout and css as the API tokens card but didn't want to reuse the classes as they aren't part of the API.

cc @mawinter69

@janfaracik
Copy link
Member

janfaracik commented Dec 20, 2025

Looking good!

Just a few 8am ideas:

  • Any thoughts on having the list styled like the dashboard prototype? (experimental-dashboard-refine)
    • My current thinking is is that items that can be moved around are separated, e.g. a vertical gap in between them, items that cannot be moved (e.g. jobs, credentials, New Item page) are joined
  • Any thoughts on more use of dialogs? E.g. the add credentials page, delete, move
    • And if they are dialogs, do we even need the pages for the credentials? Is it common to deep link to credentials?
  • Any thoughts on showing usages on the item itself? (e.g. used N times)

... could I get commit permissions to your fork 🙏

@timja
Copy link
Member Author

timja commented Dec 20, 2025

Looking good!

Just a few 8am ideas:

  • Any thoughts on having the list styled like the dashboard prototype? (experimental-dashboard-refine)

    • My current thinking is is that items that can be moved around are separated, e.g. a vertical gap in between them, items that cannot be moved (e.g. jobs, credentials, New Item page) are joined

Sure sounds good

  • Any thoughts on more use of dialogs? E.g. the add credentials page, delete, move

Definitely delete and move could be dialogs, they are very simple pages.
New credentials probably as well.

  • And if they are dialogs, do we even need the pages for the credentials? Is it common to deep link to credentials?
  • Any thoughts on showing usages on the item itself? (e.g. used N times)

Makes sense, (assuming not expensive to get)

... could I get commit permissions to your fork 🙏

Done, go to https://github.com/timja/credentials-plugin/invitations

@janfaracik
Copy link
Member

janfaracik commented Dec 20, 2025

Adjusted the cards:

image

There's a whole bunch of fancy focus states that aren't in this (that are in the dashboard concept) - but I'd like to have this be a component in core we can just reuse rather than reinvent the wheel every time.

@timja
Copy link
Member Author

timja commented Dec 20, 2025

@janfaracik thanks for the help!

I've fixed up a few permissions issues where it wasn't quite right for credentials providers that you can't update from directly inside Jenkins (I tested with the Azure Key Vault plugin).

I've also added empty states for when there's no credentials.

Not the biggest fan of the root tables one as I haven't added a call to action due to there being multiple stores and how you can disable them etc I’d like to add this in a follow up

I've created a PR to ATH as well.

Anything else before this is ready do you think?

@timja timja marked this pull request as ready for review December 21, 2025 08:07
@janfaracik
Copy link
Member

Anything else before this is ready do you think?

Looks good to me 🚀

@janfaracik
Copy link
Member

image

Can anybody think of a good ionicon to replace this? (https://ionic.io/ionicons)

I can always make one if needed.

@timja
Copy link
Member Author

timja commented Dec 22, 2025

image Can anybody think of a good ionicon to replace this? ([ionic.io/ionicons](https://ionic.io/ionicons))

I can always make one if needed.

server-outline or business-outline?

FYI there's also icons showing on the action overflow menus that should be updated. (Move etc)

@janfaracik
Copy link
Member

server-outline or business-outline?

Ugh I was searching for tower but couldn't find anything - business works well.

Screenshot 2025-12-22 at 09 03 05

FYI there's also icons showing on the action overflow menus that should be updated. (Move etc)

Aye - will do those in a follow up once we move to modals, hoping to kill the breadcrumb actions...

@timja
Copy link
Member Author

timja commented Dec 22, 2025

Ideally shouldn't have update in the more actions menu and in the main area:
image

(I do wonder if we need the more actions or the update it makes it a bit quicker but the only frequent actions would be new credentials and update a credential

@timja
Copy link
Member Author

timja commented Dec 30, 2025

@jglick possible to take a look at this please?

Copy link
Member

@jglick jglick left a comment

Choose a reason for hiding this comment

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

A display nit. Otherwise seems OK to me from very brief local testing, but I lack any context for why you are redesigning GUI here. If you plan to work on a lot of stuff like this you should just request write access to the repo.

class="jenkins-badge">
<j:choose>
<j:when test="${domain.global}">
${%global}
Copy link
Member

Choose a reason for hiding this comment

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

nearly illegible for me in Firefox
Screenshot from 2025-12-30 12-40-23

Copy link
Member Author

Choose a reason for hiding this comment

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

Copy link
Member Author

Choose a reason for hiding this comment

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

Works on 2.504.x, changes a bit on 2.535 to look better:

image

Will need to increase it again soon but will leave it conservative for this PR.

Would file separately but Windows tests in this repo are rediculously slow
@timja timja merged commit 7291f84 into jenkinsci:master Dec 30, 2025
19 checks passed
@timja timja deleted the card branch December 30, 2025 22:53
@jtnord
Copy link
Member

jtnord commented Jan 5, 2026

@timja this removed the model links from the "Stores" section of the overview page so you can no longer quickly add credentials or domains from the overview page, now you need to go to another page and then click introducing an uneeded step? This to me is a UX regression for power users, and I hope this was unintentional and can be restored?

@timja
Copy link
Member Author

timja commented Jan 5, 2026

@timja this removed the model links from the "Stores" section of the overview page so you can no longer quickly add credentials or domains from the overview page, now you need to go to another page and then click introducing an uneeded step? This to me is a UX regression for power users, and I hope this was unintentional and can be restored?

New credentials is going to be added this week in #992 with a better experience.

Is new domains really needed? Are they used much at all?

@jtnord
Copy link
Member

jtnord commented Jan 5, 2026

New credentials is going to be added this week in #992 with a better experience.

❤️

Is new domains really needed? Are they used much at all?

I personally rarely use them, and there are none that I see in CloudBees' instances. But that is possibly as they are currently hard to understand (there is no reason why a github PAT should not be in a domain for github.com - I think its partially the UX to create them is messy and does not guide people to use them, and partially that they do not restrict credentials in them to being used on those domains, but rather restricts requests with a domain to only those credentials). TBH as they are so rarely used we could possibly change that behaviour to make them actually more useful!

@timja
Copy link
Member Author

timja commented Jan 5, 2026

The new credentials is ready now if you want to take a look. I’m working on ATH and will run it through pct although not expecting anything there

@jglick
Copy link
Member

jglick commented Jan 5, 2026

IMO the concept of credentials domains was never needed and could be deprecated.

@jtnord jtnord mentioned this pull request Jan 5, 2026
20 tasks
* @return the icon class name for the store.
* @since TODO
*/
public final String getIconClassName() {
Copy link
Member

Choose a reason for hiding this comment

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

This broke several CredentialsStore implementations in CloudBees CI which were implementing IconSpec (and thus defining their own getIconClassName methods). Is there a recommended migration?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants