Browse Source

Updated docker-publish-daily-beta.sh

maziggy 2 months ago
parent
commit
1ad44cd41f
2 changed files with 51 additions and 39 deletions
  1. 6 1
      CHANGELOG.md
  2. 45 38
      docker-publish-daily-beta.sh

+ 6 - 1
CHANGELOG.md

@@ -2,7 +2,7 @@
 
 
 All notable changes to Bambuddy will be documented in this file.
 All notable changes to Bambuddy will be documented in this file.
 
 
-## [0.2.2b3] - Unreleased
+## [0.2.2b3] - 2026-03-11
 
 
 ### New Features
 ### New Features
 - **Home Assistant Notification Provider** ([#656](https://github.com/maziggy/bambuddy/issues/656)) — Added Home Assistant as a notification provider. When HA is configured in Settings → Network → Home Assistant, selecting "Home Assistant" as a notification provider sends persistent notifications to the HA dashboard — no additional configuration needed. From there, HA automations can forward notifications to mobile apps, WhatsApp, or any other service. Requested by @TravisWilder.
 - **Home Assistant Notification Provider** ([#656](https://github.com/maziggy/bambuddy/issues/656)) — Added Home Assistant as a notification provider. When HA is configured in Settings → Network → Home Assistant, selecting "Home Assistant" as a notification provider sends persistent notifications to the HA dashboard — no additional configuration needed. From there, HA automations can forward notifications to mobile apps, WhatsApp, or any other service. Requested by @TravisWilder.
@@ -11,6 +11,8 @@ All notable changes to Bambuddy will be documented in this file.
 - **Malaysian Ringgit Currency** ([#634](https://github.com/maziggy/bambuddy/issues/634)) — Added MYR (RM) to the list of supported currencies for filament cost tracking. Requested by @cynogen127.
 - **Malaysian Ringgit Currency** ([#634](https://github.com/maziggy/bambuddy/issues/634)) — Added MYR (RM) to the list of supported currencies for filament cost tracking. Requested by @cynogen127.
 - **ETA Variable in Notifications** ([#638](https://github.com/maziggy/bambuddy/issues/638)) — Added `{eta}` template variable to print start, print progress, and queue job started notifications. Shows the estimated wall-clock completion time (e.g. "15:53" or "3:53 PM") based on the user's configured time format (12h/24h). Existing `{estimated_time}` still shows duration ("1h 23m"). Requested by @SebSeifert.
 - **ETA Variable in Notifications** ([#638](https://github.com/maziggy/bambuddy/issues/638)) — Added `{eta}` template variable to print start, print progress, and queue job started notifications. Shows the estimated wall-clock completion time (e.g. "15:53" or "3:53 PM") based on the user's configured time format (12h/24h). Existing `{estimated_time}` still shows duration ("1h 23m"). Requested by @SebSeifert.
 - **Bulk Delete Spool and Color Catalog Entries** ([#646](https://github.com/maziggy/bambuddy/issues/646)) — Added checkbox selection and bulk delete to both the Spool Catalog and Color Catalog in Settings > Filament. Select individual entries with checkboxes, use the header checkbox to select/deselect all visible entries, then click "Delete Selected" to remove them in one operation. Previously, entries could only be deleted one at a time. Requested by @SebSeifert.
 - **Bulk Delete Spool and Color Catalog Entries** ([#646](https://github.com/maziggy/bambuddy/issues/646)) — Added checkbox selection and bulk delete to both the Spool Catalog and Color Catalog in Settings > Filament. Select individual entries with checkboxes, use the header checkbox to select/deselect all visible entries, then click "Delete Selected" to remove them in one operation. Previously, entries could only be deleted one at a time. Requested by @SebSeifert.
+- **Force Color Match** ([#625](https://github.com/maziggy/bambuddy/pull/625)) — Added a "Force Color Match" option for "Print to Any" queue scheduling. When enabled, the scheduler requires a strict color match when assigning prints to printers, preventing incorrect filament assignments when multiple candidates are close in color. Prints wait in the queue until a printer with the exact matching filament is available. Contributed by @cadtoolbox.
+- **Israeli New Shekel Currency** — Added ILS (₪) to the list of supported currencies for filament cost tracking.
 
 
 ### Changes
 ### Changes
 - **License changed from MIT to AGPL-3.0** — To prevent unauthorized redistribution of Bambuddy as a closed-source product. All existing contributions were made under MIT, which is forward-compatible with AGPL-3.0. Community contributions and usage are unaffected.
 - **License changed from MIT to AGPL-3.0** — To prevent unauthorized redistribution of Bambuddy as a closed-source product. All existing contributions were made under MIT, which is forward-compatible with AGPL-3.0. Community contributions and usage are unaffected.
@@ -19,6 +21,7 @@ All notable changes to Bambuddy will be documented in this file.
 - **Shorter Inventory Location Labels** — The location column in the Inventory table now shows compact labels like "H2D-1 B3" instead of "H2D-1 AMS-B Slot 3". External spool holders show "Ext" instead of "External". AMS-HT labels remain unchanged ("HT-A").
 - **Shorter Inventory Location Labels** — The location column in the Inventory table now shows compact labels like "H2D-1 B3" instead of "H2D-1 AMS-B Slot 3". External spool holders show "Ext" instead of "External". AMS-HT labels remain unchanged ("HT-A").
 - **Higher FTP Timeout Options for Large Files** ([#660](https://github.com/maziggy/bambuddy/issues/660)) — Added 180s and 300s FTP timeout options in Settings. The previous maximum of 120s was insufficient for large 3MF files (e.g. 28 MB Hueforge models) which can't be downloaded from the printer's FTP server within 2 minutes, especially during active printing. Reported by @PasDoe.
 - **Higher FTP Timeout Options for Large Files** ([#660](https://github.com/maziggy/bambuddy/issues/660)) — Added 180s and 300s FTP timeout options in Settings. The previous maximum of 120s was insufficient for large 3MF files (e.g. 28 MB Hueforge models) which can't be downloaded from the printer's FTP server within 2 minutes, especially during active printing. Reported by @PasDoe.
 - **Separate Permission for AMS Spool Assignments** ([#635](https://github.com/maziggy/bambuddy/issues/635)) — Added a new `inventory:view_assignments` permission that controls whether spool-to-AMS-slot assignment data is visible on the Printers page. Previously, viewing spool assignments on printer cards required `inventory:read`, which also exposed the full Inventory page in the sidebar. Admins can now grant `inventory:view_assignments` without `inventory:read` so users can see what's loaded in the AMS without accessing the full spool inventory. All default groups (Administrators, Operators, Viewers) include the new permission automatically. Also fixed multi-word permission labels in the group editor (e.g. "Update_Own" → "Update Own"). Reported by @Minebuddy.
 - **Separate Permission for AMS Spool Assignments** ([#635](https://github.com/maziggy/bambuddy/issues/635)) — Added a new `inventory:view_assignments` permission that controls whether spool-to-AMS-slot assignment data is visible on the Printers page. Previously, viewing spool assignments on printer cards required `inventory:read`, which also exposed the full Inventory page in the sidebar. Admins can now grant `inventory:view_assignments` without `inventory:read` so users can see what's loaded in the AMS without accessing the full spool inventory. All default groups (Administrators, Operators, Viewers) include the new permission automatically. Also fixed multi-word permission labels in the group editor (e.g. "Update_Own" → "Update Own"). Reported by @Minebuddy.
+- **Prometheus Build Info Metric** ([#633](https://github.com/maziggy/bambuddy/pull/633)) — Added a `bambuddy_build_info` gauge metric to the Prometheus metrics endpoint, exposing the application version, Python version, platform, and architecture as labels. Follows the standard Prometheus `_build_info` convention for dashboards and version-change alerting. Contributed by @sw1nn.
 
 
 ### Fixed
 ### Fixed
 - **Debug Logging Endpoint 500 Error** — The `GET /api/v1/support/debug-logging` endpoint returned a 500 Internal Server Error when the database contained a timezone-aware timestamp written by a previous version. The duration calculation subtracted a timezone-aware datetime from a naive `datetime.now()`, raising `TypeError`. Now strips timezone info when reading the stored timestamp.
 - **Debug Logging Endpoint 500 Error** — The `GET /api/v1/support/debug-logging` endpoint returned a 500 Internal Server Error when the database contained a timezone-aware timestamp written by a previous version. The duration calculation subtracted a timezone-aware datetime from a naive `datetime.now()`, raising `TypeError`. Now strips timezone info when reading the stored timestamp.
@@ -34,6 +37,8 @@ All notable changes to Bambuddy will be documented in this file.
 - **Dispatch Toast Stuck After Second Print** — The print dispatch progress toast ("Starting prints…") stayed visible forever after the second print dispatch in a session. The dedup guard (`lastDispatchSummaryRef`) that prevents duplicate completion toasts was never reset between batches, so every single-printer dispatch produced the same summary key (`"first-complete:1:0"`). The first print completed normally, but subsequent completions matched the stale ref and skipped creating the done toast — leaving the progress toast stuck in "Processing" state with no way to dismiss except a page reload. Now resets the dedup guard whenever the dispatch toast is dismissed (auto-dismiss timeout, cleanup events) and when a new batch starts.
 - **Dispatch Toast Stuck After Second Print** — The print dispatch progress toast ("Starting prints…") stayed visible forever after the second print dispatch in a session. The dedup guard (`lastDispatchSummaryRef`) that prevents duplicate completion toasts was never reset between batches, so every single-printer dispatch produced the same summary key (`"first-complete:1:0"`). The first print completed normally, but subsequent completions matched the stale ref and skipped creating the done toast — leaving the progress toast stuck in "Processing" state with no way to dismiss except a page reload. Now resets the dedup guard whenever the dispatch toast is dismissed (auto-dismiss timeout, cleanup events) and when a new batch starts.
 - **Archive Card Buttons Overlapping at Narrow Widths** ([#641](https://github.com/maziggy/bambuddy/issues/641)) — The "Reprint" and "Schedule" buttons at the bottom of archive cards overlapped when the browser window was narrower than the card grid expected (e.g. snapped to half-screen on a 2K monitor). The button text labels used a viewport-based `sm:` breakpoint that didn't account for actual card width. Added `overflow-hidden` to the flex buttons and `truncate` to the text spans so labels clip cleanly with ellipsis instead of bleeding into adjacent buttons. Reported by rsocko@outlook.com, confirmed by @dsmitty166.
 - **Archive Card Buttons Overlapping at Narrow Widths** ([#641](https://github.com/maziggy/bambuddy/issues/641)) — The "Reprint" and "Schedule" buttons at the bottom of archive cards overlapped when the browser window was narrower than the card grid expected (e.g. snapped to half-screen on a 2K monitor). The button text labels used a viewport-based `sm:` breakpoint that didn't account for actual card width. Added `overflow-hidden` to the flex buttons and `truncate` to the text spans so labels clip cleanly with ellipsis instead of bleeding into adjacent buttons. Reported by rsocko@outlook.com, confirmed by @dsmitty166.
 - **Debug Logging Banner Timer Shows Negative Time** — When enabling debug logging, the banner showed a negative duration (e.g. "-60m -59s") equal to the server's UTC offset. The `enabled_at` timestamp was stored using `datetime.now()` (local time, no timezone indicator), but the frontend interpreted it as UTC. Now stores and compares all debug logging timestamps in UTC.
 - **Debug Logging Banner Timer Shows Negative Time** — When enabling debug logging, the banner showed a negative duration (e.g. "-60m -59s") equal to the server's UTC offset. The `enabled_at` timestamp was stored using `datetime.now()` (local time, no timezone indicator), but the frontend interpreted it as UTC. Now stores and compares all debug logging timestamps in UTC.
+- **Non-Bambu Lab Spools Can't Link/Unlink to Spoolman** ([#653](https://github.com/maziggy/bambuddy/pull/653)) — The "Link to Spoolman" button was not shown for non-Bambu Lab spools (which lack RFID tag UIDs). Now generates a fallback tag from the printer ID, AMS ID, and tray ID for spools without RFID identifiers. Also added an "Unlink from Spoolman" button for non-Bambu spools that are already linked. Contributed by @shrunbr.
+- **Spoolman Location Not Updated on Link/Unlink** ([#669](https://github.com/maziggy/bambuddy/pull/669)) — Linking a spool to Spoolman did not set the spool's location field. Now sets the Spoolman location to the printer name, AMS name, and slot number (e.g. "P2S-1 - AMS-A 3") when linking, and clears it when unlinking. Contributed by @shrunbr.
 
 
 
 
 ## [0.2.2b2] - 2026-03-06
 ## [0.2.2b2] - 2026-03-06

+ 45 - 38
docker-publish-daily-beta.sh

@@ -12,11 +12,12 @@
 #   ./docker-publish-daily-beta.sh --skip-release   # Build+push without GitHub release
 #   ./docker-publish-daily-beta.sh --skip-release   # Build+push without GitHub release
 #
 #
 # Reads APP_VERSION from backend/app/core/config.py (must be a beta version like 0.2.2b1).
 # Reads APP_VERSION from backend/app/core/config.py (must be a beta version like 0.2.2b1).
-# Builds and pushes a multi-arch Docker image tagged with that version, overwriting any
-# previous image with the same tag. Optionally creates/updates a GitHub prerelease.
+# Appends a daily date suffix to create a unique tag (e.g., 0.2.2b3-daily.20260311),
+# avoiding collisions with release tags. Builds and pushes a multi-arch Docker image.
+# Optionally creates/updates a GitHub prerelease.
 #
 #
-# Beta versions are never tagged as 'latest'. Users update by pulling the same tag
-# (e.g., docker pull ghcr.io/maziggy/bambuddy:0.2.2b1) or using Watchtower.
+# Beta versions are never tagged as 'latest'. Users update by pulling the daily tag
+# (e.g., docker pull ghcr.io/maziggy/bambuddy:0.2.2b3-daily.20260311) or using Watchtower.
 #
 #
 # Prerequisites:
 # Prerequisites:
 #   1. Log in to ghcr.io:
 #   1. Log in to ghcr.io:
@@ -108,7 +109,12 @@ if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+b[0-9]+$ ]]; then
     exit 1
     exit 1
 fi
 fi
 
 
+# Append date suffix to differentiate daily builds from releases
+DAILY_DATE=$(date +%Y%m%d)
+DAILY_TAG="${VERSION}-daily.${DAILY_DATE}"
+
 echo -e "${GREEN}  APP_VERSION: ${VERSION}${NC}"
 echo -e "${GREEN}  APP_VERSION: ${VERSION}${NC}"
+echo -e "${GREEN}  Daily tag:   ${DAILY_TAG}${NC}"
 
 
 # ============================================================
 # ============================================================
 # Step 2: Build & push Docker images
 # Step 2: Build & push Docker images
@@ -121,6 +127,7 @@ CPU_COUNT=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4)
 echo -e "${GREEN}================================================${NC}"
 echo -e "${GREEN}================================================${NC}"
 echo -e "${GREEN}  Daily beta build${NC}"
 echo -e "${GREEN}  Daily beta build${NC}"
 echo -e "${GREEN}  Version: ${VERSION}${NC}"
 echo -e "${GREEN}  Version: ${VERSION}${NC}"
+echo -e "${GREEN}  Tag:     ${DAILY_TAG}${NC}"
 echo -e "${GREEN}  Platforms: ${PLATFORMS}${NC}"
 echo -e "${GREEN}  Platforms: ${PLATFORMS}${NC}"
 echo -e "${GREEN}  CPU cores: ${CPU_COUNT}${NC}"
 echo -e "${GREEN}  CPU cores: ${CPU_COUNT}${NC}"
 if [ "$PARALLEL" = true ]; then
 if [ "$PARALLEL" = true ]; then
@@ -186,10 +193,10 @@ echo -e "${YELLOW}Beta version — skipping 'latest' tag${NC}"
 # Build tags for all target registries
 # Build tags for all target registries
 TAGS=""
 TAGS=""
 if [ "$PUSH_GHCR" = true ]; then
 if [ "$PUSH_GHCR" = true ]; then
-    TAGS="$TAGS -t ${GHCR_IMAGE}:${VERSION}"
+    TAGS="$TAGS -t ${GHCR_IMAGE}:${DAILY_TAG}"
 fi
 fi
 if [ "$PUSH_DOCKERHUB" = true ]; then
 if [ "$PUSH_DOCKERHUB" = true ]; then
-    TAGS="$TAGS -t ${DOCKERHUB_IMAGE}:${VERSION}"
+    TAGS="$TAGS -t ${DOCKERHUB_IMAGE}:${DAILY_TAG}"
 fi
 fi
 
 
 # Common build args (no cache to ensure clean builds)
 # Common build args (no cache to ensure clean builds)
@@ -203,12 +210,12 @@ if [ "$PARALLEL" = true ]; then
     ARCH_TAGS_AMD64=""
     ARCH_TAGS_AMD64=""
     ARCH_TAGS_ARM64=""
     ARCH_TAGS_ARM64=""
     if [ "$PUSH_GHCR" = true ]; then
     if [ "$PUSH_GHCR" = true ]; then
-        ARCH_TAGS_AMD64="$ARCH_TAGS_AMD64 -t ${GHCR_IMAGE}:${VERSION}-amd64"
-        ARCH_TAGS_ARM64="$ARCH_TAGS_ARM64 -t ${GHCR_IMAGE}:${VERSION}-arm64"
+        ARCH_TAGS_AMD64="$ARCH_TAGS_AMD64 -t ${GHCR_IMAGE}:${DAILY_TAG}-amd64"
+        ARCH_TAGS_ARM64="$ARCH_TAGS_ARM64 -t ${GHCR_IMAGE}:${DAILY_TAG}-arm64"
     fi
     fi
     if [ "$PUSH_DOCKERHUB" = true ]; then
     if [ "$PUSH_DOCKERHUB" = true ]; then
-        ARCH_TAGS_AMD64="$ARCH_TAGS_AMD64 -t ${DOCKERHUB_IMAGE}:${VERSION}-amd64"
-        ARCH_TAGS_ARM64="$ARCH_TAGS_ARM64 -t ${DOCKERHUB_IMAGE}:${VERSION}-arm64"
+        ARCH_TAGS_AMD64="$ARCH_TAGS_AMD64 -t ${DOCKERHUB_IMAGE}:${DAILY_TAG}-amd64"
+        ARCH_TAGS_ARM64="$ARCH_TAGS_ARM64 -t ${DOCKERHUB_IMAGE}:${DAILY_TAG}-arm64"
     fi
     fi
 
 
     # Build amd64 in background
     # Build amd64 in background
@@ -248,16 +255,16 @@ if [ "$PARALLEL" = true ]; then
     if [ "$PUSH_GHCR" = true ]; then
     if [ "$PUSH_GHCR" = true ]; then
         echo -e "${BLUE}  Creating GHCR manifest...${NC}"
         echo -e "${BLUE}  Creating GHCR manifest...${NC}"
         docker buildx imagetools create \
         docker buildx imagetools create \
-            -t "${GHCR_IMAGE}:${VERSION}" \
-            "${GHCR_IMAGE}:${VERSION}-amd64" \
-            "${GHCR_IMAGE}:${VERSION}-arm64"
+            -t "${GHCR_IMAGE}:${DAILY_TAG}" \
+            "${GHCR_IMAGE}:${DAILY_TAG}-amd64" \
+            "${GHCR_IMAGE}:${DAILY_TAG}-arm64"
     fi
     fi
     if [ "$PUSH_DOCKERHUB" = true ]; then
     if [ "$PUSH_DOCKERHUB" = true ]; then
         echo -e "${BLUE}  Creating Docker Hub manifest...${NC}"
         echo -e "${BLUE}  Creating Docker Hub manifest...${NC}"
         docker buildx imagetools create \
         docker buildx imagetools create \
-            -t "${DOCKERHUB_IMAGE}:${VERSION}" \
-            "${DOCKERHUB_IMAGE}:${VERSION}-amd64" \
-            "${DOCKERHUB_IMAGE}:${VERSION}-arm64"
+            -t "${DOCKERHUB_IMAGE}:${DAILY_TAG}" \
+            "${DOCKERHUB_IMAGE}:${DAILY_TAG}-amd64" \
+            "${DOCKERHUB_IMAGE}:${DAILY_TAG}-arm64"
     fi
     fi
 else
 else
     # Sequential build (default): Build both platforms in one command
     # Sequential build (default): Build both platforms in one command
@@ -289,15 +296,15 @@ else
     # Build pull commands for the release body
     # Build pull commands for the release body
     PULL_COMMANDS=""
     PULL_COMMANDS=""
     if [ "$PUSH_GHCR" = true ]; then
     if [ "$PUSH_GHCR" = true ]; then
-        PULL_COMMANDS="docker pull ghcr.io/maziggy/bambuddy:${VERSION}"
+        PULL_COMMANDS="docker pull ghcr.io/maziggy/bambuddy:${DAILY_TAG}"
     fi
     fi
     if [ "$PUSH_DOCKERHUB" = true ]; then
     if [ "$PUSH_DOCKERHUB" = true ]; then
         if [ -n "$PULL_COMMANDS" ]; then
         if [ -n "$PULL_COMMANDS" ]; then
             PULL_COMMANDS="${PULL_COMMANDS}
             PULL_COMMANDS="${PULL_COMMANDS}
 # or
 # or
-docker pull maziggy/bambuddy:${VERSION}"
+docker pull maziggy/bambuddy:${DAILY_TAG}"
         else
         else
-            PULL_COMMANDS="docker pull maziggy/bambuddy:${VERSION}"
+            PULL_COMMANDS="docker pull maziggy/bambuddy:${DAILY_TAG}"
         fi
         fi
     fi
     fi
 
 
@@ -322,22 +329,22 @@ EOF
 
 
     # Delete existing release so the new one gets today's date
     # Delete existing release so the new one gets today's date
     # (gh release edit only updates title/notes, not the creation timestamp)
     # (gh release edit only updates title/notes, not the creation timestamp)
-    if gh release view "v${VERSION}" >/dev/null 2>&1; then
-        echo "  Deleting old release v${VERSION} (will recreate with today's date)..."
-        gh release delete "v${VERSION}" --yes --cleanup-tag
+    if gh release view "v${DAILY_TAG}" >/dev/null 2>&1; then
+        echo "  Deleting old release v${DAILY_TAG} (will recreate with today's date)..."
+        gh release delete "v${DAILY_TAG}" --yes --cleanup-tag
     fi
     fi
 
 
     # Create/move tag to current HEAD and push
     # Create/move tag to current HEAD and push
-    echo "  Tagging current HEAD as v${VERSION}..."
-    git tag -f "v${VERSION}"
-    git push origin "v${VERSION}" --force
+    echo "  Tagging current HEAD as v${DAILY_TAG}..."
+    git tag -f "v${DAILY_TAG}"
+    git push origin "v${DAILY_TAG}" --force
 
 
-    echo "  Creating release v${VERSION}..."
-    gh release create "v${VERSION}" \
-        --title "Daily Beta Build v${VERSION} (${TODAY})" \
+    echo "  Creating release v${DAILY_TAG}..."
+    gh release create "v${DAILY_TAG}" \
+        --title "Daily Beta Build v${DAILY_TAG}" \
         --prerelease \
         --prerelease \
         --notes "$RELEASE_BODY"
         --notes "$RELEASE_BODY"
-    echo -e "${GREEN}  Created GitHub release: v${VERSION}${NC}"
+    echo -e "${GREEN}  Created GitHub release: v${DAILY_TAG}${NC}"
 fi
 fi
 
 
 # ============================================================
 # ============================================================
@@ -347,17 +354,17 @@ echo -e "${BLUE}[4/4] Verifying...${NC}"
 
 
 if [ "$PUSH_GHCR" = true ]; then
 if [ "$PUSH_GHCR" = true ]; then
     echo -e "${BLUE}GHCR manifest:${NC}"
     echo -e "${BLUE}GHCR manifest:${NC}"
-    docker buildx imagetools inspect "${GHCR_IMAGE}:${VERSION}"
+    docker buildx imagetools inspect "${GHCR_IMAGE}:${DAILY_TAG}"
 fi
 fi
 if [ "$PUSH_DOCKERHUB" = true ]; then
 if [ "$PUSH_DOCKERHUB" = true ]; then
     echo -e "${BLUE}Docker Hub manifest:${NC}"
     echo -e "${BLUE}Docker Hub manifest:${NC}"
-    docker buildx imagetools inspect "${DOCKERHUB_IMAGE}:${VERSION}"
+    docker buildx imagetools inspect "${DOCKERHUB_IMAGE}:${DAILY_TAG}"
 fi
 fi
 
 
 if [ "$SKIP_RELEASE" != true ]; then
 if [ "$SKIP_RELEASE" != true ]; then
     echo ""
     echo ""
     echo -e "${BLUE}GitHub release:${NC}"
     echo -e "${BLUE}GitHub release:${NC}"
-    gh release view "v${VERSION}"
+    gh release view "v${DAILY_TAG}"
 fi
 fi
 
 
 # ============================================================
 # ============================================================
@@ -369,13 +376,13 @@ echo -e "${GREEN}  Daily beta build complete!${NC}"
 echo -e "${GREEN}  Version: ${VERSION}${NC}"
 echo -e "${GREEN}  Version: ${VERSION}${NC}"
 echo -e "${GREEN}================================================${NC}"
 echo -e "${GREEN}================================================${NC}"
 if [ "$PUSH_GHCR" = true ]; then
 if [ "$PUSH_GHCR" = true ]; then
-    echo "  GHCR:       ${GHCR_IMAGE}:${VERSION}"
+    echo "  GHCR:       ${GHCR_IMAGE}:${DAILY_TAG}"
 fi
 fi
 if [ "$PUSH_DOCKERHUB" = true ]; then
 if [ "$PUSH_DOCKERHUB" = true ]; then
-    echo "  Docker Hub: ${DOCKERHUB_IMAGE}:${VERSION}"
+    echo "  Docker Hub: ${DOCKERHUB_IMAGE}:${DAILY_TAG}"
 fi
 fi
 if [ "$SKIP_RELEASE" != true ]; then
 if [ "$SKIP_RELEASE" != true ]; then
-    echo "  Release:    https://github.com/${IMAGE_NAME}/releases/tag/v${VERSION}"
+    echo "  Release:    https://github.com/${IMAGE_NAME}/releases/tag/v${DAILY_TAG}"
 fi
 fi
 echo ""
 echo ""
 echo -e "${BLUE}Supported platforms:${NC}"
 echo -e "${BLUE}Supported platforms:${NC}"
@@ -384,9 +391,9 @@ echo "  - linux/arm64 (Raspberry Pi 4/5, Apple Silicon)"
 echo ""
 echo ""
 echo -e "${GREEN}Users can now run:${NC}"
 echo -e "${GREEN}Users can now run:${NC}"
 if [ "$PUSH_GHCR" = true ]; then
 if [ "$PUSH_GHCR" = true ]; then
-    echo "  docker pull ${GHCR_IMAGE}:${VERSION}"
+    echo "  docker pull ${GHCR_IMAGE}:${DAILY_TAG}"
 fi
 fi
 if [ "$PUSH_DOCKERHUB" = true ]; then
 if [ "$PUSH_DOCKERHUB" = true ]; then
-    echo "  docker pull ${DOCKERHUB_IMAGE}:${VERSION}"
-    echo "  docker pull ${IMAGE_NAME}:${VERSION}  # shorthand"
+    echo "  docker pull ${DOCKERHUB_IMAGE}:${DAILY_TAG}"
+    echo "  docker pull ${IMAGE_NAME}:${DAILY_TAG}  # shorthand"
 fi
 fi