Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
b8e95e5
feat: migrate from Electron to Tauri v2
afonsojramos Dec 27, 2025
68272f8
fix: update test snapshots and fix Tailwind path
afonsojramos Dec 27, 2025
d4e5758
refactor: switch to Tailwind v4 Vite plugin
afonsojramos Dec 27, 2025
acdc495
feat: add Tauri HTTP plugin for API requests
afonsojramos Dec 27, 2025
b8fa894
fix: convert local emoji paths to Tauri asset URLs
afonsojramos Dec 27, 2025
9294f2a
fix: update UI state after zoom level changes
afonsojramos Dec 27, 2025
b7e30ee
test: update test infrastructure for Tauri environment
afonsojramos Dec 27, 2025
fbf6bf8
refactor: update core utilities for Tauri environment
afonsojramos Dec 27, 2025
200352c
refactor: update settings components for Tauri environment
afonsojramos Dec 27, 2025
087158f
refactor: update notification utilities for Tauri environment
afonsojramos Dec 27, 2025
7e429c2
refactor: update styling and configuration for Tauri
afonsojramos Dec 27, 2025
a6f78b3
refactor: remove Electron platform utilities
afonsojramos Dec 27, 2025
fcaa932
fix: update tests and handlers for Tauri migration
afonsojramos Dec 27, 2025
7c544c2
fix: resolve all lint warnings
afonsojramos Dec 27, 2025
1079784
fix: address PR review comments
afonsojramos Dec 28, 2025
6872ddb
ci: update workflows for Tauri and Vitest
afonsojramos Dec 28, 2025
e607829
test: fix skipped tests and reduce from 6 to 2
afonsojramos Dec 28, 2025
92ffcd2
refactor: replace println with log crate for proper logging
afonsojramos Dec 28, 2025
a2a427b
fix(ci): add lcov reporter for SonarQube coverage
afonsojramos Dec 29, 2025
8c2a4a9
fix(ci): correct rust-toolchain action reference
afonsojramos Dec 29, 2025
dea0230
fix(ci): correct tauri-action SHA reference
afonsojramos Dec 29, 2025
e6b29b2
refactor: revert useId changes in filter components
afonsojramos Dec 29, 2025
eab83ec
refactor: clean up icons and generate twemoji at build time
afonsojramos Dec 29, 2025
9f478c7
refactor: move twemoji to Rust build.rs and clean up scripts
afonsojramos Dec 29, 2025
6a7f53d
test: update Filters snapshot for hardcoded IDs
afonsojramos Dec 29, 2025
2ba47c8
fix: add devtools feature to Tauri
afonsojramos Dec 29, 2025
5c650aa
fix: remove empty desktopTemplate and pubkey causing build errors
afonsojramos Dec 29, 2025
3b956e3
fix: add cfg(target_os = "macos") to macOS-only code
afonsojramos Dec 29, 2025
d15559f
chore(deps): update Tauri to latest versions
afonsojramos Dec 29, 2025
a5c352f
feat: add updater signing public key
afonsojramos Dec 29, 2025
acf0307
fix(ci): pass signing key secrets to Tauri build
afonsojramos Dec 29, 2025
619a3cf
style: fix biome formatting
afonsojramos Dec 30, 2025
8bdcd48
fix: align handler types with GitifyNotification/GitifySubject archit…
afonsojramos Dec 30, 2025
cf5ae92
chore: remove twemoji SVGs from git tracking (generated at build time)
afonsojramos Dec 30, 2025
fd0f7d4
fix: regenerate Tauri icons from correct Gitify source
afonsojramos Dec 30, 2025
4be373c
chore: remove unused Tauri icon files
afonsojramos Dec 30, 2025
054fcf9
chore: remove unused src/index.html (replaced by root index.html for …
afonsojramos Dec 30, 2025
bb6a417
fix: address security and code review issues
afonsojramos Dec 30, 2025
975ddc6
fix: address security and code quality issues from review
afonsojramos Dec 30, 2025
0814f53
fix: address security issues from code review
afonsojramos Dec 31, 2025
3af2a5e
fix(security): add HTTP timeout and SSRF protection to OAuth
afonsojramos Dec 31, 2025
7964d8d
fix: increased contrast setting with System theme and improve tray po…
afonsojramos Dec 31, 2025
eac8ebb
Merge remote-tracking branch 'origin/main' into tauri
afonsojramos Dec 31, 2025
f0c4169
chore: add tauri extension
setchy Jan 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 8 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# GitHub OAuth Application Credentials
# Create an OAuth app at https://github.com/settings/developers
# Set the callback URL to: gitify://auth-callback
OAUTH_CLIENT_ID=your_github_oauth_client_id
OAUTH_CLIENT_SECRET=your_github_oauth_client_secret

# GitHub Personal Access Token for GraphQL Codegen
GITHUB_TOKEN=your_github_pat
2 changes: 0 additions & 2 deletions .env.template

This file was deleted.

2 changes: 1 addition & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
*.snap linguist-generated=true

# GraphQL Codegen outputs
+ src/renderer/utils/api/graphql/generated/**/*.ts linguist-generated=true
src/utils/api/graphql/generated/**/*.ts linguist-generated=true
114 changes: 41 additions & 73 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,98 +7,66 @@ permissions:
contents: read

jobs:
build-macos:
name: Build macOS (electron-builder)
runs-on: macos-latest
build-tauri:
name: Build Tauri App
strategy:
fail-fast: false
matrix:
include:
- platform: macos-latest
args: --target aarch64-apple-darwin
artifact-name: Gitify-dist-mac-arm64
- platform: macos-latest
args: --target x86_64-apple-darwin
artifact-name: Gitify-dist-mac-x64
- platform: ubuntu-22.04
args: ''
artifact-name: Gitify-dist-linux
- platform: windows-latest
args: ''
artifact-name: Gitify-dist-win

steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1

- name: Setup pnpm
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0

- name: Setup Node
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version-file: '.nvmrc'
cache: 'pnpm'

- run: pnpm install
- run: pnpm build
- run: pnpm package:macos --publish=never -c.mac.identity=null
env:
CSC_LINK: ${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}

- name: Clean up builds
run: rm -rfv dist/mac-universal

- name: Upload artifacts
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: Gitify-dist-mac
path: dist/
overwrite: true

build-windows:
name: Build Windows (electron-builder)
runs-on: windows-latest
runs-on: ${{ matrix.platform }}

steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1

- name: Setup pnpm
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0

- name: Setup Node
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version-file: '.nvmrc'
cache: 'pnpm'

- run: pnpm install
- run: pnpm build
- run: pnpm package:win --publish=never

- name: Clean up builds
run: Remove-Item dist/win-unpacked -Recurse

- name: Upload artifacts
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0

- name: Install Rust stable
uses: dtolnay/rust-toolchain@4be9e76fd7c4901c61fb841f559994984270fce7 # stable
with:
name: Gitify-dist-win
path: dist
overwrite: true
toolchain: stable
targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}

