Fix biome lint: use for...of instead of forEach #5
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| push: | |
| tags: | |
| - "v*" | |
| workflow_dispatch: | |
| permissions: | |
| contents: write | |
| checks: read | |
| jobs: | |
| wait-for-ci: | |
| name: Wait for CI | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| fetch-tags: true | |
| - name: Wait for CI checks | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const script = require('./.github/wait-for-checks.cjs'); | |
| await script({ github, context, core }); | |
| create-release: | |
| name: Create Release | |
| needs: wait-for-ci | |
| runs-on: ubuntu-latest | |
| outputs: | |
| version: ${{ steps.version.outputs.version }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Get version from tag | |
| id: version | |
| run: echo "version=${GITHUB_REF_NAME#v}" >> $GITHUB_OUTPUT | |
| - name: Create GitHub Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: ${{ github.ref_name }} | |
| name: "ChatToMap v${{ steps.version.outputs.version }}" | |
| body: | | |
| ## ChatToMap Desktop v${{ steps.version.outputs.version }} | |
| Export your iMessage history and discover all the places you've talked about! | |
| ### Download & Run | |
| **macOS:** | |
| 1. Download `ChatToMap_universal.dmg` | |
| 2. Open the DMG and drag ChatToMap to Applications (or just double-click to run) | |
| 3. Right-click and select "Open" the first time (required for unsigned apps) | |
| **Windows:** | |
| 1. Download `ChatToMap_x64.exe` | |
| 2. Run it directly - no installation needed! | |
| 3. You may need to click "More info" → "Run anyway" (unsigned app warning) | |
| 4. Delete the exe when you're done | |
| --- | |
| **Note:** These are unsigned builds. Code signing and notarization coming in a future release. | |
| draft: false | |
| prerelease: ${{ contains(github.ref_name, '-') }} | |
| build-macos: | |
| name: Build macOS | |
| needs: create-release | |
| runs-on: macos-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Bun | |
| uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: latest | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: aarch64-apple-darwin,x86_64-apple-darwin | |
| - name: Cache Cargo | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| src-tauri/target/ | |
| key: macos-cargo-release-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: macos-cargo-release- | |
| - name: Cache Bun | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.bun/install/cache | |
| key: macos-bun-${{ hashFiles('**/bun.lock') }} | |
| restore-keys: macos-bun- | |
| - name: Install dependencies | |
| run: bun install | |
| - name: Build Tauri app (universal binary, DMG only) | |
| run: bun run tauri build --target universal-apple-darwin --bundles dmg | |
| - name: Rename and checksum DMG | |
| run: | | |
| cd src-tauri/target/universal-apple-darwin/release/bundle/dmg | |
| # Rename to simpler name | |
| for file in *.dmg; do | |
| mv "$file" "ChatToMap_universal.dmg" | |
| break | |
| done | |
| shasum -a 256 ChatToMap_universal.dmg > ChatToMap_universal.dmg.sha256 | |
| - name: Upload macOS artifacts | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: ${{ github.ref_name }} | |
| files: | | |
| src-tauri/target/universal-apple-darwin/release/bundle/dmg/ChatToMap_universal.dmg | |
| src-tauri/target/universal-apple-darwin/release/bundle/dmg/ChatToMap_universal.dmg.sha256 | |
| build-windows: | |
| name: Build Windows | |
| needs: create-release | |
| runs-on: windows-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Bun | |
| uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: latest | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Cargo | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| src-tauri/target/ | |
| key: windows-cargo-release-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: windows-cargo-release- | |
| - name: Cache Bun | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.bun/install/cache | |
| key: windows-bun-${{ hashFiles('**/bun.lock') }} | |
| restore-keys: windows-bun- | |
| - name: Install dependencies | |
| run: bun install | |
| - name: Build Tauri app (portable exe only, no installer) | |
| run: bun run tauri build --no-bundle | |
| - name: Rename and checksum exe | |
| shell: pwsh | |
| run: | | |
| $exePath = "src-tauri/target/release/ChatToMap.exe" | |
| $newPath = "src-tauri/target/release/ChatToMap_x64.exe" | |
| Copy-Item -Path $exePath -Destination $newPath | |
| $hash = Get-FileHash -Path $newPath -Algorithm SHA256 | |
| "$($hash.Hash.ToLower()) ChatToMap_x64.exe" | Out-File -FilePath "$newPath.sha256" -Encoding ASCII | |
| - name: Upload Windows artifacts | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: ${{ github.ref_name }} | |
| files: | | |
| src-tauri/target/release/ChatToMap_x64.exe | |
| src-tauri/target/release/ChatToMap_x64.exe.sha256 |