Compare commits

...
Author SHA1 Message Date
Ludy 9b0b141074 Merge branch 'main' into AppImage_fix 2026-01-09 20:42:05 +01:00
Ludy87 42e484e30a Update tauri.conf.json 2026-01-09 14:39:56 +01:00
Ludy 9fb22d66f3 Merge branch 'main' into AppImage_fix 2026-01-09 14:36:48 +01:00
Ludy87 22daafcba3 Update workflows and add new frontend dependencies 2026-01-09 14:34:56 +01:00
Ludy 31410f42f8 Merge branch 'main' into AppImage_fix 2025-12-29 20:41:19 +01:00
Ludy87 4ba84ec35f Remove license field from Cargo.toml
Cleared the license field in the Cargo.toml for the Stirling-PDF desktop application. This may be to update or clarify the project's licensing information.
2025-12-12 20:46:26 +01:00
Ludy f8f541af8d Merge branch 'main' into AppImage_fix 2025-12-12 20:44:43 +01:00
Ludy 9ed16687fa Merge branch 'main' into AppImage_fix 2025-12-11 10:23:31 +01:00
Ludy87 dbb5463d89 Enhance multiOS and Tauri build workflows
Adds macOS DMG tooling installation and dependency checks to multiOSReleases workflow. Improves artifact handling for RPM packages and unknown platforms. Updates Tauri build workflow for consistency in formatting and dependency installation steps.
2025-12-06 12:26:11 +01:00
Ludy87 7b05e57a6d Add create-dmg installation step for macOS builds
Adds a step to install the 'create-dmg' tool via Homebrew when building on macOS platforms. This ensures DMG creation tooling is available for packaging macOS builds.
2025-12-06 11:55:57 +01:00
Anthony Stirling 9df9c8caf2 Merge branch 'main' into AppImage_fix 2025-12-06 00:18:57 +00:00
Ludy d9e0970bd9 Merge branch 'main' into AppImage_fix 2025-12-04 20:32:08 +01:00
Ludy87 2a36a3c585 Enable native keyring features for Apple and Windows
Updated the keyring dependency in Cargo.toml to enable 'apple-native' and 'windows-native' features, improving native integration on those platforms. Cargo.lock updated to reflect new and updated dependencies.
2025-12-04 20:30:54 +01:00
Ludy87 9fab426143 Update dependencies and CI build matrix
Updated several Rust and JavaScript dependencies to their latest versions, including @tauri-apps/api, and made corresponding changes in Cargo.lock and package-lock.json. The Tauri build GitHub Actions workflow was also updated to remove duplicate macOS build targets and streamline the build matrix.
2025-12-04 20:26:24 +01:00
Ludy87 ac88ac077f Update JDK version to 21 in tauri-build workflow
The GitHub Actions workflow now sets up JDK 21 instead of JDK 17 to ensure compatibility with newer Java features and dependencies.
2025-12-04 18:18:24 +01:00
Ludy87 579ea8948c Update JDK version to 21 in CI workflow
Changed the Java setup steps in multiOSReleases.yml to use JDK 21 instead of JDK 17 for building and testing. This ensures compatibility with newer Java features and aligns with updated project requirements.
2025-12-04 18:16:13 +01:00
Ludy b5c0ab3b11 Merge branch 'main' into AppImage_fix 2025-12-04 11:33:39 +01:00
Ludy a4dba200e0 Merge branch 'V2' into AppImage_fix 2025-12-03 05:19:42 +01:00
Ludy87 5412326b49 Update dependencies in package-lock.json
Added new optional dependencies including @emnapi/core, @emnapi/runtime, @emnapi/wasi-threads, and @napi-rs/canvas with platform-specific builds. Updated and expanded esbuild platform support packages and refreshed several ESLint-related dependencies.
2025-12-02 15:24:16 +01:00
Ludy b57a6d3354 Merge branch 'V2' into AppImage_fix 2025-12-02 15:15:28 +01:00
Ludy87 b995a7f413 Update release workflows for RPM and signing logic
Added RPM package to multiOS release artifacts. Improved Windows signing logic in tauri-build workflow with detailed conditions for enabling signing.
2025-12-02 15:07:44 +01:00
Ludy87 e20df4ca22 Automate GPG key cleanup in AppImage build
Adds steps to export the GPG fingerprint to the environment and clean up the temporary GPG key after building the AppImage on Ubuntu. Also fixes heredoc usage for key generation parameters.
2025-12-02 14:47:23 +01:00
Ludy87 9b960f2e28 Improve error handling and GPG key cleanup in CI workflows
Adds error handling to wget commands for package downloads in multiOSReleases.yml and tauri-build.yml to ensure the workflow fails on download errors. Updates GPG key generation to export the fingerprint and introduces a cleanup step to remove temporary GPG keys after use in tauri-build.yml.
2025-12-02 14:46:23 +01:00
Ludy87 6a8183b0fd Bump version to 2.0.3 and add GPG key generation for CI
Updated project version to 2.0.3 in build.gradle, tauri.conf.json, and test configs. Added a step in the multiOSReleases GitHub workflow to generate a temporary GPG key for AppImage signing on Ubuntu CI builds.
2025-12-02 12:07:14 +01:00
Ludy87 b4746fe377 Update CI workflows for improved Linux packaging and concurrency
Added concurrency control to multiOSReleases workflow to cancel in-progress jobs on new triggers. Expanded Linux build matrix to include AppImage, DEB, and RPM targets. Updated Ubuntu dependency installation for better compatibility with Tauri v2 and packaging formats. Changed JDK version from 21 to 17. Added step-security/harden-runner to tauri-build workflow for enhanced security.
2025-12-02 10:52:18 +01:00
Ludy87 378696a140 Restrict Ubuntu steps to AppImage build only
Updated workflow conditions so that making libjvm discoverable and generating a temporary GPG key only run for the linux-x86_64-appimage build on Ubuntu 22.04, instead of all Ubuntu builds.
2025-12-01 22:17:02 +01:00
Ludy87 460cc827a6 Update Ubuntu dependency installation in CI workflow
Refines the dependency installation steps in the tauri-build GitHub Actions workflow. Adds conditional logic to separate AppImage-specific installs and updates the list of packages for Tauri v2 compatibility, including detailed comments explaining each dependency.
2025-12-01 22:09:01 +01:00
Ludy87 db2e93d285 Update tauri.conf.json 2025-12-01 22:04:23 +01:00
Ludy87 6ca248d68e Fix Tauri build workflow argument and platform handling
Uncomments the 'args' parameter for the Tauri build step to enable passing build arguments. Refines platform-specific artifact copying logic to handle AppImage files for Ubuntu and adds an explicit message for unknown platforms.
2025-12-01 22:02:36 +01:00
Ludy87 8a22f2e52a Simplify AppImage artifact processing in CI workflow
Removed FUSE installation and custom AppImage extraction, modification, and repackaging steps from the tauri-build GitHub Actions workflow. Now, AppImage files are simply copied to the dist directory, streamlining the build process for linux-x86_64-appimage targets.
2025-12-01 21:54:36 +01:00
Ludy87 31f5b73a05 Update tauri-build.yml 2025-12-01 21:41:56 +01:00
Ludy87 0dab986c3d Update tauri-build.yml 2025-12-01 21:26:45 +01:00
Ludy87 894293d378 Update tauri.conf.json 2025-12-01 21:15:10 +01:00
Ludy87 178474d254 Update tauri-build.yml 2025-12-01 20:46:30 +01:00
Ludy87 a8773cb769 Update tauri-build.yml 2025-12-01 20:43:23 +01:00
Ludy87 2096ae3a1f Update tauri-build.yml 2025-12-01 20:30:51 +01:00
Ludy87 bc40a856d8 Update tauri-build.yml 2025-12-01 20:30:20 +01:00
Ludy87 61093191fb Update tauri-build.yml 2025-12-01 20:13:15 +01:00
Ludy87 521c308e63 Update tauri-build.yml 2025-12-01 20:10:37 +01:00
Ludy87 e7207475ee Update tauri-build.yml 2025-12-01 20:09:28 +01:00
Ludy87 6c37815157 Update tauri-build.yml 2025-12-01 20:08:05 +01:00
Ludy87 3b5f607cbf Update tauri-build.yml 2025-12-01 19:34:11 +01:00
Ludy87 388bb439d7 Improve Linux WebKit fallback configuration
Updated the GitHub Actions workflow to simplify package installation for WebKit dependencies on Ubuntu and removed explicit version pinning. Enhanced the Linux WebKit configuration in Rust to apply and log multiple environment variable fallbacks for better handling of EGL issues.
2025-12-01 18:47:05 +01:00
Ludy87 279a307153 Update tauri-build.yml 2025-12-01 18:35:15 +01:00
Ludy87 a20fb83d31 Update tauri-build.yml 2025-12-01 18:23:12 +01:00
Ludy87 c1f569b2d5 Enable software rendering for WebKit on Linux
Adds a function to set WEBKIT_DISABLE_COMPOSITING_MODE on Linux if not already set, enabling software rendering to avoid EGL issues. Logs a message when the environment variable is configured.
2025-12-01 17:59:01 +01:00
Ludy87 bfda167b89 Update stirling-pdf.desktop 2025-12-01 17:17:36 +01:00
Ludy87 1090779081 Remove WebKit helper binaries copy step from CI
Eliminates the step that copies WebKit helper binaries for AppImage builds on Ubuntu 22.04 from the tauri-build GitHub Actions workflow. This may be due to changes in build requirements or improved packaging.
2025-12-01 16:40:24 +01:00
Ludy87 edee6529ff Update AppImage build to copy WebKit helper binaries
Adds a workflow step to copy WebKit2GTK helper binaries for AppImage builds on Ubuntu 22.04. Removes explicit file mapping from tauri.conf.json, relying on the workflow to provide required binaries.
2025-12-01 16:37:29 +01:00
Ludy87 8b81acf105 Update tauri.conf.json 2025-12-01 16:27:46 +01:00
Ludy87 2969385844 Remove license-checker and update Tauri config
Removed the 'license-checker' dev dependency from package.json and package-lock.json. Updated tauri.conf.json to explicitly include WebKit process binaries in the AppImage build. Also enabled Gradle cache in the GitHub Actions workflow and removed the AppImage functional test step.
2025-12-01 16:03:35 +01:00
Ludy87 b8dfb835da Update tauri-build.yml 2025-12-01 15:46:11 +01:00
Ludy87 86d95d3fad Update tauri-build.yml 2025-12-01 15:42:28 +01:00
Ludy e0ce76201a Simplify matrix echo commands in tauri-build.yml 2025-12-01 12:08:07 +01:00
Ludy 7c8ff1820f Refactor matrix generation for build platforms 2025-12-01 12:02:51 +01:00
Ludy fb06028a5a Generate GPG key for AppImage signing
Add step to generate temporary GPG key for AppImage signing on Ubuntu 22.04.
2025-12-01 06:11:47 +01:00
Ludy 649b426e4a Remove GPG key generation from build workflow
Removed temporary GPG key generation step for AppImage.
2025-12-01 03:22:44 +01:00
Ludy87 0227274a03 Update tauri-build.yml 2025-11-30 23:03:30 +01:00
Ludy87 49b79b5e66 Update tauri-build.yml 2025-11-30 22:50:01 +01:00
Ludy87 793d25725a Update tauri-build.yml 2025-11-30 22:40:56 +01:00
Ludy87 b0311a6325 Update tauri-build.yml 2025-11-30 22:39:23 +01:00
Ludy87 709280895c Update tauri-build.yml 2025-11-30 22:25:40 +01:00
Ludy87 700ef3eefc Update tauri-build.yml 2025-11-30 22:09:04 +01:00
Ludy87 baea057050 Add --no-sign flag to Linux build in CI
Appends the --no-sign flag to the Linux build arguments in the GitHub Actions workflow to disable signing during CI builds for x86_64-unknown-linux-gnu targets.
2025-11-30 22:02:49 +01:00
Ludy87 0cb6ae1270 Update tauri build workflow and frontend dependencies
Modified tauri-build.yml to conditionally set APPIMAGETOOL_SIGN_PASSPHRASE only on main branch. Removed unused dev dependencies from frontend/package.json and package-lock.json, including madge and related packages.
2025-11-30 21:46:11 +01:00
Ludy87 0e292a4d07 Add step to link libjvm for Ubuntu builds
Introduces a workflow step to create a symlink for libjvm.so on Ubuntu 22.04, ensuring the Java backend build can discover the JVM library. This addresses potential issues with library discovery during CI builds.
2025-11-30 21:25:39 +01:00
Ludy87 c2648e20b7 Update tauri-build.yml 2025-11-30 21:12:18 +01:00
Ludy87 08bccc4607 Update tauri-build.yml 2025-11-30 20:53:40 +01:00
Ludy87 71d1e5e2c4 Update tauri-build.yml 2025-11-30 20:53:10 +01:00
Ludy87 bf7987b483 Update Tauri CLI and dependencies, adjust build workflow
Upgrades @tauri-apps/cli to v2.9.5 and updates related optional dependencies in package-lock.json. Also updates js-yaml and glob packages. The tauri-build GitHub workflow is modified to streamline and correct the list of required Ubuntu packages for builds.
2025-11-30 20:42:11 +01:00
Ludy87 914e6c0129 Update tauri-build.yml 2025-11-30 20:31:21 +01:00
Ludy87 e4e9bba413 Update tauri-build.yml 2025-11-30 20:23:11 +01:00
Ludy87 4f66948ed6 Add libglib2.0-dev to Ubuntu build dependencies
Included libglib2.0-dev in the list of packages installed for Ubuntu builds to ensure all required libraries are available for Tauri application compilation.
2025-11-30 19:45:14 +01:00
Ludy87 7b726496c7 Update tauri-build.yml 2025-11-30 18:56:27 +01:00
Ludy87 93c11d1702 Refactor Linux build steps in Tauri workflow
Linux build matrix no longer passes bundle arguments directly; instead, a dedicated step for building AppImage, deb, and rpm is added for the Ubuntu platform. Other platforms use the general Tauri build step, improving workflow clarity and separation of build logic.
2025-11-30 18:50:26 +01:00
Ludy87 1bfe37f2fe Fix typo in tauri-build workflow args
Replaces '--buildes' with '--bundles' in the matrix configuration for Linux builds in the tauri-build GitHub Actions workflow to ensure correct argument usage.
2025-11-30 18:23:11 +01:00
Ludy87 5099dc049e Update build workflow and bundle targets
Adds explicit build targets (appimage, deb, rpm) for Linux in the GitHub Actions workflow and expands Tauri bundle targets to include deb, rpm, dmg, app, and msi. Removes JRE caching step to always rebuild the custom JRE during CI.
2025-11-30 18:18:33 +01:00
Ludy87 b9d71cdef0 Update tauri-build.yml 2025-11-30 17:54:36 +01:00
Ludy87 f2dfc30f80 Update tauri.conf.json 2025-11-30 17:49:09 +01:00
Ludy87 98fdf1a01b Update tauri-build.yml 2025-11-30 17:48:58 +01:00
Ludy87 d5453a06cd Update tauri-build.yml 2025-11-30 17:18:58 +01:00
Ludy87 6009310c69 Update tauri-build.yml 2025-11-30 17:17:19 +01:00
Ludy87 b0fe3877a9 Update tauri-build.yml 2025-11-30 17:17:03 +01:00
Ludy87 640aa861d4 Refactor JRE build and dependencies in CI workflows 2025-11-30 17:12:17 +01:00
Ludy87 2f33d0318e Update multiOSReleases.yml 2025-11-30 16:51:05 +01:00
Ludy87 4634ccb25d Update multiOSReleases.yml 2025-11-30 16:22:50 +01:00
Ludy87 153faec52a Update app version to 2.0.2 and fix workflow dependencies
Bump app version from 2.0.0 to 2.0.2 in tauri config and simulation configs. Add missing 'linuxdeploy' package and fix typo in GitHub Actions workflow dependencies for Ubuntu builds.
2025-11-30 15:06:10 +01:00
Ludy87 f06f6d30d1 Update Ubuntu dependencies in CI workflow
Added desktop-file-utils and libglib2.0-bin to the list of packages installed for Ubuntu-22.04 in the multiOSReleases workflow to ensure required tools are available for builds.
2025-11-30 14:39:37 +01:00
Ludy87 ce42c3e41a Add AppImage to Tauri bundle targets 2025-11-30 12:30:57 +01:00
10 changed files with 2137 additions and 1903 deletions
+116 -12
View File
@@ -26,6 +26,18 @@ on:
release:
types: [created]
# cancel in-progress jobs if a new job is triggered
# This is useful to avoid running multiple builds for the same branch if a new commit is pushed
# or a pull request is updated.
# It helps to save resources and time by ensuring that only the latest commit is built and tested
# This is particularly useful for long-running jobs that may take a while to complete.
# The `group` is set to a combination of the workflow name, event name, and branch name.
# This ensures that jobs are grouped by the workflow and branch, allowing for cancellation of
# in-progress jobs when a new commit is pushed to the same branch or a new pull request is opened.
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.ref_name || github.ref }}
cancel-in-progress: true
permissions:
contents: read
@@ -75,15 +87,15 @@ jobs:
echo 'matrix={"include":[{"platform":"macos-15","args":"--target aarch64-apple-darwin","name":"macos-aarch64"},{"platform":"macos-15-intel","args":"--target x86_64-apple-darwin","name":"macos-x86_64"}]}' >> $GITHUB_OUTPUT
;;
"linux")
echo 'matrix={"include":[{"platform":"ubuntu-22.04","args":"","name":"linux-x86_64"}]}' >> $GITHUB_OUTPUT
echo 'matrix={"include":[{"platform":"ubuntu-22.04","args":"--target x86_64-unknown-linux-gnu -b appimage","name":"linux-x86_64-appimage"},{"platform":"ubuntu-22.04","args":"--target x86_64-unknown-linux-gnu -b deb","name":"linux-x86_64-deb"},{"platform":"ubuntu-22.04","args":"--target x86_64-unknown-linux-gnu -b rpm","name":"linux-x86_64-rpm"}]}' >> $GITHUB_OUTPUT
;;
*)
echo 'matrix={"include":[{"platform":"windows-latest","args":"--target x86_64-pc-windows-msvc","name":"windows-x86_64"},{"platform":"macos-15","args":"--target aarch64-apple-darwin","name":"macos-aarch64"},{"platform":"macos-15-intel","args":"--target x86_64-apple-darwin","name":"macos-x86_64"},{"platform":"ubuntu-22.04","args":"","name":"linux-x86_64"}]}' >> $GITHUB_OUTPUT
echo 'matrix={"include":[{"platform":"windows-latest","args":"--target x86_64-pc-windows-msvc","name":"windows-x86_64"},{"platform":"macos-15","args":"--target aarch64-apple-darwin","name":"macos-aarch64"},{"platform":"macos-15-intel","args":"--target x86_64-apple-darwin","name":"macos-x86_64"},{"platform":"ubuntu-22.04","args":"--target x86_64-unknown-linux-gnu -b appimage","name":"linux-x86_64-appimage"},{"platform":"ubuntu-22.04","args":"--target x86_64-unknown-linux-gnu -b deb","name":"linux-x86_64-deb"},{"platform":"ubuntu-22.04","args":"--target x86_64-unknown-linux-gnu -b rpm","name":"linux-x86_64-rpm"}]}' >> $GITHUB_OUTPUT
;;
esac
else
# For push/release events, build all platforms
echo 'matrix={"include":[{"platform":"windows-latest","args":"--target x86_64-pc-windows-msvc","name":"windows-x86_64"},{"platform":"macos-15","args":"--target aarch64-apple-darwin","name":"macos-aarch64"},{"platform":"macos-15-intel","args":"--target x86_64-apple-darwin","name":"macos-x86_64"},{"platform":"ubuntu-22.04","args":"","name":"linux-x86_64"}]}' >> $GITHUB_OUTPUT
echo 'matrix={"include":[{"platform":"windows-latest","args":"--target x86_64-pc-windows-msvc","name":"windows-x86_64"},{"platform":"macos-15","args":"--target aarch64-apple-darwin","name":"macos-aarch64"},{"platform":"macos-15-intel","args":"--target x86_64-apple-darwin","name":"macos-x86_64"},{"platform":"ubuntu-22.04","args":"--target x86_64-unknown-linux-gnu -b appimage","name":"linux-x86_64-appimage"},{"platform":"ubuntu-22.04","args":"--target x86_64-unknown-linux-gnu -b deb","name":"linux-x86_64-deb"},{"platform":"ubuntu-22.04","args":"--target x86_64-unknown-linux-gnu -b rpm","name":"linux-x86_64-rpm"}]}' >> $GITHUB_OUTPUT
fi
build-jars:
@@ -170,10 +182,60 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Install dependencies (ubuntu only)
if: matrix.platform == 'ubuntu-22.04'
if: matrix.platform == 'ubuntu-22.04' && matrix.name != 'linux-x86_64-appimage'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libjavascriptcoregtk-4.0-dev libsoup2.4-dev libjavascriptcoregtk-4.1-dev libsoup-3.0-dev
# Dependencies explanation:
# - libwebkit2gtk-4.1-dev: WebKit engine for Tauri v2 (4.0 was for v1)
# - libappindicator3-dev: System tray support
# - librsvg2-dev: SVG rendering
# - patchelf: Required for AppImage packaging
# - libxdo-dev: Keyboard/mouse automation
# - libasound2-dev: Audio support
# - libopenblas-dev: GPU acceleration support
# - libx11-dev: X11 development files for window system interaction
# - libxtst-dev: X11 testing extensions for input simulation
# - libxrandr-dev: X11 RandR extension for display configuration
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libxdo-dev libasound2-dev libopenblas-dev libx11-dev libxtst-dev libxrandr-dev
- name: Install macOS DMG tooling
if: startsWith(matrix.platform, 'macos')
run: |
brew list create-dmg >/dev/null 2>&1 || brew install create-dmg
- name: Install dependencies (appimage only)
if: matrix.platform == 'ubuntu-22.04' && matrix.name == 'linux-x86_64-appimage'
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
curl \
wget \
file \
libgtk-3-dev \
libxdo-dev \
libssl-dev \
libappindicator3-dev \
librsvg2-dev \
openjdk-17-jre-headless \
patchelf
mkdir -p /tmp/ubuntu-packages
cd /tmp/ubuntu-packages
wget https://launchpadlibrarian.net/723972773/libwebkit2gtk-4.1-0_2.44.0-0ubuntu0.22.04.1_amd64.deb || { echo "Failed to download libwebkit2gtk-4.1-0"; exit 1; }
wget https://launchpadlibrarian.net/723972761/libwebkit2gtk-4.1-dev_2.44.0-0ubuntu0.22.04.1_amd64.deb || { echo "Failed to download libwebkit2gtk-4.1-dev"; exit 1; }
wget https://launchpadlibrarian.net/723972770/libjavascriptcoregtk-4.1-0_2.44.0-0ubuntu0.22.04.1_amd64.deb || { echo "Failed to download libjavascriptcoregtk-4.1-0"; exit 1; }
wget https://launchpadlibrarian.net/723972746/libjavascriptcoregtk-4.1-dev_2.44.0-0ubuntu0.22.04.1_amd64.deb || { echo "Failed to download libjavascriptcoregtk-4.1-dev"; exit 1; }
wget https://launchpadlibrarian.net/723972735/gir1.2-javascriptcoregtk-4.1_2.44.0-0ubuntu0.22.04.1_amd64.deb || { echo "Failed to download gir1.2-javascriptcoregtk-4.1"; exit 1; }
wget https://launchpadlibrarian.net/723972739/gir1.2-webkit2-4.1_2.44.0-0ubuntu0.22.04.1_amd64.deb || { echo "Failed to download gir1.2-webkit2-4.1"; exit 1; }
wget https://launchpadlibrarian.net/606433947/libicu70_70.1-2ubuntu1_amd64.deb || { echo "Failed to download libicu70"; exit 1; }
wget https://launchpadlibrarian.net/606433941/libicu-dev_70.1-2ubuntu1_amd64.deb || { echo "Failed to download libicu-dev"; exit 1; }
wget https://launchpadlibrarian.net/606433945/icu-devtools_70.1-2ubuntu1_amd64.deb || { echo "Failed to download icu-devtools"; exit 1; }
wget https://launchpadlibrarian.net/595623693/libjpeg8_8c-2ubuntu10_amd64.deb || { echo "Failed to download libjpeg8"; exit 1; }
wget https://launchpadlibrarian.net/587202140/libjpeg-turbo8_2.1.2-0ubuntu1_amd64.deb || { echo "Failed to download libjpeg-turbo8"; exit 1; }
wget https://launchpadlibrarian.net/592959859/xdg-desktop-portal-gtk_1.14.0-1build1_amd64.deb || { echo "Failed to download xdg-desktop-portal-gtk"; exit 1; }
sudo apt-get install -y /tmp/ubuntu-packages/*.deb
- name: Setup Node.js
uses: actions/setup-node@v4
@@ -381,6 +443,35 @@ jobs:
echo "APPLE_SIGNING_IDENTITY=$CERT_ID" >> $GITHUB_ENV
echo "Certificate imported successfully."
- name: Check DMG creation dependencies (macOS only)
if: matrix.platform == 'macos-15' || matrix.platform == 'macos-15-intel'
run: |
echo "🔍 Checking DMG creation dependencies on ${{ matrix.platform }}..."
echo "hdiutil version: $(hdiutil --version || echo 'NOT FOUND')"
echo "create-dmg availability: $(which create-dmg || echo 'NOT FOUND')"
echo "Available disk space: $(df -h /tmp | tail -1)"
echo "macOS version: $(sw_vers -productVersion)"
echo "Available tools:"
ls -la /usr/bin/hd* || echo "No hd* tools found"
- name: Generate temporary GPG key for AppImage
if: matrix.platform == 'ubuntu-22.04' && matrix.name == 'linux-x86_64-appimage'
run: |
cat >keyparams <<EOF
%no-protection
Key-Type: RSA
Key-Length: 2048
Name-Real: CI AppImage Signer
Name-Email: ci-appimage@example.invalid
Expire-Date: 0
%commit
EOF
gpg --batch --generate-key keyparams
export GPG_FINGERPRINT=$(gpg --batch --with-colons --list-secret-keys | awk -F: '/^fpr:/ {print $10; exit}')
echo "GPG_FINGERPRINT=$GPG_FINGERPRINT" >> $GITHUB_ENV
echo "Generated temporary GPG key:"
gpg --list-secret-keys --keyid-format=long
- name: Build Tauri app
uses: tauri-apps/tauri-action@v0
env:
@@ -404,6 +495,15 @@ jobs:
tauriScript: npx tauri
args: ${{ matrix.args }}
- name: Cleanup temporary GPG key
if: matrix.platform == 'ubuntu-22.04' && matrix.name == 'linux-x86_64-appimage'
run: |
if [ -n "${GPG_FINGERPRINT:-}" ]; then
gpg --batch --yes --delete-secret-keys "$GPG_FINGERPRINT" || true
gpg --batch --yes --delete-keys "$GPG_FINGERPRINT" || true
fi
rm -f keyparams
# Sign with DigiCert KeyLocker (post-build)
- name: Sign Windows binaries with DigiCert KeyLocker
if: ${{ matrix.platform == 'windows-latest' && env.SM_API_KEY != '' && (github.event_name == 'release' || github.ref == 'refs/heads/V2-master') }}
@@ -509,10 +609,13 @@ jobs:
find . -name "*.msi" -exec cp {} "../../../dist/Stirling-PDF-${{ matrix.name }}.msi" \;
elif [ "${{ matrix.platform }}" = "macos-15" ] || [ "${{ matrix.platform }}" = "macos-15-intel" ]; then
find . -name "*.dmg" -exec cp {} "../../../dist/Stirling-PDF-${{ matrix.name }}.dmg" \;
find . -name "*.app" -exec cp -r {} "../../../dist/Stirling-PDF-${{ matrix.name }}.app" \;
else
# find . -name "*.app" -exec cp -r {} "../../../dist/Stirling-PDF-${{ matrix.name }}.app" \;
elif [ "${{ matrix.platform }}" = "ubuntu-22.04" ]; then
find . -name "*.deb" -exec cp {} "../../../dist/Stirling-PDF-${{ matrix.name }}.deb" \;
find . -name "*.rpm" -exec cp {} "../../../dist/Stirling-PDF-${{ matrix.name }}.rpm" \;
find . -name "*.AppImage" -exec cp {} "../../../dist/Stirling-PDF-${{ matrix.name }}.AppImage" \;
else
echo "Unknown platform: ${{ matrix.platform }}"
fi
- name: Upload build artifacts
@@ -567,10 +670,11 @@ jobs:
tag_name: v${{ needs.determine-matrix.outputs.version }}
generate_release_notes: true
files: |
./artifacts/**/*.jar
./artifacts/**/*.msi
./artifacts/**/*.dmg
./artifacts/**/*.deb
./artifacts/**/*.AppImage
./artifacts/**/Stirling-PDF-*.jar
./artifacts/**/Stirling-PDF-*.msi
./artifacts/**/Stirling-PDF-*.dmg
./artifacts/**/Stirling-PDF-*.deb
./artifacts/**/Stirling-PDF-*.rpm
./artifacts/**/Stirling-PDF-*.AppImage
draft: false
prerelease: false
+133 -15
View File
@@ -23,6 +23,18 @@ on:
push:
branches: [main]
# cancel in-progress jobs if a new job is triggered
# This is useful to avoid running multiple builds for the same branch if a new commit is pushed
# or a pull request is updated.
# It helps to save resources and time by ensuring that only the latest commit is built and tested
# This is particularly useful for long-running jobs that may take a while to complete.
# The `group` is set to a combination of the workflow name, event name, and branch name.
# This ensures that jobs are grouped by the workflow and branch, allowing for cancellation of
# in-progress jobs when a new commit is pushed to the same branch or a new pull request is opened.
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.ref_name || github.ref }}
cancel-in-progress: true
permissions:
contents: read
@@ -33,6 +45,11 @@ jobs:
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1
with:
egress-policy: audit
- name: Determine build matrix
id: set-matrix
run: |
@@ -45,15 +62,15 @@ jobs:
echo 'matrix={"include":[{"platform":"macos-15","args":"--target aarch64-apple-darwin","name":"macos-aarch64"},{"platform":"macos-15-intel","args":"--target x86_64-apple-darwin","name":"macos-x86_64"}]}' >> $GITHUB_OUTPUT
;;
"linux")
echo 'matrix={"include":[{"platform":"ubuntu-22.04","args":"","name":"linux-x86_64"}]}' >> $GITHUB_OUTPUT
echo 'matrix={"include":[{"platform":"ubuntu-22.04","args":"--target x86_64-unknown-linux-gnu -b appimage","name":"linux-x86_64-appimage"},{"platform":"ubuntu-22.04","args":"--target x86_64-unknown-linux-gnu -b deb","name":"linux-x86_64-deb"},{"platform":"ubuntu-22.04","args":"--target x86_64-unknown-linux-gnu -b rpm","name":"linux-x86_64-rpm"}]}' >> $GITHUB_OUTPUT
;;
*)
echo 'matrix={"include":[{"platform":"windows-latest","args":"--target x86_64-pc-windows-msvc","name":"windows-x86_64"},{"platform":"macos-15","args":"--target aarch64-apple-darwin","name":"macos-aarch64"},{"platform":"macos-15-intel","args":"--target x86_64-apple-darwin","name":"macos-x86_64"},{"platform":"ubuntu-22.04","args":"","name":"linux-x86_64"}]}' >> $GITHUB_OUTPUT
echo 'matrix={"include":[{"platform":"windows-latest","args":"--target x86_64-pc-windows-msvc","name":"windows-x86_64"},{"platform":"macos-15","args":"--target aarch64-apple-darwin","name":"macos-aarch64"},{"platform":"macos-15-intel","args":"--target x86_64-apple-darwin","name":"macos-x86_64"},{"platform":"ubuntu-22.04","args":"--target x86_64-unknown-linux-gnu -b appimage","name":"linux-x86_64-appimage"},{"platform":"ubuntu-22.04","args":"--target x86_64-unknown-linux-gnu -b deb","name":"linux-x86_64-deb"},{"platform":"ubuntu-22.04","args":"--target x86_64-unknown-linux-gnu -b rpm","name":"linux-x86_64-rpm"}]}' >> $GITHUB_OUTPUT
;;
esac
else
# For PR/push events, build all platforms
echo 'matrix={"include":[{"platform":"windows-latest","args":"--target x86_64-pc-windows-msvc","name":"windows-x86_64"},{"platform":"macos-15","args":"--target aarch64-apple-darwin","name":"macos-aarch64"},{"platform":"macos-15-intel","args":"--target x86_64-apple-darwin","name":"macos-x86_64"},{"platform":"ubuntu-22.04","args":"","name":"linux-x86_64"}]}' >> $GITHUB_OUTPUT
echo 'matrix={"include":[{"platform":"windows-latest","args":"--target x86_64-pc-windows-msvc","name":"windows-x86_64"},{"platform":"macos-15","args":"--target aarch64-apple-darwin","name":"macos-aarch64"},{"platform":"macos-15-intel","args":"--target x86_64-apple-darwin","name":"macos-x86_64"},{"platform":"ubuntu-22.04","args":"--target x86_64-unknown-linux-gnu -b appimage","name":"linux-x86_64-appimage"},{"platform":"ubuntu-22.04","args":"--target x86_64-unknown-linux-gnu -b deb","name":"linux-x86_64-deb"},{"platform":"ubuntu-22.04","args":"--target x86_64-unknown-linux-gnu -b rpm","name":"linux-x86_64-rpm"}]}' >> $GITHUB_OUTPUT
fi
build:
@@ -74,11 +91,61 @@ jobs:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Install dependencies (ubuntu only)
if: matrix.platform == 'ubuntu-22.04'
- name: install dependencies (ubuntu only)
if: matrix.platform == 'ubuntu-22.04' && matrix.name != 'linux-x86_64-appimage'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libjavascriptcoregtk-4.0-dev libsoup2.4-dev libjavascriptcoregtk-4.1-dev libsoup-3.0-dev
# Dependencies explanation:
# - libwebkit2gtk-4.1-dev: WebKit engine for Tauri v2 (4.0 was for v1)
# - libappindicator3-dev: System tray support
# - librsvg2-dev: SVG rendering
# - patchelf: Required for AppImage packaging
# - libxdo-dev: Keyboard/mouse automation
# - libasound2-dev: Audio support
# - libopenblas-dev: GPU acceleration support
# - libx11-dev: X11 development files for window system interaction
# - libxtst-dev: X11 testing extensions for input simulation
# - libxrandr-dev: X11 RandR extension for display configuration
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libxdo-dev libasound2-dev libopenblas-dev libx11-dev libxtst-dev libxrandr-dev
- name: Install macOS DMG tooling
if: startsWith(matrix.platform, 'macos')
run: |
brew list create-dmg >/dev/null 2>&1 || brew install create-dmg
- name: Install dependencies (appimage only)
if: matrix.platform == 'ubuntu-22.04' && matrix.name == 'linux-x86_64-appimage'
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
curl \
wget \
file \
libgtk-3-dev \
libxdo-dev \
libssl-dev \
libappindicator3-dev \
librsvg2-dev \
openjdk-17-jre-headless \
patchelf
mkdir -p /tmp/ubuntu-packages
cd /tmp/ubuntu-packages
wget https://launchpadlibrarian.net/723972773/libwebkit2gtk-4.1-0_2.44.0-0ubuntu0.22.04.1_amd64.deb || { echo "Failed to download libwebkit2gtk-4.1-0"; exit 1; }
wget https://launchpadlibrarian.net/723972761/libwebkit2gtk-4.1-dev_2.44.0-0ubuntu0.22.04.1_amd64.deb || { echo "Failed to download libwebkit2gtk-4.1-dev"; exit 1; }
wget https://launchpadlibrarian.net/723972770/libjavascriptcoregtk-4.1-0_2.44.0-0ubuntu0.22.04.1_amd64.deb || { echo "Failed to download libjavascriptcoregtk-4.1-0"; exit 1; }
wget https://launchpadlibrarian.net/723972746/libjavascriptcoregtk-4.1-dev_2.44.0-0ubuntu0.22.04.1_amd64.deb || { echo "Failed to download libjavascriptcoregtk-4.1-dev"; exit 1; }
wget https://launchpadlibrarian.net/723972735/gir1.2-javascriptcoregtk-4.1_2.44.0-0ubuntu0.22.04.1_amd64.deb || { echo "Failed to download gir1.2-javascriptcoregtk-4.1"; exit 1; }
wget https://launchpadlibrarian.net/723972739/gir1.2-webkit2-4.1_2.44.0-0ubuntu0.22.04.1_amd64.deb || { echo "Failed to download gir1.2-webkit2-4.1"; exit 1; }
wget https://launchpadlibrarian.net/606433947/libicu70_70.1-2ubuntu1_amd64.deb || { echo "Failed to download libicu70"; exit 1; }
wget https://launchpadlibrarian.net/606433941/libicu-dev_70.1-2ubuntu1_amd64.deb || { echo "Failed to download libicu-dev"; exit 1; }
wget https://launchpadlibrarian.net/606433945/icu-devtools_70.1-2ubuntu1_amd64.deb || { echo "Failed to download icu-devtools"; exit 1; }
wget https://launchpadlibrarian.net/595623693/libjpeg8_8c-2ubuntu10_amd64.deb || { echo "Failed to download libjpeg8"; exit 1; }
wget https://launchpadlibrarian.net/587202140/libjpeg-turbo8_2.1.2-0ubuntu1_amd64.deb || { echo "Failed to download libjpeg-turbo8"; exit 1; }
wget https://launchpadlibrarian.net/592959859/xdg-desktop-portal-gtk_1.14.0-1build1_amd64.deb || { echo "Failed to download xdg-desktop-portal-gtk"; exit 1; }
sudo apt-get install -y /tmp/ubuntu-packages/*.deb
- name: Setup Node.js
uses: actions/setup-node@v4
@@ -99,6 +166,18 @@ jobs:
java-version: "21"
distribution: "temurin"
- name: Make libjvm discoverable (appimage only)
if: matrix.platform == 'ubuntu-22.04' && matrix.name == 'linux-x86_64-appimage'
run: |
JAVA_LIBJVM="$JAVA_HOME/lib/server/libjvm.so"
if [ -f "$JAVA_LIBJVM" ]; then
sudo ln -sf "$JAVA_LIBJVM" /usr/lib/libjvm.so
echo "Linked libjvm from $JAVA_LIBJVM"
else
echo "libjvm not found at $JAVA_LIBJVM"
exit 1
fi
- name: Build Java backend with JLink
working-directory: ./
shell: bash
@@ -174,7 +253,7 @@ jobs:
- name: Install frontend dependencies
working-directory: ./frontend
run: npm install
run: npm ci
# DigiCert KeyLocker Setup (Cloud HSM)
- name: Setup DigiCert KeyLocker
@@ -298,6 +377,24 @@ jobs:
echo "Available tools:"
ls -la /usr/bin/hd* || echo "No hd* tools found"
- name: Generate temporary GPG key for AppImage
if: matrix.platform == 'ubuntu-22.04' && matrix.name == 'linux-x86_64-appimage'
run: |
cat >keyparams <<EOF
%no-protection
Key-Type: RSA
Key-Length: 2048
Name-Real: CI AppImage Signer
Name-Email: ci-appimage@example.invalid
Expire-Date: 0
%commit
EOF
gpg --batch --generate-key keyparams
export GPG_FINGERPRINT=$(gpg --batch --with-colons --list-secret-keys | awk -F: '/^fpr:/ {print $10; exit}')
echo "GPG_FINGERPRINT=$GPG_FINGERPRINT" >> $GITHUB_ENV
echo "Generated temporary GPG key:"
gpg --list-secret-keys --keyid-format=long
- name: Build Tauri app
uses: tauri-apps/tauri-action@v0
env:
@@ -308,19 +405,33 @@ jobs:
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
APPIMAGETOOL_SIGN_PASSPHRASE: ${{ secrets.APPIMAGETOOL_SIGN_PASSPHRASE }}
# APPIMAGETOOL_SIGN_PASSPHRASE: ${{ secrets.APPIMAGETOOL_SIGN_PASSPHRASE }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
VITE_SUPABASE_PUBLISHABLE_DEFAULT_KEY: ${{ secrets.VITE_SUPABASE_PUBLISHABLE_DEFAULT_KEY }}
VITE_SAAS_SERVER_URL: ${{ secrets.VITE_SAAS_SERVER_URL }}
# Only enable Windows signing in Tauri when on main
SIGN: ${{ github.ref == 'refs/heads/main' && (env.SM_API_KEY == '' && env.WINDOWS_CERTIFICATE != '') && '1' || '0' }}
# Enable Windows signing only when ALL of the following are true:
# - The build is running on the Windows platform (matrix.platform == 'windows-latest')
# - The build is triggered from the main branch (github.ref == 'refs/heads/main')
# - The DigiCert KeyLocker HSM is NOT being used (env.SM_API_KEY == '')
# - A Windows certificate is available (env.WINDOWS_CERTIFICATE != '')
# If all conditions are met, SIGN=1 (enable signing); otherwise, SIGN=0 (disable signing).
SIGN: ${{ (matrix.platform == 'windows-latest' && github.ref == 'refs/heads/main' && env.SM_API_KEY == '' && env.WINDOWS_CERTIFICATE != '') && '1' || '0' }}
CI: true
with:
projectPath: ./frontend
tauriScript: npx tauri
args: ${{ matrix.args }}
- name: Cleanup temporary GPG key
if: matrix.platform == 'ubuntu-22.04' && matrix.name == 'linux-x86_64-appimage'
run: |
if [ -n "${GPG_FINGERPRINT:-}" ]; then
gpg --batch --yes --delete-secret-keys "$GPG_FINGERPRINT" || true
gpg --batch --yes --delete-keys "$GPG_FINGERPRINT" || true
fi
rm -f keyparams
# Sign with DigiCert KeyLocker (post-build)
- name: Sign Windows binaries with DigiCert KeyLocker
if: ${{ matrix.platform == 'windows-latest' && env.SM_API_KEY != '' && github.ref == 'refs/heads/main' }}
@@ -507,9 +618,13 @@ jobs:
find . -name "*.msi" -exec cp {} "../../../dist/Stirling-PDF-${{ matrix.name }}.msi" \;
elif [ "${{ matrix.platform }}" = "macos-15" ] || [ "${{ matrix.platform }}" = "macos-15-intel" ]; then
find . -name "*.dmg" -exec cp {} "../../../dist/Stirling-PDF-${{ matrix.name }}.dmg" \;
else
# find . -name "*.app" -exec cp -r {} "../../../dist/Stirling-PDF-${{ matrix.name }}.app" \;
elif [ "${{ matrix.platform }}" = "ubuntu-22.04" ]; then
find . -name "*.deb" -exec cp {} "../../../dist/Stirling-PDF-${{ matrix.name }}.deb" \;
find . -name "*.rpm" -exec cp {} "../../../dist/Stirling-PDF-${{ matrix.name }}.rpm" \;
find . -name "*.AppImage" -exec cp {} "../../../dist/Stirling-PDF-${{ matrix.name }}.AppImage" \;
else
echo "Unknown platform: ${{ matrix.platform }}"
fi
- name: Verify Windows Code Signature
@@ -599,13 +714,16 @@ jobs:
echo "❌ No macOS artifacts found"
exit 1
fi
else
elif [ "${{ matrix.platform }}" = "ubuntu-22.04" ]; then
echo "Checking for Linux artifacts..."
find . -name "*.deb" -o -name "*.AppImage" | head -5
if [ $(find . -name "*.deb" -o -name "*.AppImage" | wc -l) -eq 0 ]; then
find . -name "*.deb" -o -name "*.AppImage" -o -name "*.rpm" | head -5
if [ $(find . -name "*.deb" -o -name "*.AppImage" -o -name "*.rpm" | wc -l) -eq 0 ]; then
echo "❌ No Linux artifacts found"
exit 1
fi
else
echo "Unknown platform: ${{ matrix.platform }}"
exit 1
fi
echo "✅ Build artifacts found for ${{ matrix.name }}"
@@ -615,7 +733,7 @@ jobs:
run: |
cd ./frontend/src-tauri/target
echo "Artifact sizes for ${{ matrix.name }}:"
find . -name "*.exe" -o -name "*.dmg" -o -name "*.deb" -o -name "*.AppImage" -o -name "*.msi" | while read file; do
find . -name "*.exe" -o -name "*.dmg" -o -name "*.deb" -o -name "*.AppImage" -o -name "*.rpm" -o -name "*.msi" | while read file; do
if [ -f "$file" ]; then
size=$(stat -c%s "$file" 2>/dev/null || stat -f%z "$file" 2>/dev/null || echo "unknown")
echo "$file: $size bytes"
+1405 -1099
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -43,7 +43,7 @@
"@supabase/supabase-js": "^2.47.13",
"@tailwindcss/postcss": "^4.1.13",
"@tanstack/react-virtual": "^3.13.12",
"@tauri-apps/api": "^2.5.0",
"@tauri-apps/api": "^2.9.1",
"@tauri-apps/plugin-fs": "^2.4.0",
"@tauri-apps/plugin-http": "^2.5.4",
"@tauri-apps/plugin-shell": "^2.3.3",
@@ -129,7 +129,7 @@
"@iconify-json/material-symbols": "^1.2.48",
"@iconify/utils": "^3.0.2",
"@playwright/test": "^1.55.0",
"@tauri-apps/cli": "^2.5.0",
"@tauri-apps/cli": "^2.9.5",
"@testing-library/dom": "^10.4.1",
"@testing-library/jest-dom": "^6.8.0",
"@testing-library/react": "^16.3.0",
+427 -756
View File
File diff suppressed because it is too large Load Diff
+15 -13
View File
@@ -4,7 +4,9 @@ version = "0.1.0"
description = "Stirling-PDF Desktop Application"
authors = ["Stirling-PDF Contributors"]
license = ""
repository = ""
repository = "https://github.com/Stirling-Tools/Stirling-PDF"
homepage = "https://www.stirlingpdf.com"
documentation = "https://docs.stirlingpdf.com"
edition = "2021"
rust-version = "1.77.2"
@@ -18,37 +20,37 @@ name = "app_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[build-dependencies]
tauri-build = { version = "2.2.0", features = [] }
tauri-build = { version = "2.5.3", features = [] }
[dependencies]
serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }
log = "0.4"
tauri = { version = "2.9.0", features = [ "devtools"] }
tauri-plugin-log = "2.0.0-rc"
tauri-plugin-shell = "2.1.0"
tauri = { version = "2.9.4", features = [ "devtools"] }
tauri-plugin-log = "2.7.1"
tauri-plugin-shell = "2.3.3"
tauri-plugin-fs = "2.4.4"
tauri-plugin-http = "2.4.4"
tauri-plugin-http = "2.5.4"
tauri-plugin-single-instance = { version = "2.3.6", features = ["deep-link"] }
tauri-plugin-store = "2.1.0"
tauri-plugin-opener = "2.0.0"
tauri-plugin-store = "2.4.1"
tauri-plugin-opener = "2.5.2"
keyring = { version = "3.6.3", features = ["apple-native", "windows-native"] }
tokio = { version = "1.48", features = ["time", "sync"] }
reqwest = { version = "0.12", features = ["json"] }
tauri-plugin-deep-link = "2.4.5"
keyring = { version = "3.6.1", features = ["apple-native", "windows-native"] }
tokio = { version = "1.0", features = ["time", "sync"] }
reqwest = { version = "0.11", features = ["json"] }
tiny_http = "0.12"
url = "2.5"
urlencoding = "2.1"
sha2 = "0.10"
base64 = "0.22"
rand = "0.8"
rand = "0.9"
[target.'cfg(target_os = "macos")'.dependencies]
core-foundation = "0.10"
core-services = "1.0"
[target.'cfg(target_os = "windows")'.dependencies]
windows = { version = "0.58", features = [
windows = { version = "0.61", features = [
"Win32_Foundation",
"Win32_System_Com",
"Win32_UI_Shell",
+3 -3
View File
@@ -6,8 +6,8 @@ use tauri_plugin_store::StoreExt;
use tiny_http::{Response, Server};
use sha2::{Sha256, Digest};
use base64::{Engine as _, engine::general_purpose::URL_SAFE_NO_PAD};
use rand::{thread_rng, Rng};
use rand::distributions::Alphanumeric;
use rand::Rng;
use rand::distr::Alphanumeric;
const STORE_FILE: &str = "connection.json";
const USER_INFO_KEY: &str = "user_info";
@@ -319,7 +319,7 @@ pub async fn login(
/// Generate PKCE code_verifier (random 43-128 character string)
fn generate_code_verifier() -> String {
thread_rng()
rand::rng()
.sample_iter(&Alphanumeric)
.take(128)
.map(char::from)
+25
View File
@@ -40,8 +40,33 @@ fn dispatch_deep_link(app: &AppHandle, url: &str) {
}
}
#[cfg(target_os = "linux")]
fn configure_linux_webview() {
let mut applied_settings = Vec::new();
if std::env::var_os("WEBKIT_DISABLE_COMPOSITING_MODE").is_none() {
std::env::set_var("WEBKIT_DISABLE_COMPOSITING_MODE", "1");
applied_settings.push("WEBKIT_DISABLE_COMPOSITING_MODE=1 (software rendering)");
}
if std::env::var_os("WEBKIT_DISABLE_DMABUF_RENDERER").is_none() {
std::env::set_var("WEBKIT_DISABLE_DMABUF_RENDERER", "1");
applied_settings.push("WEBKIT_DISABLE_DMABUF_RENDERER=1 (fallback EGL renderer)");
}
if !applied_settings.is_empty() {
add_log(format!(
"🛠️ Applied Linux WebKit fallbacks to avoid EGL issues: {}",
applied_settings.join(", ")
));
}
}
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
#[cfg(target_os = "linux")]
configure_linux_webview();
tauri::Builder::default()
.plugin(
tauri_plugin_log::Builder::new()
+3 -2
View File
@@ -3,7 +3,8 @@ Version=1.0
Type=Application
Name=Stirling-PDF
Comment=Locally hosted web application that allows you to perform various operations on PDF files
Exec=/usr/bin/stirling-pdf
TryExec={{exec}}
Exec={{exec}} %F
Icon={{icon}}
Terminal=false
MimeType=application/pdf;
@@ -12,4 +13,4 @@ Actions=open-file;
[Desktop Action open-file]
Name=Open PDF File
Exec=/usr/bin/stirling-pdf %F
Exec={{exec}} %F
+8 -1
View File
@@ -25,6 +25,7 @@
"targets": [
"deb",
"rpm",
"appimage",
"dmg",
"msi"
],
@@ -56,6 +57,12 @@
"linux": {
"deb": {
"desktopTemplate": "stirling-pdf.desktop"
},
"rpm": {
"desktopTemplate": "stirling-pdf.desktop"
},
"appimage": {
"bundleMediaFramework": false
}
},
"windows": {
@@ -85,4 +92,4 @@
}
}
}
}
}