From 446b1baeae1bcee0def0a062e1338e6ed97fbe44 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Fri, 5 Dec 2025 14:36:17 +0000 Subject: [PATCH 01/21] Fixup artifact names --- .github/workflows/publish-browser.yml | 126 ++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 .github/workflows/publish-browser.yml diff --git a/.github/workflows/publish-browser.yml b/.github/workflows/publish-browser.yml new file mode 100644 index 000000000..a6c1e8913 --- /dev/null +++ b/.github/workflows/publish-browser.yml @@ -0,0 +1,126 @@ +name: Publish Browser +on: + pull_request: + workflow_dispatch: + # inputs: + # post: + # name: "Release Post" + # required: true + # description: Choose the release post to publish with. Must be a tag (eg v0.4.0) + # type: string + # channel: + # name: "CLI Binary Version" + # required: true + # description: Choose the version number to publish with. Must be a tag (ie v0.4.0) + # type: string + +env: + # make sure we have the right version + # main is always a prepatch until we hit 1.0, and then this script needs to be updated + # note that we need to promote the prepatch to a minor bump when we actually do a release + # this means the version in git will always be one minor bump ahead of the actual release - basically meaning once + # we release a version, it's fair game to merge breaking changes to main since all semver-compatible changes will be + # backported automatically + # SEMVER: ${{ github.event.inputs.channel == 'main' && 'prerelease' || 'patch' }} + # PRERELEASE_TAG: ${{ github.event.inputs.channel == 'main' && '-pre' || '' }} + RELEASE_TAG: ${{ github.event.inputs.channel }} + RELEASE_POST: ${{ github.event.inputs.post }} + +jobs: + release-cli: + permissions: + contents: write + runs-on: ${{ matrix.platform.os }} + strategy: + fail-fast: false + matrix: + platform: + - target: x86_64-pc-windows-msvc + os: windows-latest + artefact_name: "" + artefact_path: "" + - target: aarch64-pc-windows-msvc + os: windows-latest + artefact_name: "" + artefact_path: "" + - target: x86_64-apple-darwin + os: macos-15-intel + artefact_name: "Blitz_0.0.0_x86_64.dmg" + artefact_path: "./target/dx/blitz/bundle/macos/bundle/dmg/Blitz_0.0.0_x86_64.dmg" + - target: aarch64-apple-darwin + os: macos-latest + artefact_name: "Blitz_0.0.0_aarch64.dmg" + artefact_path: "./target/dx/blitz/bundle/macos/bundle/dmg/Blitz_0.0.0_aarch64.dmg" + - target: x86_64-unknown-linux-gnu + os: ubuntu-24.04 + artefact_name: "" + artefact_path: "" + - target: aarch64-unknown-linux-gnu + os: ubuntu-24.04-arm + artefact_name: "" + artefact_path: "" + # musl builds + # - target: x86_64-unknown-linux-musl + # os: ubuntu-24.04 + # - target: aarch64-unknown-linux-musl + # os: ubuntu-24.04-arm + steps: + - name: Checkout + uses: actions/checkout@v5 + + - name: Install Rust + uses: dtolnay/rust-toolchain@master + with: + toolchain: "1.89.0" + targets: ${{ matrix.platform.target }} + + - uses: Swatinem/rust-cache@v2 + with: + cache-all-crates: "true" + save-if: ${{ github.ref == 'refs/heads/main' }} + + - name: Install Dioxus CLI + uses: taiki-e/install-action@v2 + with: + tool: dioxus-cli@0.7.2 + + # - name: Install openssl on macos + # if: ${{ matrix.platform.os == 'macos-latest' || matrix.platform.os == 'macos-15-intel' }} + # run: brew install openssl + + # - name: Install nasm for windows (tls) + # if: ${{ matrix.platform.target == 'x86_64-pc-windows-msvc' }} + # uses: ilammy/setup-nasm@v1 + + # - name: Free Disk Space + # if: ${{ matrix.platform.os == 'ubuntu-24.04' || matrix.platform.os == 'ubuntu-24.04-arm' }} + # uses: ./.github/actions/free-disk-space + + - uses: awalsh128/cache-apt-pkgs-action@latest + if: ${{ matrix.platform.os == 'ubuntu-24.04' || matrix.platform.os == 'ubuntu-24.04-arm' }} + with: + packages: libgtk-3-dev libxdo-dev + version: 1.0 + + - name: Bundle browser + run: dx bundle --package browser --profile production + + - name: Upload app bundle + uses: actions/upload-artifact@v5 + if: ${{ matrix.platform.artefact_path != '' && matrix.platform.artefact_name != '' }} + with: + name: ${{ matrix.platform.artefact_name }} + path: ${{ matrix.platform.artefact_path }} + + # # Todo: we want `cargo install dx` to actually just use a prebuilt binary instead of building it + # - name: Build and upload CLI binaries + # uses: taiki-e/upload-rust-binary-action@v1 + # with: + # bin: dx + # token: ${{ secrets.GITHUB_TOKEN }} + # target: ${{ matrix.platform.target }} + # archive: $bin-$target + # checksum: sha256 + # manifest_path: packages/cli/Cargo.toml + # ref: refs/tags/${{ env.RELEASE_POST }} + # zip: "all" From 0718826bf016e2ca9eeeace2d8cb583b93f9e244 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sun, 7 Dec 2025 17:42:05 +0000 Subject: [PATCH 02/21] Use git dep for dioxus cli Signed-off-by: Nico Burns --- .github/workflows/publish-browser.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish-browser.yml b/.github/workflows/publish-browser.yml index a6c1e8913..02b445ed9 100644 --- a/.github/workflows/publish-browser.yml +++ b/.github/workflows/publish-browser.yml @@ -79,10 +79,13 @@ jobs: cache-all-crates: "true" save-if: ${{ github.ref == 'refs/heads/main' }} - - name: Install Dioxus CLI - uses: taiki-e/install-action@v2 - with: - tool: dioxus-cli@0.7.2 + # - name: Install Dioxus CLI + # uses: taiki-e/install-action@v2 + # with: + # tool: dioxus-cli@0.7.2 + + - name: Install Dioxus CLI (git) + run: cargo install dioxus-cli --git https://github.com/nicoburns/dioxus.git --rev=bd8ad33 # - name: Install openssl on macos # if: ${{ matrix.platform.os == 'macos-latest' || matrix.platform.os == 'macos-15-intel' }} From 99af288455f57bf3df88b4019aee2bb0bc477f76 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sun, 7 Dec 2025 18:08:53 +0000 Subject: [PATCH 03/21] Publish: Install more deps on linux --- .github/workflows/publish-browser.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-browser.yml b/.github/workflows/publish-browser.yml index 02b445ed9..f64d33366 100644 --- a/.github/workflows/publish-browser.yml +++ b/.github/workflows/publish-browser.yml @@ -102,7 +102,7 @@ jobs: - uses: awalsh128/cache-apt-pkgs-action@latest if: ${{ matrix.platform.os == 'ubuntu-24.04' || matrix.platform.os == 'ubuntu-24.04-arm' }} with: - packages: libgtk-3-dev libxdo-dev + packages: libgtk-3-dev libxdo-dev libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libayatana-appindicator3-dev librsvg2-dev version: 1.0 - name: Bundle browser From 6600de6f9e6bc85edbbf564875f335978f77ff2a Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sun, 7 Dec 2025 18:31:49 +0000 Subject: [PATCH 04/21] Set webview_install_mode to skip + set windows icon_path Signed-off-by: Nico Burns --- apps/browser/Dioxus.toml | 6 +++++- apps/browser/assets/blitz-logo.ico | Bin 0 -> 410598 bytes 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 apps/browser/assets/blitz-logo.ico diff --git a/apps/browser/Dioxus.toml b/apps/browser/Dioxus.toml index 0fbc25e63..556eb9476 100644 --- a/apps/browser/Dioxus.toml +++ b/apps/browser/Dioxus.toml @@ -4,4 +4,8 @@ android_main_activity = "MainActivity.kt" [bundle] publisher = "DioxusLabs" identifier = "com.dioxuslabs.blitz" -icon = ["./assets/blitz-logo.png"] \ No newline at end of file +icon = ["./assets/blitz-logo.png"] + +[bundle.windows] +webview_install_mode = "skip" +icon_path = "./assets/blitz-logo.ico" \ No newline at end of file diff --git a/apps/browser/assets/blitz-logo.ico b/apps/browser/assets/blitz-logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..8b112c22c83c5c886654b4b8556b730096623492 GIT binary patch literal 410598 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 Date: Sun, 7 Dec 2025 18:46:53 +0000 Subject: [PATCH 05/21] Add artefact paths for linux Signed-off-by: Nico Burns --- .github/workflows/publish-browser.yml | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/publish-browser.yml b/.github/workflows/publish-browser.yml index f64d33366..885167da3 100644 --- a/.github/workflows/publish-browser.yml +++ b/.github/workflows/publish-browser.yml @@ -45,20 +45,26 @@ jobs: artefact_path: "" - target: x86_64-apple-darwin os: macos-15-intel - artefact_name: "Blitz_0.0.0_x86_64.dmg" + artefact_name: "Blitz_0.0.0_macos_x86_64" artefact_path: "./target/dx/blitz/bundle/macos/bundle/dmg/Blitz_0.0.0_x86_64.dmg" - target: aarch64-apple-darwin os: macos-latest - artefact_name: "Blitz_0.0.0_aarch64.dmg" + artefact_name: "Blitz_0.0.0_macos_aarch64" artefact_path: "./target/dx/blitz/bundle/macos/bundle/dmg/Blitz_0.0.0_aarch64.dmg" - target: x86_64-unknown-linux-gnu os: ubuntu-24.04 - artefact_name: "" - artefact_path: "" + artefact_name: "Blitz_0.0.0_linux_x86_64" + artefact_path: | + ./target/dx/blitz/bundle/linux/bundle/deb/Blitz_0.0.0_amd64.deb + ./target/dx/blitz/bundle/linux/bundle/rpm/Blitz-0.0.0-.x86_64.rpm + ./target/dx/blitz/bundle/linux/bundle/appimage/Blitz_0.0.0_amd64.AppImage - target: aarch64-unknown-linux-gnu os: ubuntu-24.04-arm - artefact_name: "" - artefact_path: "" + artefact_name: "Blitz_0.0.0_linux_aarch64" + artefact_path: | + ./target/dx/blitz/bundle/linux/bundle/deb/Blitz_0.0.0_amd64.deb + ./target/dx/blitz/bundle/linux/bundle/rpm/Blitz-0.0.0-.x86_64.rpm + ./target/dx/blitz/bundle/linux/bundle/appimage/Blitz_0.0.0_amd64.AppImage # musl builds # - target: x86_64-unknown-linux-musl # os: ubuntu-24.04 From 326c430168c8c5e8e6c55bb9fbae6d487be180e5 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sun, 7 Dec 2025 18:49:16 +0000 Subject: [PATCH 06/21] Fixup webview_install_mode --- apps/browser/Dioxus.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/browser/Dioxus.toml b/apps/browser/Dioxus.toml index 556eb9476..a123fd2b6 100644 --- a/apps/browser/Dioxus.toml +++ b/apps/browser/Dioxus.toml @@ -7,5 +7,5 @@ identifier = "com.dioxuslabs.blitz" icon = ["./assets/blitz-logo.png"] [bundle.windows] -webview_install_mode = "skip" +webview_install_mode = "Skip" icon_path = "./assets/blitz-logo.ico" \ No newline at end of file From f12d49f7340d97ac173ed84dda497f33a18a1593 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sun, 7 Dec 2025 18:49:26 +0000 Subject: [PATCH 07/21] Only use git CLI on linux --- .github/workflows/publish-browser.yml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish-browser.yml b/.github/workflows/publish-browser.yml index 885167da3..98943ddef 100644 --- a/.github/workflows/publish-browser.yml +++ b/.github/workflows/publish-browser.yml @@ -37,22 +37,27 @@ jobs: platform: - target: x86_64-pc-windows-msvc os: windows-latest + use_git_cli: false artefact_name: "" artefact_path: "" - target: aarch64-pc-windows-msvc os: windows-latest + use_git_cli: false artefact_name: "" artefact_path: "" - target: x86_64-apple-darwin os: macos-15-intel + use_git_cli: false artefact_name: "Blitz_0.0.0_macos_x86_64" artefact_path: "./target/dx/blitz/bundle/macos/bundle/dmg/Blitz_0.0.0_x86_64.dmg" - target: aarch64-apple-darwin os: macos-latest + use_git_cli: false artefact_name: "Blitz_0.0.0_macos_aarch64" artefact_path: "./target/dx/blitz/bundle/macos/bundle/dmg/Blitz_0.0.0_aarch64.dmg" - target: x86_64-unknown-linux-gnu os: ubuntu-24.04 + use_git_cli: true artefact_name: "Blitz_0.0.0_linux_x86_64" artefact_path: | ./target/dx/blitz/bundle/linux/bundle/deb/Blitz_0.0.0_amd64.deb @@ -60,6 +65,7 @@ jobs: ./target/dx/blitz/bundle/linux/bundle/appimage/Blitz_0.0.0_amd64.AppImage - target: aarch64-unknown-linux-gnu os: ubuntu-24.04-arm + use_git_cli: true artefact_name: "Blitz_0.0.0_linux_aarch64" artefact_path: | ./target/dx/blitz/bundle/linux/bundle/deb/Blitz_0.0.0_amd64.deb @@ -85,12 +91,14 @@ jobs: cache-all-crates: "true" save-if: ${{ github.ref == 'refs/heads/main' }} - # - name: Install Dioxus CLI - # uses: taiki-e/install-action@v2 - # with: - # tool: dioxus-cli@0.7.2 + - name: Install Dioxus CLI + if: ${{ matrix.platform.use_git_cli == false }} + uses: taiki-e/install-action@v2 + with: + tool: dioxus-cli@0.7.2 - name: Install Dioxus CLI (git) + if: ${{ matrix.platform.use_git_cli == true }} run: cargo install dioxus-cli --git https://github.com/nicoburns/dioxus.git --rev=bd8ad33 # - name: Install openssl on macos From 78f41a6de51639722cbff29f632a552cc677acc1 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sun, 7 Dec 2025 19:04:55 +0000 Subject: [PATCH 08/21] Use windows path syntax for windows icon path Signed-off-by: Nico Burns --- apps/browser/Dioxus.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/browser/Dioxus.toml b/apps/browser/Dioxus.toml index a123fd2b6..140c68127 100644 --- a/apps/browser/Dioxus.toml +++ b/apps/browser/Dioxus.toml @@ -8,4 +8,4 @@ icon = ["./assets/blitz-logo.png"] [bundle.windows] webview_install_mode = "Skip" -icon_path = "./assets/blitz-logo.ico" \ No newline at end of file +icon_path = "assets\\blitz-logo.ico" \ No newline at end of file From f0902a6f042c1dba1e66567f42a625cef9905071 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sun, 7 Dec 2025 19:14:48 +0000 Subject: [PATCH 09/21] Fixup artefact paths Signed-off-by: Nico Burns --- .github/workflows/publish-browser.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish-browser.yml b/.github/workflows/publish-browser.yml index 98943ddef..63daa56a9 100644 --- a/.github/workflows/publish-browser.yml +++ b/.github/workflows/publish-browser.yml @@ -49,7 +49,7 @@ jobs: os: macos-15-intel use_git_cli: false artefact_name: "Blitz_0.0.0_macos_x86_64" - artefact_path: "./target/dx/blitz/bundle/macos/bundle/dmg/Blitz_0.0.0_x86_64.dmg" + artefact_path: "./target/dx/blitz/bundle/macos/bundle/dmg/Blitz_0.0.0_x64.dmg" - target: aarch64-apple-darwin os: macos-latest use_git_cli: false @@ -68,9 +68,9 @@ jobs: use_git_cli: true artefact_name: "Blitz_0.0.0_linux_aarch64" artefact_path: | - ./target/dx/blitz/bundle/linux/bundle/deb/Blitz_0.0.0_amd64.deb - ./target/dx/blitz/bundle/linux/bundle/rpm/Blitz-0.0.0-.x86_64.rpm - ./target/dx/blitz/bundle/linux/bundle/appimage/Blitz_0.0.0_amd64.AppImage + ./target/dx/blitz/bundle/linux/bundle/deb/Blitz_0.0.arm64.deb + ./target/dx/blitz/bundle/linux/bundle/rpm/Blitz-0.0.0-.aarch64.rpm + ./target/dx/blitz/bundle/linux/bundle/appimage/Blitz_0.0.0_aarch64.AppImage # musl builds # - target: x86_64-unknown-linux-musl # os: ubuntu-24.04 From e79e53df3c5f8d08f90fb254680b74711ce98e0b Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sun, 7 Dec 2025 19:46:54 +0000 Subject: [PATCH 10/21] Use CLI that canonicalizes windows icon path Signed-off-by: Nico Burns --- .github/workflows/publish-browser.yml | 6 +++--- apps/browser/Dioxus.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish-browser.yml b/.github/workflows/publish-browser.yml index 63daa56a9..f7ddbd24b 100644 --- a/.github/workflows/publish-browser.yml +++ b/.github/workflows/publish-browser.yml @@ -37,12 +37,12 @@ jobs: platform: - target: x86_64-pc-windows-msvc os: windows-latest - use_git_cli: false + use_git_cli: true artefact_name: "" artefact_path: "" - target: aarch64-pc-windows-msvc os: windows-latest - use_git_cli: false + use_git_cli: true artefact_name: "" artefact_path: "" - target: x86_64-apple-darwin @@ -99,7 +99,7 @@ jobs: - name: Install Dioxus CLI (git) if: ${{ matrix.platform.use_git_cli == true }} - run: cargo install dioxus-cli --git https://github.com/nicoburns/dioxus.git --rev=bd8ad33 + run: cargo install dioxus-cli --git https://github.com/nicoburns/dioxus.git --rev=ac396faada3c8129d085a41af83ffd28067037da # - name: Install openssl on macos # if: ${{ matrix.platform.os == 'macos-latest' || matrix.platform.os == 'macos-15-intel' }} diff --git a/apps/browser/Dioxus.toml b/apps/browser/Dioxus.toml index 140c68127..a123fd2b6 100644 --- a/apps/browser/Dioxus.toml +++ b/apps/browser/Dioxus.toml @@ -8,4 +8,4 @@ icon = ["./assets/blitz-logo.png"] [bundle.windows] webview_install_mode = "Skip" -icon_path = "assets\\blitz-logo.ico" \ No newline at end of file +icon_path = "./assets/blitz-logo.ico" \ No newline at end of file From 4f2ff67ada95bb5f2256b68ab326e7fe652b0156 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sun, 7 Dec 2025 21:07:32 +0000 Subject: [PATCH 11/21] Use backslash for windows icon path --- apps/browser/Dioxus.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/browser/Dioxus.toml b/apps/browser/Dioxus.toml index a123fd2b6..140c68127 100644 --- a/apps/browser/Dioxus.toml +++ b/apps/browser/Dioxus.toml @@ -8,4 +8,4 @@ icon = ["./assets/blitz-logo.png"] [bundle.windows] webview_install_mode = "Skip" -icon_path = "./assets/blitz-logo.ico" \ No newline at end of file +icon_path = "assets\\blitz-logo.ico" \ No newline at end of file From e00d621802d0eb799cfdf9d5617aea3b842e1026 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sun, 7 Dec 2025 21:46:14 +0000 Subject: [PATCH 12/21] Try new cli version --- .github/workflows/publish-browser.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-browser.yml b/.github/workflows/publish-browser.yml index f7ddbd24b..b6a17019c 100644 --- a/.github/workflows/publish-browser.yml +++ b/.github/workflows/publish-browser.yml @@ -99,7 +99,7 @@ jobs: - name: Install Dioxus CLI (git) if: ${{ matrix.platform.use_git_cli == true }} - run: cargo install dioxus-cli --git https://github.com/nicoburns/dioxus.git --rev=ac396faada3c8129d085a41af83ffd28067037da + run: cargo install dioxus-cli --git https://github.com/nicoburns/dioxus.git --rev=9ff94e783eb394e3ab712a524861c536818e6661 # - name: Install openssl on macos # if: ${{ matrix.platform.os == 'macos-latest' || matrix.platform.os == 'macos-15-intel' }} @@ -120,7 +120,7 @@ jobs: version: 1.0 - name: Bundle browser - run: dx bundle --package browser --profile production + run: dx bundle --package browser --profile production --locked - name: Upload app bundle uses: actions/upload-artifact@v5 From 055d5125c0c2a1d78df798bd38e3da34d4d7d886 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sun, 7 Dec 2025 23:14:27 +0000 Subject: [PATCH 13/21] Upload artifacts for windows bundle --- .github/workflows/publish-browser.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish-browser.yml b/.github/workflows/publish-browser.yml index b6a17019c..62ae4108b 100644 --- a/.github/workflows/publish-browser.yml +++ b/.github/workflows/publish-browser.yml @@ -38,13 +38,17 @@ jobs: - target: x86_64-pc-windows-msvc os: windows-latest use_git_cli: true - artefact_name: "" - artefact_path: "" + artefact_name: "Blitz_0.0.0_windows_x86_64" + artefact_path: | + ./target/dx/blitz/bundle/windows/bundle/msi/Blitz_0.0.0_x64_en-US.msi + ./target/dx/blitz/bundle/windows/bundle/nsis/Blitz_0.0.0_x64-setup.exe - target: aarch64-pc-windows-msvc os: windows-latest use_git_cli: true - artefact_name: "" - artefact_path: "" + artefact_name: "Blitz_0.0.0_windows_aarch64" + artefact_path: | + ./target/dx/blitz/bundle/windows/bundle/msi/Blitz_0.0.0_x64_en-US.msi + ./target/dx/blitz/bundle/windows/bundle/nsis/Blitz_0.0.0_x64-setup.exe - target: x86_64-apple-darwin os: macos-15-intel use_git_cli: false From b4e58f41b59cc1b7978db241371caf7d657b9701 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sun, 7 Dec 2025 23:30:54 +0000 Subject: [PATCH 14/21] Actually use an arm runner for windows arm builds Signed-off-by: Nico Burns --- .github/workflows/publish-browser.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish-browser.yml b/.github/workflows/publish-browser.yml index 62ae4108b..d41c7088b 100644 --- a/.github/workflows/publish-browser.yml +++ b/.github/workflows/publish-browser.yml @@ -43,12 +43,12 @@ jobs: ./target/dx/blitz/bundle/windows/bundle/msi/Blitz_0.0.0_x64_en-US.msi ./target/dx/blitz/bundle/windows/bundle/nsis/Blitz_0.0.0_x64-setup.exe - target: aarch64-pc-windows-msvc - os: windows-latest + os: windows-11-arm use_git_cli: true artefact_name: "Blitz_0.0.0_windows_aarch64" artefact_path: | - ./target/dx/blitz/bundle/windows/bundle/msi/Blitz_0.0.0_x64_en-US.msi - ./target/dx/blitz/bundle/windows/bundle/nsis/Blitz_0.0.0_x64-setup.exe + ./target/dx/blitz/bundle/windows/bundle/msi/Blitz_0.0.0_aarch64_en-US.msi + ./target/dx/blitz/bundle/windows/bundle/nsis/Blitz_0.0.0_aarch64-setup.exe - target: x86_64-apple-darwin os: macos-15-intel use_git_cli: false From 53898214573866c8fbe86313344e8d4049f8f6d0 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Mon, 8 Dec 2025 00:00:43 +0000 Subject: [PATCH 15/21] Fix windows arm artifact paths Signed-off-by: Nico Burns --- .github/workflows/publish-browser.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-browser.yml b/.github/workflows/publish-browser.yml index d41c7088b..b60b67abb 100644 --- a/.github/workflows/publish-browser.yml +++ b/.github/workflows/publish-browser.yml @@ -47,8 +47,8 @@ jobs: use_git_cli: true artefact_name: "Blitz_0.0.0_windows_aarch64" artefact_path: | - ./target/dx/blitz/bundle/windows/bundle/msi/Blitz_0.0.0_aarch64_en-US.msi - ./target/dx/blitz/bundle/windows/bundle/nsis/Blitz_0.0.0_aarch64-setup.exe + ./target/dx/blitz/bundle/windows/bundle/msi/Blitz_0.0.0_arm64_en-US.msi + ./target/dx/blitz/bundle/windows/bundle/nsis/Blitz_0.0.0_arm64-setup.exe - target: x86_64-apple-darwin os: macos-15-intel use_git_cli: false From a70085450975ce76a55a7cc2994a973f2c5e01e7 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Mon, 8 Dec 2025 01:08:55 +0000 Subject: [PATCH 16/21] Use american spelling of artifact Signed-off-by: Nico Burns --- .github/workflows/publish-browser.yml | 30 +++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/publish-browser.yml b/.github/workflows/publish-browser.yml index b60b67abb..98fd00294 100644 --- a/.github/workflows/publish-browser.yml +++ b/.github/workflows/publish-browser.yml @@ -38,40 +38,40 @@ jobs: - target: x86_64-pc-windows-msvc os: windows-latest use_git_cli: true - artefact_name: "Blitz_0.0.0_windows_x86_64" - artefact_path: | + artifact_name: "Blitz_0.0.0_windows_x86_64" + artifact_path: | ./target/dx/blitz/bundle/windows/bundle/msi/Blitz_0.0.0_x64_en-US.msi ./target/dx/blitz/bundle/windows/bundle/nsis/Blitz_0.0.0_x64-setup.exe - target: aarch64-pc-windows-msvc os: windows-11-arm use_git_cli: true - artefact_name: "Blitz_0.0.0_windows_aarch64" - artefact_path: | + artifact_name: "Blitz_0.0.0_windows_aarch64" + artifact_path: | ./target/dx/blitz/bundle/windows/bundle/msi/Blitz_0.0.0_arm64_en-US.msi ./target/dx/blitz/bundle/windows/bundle/nsis/Blitz_0.0.0_arm64-setup.exe - target: x86_64-apple-darwin os: macos-15-intel use_git_cli: false - artefact_name: "Blitz_0.0.0_macos_x86_64" - artefact_path: "./target/dx/blitz/bundle/macos/bundle/dmg/Blitz_0.0.0_x64.dmg" + artifact_name: "Blitz_0.0.0_macos_x86_64" + artifact_path: "./target/dx/blitz/bundle/macos/bundle/dmg/Blitz_0.0.0_x64.dmg" - target: aarch64-apple-darwin os: macos-latest use_git_cli: false - artefact_name: "Blitz_0.0.0_macos_aarch64" - artefact_path: "./target/dx/blitz/bundle/macos/bundle/dmg/Blitz_0.0.0_aarch64.dmg" + artifact_name: "Blitz_0.0.0_macos_aarch64" + artifact_path: "./target/dx/blitz/bundle/macos/bundle/dmg/Blitz_0.0.0_aarch64.dmg" - target: x86_64-unknown-linux-gnu os: ubuntu-24.04 use_git_cli: true - artefact_name: "Blitz_0.0.0_linux_x86_64" - artefact_path: | + artifact_name: "Blitz_0.0.0_linux_x86_64" + artifact_path: | ./target/dx/blitz/bundle/linux/bundle/deb/Blitz_0.0.0_amd64.deb ./target/dx/blitz/bundle/linux/bundle/rpm/Blitz-0.0.0-.x86_64.rpm ./target/dx/blitz/bundle/linux/bundle/appimage/Blitz_0.0.0_amd64.AppImage - target: aarch64-unknown-linux-gnu os: ubuntu-24.04-arm use_git_cli: true - artefact_name: "Blitz_0.0.0_linux_aarch64" - artefact_path: | + artifact_name: "Blitz_0.0.0_linux_aarch64" + artifact_path: | ./target/dx/blitz/bundle/linux/bundle/deb/Blitz_0.0.arm64.deb ./target/dx/blitz/bundle/linux/bundle/rpm/Blitz-0.0.0-.aarch64.rpm ./target/dx/blitz/bundle/linux/bundle/appimage/Blitz_0.0.0_aarch64.AppImage @@ -128,10 +128,10 @@ jobs: - name: Upload app bundle uses: actions/upload-artifact@v5 - if: ${{ matrix.platform.artefact_path != '' && matrix.platform.artefact_name != '' }} + if: ${{ matrix.platform.artifact_path != '' && matrix.platform.artifact_name != '' }} with: - name: ${{ matrix.platform.artefact_name }} - path: ${{ matrix.platform.artefact_path }} + name: ${{ matrix.platform.artifact_name }} + path: ${{ matrix.platform.artifact_path }} # # Todo: we want `cargo install dx` to actually just use a prebuilt binary instead of building it # - name: Build and upload CLI binaries From 3be7301578367723a1b54075707f670a89f5269c Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sat, 17 Jan 2026 23:53:47 +0000 Subject: [PATCH 17/21] Use v0.7.3 of CLI --- .github/workflows/publish-browser.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-browser.yml b/.github/workflows/publish-browser.yml index 98fd00294..e6002c96b 100644 --- a/.github/workflows/publish-browser.yml +++ b/.github/workflows/publish-browser.yml @@ -99,7 +99,7 @@ jobs: if: ${{ matrix.platform.use_git_cli == false }} uses: taiki-e/install-action@v2 with: - tool: dioxus-cli@0.7.2 + tool: dioxus-cli@0.7.3 - name: Install Dioxus CLI (git) if: ${{ matrix.platform.use_git_cli == true }} From cfb0458ab725e3b9b052ddb60ae3aeedaf54f421 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sat, 17 Jan 2026 23:57:31 +0000 Subject: [PATCH 18/21] Enable verbose logging Signed-off-by: Nico Burns --- .github/workflows/publish-browser.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-browser.yml b/.github/workflows/publish-browser.yml index e6002c96b..0a6bc5135 100644 --- a/.github/workflows/publish-browser.yml +++ b/.github/workflows/publish-browser.yml @@ -124,7 +124,7 @@ jobs: version: 1.0 - name: Bundle browser - run: dx bundle --package browser --profile production --locked + run: dx bundle --package browser --profile production --locked --verbose - name: Upload app bundle uses: actions/upload-artifact@v5 From 57142c2bdc1931d27f02e30f5a5d435ea3453fa6 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sat, 17 Jan 2026 23:59:06 +0000 Subject: [PATCH 19/21] Enable trace logs Signed-off-by: Nico Burns --- .github/workflows/publish-browser.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-browser.yml b/.github/workflows/publish-browser.yml index 0a6bc5135..202cafadb 100644 --- a/.github/workflows/publish-browser.yml +++ b/.github/workflows/publish-browser.yml @@ -124,7 +124,7 @@ jobs: version: 1.0 - name: Bundle browser - run: dx bundle --package browser --profile production --locked --verbose + run: dx bundle --package browser --profile production --locked --verbose --trace - name: Upload app bundle uses: actions/upload-artifact@v5 From db56fa46fdf5c59ae12c009ff9466c10d9099476 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sun, 18 Jan 2026 00:14:53 +0000 Subject: [PATCH 20/21] Use bin cli on all platforms Signed-off-by: Nico Burns --- .github/workflows/publish-browser.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish-browser.yml b/.github/workflows/publish-browser.yml index 202cafadb..6533e4ff2 100644 --- a/.github/workflows/publish-browser.yml +++ b/.github/workflows/publish-browser.yml @@ -37,14 +37,14 @@ jobs: platform: - target: x86_64-pc-windows-msvc os: windows-latest - use_git_cli: true + use_git_cli: false artifact_name: "Blitz_0.0.0_windows_x86_64" artifact_path: | ./target/dx/blitz/bundle/windows/bundle/msi/Blitz_0.0.0_x64_en-US.msi ./target/dx/blitz/bundle/windows/bundle/nsis/Blitz_0.0.0_x64-setup.exe - target: aarch64-pc-windows-msvc os: windows-11-arm - use_git_cli: true + use_git_cli: false artifact_name: "Blitz_0.0.0_windows_aarch64" artifact_path: | ./target/dx/blitz/bundle/windows/bundle/msi/Blitz_0.0.0_arm64_en-US.msi @@ -61,7 +61,7 @@ jobs: artifact_path: "./target/dx/blitz/bundle/macos/bundle/dmg/Blitz_0.0.0_aarch64.dmg" - target: x86_64-unknown-linux-gnu os: ubuntu-24.04 - use_git_cli: true + use_git_cli: false artifact_name: "Blitz_0.0.0_linux_x86_64" artifact_path: | ./target/dx/blitz/bundle/linux/bundle/deb/Blitz_0.0.0_amd64.deb @@ -69,7 +69,7 @@ jobs: ./target/dx/blitz/bundle/linux/bundle/appimage/Blitz_0.0.0_amd64.AppImage - target: aarch64-unknown-linux-gnu os: ubuntu-24.04-arm - use_git_cli: true + use_git_cli: false artifact_name: "Blitz_0.0.0_linux_aarch64" artifact_path: | ./target/dx/blitz/bundle/linux/bundle/deb/Blitz_0.0.arm64.deb From bc57498f3bcf86f774b6588d3b83ae6e94b750cd Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sun, 18 Jan 2026 00:26:11 +0000 Subject: [PATCH 21/21] Use Rust 1.92 Signed-off-by: Nico Burns --- .github/workflows/publish-browser.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-browser.yml b/.github/workflows/publish-browser.yml index 6533e4ff2..864b7c969 100644 --- a/.github/workflows/publish-browser.yml +++ b/.github/workflows/publish-browser.yml @@ -87,7 +87,7 @@ jobs: - name: Install Rust uses: dtolnay/rust-toolchain@master with: - toolchain: "1.89.0" + toolchain: "1.92.0" targets: ${{ matrix.platform.target }} - uses: Swatinem/rust-cache@v2