diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index af9b3ad..25a6720 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -33,18 +33,129 @@ jobs: -destination 'platform=macOS' \ clean build - - name: Debug - List all build outputs + - name: Create App Bundle run: | - echo "🔍 === DIAGNOSTIC COMPLET ===" + echo "📩 CrĂ©ation du bundle .app..." + + # Chemins des Ă©lĂ©ments compilĂ©s + EXECUTABLE="./build/Build/Products/Release/iDither" + RESOURCES_BUNDLE="./build/Build/Products/Release/iDither_iDither.bundle" + + # VĂ©rification de l'exĂ©cutable + if [ ! -f "$EXECUTABLE" ]; then + echo "❌ ExĂ©cutable non trouvĂ© : $EXECUTABLE" + exit 1 + fi + + echo "✅ ExĂ©cutable trouvĂ© ($(du -h "$EXECUTABLE" | cut -f1))" + + # CrĂ©e la structure du bundle .app + APP_DIR="./iDither.app" + mkdir -p "$APP_DIR/Contents/MacOS" + mkdir -p "$APP_DIR/Contents/Resources" + + # Copie l'exĂ©cutable + cp "$EXECUTABLE" "$APP_DIR/Contents/MacOS/iDither" + chmod +x "$APP_DIR/Contents/MacOS/iDither" + echo "✅ ExĂ©cutable copiĂ© dans le bundle" + + # Copie le bundle de ressources (shaders Metal) + if [ -d "$RESOURCES_BUNDLE" ]; then + cp -R "$RESOURCES_BUNDLE" "$APP_DIR/Contents/Resources/" + echo "✅ Bundle de ressources copiĂ© (shaders Metal inclus)" + else + echo "⚠ Bundle de ressources non trouvĂ© (l'app pourrait ne pas fonctionner)" + fi + + # CrĂ©e Info.plist + cat > "$APP_DIR/Contents/Info.plist" << 'EOF' + + + + + CFBundleExecutable + iDither + CFBundleIdentifier + com.ewengadonnaud.iDither + CFBundleName + iDither + CFBundleDisplayName + iDither + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0.0 + CFBundleVersion + 1 + LSMinimumSystemVersion + 14.0 + NSHighResolutionCapable + + LSApplicationCategoryType + public.app-category.graphics-design + + + EOF + + echo "✅ Info.plist créé" echo "" - echo "📁 Contenu de ./build/Build/Products/Release/ :" - ls -laR ./build/Build/Products/Release/ - echo "" - echo "🔍 Recherche de tous les .app :" - find ./build -name "*.app" -type d - echo "" - echo "🔍 Recherche de tous les exĂ©cutables :" - find ./build -type f -perm +111 -name "iDither" - echo "" - echo "🔍 Recherche de tous les fichiers :" - find ./build/Build/Products/Release/ -type f \ No newline at end of file + echo "📩 Structure du bundle .app :" + ls -lh "$APP_DIR/Contents/MacOS/" + ls -lh "$APP_DIR/Contents/Resources/" 2>/dev/null || echo "(pas de ressources visibles)" + + - name: Create DMG + run: | + APP_PATH="./iDither.app" + + if [ ! -d "$APP_PATH" ]; then + echo "❌ Bundle .app non trouvĂ©" + exit 1 + fi + + echo "✅ CrĂ©ation du DMG depuis : $APP_PATH" + + # CrĂ©e un dossier temporaire pour le DMG + mkdir -p dmg_content + cp -R "$APP_PATH" dmg_content/ + + # Ajoute un lien symbolique vers /Applications + ln -s /Applications dmg_content/Applications + + # CrĂ©e le DMG + DMG_NAME="iDither-${{ github.ref_name }}.dmg" + hdiutil create -volname "iDither" \ + -srcfolder dmg_content \ + -ov -format UDZO \ + "$DMG_NAME" + + echo "✅ DMG créé :" + ls -lh "$DMG_NAME" + + - name: Create Release + uses: softprops/action-gh-release@v1 + with: + files: iDither-*.dmg + draft: false + prerelease: ${{ startsWith(github.ref, 'refs/tags/v0.') }} + body: | + ## iDither ${{ github.ref_name }} + + Application macOS native de dithering en temps rĂ©el, propulsĂ©e par Metal et SwiftUI. + + ### Installation + 1. TĂ©lĂ©chargez le fichier `.dmg` + 2. Ouvrez-le et glissez **iDither** vers **Applications** + 3. Au premier lancement : **clic droit** → **Ouvrir** (contournement de la sĂ©curitĂ© Gatekeeper) + + ### Algorithmes disponibles + - Matrices ordonnĂ©es (Bayer 2x2, 4x4, 8x8 / Cluster 4x4, 8x8) + - Blue Noise approximĂ© + - Diffusion d'erreur Floyd-Steinberg + - Mode Chaos/FX avec distorsions avancĂ©es + + --- + **CompatibilitĂ© :** macOS 14.0+ (Sonoma) + **Architecture :** Apple Silicon (M1/M2/M3/M4) & Intel + **Build automatique** via GitHub Actions + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file