diff --git a/CHANGELOG.md b/CHANGELOG.md index 962159f2dbe..bdf798406be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ Docs: https://docs.openclaw.ai -## 2026.3.2 (Unreleased) +## 2026.3.2 ### Changes diff --git a/appcast.xml b/appcast.xml index d63d43cf3ce..22e4df0b698 100644 --- a/appcast.xml +++ b/appcast.xml @@ -4,15 +4,14 @@ OpenClaw 2026.3.2 - Tue, 03 Mar 2026 03:58:13 +0000 + Tue, 03 Mar 2026 04:30:29 +0000 https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml - 2026030201 + 2026030290 2026.3.2 15.0 OpenClaw 2026.3.2

Changes

Breaking

View full changelog

]]>
- +
2026.3.1 @@ -359,107 +359,5 @@ ]]> - - 2026.2.26 - Thu, 26 Feb 2026 23:37:15 +0100 - https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml - 202602260 - 2026.2.26 - 15.0 - OpenClaw 2026.2.26 -

Changes

- -

Fixes

- -

View full changelog

-]]>
- -
\ No newline at end of file diff --git a/package.json b/package.json index 9c3e9d1df3e..65fb40d3988 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "openclaw", - "version": "2026.3.2-beta.1", + "version": "2026.3.2", "description": "Multi-channel AI gateway with extensible messaging integrations", "keywords": [], "homepage": "https://github.com/openclaw/openclaw#readme", diff --git a/test/appcast.test.ts b/test/appcast.test.ts index d8534c87447..941e090df96 100644 --- a/test/appcast.test.ts +++ b/test/appcast.test.ts @@ -1,20 +1,13 @@ import { readFileSync } from "node:fs"; import { describe, expect, it } from "vitest"; +import { canonicalSparkleBuildFromVersion } from "../scripts/sparkle-build.ts"; const APPCAST_URL = new URL("../appcast.xml", import.meta.url); -function expectedSparkleVersion(shortVersion: string): string { - const [year, month, day] = shortVersion.split("."); - if (!year || !month || !day) { - throw new Error(`unexpected short version: ${shortVersion}`); - } - return `${year}${month.padStart(2, "0")}${day.padStart(2, "0")}0`; -} - describe("appcast.xml", () => { - it("uses the expected Sparkle version for 2026.2.15", () => { + it("uses the expected Sparkle version for 2026.3.1", () => { const appcast = readFileSync(APPCAST_URL, "utf8"); - const shortVersion = "2026.2.15"; + const shortVersion = "2026.3.1"; const items = Array.from(appcast.matchAll(/[\s\S]*?<\/item>/g)).map((match) => match[0]); const matchingItem = items.find((item) => item.includes(`${shortVersion}`), @@ -22,6 +15,6 @@ describe("appcast.xml", () => { expect(matchingItem).toBeDefined(); const sparkleMatch = matchingItem?.match(/([^<]+)<\/sparkle:version>/); - expect(sparkleMatch?.[1]).toBe(expectedSparkleVersion(shortVersion)); + expect(sparkleMatch?.[1]).toBe(String(canonicalSparkleBuildFromVersion(shortVersion))); }); });