Spaces:
Running
Running
Z User commited on
Commit ·
99efc6a
1
Parent(s): 69fc040
fix: webui auto-update fails after rebuild + bump to v0.5.8
Browse filesTwo changes:
1. Dockerfile: Pin hermes-web-ui to v0.5.8 (released 2026-05-03)
Previous v0.5.7 is stale. GitHub latest is v0.5.8.
2. start.sh: Add rebuild detection to webui auto-update (same bug as hermes-agent)
After rebuild, /app/webui.version resets to Dockerfile version but
/data/hermes/webui.version (persistent) keeps the old recorded version.
If recorded version was NEWER than Dockerfile version, the updater would
skip because it read the wrong baseline.
Fix: Compare /app/webui.version (Dockerfile) vs /data/hermes/webui.version
(persistent). If mismatch, detect rebuild and force re-apply update.
- Dockerfile +5 -5
- start.sh +27 -9
Dockerfile
CHANGED
|
@@ -82,11 +82,11 @@ RUN mkdir -p /usr/share/fonts/truetype/noto && \
|
|
| 82 |
RUN git clone --depth 1 https://github.com/jnMetaCode/agency-agents-zh.git /app/agency-agents && \
|
| 83 |
echo "agency-agents-zh cloned ($(find /app/agency-agents -name '*.md' ! -name 'README*' ! -name 'CATALOG*' ! -name 'AGENT-LIST*' ! -name 'CONTRIBUTING*' ! -name 'LICENSE*' ! -name 'UPSTREAM*' | wc -l) agent files)"
|
| 84 |
|
| 85 |
-
# Build hermes-web-ui v0.5.
|
| 86 |
RUN rm -rf /tmp/hermes-web-ui && \
|
| 87 |
-
git clone --depth 1 --branch v0.5.
|
| 88 |
cd /tmp/hermes-web-ui && \
|
| 89 |
-
echo "build-v0.5.
|
| 90 |
npm install --ignore-scripts 2>&1 | tail -5 && \
|
| 91 |
npm run build 2>&1 | tail -10 && \
|
| 92 |
mkdir -p /app/webui-server && \
|
|
@@ -97,8 +97,8 @@ RUN rm -rf /tmp/hermes-web-ui && \
|
|
| 97 |
npm prune --omit=dev --prefix /tmp/hermes-web-ui 2>&1 | tail -3 && \
|
| 98 |
cp -r node_modules /app/webui-server/node_modules && \
|
| 99 |
rm -rf /tmp/hermes-web-ui && \
|
| 100 |
-
echo "v0.5.
|
| 101 |
-
echo "hermes-web-ui v0.5.
|
| 102 |
|
| 103 |
# Create hermes home
|
| 104 |
RUN mkdir -p /root/.hermes/plugins/image_gen/pollinations
|
|
|
|
| 82 |
RUN git clone --depth 1 https://github.com/jnMetaCode/agency-agents-zh.git /app/agency-agents && \
|
| 83 |
echo "agency-agents-zh cloned ($(find /app/agency-agents -name '*.md' ! -name 'README*' ! -name 'CATALOG*' ! -name 'AGENT-LIST*' ! -name 'CONTRIBUTING*' ! -name 'LICENSE*' ! -name 'UPSTREAM*' | wc -l) agent files)"
|
| 84 |
|
| 85 |
+
# Build hermes-web-ui v0.5.8
|
| 86 |
RUN rm -rf /tmp/hermes-web-ui && \
|
| 87 |
+
git clone --depth 1 --branch v0.5.8 https://github.com/EKKOLearnAI/hermes-web-ui.git /tmp/hermes-web-ui && \
|
| 88 |
cd /tmp/hermes-web-ui && \
|
| 89 |
+
echo "build-v0.5.8-$(date +%Y%m%d)" > .buildstamp && \
|
| 90 |
npm install --ignore-scripts 2>&1 | tail -5 && \
|
| 91 |
npm run build 2>&1 | tail -10 && \
|
| 92 |
mkdir -p /app/webui-server && \
|
|
|
|
| 97 |
npm prune --omit=dev --prefix /tmp/hermes-web-ui 2>&1 | tail -3 && \
|
| 98 |
cp -r node_modules /app/webui-server/node_modules && \
|
| 99 |
rm -rf /tmp/hermes-web-ui && \
|
| 100 |
+
echo "v0.5.8" > /app/webui.version && \
|
| 101 |
+
echo "hermes-web-ui v0.5.8 build done"
|
| 102 |
|
| 103 |
# Create hermes home
|
| 104 |
RUN mkdir -p /root/.hermes/plugins/image_gen/pollinations
|
start.sh
CHANGED
|
@@ -629,19 +629,33 @@ update_webui_background() {
|
|
| 629 |
|
| 630 |
WEBUI_REPO="EKKOLearnAI/hermes-web-ui"
|
| 631 |
VERSION_FILE="/data/hermes/webui.version"
|
|
|
|
| 632 |
BUILD_TMP="/tmp/webui-update"
|
| 633 |
WEBUI_INSTALL="/app/webui-server"
|
| 634 |
WEBUI_CLIENT="/app/webui-client"
|
| 635 |
API_URL="https://api.github.com/repos/${WEBUI_REPO}/releases/latest"
|
| 636 |
|
| 637 |
-
#
|
| 638 |
-
|
| 639 |
-
|
| 640 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 641 |
echo "$CURRENT_VERSION" > "$VERSION_FILE"
|
| 642 |
fi
|
| 643 |
|
| 644 |
-
echo "[$(date)] WebUI auto-update: checking
|
| 645 |
|
| 646 |
# Query GitHub API for latest release tag
|
| 647 |
LATEST_JSON=$(curl -sf --connect-timeout 10 --max-time 20 "$API_URL" 2>/dev/null)
|
|
@@ -662,8 +676,8 @@ update_webui_background() {
|
|
| 662 |
CURRENT_NUM="${CURRENT_VERSION#v}"
|
| 663 |
LATEST_NUM="${LATEST_TAG#v}"
|
| 664 |
|
| 665 |
-
# Skip if same or current is newer
|
| 666 |
-
if [ "$CURRENT_NUM" = "$LATEST_NUM" ]; then
|
| 667 |
echo "[$(date)] WebUI auto-update: already on latest ($CURRENT_VERSION)"
|
| 668 |
return
|
| 669 |
fi
|
|
@@ -681,12 +695,16 @@ update_webui_background() {
|
|
| 681 |
fi
|
| 682 |
done
|
| 683 |
|
| 684 |
-
if [ "$update_needed" = "false" ]; then
|
| 685 |
echo "[$(date)] WebUI auto-update: current $CURRENT_VERSION is up to date"
|
| 686 |
return
|
| 687 |
fi
|
| 688 |
|
| 689 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 690 |
|
| 691 |
# Build in temp directory
|
| 692 |
rm -rf "$BUILD_TMP"
|
|
|
|
| 629 |
|
| 630 |
WEBUI_REPO="EKKOLearnAI/hermes-web-ui"
|
| 631 |
VERSION_FILE="/data/hermes/webui.version"
|
| 632 |
+
BUILD_VERSION_FILE="/app/webui.version"
|
| 633 |
BUILD_TMP="/tmp/webui-update"
|
| 634 |
WEBUI_INSTALL="/app/webui-server"
|
| 635 |
WEBUI_CLIENT="/app/webui-client"
|
| 636 |
API_URL="https://api.github.com/repos/${WEBUI_REPO}/releases/latest"
|
| 637 |
|
| 638 |
+
# ── Detect rebuild: Dockerfile writes /app/webui.version, persistent is /data/hermes/ ──
|
| 639 |
+
BUILD_VERSION="$(cat "$BUILD_VERSION_FILE" 2>/dev/null | head -1)"
|
| 640 |
+
RECORDED_VERSION="$(cat "$VERSION_FILE" 2>/dev/null | head -1)"
|
| 641 |
+
NEED_FORCE=false
|
| 642 |
+
|
| 643 |
+
if [ -n "$BUILD_VERSION" ] && [ -n "$RECORDED_VERSION" ] && [ "$BUILD_VERSION" != "$RECORDED_VERSION" ]; then
|
| 644 |
+
echo "[$(date)] WebUI auto-update: REBUILD DETECTED (Dockerfile=$BUILD_VERSION, recorded=$RECORDED_VERSION)"
|
| 645 |
+
echo "[$(date)] WebUI auto-update: code was reset to $BUILD_VERSION by container rebuild"
|
| 646 |
+
NEED_FORCE=true
|
| 647 |
+
# Reset baseline so version comparison works correctly
|
| 648 |
+
CURRENT_VERSION="$BUILD_VERSION"
|
| 649 |
+
elif [ -n "$RECORDED_VERSION" ]; then
|
| 650 |
+
CURRENT_VERSION="$RECORDED_VERSION"
|
| 651 |
+
elif [ -n "$BUILD_VERSION" ]; then
|
| 652 |
+
CURRENT_VERSION="$BUILD_VERSION"
|
| 653 |
+
else
|
| 654 |
+
CURRENT_VERSION="v0.5.5"
|
| 655 |
echo "$CURRENT_VERSION" > "$VERSION_FILE"
|
| 656 |
fi
|
| 657 |
|
| 658 |
+
echo "[$(date)] WebUI auto-update: checking (current: $CURRENT_VERSION, Dockerfile: $BUILD_VERSION, latest: querying...)"
|
| 659 |
|
| 660 |
# Query GitHub API for latest release tag
|
| 661 |
LATEST_JSON=$(curl -sf --connect-timeout 10 --max-time 20 "$API_URL" 2>/dev/null)
|
|
|
|
| 676 |
CURRENT_NUM="${CURRENT_VERSION#v}"
|
| 677 |
LATEST_NUM="${LATEST_TAG#v}"
|
| 678 |
|
| 679 |
+
# Skip if same or current is newer (unless rebuild detected)
|
| 680 |
+
if [ "$CURRENT_NUM" = "$LATEST_NUM" ] && [ "$NEED_FORCE" = "false" ]; then
|
| 681 |
echo "[$(date)] WebUI auto-update: already on latest ($CURRENT_VERSION)"
|
| 682 |
return
|
| 683 |
fi
|
|
|
|
| 695 |
fi
|
| 696 |
done
|
| 697 |
|
| 698 |
+
if [ "$update_needed" = "false" ] && [ "$NEED_FORCE" = "false" ]; then
|
| 699 |
echo "[$(date)] WebUI auto-update: current $CURRENT_VERSION is up to date"
|
| 700 |
return
|
| 701 |
fi
|
| 702 |
|
| 703 |
+
if [ "$NEED_FORCE" = "true" ] && [ "$update_needed" = "false" ]; then
|
| 704 |
+
echo "[$(date)] WebUI auto-update: re-applying $LATEST_TAG after rebuild (code was reset to $BUILD_VERSION)"
|
| 705 |
+
else
|
| 706 |
+
echo "[$(date)] WebUI auto-update: upgrading $CURRENT_VERSION → $LATEST_TAG ..."
|
| 707 |
+
fi
|
| 708 |
|
| 709 |
# Build in temp directory
|
| 710 |
rm -rf "$BUILD_TMP"
|