diff --git a/docs/release-playbook.md b/docs/release-playbook.md index 2751c62..73bcee1 100644 --- a/docs/release-playbook.md +++ b/docs/release-playbook.md @@ -27,6 +27,67 @@ - Publish browser store listings and verify installed updates as required by the target browser. - The protected release workflow signs the Firefox unlisted XPI with AMO credentials and uploads it with the other release assets. +## Firefox Verification Test Plan + +Use this plan before declaring Firefox support release-ready or bumping the +project version for a Firefox-supporting release. + +### Automated gates + +Run these commands from a clean checkout in order: + +1. `npm run release:clean` +2. `npm run fetch-clang` +3. `npm run lint` +4. `npm run build` +5. `npm run test:e2e` +6. `npm run test:preflight-clang` +7. `npm run version:check` +8. `npm run release:check-version` +9. `npm run test:browser:firefox` +10. `npm run package:release` + +Passing these gates proves that: + +- Firefox-specific manifest generation succeeds +- the Firefox extension package passes `web-ext` lint/build smoke +- release packaging emits the Firefox artifact and release manifest +- manifest/package metadata stay version-synchronized + +### Manual Firefox runtime QA + +Automated Firefox smoke does **not** prove that the extension compiles and runs +programs correctly inside Firefox. Before release, verify these behaviors in a +real Firefox desktop build: + +1. Load the unpacked Firefox build and confirm the toolbar action opens the IDE. +2. Confirm Monaco renders and the default sample appears without blocking + console/runtime errors. +3. Compile and run the default sample program. +4. Run a program that reads stdin and confirm terminal interaction works. +5. Open a local source file with Firefox's fallback picker and save changes. +6. Import a folder, compile a multi-file project, and confirm diagnostics appear + in the expected file. +7. Write an output file with `std::ofstream` and confirm the documented Firefox + persistence behavior matches reality. +8. Restart Firefox and verify session/workspace restore behavior matches the + documented limitations. +9. Install the packaged Firefox ZIP/XPI and repeat the compile/run sanity check. + +### Release decision + +The Firefox release gate passes only when: + +- every automated gate above succeeds +- manual Firefox runtime QA succeeds +- no new Firefox-only regressions are found in startup, compile/run, file + flows, or packaging +- remaining Firefox limitations are already documented and match observed + behavior + +Do **not** cut the version bump for a Firefox-supporting release if only the +packaging smoke passes. Runtime validation in Firefox is still required. + ## Validation - `npm run lint` diff --git a/manifest.json b/manifest.json index 84c1bdc..06f063b 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "browser.cpp", "short_name": "browser.cpp", "description": "In-browser C++20 IDE powered by Monaco Editor and WASM Clang", - "version": "0.2.1", + "version": "0.3", "minimum_chrome_version": "105", "icons": { "16": "icons/icon16.png", diff --git a/package-lock.json b/package-lock.json index 4ed3152..9538e60 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "browser.cpp", - "version": "0.2.1", + "version": "0.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "browser.cpp", - "version": "0.2.1", + "version": "0.3", "dependencies": { "@xterm/addon-fit": "^0.11.0", "@xterm/addon-web-links": "^0.12.0", diff --git a/package.json b/package.json index 228baba..5d0fc57 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "browser.cpp", - "version": "0.2.1", + "version": "0.3", "description": "In-browser C++20 IDE with WASM Clang toolchain", "private": true, "scripts": {