|
|
Update available: v2026.3.1 (running v2026.2.26)
This banner:
- Persists after hard refresh (Cmd+Shift+R)
- Cannot be dismissed
- Persists even after patching `lastTouchedVersion` or `lastRunVersion` in `openclaw.json`
**Additional observations:**
- Running `openclaw --version` inside the container reports `2026.3.1-beta.1`
- Running `openclaw update --channel stable` shows the target as `2026.3.1` but exits with "SKIPPED: not-git-install" (expected for Docker installations)
- Both Docker tags `2026.3.1` and `2026.3.1-beta.1` resolve to the same image digest:
sha256:dcf11a3a97a9b0e42dd41fcd4891533e77ff72e7b0380c743177bfbfd6f38b2d
## Root Cause Analysis
The root cause is a **version string mismatch** between the Docker tag and the embedded binary:
1. **Identical Images**: The Docker images for tags `2026.3.1` and `2026.3.1-beta.1` are byte-for-byte identical (same digest).
2. **Stale Binary Version**: The binary embedded in both images still self-reports as version `2026.3.1-beta.1` via `openclaw --version`, even though the images are tagged as the stable release.
3. **Semver Comparison Logic**: The Control UI compares the self-reported version (`2026.3.1-beta.1`) against the GitHub latest release tag (`v2026.3.1`). In semantic versioning, prerelease versions (`beta.1`) are considered lower than their stable counterparts, so `2026.3.1-beta.1 < 2026.3.1`.
4. **False Positive Update Detection**: The UI correctly identifies that `beta.1 < stable` and triggers the update banner, not realizing that the actual running image is already the latest stable release.
5. **No Resolution Path**: Docker installations cannot use npm-based self-update (the `not-git-install` skip reason), so there is no mechanism to "fix" the perceived version mismatch.
**Root Cause Hypothesis**: The `2026.3.1-beta.1` tag was promoted to stable release without updating the embedded binary version string to reflect the stable version number.
## Solution
There is **no user-side workaround** currently available for Docker installations. The issue requires a fix in one of two areas:
### Option A: Fix the Docker Image (Preferred)
Update the embedded binary version string to match the Docker tag on promotion:
- When `2026.3.1-beta.1` is promoted to stable, the binary's version string should be updated to `2026.3.1`
- This ensures `openclaw --version` inside the `2026.3.1` image reports the correct stable version
### Option B: Fix the Control UI
Modify the update banner logic for Docker installations:
- Detect when OpenClaw is running inside a Docker container
- Suppress the update banner for Docker installs where npm-based self-update is not applicable
- Alternatively, check if the running image digest matches the target release digest before showing the banner
## Prevention
To prevent this issue in future releases:
1. **Automated Version Validation**: Implement CI/CD checks that verify the embedded binary version matches the Docker image tag before promotion from beta to stable.
2. **Digest Comparison**: Add logic to the Control UI to compare the running image digest against the digest of the target release, bypassing semver comparison when digests match.
3. **Docker-Specific Update Logic**: Distinguish between Docker and non-Docker installations in the update detection system, acknowledging that Docker images have immutable version bindings.
4. **Release Promotion Checklist**: Include version string verification as a mandatory step when promoting pre-release tags to stable.
## Additional Information
- **Impact**: Cosmetic (no functional impact), but persistent false alarm creates user confusion and erodes trust in the update notification system.
- **Affected Version**: 2026.3.1 (Docker images)
- **Severity**: Low (annoying UI issue, no functional degradation)
- **Frequency**: 100% reproducible on Docker installations for this version
- **Workaround**: None available for Docker users
If you are experiencing this issue, monitor the official [OpenClaw GitHub repository](https://github.com/openclaw/openclaw) for updates addressing this version mismatch in future Docker image releases.