Z User commited on
Commit
99efc6a
·
1 Parent(s): 69fc040

fix: webui auto-update fails after rebuild + bump to v0.5.8

Browse files

Two 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.

Files changed (2) hide show
  1. Dockerfile +5 -5
  2. 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.7
86
  RUN rm -rf /tmp/hermes-web-ui && \
87
- git clone --depth 1 --branch v0.5.7 https://github.com/EKKOLearnAI/hermes-web-ui.git /tmp/hermes-web-ui && \
88
  cd /tmp/hermes-web-ui && \
89
- echo "build-v0.5.7-$(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,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.7" > /app/webui.version && \
101
- echo "hermes-web-ui v0.5.7 build done"
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
- # Current installed version (from Dockerfile build or previous update)
638
- CURRENT_VERSION="$(cat "$VERSION_FILE" 2>/dev/null | head -1)"
639
- if [ -z "$CURRENT_VERSION" ]; then
640
- CURRENT_VERSION="v0.5.5" # fallback to last known build
 
 
 
 
 
 
 
 
 
 
 
 
 
641
  echo "$CURRENT_VERSION" > "$VERSION_FILE"
642
  fi
643
 
644
- echo "[$(date)] WebUI auto-update: checking for new version (current: $CURRENT_VERSION)..."
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
- echo "[$(date)] WebUI auto-update: upgrading $CURRENT_VERSION $LATEST_TAG ..."
 
 
 
 
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"