Merge branch 'master' into remove-help-tooltip

This commit is contained in:
Kris Stern 2025-08-13 20:50:48 +08:00 committed by GitHub
commit ebf99a74c0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 88 additions and 78 deletions

View File

@ -54,7 +54,7 @@ jobs:
repositories: >-
["jenkins.io"]
- name: Check out
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Publish jenkins.io changelog draft

View File

@ -15,7 +15,7 @@ jobs:
is-lts: ${{ steps.set-version.outputs.is-lts }}
is-rc: ${{ steps.set-version.outputs.is-rc }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Set up JDK 17
uses: actions/setup-java@v4
with:

View File

@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest
if: ${{ github.repository_owner == 'jenkinsci' }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Run update-since-todo.py

View File

@ -117,11 +117,6 @@ THE SOFTWARE.
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.infradna.tool</groupId>
<artifactId>bridge-method-annotation</artifactId>
<version>${bridge-method-injector.version}</version>
</dependency>
<dependency>
<groupId>com.sun.xml.txw2</groupId>
<artifactId>txw2</artifactId>
@ -168,6 +163,11 @@ THE SOFTWARE.
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
<dependency>
<groupId>io.jenkins.tools</groupId>
<artifactId>bridge-method-annotation</artifactId>
<version>${bridge-method-injector.version}</version>
</dependency>
<dependency>
<!-- needed by Jelly -->
<groupId>jakarta.servlet.jsp.jstl</groupId>
@ -568,7 +568,7 @@ THE SOFTWARE.
</executions>
</plugin>
<plugin>
<groupId>com.infradna.tool</groupId>
<groupId>io.jenkins.tools</groupId>
<artifactId>bridge-method-injector</artifactId>
<executions>
<execution>

View File

@ -28,6 +28,7 @@ THE SOFTWARE.
xmlns:i="jelly:fmt" xmlns:p="/lib/hudson/project">
<j:set var="escapeEntryTitleAndDescription" value="false"/>
<f:entry description="${it.formattedDescription}">
<f:checkbox title="${h.escape(it.name)}" name="value" checked="${it.value}" readonly="true" />
<j:set var="readOnlyMode" value="true"/>
<f:checkbox title="${h.escape(it.name)}" name="value" checked="${it.value}"/>
</f:entry>
</j:jelly>

View File

@ -35,6 +35,7 @@ THE SOFTWARE.
<l:main-panel>
<t:buildCaption it="${build}">${title}</t:buildCaption>
<j:set var="escapeEntryTitleAndDescription" value="true" /> <!-- SECURITY-353 defense unless overridden -->
<j:set var="readOnlyMode" value="true"/>
<j:forEach var="parameterValue" items="${it.parameters}">
<st:include it="${parameterValue}" page="value.jelly" />
</j:forEach>

View File

@ -24,10 +24,11 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define"
xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form"
xmlns:i="jelly:fmt" xmlns:p="/lib/hudson/project">
<j:set var="escapeEntryTitleAndDescription" value="false"/>
<f:entry title="${h.escape(it.name)}" description="${it.formattedDescription}">
<f:textbox name="value" value="${it.value}" readonly="true" />
</f:entry>
xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form"
xmlns:i="jelly:fmt" xmlns:p="/lib/hudson/project">
<j:set var="escapeEntryTitleAndDescription" value="false"/>
<f:entry title="${h.escape(it.name)}" description="${it.formattedDescription}">
<j:set var="readOnlyMode" value="true"/>
<f:textbox name="value" value="${it.value}"/>
</f:entry>
</j:jelly>

View File

@ -26,8 +26,9 @@ THE SOFTWARE.
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define"
xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form"
xmlns:i="jelly:fmt" xmlns:p="/lib/hudson/project">
<j:set var="escapeEntryTitleAndDescription" value="false"/>
<f:entry title="${h.escape(it.name)}" description="${it.formattedDescription}">
<f:textarea name="value" value="${it.value}" readonly="readonly" />
</f:entry>
<j:set var="escapeEntryTitleAndDescription" value="false"/>
<f:entry title="${h.escape(it.name)}" description="${it.formattedDescription}">
<j:set var="readOnlyMode" value="true"/>
<f:textarea name="value" value="${it.value}"/>
</f:entry>
</j:jelly>

View File

@ -83,9 +83,9 @@ THE SOFTWARE.
name="${name}"
value="${attrs.value}"
title="${attrs.tooltip}"
onclick="${attrs.readonly=='true' ? 'return false;' : attrs.onclick}" id="${attrs.id}" class="${attrs.class} ${attrs.negative!=null ? 'negative' : null} ${attrs.checkUrl!=null?'validated':''}"
onclick="${attrs.readonly=='true' ? null : attrs.onclick}" id="${attrs.id}" class="${attrs.class} ${attrs.negative!=null ? 'negative' : null} ${attrs.checkUrl!=null?'validated':''}"
checkUrl="${attrs.checkUrl}" checkDependsOn="${attrs.checkDependsOn}" json="${attrs.json}"
disabled="${readOnlyMode ? 'true' : null}"
disabled="${readOnlyMode or attrs.readonly=='true' ? 'true' : null}"
checked="${value ? 'true' : null}"/>
<label class="attach-previous ${attrs.title == null ? 'js-checkbox-label-empty' : ''}"
title="${attrs.tooltip}">${attrs.title}</label>

View File

@ -24,7 +24,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define">
<st:documentation> <![CDATA[
<st:documentation> <![CDATA[
<input type="radio"> tag that takes true/false for @checked, which is more Jelly friendly.
Note that Safari doesn't support onchange.
@ -38,7 +38,13 @@ THE SOFTWARE.
<st:attribute name="checked" />
<st:attribute name="value" />
<st:attribute name="id" />
<st:attribute name="onclick" />
<st:attribute name="onclick" deprecated="true">
Inline JavaScript to execute when the checkbox is clicked.
Deprecated because this attribute is incompatible with adding Content-Security-Policy to the Jenkins UI in the future.
Set 'id' or 'class' attributes as appropriate to look up this element in external Javascript files (e.g. adjuncts)
to add the desired behavior there (DOMContentLoaded event in static forms, Behaviour.specify if this element may be
dynamically added). See https://github.com/jenkinsci/jenkins/pull/6852 for an example.
</st:attribute>
<st:attribute name="title">
If specified, this human readable text will follow the radio, and clicking this text also
toggles the radio.

View File

@ -26,17 +26,17 @@
"@babel/cli": "7.28.0",
"@babel/core": "7.28.0",
"@babel/preset-env": "7.28.0",
"@eslint/js": "9.32.0",
"@eslint/js": "9.33.0",
"babel-loader": "10.0.0",
"clean-webpack-plugin": "4.0.0",
"css-loader": "7.1.2",
"css-minimizer-webpack-plugin": "7.0.2",
"eslint": "9.32.0",
"eslint": "9.33.0",
"eslint-config-prettier": "10.1.8",
"eslint-formatter-checkstyle": "8.40.0",
"globals": "16.3.0",
"handlebars-loader": "1.7.3",
"mini-css-extract-plugin": "2.9.3",
"mini-css-extract-plugin": "2.9.4",
"postcss": "8.5.6",
"postcss-loader": "8.1.1",
"postcss-preset-env": "10.2.4",

12
pom.xml
View File

@ -73,9 +73,9 @@ THE SOFTWARE.
</issueManagement>
<properties>
<revision>2.523</revision>
<revision>2.524</revision>
<changelist>-SNAPSHOT</changelist>
<project.build.outputTimestamp>2025-08-05T13:07:43Z</project.build.outputTimestamp>
<project.build.outputTimestamp>2025-08-12T13:07:48Z</project.build.outputTimestamp>
<!-- configuration for patch tracker plugin -->
<project.patchManagement.system>github</project.patchManagement.system>
@ -94,11 +94,11 @@ THE SOFTWARE.
<access-modifier.version>1.35</access-modifier.version>
<antlr.version>4.13.2</antlr.version>
<bridge-method-injector.version>1.31</bridge-method-injector.version>
<bridge-method-injector.version>1.32</bridge-method-injector.version>
<spotless.check.skip>false</spotless.check.skip>
<!-- Make sure to keep the jetty-ee9-maven-plugin version in war/pom.xml in sync with the Jetty release in Winstone: -->
<winstone.version>8.12</winstone.version>
<node.version>22.18.0</node.version>
<winstone.version>8.13</winstone.version>
<node.version>24.5.0</node.version>
</properties>
<!--
@ -223,7 +223,7 @@ THE SOFTWARE.
<version>1.1</version>
</plugin>
<plugin>
<groupId>com.infradna.tool</groupId>
<groupId>io.jenkins.tools</groupId>
<artifactId>bridge-method-injector</artifactId>
<version>${bridge-method-injector.version}</version>
</plugin>

View File

@ -64,8 +64,8 @@ td.no-wrap {
#safe-restart-msg {
font-weight: bold;
color: white;
background-color: var(--warning);
color: var(--background) !important;
background-color: var(--warning-color);
text-align: center;
margin-bottom: var(--section-padding);
padding: 0.5em;
@ -75,8 +75,8 @@ td.no-wrap {
#shutdown-msg {
font-weight: bold;
color: white;
background-color: #ef2929;
color: var(--background) !important;
background-color: var(--destructive-color);
text-align: center;
margin-bottom: var(--section-padding);
padding: 0.5em;

View File

@ -104,7 +104,7 @@ THE SOFTWARE.
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>ant</artifactId>
<version>513.vde9e7b_a_0da_0f</version>
<version>518.v8d8dc7945eca_</version>
</dependency>
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
@ -132,7 +132,7 @@ THE SOFTWARE.
<dependency>
<groupId>org.jenkins-ci.plugins.workflow</groupId>
<artifactId>workflow-api</artifactId>
<version>1382.veca_a_efe062fa_</version>
<version>1384.vdc05a_48f535f</version>
</dependency>
<dependency>
<groupId>org.jenkins-ci.plugins.workflow</groupId>
@ -262,7 +262,7 @@ THE SOFTWARE.
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>matrix-project</artifactId>
<version>849.v0cd64ed7e531</version>
<version>856.v4c352b_3a_b_23e</version>
<scope>test</scope>
</dependency>
<dependency>

View File

@ -267,7 +267,7 @@ class ParametersTest {
assertAll(
() -> assertThat("parameters page should escape param name", text2, containsString("&lt;param name&gt;")),
() -> assertThat("parameters page should not leave param name unescaped", text2, not(containsString("<param name>"))),
() -> assertThat("parameters page should escape param value", text2, containsString("&lt;param value&gt;")),
() -> assertThat("parameters page should escape param value", text2, containsString("&lt;param value>")),
() -> assertThat("parameters page should not leave param value unescaped", text2, not(containsString("<param value>"))),
() -> assertThat("parameters page should mark up param description", text2, containsString("<b>[</b>param description<b>]</b>")),
() -> assertThat("parameters page should not leave param description unescaped", text2, not(containsString("<param description>")))

View File

@ -148,7 +148,7 @@ THE SOFTWARE.
<enforceBytecodeVersion>
<maxJdkVersion>11</maxJdkVersion>
<excludes>
<exclude>com.infradna.tool:bridge-method-annotation</exclude>
<exclude>io.jenkins.tools:bridge-method-annotation</exclude>
<exclude>org.jenkins-ci:annotation-indexer</exclude>
<exclude>org.jenkins-ci:commons-jelly</exclude>
<exclude>org.jenkins-ci:commons-jelly-tags-fmt</exclude>
@ -304,7 +304,7 @@ THE SOFTWARE.
<!-- detached after 1.561 -->
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>matrix-project</artifactId>
<version>849.v0cd64ed7e531</version>
<version>856.v4c352b_3a_b_23e</version>
<type>hpi</type>
</artifactItem>
<artifactItem>
@ -325,7 +325,7 @@ THE SOFTWARE.
<!-- dependency of junit, plugin-util-api, and workflow-support -->
<groupId>org.jenkins-ci.plugins.workflow</groupId>
<artifactId>workflow-api</artifactId>
<version>1382.veca_a_efe062fa_</version>
<version>1384.vdc05a_48f535f</version>
<type>hpi</type>
</artifactItem>
<artifactItem>
@ -464,7 +464,7 @@ THE SOFTWARE.
<!-- detached after 2.281 -->
<groupId>org.jenkins-ci.modules</groupId>
<artifactId>sshd</artifactId>
<version>3.372.v5d04a_e92d8cf</version>
<version>3.374.v19b_d59ce6610</version>
<type>hpi</type>
</artifactItem>
<artifactItem>
@ -654,7 +654,7 @@ THE SOFTWARE.
contains a version of Jetty that is older than this, trigger Dependabot in jenkinsci/winstone and release the
result before proceeding with the update here.
-->
<version>12.0.24</version>
<version>12.0.25</version>
<configuration>
<!--
Reload webapp when you hit ENTER. (See JETTY-282 for more)

View File

@ -1688,19 +1688,19 @@ __metadata:
languageName: node
linkType: hard
"@eslint/config-helpers@npm:^0.3.0":
version: 0.3.0
resolution: "@eslint/config-helpers@npm:0.3.0"
checksum: 10c0/013ae7b189eeae8b30cc2ee87bc5c9c091a9cd615579003290eb28bebad5d78806a478e74ba10b3fe08ed66975b52af7d2cd4b4b43990376412b14e5664878c8
"@eslint/config-helpers@npm:^0.3.1":
version: 0.3.1
resolution: "@eslint/config-helpers@npm:0.3.1"
checksum: 10c0/f6c5b3a0b76a0d7d84cc93e310c259e6c3e0792ddd0a62c5fc0027796ffae44183432cb74b2c2b1162801ee1b1b34a6beb5d90a151632b4df7349f994146a856
languageName: node
linkType: hard
"@eslint/core@npm:^0.15.0, @eslint/core@npm:^0.15.1":
version: 0.15.1
resolution: "@eslint/core@npm:0.15.1"
"@eslint/core@npm:^0.15.2":
version: 0.15.2
resolution: "@eslint/core@npm:0.15.2"
dependencies:
"@types/json-schema": "npm:^7.0.15"
checksum: 10c0/abaf641940776638b8c15a38d99ce0dac551a8939310ec81b9acd15836a574cf362588eaab03ab11919bc2a0f9648b19ea8dee33bf12675eb5b6fd38bda6f25e
checksum: 10c0/c17a6dc4f5a6006ecb60165cc38bcd21fefb4a10c7a2578a0cfe5813bbd442531a87ed741da5adab5eb678e8e693fda2e2b14555b035355537e32bcec367ea17
languageName: node
linkType: hard
@ -1721,10 +1721,10 @@ __metadata:
languageName: node
linkType: hard
"@eslint/js@npm:9.32.0":
version: 9.32.0
resolution: "@eslint/js@npm:9.32.0"
checksum: 10c0/f71e8f9146638d11fb15238279feff98801120a4d4130f1c587c4f09b024ff5ec01af1ba88e97ba6b7013488868898a668f77091300cc3d4394c7a8ed32d2667
"@eslint/js@npm:9.33.0":
version: 9.33.0
resolution: "@eslint/js@npm:9.33.0"
checksum: 10c0/4c42c9abde76a183b8e47205fd6c3116b058f82f07b6ad4de40de56cdb30a36e9ecd40efbea1b63a84d08c206aadbb0aa39a890197e1ad6455a8e542df98f186
languageName: node
linkType: hard
@ -1735,13 +1735,13 @@ __metadata:
languageName: node
linkType: hard
"@eslint/plugin-kit@npm:^0.3.4":
version: 0.3.4
resolution: "@eslint/plugin-kit@npm:0.3.4"
"@eslint/plugin-kit@npm:^0.3.5":
version: 0.3.5
resolution: "@eslint/plugin-kit@npm:0.3.5"
dependencies:
"@eslint/core": "npm:^0.15.1"
"@eslint/core": "npm:^0.15.2"
levn: "npm:^0.4.1"
checksum: 10c0/64331ca100f62a0115d10419a28059d0f377e390192163b867b9019517433d5073d10b4ec21f754fa01faf832aceb34178745924baab2957486f8bf95fd628d2
checksum: 10c0/c178c1b58c574200c0fd125af3e4bc775daba7ce434ba6d1eeaf9bcb64b2e9fea75efabffb3ed3ab28858e55a016a5efa95f509994ee4341b341199ca630b89e
languageName: node
linkType: hard
@ -3524,18 +3524,18 @@ __metadata:
languageName: node
linkType: hard
"eslint@npm:9.32.0":
version: 9.32.0
resolution: "eslint@npm:9.32.0"
"eslint@npm:9.33.0":
version: 9.33.0
resolution: "eslint@npm:9.33.0"
dependencies:
"@eslint-community/eslint-utils": "npm:^4.2.0"
"@eslint-community/regexpp": "npm:^4.12.1"
"@eslint/config-array": "npm:^0.21.0"
"@eslint/config-helpers": "npm:^0.3.0"
"@eslint/core": "npm:^0.15.0"
"@eslint/config-helpers": "npm:^0.3.1"
"@eslint/core": "npm:^0.15.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:9.32.0"
"@eslint/plugin-kit": "npm:^0.3.4"
"@eslint/js": "npm:9.33.0"
"@eslint/plugin-kit": "npm:^0.3.5"
"@humanfs/node": "npm:^0.16.6"
"@humanwhocodes/module-importer": "npm:^1.0.1"
"@humanwhocodes/retry": "npm:^0.4.2"
@ -3570,7 +3570,7 @@ __metadata:
optional: true
bin:
eslint: bin/eslint.js
checksum: 10c0/e8a23924ec5f8b62e95483002ca25db74e25c23bd9c6d98a9f656ee32f820169bee3bfdf548ec728b16694f198b3db857d85a49210ee4a035242711d08fdc602
checksum: 10c0/1e1f60d2b62d9d65553e9af916a8dccf00eeedd982103f35bf58c205803907cb1fda73ef595178d47384ea80d8624a182b63682a6b15d8387e9a5d86904a2a2d
languageName: node
linkType: hard
@ -4348,12 +4348,12 @@ __metadata:
"@babel/cli": "npm:7.28.0"
"@babel/core": "npm:7.28.0"
"@babel/preset-env": "npm:7.28.0"
"@eslint/js": "npm:9.32.0"
"@eslint/js": "npm:9.33.0"
babel-loader: "npm:10.0.0"
clean-webpack-plugin: "npm:4.0.0"
css-loader: "npm:7.1.2"
css-minimizer-webpack-plugin: "npm:7.0.2"
eslint: "npm:9.32.0"
eslint: "npm:9.33.0"
eslint-config-prettier: "npm:10.1.8"
eslint-formatter-checkstyle: "npm:8.40.0"
globals: "npm:16.3.0"
@ -4362,7 +4362,7 @@ __metadata:
hotkeys-js: "npm:3.12.2"
jquery: "npm:3.7.1"
lodash: "npm:4.17.21"
mini-css-extract-plugin: "npm:2.9.3"
mini-css-extract-plugin: "npm:2.9.4"
postcss: "npm:8.5.6"
postcss-loader: "npm:8.1.1"
postcss-preset-env: "npm:10.2.4"
@ -4814,15 +4814,15 @@ __metadata:
languageName: node
linkType: hard
"mini-css-extract-plugin@npm:2.9.3":
version: 2.9.3
resolution: "mini-css-extract-plugin@npm:2.9.3"
"mini-css-extract-plugin@npm:2.9.4":
version: 2.9.4
resolution: "mini-css-extract-plugin@npm:2.9.4"
dependencies:
schema-utils: "npm:^4.0.0"
tapable: "npm:^2.2.1"
peerDependencies:
webpack: ^5.0.0
checksum: 10c0/2e661aeba2ffd6f8b8d618de3498c495f1e1628b76a8e3fb31f3685586d12ba7d166788b1d57912becff5a0f700c74625e4fe9d54874176d7a218af0c6f7c24f
checksum: 10c0/76f9e471784d52435ea766ce576ad23d37d0ea51c32ddc56414c8fdf14f7de44202dbc772cdf7549b7e54a5e56f569af93cfbd036d62d13ff8fd9571e53353b7
languageName: node
linkType: hard