-
+
${attrs.prefix}
@@ -47,7 +47,7 @@ THE SOFTWARE.
-
+
${attrs.suffix}
diff --git a/war/src/main/scss/components/_tooltips.scss b/war/src/main/scss/components/_tooltips.scss
index 972db7310a36..6743f6c88180 100644
--- a/war/src/main/scss/components/_tooltips.scss
+++ b/war/src/main/scss/components/_tooltips.scss
@@ -85,7 +85,6 @@
transparent 60%
);
mask-size: 200% 200%;
- mask-position: center;
animation: shortcut-glow-animation 1.25s forwards linear;
}
From 8c2ef1a2aafd7f258128e503c3323253ce65b659 Mon Sep 17 00:00:00 2001
From: Tim Jacomb
Date: Sat, 16 Dec 2023 21:48:24 +0000
Subject: [PATCH 04/25] Update localisation
---
core/src/main/resources/lib/layout/search-bar_pl.properties | 3 ++-
core/src/main/resources/lib/layout/search-bar_pt_BR.properties | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/core/src/main/resources/lib/layout/search-bar_pl.properties b/core/src/main/resources/lib/layout/search-bar_pl.properties
index 1404a046d112..981d1139e20b 100644
--- a/core/src/main/resources/lib/layout/search-bar_pl.properties
+++ b/core/src/main/resources/lib/layout/search-bar_pl.properties
@@ -20,4 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Press\ /\ on\ your\ keyboard\ to\ focus=Naciśnij / na klawiaturze, aby przesunąć tutaj kursor
+Press=Naciśnij
+on\ your\ keyboard\ to\ focus=na klawiaturze, aby przesunąć tutaj kursor
diff --git a/core/src/main/resources/lib/layout/search-bar_pt_BR.properties b/core/src/main/resources/lib/layout/search-bar_pt_BR.properties
index b676df91ce65..3f18e2c77e31 100644
--- a/core/src/main/resources/lib/layout/search-bar_pt_BR.properties
+++ b/core/src/main/resources/lib/layout/search-bar_pt_BR.properties
@@ -21,4 +21,5 @@
# THE SOFTWARE.
Search=Busca
-Press\ /\ on\ your\ keyboard\ to\ focus=Digite /\ no seu teclado para realçar
+Press=Digite
+on\ your\ keyboard\ to\ focus=no seu teclado para realçar
From ce09ad88d41086e7ebaed94c7397ac9aa669e695 Mon Sep 17 00:00:00 2001
From: Tim Jacomb <21194782+timja@users.noreply.github.com>
Date: Sun, 17 Dec 2023 08:07:48 +0000
Subject: [PATCH 05/25] Update core/src/main/java/hudson/Functions.java
---
core/src/main/java/hudson/Functions.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/core/src/main/java/hudson/Functions.java b/core/src/main/java/hudson/Functions.java
index b22f32c2a8d7..a923ada89c9e 100644
--- a/core/src/main/java/hudson/Functions.java
+++ b/core/src/main/java/hudson/Functions.java
@@ -2481,7 +2481,7 @@ public static String generateItemId() {
/**
* @param keyboardShortcut the shortcut to be translated
- * @return the translated shortcut, e.g. CMD+K -> ⌘+K for macOS, CTRL+K for Windows
+ * @return the translated shortcut, e.g. CMD+K to ⌘+K for macOS, CTRL+K for Windows
*/
@Restricted(NoExternalUse.class)
public static String translateModifierKeysForUsersPlatform(String keyboardShortcut) {
From 5551fc91f2ec11e3115249223f79b3b0d2bd8526 Mon Sep 17 00:00:00 2001
From: Tim Jacomb
Date: Wed, 3 Apr 2024 14:36:29 +0100
Subject: [PATCH 06/25] Allow setting empty prefix or suffix
---
core/src/main/resources/lib/layout/keyboard-shortcut.jelly | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/core/src/main/resources/lib/layout/keyboard-shortcut.jelly b/core/src/main/resources/lib/layout/keyboard-shortcut.jelly
index 56dfa40c128e..4445b3d188bb 100644
--- a/core/src/main/resources/lib/layout/keyboard-shortcut.jelly
+++ b/core/src/main/resources/lib/layout/keyboard-shortcut.jelly
@@ -36,7 +36,7 @@ THE SOFTWARE.
-
+
${attrs.prefix}
@@ -47,7 +47,7 @@ THE SOFTWARE.
-
+
${attrs.suffix}
From f925849ca72c2bdb34497cbed87d9ac05088ce9d Mon Sep 17 00:00:00 2001
From: Daniel Beck
Date: Sun, 21 Apr 2024 00:08:51 +0200
Subject: [PATCH 07/25] Combine into one format string with escaped format
placeholder
---
core/src/main/java/hudson/Functions.java | 6 +++++
.../lib/layout/keyboard-shortcut.jelly | 27 +++++--------------
.../resources/lib/layout/search-bar.jelly | 2 +-
.../lib/layout/search-bar_pl.properties | 3 +--
.../lib/layout/search-bar_pt_BR.properties | 3 +--
5 files changed, 16 insertions(+), 25 deletions(-)
diff --git a/core/src/main/java/hudson/Functions.java b/core/src/main/java/hudson/Functions.java
index f4bd61351e97..b02bd2b54695 100644
--- a/core/src/main/java/hudson/Functions.java
+++ b/core/src/main/java/hudson/Functions.java
@@ -117,6 +117,7 @@
import java.nio.charset.StandardCharsets;
import java.text.DateFormat;
import java.text.DecimalFormat;
+import java.text.MessageFormat;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
@@ -2505,4 +2506,9 @@ public static String translateModifierKeysForUsersPlatform(String keyboardShortc
return keyboardShortcut.replace("CMD", useCmdKey ? "⌘" : "CTRL");
}
+
+ @Restricted(NoExternalUse.class)
+ public static String formatMessage(String format, Object args) {
+ return MessageFormat.format(format, args);
+ }
}
diff --git a/core/src/main/resources/lib/layout/keyboard-shortcut.jelly b/core/src/main/resources/lib/layout/keyboard-shortcut.jelly
index 4445b3d188bb..bd41355559ad 100644
--- a/core/src/main/resources/lib/layout/keyboard-shortcut.jelly
+++ b/core/src/main/resources/lib/layout/keyboard-shortcut.jelly
@@ -25,32 +25,19 @@ THE SOFTWARE.
-
- Optional prefix to the shortcut
-
-
- Optional suffix to the shortcut
+
+ Optional message for the shortcut
Displays a keyboard shortcut chip based on the component's body.
CMD will automatically be translated to the user's operating system's appropriate variant.
-
-
- ${attrs.prefix}
-
-
-
-
+
+
-
-
-
-
-
- ${attrs.suffix}
-
-
+
+
+
diff --git a/core/src/main/resources/lib/layout/search-bar.jelly b/core/src/main/resources/lib/layout/search-bar.jelly
index 8dbe681fef93..1e77c2be8a21 100644
--- a/core/src/main/resources/lib/layout/search-bar.jelly
+++ b/core/src/main/resources/lib/layout/search-bar.jelly
@@ -59,7 +59,7 @@ THE SOFTWARE.
disabled="${attrs.enabled == false ? true : null}" />
-
+
diff --git a/core/src/main/resources/lib/layout/search-bar_pl.properties b/core/src/main/resources/lib/layout/search-bar_pl.properties
index 981d1139e20b..b9de372589b4 100644
--- a/core/src/main/resources/lib/layout/search-bar_pl.properties
+++ b/core/src/main/resources/lib/layout/search-bar_pl.properties
@@ -20,5 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Press=Naciśnij
-on\ your\ keyboard\ to\ focus=na klawiaturze, aby przesunąć tutaj kursor
+shortcut=Naciśnij '{0}' na klawiaturze, aby przesunąć tutaj kursor
diff --git a/core/src/main/resources/lib/layout/search-bar_pt_BR.properties b/core/src/main/resources/lib/layout/search-bar_pt_BR.properties
index 3f18e2c77e31..3d3b237a71f2 100644
--- a/core/src/main/resources/lib/layout/search-bar_pt_BR.properties
+++ b/core/src/main/resources/lib/layout/search-bar_pt_BR.properties
@@ -21,5 +21,4 @@
# THE SOFTWARE.
Search=Busca
-Press=Digite
-on\ your\ keyboard\ to\ focus=no seu teclado para realçar
+shortcut=Digite '{0}' no seu teclado para realçar
From b0d87b9ada3710aa35ce6bf3a90c7e88af15080c Mon Sep 17 00:00:00 2001
From: Tim Jacomb
Date: Wed, 29 May 2024 21:29:14 +0100
Subject: [PATCH 08/25] Add english default message
---
.../lib/layout/search-bar.properties | 23 +++++++++++++++++++
1 file changed, 23 insertions(+)
create mode 100644 core/src/main/resources/lib/layout/search-bar.properties
diff --git a/core/src/main/resources/lib/layout/search-bar.properties b/core/src/main/resources/lib/layout/search-bar.properties
new file mode 100644
index 000000000000..5a17184bb037
--- /dev/null
+++ b/core/src/main/resources/lib/layout/search-bar.properties
@@ -0,0 +1,23 @@
+# The MIT License
+#
+# Copyright (c) 2023, Damian Szczepanik
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+shortcut=Press '{0}' on your keyboard to focus
From 02a8466f6bd0861a3a11cca8362ccd413e536f51 Mon Sep 17 00:00:00 2001
From: Tim Jacomb
Date: Mon, 3 Jun 2024 16:22:25 +0100
Subject: [PATCH 09/25] More detailed wording for message attribute
---
core/src/main/resources/lib/layout/keyboard-shortcut.jelly | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/core/src/main/resources/lib/layout/keyboard-shortcut.jelly b/core/src/main/resources/lib/layout/keyboard-shortcut.jelly
index bd41355559ad..209ffabcf993 100644
--- a/core/src/main/resources/lib/layout/keyboard-shortcut.jelly
+++ b/core/src/main/resources/lib/layout/keyboard-shortcut.jelly
@@ -26,7 +26,7 @@ THE SOFTWARE.
- Optional message for the shortcut
+ Tooltip message for the shortcut. Use the placeholder {0} escaped (wrapped in '). A minimal message consisting of only the shortcut would be '{0}'.
Displays a keyboard shortcut chip based on the component's body.
CMD will automatically be translated to the user's operating system's appropriate variant.
From 08c24de7f4552bf1ed25c875b5251b50a24bbb4b Mon Sep 17 00:00:00 2001
From: Jan Faracik <43062514+janfaracik@users.noreply.github.com>
Date: Sun, 4 Aug 2024 15:53:50 +0100
Subject: [PATCH 10/25] Update keyboard shortcut component
---
.../lib/layout/keyboard-shortcut.jelly | 49 +++++++--
.../resources/lib/layout/search-bar.jelly | 9 +-
war/src/main/scss/components/_tooltips.scss | 100 ++++++++++--------
war/src/main/scss/form/_search-bar.scss | 43 +++-----
4 files changed, 105 insertions(+), 96 deletions(-)
diff --git a/core/src/main/resources/lib/layout/keyboard-shortcut.jelly b/core/src/main/resources/lib/layout/keyboard-shortcut.jelly
index 209ffabcf993..0e9ebf9395ab 100644
--- a/core/src/main/resources/lib/layout/keyboard-shortcut.jelly
+++ b/core/src/main/resources/lib/layout/keyboard-shortcut.jelly
@@ -23,21 +23,48 @@ THE SOFTWARE.
-->
-
+
+
+ The shortcut to display
+
+ CMD will automatically be translated to the user's operating system's appropriate variant
+
+ This attribute also supports Jenkins Symbols, values prefixed with 'symbol-' will be displayed as expected
+
- Tooltip message for the shortcut. Use the placeholder {0} escaped (wrapped in '). A minimal message consisting of only the shortcut would be '{0}'.
+ Optional tooltip message for the shortcut. Use the placeholder {0} escaped (wrapped in '). A minimal message consisting of
+ only the shortcut would be '{0}'
- Displays a keyboard shortcut chip based on the component's body.
- CMD will automatically be translated to the user's operating system's appropriate variant.
+ Displays a keyboard shortcut chip
-
For any project, it's critical to know how the software is used, but tracking usage data is inherently difficult in open-source projects.
Anonymous usage statistics address this need.
When enabled, Jenkins periodically sends information to the Jenkins project.
The Jenkins project uses this information to set development priorities.
-
+
-
General usage statistics
+
General usage statistics
Jenkins reports the following general usage statistics:
@@ -24,7 +24,7 @@
-
Telemetry collection
+
Telemetry collection
@@ -38,24 +38,34 @@
Each trial has a specific purpose and a defined end date, after which collection stops, independent of the installed versions of Jenkins or plugins.
Once a trial is complete, the trial results may be aggregated and shared with the developer community.
-
- The following trials defined on this instance are active now or in the future:
-
+
+
-
-
-
-
${collector.displayName}
-
-
-
- Start date: ${collector.start}
- End date: ${collector.end}
-
-
-
-
-
+
+
+
${%There are currently no active trials.}
+
+
+
+ The following trials defined on this instance are active now or in the future:
+
+
+
+
+
${collector.displayName}
+
+
+
+ Start date: ${collector.start}
+
+ End date: ${collector.end}
+
+
+
+
+
+
+
diff --git a/src/main/scss/base/_style.scss b/src/main/scss/base/_style.scss
index 273d583d4ca9..98807c6e5401 100644
--- a/src/main/scss/base/_style.scss
+++ b/src/main/scss/base/_style.scss
@@ -372,6 +372,8 @@ pre.console {
border-radius: 6px;
z-index: 0;
+ --section-padding: 0.8rem;
+
&::before {
content: "";
position: absolute;
@@ -389,6 +391,24 @@ pre.console {
p:last-of-type {
margin-bottom: 0;
}
+
+ // add spacing above headings except for when its the first element in the help
+ // the need for this is caused by p:last-of-type setting margin-bottom to 0
+ // unfortunately because of the varied markup I wasn't able to find a way to avoid this
+ h1:not(:first-child),
+ .h1:not(:first-child),
+ h2:not(:first-child),
+ .h2:not(:first-child),
+ h3:not(:first-child),
+ .h3:not(:first-child),
+ h4:not(:first-child),
+ .h4:not(:first-child),
+ h5:not(:first-child),
+ .h5:not(:first-child),
+ h6:not(:first-child),
+ .h6:not(:first-child) {
+ margin-top: var(--section-padding);
+ }
}
.help .from-plugin {
From 930c7ffe7da6bc1d655db837feaa8a6bd2a06ac3 Mon Sep 17 00:00:00 2001
From: Jan Faracik <43062514+janfaracik@users.noreply.github.com>
Date: Mon, 9 Dec 2024 22:19:12 +0000
Subject: [PATCH 25/25] Overhaul search with a Command Palette (#7569)
Co-authored-by: Wadeck Follonier
Co-authored-by: Tim Jacomb <21194782+timja@users.noreply.github.com>
Co-authored-by: Alexander Brandes
Co-authored-by: Tim Jacomb
---
core/src/main/java/hudson/Functions.java | 10 +
core/src/main/java/hudson/model/Job.java | 2 +-
core/src/main/java/hudson/search/Search.java | 15 +-
.../java/hudson/search/SuggestedItem.java | 2 +-
core/src/main/java/jenkins/model/Jenkins.java | 4 +-
.../jenkins/views/JenkinsHeader/search-box.js | 6 -
.../lib/layout/command-palette.jelly | 47 +++++
.../lib/layout/header/searchbox.jelly | 38 ++--
.../main/resources/lib/layout/layout.jelly | 1 +
eslint.config.cjs | 1 -
src/main/js/api/search.js | 10 +
src/main/js/app.js | 2 +
.../components/command-palette/datasources.js | 29 +++
.../js/components/command-palette/index.js | 155 +++++++++++++++
.../js/components/command-palette/models.js | 27 +++
.../js/components/command-palette/symbols.js | 3 +
src/main/js/keyboard-shortcuts.js | 24 +--
src/main/scss/abstracts/_mixins.scss | 1 +
src/main/scss/abstracts/_theme.scss | 13 ++
.../scss/components/_command-palette.scss | 176 ++++++++++++++++++
src/main/scss/components/_index.scss | 1 +
src/main/scss/components/_page-header.scss | 11 ++
src/main/scss/form/_search-bar.scss | 44 +++--
.../hudson/model/AbstractProjectTest.java | 1 +
.../test/java/hudson/search/SearchTest.java | 76 +++-----
.../hudson/widgets/HistoryWidgetTest.java | 4 +-
.../test/java/jenkins/model/JenkinsTest.java | 3 +-
.../main/webapp/scripts/hudson-behavior.js | 57 +-----
28 files changed, 600 insertions(+), 163 deletions(-)
delete mode 100644 core/src/main/resources/jenkins/views/JenkinsHeader/search-box.js
create mode 100644 core/src/main/resources/lib/layout/command-palette.jelly
create mode 100644 src/main/js/api/search.js
create mode 100644 src/main/js/components/command-palette/datasources.js
create mode 100644 src/main/js/components/command-palette/index.js
create mode 100644 src/main/js/components/command-palette/models.js
create mode 100644 src/main/js/components/command-palette/symbols.js
create mode 100644 src/main/scss/components/_command-palette.scss
diff --git a/core/src/main/java/hudson/Functions.java b/core/src/main/java/hudson/Functions.java
index 64add7b35193..67801475233d 100644
--- a/core/src/main/java/hudson/Functions.java
+++ b/core/src/main/java/hudson/Functions.java
@@ -62,6 +62,7 @@
import hudson.model.View;
import hudson.scm.SCM;
import hudson.scm.SCMDescriptor;
+import hudson.search.SearchFactory;
import hudson.search.SearchableModelObject;
import hudson.security.ACL;
import hudson.security.AccessControlled;
@@ -2578,6 +2579,11 @@ public static String generateItemId() {
return String.valueOf(Math.floor(Math.random() * 3000));
}
+ @Restricted(NoExternalUse.class)
+ public static ExtensionList getSearchFactories() {
+ return SearchFactory.all();
+ }
+
/**
* @param keyboardShortcut the shortcut to be translated
* @return the translated shortcut, e.g. CMD+K to ⌘+K for macOS, CTRL+K for Windows
@@ -2596,6 +2602,10 @@ public static String translateModifierKeysForUsersPlatform(String keyboardShortc
@Restricted(NoExternalUse.class)
public static String formatMessage(String format, Object args) {
+ if (format == null) {
+ return args.toString();
+ }
+
return MessageFormat.format(format, args);
}
}
diff --git a/core/src/main/java/hudson/model/Job.java b/core/src/main/java/hudson/model/Job.java
index d22c25e98e3d..7d140656e363 100644
--- a/core/src/main/java/hudson/model/Job.java
+++ b/core/src/main/java/hudson/model/Job.java
@@ -541,7 +541,7 @@ public void find(String token, List result) {
public void suggest(String token, List result) {
find(token, result);
}
- }).add("configure", "config", "configure");
+ });
}
@Override
diff --git a/core/src/main/java/hudson/search/Search.java b/core/src/main/java/hudson/search/Search.java
index 7773d9e9d696..9bd624e34742 100644
--- a/core/src/main/java/hudson/search/Search.java
+++ b/core/src/main/java/hudson/search/Search.java
@@ -158,7 +158,7 @@ public void doSuggestOpenSearch(StaplerRequest2 req, StaplerResponse2 rsp, @Quer
public void doSuggest(StaplerRequest2 req, StaplerResponse2 rsp, @QueryParameter String query) throws IOException, ServletException {
Result r = new Result();
for (SuggestedItem item : getSuggestions(req, query))
- r.suggestions.add(new Item(item.getPath()));
+ r.suggestions.add(new Item(item.getPath(), item.getUrl()));
rsp.serveExposedBean(req, r, Flavor.JSON);
}
@@ -252,12 +252,25 @@ public static class Result {
@ExportedBean(defaultVisibility = 999)
public static class Item {
+
@Exported
@SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD", justification = "read by Stapler")
public String name;
+ private final String url;
+
public Item(String name) {
+ this(name, null);
+ }
+
+ public Item(String name, String url) {
this.name = name;
+ this.url = url;
+ }
+
+ @Exported
+ public String getUrl() {
+ return url;
}
}
diff --git a/core/src/main/java/hudson/search/SuggestedItem.java b/core/src/main/java/hudson/search/SuggestedItem.java
index 9ba455270e58..6911d002fe50 100644
--- a/core/src/main/java/hudson/search/SuggestedItem.java
+++ b/core/src/main/java/hudson/search/SuggestedItem.java
@@ -62,7 +62,7 @@ private void getPath(StringBuilder buf) {
buf.append(item.getSearchName());
else {
parent.getPath(buf);
- buf.append(' ').append(item.getSearchName());
+ buf.append(" » ").append(item.getSearchName());
}
}
diff --git a/core/src/main/java/jenkins/model/Jenkins.java b/core/src/main/java/jenkins/model/Jenkins.java
index bedbea0af7c4..eee96b5bca05 100644
--- a/core/src/main/java/jenkins/model/Jenkins.java
+++ b/core/src/main/java/jenkins/model/Jenkins.java
@@ -2346,9 +2346,7 @@ public String getSearchUrl() {
public SearchIndexBuilder makeSearchIndex() {
SearchIndexBuilder builder = super.makeSearchIndex();
if (hasPermission(ADMINISTER)) {
- builder.add("configure", "config", "configure")
- .add("manage")
- .add("log");
+ builder.add("manage", Messages.ManageJenkinsAction_DisplayName());
}
builder.add(new CollectionSearchIndex() {
@Override
diff --git a/core/src/main/resources/jenkins/views/JenkinsHeader/search-box.js b/core/src/main/resources/jenkins/views/JenkinsHeader/search-box.js
deleted file mode 100644
index 91e805c4ceaf..000000000000
--- a/core/src/main/resources/jenkins/views/JenkinsHeader/search-box.js
+++ /dev/null
@@ -1,6 +0,0 @@
-(function () {
- var element = document.getElementById("search-box-completion");
- if (element) {
- createSearchBox(element.getAttribute("data-search-url"));
- }
-})();
diff --git a/core/src/main/resources/lib/layout/command-palette.jelly b/core/src/main/resources/lib/layout/command-palette.jelly
new file mode 100644
index 000000000000..3d454f88a8c1
--- /dev/null
+++ b/core/src/main/resources/lib/layout/command-palette.jelly
@@ -0,0 +1,47 @@
+
+
+
+
+
+ The command palette overlay
+
+
+
+
+
+
diff --git a/core/src/main/resources/lib/layout/header/searchbox.jelly b/core/src/main/resources/lib/layout/header/searchbox.jelly
index 916f5ad49c22..033dc2ab0407 100644
--- a/core/src/main/resources/lib/layout/header/searchbox.jelly
+++ b/core/src/main/resources/lib/layout/header/searchbox.jelly
@@ -1,25 +1,27 @@
-
-