Merge pull request #47 from Anil-matcha/master
Add Electron desktop app with macOS DMG and Windows installer support
This commit is contained in:
commit
150cd639cb
5 changed files with 4430 additions and 7 deletions
34
README.md
34
README.md
|
|
@ -2,6 +2,23 @@
|
||||||
|
|
||||||
> **The free, open-source alternative to Higgsfield AI.** Generate AI images and videos using 200+ state-of-the-art models — without the closed ecosystem or subscription fees.
|
> **The free, open-source alternative to Higgsfield AI.** Generate AI images and videos using 200+ state-of-the-art models — without the closed ecosystem or subscription fees.
|
||||||
|
|
||||||
|
## ⬇️ Download Desktop App
|
||||||
|
|
||||||
|
One-click installers — no Node.js or terminal required.
|
||||||
|
|
||||||
|
| Platform | Download |
|
||||||
|
|---|---|
|
||||||
|
| macOS Apple Silicon (M1/M2/M3/M4) | [Open Higgsfield AI-1.0.0-arm64.dmg](https://github.com/Anil-matcha/Open-Higgsfield-AI/releases/download/v1.0.0/Open.Higgsfield.AI-1.0.0-arm64.dmg) |
|
||||||
|
| macOS Intel (x64) | [Open Higgsfield AI-1.0.0.dmg](https://github.com/Anil-matcha/Open-Higgsfield-AI/releases/download/v1.0.0/Open.Higgsfield.AI-1.0.0.dmg) |
|
||||||
|
| Windows (x64 + ARM64) | [Open Higgsfield AI Setup 1.0.0.exe](https://github.com/Anil-matcha/Open-Higgsfield-AI/releases/download/v1.0.0/Open.Higgsfield.AI.Setup.1.0.0.exe) |
|
||||||
|
|
||||||
|
> **macOS:** If you see an "unidentified developer" warning, right-click the app → **Open**.
|
||||||
|
> **Windows:** If SmartScreen warns, click **More info → Run anyway**.
|
||||||
|
|
||||||
|
All releases: [github.com/Anil-matcha/Open-Higgsfield-AI/releases](https://github.com/Anil-matcha/Open-Higgsfield-AI/releases)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
Open Higgsfield AI is an open-source AI image, video, cinema, and lip sync studio that brings Higgsfield-style creative workflows to everyone. Powered by [Muapi.ai](https://muapi.ai), it supports text-to-image, image-to-image, text-to-video, image-to-video, and audio-driven lip sync generation across models like Flux, Nano Banana, Midjourney, Kling, Sora, Veo, Seedream, Infinite Talk, LTX Lipsync, Wan 2.2, and more — all from a sleek, modern interface you can self-host and customize.
|
Open Higgsfield AI is an open-source AI image, video, cinema, and lip sync studio that brings Higgsfield-style creative workflows to everyone. Powered by [Muapi.ai](https://muapi.ai), it supports text-to-image, image-to-image, text-to-video, image-to-video, and audio-driven lip sync generation across models like Flux, Nano Banana, Midjourney, Kling, Sora, Veo, Seedream, Infinite Talk, LTX Lipsync, Wan 2.2, and more — all from a sleek, modern interface you can self-host and customize.
|
||||||
|
|
||||||
**Why Open Higgsfield AI instead of Higgsfield AI?**
|
**Why Open Higgsfield AI instead of Higgsfield AI?**
|
||||||
|
|
@ -184,6 +201,23 @@ npm run build
|
||||||
npm run preview
|
npm run preview
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Desktop App Build
|
||||||
|
|
||||||
|
Build native desktop apps with Electron:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# macOS (DMG — Intel + Apple Silicon)
|
||||||
|
npm run electron:build
|
||||||
|
|
||||||
|
# Windows (NSIS installer — x64 + ARM64)
|
||||||
|
npm run electron:build:win
|
||||||
|
|
||||||
|
# Both platforms in one pass
|
||||||
|
npm run electron:build:all
|
||||||
|
```
|
||||||
|
|
||||||
|
Installers are output to the `release/` folder. Pre-built binaries are also available on the [Releases page](https://github.com/Anil-matcha/Open-Higgsfield-AI/releases).
|
||||||
|
|
||||||
## 🏗️ Architecture
|
## 🏗️ Architecture
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
||||||
59
electron/main.js
Normal file
59
electron/main.js
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
import { app, BrowserWindow, shell } from 'electron';
|
||||||
|
import { fileURLToPath } from 'url';
|
||||||
|
import path from 'path';
|
||||||
|
|
||||||
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
|
const __dirname = path.dirname(__filename);
|
||||||
|
|
||||||
|
let mainWindow;
|
||||||
|
|
||||||
|
function createWindow() {
|
||||||
|
mainWindow = new BrowserWindow({
|
||||||
|
width: 1440,
|
||||||
|
height: 900,
|
||||||
|
minWidth: 1024,
|
||||||
|
minHeight: 640,
|
||||||
|
webPreferences: {
|
||||||
|
webSecurity: false, // Allow file:// origin to call external APIs
|
||||||
|
contextIsolation: true,
|
||||||
|
nodeIntegration: false,
|
||||||
|
},
|
||||||
|
titleBarStyle: 'hiddenInset',
|
||||||
|
backgroundColor: '#0d0d0d',
|
||||||
|
show: false,
|
||||||
|
title: 'Open Higgsfield AI',
|
||||||
|
});
|
||||||
|
|
||||||
|
const indexPath = path.join(__dirname, '../dist/index.html');
|
||||||
|
mainWindow.loadFile(indexPath);
|
||||||
|
|
||||||
|
// Open external links in the system browser
|
||||||
|
mainWindow.webContents.setWindowOpenHandler(({ url }) => {
|
||||||
|
shell.openExternal(url);
|
||||||
|
return { action: 'deny' };
|
||||||
|
});
|
||||||
|
|
||||||
|
mainWindow.once('ready-to-show', () => {
|
||||||
|
mainWindow.show();
|
||||||
|
});
|
||||||
|
|
||||||
|
mainWindow.on('closed', () => {
|
||||||
|
mainWindow = null;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
app.whenReady().then(() => {
|
||||||
|
createWindow();
|
||||||
|
|
||||||
|
app.on('activate', () => {
|
||||||
|
if (BrowserWindow.getAllWindows().length === 0) {
|
||||||
|
createWindow();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
app.on('window-all-closed', () => {
|
||||||
|
if (process.platform !== 'darwin') {
|
||||||
|
app.quit();
|
||||||
|
}
|
||||||
|
});
|
||||||
4283
package-lock.json
generated
4283
package-lock.json
generated
File diff suppressed because it is too large
Load diff
60
package.json
60
package.json
|
|
@ -2,15 +2,71 @@
|
||||||
"name": "open-higgsfield-ai",
|
"name": "open-higgsfield-ai",
|
||||||
"description": "Open-source alternative to Higgsfield AI — AI image generation and cinema studio with 20+ models",
|
"description": "Open-source alternative to Higgsfield AI — AI image generation and cinema studio with 20+ models",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.0",
|
"version": "1.0.0",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
"main": "electron/main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
"preview": "vite preview"
|
"preview": "vite preview",
|
||||||
|
"electron:dev": "vite build && electron .",
|
||||||
|
"electron:build": "vite build && electron-builder --mac",
|
||||||
|
"electron:build:dmg": "vite build && electron-builder --mac dmg",
|
||||||
|
"electron:build:win": "vite build && electron-builder --win",
|
||||||
|
"electron:build:all": "vite build && electron-builder --mac --win"
|
||||||
|
},
|
||||||
|
"build": {
|
||||||
|
"appId": "ai.higgsfield.open",
|
||||||
|
"productName": "Open Higgsfield AI",
|
||||||
|
"copyright": "Copyright © 2025",
|
||||||
|
"directories": {
|
||||||
|
"output": "release"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"dist/**/*",
|
||||||
|
"electron/**/*"
|
||||||
|
],
|
||||||
|
"mac": {
|
||||||
|
"category": "public.app-category.graphics-design",
|
||||||
|
"icon": "public/banner.png",
|
||||||
|
"target": [
|
||||||
|
{
|
||||||
|
"target": "dmg",
|
||||||
|
"arch": [
|
||||||
|
"x64",
|
||||||
|
"arm64"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"dmg": {
|
||||||
|
"title": "Open Higgsfield AI",
|
||||||
|
"backgroundColor": "#0d0d0d",
|
||||||
|
"window": {
|
||||||
|
"width": 540,
|
||||||
|
"height": 380
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"win": {
|
||||||
|
"icon": "public/banner.png",
|
||||||
|
"target": [
|
||||||
|
{
|
||||||
|
"target": "nsis",
|
||||||
|
"arch": ["x64", "arm64"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"nsis": {
|
||||||
|
"oneClick": true,
|
||||||
|
"perMachine": false,
|
||||||
|
"allowToChangeInstallationDirectory": false,
|
||||||
|
"deleteAppDataOnUninstall": false
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"autoprefixer": "^10.4.24",
|
"autoprefixer": "^10.4.24",
|
||||||
|
"electron": "^33.4.11",
|
||||||
|
"electron-builder": "^25.1.8",
|
||||||
"postcss": "^8.5.6",
|
"postcss": "^8.5.6",
|
||||||
"tailwindcss": "^4.1.18",
|
"tailwindcss": "^4.1.18",
|
||||||
"vite": "^5.4.0"
|
"vite": "^5.4.0"
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ import { defineConfig } from 'vite';
|
||||||
import tailwindcss from '@tailwindcss/vite';
|
import tailwindcss from '@tailwindcss/vite';
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
|
base: './',
|
||||||
plugins: [
|
plugins: [
|
||||||
tailwindcss(),
|
tailwindcss(),
|
||||||
],
|
],
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue