diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3fb100a2c20aa40266e620542a827e184e37ea66..787ed22c8f6acadf52a88c6d838f551d43060496 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,7 +4,14 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
-## [0.15.1] - 2014-12-20 ##
+## [0.15.2] - 2025-02-28 ##
+
+### Fixed ###
+
+* [#271](https://gitlab.com/linkahead/linkahead-webui/-/issues/271)
+  Removed an unused parameter redefinition from query.xsl.
+
+## [0.15.1] - 2024-12-20 ##
 
 ### Fixed ###
 
diff --git a/CITATION.cff b/CITATION.cff
index a82fe1056087d50b9af4fe82ef2d482e8b78daa9..07e4e1e8ebd1e2ccd111f112f9122936c4b5aef1 100644
--- a/CITATION.cff
+++ b/CITATION.cff
@@ -20,6 +20,6 @@ authors:
     given-names: Stefan
     orcid: https://orcid.org/0000-0001-7214-8125
 title: LinkAhead - WebUI
-version: 0.15.0
+version: 0.15.2
 doi: 10.3390/data4020083
-date-released: 2024-10-01
+date-released: 2025-02-28
diff --git a/libs/plotly.js-1.52.2.zip b/libs/plotly.js-1.52.2.zip
index f7588bf63dd9e685fec3180fe3336829f34e566b..67144b58fc32fb98e3ad65aa6dc77ad27e1fd8b4 100644
Binary files a/libs/plotly.js-1.52.2.zip and b/libs/plotly.js-1.52.2.zip differ
diff --git a/misc/merge_js.sh b/misc/merge_js.sh
index ccd361a87ea2363a4af65436f149a6364cf5187b..3265dd16dddb3ecd5a2f0a576f621ede96658b19 100755
--- a/misc/merge_js.sh
+++ b/misc/merge_js.sh
@@ -51,7 +51,7 @@ _create_jsheader () {
       </xsl:attribute>
     </xsl:element>
     "
-        [[ -f "public/index.html" ]] && sed -i "s|^\(.*JS_INCLUDE.*\)$|    <script src=\"${DIST_BUNDLE}\"><\/script>\n\1|g" public/index.html ;
+        [ -f "public/index.html" ] && sed -i "s|^\(.*JS_INCLUDE.*\)$|    <script src=\"${DIST_BUNDLE}\"><\/script>\n\1|g" public/index.html ;
     else
         _ALL_SOURCES=$@
         echo "${_ALL_SOURCES}"
@@ -66,7 +66,7 @@ _create_jsheader () {
       </xsl:attribute>
     </xsl:element>
     "
-            sed -i "s|^\(.*JS_INCLUDE.*\)$|    <script src=\"${_SOURCE}\"><\/script>\n\1|g" public/index.html ;
+            [ -f "public/index.html" ] && sed -i "s|^\(.*JS_INCLUDE.*\)$|    <script src=\"${_SOURCE}\"><\/script>\n\1|g" public/index.html ;
         done
     fi
 
diff --git a/src/core/xsl/query.xsl b/src/core/xsl/query.xsl
index d1306d4d750ca911679d132a403d1f94c8e5bc2d..967691b48adeac107cbc94b3802c6e3efcaea953 100644
--- a/src/core/xsl/query.xsl
+++ b/src/core/xsl/query.xsl
@@ -23,8 +23,6 @@
 -->
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="html"/>
-  <xsl:param name="lowercase" select="'abcdefghijklmnopqrstuvwxyz'"/>
-  <xsl:param name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
   <xsl:template match="ParseTree" mode="query-results">
     <xsl:apply-templates select="ParsingError"/>
   </xsl:template>
@@ -314,7 +312,6 @@
     <!-- handle anything but attributes and properties -->
     <xsl:param name="first-segment"/>
     <xsl:param name="next-segments"/>
-
     <xsl:choose>
       <xsl:when test="@*[translate($first-segment, $uppercase, $lowercase)=name()]">
         <!--handle attributes-->
diff --git a/src/doc/conf.py b/src/doc/conf.py
index 2301572b8832bfc216741b02da1f983ff174c343..a5e925bed25a01d7b3c01c656951899ea9ca0d8b 100644
--- a/src/doc/conf.py
+++ b/src/doc/conf.py
@@ -26,9 +26,9 @@ copyright = '2022 - 2024, IndiScale GmbH'
 author = 'Daniel Hornung'
 
 # The short X.Y version
-version = '0.15.1'
+version = '0.15.2'
 # The full version, including alpha/beta/rc tags
-release = '0.15.1'
+release = '0.15.2'
 
 
 # -- General configuration ---------------------------------------------------
diff --git a/test/core/js/modules/form_panel.js.js b/test/core/js/modules/form_panel.js.js
index 3a26aee2d8a6ca6cf0021d7c35ddae71c5560145..4ec4d540239500fe054203226ed9bdeb955e25a0 100644
--- a/test/core/js/modules/form_panel.js.js
+++ b/test/core/js/modules/form_panel.js.js
@@ -90,7 +90,7 @@ QUnit.test("autofocus_without_form", function(assert) {
         return container[0];
     };
     // This should always work
-    cb_without_autofocus = form_panel.create_show_form_callback(
+    const cb_without_autofocus = form_panel.create_show_form_callback(
         id,
         title,
         undefined,
@@ -103,7 +103,7 @@ QUnit.test("autofocus_without_form", function(assert) {
     assert.ok(document.querySelector(`#${id}`), "Callback was called without autofocus.");
     $(`#${id}`).remove();
 
-    cb_with_autofocus = form_panel.create_show_form_callback(
+    const cb_with_autofocus = form_panel.create_show_form_callback(
         id,
         title,
         undefined,