Skip to content

chore: bump version to 0.9.9 #12

chore: bump version to 0.9.9

chore: bump version to 0.9.9 #12

Workflow file for this run

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