From d0bcf8baf0cc6267a40c6f586cb95aa961011d4a Mon Sep 17 00:00:00 2001 From: Ali Bross Date: Fri, 10 Jul 2026 03:18:03 +0100 Subject: [PATCH 1/4] ci: publish macOS DMGs from version tags --- .github/workflows/release.yml | 43 +++++++++++++++++++++++++++++++++++ README.md | 21 ++++++++++++++--- 2 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..1e64825 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,43 @@ +name: macOS release + +on: + push: + tags: + - "v*" + +permissions: + contents: write + +jobs: + apple-silicon-dmg: + runs-on: macos-latest + timeout-minutes: 35 + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + + - uses: dtolnay/rust-toolchain@stable + with: + targets: aarch64-apple-darwin + + - run: npm ci + + - name: Build and publish DMG + uses: tauri-apps/tauri-action@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tagName: ${{ github.ref_name }} + releaseName: Touch Manager ${{ github.ref_name }} + releaseBody: | + Apple Silicon development preview. + + This build is not Apple-notarized. On first launch, Control-click Touch Manager and choose Open. Install dfu-util separately with Homebrew before flashing hardware. + prerelease: true + args: --target aarch64-apple-darwin --bundles dmg + releaseAssetNamePattern: Touch-Manager_[version]_[arch].[ext] + uploadUpdaterSignatures: false diff --git a/README.md b/README.md index 643ad4e..bff5cfd 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,20 @@ BOOT/RESET recovery path. The full architecture, threat model, target profiles, TouchLink proposal, and phased roadmap are in [BUILD_PLAN.md](BUILD_PLAN.md). +## Download + +Download the latest macOS installer from +[GitHub Releases](https://github.com/alibros/touch-manager/releases/latest). + +The current preview is built for Apple Silicon Macs. It is ad-hoc signed rather than +Apple-notarized, so first launch may require Control-clicking the app, choosing **Open**, +or approving it in **System Settings → Privacy & Security**. Install `dfu-util` with +`brew install dfu-util` before writing firmware. + +Release builds contain the firmware catalog but do not redistribute upstream firmware +binaries. Users can import a `.bin` directly or provide the Synthux firmware workspace +described below. + ## Safety model The frontend cannot supply a shell command, arbitrary address, or DFU alternate setting. @@ -101,9 +115,10 @@ without requiring or redistributing those binaries. npm run tauri -- build ``` -Local macOS bundles are development artifacts. Public downloads must be signed with an -Apple Developer ID and notarized. Windows releases need explicit WinUSB guidance, and -Linux releases need narrow udev rules; those distribution tasks remain on the roadmap. +Current macOS downloads are clearly labelled development previews. A polished stable +release still requires Apple Developer ID signing and notarization. Windows releases need +explicit WinUSB guidance, and Linux releases need narrow udev rules; those distribution +tasks remain on the roadmap. ## Buttonless updates From 444f11fac20f55171cf8bba3219e5004aa4f690d Mon Sep 17 00:00:00 2001 From: Ali Bross Date: Fri, 10 Jul 2026 03:18:38 +0100 Subject: [PATCH 2/4] docs: link to preview releases --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bff5cfd..9f81511 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ roadmap are in [BUILD_PLAN.md](BUILD_PLAN.md). ## Download Download the latest macOS installer from -[GitHub Releases](https://github.com/alibros/touch-manager/releases/latest). +[GitHub Releases](https://github.com/alibros/touch-manager/releases). The current preview is built for Apple Silicon Macs. It is ad-hoc signed rather than Apple-notarized, so first launch may require Control-clicking the app, choosing **Open**, From e09cbc5f95b8ff410602a42b75bb0b2aa918c8b0 Mon Sep 17 00:00:00 2001 From: Ali Bross Date: Fri, 10 Jul 2026 03:21:39 +0100 Subject: [PATCH 3/4] fix: remove machine-specific workspace fallback --- README.md | 4 ++-- src-tauri/src/catalog.rs | 14 ++------------ 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 9f81511..3a2b6f5 100644 --- a/README.md +++ b/README.md @@ -85,9 +85,9 @@ Resolution order: 1. `SYNTHUX_WORKSPACE` 2. An ancestor of the current working directory -3. `~/dev/synthux` for Finder-launched local macOS builds -For a custom checkout location: +For a custom checkout location, set the workspace explicitly when starting the development +build: ```sh export SYNTHUX_WORKSPACE=/absolute/path/to/synthux diff --git a/src-tauri/src/catalog.rs b/src-tauri/src/catalog.rs index 86eff57..574ec15 100644 --- a/src-tauri/src/catalog.rs +++ b/src-tauri/src/catalog.rs @@ -91,21 +91,11 @@ fn discover_workspace_root() -> Option { } } - let from_current_directory = env::current_dir().ok().and_then(|cwd| { + env::current_dir().ok().and_then(|cwd| { cwd.ancestors() .find(|candidate| candidate.join("Firmware/SHA256SUMS.txt").is_file()) .map(PathBuf::from) - }); - if from_current_directory.is_some() { - return from_current_directory; - } - - // Finder-launched macOS applications do not inherit the terminal's working - // directory. Keep the source workspace discoverable for local installations. - env::var_os("HOME") - .map(PathBuf::from) - .map(|home| home.join("dev/synthux")) - .filter(|candidate| candidate.join("Firmware/SHA256SUMS.txt").is_file()) + }) } #[allow(dead_code)] From 9695498067af09e128d46ec316b8b189dc5d4251 Mon Sep 17 00:00:00 2001 From: Ali Bross Date: Fri, 10 Jul 2026 03:29:58 +0100 Subject: [PATCH 4/4] ci: use current GitHub Action runtimes in releases --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1e64825..75aef5a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,9 +13,9 @@ jobs: runs-on: macos-latest timeout-minutes: 35 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 with: node-version: 22 cache: npm