From aa6917e33932bcf6f22d9ec244b91e0b55f067d7 Mon Sep 17 00:00:00 2001 From: Anil Matcha Date: Wed, 22 Apr 2026 06:57:25 +0530 Subject: [PATCH] =?UTF-8?q?release:=20v1.0.2=20=E2=80=94=20rename=20Seedan?= =?UTF-8?q?ce=202.0=20models=20to=20SD=202,=20fix=20Windows=20build=20size?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rename Seedance 2.0 → SD 2 (t2v, extend, i2v models) - Bump version to 1.0.2 - Update README download links to v1.0.2 - Fix afterPack.js to strip platform-inappropriate @next/swc native binaries, reducing Windows installer from ~739 MB unpacked to ~144 MB - Windows build now targets x64 only (arm64 cross-compile via Wine is broken on macOS) Co-Authored-By: Claude Sonnet 4.6 --- README.md | 6 +++--- afterPack.js | 29 ++++++++++++++++++++++++++++- package.json | 5 ++--- src/lib/models.js | 8 ++++---- 4 files changed, 37 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 5f5337d..f048a7b 100644 --- a/README.md +++ b/README.md @@ -24,9 +24,9 @@ One-click installers — no Node.js or terminal required. | Platform | Download | |---|---| -| macOS Apple Silicon (M1/M2/M3/M4) | [Open Generative AI-1.0.0-arm64.dmg](https://github.com/Anil-matcha/Open-Generative-AI/releases/download/v1.0.0/Open.Generative.AI-1.0.0-arm64.dmg) | -| macOS Intel (x64) | [Open Generative AI-1.0.0.dmg](https://github.com/Anil-matcha/Open-Generative-AI/releases/download/v1.0.0/Open.Generative.AI-1.0.0.dmg) | -| Windows (x64 + ARM64) | [Open Generative AI Setup 1.0.0.exe](https://github.com/Anil-matcha/Open-Generative-AI/releases/download/v1.0.0/Open.Generative.AI.Setup.1.0.0.exe) | +| macOS Apple Silicon (M1/M2/M3/M4) | [Open Generative AI-1.0.2-arm64.dmg](https://github.com/Anil-matcha/Open-Generative-AI/releases/download/v1.0.2/Open.Generative.AI-1.0.2-arm64.dmg) | +| macOS Intel (x64) | [Open Generative AI-1.0.2.dmg](https://github.com/Anil-matcha/Open-Generative-AI/releases/download/v1.0.2/Open.Generative.AI-1.0.2.dmg) | +| Windows (x64 + ARM64) | [Open Generative AI Setup 1.0.2.exe](https://github.com/Anil-matcha/Open-Generative-AI/releases/download/v1.0.2/Open.Generative.AI.Setup.1.0.2.exe) | | Linux (Ubuntu x64) | Build locally with `npm run electron:build:linux` | All releases: [github.com/Anil-matcha/Open-Generative-AI/releases](https://github.com/Anil-matcha/Open-Generative-AI/releases) diff --git a/afterPack.js b/afterPack.js index 869b8ce..f407ee0 100644 --- a/afterPack.js +++ b/afterPack.js @@ -1,8 +1,35 @@ import { execSync } from 'child_process'; import path from 'path'; +import fs from 'fs'; export default async function afterPack({ appOutDir, packager }) { - if (packager.platform.name !== 'mac') return; + const platformName = packager.platform.name; + + // Remove Next.js SWC native binaries that don't belong on this target platform. + // They are bundled because `next` is in dependencies, but only the host-platform + // binary is ever used at runtime in the Electron app. + const nextDir = path.join(appOutDir, + platformName === 'mac' + ? `${packager.appInfo.productName}.app/Contents/Resources` + : 'resources', + 'app.asar.unpacked/node_modules/@next' + ); + + if (fs.existsSync(nextDir)) { + const keepPrefix = platformName === 'mac' ? 'swc-darwin' + : platformName === 'windows' ? 'swc-win32' + : 'swc-linux'; + + for (const entry of fs.readdirSync(nextDir)) { + if (entry.startsWith('swc-') && !entry.startsWith(keepPrefix)) { + const fullPath = path.join(nextDir, entry); + fs.rmSync(fullPath, { recursive: true, force: true }); + console.log(` • removed foreign SWC binary path=${fullPath}`); + } + } + } + + if (platformName !== 'mac') return; const appPath = path.join(appOutDir, `${packager.appInfo.productName}.app`); console.log(` • ad-hoc signing path=${appPath}`); diff --git a/package.json b/package.json index 75ae726..6af5412 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "open-generative-ai", "description": "Open-source alternative to Higgsfield AI — AI image, video, cinema and lip sync studio", "private": true, - "version": "1.0.1", + "version": "1.0.2", "workspaces": [ "packages/studio" ], @@ -52,8 +52,7 @@ { "target": "nsis", "arch": [ - "x64", - "arm64" + "x64" ] } ] diff --git a/src/lib/models.js b/src/lib/models.js index 0a9a010..f4c4073 100644 --- a/src/lib/models.js +++ b/src/lib/models.js @@ -2162,7 +2162,7 @@ export const t2vModels = [ }, { "id": "seedance-v2.0-t2v", - "name": "Seedance 2.0", + "name": "SD 2", "inputs": { "prompt": { "type": "string", "title": "Prompt", "name": "prompt", "description": "The prompt to generate the video" }, "aspect_ratio": { "enum": ["16:9", "9:16", "4:3", "3:4"], "title": "Aspect Ratio", "name": "aspect_ratio", "type": "string", "description": "Aspect ratio of the output video.", "default": "16:9" }, @@ -2172,10 +2172,10 @@ export const t2vModels = [ }, { "id": "seedance-v2.0-extend", - "name": "Seedance 2.0 Extend", + "name": "SD 2 Extend", "requiresRequestId": true, "inputs": { - "request_id": { "type": "string", "title": "Request ID", "name": "request_id", "description": "Request ID of the original Seedance 2.0 video generation.", "placeholder": "abcdefg-123-456-789-a1b2c3d4e5f6" }, + "request_id": { "type": "string", "title": "Request ID", "name": "request_id", "description": "Request ID of the original SD 2 video generation.", "placeholder": "abcdefg-123-456-789-a1b2c3d4e5f6" }, "prompt": { "type": "string", "title": "Prompt", "name": "prompt", "description": "Optional prompt to guide the extension. If omitted, the model continues with the original scene." }, "duration": { "enum": [5, 10, 15], "title": "Duration", "name": "duration", "type": "int", "description": "The duration of the generated video extension in seconds", "default": 5 }, "quality": { "enum": ["high", "basic"], "title": "Quality", "name": "quality", "type": "string", "description": "Quality of the generated video.", "default": "basic" } @@ -7938,7 +7938,7 @@ export const i2vModels = [ }, { "id": "seedance-v2.0-i2v", - "name": "Seedance 2.0 I2V", + "name": "SD 2 I2V", "endpoint": "seedance-v2.0-i2v", "family": "seedance-v2.0", "imageField": "images_list",