diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3d62d62798da3ba120867bcf9594865254c35397..cd1bf270c935a5bf5b6b5c8dc000b4f71d9f021f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -311,7 +311,11 @@ jug_dev:
                    --build-arg EICSPACK_CHERRYPICKS="${EICSPACK_CHERRYPICKS}"
                    --build-arg S3_ACCESS_KEY=${S3_ACCESS_KEY}
                    --build-arg S3_SECRET_KEY=${S3_SECRET_KEY}
-                   --build-arg JUG_VERSION=${EXPORT_TAG}-${BUILD_TYPE}-$(git rev-parse HEAD)-$(date +%Y-%m-%d_%H-%M-%S)
+                   --build-arg JUG_VERSION=${EXPORT_TAG}-${BUILD_TYPE}-$(git rev-parse HEAD)
+                   ${IF_BUILD_DEFAULT:+
+                     --build-arg JUGGLER_VERSION=${JUGGLER_VERSION}
+                     --build-arg EICRECON_VERSION=${EICRECON_VERSION}
+                   }
                    --build-arg ENV=${ENV}
                    --build-arg jobs=${JOBS}
                    --build-context spack-environment=spack-environment
@@ -345,9 +349,7 @@ jug_xl:default:
                    --build-arg DOCKER_REGISTRY=${CI_REGISTRY}/${CI_PROJECT_PATH}/
                    --build-arg BASE_IMAGE=${BASE_IMAGE}
                    --build-arg INTERNAL_TAG=${INTERNAL_TAG}-default
-                   --build-arg JUGGLER_VERSION=${JUGGLER_VERSION}
-                   --build-arg EICRECON_VERSION=${EICRECON_VERSION}
-                   --build-arg JUG_VERSION=${EXPORT_TAG}-$(git rev-parse HEAD)-$(date +%Y-%m-%d_%H-%M-%S)
+                   --build-arg JUG_VERSION=${EXPORT_TAG}-$(git rev-parse HEAD)
                    --build-arg jobs=${JOBS}
                    --build-context detectors=.
                    containers/jug
diff --git a/containers/jug/dev.Dockerfile b/containers/jug/dev.Dockerfile
index d07f838514f4f595676fc848d06e020256fa0375..b383137c07322354e0be2698f8508401ac6eb820 100644
--- a/containers/jug/dev.Dockerfile
+++ b/containers/jug/dev.Dockerfile
@@ -105,6 +105,8 @@ FROM spack as builder
 ## Setup our custom environment (secret mount for write-enabled mirror)
 COPY --from=spack-environment . /opt/spack-environment/
 ARG ENV=dev
+ARG JUGGLER_VERSION="main"
+ARG EICRECON_VERSION="main"
 ENV SPACK_ENV=/opt/spack-environment/${ENV}
 RUN --mount=type=cache,target=/ccache,id=${TARGETPLATFORM}              \
     --mount=type=cache,target=/var/cache/spack                          \
@@ -112,6 +114,8 @@ RUN --mount=type=cache,target=/ccache,id=${TARGETPLATFORM}              \
     source $SPACK_ROOT/share/spack/setup-env.sh                         \
  && export CCACHE_DIR=/ccache                                           \
  && spack env activate --dir ${SPACK_ENV}                               \
+ && spack add juggler@git.${JUGGLER_VERSION}                            \
+ && spack add eicrecon@git.${EICRECON_VERSION}                          \
  && make --jobs ${jobs} --keep-going --directory /opt/spack-environment \
     SPACK_ENV=${SPACK_ENV}                                              \
     BUILDCACHE_MIRROR="local eics3rw"                                   \
diff --git a/containers/jug/xl.Dockerfile b/containers/jug/xl.Dockerfile
index 73e99d015bb2a7269601c1c68711a517f4d8f745..bbe6d3b8c8672aa99a5590ea6cf6d03c7c101a57 100644
--- a/containers/jug/xl.Dockerfile
+++ b/containers/jug/xl.Dockerfile
@@ -11,8 +11,6 @@ FROM ${DOCKER_REGISTRY}${BASE_IMAGE}:${INTERNAL_TAG}
 ARG TARGETPLATFORM
 
 ARG EICWEB="https://eicweb.phy.anl.gov/api/v4/projects"
-ARG JUGGLER_VERSION="main"
-ARG EICRECON_VERSION="main"
 ARG jobs=8
 
 ## version will automatically bust cache for nightly, as it includes
