679ee3ed1c4d6f8ff2e2d4fdd7d72b83117c7c49
hiram
  Sun Jan 18 22:12:13 2026 -0800
provide links to browsers as well as lift over chain.gz files refs #31811

diff --git src/hg/js/liftRequest.js src/hg/js/liftRequest.js
index de14abd2141..4ed186feff4 100644
--- src/hg/js/liftRequest.js
+++ src/hg/js/liftRequest.js
@@ -36,37 +36,55 @@
         liftPath += asm1;
     }
     liftPath += "/liftOver/" + asm1 + "To";
     liftPath += asm2.charAt(0).toUpperCase() + asm2.slice(1);
     liftPath += ".over.chain.gz";
     return(liftPath);
 }
 
 function checkAssemblyCompatibility(asm1, asm2) {
     $.ajax({
         url: "/cgi-bin/hubApi/liftOver/listExisting?fromGenome=" + encodeURIComponent(asm1) +
              ";" + "toGenome=" + encodeURIComponent(asm2),
         success: function(response) {
             console.log(JSON.stringify(response, null, 2));
             if (response.itemsReturned === 1) {
-               var liftPath = liftOverPath(asm1, asm2);
-               fileExists(liftPath, function(exists) {
+               var liftPath1 = liftOverPath(asm1, asm2);
+               var liftPath2 = liftOverPath(asm2, asm1);
+               var browser1 = "/cgi-bin/hgTracks?db=" + asm1;
+               var browser2 = "/cgi-bin/hgTracks?db=" + asm2
+               fileExists(liftPath1, function(exists) {
                    if (exists) {
+                   document.getElementById("genome1Link").href = browser1;
+                   document.getElementById("genome1Link").textContent = assembly1Value;
+
+                   document.getElementById("genome1LiftOver").href = liftPath1;
+                   document.getElementById("genome1LiftOver").textContent = asm1 + " to " + asm2;
+
+                   // Make visible
+                  document.getElementById("liftExists").style.display = "block";
+                   }
+               });
+               fileExists(liftPath2, function(exists) {
+                   if (exists) {
+                   document.getElementById("genome2Link").href = browser2;
+                   document.getElementById("genome2Link").textContent = assembly2Value;
+
+                   document.getElementById("genome2LiftOver").href = liftPath2;
+                   document.getElementById("genome2LiftOver").textContent = asm2 + " to " + asm1;
+                   // Make visible
                   document.getElementById("liftExists").style.display = "block";
-                   var liftMessage = 'An alignment already exists between these assemblies.<br>' +
-              '<a href="' + liftPath + '" download>Click here to download the chain file</a>';
-                   document.getElementById("liftPath").innerHTML = liftMessage;
                    }
                });
             }
         }
     });
 }
 
 function checkBothAssembliesSelected() {
     if (genome1 && genome2) { // Both assemblies are now selected
         checkAssemblyCompatibility(genome1, genome2);
     }
 }
 
 function assembly1Select(selectEle, item) {
     selectEle.innerHTML = item.label;