From 18157f453f1cca3776a51b52f14876943dfe1031 Mon Sep 17 00:00:00 2001 From: "Adrian Alfred C. Bonpin" Date: Sun, 20 Sep 2026 15:55:59 +0800 Subject: [PATCH] ci(release): make GitHub Actions the primary release path (#29) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GitHub is unsuspended, so releases move back from Gitea to GitHub, with the Gitea mirror kept as a fallback. - release.yml: re-enable as the active path and wire up Developer-ID signing + notarization for the macOS jobs. The Apple steps are guarded on the secrets being present, so the workflow stays green (ad-hoc signed) until they are configured. - release.yml: re-sign the bundled PostgreSQL/MariaDB client binaries with the Developer ID identity + hardened runtime + timestamp — Apple rejects ad-hoc-signed nested executables during notarization. - release.yml: move the Homebrew cask bump to the `release: published` event. It previously ran on tag push, but the releases/tags API does not serve drafts, so it could never download the DMGs. It now also skips cleanly when HOMEBREW_TAP_TOKEN is unset rather than failing the workflow. - release.yml: drop the stale header note claiming this is not the active release path. - README + cask template: point downloads, issues, releases and the Homebrew tap back at github.com/AdrianBonpin. --- .github/workflows/release.yml | 124 ++++++++++++++++++++++-- README.md | 70 +++++++------ packaging/homebrew/gridline.rb.template | 4 +- 3 files changed, 158 insertions(+), 40 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bd1288f..3b23b1b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,22 +7,44 @@ name: Release # git checkout prod && git pull # git tag v0.5.0 && git push origin v0.5.0 # -# SIGNING STATUS: macOS is Developer-ID signed + notarized via -# scripts/release-mac.sh (built manually on Adrian's machine). NOTE: this -# GitHub workflow is NOT the active release path — Gitea Actions uses -# .gitea/workflows/release.yml (Linux/Windows only). Linux/Windows installers +# SIGNING STATUS: this is the ACTIVE release path. macOS is Developer-ID +# signed + notarized in CI when the Apple secrets below are configured (see +# README "macOS signing & notarization"). When the secrets are absent the mac +# jobs still build, but ad-hoc signed / unnotarized. Linux/Windows installers # remain unsigned. +# +# Required secrets for signed + notarized macOS builds: +# APPLE_CERTIFICATE base64 of the Developer ID Application .p12 +# APPLE_CERTIFICATE_PASSWORD password for that .p12 +# APPLE_SIGNING_IDENTITY "Developer ID Application: Name (TEAMID)" +# KEYCHAIN_PASSWORD any throwaway password for the temp keychain +# APPLE_API_KEY App Store Connect Key ID +# APPLE_API_ISSUER App Store Connect Issuer ID +# APPLE_API_KEY_CONTENT contents of the AuthKey_.p8 +# +# The cask bump runs only after the draft release is PUBLISHED (the GitHub +# releases/tags API does not serve drafts), so it is wired to the `release: +# published` event rather than the tag push. It also needs HOMEBREW_TAP_TOKEN. on: push: tags: - 'v*' + release: + types: [published] permissions: contents: write jobs: publish: + # Build + draft release happen on the tag push; the `release: published` + # event exists only to trigger the cask bump below. + if: github.event_name == 'push' + env: + # Empty when the secret is unset — the tool steps below test for a + # non-empty value before re-signing. + APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} strategy: fail-fast: false matrix: @@ -40,6 +62,63 @@ jobs: - name: Checkout uses: actions/checkout@v4 + # ---- Apple signing setup (macOS only, skipped when secrets absent) --- + - name: Detect Apple signing secrets + id: apple + shell: bash + run: | + if [ -n "${{ secrets.APPLE_CERTIFICATE }}" ]; then + echo "enabled=true" >> "$GITHUB_OUTPUT" + else + echo "enabled=false" >> "$GITHUB_OUTPUT" + echo "::notice::APPLE_CERTIFICATE not set — macOS build will be ad-hoc signed and NOT notarized." + fi + + # The bundled pg/mariadb tools are re-signed in their own steps below, so + # the identity must be in a keychain BEFORE those steps run. tauri-action + # is deliberately NOT given APPLE_CERTIFICATE (only the identity), so it + # does not create a second keychain. + - name: Import Apple Developer ID certificate + if: startsWith(matrix.platform, 'macos') && steps.apple.outputs.enabled == 'true' + shell: bash + env: + APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} + APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} + KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} + run: | + set -euo pipefail + KEYCHAIN="gridline-signing.keychain-db" + echo "$APPLE_CERTIFICATE" | base64 --decode > "$RUNNER_TEMP/cert.p12" + security create-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN" + security set-keychain-settings -lut 21600 "$KEYCHAIN" + security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN" + security import "$RUNNER_TEMP/cert.p12" -k "$KEYCHAIN" \ + -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign + security set-key-partition-list -S apple-tool:,apple:,codesign: \ + -s -k "$KEYCHAIN_PASSWORD" "$KEYCHAIN" >/dev/null + EXISTING="$(security list-keychain -d user | tr -d ' \"')" + security list-keychain -d user -s "$KEYCHAIN" $EXISTING + rm -f "$RUNNER_TEMP/cert.p12" + security find-identity -v -p codesigning + + - name: Prepare notarization credentials + if: startsWith(matrix.platform, 'macos') && steps.apple.outputs.enabled == 'true' + shell: bash + env: + APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }} + APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }} + APPLE_API_KEY_CONTENT: ${{ secrets.APPLE_API_KEY_CONTENT }} + run: | + set -euo pipefail + KEY_PATH="$RUNNER_TEMP/private_keys/AuthKey_${APPLE_API_KEY}.p8" + mkdir -p "$(dirname "$KEY_PATH")" + printf '%s' "$APPLE_API_KEY_CONTENT" > "$KEY_PATH" + { + echo "APPLE_API_KEY=${APPLE_API_KEY}" + echo "APPLE_API_ISSUER=${APPLE_API_ISSUER}" + echo "APPLE_API_KEY_PATH=${KEY_PATH}" + } >> "$GITHUB_ENV" + - name: Install Linux dependencies if: matrix.platform == 'ubuntu-22.04' run: | @@ -131,6 +210,16 @@ jobs: libpq=$(otool -L "$OUT/$b" | awk '/libpq/ {print $1; exit}') install_name_tool -change "$libpq" "@loader_path/libpq.5.dylib" "$OUT/$b" done + # install_name_tool invalidates the linker signature. Re-sign with + # the Developer ID identity + hardened runtime + secure timestamp: + # Apple rejects ad-hoc-signed nested executables at notarization. + # No-op until the Apple secrets are configured. + if [ -n "${APPLE_SIGNING_IDENTITY:-}" ]; then + for f in "$OUT"/pg_dump "$OUT"/pg_restore "$OUT"/psql "$OUT"/libpq.5.dylib; do + codesign --force --options runtime --timestamp \ + --sign "$APPLE_SIGNING_IDENTITY" "$f" + done + fi ;; windows-latest) URL="https://get.enterprisedb.com/postgresql/postgresql-${PG_VER}-1-windows-x64-binaries.zip" @@ -263,7 +352,12 @@ jobs: if [ ! -f "$OUT/$base" ]; then cp "$lib" "$OUT/$base" 2>/dev/null || true; fi install_name_tool -change "$lib" "@loader_path/$base" "$dylib" 2>/dev/null || true done || true - codesign --force --sign - "$dylib" 2>/dev/null || true + if [ -n "${APPLE_SIGNING_IDENTITY:-}" ]; then + codesign --force --options runtime --timestamp \ + --sign "$APPLE_SIGNING_IDENTITY" "$dylib" + else + codesign --force --sign - "$dylib" 2>/dev/null || true + fi done done ;; @@ -328,16 +422,32 @@ jobs: # no-ops until that secret is set, so releases stay green before this is # configured. bump-cask: - needs: publish + # Triggered by `release: published`, NOT the tag push: the GitHub + # releases/tags API returns 404 for drafts, so the DMGs are undownloadable + # until the draft is published. + if: github.event_name == 'release' runs-on: ubuntu-latest permissions: contents: read steps: + - name: Check for tap token + id: tap + shell: bash + run: | + if [ -n "${{ secrets.HOMEBREW_TAP_TOKEN }}" ]; then + echo "enabled=true" >> "$GITHUB_OUTPUT" + else + echo "enabled=false" >> "$GITHUB_OUTPUT" + echo "::notice::HOMEBREW_TAP_TOKEN not set - skipping Homebrew cask bump." + fi + - name: Checkout + if: steps.tap.outputs.enabled == 'true' uses: actions/checkout@v4 - name: Resolve version and DMG checksums id: meta + if: steps.tap.outputs.enabled == 'true' env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | @@ -349,6 +459,7 @@ jobs: echo "sha_intel=$(shasum -a 256 /tmp/intel.dmg | cut -d' ' -f1)" >> "$GITHUB_OUTPUT" - name: Checkout tap repo + if: steps.tap.outputs.enabled == 'true' uses: actions/checkout@v4 with: repository: AdrianBonpin/homebrew-gridline @@ -356,6 +467,7 @@ jobs: path: tap - name: Render and push cask + if: steps.tap.outputs.enabled == 'true' env: VERSION: ${{ steps.meta.outputs.version }} SHA_ARM: ${{ steps.meta.outputs.sha_arm }} diff --git a/README.md b/README.md index b088773..7474c0a 100644 --- a/README.md +++ b/README.md @@ -18,34 +18,34 @@ React TypeScript Apache 2.0 License - Open source on Gitea + Open source on GitHub

- Download Latest - Open an Issue + Download Latest + Open an Issue

--- ## Download -Grab the installer for your OS from the [latest release](https://git.ranio.xyz/adrianbonpin/gridline/releases/latest) — the links below point at the current release (**v0.8.0**): +Grab the installer for your OS from the [latest release](https://github.com/AdrianBonpin/gridline/releases/latest) — the links below point at the current release (**v0.8.0**): | OS | Architecture | Download | | :--------------------------- | :--------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- | -| **macOS** | Apple Silicon (M1/M2/M3/M4…) | [Gridline_0.8.0_aarch64.dmg](https://git.ranio.xyz/adrianbonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_aarch64.dmg) | -| **macOS** | Intel | [Gridline_0.8.0_x64.dmg](https://git.ranio.xyz/adrianbonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_x64.dmg) | -| **Windows** | x64 | [Gridline_0.8.0_x64-setup.exe](https://git.ranio.xyz/adrianbonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_x64-setup.exe) | -| **Debian / Ubuntu** | amd64 | [Gridline_0.8.0_amd64.deb](https://git.ranio.xyz/adrianbonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_amd64.deb) | -| **Fedora / RHEL / openSUSE** | x86_64 | [Gridline-0.8.0-1.x86_64.rpm](https://git.ranio.xyz/adrianbonpin/gridline/releases/download/v0.8.0/Gridline-0.8.0-1.x86_64.rpm) | -| **Other Linux** | amd64 | [Gridline_0.8.0_amd64.AppImage](https://git.ranio.xyz/adrianbonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_amd64.AppImage) | +| **macOS** | Apple Silicon (M1/M2/M3/M4…) | [Gridline_0.8.0_aarch64.dmg](https://github.com/AdrianBonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_aarch64.dmg) | +| **macOS** | Intel | [Gridline_0.8.0_x64.dmg](https://github.com/AdrianBonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_x64.dmg) | +| **Windows** | x64 | [Gridline_0.8.0_x64-setup.exe](https://github.com/AdrianBonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_x64-setup.exe) | +| **Debian / Ubuntu** | amd64 | [Gridline_0.8.0_amd64.deb](https://github.com/AdrianBonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_amd64.deb) | +| **Fedora / RHEL / openSUSE** | x86_64 | [Gridline-0.8.0-1.x86_64.rpm](https://github.com/AdrianBonpin/gridline/releases/download/v0.8.0/Gridline-0.8.0-1.x86_64.rpm) | +| **Other Linux** | amd64 | [Gridline_0.8.0_amd64.AppImage](https://github.com/AdrianBonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_amd64.AppImage) | **macOS via Homebrew** (recommended for Mac users): ```bash # one-time setup (the tap is hosted on Gitea, not GitHub): -brew tap AdrianBonpin/gridline https://git.ranio.xyz/adrianbonpin/homebrew-gridline.git +brew tap AdrianBonpin/gridline https://github.com/AdrianBonpin/homebrew-gridline.git brew trust adrianbonpin/gridline # install / upgrade: @@ -104,7 +104,7 @@ Gridline is built for developers and small teams who manage multiple database en - **v0.7.15** — **Support channel on the landing page**: optional coffee via [Ko-fi](https://ko-fi.com/adrianbonpin), never gates a feature. Landing copy refreshed (em dashes dropped, OSS section simplified, funding FAQ); version bump. -- **v0.7.14** — **No more repeated macOS keychain prompts**: saved connection passwords and SSH secrets are now ACL-pinned to the app's code signature on every save (`keychain_acl`), so app upgrades never re-trigger the macOS keychain access dialog (users upgrading from pre-signing builds see one final prompt — choose **Always Allow**). **Install via Homebrew**: `brew tap AdrianBonpin/gridline https://git.ranio.xyz/adrianbonpin/homebrew-gridline.git` then `brew install --cask gridline`; version bump. +- **v0.7.14** — **No more repeated macOS keychain prompts**: saved connection passwords and SSH secrets are now ACL-pinned to the app's code signature on every save (`keychain_acl`), so app upgrades never re-trigger the macOS keychain access dialog (users upgrading from pre-signing builds see one final prompt — choose **Always Allow**). **Install via Homebrew**: `brew tap AdrianBonpin/gridline https://github.com/AdrianBonpin/homebrew-gridline.git` then `brew install --cask gridline`; version bump. - **v0.7.13** — **macOS is now Developer-ID signed and notarized**: the app is properly code-signed with a Developer ID Application certificate and notarized by Apple, so macOS opens it without the Gatekeeper "Open Anyway" prompt or the `xattr` quarantine workaround. The release script (`scripts/release-mac.sh`) auto-detects the signing identity from the keychain, notarizes + staples both architectures, and verifies the result before uploading; version bump. @@ -312,29 +312,33 @@ _Notes: DB Pro is an Electron app (launched Nov 2025) whose marketing copy overc ### Download a release -Pre-built installers for macOS, Windows, and Linux are published on the [Releases](https://git.ranio.xyz/adrianbonpin/gridline/releases) page. +Pre-built installers for macOS, Windows, and Linux are published on the [Releases](https://github.com/AdrianBonpin/gridline/releases) page. -> ⚠️ Gridline is under active development. Expect rough edges and please [open issues](https://git.ranio.xyz/adrianbonpin/gridline/issues/new) when you hit them. +> ⚠️ Gridline is under active development. Expect rough edges and please [open issues](https://github.com/AdrianBonpin/gridline/issues/new) when you hit them. #### macOS signing & notarization -Gridline's macOS builds are **Developer-ID signed and notarized**, so macOS opens them without a Gatekeeper prompt. This is configured on the machine that runs `scripts/release-mac.sh` (macOS is built manually, not in CI). +Gridline's macOS builds are **Developer-ID signed and notarized by GitHub Actions**, so macOS opens them without a Gatekeeper prompt. **One-time setup** (only the repo owner needs to do this): 1. **Create a Developer ID Application certificate** — [developer.apple.com](https://developer.apple.com) → Certificates, Identifiers & Profiles → **+** → **Developer ID Application**. Generate a Certificate Signing Request from Keychain Access (Certificate Assistant → *Request a Certificate From a Certificate Authority*), upload it, download the `.cer`, and double-click to install into your login keychain. Verify with `security find-identity -v -p codesigning`. 2. **Create an App Store Connect API key** for notarization — [appstoreconnect.apple.com](https://appstoreconnect.apple.com) → Users and Access → **Integrations** → **App Store Connect API** → **+** (name it, *Developer* access). Download the `.p8` (shown once) and note the **Key ID** and **Issuer ID**. -3. **Save the notarization credentials** to `~/.config/gridline/notarize.env` (never committed): +3. **Add the signing secrets** to the repository (**Settings → Secrets and variables → Actions**): - ```bash - APPLE_API_KEY= - APPLE_API_ISSUER= - APPLE_API_KEY_PATH=/absolute/path/to/AuthKey_.p8 - ``` + | Secret | Value | + | :--------------------------- | :------------------------------------------------------------------------------------------------- | + | `APPLE_CERTIFICATE` | base64 of the exported Developer ID `.p12` — `base64 -i DeveloperID.p12 \| pbcopy` | + | `APPLE_CERTIFICATE_PASSWORD` | the password you set when exporting the `.p12` | + | `APPLE_SIGNING_IDENTITY` | e.g. `Developer ID Application: Your Name (TEAMID)` — from `security find-identity -v -p codesigning` | + | `KEYCHAIN_PASSWORD` | any throwaway password for the temporary CI keychain | + | `APPLE_API_KEY` | App Store Connect **Key ID** | + | `APPLE_API_ISSUER` | App Store Connect **Issuer ID** | + | `APPLE_API_KEY_CONTENT` | contents of the downloaded `AuthKey_.p8` | - (Alternatively, drop the `.p8` at `~/.appstoreconnect/private_keys/AuthKey_.p8` and omit `APPLE_API_KEY_PATH`.) + When these secrets are absent the macOS jobs still build, but the DMGs are ad-hoc signed and **not** notarized (users get the “Open Anyway” prompt). The CI re-signs the bundled PostgreSQL/MariaDB client binaries with the same Developer ID identity, because Apple rejects ad-hoc-signed nested executables during notarization. -`scripts/release-mac.sh` auto-detects the Developer ID identity from your keychain, signs both architectures, notarizes + staples them, and verifies the result before uploading. If the certificate or credentials are missing it fails with instructions (set `GRIDLINE_SKIP_NOTARIZE=1` to build signed-but-unnotarized for testing only). +`scripts/release-mac.sh` is the **local fallback** path (used before GitHub Actions took over macOS builds, and still handy for a signed build without burning CI minutes). It auto-detects the Developer ID identity from your keychain, reads notarization credentials from `~/.config/gridline/notarize.env` (`APPLE_API_KEY`, `APPLE_API_ISSUER`, `APPLE_API_KEY_PATH`), signs both architectures, notarizes + staples them, and verifies the result before uploading. If the certificate or credentials are missing it fails with instructions (set `GRIDLINE_SKIP_NOTARIZE=1` to build signed-but-unnotarized for testing only). **Windows** still shows a SmartScreen prompt (no Windows signing cert yet); **Linux** installs without a warning. @@ -344,12 +348,12 @@ Each release contains **one file per platform** — you only need the one that m | Your system | Download this | Notes | | :------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------- | -| macOS **Apple Silicon** (M1/M2/M3/M4…) | [Gridline_0.8.0_aarch64.dmg](https://git.ranio.xyz/adrianbonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_aarch64.dmg) | `aarch64` = Apple's own chip | -| macOS **Intel** | [Gridline_0.8.0_x64.dmg](https://git.ranio.xyz/adrianbonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_x64.dmg) | `x64` = Intel/AMD | -| **Windows** (most PCs) | [Gridline_0.8.0_x64-setup.exe](https://git.ranio.xyz/adrianbonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_x64-setup.exe) | The `.msi` is an alternate installer (for enterprises/IT admins) | -| **Debian / Ubuntu** | [Gridline_0.8.0_amd64.deb](https://git.ranio.xyz/adrianbonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_amd64.deb) | Install: `sudo apt install ./Gridline_0.8.0_amd64.deb` | -| **Fedora / RHEL / openSUSE** | [Gridline-0.8.0-1.x86_64.rpm](https://git.ranio.xyz/adrianbonpin/gridline/releases/download/v0.8.0/Gridline-0.8.0-1.x86_64.rpm) | Install: `sudo dnf install Gridline-0.8.0-1.x86_64.rpm` | -| **Any other Linux** | [Gridline_0.8.0_amd64.AppImage](https://git.ranio.xyz/adrianbonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_amd64.AppImage) | Works on every distro: `chmod +x` the file, then double-click it | +| macOS **Apple Silicon** (M1/M2/M3/M4…) | [Gridline_0.8.0_aarch64.dmg](https://github.com/AdrianBonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_aarch64.dmg) | `aarch64` = Apple's own chip | +| macOS **Intel** | [Gridline_0.8.0_x64.dmg](https://github.com/AdrianBonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_x64.dmg) | `x64` = Intel/AMD | +| **Windows** (most PCs) | [Gridline_0.8.0_x64-setup.exe](https://github.com/AdrianBonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_x64-setup.exe) | The `.msi` is an alternate installer (for enterprises/IT admins) | +| **Debian / Ubuntu** | [Gridline_0.8.0_amd64.deb](https://github.com/AdrianBonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_amd64.deb) | Install: `sudo apt install ./Gridline_0.8.0_amd64.deb` | +| **Fedora / RHEL / openSUSE** | [Gridline-0.8.0-1.x86_64.rpm](https://github.com/AdrianBonpin/gridline/releases/download/v0.8.0/Gridline-0.8.0-1.x86_64.rpm) | Install: `sudo dnf install Gridline-0.8.0-1.x86_64.rpm` | +| **Any other Linux** | [Gridline_0.8.0_amd64.AppImage](https://github.com/AdrianBonpin/gridline/releases/download/v0.8.0/Gridline_0.8.0_amd64.AppImage) | Works on every distro: `chmod +x` the file, then double-click it | **Not sure if your Mac is Intel or Apple Silicon?** Click the **Apple menu** → **About This Mac**. If it shows "Apple M1/M2/M3/M4…" download the `aarch64` file; if it shows an Intel chip, download `x64`. Downloading the wrong one won't run. @@ -363,7 +367,9 @@ git tag v0.7.15 git push origin v0.7.15 ``` -Gitea Actions (`.gitea/workflows/release.yml`) builds the **Linux and Windows** installers on the self-hosted runners, then opens a **draft release** on the [Releases](https://git.ranio.xyz/adrianbonpin/gridline/releases) page. **macOS is built manually** on the dev Mac and its DMGs uploaded to the same release via `scripts/release-mac.sh`. Review the draft and hit **Publish release**. +GitHub Actions (`.github/workflows/release.yml`) builds the **macOS (Apple Silicon + Intel), Windows, and Linux** installers in parallel and opens a **draft release** on the [Releases](https://github.com/AdrianBonpin/gridline/releases) page. Review the draft and hit **Publish release** — publishing triggers a follow-up job that bumps the Homebrew cask in [`AdrianBonpin/homebrew-gridline`](https://github.com/AdrianBonpin/homebrew-gridline) (requires the `HOMEBREW_TAP_TOKEN` secret; skipped when unset). + +The self-hosted Gitea mirror (`.gitea/workflows/release.yml`) still builds Linux and Windows for the Gitea release, and `scripts/release-mac.sh` can build macOS locally — both are kept as a fallback if GitHub is unavailable. Before tagging, make sure the version number is in sync across `desktop/package.json`, `desktop/src-tauri/Cargo.toml`, and `desktop/src-tauri/tauri.conf.json`, and update the **README download tables** (Download + Which file should I download?) to the new version's asset names. @@ -371,7 +377,7 @@ Before tagging, make sure the version number is in sync across `desktop/package. ```bash # 1. Clone the repository -git clone https://git.ranio.xyz/adrianbonpin/gridline.git +git clone https://github.com/AdrianBonpin/gridline.git cd gridline # 2. Install all workspace dependencies @@ -487,7 +493,7 @@ Highlights of what's next: Contributions, bug reports, and feature ideas are welcome. Gridline is Apache 2.0-licensed and intentionally stays open — no paywalled tiers, no bundled proprietary services. -- Open an issue via the **[template chooser](https://git.ranio.xyz/adrianbonpin/gridline/issues/new)** — pick **Bug report** (with an environment table so we can reproduce issues quickly), **Feature request**, or **Improvement** (UX polish for existing features). New issues are auto-assigned to the maintainer. +- Open an issue via the **[template chooser](https://github.com/AdrianBonpin/gridline/issues/new)** — pick **Bug report** (with an environment table so we can reproduce issues quickly), **Feature request**, or **Improvement** (UX polish for existing features). New issues are auto-assigned to the maintainer. - Submit a pull request. Keep Tauri commands thin, type IPC boundaries explicitly, and follow the existing Rust/React conventions. --- diff --git a/packaging/homebrew/gridline.rb.template b/packaging/homebrew/gridline.rb.template index 99e6904..48dc1dd 100644 --- a/packaging/homebrew/gridline.rb.template +++ b/packaging/homebrew/gridline.rb.template @@ -21,10 +21,10 @@ cask "gridline" do sha256 arm: "@ARM_SHA256@", intel: "@INTEL_SHA256@" - url "https://git.ranio.xyz/adrianbonpin/gridline/releases/download/v#{version}/Gridline_#{version}_#{arch}.dmg" + url "https://github.com/AdrianBonpin/gridline/releases/download/v#{version}/Gridline_#{version}_#{arch}.dmg" name "Gridline" desc "Open-source, cross-platform database GUI client for PostgreSQL" - homepage "https://git.ranio.xyz/adrianbonpin/gridline" + homepage "https://github.com/AdrianBonpin/gridline" depends_on macos: :monterey