8635173c58d5
sync the extension manifests to package.json and gate product-version parity against drift (v5.2.39)
- time
- 2026-09-10 21:33 UTC · 1 month ago
- machine
- koh2
- agent
- deepseek/deepseek-v4-flash
- session
- cross-client remediation
- parent
- 4d370427d4b6
↓ peach-browser-8635173c.tar.gzatlas at this save
files changed3 files
manifest.firefox.json+1 −1manifest.json+1 −1scripts/manifest-parity.test.ts+19 −0manifest.firefox.json+1 −1
@@ -1,7 +1,7 @@11 {22 "manifest_version": 3,33 "name": "Peach Password Manager",4- "version": "5.2.30",4+ "version": "5.2.39",55 "description": "Zero-knowledge password manager",66 "browser_specific_settings": {77 "gecko": {manifest.json+1 −1
@@ -2,7 +2,7 @@22 "manifest_version": 3,33 "minimum_chrome_version": "116",44 "name": "Peach Password Manager",5- "version": "5.2.30",5+ "version": "5.2.39",66 "description": "Zero-knowledge password manager",77 "action": {88 "default_popup": "src/popup/index.html",scripts/manifest-parity.test.ts+19 −0
@@ -16,6 +16,7 @@1616 };1717 1818 type ExtensionManifest = {19+ version?: string;1920 permissions?: string[];2021 host_permissions?: string[];2122 content_security_policy?: Record<string, string>;@@ -98,3 +99,21 @@9899 },99100 );100101 }102+103+// The shipped extension version comes from the source manifests104+// (scripts/release.ts reads manifest.json), while package.json drives105+// __PEACH_VERSION__ and release-note selection. When they disagree, a release106+// publishes a store version that does not match the product version the app107+// reports. Parity held through v5.2.30 and then silently drifted for eight108+// saves, so it is pinned here rather than left to discipline.109+describe("product version parity across release inputs", () => {110+ it("package.json and both source manifests carry the same version", () => {111+ const pkg = JSON.parse(112+ readFileSync(resolve(process.cwd(), "package.json"), "utf8"),113+ ) as { version?: string };114+115+ expect(pkg.version).toMatch(/^\d+\.\d+\.\d+$/);116+ expect(read(sourcePath("chrome")).version).toBe(pkg.version);117+ expect(read(sourcePath("firefox")).version).toBe(pkg.version);118+ });119+});