From 4c5b9caf782dd8b1a343ef008a1ae8e89e8f22f3 Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Fri, 19 Dec 2025 22:46:17 +0000 Subject: [PATCH 01/34] Use card layout for credentials tables --- .../DomainWrapper/index.jelly | 118 ++++++++---------- src/main/webapp/css/credentials.css | 46 +++++++ 2 files changed, 99 insertions(+), 65 deletions(-) create mode 100644 src/main/webapp/css/credentials.css diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly index 9f8eed6da..98117ce0c 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly @@ -24,97 +24,85 @@ ~ THE SOFTWARE. --> + xmlns:f="/lib/form" xmlns:c="/lib/credentials" xmlns:t="/lib/hudson"> + + + + - + ${%Add Credentials} - + ${%Configure domain} - + ${%Delete domain} -
- +
+
- - - - - - - - - - - - + + + - - - - + + ${%noCredentialsAddSome} - - - - - - - - - - - + ${%noCredentials} - -
- ${%ID}${%Name}${%Kind}${%Description} -
- - - ${%noCredentialsAddSome} - - - ${%noCredentials} - - -
- - - ${c.id} - - ${c.displayName} - - ${c.typeName} - - ${safeDescription} - - - - - - -
- + + + + + +
+
+
+ + +
+ ${c.id} + + + (${safeDescription}) + +
+ +
+ +
+
+ +
+
+ diff --git a/src/main/webapp/css/credentials.css b/src/main/webapp/css/credentials.css new file mode 100644 index 000000000..3107133c6 --- /dev/null +++ b/src/main/webapp/css/credentials.css @@ -0,0 +1,46 @@ +.credentials-card { + flex-direction: row; + display: flex; + gap: 0.5rem; + border-radius: var(--form-input-border-radius); + background: var(--card-background); + position: relative; +} + +.credentials-card::after { + content: ""; + position: absolute; + inset: 0; + border-radius: inherit; + border: var(--card-border-width) solid var(--card-border-color); + z-index: 1; + pointer-events: none; +} + +.credentials-card__controls { + display: flex; + gap: 0.5rem; + align-items: center; +} + +.credentials-card__inner { + width: 100%; + padding: 0.5rem 1rem; +} + +.credentials-card__details { + padding-left: 1.9rem; +} + +.credentials-card__controls { + margin-left: auto; + padding-right: 1rem; + margin-right: -0.25rem; +} + +.credentials-wrapper { + display: flex; + flex-direction: column; + gap: 0.75rem; + margin-bottom: 0.75rem; +} \ No newline at end of file From d04b66726030c278ddda0506cf63361a94c664cc Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Sat, 20 Dec 2025 09:17:48 +0000 Subject: [PATCH 02/34] Refine card UI --- .../DomainWrapper/index.jelly | 61 ++++++++++--------- src/main/webapp/css/credentials.css | 54 +++++++++------- 2 files changed, 66 insertions(+), 49 deletions(-) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly index 98117ce0c..85997eb45 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly @@ -68,39 +68,44 @@ - - +
+ + -
-
-
- +
+
+ + +
+ ${c.id} + + + (${safeDescription}) + +
-
- ${c.id} - - - (${safeDescription}) +
+
+ + + + +
- -
- -
-
- - + +
diff --git a/src/main/webapp/css/credentials.css b/src/main/webapp/css/credentials.css index 3107133c6..6f05c8f7f 100644 --- a/src/main/webapp/css/credentials.css +++ b/src/main/webapp/css/credentials.css @@ -1,46 +1,58 @@ -.credentials-card { - flex-direction: row; +.credentials-wrapper { display: flex; - gap: 0.5rem; + flex-direction: column; + border: var(--jenkins-border); border-radius: var(--form-input-border-radius); background: var(--card-background); - position: relative; } -.credentials-card::after { - content: ""; - position: absolute; - inset: 0; - border-radius: inherit; - border: var(--card-border-width) solid var(--card-border-color); - z-index: 1; - pointer-events: none; +.credentials-card { + position: relative; + flex-direction: row; + display: flex; + gap: 0.5rem; + border-bottom: var(--jenkins-border); + + &:last-of-type { + border-bottom: none; + } } .credentials-card__controls { display: flex; - gap: 0.5rem; + gap: var(--jenkins-border-width); align-items: center; + + .jenkins-button { + padding: 0; + aspect-ratio: 1; + } } .credentials-card__inner { width: 100%; - padding: 0.5rem 1rem; + padding: 0.625rem 1rem; } .credentials-card__details { - padding-left: 1.9rem; + padding-left: 1.75rem; + margin-top: 0.125rem; + font-size: var(--font-size-xs); + color: var(--text-color-secondary); } .credentials-card__controls { margin-left: auto; - padding-right: 1rem; - margin-right: -0.25rem; + padding-right: 0.75rem; } -.credentials-wrapper { +.credentials-card__title { display: flex; - flex-direction: column; - gap: 0.75rem; - margin-bottom: 0.75rem; + align-items: center; + gap: 0.5rem; + + & > svg, img { + width: 1.25rem; + height: 1.25rem; + } } \ No newline at end of file From af8b1e01f9d5df7d14a314542a59c9a3e698850e Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Sat, 20 Dec 2025 09:20:07 +0000 Subject: [PATCH 03/34] Adjust colors + padding --- src/main/webapp/css/credentials.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/webapp/css/credentials.css b/src/main/webapp/css/credentials.css index 6f05c8f7f..d963952b6 100644 --- a/src/main/webapp/css/credentials.css +++ b/src/main/webapp/css/credentials.css @@ -1,9 +1,9 @@ .credentials-wrapper { display: flex; flex-direction: column; - border: var(--jenkins-border); - border-radius: var(--form-input-border-radius); background: var(--card-background); + border: var(--card-border-width) solid var(--card-border-color); + border-radius: var(--form-input-border-radius); } .credentials-card { @@ -35,7 +35,7 @@ } .credentials-card__details { - padding-left: 1.75rem; + padding-left: 2rem; margin-top: 0.125rem; font-size: var(--font-size-xs); color: var(--text-color-secondary); @@ -49,7 +49,7 @@ .credentials-card__title { display: flex; align-items: center; - gap: 0.5rem; + gap: 0.75rem; & > svg, img { width: 1.25rem; From 84a38e1d798efc79c6fe07a4d4c8f47eea4b57ee Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Sat, 20 Dec 2025 09:33:41 +0000 Subject: [PATCH 04/34] Update domain items --- .../DomainWrapper/index.jelly | 54 ++++++++--------- .../CredentialsStoreAction/index.jelly | 60 ++++++++++--------- src/main/webapp/css/credentials.css | 6 +- 3 files changed, 61 insertions(+), 59 deletions(-) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly index 85997eb45..cff14f34d 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly @@ -73,37 +73,37 @@ -
-
- - -
- ${c.id} - - - (${safeDescription}) - -
- +
+
+ -
- - - - - + +
+ ${c.id} + + + (${safeDescription})
+ +
+
+ + + + + +
+
diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly index e35e50908..78a3a6888 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly @@ -35,6 +35,10 @@ + + + + @@ -46,35 +50,33 @@ - - - - - - - - - - - - - - - - - - - - -
- ${%Domain}${%Description}
- - - ${d.displayName} - ${safeDescription}
- +
+ + +
+
+ + +
+ ${safeDescription} +
+
+
+
+ +
+
+
+
diff --git a/src/main/webapp/css/credentials.css b/src/main/webapp/css/credentials.css index d963952b6..63405660f 100644 --- a/src/main/webapp/css/credentials.css +++ b/src/main/webapp/css/credentials.css @@ -31,7 +31,7 @@ .credentials-card__inner { width: 100%; - padding: 0.625rem 1rem; + padding: 0.75rem 1rem; } .credentials-card__details { @@ -52,7 +52,7 @@ gap: 0.75rem; & > svg, img { - width: 1.25rem; - height: 1.25rem; + width: 1.25rem !important; + height: 1.25rem !important; } } \ No newline at end of file From b54d2c9e9d4614e2a8fa113d321f7ef1a7e844f7 Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Sat, 20 Dec 2025 09:41:04 +0000 Subject: [PATCH 05/34] Add Configure button --- .../CredentialsStoreAction/DomainWrapper/index.jelly | 2 +- .../plugins/credentials/CredentialsStoreAction/index.jelly | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly index cff14f34d..2195109a3 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly @@ -84,7 +84,7 @@ ${c.id} - (${safeDescription}) + (${safeDescription})
diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly index 78a3a6888..b7bceaed8 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly @@ -68,6 +68,13 @@
+ + + + +
- -
+
+ ${%credentialsCount(size(d.credentials))} + + - ${safeDescription} -
- + +
diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.properties b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.properties new file mode 100644 index 000000000..ff1ffb743 --- /dev/null +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.properties @@ -0,0 +1 @@ +credentialsCount={0} {0,choice,0#credentials|1#credential|1 Date: Sat, 20 Dec 2025 10:48:48 +0000 Subject: [PATCH 07/34] Start migrating home page --- .../ViewCredentialsAction/index.jelly | 191 ++++++++---------- src/main/webapp/css/credentials.css | 6 + 2 files changed, 87 insertions(+), 110 deletions(-) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly index 912d1a2ad..64a77672f 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly @@ -24,9 +24,13 @@ ~ THE SOFTWARE. --> + xmlns:t="/lib/hudson" xmlns:f="/lib/form"> + + + + @@ -35,15 +39,8 @@ - - + + @@ -102,112 +99,86 @@
+ -

${%storesScopedTo(it.contextFullDisplayName)}

- - - - - - - - - - - - - - - - - - - - - - -
${%P}${%Store}${%Domains}
- - - - ${store.context == app ? store.displayName : store.contextDisplayName} - - - - - - - ${%global} - - - ${app.markupFormatter.translate(domain.name)} - - - - - -
+ + +
+ -

${%Stores from parent}

- - - - - - - - - - - - - - - - - - - - - - - - -
${%P}${%Store}${%Domains}
- - - - ${store.context == app ? store.displayName : store.contextDisplayName} - - - - - - - ${%global} - - - ${app.markupFormatter.translate(domain.name)} - - - - - -
+ + +
- -
diff --git a/src/main/webapp/css/credentials.css b/src/main/webapp/css/credentials.css index 63405660f..b54b9234b 100644 --- a/src/main/webapp/css/credentials.css +++ b/src/main/webapp/css/credentials.css @@ -1,9 +1,15 @@ +.masked-credential { + filter: grayscale(100%); /* Real browsers */ + opacity: 0.3; /* Real browsers */ +} + .credentials-wrapper { display: flex; flex-direction: column; background: var(--card-background); border: var(--card-border-width) solid var(--card-border-color); border-radius: var(--form-input-border-radius); + margin-bottom: var(--section-padding); } .credentials-card { From ff3c9a6f4161c61cd8b368e95c761fcb2b51b358 Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Sat, 20 Dec 2025 16:28:44 +0000 Subject: [PATCH 08/34] WIP homepage cards --- .../DomainWrapper/index.jelly | 2 +- .../CredentialsStoreAction/index.jelly | 2 +- .../ViewCredentialsAction/index.jelly | 102 ++++++++---------- src/main/webapp/css/credentials.css | 21 +++- 4 files changed, 66 insertions(+), 61 deletions(-) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly index 2195109a3..87af57661 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly @@ -97,7 +97,7 @@ diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly index 209c33058..cfd92893c 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly @@ -78,7 +78,7 @@
diff --git a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly index 64a77672f..ce16682d1 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly @@ -40,65 +40,49 @@ - - - - - - - - - - - - - - + + +
-
- - - - - - - - - - + + - + ${safeDescription} + + + +
+ + + + + + +
+ - -
${%T}${%P}${%Store}${%Domain}${%ID}${%Name}
- - - - - - ${d.store.context == app ? d.store.displayName : d.store.contextDisplayName} + - - - - ${%global} - - - ${app.markupFormatter.translate(d.domain.name)} - - + + - + - ${d.id} - - - ${d.name} -
+
@@ -108,15 +92,16 @@ -
-
+
+
-
+
+ Domains: @@ -149,14 +134,15 @@
-
+
-
+
+ Domains: diff --git a/src/main/webapp/css/credentials.css b/src/main/webapp/css/credentials.css index b54b9234b..d4e82be56 100644 --- a/src/main/webapp/css/credentials.css +++ b/src/main/webapp/css/credentials.css @@ -36,7 +36,6 @@ } .credentials-card__inner { - width: 100%; padding: 0.75rem 1rem; } @@ -45,6 +44,26 @@ margin-top: 0.125rem; font-size: var(--font-size-xs); color: var(--text-color-secondary); + + a { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 1ch; + + img, svg { + width: 1rem !important; + height: 1rem !important; + } + } +} + +.credentials-card__tags { + display: flex; + align-items: center; + gap: 0.5rem; + font-size: var(--font-size-xs); + color: var(--text-color-secondary); } .credentials-card__controls { From 291f7c71eba103dd14feafb193cf79cd6acd2c05 Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Sat, 20 Dec 2025 16:29:16 +0000 Subject: [PATCH 09/34] Update credentials.css --- src/main/webapp/css/credentials.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/webapp/css/credentials.css b/src/main/webapp/css/credentials.css index d4e82be56..f822dff40 100644 --- a/src/main/webapp/css/credentials.css +++ b/src/main/webapp/css/credentials.css @@ -40,6 +40,9 @@ } .credentials-card__details { + display: inline-flex; + align-items: center; + justify-content: center; padding-left: 2rem; margin-top: 0.125rem; font-size: var(--font-size-xs); From 8dc4e3838a50b910686b794ebc08d5a9e8f9b2f4 Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Sat, 20 Dec 2025 16:33:31 +0000 Subject: [PATCH 10/34] Fixes --- .../credentials/ViewCredentialsAction/index.jelly | 10 +++++----- src/main/webapp/css/credentials.css | 8 +++++--- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly index ce16682d1..6e68ccb06 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly @@ -54,15 +54,15 @@
diff --git a/src/main/webapp/css/credentials.css b/src/main/webapp/css/credentials.css index f822dff40..a26d72b9e 100644 --- a/src/main/webapp/css/credentials.css +++ b/src/main/webapp/css/credentials.css @@ -43,8 +43,9 @@ display: inline-flex; align-items: center; justify-content: center; + gap: 1ch; padding-left: 2rem; - margin-top: 0.125rem; + margin-top: 0.1875rem; font-size: var(--font-size-xs); color: var(--text-color-secondary); @@ -53,10 +54,11 @@ align-items: center; justify-content: center; gap: 1ch; + color: inherit; img, svg { - width: 1rem !important; - height: 1rem !important; + width: 0.875rem !important; + height: 0.875rem !important; } } } From d883f3179af064586f84aa3573581abe43e47d34 Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Sat, 20 Dec 2025 16:40:33 +0000 Subject: [PATCH 11/34] Refine further --- .../DomainWrapper/index.jelly | 2 +- .../CredentialsStoreAction/index.jelly | 2 +- .../credentials/ViewCredentialsAction/index.jelly | 15 +++++++++++++-- .../ViewCredentialsAction/index.properties | 2 +- src/main/webapp/css/credentials.css | 7 +++++-- 5 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly index 87af57661..6a43e91a8 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly @@ -83,7 +83,7 @@
${c.id} - + - (${safeDescription})
diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly index cfd92893c..d13ac2032 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly @@ -64,7 +64,7 @@
${%credentialsCount(size(d.credentials))} - - + - ${safeDescription}
diff --git a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly index 6e68ccb06..c6544cbed 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly @@ -45,8 +45,8 @@
-
-
+
+
@@ -59,6 +59,17 @@ ${d.store.context == app ? d.store.displayName : d.store.contextDisplayName} - + + + + ${%global} + + + ${app.markupFormatter.translate(d.domain.name)} + + + + - ${d.id} - diff --git a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.properties b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.properties index cdda9a2e5..47459e55b 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.properties +++ b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.properties @@ -1,2 +1,2 @@ -global=(global) +global=Global storesScopedTo=Stores scoped to {0} diff --git a/src/main/webapp/css/credentials.css b/src/main/webapp/css/credentials.css index a26d72b9e..5ab79f0fb 100644 --- a/src/main/webapp/css/credentials.css +++ b/src/main/webapp/css/credentials.css @@ -1,6 +1,9 @@ .masked-credential { - filter: grayscale(100%); /* Real browsers */ - opacity: 0.3; /* Real browsers */ + opacity: 0.3; + + * { + color: var(--text-color-secondary) !important; + } } .credentials-wrapper { From 068dcb7debae7db0ee4722d716ee6b78a121a06d Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Sat, 20 Dec 2025 16:45:49 +0000 Subject: [PATCH 12/34] Update credentials.css --- src/main/webapp/css/credentials.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/webapp/css/credentials.css b/src/main/webapp/css/credentials.css index 5ab79f0fb..d8092d07a 100644 --- a/src/main/webapp/css/credentials.css +++ b/src/main/webapp/css/credentials.css @@ -45,7 +45,8 @@ .credentials-card__details { display: inline-flex; align-items: center; - justify-content: center; + justify-content: start; + flex-wrap: wrap; gap: 1ch; padding-left: 2rem; margin-top: 0.1875rem; From da86efba3a9b0b2651a1d3d0b0b23d82665ba46c Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Sat, 20 Dec 2025 17:56:15 +0000 Subject: [PATCH 13/34] Add missing check --- .../CredentialsStoreAction/index.jelly | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly index d13ac2032..fdac2f3c2 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly @@ -44,7 +44,7 @@ - + ${%Add domain} @@ -74,14 +74,16 @@ - + - + + +
From 468a24231ac4d8376cc7774581012995d5346264 Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Sat, 20 Dec 2025 22:06:46 +0000 Subject: [PATCH 14/34] Remove no longer needed brackets --- .../CredentialsStoreAction/DomainWrapper/index.jelly | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly index 6a43e91a8..5d2efd6be 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly @@ -84,7 +84,7 @@ ${c.id} - - (${safeDescription}) + ${safeDescription}
From be99fc92217696d5656c249649fa3a10b2dcdff4 Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Sat, 20 Dec 2025 23:02:58 +0000 Subject: [PATCH 15/34] Fix non editable stores showing actions --- .../cloudbees/plugins/credentials/ViewCredentialsAction.java | 5 +++++ .../plugins/credentials/ViewCredentialsAction/index.jelly | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cloudbees/plugins/credentials/ViewCredentialsAction.java b/src/main/java/com/cloudbees/plugins/credentials/ViewCredentialsAction.java index 6eb744b7b..493d7657f 100644 --- a/src/main/java/com/cloudbees/plugins/credentials/ViewCredentialsAction.java +++ b/src/main/java/com/cloudbees/plugins/credentials/ViewCredentialsAction.java @@ -513,6 +513,11 @@ public String getId() { return credentials instanceof IdCredentials ? ((IdCredentials) credentials).getId() : null; } + @SuppressWarnings("unused") // jelly + public boolean isEditable() { + return store.hasPermission(CredentialsProvider.UPDATE); + } + /** * Returns the {@link Credentials#getScope()} of the {@link #credentials}. * diff --git a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly index c6544cbed..78a4ac50b 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly @@ -44,6 +44,7 @@
+
@@ -78,7 +79,7 @@
- - ${%noCredentialsAddSome} + + ${%noCredentialsCallToAction} + - ${%noCredentials} + @@ -76,7 +80,7 @@
@@ -94,12 +98,12 @@ - +
diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties index ed6753343..b17a1a36c 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties @@ -21,5 +21,5 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # -noCredentials=This credential domain is empty. -noCredentialsAddSome=This credential domain is empty. How about adding some credentials? +noCredentials=This credentials domain is empty. +noCredentialsCallToAction=How about adding some credentials? diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index_de.properties b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index_de.properties index 73aeaaeac..07ffaffc6 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index_de.properties +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index_de.properties @@ -22,7 +22,6 @@ # THE SOFTWARE. # noCredentials=Diese Zugangsdaten-Dom\u00E4ne ist leer. -noCredentialsAddSome=Diese Zugangsdaten-Dom\u00E4ne ist leer. M\u00F6chten Sie Zugangsdaten hinzuf\u00FCgen? Name=Name Kind=Art Description=Beschreibung diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index_fr.properties b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index_fr.properties index f5f06016c..7e39b5ecd 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index_fr.properties +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index_fr.properties @@ -21,7 +21,6 @@ # THE SOFTWARE. noCredentials=Ce domaine d''identifiants est vide. -noCredentialsAddSome=Ce domaine d''identifiants est vide. Que diriez-vous d''ajouter des identifiants ? Name=Nom Kind=Type Description=Description diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index_ja.properties b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index_ja.properties index 73cb1babd..bd162efe2 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index_ja.properties +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index_ja.properties @@ -24,7 +24,5 @@ Name=\u540d\u79f0 Kind=\u7a2e\u985e Description=\u8aac\u660e noCredentials=\u3053\u306e\u8a8d\u8a3c\u30c9\u30e1\u30a4\u30f3\u306f\u672a\u8a2d\u5b9a\u3067\u3059\u3002 -noCredentialsAddSome=\ - \u3053\u306e\u8a8d\u8a3c\u30c9\u30e1\u30a4\u30f3\u306f\u672a\u8a2d\u5b9a\u3067\u3059\u3002\u8a8d\u8a3c\u60c5\u5831\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002 Update=\u66f4\u65b0 diff --git a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly index 78a4ac50b..4407b744c 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly @@ -25,76 +25,86 @@ --> - - + + - + - + + -
- - - -
- + + @@ -107,13 +117,13 @@
- Domains: + ${%Domains}: @@ -148,7 +158,7 @@
- + ${store.context == app ? store.displayName : store.contextDisplayName} From fe5718bf133265e6e7284f2284d17a404a10dbe0 Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Sat, 20 Dec 2025 23:33:42 +0000 Subject: [PATCH 17/34] Remove unneeded brackets around description --- .../plugins/credentials/ViewCredentialsAction/index.jelly | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly index 4407b744c..733952284 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly @@ -82,7 +82,7 @@ ${d.id} - - (${safeDescription}) + ${safeDescription}
From 451d6ae14fc4397ab4cea7b85d749b8dda7f8048 Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Sun, 21 Dec 2025 09:42:43 +0000 Subject: [PATCH 18/34] Drop the . --- .../CredentialsStoreAction/DomainWrapper/index.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties index b17a1a36c..fe1d29619 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties @@ -21,5 +21,5 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # -noCredentials=This credentials domain is empty. +noCredentials=This credentials domain is empty noCredentialsCallToAction=How about adding some credentials? From 17bdf0f72bbcf0c6bb16b3ebcd8b5e490486760b Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Sun, 21 Dec 2025 22:00:27 +0000 Subject: [PATCH 19/34] Switch to adjunct for settings-subpage compat --- .../CredentialsStoreAction/DomainWrapper/index.jelly | 4 +--- .../plugins/credentials/CredentialsStoreAction/index.jelly | 4 +--- .../plugins/credentials/ViewCredentialsAction/index.jelly | 4 +--- .../com/cloudbees/plugins/credentials/common/card.css} | 0 4 files changed, 3 insertions(+), 9 deletions(-) rename src/main/{webapp/css/credentials.css => resources/com/cloudbees/plugins/credentials/common/card.css} (100%) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly index d792b72a4..756e98c10 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly @@ -26,9 +26,7 @@ - - - + diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly index fdac2f3c2..9005d6968 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly @@ -35,9 +35,7 @@ - - - + diff --git a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly index 733952284..7b129af9e 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly @@ -28,9 +28,7 @@ - - - + diff --git a/src/main/webapp/css/credentials.css b/src/main/resources/com/cloudbees/plugins/credentials/common/card.css similarity index 100% rename from src/main/webapp/css/credentials.css rename to src/main/resources/com/cloudbees/plugins/credentials/common/card.css From 73c94f112dcfef836e90b24eb541a35ca30dc08a Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Mon, 22 Dec 2025 08:38:31 +0000 Subject: [PATCH 20/34] Fix text wrap, fix icon shrinking + alignment --- .../com/cloudbees/plugins/credentials/common/card.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/common/card.css b/src/main/resources/com/cloudbees/plugins/credentials/common/card.css index d8092d07a..996696776 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/common/card.css +++ b/src/main/resources/com/cloudbees/plugins/credentials/common/card.css @@ -82,11 +82,13 @@ .credentials-card__title { display: flex; - align-items: center; gap: 0.75rem; + word-break: break-all; & > svg, img { width: 1.25rem !important; height: 1.25rem !important; + flex-shrink: 0; + margin-top: 0.0625rem; } } \ No newline at end of file From 275d125db42c969f145a1f4ab68c0d58eb3e9de4 Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Mon, 22 Dec 2025 08:44:35 +0000 Subject: [PATCH 21/34] Fix description wrap --- .../resources/com/cloudbees/plugins/credentials/common/card.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/common/card.css b/src/main/resources/com/cloudbees/plugins/credentials/common/card.css index 996696776..56c004f4f 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/common/card.css +++ b/src/main/resources/com/cloudbees/plugins/credentials/common/card.css @@ -52,6 +52,7 @@ margin-top: 0.1875rem; font-size: var(--font-size-xs); color: var(--text-color-secondary); + word-break: break-all; a { display: inline-flex; From 9753ab35fc51cdc4804db39916a50dc2482c0a65 Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Mon, 22 Dec 2025 08:55:27 +0000 Subject: [PATCH 22/34] Pull out Stores into own Jelly file --- .../ViewCredentialsAction/index.jelly | 56 +----------------- .../plugins/credentials/common/card.css | 5 ++ .../resources/lib/credentials/store.jelly | 57 +++++++++++++++++++ .../lib/credentials/store.properties | 1 + 4 files changed, 66 insertions(+), 53 deletions(-) create mode 100644 src/main/resources/lib/credentials/store.jelly create mode 100644 src/main/resources/lib/credentials/store.properties diff --git a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly index 7b129af9e..691bdacc6 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly @@ -24,7 +24,7 @@ ~ THE SOFTWARE. --> + xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:c="/lib/credentials"> @@ -112,32 +112,7 @@ - + @@ -153,32 +128,7 @@ - + diff --git a/src/main/resources/com/cloudbees/plugins/credentials/common/card.css b/src/main/resources/com/cloudbees/plugins/credentials/common/card.css index 56c004f4f..4fd9addc2 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/common/card.css +++ b/src/main/resources/com/cloudbees/plugins/credentials/common/card.css @@ -42,6 +42,11 @@ padding: 0.75rem 1rem; } +.credentials-card__inner--split { + display: grid; + grid-template-columns: 350px 1fr; +} + .credentials-card__details { display: inline-flex; align-items: center; diff --git a/src/main/resources/lib/credentials/store.jelly b/src/main/resources/lib/credentials/store.jelly new file mode 100644 index 000000000..c0dc78ff8 --- /dev/null +++ b/src/main/resources/lib/credentials/store.jelly @@ -0,0 +1,57 @@ + + + + + + A reusable Store card. + + + + diff --git a/src/main/resources/lib/credentials/store.properties b/src/main/resources/lib/credentials/store.properties new file mode 100644 index 000000000..1e1ebcc6b --- /dev/null +++ b/src/main/resources/lib/credentials/store.properties @@ -0,0 +1 @@ +global=Global From 1113246c6b3a487e929fa4a91a5a4bbe41fa6cfc Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Mon, 22 Dec 2025 09:02:31 +0000 Subject: [PATCH 23/34] Use symbol-business-outline plugin-ionicons-api --- pom.xml | 4 ++++ .../plugins/credentials/CredentialsStoreAction/index.jelly | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 903b4ae17..8e27c23be 100644 --- a/pom.xml +++ b/pom.xml @@ -121,6 +121,10 @@ org.jenkins-ci.plugins bouncycastle-api + + io.jenkins.plugins + ionicons-api + org.mockito diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly index 9005d6968..870b017c3 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly @@ -55,7 +55,7 @@
From 2250dba26421a4f2b5c7310266de38344753cf41 Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Mon, 22 Dec 2025 09:18:43 +0000 Subject: [PATCH 24/34] Fix page description spacing --- .../CredentialsStoreAction/DomainWrapper/index.jelly | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly index 756e98c10..4bb858f94 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly @@ -52,9 +52,12 @@ -
- -
+ + +
+ +
+
From ad653e4cb5a7c6999bdadbf3332dd4ed33037c79 Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Fri, 26 Dec 2025 10:35:27 +0000 Subject: [PATCH 25/34] Use dialog for deleting domains --- .../DomainWrapper/index.jelly | 23 +++++++++++++------ .../DomainWrapper/index.properties | 1 + .../CredentialsStoreAction/index.jelly | 23 ++++++++++++------- .../CredentialsStoreAction/index.properties | 1 + 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly index 4bb858f94..b6149f3ed 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly @@ -23,7 +23,7 @@ ~ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN ~ THE SOFTWARE. --> - @@ -42,13 +42,22 @@ - - ${%Configure domain} - - - - ${%Delete domain} + ${%Configure} + + + +
+ +
+ ${%Delete domain} +
+
+
diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties index fe1d29619..3a8562a01 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties @@ -23,3 +23,4 @@ # noCredentials=This credentials domain is empty noCredentialsCallToAction=How about adding some credentials? +delete.domain=Are you sure you want to delete {0}? diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly index 870b017c3..1f21cd4ae 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly @@ -23,7 +23,7 @@ ~ THE SOFTWARE. --> - @@ -74,13 +74,20 @@ class="jenkins-button jenkins-button--tertiary"> - - - + + + +
+ +
+ ${%Delete domain} +
+
+
diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.properties b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.properties index ff1ffb743..46474787c 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.properties +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.properties @@ -1 +1,2 @@ credentialsCount={0} {0,choice,0#credentials|1#credential|1 Date: Fri, 26 Dec 2025 10:59:06 +0000 Subject: [PATCH 26/34] Use dialog for deleting credentials --- .../DomainWrapper/index.jelly | 23 +++++++++++---- .../DomainWrapper/index.properties | 1 + .../ViewCredentialsAction/index.jelly | 28 ++++++++++++++----- .../ViewCredentialsAction/index.properties | 1 + 4 files changed, 41 insertions(+), 12 deletions(-) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly index b6149f3ed..cb2d6f832 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.jelly @@ -110,11 +110,24 @@ class="jenkins-button jenkins-button--tertiary"> - + + + + + +
+ +
+ ${%Delete credential} +
+
+
diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties index 3a8562a01..c1ac54da2 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties @@ -24,3 +24,4 @@ noCredentials=This credentials domain is empty noCredentialsCallToAction=How about adding some credentials? delete.domain=Are you sure you want to delete {0}? +delete.credential=Are you sure you want to delete {0}? diff --git a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly index 691bdacc6..f701802c7 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly @@ -24,7 +24,7 @@ ~ THE SOFTWARE. --> + xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:c="/lib/credentials" xmlns:dd="/lib/layout/dropdowns"> @@ -86,16 +86,30 @@
- + - + + + + + +
+ +
+ ${%Delete credential} +
+
+
diff --git a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.properties b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.properties index 47459e55b..93f26aaaf 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.properties +++ b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.properties @@ -1,2 +1,3 @@ global=Global storesScopedTo=Stores scoped to {0} +delete.credential=Are you sure you want to delete {0}? From aaff32747c312331a3b91d4a92d63bd649ccd944 Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Fri, 26 Dec 2025 11:00:54 +0000 Subject: [PATCH 27/34] Update index.jelly --- .../plugins/credentials/ViewCredentialsAction/index.jelly | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly index f701802c7..29f37db9f 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly @@ -86,7 +86,7 @@
- + From 8604f37e29d538c5d5e0d0225202a4b5a27ebe62 Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Sat, 27 Dec 2025 20:14:39 +0000 Subject: [PATCH 28/34] Fix ATH --- .../CredentialsStoreAction/DomainWrapper/index.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties index c1ac54da2..1c76ae072 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/DomainWrapper/index.properties @@ -22,6 +22,6 @@ # THE SOFTWARE. # noCredentials=This credentials domain is empty -noCredentialsCallToAction=How about adding some credentials? +noCredentialsCallToAction=How about adding some credentials? delete.domain=Are you sure you want to delete {0}? delete.credential=Are you sure you want to delete {0}? From 80f5dbe915ecd47124d563812eb65da3c6bd9df4 Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Sun, 28 Dec 2025 09:49:25 +0000 Subject: [PATCH 29/34] Use different icon for globals --- .../plugins/credentials/CredentialsStoreAction.java | 10 +++++++++- .../credentials/CredentialsStoreAction/index.jelly | 3 +-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/cloudbees/plugins/credentials/CredentialsStoreAction.java b/src/main/java/com/cloudbees/plugins/credentials/CredentialsStoreAction.java index 5cd54db47..c726305f5 100644 --- a/src/main/java/com/cloudbees/plugins/credentials/CredentialsStoreAction.java +++ b/src/main/java/com/cloudbees/plugins/credentials/CredentialsStoreAction.java @@ -588,7 +588,7 @@ public boolean hasPermission(@NonNull Permission permission) { */ @ExportedBean public static class DomainWrapper extends AbstractDescribableImpl implements - ModelObjectWithContextMenu, ModelObjectWithChildren, AccessControlled { + ModelObjectWithContextMenu, ModelObjectWithChildren, AccessControlled, IconSpec { /** * The {@link CredentialsStoreAction} that we belong to. @@ -668,6 +668,14 @@ public String getDisplayName() { return isGlobal() ? Messages.CredentialsStoreAction_GlobalDomainDisplayName() : domain.getName(); } + /** + * {@inheritDoc} + */ + @Exported + public String getIconClassName() { + return isGlobal() ? "symbol-globe-outline plugin-ionicons-api" : "symbol-business-outline plugin-ionicons-api"; + } + /** * Return the full name. * diff --git a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly index 1f21cd4ae..66652fc79 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/CredentialsStoreAction/index.jelly @@ -55,8 +55,7 @@
From 0781ef42ab36d6c8a587c260332496feb889fd67 Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Sun, 28 Dec 2025 10:06:58 +0000 Subject: [PATCH 30/34] Use user avatar for user stores - happy to revert if not right approach --- .../plugins/credentials/CredentialsStore.java | 17 +++++++++++++++++ .../ViewCredentialsAction/index.jelly | 2 +- src/main/resources/lib/credentials/store.jelly | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/cloudbees/plugins/credentials/CredentialsStore.java b/src/main/java/com/cloudbees/plugins/credentials/CredentialsStore.java index 92b445dce..1ded3b0e3 100644 --- a/src/main/java/com/cloudbees/plugins/credentials/CredentialsStore.java +++ b/src/main/java/com/cloudbees/plugins/credentials/CredentialsStore.java @@ -50,6 +50,8 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; + +import hudson.tasks.UserAvatarResolver; import jenkins.model.Jenkins; import org.apache.commons.lang3.StringUtils; import org.kohsuke.stapler.Stapler; @@ -529,6 +531,21 @@ public String getRelativeLinkTo(Domain domain) { return relativeLink + domain.getUrl(); } + /** + * Returns the display name of the {@link #getContext()} of this {@link CredentialsStore}. + * + * @return the icon class name for the store. + * @since TODO + */ + public final String getIconClassName() { + ModelObject context = getContext(); + if (context instanceof User user) { + return UserAvatarResolver.resolve(user, "96x96"); + } else { + return getProviderOrDie().getIconClassName(); + } + } + /** * Returns the display name of the {@link #getContext()} of this {@link CredentialsStore}. The default * implementation can handle both {@link Item} and {@link ItemGroup} as long as these are accessible from diff --git a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly index 29f37db9f..5d3db25e8 100644 --- a/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly +++ b/src/main/resources/com/cloudbees/plugins/credentials/ViewCredentialsAction/index.jelly @@ -62,7 +62,7 @@
- + ${d.store.context == app ? d.store.displayName : d.store.contextDisplayName} - diff --git a/src/main/resources/lib/credentials/store.jelly b/src/main/resources/lib/credentials/store.jelly index c0dc78ff8..8cf47bee0 100644 --- a/src/main/resources/lib/credentials/store.jelly +++ b/src/main/resources/lib/credentials/store.jelly @@ -31,7 +31,7 @@ THE SOFTWARE.
- + ${store.context == app ? store.displayName : store.contextDisplayName} From c19f8c221b5afe540302fdb6fa02d5b6e2a3a8b1 Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Sun, 28 Dec 2025 10:09:06 +0000 Subject: [PATCH 31/34] Update CredentialsStore.java --- .../com/cloudbees/plugins/credentials/CredentialsStore.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/cloudbees/plugins/credentials/CredentialsStore.java b/src/main/java/com/cloudbees/plugins/credentials/CredentialsStore.java index 1ded3b0e3..7997817ca 100644 --- a/src/main/java/com/cloudbees/plugins/credentials/CredentialsStore.java +++ b/src/main/java/com/cloudbees/plugins/credentials/CredentialsStore.java @@ -532,7 +532,7 @@ public String getRelativeLinkTo(Domain domain) { } /** - * Returns the display name of the {@link #getContext()} of this {@link CredentialsStore}. + * Returns the icon class name of the {@link #getContext()} of this {@link CredentialsStore}. * * @return the icon class name for the store. * @since TODO From c3818b6c4095bd257966726d52ab0ffff6427985 Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Sun, 28 Dec 2025 21:37:38 +0000 Subject: [PATCH 32/34] Don't need to export iconClassName --- .../cloudbees/plugins/credentials/CredentialsStoreAction.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/cloudbees/plugins/credentials/CredentialsStoreAction.java b/src/main/java/com/cloudbees/plugins/credentials/CredentialsStoreAction.java index c726305f5..2ab271813 100644 --- a/src/main/java/com/cloudbees/plugins/credentials/CredentialsStoreAction.java +++ b/src/main/java/com/cloudbees/plugins/credentials/CredentialsStoreAction.java @@ -671,7 +671,6 @@ public String getDisplayName() { /** * {@inheritDoc} */ - @Exported public String getIconClassName() { return isGlobal() ? "symbol-globe-outline plugin-ionicons-api" : "symbol-business-outline plugin-ionicons-api"; } From 362ecf05cff517b66fd3fdda30011621a466d247 Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Tue, 30 Dec 2025 21:44:09 +0000 Subject: [PATCH 33/34] Increase baseline for jenkins-badge --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 8e27c23be..d2ea35562 100644 --- a/pom.xml +++ b/pom.xml @@ -68,8 +68,8 @@ 999999-SNAPSHOT jenkinsci/${project.artifactId}-plugin - 2.479 - ${jenkins.baseline}.1 + 2.504 + ${jenkins.baseline}.3 false 1372 @@ -92,7 +92,7 @@ io.jenkins.tools.bom bom-${jenkins.baseline}.x - 3482.vc10d4f6da_28a_ + 5804.v80587a_38d937 import pom From 0e3a77f96c1811e3c5f3a9a433806b88774cfc8a Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Tue, 30 Dec 2025 21:55:25 +0000 Subject: [PATCH 34/34] Adjust junit5 import from not up-to date branch Would file separately but Windows tests in this repo are rediculously slow --- .../plugins/credentials/ViewCredentialsActionTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/cloudbees/plugins/credentials/ViewCredentialsActionTest.java b/src/test/java/com/cloudbees/plugins/credentials/ViewCredentialsActionTest.java index c459f5a41..4e7e6c45f 100644 --- a/src/test/java/com/cloudbees/plugins/credentials/ViewCredentialsActionTest.java +++ b/src/test/java/com/cloudbees/plugins/credentials/ViewCredentialsActionTest.java @@ -2,8 +2,8 @@ import static com.cloudbees.plugins.credentials.XmlMatchers.isSimilarToIgnoringPrivateAttrs; import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.Assert.assertNotNull; import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue;