From 9df908f76cdfecb8cd4d3b79f0a1bf58e5af5128 Mon Sep 17 00:00:00 2001 From: Daniel Gorgonha Date: Sun, 2 Aug 2026 21:28:01 -0300 Subject: [PATCH 1/2] feat(desktop): CI to build+attach installers on tag + a 'Download' CTA on the landing - .github/workflows/desktop-release.yml: a tauri-action matrix (Windows/macOS/Linux) that builds the desktop installers on a version tag (or manual dispatch) and attaches them to a DRAFT release for review before publishing. Does not touch the existing ci.yml. - Landing: a 'Download desktop app' CTA linking to the latest GitHub release, where a visitor picks their OS installer. i18n EN + PT-BR. The installers themselves are produced by the runners (Windows/macOS/Linux); the tag push is what validates the workflow end to end. --- .github/workflows/desktop-release.yml | 62 +++++++++++++++++++++++++++ ui/src/i18n/en.ts | 1 + ui/src/i18n/pt-BR.ts | 1 + ui/src/screens/Intro.tsx | 4 ++ 4 files changed, 68 insertions(+) create mode 100644 .github/workflows/desktop-release.yml diff --git a/.github/workflows/desktop-release.yml b/.github/workflows/desktop-release.yml new file mode 100644 index 0000000..cdf3f3f --- /dev/null +++ b/.github/workflows/desktop-release.yml @@ -0,0 +1,62 @@ +# Builds the Tauri desktop installers on each platform and attaches them to a (draft) release. +# Triggered by a version tag (v*) or manually. The draft lets a human review before publishing. +name: Desktop release + +on: + push: + tags: ['v*'] + workflow_dispatch: + inputs: + tag: + description: 'Tag to build and attach the installers to (e.g. v0.2.0)' + required: true + +permissions: + contents: write + +jobs: + build: + strategy: + fail-fast: false + matrix: + include: + - platform: windows-latest # .msi + .exe (NSIS) + - platform: ubuntu-22.04 # .deb + .AppImage + - platform: macos-latest # .dmg (Apple Silicon) + runs-on: ${{ matrix.platform }} + steps: + - uses: actions/checkout@v4 + + - name: Node + uses: actions/setup-node@v4 + with: + node-version: 24 + + - name: Rust + uses: dtolnay/rust-toolchain@stable + + - name: Cache Rust + uses: Swatinem/rust-cache@v2 + with: + workspaces: src-tauri -> target + + - name: Linux deps (webkit for the Tauri webview) + if: matrix.platform == 'ubuntu-22.04' + run: | + sudo apt-get update + sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf + + - name: Frontend deps + run: npm --prefix ui ci + + - name: Build + attach installers + uses: tauri-apps/tauri-action@v0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + projectPath: . + tagName: ${{ inputs.tag || github.ref_name }} + releaseName: Konclave ${{ inputs.tag || github.ref_name }} + releaseBody: 'Desktop installers (Windows / macOS / Linux). See the notes below.' + releaseDraft: true + prerelease: true diff --git a/ui/src/i18n/en.ts b/ui/src/i18n/en.ts index cdd139e..bc3c992 100644 --- a/ui/src/i18n/en.ts +++ b/ui/src/i18n/en.ts @@ -160,6 +160,7 @@ export const en: Record = { 'landing.sub': 'A group looks after a fund **together**: create the vault, approve payments by quorum and run a private payroll. **Private outside, transparent inside.** No command line, no pasting codes, no trusting a single person.', 'landing.ctaHow': 'See how it works', 'landing.ctaVaults': 'My vaults', + 'landing.ctaDownload': 'Download desktop app', 'landing.navNet': 'Devices', 'landing.navSigner': 'Sign', 'landing.navProof': 'Proof', diff --git a/ui/src/i18n/pt-BR.ts b/ui/src/i18n/pt-BR.ts index 71a5082..b6db700 100644 --- a/ui/src/i18n/pt-BR.ts +++ b/ui/src/i18n/pt-BR.ts @@ -160,6 +160,7 @@ export const ptBR: Record = { 'landing.sub': 'Um grupo cuida de um fundo **junto**: cria o cofre, aprova pagamentos por quórum e faz uma folha privada. **Privado por fora, transparente por dentro.** Sem terminal, sem colar códigos, sem confiar em uma pessoa só.', 'landing.ctaHow': 'Ver como funciona', 'landing.ctaVaults': 'Meus cofres', + 'landing.ctaDownload': 'Baixar app desktop', 'landing.navNet': 'Dispositivos', 'landing.navSigner': 'Assinar', 'landing.navProof': 'Prova', diff --git a/ui/src/screens/Intro.tsx b/ui/src/screens/Intro.tsx index af5c2f0..6515c01 100644 --- a/ui/src/screens/Intro.tsx +++ b/ui/src/screens/Intro.tsx @@ -94,6 +94,10 @@ export default function Intro() { {t('landing.ctaHow')} {t('landing.ctaVaults')} + + {t('landing.ctaDownload')} + + {t('landing.heroTrust')} From 5ea8d52528da2439b84c8b0e02408fff98d1c148 Mon Sep 17 00:00:00 2001 From: Daniel Gorgonha Date: Sun, 2 Aug 2026 21:29:50 -0300 Subject: [PATCH 2/2] chore(tauri): bump bundle version to 0.2.0 (the desktop release line) --- src-tauri/tauri.conf.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 7b1b949..25e8a79 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Konclave", - "version": "0.1.0", + "version": "0.2.0", "identifier": "app.konclave.desktop", "build": { "frontendDist": "../ui/dist",