d22f72049b67be2c8745828b1e6ebba9d5087ead
chmalee
  Wed Mar 18 09:40:51 2026 -0700
Add explanatory text and notes to hgConvert page, refs #36111

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

diff --git src/hg/hgConvert/hgConvert.c src/hg/hgConvert/hgConvert.c
index 2374737ac43..fd4951ad84f 100644
--- src/hg/hgConvert/hgConvert.c
+++ src/hg/hgConvert/hgConvert.c
@@ -76,30 +76,37 @@
 if (quickLiftEnabled(cart))
     {
     askAboutQuickLift = TRUE;
     quickLift = cartUsualBoolean(cart, "doQuickLift", FALSE);
     }
 
 cartWebStart(cart, database, "Convert %s to New Assembly", fromPos);
 
 /* Include autocomplete libraries */
 jsIncludeAutoCompleteLibs();
 
 /* create HTML form */
 puts("<FORM ACTION=\"../cgi-bin/hgConvert\" NAME=\"mainForm\">\n");
 cartSaveSession(cart);
 
+cgiParagraph(
+    "This tool converts the current genome browser position to the corresponding "
+    "region in another assembly or species using genome sequence alignments. "
+    "Select a target assembly below and click Submit to jump to the matching region. "
+    "If a pair of assemblies cannot be selected directly, a sequential conversion "
+    "may still be possible (e.g., mm9 to mm10 to mm39).");
+
 /* CSS for two-section layout */
 puts("<style>\n"
      ".convertGrid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; max-width: 800px; }\n"
      ".convertSection { padding: 15px; border: 1px solid #ddd; border-radius: 4px; background: #fafafa; }\n"
      ".sectionLabel { font-weight: bold; margin-bottom: 10px; border-bottom: 1px solid #ccc; padding-bottom: 5px; }\n"
      ".fieldRow { margin: 8px 0; }\n"
      ".fieldLabel { display: inline-block; width: 80px; font-weight: bold; }\n"
      ".currentSelection { margin-top: 8px; color: #333; }\n"
      ".currentSelection::before { content: 'Selected: '; font-weight: bold; }\n"
      "</style>\n");
 
 puts("<div class='convertGrid'>\n");
 
 /* SOURCE SECTION (read-only) */
 puts("<div class='convertSection'>\n");
@@ -125,33 +132,33 @@
 /* Current selection display */
 char *selectedLabel = getCurrentGenomeLabel(liftOver->toDb);
 hPrintf("<div class='currentSelection' id='toGenomeLabel'>%s</div>\n", selectedLabel);
 /* Assembly dropdown (updates based on genome selection) */
 puts("<div class='fieldRow'>\n");
 puts("<span class='fieldLabel'>Assembly:</span>\n");
 dbList = hGetLiftOverToDatabases(liftOver->fromDb);
 printAllAssemblyListHtmlParm(liftOver->toDb, dbList, HGLFT_TODB_VAR, TRUE, "change", onChangeToOrg);
 puts("</div>\n");
 
 /* QuickLift option */
 if (askAboutQuickLift)
     {
     puts("<div class='fieldRow' style='margin-top: 15px;'>\n");
     cgiMakeCheckBoxWithId("doQuickLift", quickLift, "doQuickLift");
-    puts(" <label for='doQuickLift'>QuickLift tracks</label>\n");
+    puts(" <label for='doQuickLift' title='Display tracks from the source assembly mapped onto the target assembly'>QuickLift tracks</label>\n");
     puts(" <a href='https://docs.google.com/document/d/1wecESHUpgTlE6U_Mj0OnfHeSZBrTX9hkZRN5jlJS8ZQ/edit?usp=sharing' "
-         "target='ucscHelp' title='QuickLift is in beta testing' "
+         "target='ucscHelp' title='QuickLift is in beta testing. Click to view more documentation about this feature.' "
          "style='color:#8A2BE2;font-weight:bold;text-transform:uppercase;font-size:smaller;padding:2px "
          "4px;background:lavender;border-radius:3px;text-decoration:none;margin-left:6px;'>beta</a>\n");
     puts("</div>\n");
     }
 
 puts("</div>\n");  /* end destination section */
 puts("</div>\n");  /* end grid */
 
 /* Submit button centered below */
 puts("<div style='text-align: center; margin-top: 20px;'>\n");
 cgiMakeButton(HGLFT_DO_CONVERT, "Submit");
 puts("</div>\n");
 
 /* JavaScript initialization for autocomplete with liftOver filtering */
 jsInlineF(
@@ -237,30 +244,40 @@
     "                $input.focus();\n"
     "            }\n"
     "        });\n"
     "    }\n"
     "});\n"
     , liftOver->fromDb
     , liftOver->fromDb
     , HGLFT_TOORG_VAR
     , HGLFT_TODB_VAR
     , searchBarId, searchBarId, searchBarId, searchBarId
     , searchBarId, searchBarId, searchBarId
 );
 
 puts("</FORM>\n");
 
+webNewSection("Notes");
+cgiParagraph(
+    "<B>QuickLift tracks:</B> When enabled, QuickLift displays tracks from "
+    "the source assembly mapped onto the target assembly, allowing you to view "
+    "your current tracks in the context of the new genome.");
+cgiParagraph(
+    "If your desired target assembly is not available, you can search for it "
+    "and request it on our "
+    "<A HREF=\"../assemblySearch.html\">Assembly Search</A> page.");
+
 cartWebEnd();
 }
 
 static double scoreLiftOverChain(struct liftOverChain *chain,
     char *fromOrg, char *fromDb, char *toOrg, char *toDb, struct hash *dbRank )
 /* Score the chain in terms of best match for cart settings */
 {
 double score = 0;
 
 char *chainFromOrg = hOrganism(chain->fromDb);
 char *chainToOrg = hOrganism(chain->toDb);
 int fromRank = hashIntValDefault(dbRank, chain->fromDb, 0);
 int maxRank = hashIntVal(dbRank, "maxRank");
 int toRank = hashIntValDefault(dbRank, chain->toDb, maxRank);