gate-fix #5480: suppress 'unknown' server version (case-insensitive) to prevent false banner

Codex gate: _normalizeWebUIVersion suppressed empty/__WEBUI_VERSION__/'not detected'
but NOT 'unknown' — api/updates.py emits WEBUI_VERSION='unknown' on git-describe
failure (Docker/CI images), so a real client version would falsely fire the
stale-client banner against server='unknown'. Suppress 'unknown' (+ case-insensitive
for all sentinels). + regression test asserting unknown/UNKNOWN/Unknown don't fire.
This commit is contained in:
nesquena-hermes committed 2026-07-04 01:15:26 +00:00
1 parent b04f0387c4
commit 568d5c4b0e
2 files changed
+24 -1

No files matched your search

+8 -1
View File
@@ -2302,7 +2302,14 @@ async function hardRefreshWebUIClient(){
function _normalizeWebUIVersion(value){
if(!value) return '';
const s=String(value).trim();
if(!s||s==='__WEBUI_VERSION__'||s==='not detected') return '';
if(!s) return '';
// Suppress placeholder / non-version sentinels (case-insensitive) so a real
// client version never "mismatches" against a server that couldn't detect its
// own version. api/updates.py can emit 'unknown' (git describe failure in a
// Docker/CI image); comparing a real version against 'unknown' would FALSELY
// fire the stale-client banner. (Codex #5480 gate)
const lower=s.toLowerCase();
if(lower==='__webui_version__'||lower==='not detected'||lower==='unknown') return '';
return s;
}
+16
View File
@@ -177,6 +177,22 @@ def test_node_missing_server_version_no_banner():
assert result["display"] != "flex", f"Banner wrongly shown for missing server version: {result}"
def test_node_unknown_server_version_no_banner():
"""A server that reports webui_version='unknown' (git-describe failure in a
Docker/CI image, api/updates.py) must NOT falsely fire the stale-client
banner against a real client version. (Codex #5480 gate)"""
helpers = _extract_skew_helpers(PANELS_JS.read_text(encoding="utf-8"))
for server_val in ("unknown", "UNKNOWN", "Unknown"):
result = _run_harness(
_make_stub("v1"),
helpers,
f'checkWebUIVersionSkew({{ webui_version: "{server_val}" }});',
)
assert result["display"] != "flex", (
f"Banner wrongly shown for server version {server_val!r}: {result}"
)
def test_node_placeholder_client_version_no_banner():
"""Unresolved __WEBUI_VERSION__ literal as bundle stamp keeps banner hidden."""
helpers = _extract_skew_helpers(PANELS_JS.read_text(encoding="utf-8"))