build-linux:
name: Build Linux (electron-builder)
runs-on: ubuntu-latest
- name: Install dependencies (ubuntu only)
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

steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- run: pnpm install

- name: Setup pnpm
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0

- name: Setup Node
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- name: Build Tauri app
uses: tauri-apps/tauri-action@e834788a94591d81e3ae0bd9ec06366f5afb8994 # v0.5.23
with:
node-version-file: '.nvmrc'
cache: 'pnpm'

- run: pnpm install
- run: pnpm build
- run: pnpm package:linux --publish=never

- name: Clean up builds
run: rm -rfv dist/linux-unpacked

args: ${{ matrix.args }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}

- name: Upload artifacts
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: Gitify-dist-linux
path: dist
name: ${{ matrix.artifact-name }}
path: src-tauri/target/**/bundle/**
overwrite: true
136 changes: 55 additions & 81 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -1,114 +1,88 @@
name: Publish

on:
on:
workflow_call:
workflow_dispatch: # For manually running release process to verify code-signing of artifacts

permissions:
contents: write

jobs:
release-macos:
name: Publish macOS (electron-builder)
runs-on: macos-latest
publish-tauri:
name: Publish Tauri App
strategy:
fail-fast: false
matrix:
include:
- platform: macos-latest
args: --target aarch64-apple-darwin
artifact-name: Gitify-release-mac-arm64
- platform: macos-latest
args: --target x86_64-apple-darwin
artifact-name: Gitify-release-mac-x64
- platform: ubuntu-22.04
args: ''
artifact-name: Gitify-release-linux
- platform: windows-latest
args: ''
artifact-name: Gitify-release-win

steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1

- name: Setup pnpm
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0

- name: Setup Node
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version-file: '.nvmrc'
cache: 'pnpm'

- run: pnpm install
- run: pnpm build
env:
OAUTH_CLIENT_ID: ${{ secrets.OAUTH_CLIENT_ID }}
OAUTH_CLIENT_SECRET: ${{ secrets.OAUTH_CLIENT_SECRET }}
- run: pnpm package:macos --publish onTagOrDraft
env:
APPLE_ID_USERNAME: ${{ secrets.APPLE_ID_USERNAME }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
APPLE_ID_TEAM_ID: ${{ secrets.APPLE_ID_TEAM_ID }}
CSC_LINK: ${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NOTARIZE: true

- name: Upload artifacts
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: Gitify-release-mac
path: dist/
overwrite: true

release-windows:
name: Publish Windows (electron-builder)
runs-on: windows-latest
runs-on: ${{ matrix.platform }}

steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1

- name: Setup pnpm
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0

- name: Setup Node
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version-file: '.nvmrc'
cache: 'pnpm'

- run: pnpm install
- run: pnpm build
env:
OAUTH_CLIENT_ID: ${{ secrets.OAUTH_CLIENT_ID }}
OAUTH_CLIENT_SECRET: ${{ secrets.OAUTH_CLIENT_SECRET }}
- run: pnpm package:win --publish onTagOrDraft
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload artifacts
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0

- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
name: Gitify-release-win
path: dist/
overwrite: true
targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}

release-linux:
name: Publish Linux (electron-builder)
runs-on: ubuntu-latest
- name: Install dependencies (ubuntu only)
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

steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- run: pnpm install

- name: Setup pnpm
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0

- name: Setup Node
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- name: Build and publish Tauri app
uses: tauri-apps/tauri-action@42bc3e23e6c7bdd4e28d7fb02e9bc03bd3aef95e # v0.5.23
with:
node-version-file: '.nvmrc'
cache: 'pnpm'

- run: pnpm install
- run: pnpm build
tagName: v__VERSION__
releaseName: 'Gitify v__VERSION__'
releaseBody: 'See the assets to download this version and install.'
releaseDraft: true
prerelease: false
args: ${{ matrix.args }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# macOS code signing
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
APPLE_ID: ${{ secrets.APPLE_ID_USERNAME }}
APPLE_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_ID_TEAM_ID }}
# Tauri update signing
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
# OAuth credentials for the GitHub App (embedded at build time)
OAUTH_CLIENT_ID: ${{ secrets.OAUTH_CLIENT_ID }}
OAUTH_CLIENT_SECRET: ${{ secrets.OAUTH_CLIENT_SECRET }}
- run: pnpm package:linux --publish onTagOrDraft
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}


- name: Upload artifacts
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: Gitify-release-linux
path: dist/
overwrite: true
name: ${{ matrix.artifact-name }}
path: src-tauri/target/**/bundle/**
overwrite: true
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:

- run: pnpm install
- run: pnpm tsc --noEmit
- run: pnpm test --coverage --runInBand --verbose
- run: pnpm test --coverage

- name: Archive code coverage results
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
Expand Down
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,7 @@ coverage
.env

# Mac Files
.DS_Store
.DS_Store

# Generated twemoji assets (copied from node_modules at build time)
src-tauri/assets/twemoji/
3 changes: 2 additions & 1 deletion .vscode/extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"bradlc.vscode-tailwindcss",
"GraphQL.vscode-graphql",
"GraphQL.vscode-graphql-syntax",
"SonarSource.sonarlint-vscode"
"SonarSource.sonarlint-vscode",
"tauri-apps.tauri-vscode"
]
}
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ pnpm install
> OAUTH_CLIENT_ID="123" OAUTH_CLIENT_SECRET="456789" pnpm build
> ```
Copy the `.env.template` to `.env` and add update `GITHUB_TOKEN` with a GitHub Personal Access Token. This is used for fetching the latest GitHub GraphQL API schema for `graphql-codegen`.
Copy the `.env.example` to `.env` and update `GITHUB_TOKEN` with a GitHub Personal Access Token. This is used for fetching the latest GitHub GraphQL API schema for `graphql-codegen`.
```shell
GITHUB_TOKEN=<some personal access token>
```
Expand Down
12 changes: 0 additions & 12 deletions babel.config.js

This file was deleted.

2 changes: 1 addition & 1 deletion biome.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://biomejs.dev/schemas/2.3.10/schema.json",
"files": {
"includes": ["**", "!**/generated/**/*"]
"includes": ["**", "!**/src/utils/api/graphql/generated"]
},
"assist": {
"actions": {
Expand Down
Loading
Loading