4ae50fa5255be82566187f8cdbf5591152d3cf34
braney
  Sat Aug 22 14:49:40 2026 -0700
ts: add the ticket-sandbox scripts, refs #37867

ts parks a Redmine ticket as its own frozen browser instance on hgwdev:
a full copy of cgi-bin-$USER and htdocs-$USER served by a private
loopback httpd, with the databases, /gbdb, and trash left shared.
Generalized from the personal version: per-user sandbox paths, TS_ROOT
for the instance directory, and existence checks in create.

diff --git src/utils/makefile src/utils/makefile
index a0ad2d0a5f2..dc0f4d9b9d2 100644
--- src/utils/makefile
+++ src/utils/makefile
@@ -214,30 +214,31 @@
 	ggSpfToTab \
 	bedNamePickFirst \
 	bedBestTranscript \
 	genePredToBed \
 	cgiSmokeTest \
 	phegenToBed \
 	bigMaxPercDiff \
 	cancerMafToBigBed \
 	pq \
 	bedAppendPaperInfo \
 	googleSheetToBigBed \
 	doClinvarLift \
 	codeReviewAi.py \
 	redmineCli \
 	browserRace \
+	ts \
 	${USER_APP_SCRIPTS}
 
 # List of all directories to build
 
 ALL_APPS = $(UTILS_APPLIST) $(UCSC_APPS)
 
 # all: builds all utilities here
 
 all: $(ALL_APPS:%=%.all) $(USER_APP_SCRIPTS:%=%.userAppScript)
 
 %.all:
 	cd $* && echo $* && $(MAKE)
 
 # userApps: builds the user application specific programs
 .PHONY: userApps