// Render public/icon.svg to a 512x512 store PNG (full square — stores apply // their own corner mask). Uses Chrome for correct Persian text shaping. const { chromium } = require("playwright"); const fs = require("fs"); const path = require("path"); const OUT = path.join(__dirname, "shots"); fs.mkdirSync(OUT, { recursive: true }); let svg = fs.readFileSync(path.join(__dirname, "..", "public", "icon.svg"), "utf8"); // Full-bleed square (remove the rounded corners so there's no transparency). const square = svg.replace('rx="112"', 'rx="0"').replace("${square}`; (async () => { const browser = await chromium.launch({ channel: "chrome" }); const ctx = await browser.newContext({ viewport: { width: 512, height: 512 }, deviceScaleFactor: 1 }); const page = await ctx.newPage(); await page.setContent(html, { waitUntil: "networkidle" }); await page.waitForTimeout(600); await page.screenshot({ path: path.join(OUT, "icon-512.png"), clip: { x: 0, y: 0, width: 512, height: 512 } }); await browser.close(); console.log("icon-512 done"); })().catch((e) => { console.error("FATAL", e); process.exit(1); });