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
3 files manifest.firefox.json+1 −1manifest.json+1 −1scripts/manifest-parity.test.ts+19 −0
manifest.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": {

view file

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",

view file

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+});

view file