From 099f78efea4b0766d3bda7dae89ee665b9043c07 Mon Sep 17 00:00:00 2001 From: Krystie Date: Thu, 2 Apr 2026 21:55:18 -0700 Subject: [PATCH] Bundle Tor binary with all platform releases Every release now ships with the Tor Expert Bundle included: - Windows Qt: tor/ directory alongside triangles-qt.exe - Windows daemon: tor/ directory alongside trianglesd.exe - Linux Qt: tor/ directory in release tarball - Linux daemon: tor/ directory in release tarball - macOS: tor/ inside .app bundle (Contents/MacOS/tor/) The wallet already auto-detects tor binary next to itself or in a tor/ subfolder. Zero configuration needed for users - Tor starts automatically with the wallet and stops when it exits. Release assets now packaged as zip/tar.gz to include tor directory. --- .github/workflows/build-all.yml | 88 +++++++++++++++++++++++++++------ 1 file changed, 74 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build-all.yml b/.github/workflows/build-all.yml index 7c221b5..cbc14c7 100644 --- a/.github/workflows/build-all.yml +++ b/.github/workflows/build-all.yml @@ -80,6 +80,24 @@ jobs: run: | make -j$(nproc) + - name: Bundle Tor + shell: powershell + run: | + $TOR_VERSION = "14.0.8" + $TOR_URL = "https://archive.torproject.org/tor-package-archive/torbrowser/${TOR_VERSION}/tor-expert-bundle-windows-x86_64-${TOR_VERSION}.tar.gz" + Invoke-WebRequest -Uri $TOR_URL -OutFile tor-bundle.tar.gz + New-Item -ItemType Directory -Path tor-extract -Force + tar -xzf tor-bundle.tar.gz -C tor-extract + New-Item -ItemType Directory -Path dist/tor -Force + Copy-Item tor-extract/tor/tor.exe dist/tor/ + Copy-Item tor-extract/tor/tor-gencert.exe dist/tor/ -ErrorAction SilentlyContinue + if (Test-Path tor-extract/tor/pluggable_transports) { + Copy-Item -Recurse tor-extract/tor/pluggable_transports dist/tor/ + } + if (Test-Path tor-extract/data) { + Copy-Item -Recurse tor-extract/data dist/tor/data + } + - name: Package run: | mkdir -p dist @@ -135,11 +153,26 @@ jobs: strip --strip-all trianglesd.exe cp trianglesd.exe ../trianglesd.exe + - name: Bundle Tor + shell: powershell + run: | + $TOR_VERSION = "14.0.8" + $TOR_URL = "https://archive.torproject.org/tor-package-archive/torbrowser/${TOR_VERSION}/tor-expert-bundle-windows-x86_64-${TOR_VERSION}.tar.gz" + Invoke-WebRequest -Uri $TOR_URL -OutFile tor-bundle.tar.gz + New-Item -ItemType Directory -Path tor-extract -Force + tar -xzf tor-bundle.tar.gz -C tor-extract + New-Item -ItemType Directory -Path daemon-dist/tor -Force + Copy-Item trianglesd.exe daemon-dist/ + Copy-Item tor-extract/tor/tor.exe daemon-dist/tor/ + if (Test-Path tor-extract/data) { + Copy-Item -Recurse tor-extract/data daemon-dist/tor/data + } + - name: Upload artifact uses: actions/upload-artifact@v4 with: name: windows-daemon - path: trianglesd.exe + path: daemon-dist/ build-linux-qt: runs-on: ubuntu-22.04 @@ -179,14 +212,22 @@ jobs: - name: Strip binary run: strip --strip-all triangles-qt - - name: Rename - run: mv triangles-qt Cryptographic-Triangles-v${VERSION}-linux-x64-qt + - name: Bundle Tor + run: | + TOR_VERSION="14.0.8" + curl -sL "https://archive.torproject.org/tor-package-archive/torbrowser/${TOR_VERSION}/tor-expert-bundle-linux-x86_64-${TOR_VERSION}.tar.gz" -o tor-bundle.tar.gz + mkdir -p tor-extract && tar -xzf tor-bundle.tar.gz -C tor-extract + mkdir -p linux-qt-dist/tor + mv triangles-qt "linux-qt-dist/Cryptographic-Triangles-v${VERSION}-linux-x64-qt" + cp tor-extract/tor/tor linux-qt-dist/tor/ + chmod +x linux-qt-dist/tor/tor + cp -r tor-extract/data linux-qt-dist/tor/data - name: Upload artifact uses: actions/upload-artifact@v4 with: name: linux-qt - path: Cryptographic-Triangles-v*-linux-x64-qt + path: linux-qt-dist/ build-linux-daemon: runs-on: ubuntu-22.04 @@ -222,14 +263,22 @@ jobs: - name: Strip binary run: strip --strip-all src/trianglesd - - name: Rename - run: mv src/trianglesd Cryptographic-Triangles-v${VERSION}-linux-x64-daemon + - name: Bundle Tor + run: | + TOR_VERSION="14.0.8" + curl -sL "https://archive.torproject.org/tor-package-archive/torbrowser/${TOR_VERSION}/tor-expert-bundle-linux-x86_64-${TOR_VERSION}.tar.gz" -o tor-bundle.tar.gz + mkdir -p tor-extract && tar -xzf tor-bundle.tar.gz -C tor-extract + mkdir -p linux-daemon-dist/tor + mv src/trianglesd "linux-daemon-dist/Cryptographic-Triangles-v${VERSION}-linux-x64-daemon" + cp tor-extract/tor/tor linux-daemon-dist/tor/ + chmod +x linux-daemon-dist/tor/tor + cp -r tor-extract/data linux-daemon-dist/tor/data - name: Upload artifact uses: actions/upload-artifact@v4 with: name: linux-daemon - path: Cryptographic-Triangles-v*-linux-x64-daemon + path: linux-daemon-dist/ build-macos: runs-on: macos-15 @@ -284,6 +333,16 @@ jobs: export PATH="/opt/homebrew/opt/qt@5/bin:$PATH" macdeployqt Triangles-Qt.app -verbose=1 + - name: Bundle Tor into app + run: | + TOR_VERSION="14.0.8" + curl -sL "https://archive.torproject.org/tor-package-archive/torbrowser/${TOR_VERSION}/tor-expert-bundle-macos-aarch64-${TOR_VERSION}.tar.gz" -o tor-bundle.tar.gz + mkdir -p tor-extract && tar -xzf tor-bundle.tar.gz -C tor-extract + mkdir -p Triangles-Qt.app/Contents/MacOS/tor + cp tor-extract/tor/tor Triangles-Qt.app/Contents/MacOS/tor/ + chmod +x Triangles-Qt.app/Contents/MacOS/tor/tor + cp -r tor-extract/data Triangles-Qt.app/Contents/MacOS/tor/data + - name: Create DMG run: | mkdir -p dmg_contents @@ -318,13 +377,14 @@ jobs: - name: Prepare release assets run: | mkdir -p release - # Windows - cd artifacts/windows-qt && zip -r ../../release/Cryptographic-Triangles-${VERSION}-win-x64.zip . && cd ../.. - cp artifacts/windows-qt/triangles-qt.exe release/Cryptographic-Triangles-${VERSION}-win-x64-qt.exe - cp artifacts/windows-daemon/trianglesd.exe release/Cryptographic-Triangles-${VERSION}-win-x64-daemon.exe - # Linux - cp artifacts/linux-qt/Cryptographic-Triangles-* release/ - cp artifacts/linux-daemon/Cryptographic-Triangles-* release/ + # Windows Qt (zip with Tor bundle included) + cd artifacts/windows-qt && zip -r ../../release/Cryptographic-Triangles-${VERSION}-win-x64-qt.zip . && cd ../.. + # Windows daemon (zip with Tor bundle included) + cd artifacts/windows-daemon && zip -r ../../release/Cryptographic-Triangles-${VERSION}-win-x64-daemon.zip . && cd ../.. + # Linux Qt (tar.gz with Tor bundle) + cd artifacts/linux-qt && tar -czf ../../release/Cryptographic-Triangles-${VERSION}-linux-x64-qt.tar.gz . && cd ../.. + # Linux daemon (tar.gz with Tor bundle) + cd artifacts/linux-daemon && tar -czf ../../release/Cryptographic-Triangles-${VERSION}-linux-x64-daemon.tar.gz . && cd ../.. # macOS cp artifacts/macos-arm64-dmg/*.dmg release/ ls -la release/