@@ -22,48 +20,6 @@ ARG JUG_VERSION=1
 RUN cd /tmp                                                                     \
  && echo " - jug_xl: ${JUG_VERSION}" >> /etc/jug_info
 
-ADD ${EICWEB}/369/repository/tree?ref=${JUGGLER_VERSION} /tmp/369.json
-RUN --mount=type=cache,target=/ccache/,sharing=locked,id=${TARGETPLATFORM}      \
-    cd /tmp                                                                     \
- && echo "INSTALLING JUGGLER"                                                   \
- && git clone -b ${JUGGLER_VERSION} --depth 1                                   \
-        https://eicweb.phy.anl.gov/EIC/juggler.git                              \
- && export CCACHE_DIR=/ccache                                                   \     
- && cmake -B build -S juggler                                                   \
-          -DCMAKE_CXX_FLAGS="-Wno-psabi"                                        \
-          -DCMAKE_CXX_STANDARD=17                                               \
-          -DCMAKE_INSTALL_PREFIX=/usr/local                                     \
-          -DCMAKE_BUILD_TYPE=Release                                            \
-          -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
- && cmake --build build -j${jobs} -- install                                    \
- && pushd juggler                                                               \
- && echo " - juggler: ${JUGGLER_VERSION}-$(git rev-parse HEAD)"                 \
-          >> /etc/jug_info                                                      \
- && popd                                                                        \
- && rm -rf build juggler
-
-ADD https://api.github.com/repos/eic/eicrecon/commits/${EICRECON_VERSION} /tmp/eicrecon.json
-RUN --mount=type=cache,target=/ccache/,sharing=locked,id=${TARGETPLATFORM}      \
-    cd /tmp                                                                     \
- && echo "INSTALLING EICRECON"                                                  \
- && git clone -b ${EICRECON_VERSION} --depth 1                                  \
-        https://github.com/eic/eicrecon.git                                     \
- && export CCACHE_DIR=/ccache                                                   \
- && cmake -B build -S eicrecon                                                  \
-          -DCMAKE_CXX_FLAGS="-Wno-psabi"                                        \
-          -DCMAKE_CXX_STANDARD=17                                               \
-          -DCMAKE_INSTALL_PREFIX=/usr/local                                     \
-          -DCMAKE_BUILD_TYPE=Release                                            \
-          -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
- && cmake --build build -j${jobs} -- install                                    \
- && pushd eicrecon                                                              \
- && echo " - eicrecon: ${EICRECON_VERSION}-$(git rev-parse HEAD)"               \
-          >> /etc/jug_info                                                      \
- && echo "export JANA_PLUGIN_PATH=/usr/local/lib/EICrecon/plugins"              \
-    > /etc/profile.d/z12_eicrecon.sh                                            \
- && popd                                                                        \
- && rm -rf build eicrecon
-
 ## also install detector/ip geometries into opt
 ARG NIGHTLY=''
 ## cache bust when updated repositories
diff --git a/spack.sh b/spack.sh
index 34a43a18e1e188d978aead17e015a3ac064eefcc..eb8f0bb7017c359e4dbd7637f4c232bed4c7bad4 100644
--- a/spack.sh
+++ b/spack.sh
@@ -25,6 +25,7 @@ ea1439dfa11a3996c9927ed792dc9fe4b7efc1b8
 ed76eab6943221f17776fd8d128ade6ba69e492c
 6c5d125cb06a86ce05bec27ae9fb9b07103bc1c5
 e3e7609af4903be7df42b6ae5ccf9a20293503d2
+df4a2457a41e7ab634e86d3148d8b22a9f433a6a
 ---
 ## Ref: https://github.com/spack/spack/commit/[hash]
 ## [hash]: [description]
@@ -45,3 +46,4 @@ e3e7609af4903be7df42b6ae5ccf9a20293503d2
 ## ed76eab6943221f17776fd8d128ade6ba69e492c: geant4: new version 11.1.2
 ## 6c5d125cb06a86ce05bec27ae9fb9b07103bc1c5: cernlib: new variant shared
 ## e3e7609af4903be7df42b6ae5ccf9a20293503d2: edm4hep: Add version 0.9
+## df4a2457a41e7ab634e86d3148d8b22a9f433a6a: Fix broken semver regex