diff --git a/.github/scripts/issue-version-triage.cjs b/.github/scripts/issue-version-triage.cjs index 0088c86ce5..1c652232c7 100644 --- a/.github/scripts/issue-version-triage.cjs +++ b/.github/scripts/issue-version-triage.cjs @@ -69,9 +69,9 @@ function normalizeVersion(value) { function normalizeLegacyVersionValue(value) { const visible = String(value).trim().replace(/^[`*_]+/, ""); - // Recognise conventional version, image and release-asset values, without + // Keep an explicitly shared server/agent version (as in #1788), without // mining a sentence such as "unknown; agent version 6.5.0" for a number. - return /^(?:v?\d+\.\d+\.\d+\b|(?:[a-z0-9._/-]+\/)?pulse:|pulse[-_])/i.test(visible) + return /^(?:v?\d+\.\d+\.\d+\b|server(?:[ \t]*\+[ \t]*pulse-agent)?[ \t]+v?\d+\.\d+\.\d+\b|(?:[a-z0-9._/-]+\/)?pulse:|pulse[-_])/i.test(visible) ? normalizeVersion(visible) : null; } diff --git a/.github/scripts/issue-version-triage.test.cjs b/.github/scripts/issue-version-triage.test.cjs index ebc34375d2..271801bf29 100644 --- a/.github/scripts/issue-version-triage.test.cjs +++ b/.github/scripts/issue-version-triage.test.cjs @@ -606,6 +606,14 @@ test("legacy version formats still classify actual version values", () => { } }); +test("legacy joint server-agent versions remain reporter evidence", () => { + const { extractPulseVersion } = triage.internals; + const body = "**Pulse version:** server + pulse-agent v6.3.2 (Docker, `rcourtman/pulse:v6.3.2`)\n**Host OS:** Unraid 7.3.2\n**Agent:** Unified Agent v6.3.2, x86_64"; + assert.equal(extractPulseVersion("[Bug]: Unraid missing disks", body), "6.3.2"); + assert.equal(extractPulseVersion("Bug", "Pulse version: server V6.5.0"), "6.5.0"); + assert.equal(extractPulseVersion("Bug", "Pulse version: unknown; server + pulse-agent v6.3.2"), null); +}); + test("legacy unknown-version sync cannot fabricate release evidence or contact", async () => { for (const body of [ "Pulse version: unknown\n### Agent version\n6.5.0",