a411cc866918
wip: wire PB-26-210 browser gate into CI and bump v5.2.27; macOS Chrome service-worker gate remains environment-blocked
- time
- 2026-09-09 20:31 UTC · 1 month ago
- machine
- koh2
- agent
- claude-opus-5
- session
- resolve browser release gate
- parent
- 78679e4a8651
↓ peach-browser-a411cc86.tar.gzatlas at this save
files changed5 files
manifest.firefox.json+1 −1manifest.json+1 −1package.json+1 −1scripts/ci.ts+5 −3scripts/release-gate.test.ts+8 −4manifest.firefox.json+1 −1
@@ -1,7 +1,7 @@11 {22 "manifest_version": 3,33 "name": "Peach Password Manager",4- "version": "5.2.26",4+ "version": "5.2.27",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.26",5+ "version": "5.2.27",66 "description": "Zero-knowledge password manager",77 "action": {88 "default_popup": "src/popup/index.html",package.json+1 −1
@@ -1,6 +1,6 @@11 {22 "name": "peach",3- "version": "5.2.26",3+ "version": "5.2.27",44 "description": "Zero-knowledge password manager",55 "license": "GPL-3.0-only",66 "type": "module",scripts/ci.ts+5 −3
@@ -51,9 +51,11 @@5151 cmd: ['npm', 'run', 'build:firefox'],5252 },5353 {54- // Runs after both builds: the web-accessible-resource assertions read the55- // shipped dist-chrome/ and dist-firefox/ manifests, so a Tests step ahead56- // of the builds would skip them on a clean checkout.54+ // Runs after both builds: the browser gate exercises the shipped targets.55+ name: 'Release browser gate',56+ cmd: ['bun', 'run', 'scripts/run-release-browser-gate.ts'],57+ },58+ {5759 name: 'Tests',5860 cmd: ['npm', 'test', '--', '--reporter=verbose'],5961 },scripts/release-gate.test.ts+8 −4
@@ -88,7 +88,7 @@8888 });8989 });9090 91-describe("PB-26-210: browser gate remains diagnostic rather than release-blocking", () => {91+describe("PB-26-210: browser gate is release-blocking", () => {9292 const RELEASE_SCRIPTS = ["scripts/release.ts", "scripts/release-firefox.ts"];9393 9494 for (const scriptPath of RELEASE_SCRIPTS) {@@ -109,10 +109,14 @@109109 });110110 }111111 112- it("scripts/ci.ts does not invoke the browser gate wrapper", () => {112+ it("scripts/ci.ts invokes the browser gate after both builds", () => {113113 const source = readFileSync(join(ROOT, "scripts/ci.ts"), "utf8");114- expect(source).not.toContain("scripts/run-release-browser-gate.ts");115- expect(source).not.toContain("scripts/test-firefox-passkeys.mjs");114+ const firefoxBuildIndex = source.indexOf("['npm', 'run', 'build:firefox']");115+ const browserGateIndex = source.indexOf("scripts/run-release-browser-gate.ts");116+ const testsIndex = source.indexOf("['npm', 'test'");117+118+ expect(browserGateIndex).toBeGreaterThan(firefoxBuildIndex);119+ expect(browserGateIndex).toBeLessThan(testsIndex);116120 });117121 118122 it("the mandatory wrapper runs real Chrome and combined real-Firefox evidence", () => {