da2089fb286b3119d62399a747a23fc22fa3ad70
chmalee
  Wed Mar 18 16:53:36 2026 -0700
Add plain position searches to the recents search stack on hgTracks/hgGateway, refs #34588

diff --git src/hg/js/utils.js src/hg/js/utils.js
index ffd7a62f74d..cea236c133a 100644
--- src/hg/js/utils.js
+++ src/hg/js/utils.js
@@ -4696,38 +4696,38 @@
     // }
     let searchStack = window.localStorage.getItem("searchStack");
     let searchObj = {};
     if (searchStack === null) {
         searchObj[db] = {"stack": [searchTerm], "results": {}};
         searchObj[db].results[searchTerm] = extra;
         window.localStorage.setItem("searchStack", JSON.stringify(searchObj));
     } else {
         searchObj = JSON.parse(searchStack);
         if (db in searchObj) {
             let searchList = searchObj[db].stack;
             if (searchList.includes(searchTerm)) {
                 // remove it from wherever it is cause it's going to the front
                 searchList.splice(searchList.indexOf(searchTerm), 1);
             } else {
-                searchObj[db].results[searchTerm] = extra;
                 if (searchList.length >= 5) {
                     let toDelete = searchList.pop();
                     delete searchObj[db].results[toDelete];
                 }
             }
+            // always update results in case the extra data has changed
+            searchObj[db].results[searchTerm] = extra;
             searchList.unshift(searchTerm);
-            searchObj.stack = searchList;
         } else {
             searchObj[db] = {"stack": [searchTerm], "results": {}};
             searchObj[db].results[searchTerm] = extra;
         }
         window.localStorage.setItem("searchStack", JSON.stringify(searchObj));
     }
 }
 
 // variables to parse url arguments correctly
 var digitTest = /^\d+$/,
     keyBreaker = /([^\[\]]+)|(\[\])/g,
     plus = /\+/g,
     paramTest = /([^?#]*)(#.*)?$/;
 
 function deparam(params) {