7a69a5535f1f66f23f5b1329ecbe508983ea01fa lrnassar Fri Sep 4 14:44:10 2026 -0700 BLAT classic form: announce the new-page switch date via hg.conf, fix stale input limits. refs #37996 New hg.conf setting blatNewFormSwitchDate (documented in ex.hg.conf): when set, the classic form's banner announces "We will be updating this BLAT page on " with an opt-in link, a feedback mailto, and a pointer to the news announcement; unset keeps the previous "We are testing" banner. The date lives in hg.conf so a schedule slip is a config change, not a build patch. Also corrects the classic form's stated input limits (25,000/50,000 bases, stale since 2013) to the enforced 75,000 per sequence and 187,500 combined. diff --git src/hg/hgBlat/hgBlat.c src/hg/hgBlat/hgBlat.c index 21b70c36e11..9112a8d2d3d 100644 --- src/hg/hgBlat/hgBlat.c +++ src/hg/hgBlat/hgBlat.c @@ -825,30 +825,43 @@ ".blatBanner a:hover{color:#8b1a1a}" ""); } static void printNewFormBanner() /* On the classic search form, offer the JavaScript-built one. Without this the new form's "go back * to the original page" link is a one-way door. * Shown wherever the new form is enabled (blatNewForm), which is what makes the round trip work; * blatNewFormBanner overrides that in either direction. On a machine where the new form is off * there is nothing to advertise, so nothing is printed. */ { if (!cfgOptionBooleanDefault("blatNewFormBanner", cfgOptionBooleanDefault("blatNewForm", FALSE))) return; printBlatBannerStyle(); +/* Once a switch-over date is announced (hg.conf blatNewFormSwitchDate, e.g. "October 21"), the + * banner names it, so a slipped date is an hg.conf change rather than a CGI build patch. With no + * date set, the original "we are testing" invitation is shown. */ +char *switchDate = cfgOption("blatNewFormSwitchDate"); +if (isNotEmpty(switchDate)) + printf("
" + "We will be updating this BLAT page on %s. " + "You can try the new page now and provide " + "feedback to genome@soe.ucsc.edu. " + "See our news announcement for more " + "information.
\n", + switchDate, cartSessionVarName(), cartSessionId(cart)); +else printf("
" "We are testing a new BLAT search page. " "If you have feedback on this new page, do not hesitate to let us know via " "genome@soe.ucsc.edu.
\n", cartSessionVarName(), cartSessionId(cart)); } static void printNewDisplayBanner(char *uiState) /* On the classic hyperlink results page, offer a one-click switch to the modern Table display. * The link sets the blatNewPage cart variable (so the choice sticks for future searches) and * reopens the current results (blatReopen) in the new format. * The banner is OFF by default while the new page is still being tested; set blatNewPageBanner=on * in hg.conf to advertise the new page - without releasing new CGIs. The new display itself stays * reachable by users who already opted in or use a direct blatNewPage=1 link. */ { @@ -2587,34 +2600,34 @@ puts("\n" "Paste in a query sequence to find its location in the\n" "genome. Multiple sequences may be searched \n" "if separated by lines starting with '>' followed by the sequence name.\n" "\n" "\n" ); puts("\n"); puts("
File Upload: "); puts("Rather than pasting a sequence, you can choose to upload a text file containing " "the sequence.
"); puts(""); puts("

\n"); printf("%s", -"

Only DNA sequences of 25,000 or fewer bases and protein or translated \n" +"

Only DNA sequences of 75,000 or fewer bases and protein or translated \n" "sequence of 10,000 or fewer letters will be processed. Up to 25 sequences\n" "can be submitted at the same time. The total limit for multiple sequence\n" -"submissions is 50,000 bases or 25,000 letters.
A valid example " +"submissions is 187,500 bases or 25,000 letters.
A valid example " "is GTCCTCGGAACCAGGACCTCGGCGTGGCCTAGCG (human SOD1).\n

\n"); printf("%s", "

The Search all checkbox allows you to search all genomes at the same time. " "Search all is only available for default assemblies and attached hubs with dedicated BLAT servers. " "The new dynamic BLAT servers are not supported, and they are noted as skipped in the output. " "See our BLAT All FAQ for more information.\n" ); printf("

The All Results checkbox disables minimum matches filtering so all results are seen." " For example, with a human dna search, 20 is minimum matches required, based on the genome size, to filter out lower-quality results.\n" "This checkbox can be useful with short queries and with the tiny genomes of microorganisms. \n" ); printf("

If you are interested in programmatic BLAT use,"