/** * Run with: node assets/generate-icons.js * Requires: npm install sharp (dev only) * Generates PNG icons from SVG for all platforms. * If sharp is not available, falls back to copying a placeholder. */ const fs = require('fs') const path = require('path') async function generate() { const svgPath = path.join(__dirname, 'icon.svg') const svgData = fs.readFileSync(svgPath) try { const sharp = require('sharp') // PNG 512x512 await sharp(svgData).resize(512, 512).png().toFile(path.join(__dirname, 'icon.png')) console.log('icon.png generated') // Tray icon 32x32 await sharp(svgData).resize(32, 32).png().toFile(path.join(__dirname, 'tray-icon.png')) console.log('tray-icon.png generated') console.log('Done. For ICO/ICNS, use electron-icon-builder or convert manually.') } catch (e) { console.log('sharp not available, creating placeholder PNG...') // Create a minimal 1x1 placeholder PNG (will work as fallback) const minPng = Buffer.from( '89504e470d0a1a0a0000000d49484452000000010000000108020000009001' + '2e000000000c4944415408d76360f8cfc00000000200017e21bc330000000049454e44ae426082', 'hex' ) fs.writeFileSync(path.join(__dirname, 'icon.png'), minPng) fs.writeFileSync(path.join(__dirname, 'tray-icon.png'), minPng) console.log('Placeholder icons created.') } } generate().catch(console.error)