e146af22d6cc07a6ccca765e2befafc8d4dd1856
angie
  Tue May 5 11:32:07 2026 -0700
Fixing bugs and typos in 0750648 caught by Claude review.
The doRipples checkbox cart var was ignored and a copy-paste typo caused bp2Max to be updated with the new value for bp1Max when merging.

diff --git src/hg/hgPhyloPlace/phyloPlace.c src/hg/hgPhyloPlace/phyloPlace.c
index 521b1cc42b2..37ac82598cf 100644
--- src/hg/hgPhyloPlace/phyloPlace.c
+++ src/hg/hgPhyloPlace/phyloPlace.c
@@ -2302,31 +2302,31 @@
 puts("<th>Donor lineage"
      TOOLTIP("Pango lineage in which the donor node was placed")
      "</th>");
 puts("<th>Acceptor node"
      TOOLTIP("The parent node that explains mutations after the first breakpoint range "
              "(and, if applicable, before the second breakpoint range)")
      "</th>");
 puts("<th>Acceptor descendant count"
      TOOLTIP("The number of sequences at the tips/leaves of the branch that starts "
              "with the acceptor node")
      "</th>");
 puts("<th>Acceptor clade"
      TOOLTIP("Nextstrain clade in which the acceptor node was placed")
      "</th>");
 puts("<th>Acceptor lineage"
-     TOOLTIP("Pango lineage in which the donor node was placed")
+     TOOLTIP("Pango lineage in which the acceptor node was placed")
      "</th>");
 puts("<th>Breakpoint 1 range"
      TOOLTIP("Coordinate range, bounded by mutations explained by the donor node at lower "
              "coordinates and by the acceptor node at higher coordinates")
      "</th>");
 puts("<th>Breakpoint 2 range"
      TOOLTIP("Coordinate range, bounded by mutations explained by the acceptor node at lower "
              "coordinates and by the donor node at higher coordinates")
      "</th></tr></thead><tbody>");
 struct recombinantInfo *ri;
 for (ri = recombinants;  ri != NULL;  ri = ri->next)
     {
     printf("<tr><td>%s", ri->recombNodeId);
     if (startsWith("node_", ri->recombNodeId))
         {
@@ -3516,31 +3516,32 @@
     slNameFreeList(&unmatched);
     reportTiming(&startTime, "look up uploaded sample names");
     }
 lineFileClose(&lf);
 if (sampleIds == NULL)
     {
     return;
     }
 
 // Kick off child thread to load metadata simultaneously with running usher or matUtils.
 pthread_t *metadataPthread = mayStartLoaderPthread(metadataFile, loadMetadataWorker);
 
 struct usherResults *results = NULL;
 char *anchorFile = phyloPlaceRefSettingPath(org, refName, "anchorSamples");
 char *ripplesEnabledSetting = phyloPlaceOrgSetting(org, "ripplesEnabled");
-boolean ripplesEnabled = (isNotEmpty(ripplesEnabledSetting) && SETTING_IS_ON(ripplesEnabledSetting));
+boolean ripplesEnabled = (isNotEmpty(ripplesEnabledSetting) && SETTING_IS_ON(ripplesEnabledSetting) &&
+                          cartUsualBoolean(cart, "doRipples", FALSE));
 boolean doRipples = (ripplesEnabled && slCount(sampleIds) <= MAX_RIPPLES_SEARCH);
 if (vcfTn)
     {
     fflush(stdout);
     results = runUsher(org, usherPath, protobufPath, vcfTn->forCgi, subtreeSize, &sampleIds,
                        treeChoices, anchorFile, doRipples, refGenome->size, &startTime);
     }
 else if (subtreesOnly)
     {
     char *matUtilsPath = getMatUtilsPath(TRUE);
     results = runMatUtilsExtractSubtrees(org, matUtilsPath, protobufPath, subtreeSize,
                                          sampleIds, treeChoices, anchorFile, refGenome->size, &startTime);
     }
 
 struct sampleMetadataStore *sampleMetadata = NULL;