bd4567974fda4dceb15dba92e45f6512554e50db
braney
  Tue Apr 6 17:05:32 2021 -0700
hopefully fixes #27254... though it probably breaks something else.

diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index bc876a0..5db371a 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -9084,39 +9084,48 @@
 // Fills optional boolean if subtrack specific vis is found
 // If not NULL cart will be examined without ClosestToHome.
 // Folders/supertracks resolve to hide/full
 {
 if (subtrackOverride != NULL)
     *subtrackOverride = FALSE; // default
 
 // tdb->visibility should reflect local trackDb setting
 enum trackVisibility vis = tdb->visibility;
 if (tdbIsSuperTrack(tdb))
     vis = (tdb->isShow ? tvFull : tvHide);
 
 if (cart != NULL) // cart is optional
     {
     char *cartVis = cartOptionalString(cart, tdb->track);
+    boolean cgiVar = FALSE;
     // check hub tracks for visibility settings without the hub prefix
     if (startsWith("hub_", tdb->track) && (cartVis == NULL))
-        cartVis = cartOptionalString(cart, trackHubSkipHubName(tdb->track));
+        {
+        cartVis = cgiOptionalString( trackHubSkipHubName(tdb->track));
+        cgiVar = TRUE;
+        }
 
     if (cartVis != NULL)
         {
         vis = hTvFromString(cartVis);
         if (subtrackOverride != NULL && tdbIsContainerChild(tdb))
             *subtrackOverride = TRUE;
+        if (cgiVar)
+            {
+            cartSetString(cart, tdb->track, cartVis);   // add the decorated visibility to the cart
+            cartRemove(cart, trackHubSkipHubName(tdb->track)); // remove the undecorated version
+            }
         }
     }
 return vis;
 }
 
 enum trackVisibility tdbVisLimitedByAncestors(struct cart *cart, struct trackDb *tdb,
                                               boolean checkBoxToo, boolean foldersToo)
 // returns visibility limited by ancestry.
 // This includes subtrack vis override and parents limit maximum.
 // cart may be null, in which case, only trackDb settings (default state) are examined
 // checkBoxToo means ensure subtrack checkbox state is visible
 // foldersToo means limit by folders (aka superTracks) as well.
 {
 boolean subtrackOverride = FALSE;
 enum trackVisibility vis = tdbLocalVisibility(cart,tdb,&subtrackOverride);