diff --git a/desktop-app/resources/index.html b/desktop-app/resources/index.html
index e2d2ee0a..b02882ed 100644
--- a/desktop-app/resources/index.html
+++ b/desktop-app/resources/index.html
@@ -854,7 +854,7 @@
Open-source credits
- ---
+
diff --git a/desktop-app/resources/js/script.js b/desktop-app/resources/js/script.js
index 3ef4f3db..16512ef1 100644
--- a/desktop-app/resources/js/script.js
+++ b/desktop-app/resources/js/script.js
@@ -1139,18 +1139,21 @@ document.addEventListener("DOMContentLoaded", function () {
};
// "+ Create" button at end of tab list (placed outside tabList to prevent ARIA child violation)
- const newBtn = document.createElement('button');
- newBtn.className = 'tab-new-btn';
- newBtn.title = 'New Tab (Ctrl+T)';
- newBtn.setAttribute('aria-label', 'Open new tab');
- newBtn.innerHTML = '';
- newBtn.addEventListener('click', function() { newTab(); });
-
- const resetBtn = document.getElementById('tab-reset-btn');
- if (resetBtn) {
- tabList.parentElement.insertBefore(newBtn, resetBtn);
- } else {
- tabList.parentElement.appendChild(newBtn);
+ let newBtn = tabList.parentElement.querySelector('.tab-new-btn');
+ if (!newBtn) {
+ newBtn = document.createElement('button');
+ newBtn.className = 'tab-new-btn';
+ newBtn.title = 'New Tab (Ctrl+T)';
+ newBtn.setAttribute('aria-label', 'Open new tab');
+ newBtn.innerHTML = '';
+ newBtn.addEventListener('click', function() { newTab(); });
+
+ const resetBtn = document.getElementById('tab-reset-btn');
+ if (resetBtn) {
+ tabList.parentElement.insertBefore(newBtn, resetBtn);
+ } else {
+ tabList.parentElement.appendChild(newBtn);
+ }
}
// Auto-scroll active tab into view (paint-aligned to prevent forced reflows)
diff --git a/index.html b/index.html
index 0967da9d..f68c1b7d 100644
--- a/index.html
+++ b/index.html
@@ -913,7 +913,7 @@ Open-source credits
- ---
+
diff --git a/script.js b/script.js
index 3ef4f3db..16512ef1 100644
--- a/script.js
+++ b/script.js
@@ -1139,18 +1139,21 @@ document.addEventListener("DOMContentLoaded", function () {
};
// "+ Create" button at end of tab list (placed outside tabList to prevent ARIA child violation)
- const newBtn = document.createElement('button');
- newBtn.className = 'tab-new-btn';
- newBtn.title = 'New Tab (Ctrl+T)';
- newBtn.setAttribute('aria-label', 'Open new tab');
- newBtn.innerHTML = '';
- newBtn.addEventListener('click', function() { newTab(); });
-
- const resetBtn = document.getElementById('tab-reset-btn');
- if (resetBtn) {
- tabList.parentElement.insertBefore(newBtn, resetBtn);
- } else {
- tabList.parentElement.appendChild(newBtn);
+ let newBtn = tabList.parentElement.querySelector('.tab-new-btn');
+ if (!newBtn) {
+ newBtn = document.createElement('button');
+ newBtn.className = 'tab-new-btn';
+ newBtn.title = 'New Tab (Ctrl+T)';
+ newBtn.setAttribute('aria-label', 'Open new tab');
+ newBtn.innerHTML = '';
+ newBtn.addEventListener('click', function() { newTab(); });
+
+ const resetBtn = document.getElementById('tab-reset-btn');
+ if (resetBtn) {
+ tabList.parentElement.insertBefore(newBtn, resetBtn);
+ } else {
+ tabList.parentElement.appendChild(newBtn);
+ }
}
// Auto-scroll active tab into view (paint-aligned to prevent forced reflows)