f48fc325d72424177878c4849096c77e06c2d3b0
max
  Mon Aug 17 07:34:42 2026 -0700
BLAT results: own track group, Delete-all button, clearer names, refs #38086

Behind hg.conf blatResultsGroup (default off, a release gate):

- BLAT result custom tracks go into their own "BLAT Results" track group
instead of the generic Custom Tracks group.
- That group's header gets a "Delete all" button that removes every BLAT
result track at once, so users are not stuck deleting them one by one.
- Headerless queries are named by query size + the top hit's gene, e.g.
"360bp SOD1", instead of the useless "blat YourSeq"; the date goes in
the longLabel.

hgBlat.c       getCustomName naming + blatDateStamp/topHitLocusLabel helpers
hgc.c          buildBigPsl tags the results track group=blat
customFactory.c checkGroup accepts the synthetic "blat" group
hgTracks.c     synthesize the BLAT Results group; Delete-all button; keep
the per-track delete icon for the new group
hgTracks.js    deleteAllBlatTracks()
hgCustom.c     hgct_do_delete_blat action (removes all blatResult=on tracks)
hgConfCatalog.py  register blatResultsGroup as a release gate

diff --git src/hg/utils/hgConfCatalog/hgConfCatalog.py src/hg/utils/hgConfCatalog/hgConfCatalog.py
index 3e9c5694f44..a2fa0c80b7c 100755
--- src/hg/utils/hgConfCatalog/hgConfCatalog.py
+++ src/hg/utils/hgConfCatalog/hgConfCatalog.py
@@ -267,30 +267,39 @@
           note="The banner on the classic BLAT results page that offers a "
                "one-click switch to the new sortable table display.  Guards "
                "the advertisement, not the feature: turning it on makes the "
                "browser recommend the new page without releasing new CGIs, "
                "and users who already opted in or follow a direct link get "
                "the new page either way.  Goes away with the banner, once the "
                "new page is the default.  Born TRUE at c683ecb63d7 and put "
                "back to FALSE at 81d7cff6cb6 while the new page is still "
                "being tested, so it is gating again rather than shipped.  "
                "Kept a gate rather than a knob because what it "
                "turns off is a sentence recommending another page, and no "
                "mirror needs that switch forever; the deadline the report "
                "computes for it is really a deadline on deciding whether the "
                "new page becomes the default, which is the conversation the "
                "nag is supposed to force."),
+        h("blatResultsGroup", "flag", "hg/hgTracks/hgTracks.c:7262", default="FALSE",
+          role="gate", verified=True, ticket="38086",
+          note="Put BLAT result custom tracks in their own \"BLAT Results\" track "
+               "group (with a \"Delete all\" button) instead of Custom Tracks, and "
+               "give headerless queries a useful default name (query size + top-hit "
+               "gene) rather than \"blat YourSeq\".  Read in three CGIs that must "
+               "agree: hgBlat.c:1493 (naming), hgc.c:27514 (tags the track "
+               "group=blat), hgTracks.c:7262 (synthesizes the group).  Off during "
+               "QA; flip to TRUE once released."),
         h("genarkLiftOver", "flag", "hg/lib/genark.c:413", default="FALSE",
           role="gate", verified=True,
           note="Offer liftOver between GenArk assemblies.  Four call sites in "
                "genark.c and hdb.c."),
         h("showIgv", "flag", "hg/hgTracks/hgTracks.c:12142", default="FALSE",
           role="gate", verified=True,
           note="An IGV link in the track hamburger menus."),
         h("showLiftRequest", "flag", "hg/hgConvert/hgConvert.c:183",
           default="FALSE", role="gate", verified=True, ticket="37973",
           note="A link from the Convert page to liftRequest.html, the page "
                "that requests a new whole-genome alignment.  The assembly "
                "list only offers targets that already have a chain from the "
                "source, so the Convert page is where a user finds out theirs "
                "is missing, but nothing in the tree linked to the request "
                "page.  Off until the request pipeline is confirmed ready to "