12345678910111213141516import {17 preflight,18 readVersion,19 runCommand,20 safeEnv,21 uploadChrome,22 packageSourceArchive,23 signFirefox,24} from "./release-lib";2526const CHROME_ONLY = process.argv.includes("--chrome-only");2728const BOLD = "\x1b[1m";29const DIM = "\x1b[2m";30const ACCENT = "\x1b[38;5;208m";31const GREEN = "\x1b[32m";32const RESET = "\x1b[0m";3334function success(msg: string) {35 console.log(`${GREEN}✓ ${msg}${RESET}`);36}37383940console.clear();41console.log("");42console.log(`${ACCENT}${BOLD} ░░ peach release ░░${RESET}`);43console.log("");44454647preflight();48const version = readVersion("manifest.json");49const targets = CHROME_ONLY ? "Chrome" : "Chrome + Firefox";50console.log(`${BOLD}Releasing Peach v${version} to ${targets}${RESET}`);51console.log(`${DIM}Stores update automatically for existing users.${RESET}`);5253545556runCommand("npm", ["run", "ci"], {57 label: "Running CI gate",58 env: safeEnv(),59});60success("All tests pass");6162636465if (CHROME_ONLY) {66 runCommand("npm", ["run", "build:chrome"], {67 label: "Building Chrome target",68 env: safeEnv(),69 });70} else {71 runCommand("npm", ["run", "build"], {72 label: "Building all targets (Chrome + Firefox)",73 env: safeEnv(),74 });75}76success("Build complete");7778runCommand("npm", ["run", "test:sync:cross-client"], {79 label: "Running cross-client sync gate",80 env: safeEnv(),81});8283848586878889console.log(`\n${ACCENT}${BOLD}Chrome Web Store${RESET}`);90uploadChrome(version);91success(`Chrome v${version} submitted — review typically takes minutes to hours`);92939495969798if (!CHROME_ONLY) {99 console.log(`\n${ACCENT}${BOLD}Firefox Add-ons (AMO)${RESET}`);100 const sourceZip = packageSourceArchive(version);101 signFirefox(sourceZip);102 success(`Firefox v${version} submitted with source archive retained in artifacts/`);103}104105106107console.log("");108console.log(`${ACCENT}${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}`);109console.log(`${ACCENT}${BOLD} Peach v${version} released to ${targets}.${RESET}`);110console.log(`${ACCENT}${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}`);111console.log("");112113if (!CHROME_ONLY) {114 console.log(` Chrome: under review — existing users update automatically`);115 console.log(` Firefox: under review — existing users update automatically`);116} else {117 console.log(` Chrome: under review — existing users update automatically`);118}119120console.log("");121console.log(`${DIM}Check status:${RESET}`);122console.log(` Chrome: https://chrome.google.com/webstore/devconsole`);123if (!CHROME_ONLY) {124 console.log(` Firefox: https://addons.mozilla.org/developers/`);125}126console.log("");