Skip to content

Fix biome lint: use for...of instead of forEach #5

Fix biome lint: use for...of instead of forEach

Fix biome lint: use for...of instead of forEach #5

Workflow file for this run

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