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:
1 parent
b04f0387c4
commit
568d5c4b0e
2 files changed
+24
-1
No files matched your search
+8
-1
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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"))
|
||||
|
||||
Reference in new issue
Block a user