Switch to v2 ocean logo, archive v1, update icons, remove key for CWS upload, and add zip script

This commit is contained in:
2026-09-08 15:26:15 -07:00
parent a74281c531
commit 77b0b3b431
12 changed files with 66 additions and 1 deletions

1
.gitignore vendored
View File

@@ -2,3 +2,4 @@ node_modules
dist
.DS_Store
*.log
*.zip

View File

@@ -1,6 +1,5 @@
{
"manifest_version": 3,
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4nOxfn7Uh3jqdKvTpngmPIzOsCvbQRamThIRxw6fswMRDflfyx2Bspxc1Aq/lQEm3ataP3GoTRCwz0h3bGJvGBu8B5Uw49AAdR6jwp5ZThAfbkBxRQmtXU8+xduji5OT2KyQKsHOj2oSjg6E05WN1vMNOdS+ehwNNCDkc/MjKBLSOdwwOpkDX0BoeC4uAmFTWFzSl/ObFSl7ViJwZVPVkvPc6F0Fxn3OTZN3uFgnT/alsHVqwojnbfC91N+oxVW/3ha869l23PhvoK68zH8Iobs+vgf8TgQOgL1x5eq9Uakn810xVaNbhJVL2I3072r1qpsAYA5ELCjSBLoi5ypLuwIDAQAB",
"name": "OpenScript",
"version": "1.0.0",
"description": "A lightweight user script manager for modern browsers",
@@ -8,6 +7,7 @@
"default_popup": "src/popup.html",
"default_icon": {
"16": "icons/icon-16.png",
"32": "icons/icon-32.png",
"48": "icons/icon-48.png",
"128": "icons/icon-128.png"
}
@@ -25,6 +25,7 @@
],
"icons": {
"16": "icons/icon-16.png",
"32": "icons/icon-32.png",
"48": "icons/icon-48.png",
"128": "icons/icon-128.png"
}

View File

@@ -6,12 +6,15 @@
"scripts": {
"dev": "vite",
"build": "vite build",
"build:icons": "node scripts/generate-icons.js",
"zip": "node scripts/build-zip.js",
"test": "node --test"
},
"dependencies": {
"lucide": "^0.475.0"
},
"devDependencies": {
"adm-zip": "^0.5.18",
"autoprefixer": "^10.4.20",
"postcss": "^8.4.49",
"sharp": "^0.33.5",

View File

Before

Width:  |  Height:  |  Size: 470 KiB

After

Width:  |  Height:  |  Size: 470 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

5
public/icons/README.md Normal file
View File

@@ -0,0 +1,5 @@
# OpenScript Icon Assets
- `OpenScript_v1.png`: Original monochrome terminal prompt (`> _`) concept.
- `OpenScript_v2.png`: Ocean wave terminal monogram (`>_ O`) master logo introduced for Chrome Web Store release.
- `icon-{16,32,48,128}.png`: Production extension icons generated from v2 master via `npm run build:icons`.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 234 B

After

Width:  |  Height:  |  Size: 549 B

BIN
public/icons/icon-32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 553 B

After

Width:  |  Height:  |  Size: 2.2 KiB

42
scripts/build-zip.js Normal file
View File

@@ -0,0 +1,42 @@
import { execSync } from 'child_process';
import fs from 'fs';
import AdmZip from 'adm-zip';
console.log('Building OpenScript extension...');
fs.rmSync('dist', { recursive: true, force: true });
execSync('npx vite build', { stdio: 'inherit' });
// Remove unneeded master images from dist package
['dist/icons/OpenScript_v1.png', 'dist/icons/OpenScript_v2.png', 'dist/icons/logo.png'].forEach(f => {
if (fs.existsSync(f)) fs.unlinkSync(f);
});
// Verify required files
const manifest = JSON.parse(fs.readFileSync('dist/manifest.json', 'utf8'));
const required = [
'dist/manifest.json',
`dist/${manifest.action?.default_popup || 'src/popup.html'}`,
`dist/${manifest.background?.service_worker || 'src/background.js'}`,
'dist/icons/icon-16.png',
'dist/icons/icon-32.png',
'dist/icons/icon-48.png',
'dist/icons/icon-128.png'
];
for (const path of required) {
if (!fs.existsSync(path)) throw new Error(`Missing required build file: ${path}`);
}
// Package into openscript.zip
const zip = new AdmZip();
zip.addLocalFolder('dist');
zip.writeZip('openscript.zip');
const stat = fs.statSync('openscript.zip');
console.log(`\n✓ Successfully created openscript.zip (${(stat.size / 1024).toFixed(1)} KB)`);
console.log('Manifest ready:', {
name: manifest.name,
version: manifest.version,
manifest_version: manifest.manifest_version,
icons: manifest.icons
});

13
scripts/generate-icons.js Normal file
View File

@@ -0,0 +1,13 @@
import sharp from 'sharp';
import fs from 'fs';
const src = 'public/icons/OpenScript_v2.png';
const sizes = [16, 32, 48, 128];
for (const s of sizes) {
await sharp(src)
.resize(s, s, { fit: 'contain' })
.png()
.toFile(`public/icons/icon-${s}.png`);
console.log(`✓ Generated icon-${s}.png`);
}