12345678910111213141516import {17 preflight,18 readVersion,19 runCommand,20 safeEnv,21 releaseGateEnv,22 uploadChrome,23 packageSourceArchive,24 signFirefox,25} from "./release-lib";2627const CHROME_ONLY = process.argv.includes("--chrome-only");2829const BOLD = "\x1b[1m";30const DIM = "\x1b[2m";31const ACCENT = "\x1b[38;5;208m";32const GREEN = "\x1b[32m";33const RESET = "\x1b[0m";3435function success(msg: string) {36 console.log(`${GREEN}✓ ${msg}${RESET}`);37}38394041console.clear();42console.log("");43console.log(`${ACCENT}${BOLD} ░░ peach release ░░${RESET}`);44console.log("");45464748preflight();49const version = readVersion("manifest.json");50const targets = CHROME_ONLY ? "Chrome" : "Chrome + Firefox";51console.log(`${BOLD}Releasing Peach v${version} to ${targets}${RESET}`);52console.log(`${DIM}Stores update automatically for existing users.${RESET}`);535455565758runCommand("npm", ["run", "ci"], {59 label: "Running CI gate",60 env: releaseGateEnv(),61});62success("All tests pass");6364656667if (CHROME_ONLY) {68 runCommand("npm", ["run", "build:chrome"], {69 label: "Building Chrome target",70 env: safeEnv(),71 });72} else {73 runCommand("npm", ["run", "build"], {74 label: "Building all targets (Chrome + Firefox)",75 env: safeEnv(),76 });77}78success("Build complete");79808182838485console.log(`\n${ACCENT}${BOLD}Chrome Web Store${RESET}`);86uploadChrome(version);87success(`Chrome v${version} submitted — review typically takes minutes to hours`);88899091929394if (!CHROME_ONLY) {95 console.log(`\n${ACCENT}${BOLD}Firefox Add-ons (AMO)${RESET}`);96 const sourceZip = packageSourceArchive(version);97 signFirefox(sourceZip);98 success(`Firefox v${version} submitted with source archive retained in artifacts/`);99}100101102103console.log("");104console.log(`${ACCENT}${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}`);105console.log(`${ACCENT}${BOLD} Peach v${version} released to ${targets}.${RESET}`);106console.log(`${ACCENT}${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}`);107console.log("");108109if (!CHROME_ONLY) {110 console.log(` Chrome: under review — existing users update automatically`);111 console.log(` Firefox: under review — existing users update automatically`);112} else {113 console.log(` Chrome: under review — existing users update automatically`);114}115116console.log("");117console.log(`${DIM}Check status:${RESET}`);118console.log(` Chrome: https://chrome.google.com/webstore/devconsole`);119if (!CHROME_ONLY) {120 console.log(` Firefox: https://addons.mozilla.org/developers/`);121}122console.log("");