chore: bump version to 0.9.9 #12
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| # Triggers a multi-platform Tauri build whenever you push a tag like `v0.9.4` | |
| # or `v1.0.0`. The workflow creates a draft GitHub Release with bundles for | |
| # Linux (.AppImage, .deb, .rpm), macOS (.dmg, universal), and Windows (.msi, .exe). | |
| # | |
| # To release a new version: | |
| # git tag v0.9.4 | |
| # git push origin v0.9.4 | |
| # | |
| # Then go to https://github.com/<you>/<repo>/releases, find the draft, edit | |
| # the description, and publish. | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| # Lets the workflow create releases and upload assets to the repo. | |
| permissions: | |
| contents: write | |
| jobs: | |
| build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - platform: 'macos-latest' | |
| args: '--target universal-apple-darwin' | |
| # ubuntu-24.04 ships WebKitGTK 2.44+, matching the stack on | |
| # rolling-release distros (Arch / CachyOS / Fedora rolling). The | |
| # older 22.04 image ships WebKitGTK 2.36, whose EGL/DMA-BUF code | |
| # path mismatches modern Mesa and crashes the webview on launch | |
| # with `Could not create default EGL display: EGL_BAD_PARAMETER`. | |
| - platform: 'ubuntu-24.04' | |
| args: '' | |
| - platform: 'windows-latest' | |
| args: '' | |
| runs-on: ${{ matrix.platform }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| # pnpm 10 because the repo's `pnpm-lock.yaml` was generated with | |
| # 10.x and `--frozen-lockfile` complains when a v9 runner reads | |
| # a v10 lockfile. | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 10 | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} | |
| - name: Cache Rust build artifacts | |
| uses: swatinem/rust-cache@v2 | |
| with: | |
| workspaces: './src-tauri -> target' | |
| # `libayatana-appindicator3-dev` is the modern (Ayatana) fork that | |
| # Tauri 2 prefers; the legacy `libappindicator3-dev` package fails | |
| # the CMake feature checks. `libssl-dev` is needed by some transitive | |
| # Rust crates that build against system OpenSSL. | |
| - name: Install Linux system deps | |
| if: matrix.platform == 'ubuntu-24.04' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| libwebkit2gtk-4.1-dev \ | |
| libayatana-appindicator3-dev \ | |
| libssl-dev \ | |
| librsvg2-dev \ | |
| patchelf | |
| - name: Install JS deps | |
| run: pnpm install --frozen-lockfile | |
| - name: Build Tauri app | |
| uses: tauri-apps/tauri-action@v0 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # `linuxdeploy` ships an old `strip` binary inside its AppImage | |
| # that doesn't recognize the `.relr.dyn` section emitted by | |
| # recent glibc — the AppImage step aborts mid-bundle with | |
| # `unknown type [0x13] section .relr.dyn`. Skipping the strip | |
| # is safe because system libs are already stripped, and dodges | |
| # the failure on any Ubuntu/glibc combo where it surfaces. | |
| NO_STRIP: 'true' | |
| with: | |
| tagName: ${{ github.ref_name }} | |
| releaseName: 'Courvux Notepad ${{ github.ref_name }}' | |
| releaseBody: | | |
| See the full changelog in the README. | |
| **Downloads below.** Pick the bundle for your OS: | |
| - **macOS**: `.dmg` — universal binary (Apple Silicon + Intel) | |
| - **Windows**: `.msi` (recommended) or `.exe` | |
| - **Linux**: `.AppImage` (portable), `.deb` (Debian/Ubuntu), `.rpm` (Fedora/RHEL), `.pkg.tar.zst` (Arch/CachyOS) | |
| Builds are unsigned. macOS users may need to right-click → Open | |
| on first launch; Windows users may see a SmartScreen warning. | |
| releaseDraft: true | |
| prerelease: false | |
| args: ${{ matrix.args }} | |
| # ── Arch Linux package (.pkg.tar.zst) ─────────────────────────────────────── | |
| # Builds natively inside an Arch Linux container so the binary links against | |
| # the same WebKitGTK/Mesa stack found on Arch / CachyOS / Manjaro. This | |
| # dodges the EGL/DMA-BUF crash that affects the Ubuntu-built AppImage on | |
| # rolling-release distros. | |
| build-arch: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| container: | |
| image: archlinux:base-devel | |
| steps: | |
| - name: Install Arch system dependencies | |
| run: | | |
| pacman -Syu --noconfirm | |
| pacman -S --noconfirm \ | |
| rust webkit2gtk-4.1 gtk3 \ | |
| libayatana-appindicator librsvg \ | |
| pnpm nodejs npm \ | |
| patchelf git github-cli | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Create builder user for makepkg | |
| run: | | |
| useradd -m builder | |
| echo "builder ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers | |
| - name: Build Arch package | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| VERSION="${GITHUB_REF_NAME#v}" | |
| echo "Building Arch package for version $VERSION" | |
| # Generate source tarball from the checkout | |
| TARBALL="/tmp/courvux-notepad-${VERSION}.tar.gz" | |
| tar -czf "$TARBALL" \ | |
| --exclude='node_modules' --exclude='.git' --exclude='target' \ | |
| --exclude='pkg/arch/pkg' --exclude='pkg/arch/src' \ | |
| --exclude='pkg/arch/*.pkg.tar.zst' --exclude='pkg/arch/*.tar.gz' \ | |
| --transform "s,^,courvux-notepad-${VERSION}/," . | |
| cd pkg/arch | |
| # Copy tarball into build dir so makepkg finds it | |
| cp "$TARBALL" . | |
| # Point PKGBUILD to the local tarball and update version | |
| sed -i "s/^pkgver=.*/pkgver=${VERSION}/" PKGBUILD | |
| sed -i "s|source=.*|source=(\"courvux-notepad-${VERSION}.tar.gz\")|" PKGBUILD | |
| chown -R builder:builder . | |
| su builder -c "makepkg -s --noconfirm" | |
| - name: Upload Arch package to release | |
| shell: bash | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| cd pkg/arch | |
| pkg_file=$(ls *.pkg.tar.zst | head -n 1) | |
| gh release upload "${{ github.ref_name }}" "$pkg_file" --clobber --repo "${{ github.repository }}" | |
| # The EGL/DMA-BUF workaround now lives in src-tauri/src/main.rs: | |
| # `std::env::set_var("WEBKIT_DISABLE_DMABUF_RENDERER", "1")` on Linux | |
| # before Tauri starts. This is more reliable than patching the AppRun | |
| # script because it works for .deb / .rpm / AppImage alike and survives | |
| # any bundler changes. Users can still override it at launch: | |
| # WEBKIT_DISABLE_DMABUF_RENDERER=0 ./app.AppImage |