Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
64 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
968c2f7
fix: merge main and fix test infrastructure
afonsojramos Jan 5, 2026
f552250
Merge remote-tracking branch 'origin/main' into tauri
afonsojramos Jan 5, 2026
6e1e514
style: fix biome formatting issues
afonsojramos Jan 5, 2026
c904dc4
Merge remote-tracking branch 'origin/main' into tauri
afonsojramos Jan 5, 2026
f13101d
feat: add resize grip for window resizing
afonsojramos Jan 5, 2026
8724344
Merge remote-tracking branch 'origin/main' into tauri
afonsojramos Jan 5, 2026
1878cc8
feat: add ErrorBoundary to prevent white screen on errors
afonsojramos Jan 5, 2026
b7a843f
fix: use correct logger function in ErrorBoundary
afonsojramos Jan 5, 2026
c8d89aa
refactor: remove ResizeGrip component and window mock
afonsojramos Jan 5, 2026
1f62b2f
refactor: use original 48x48 tray icons and simplify auth validation
afonsojramos Jan 6, 2026
0c4f576
refactor: remove browser fallbacks and web patterns from Tauri app
afonsojramos Jan 9, 2026
e687afa
refactor: use high-res 48x48 tray icons and remove unused assets
afonsojramos Jan 9, 2026
c6e0a50
fix: update test infrastructure for Tauri HTTP plugin
afonsojramos Jan 11, 2026
50e9469
merge: resolve conflicts with main branch
afonsojramos Jan 11, 2026
c74c4c1
fix: resolve lint errors and update biome schema version
afonsojramos Jan 11, 2026
9c4a984
build: update biome schema to match dependency version
afonsojramos Jan 11, 2026
750a5b4
merge: resolve conflicts with main branch
afonsojramos Jan 11, 2026
8c559a9
merge: resolve conflicts with main branch
afonsojramos Jan 19, 2026
c51981d
style: fix import ordering for Biome lint compliance
afonsojramos Jan 19, 2026
f994a5f
merge: sync with main branch (styled-components 6.3.8)
afonsojramos Jan 19, 2026
ea34732
merge: sync with main branch (@primer/react 38.7.1)
afonsojramos Jan 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed src-tauri/icons/tray/active-24x24-backup.png
Binary file not shown.
Binary file modified src-tauri/icons/tray/active-alternate.png
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For each of the icons, I have a Canva project which contains all the hi-res assets for Gitify. That may be helpful for creating new versions at various sizes. Just lmk

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/tray/active.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src-tauri/icons/tray/error-24x24-backup.png
Binary file not shown.
Binary file modified src-tauri/icons/tray/error.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src-tauri/icons/tray/idle-24x24-backup.png
Binary file not shown.
Binary file removed src-tauri/icons/tray/idle-alternate-24x24-backup.png
Binary file not shown.
Binary file modified src-tauri/icons/tray/idle-alternate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/tray/idle.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/tray/offline.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/tray/update.png
Copy link
Copy Markdown
Member

@setchy setchy Jan 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In main these "update available" icon variants are no longer used

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
34 changes: 0 additions & 34 deletions src-tauri/src/commands/auth.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,46 +24,12 @@ impl TokenStore {
/// 1. The hostname can be parsed as part of a valid HTTPS URL
/// 2. The hostname doesn't contain unsafe characters (null bytes, CRLF)
/// 3. The hostname matches expected patterns (github.com or enterprise servers)
/// 4. The hostname is not a private/internal network address (SSRF protection)
fn validate_oauth_hostname(hostname: &str) -> Result<(), String> {
// Check for null bytes and CRLF injection
if hostname.contains('\0') || hostname.contains('\r') || hostname.contains('\n') {
return Err("Invalid hostname: contains control characters".to_string());
}

// Block internal/private network addresses (SSRF protection)
let lower = hostname.to_lowercase();
if lower == "localhost"
|| lower.starts_with("127.")
|| lower.starts_with("10.")
|| lower.starts_with("192.168.")
|| lower.starts_with("172.16.")
|| lower.starts_with("172.17.")
|| lower.starts_with("172.18.")
|| lower.starts_with("172.19.")
|| lower.starts_with("172.20.")
|| lower.starts_with("172.21.")
|| lower.starts_with("172.22.")
|| lower.starts_with("172.23.")
|| lower.starts_with("172.24.")
|| lower.starts_with("172.25.")
|| lower.starts_with("172.26.")
|| lower.starts_with("172.27.")
|| lower.starts_with("172.28.")
|| lower.starts_with("172.29.")
|| lower.starts_with("172.30.")
|| lower.starts_with("172.31.")
|| lower.starts_with("169.254.")
|| lower.starts_with("0.")
|| lower.contains("metadata.google")
|| lower.contains("metadata.aws")
|| lower == "metadata"
|| lower.ends_with(".internal")
|| lower.ends_with(".local")
{
return Err("Invalid hostname: internal addresses not allowed".to_string());
}

// Try to parse as a URL to validate the hostname format
let test_url = format!("https://{}/login/oauth/access_token", hostname);
let parsed = Url::parse(&test_url).map_err(|e| format!("Invalid hostname format: {}", e))?;
Expand Down
2 changes: 1 addition & 1 deletion src-tauri/src/commands/tray.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ pub async fn update_tray_icon(
.map_err(|e| e.to_string())?;
let use_unread_active = *config.use_unread_active.lock().map_err(|e| e.to_string())?;

// Use 32x32 icons (correct size for macOS retina menubar)
// Use 48x48 icons (24pt @2x for macOS Retina menubar)
let icon_name = match tray_state {
TrayState::Idle => {
if use_alternate_idle {
Expand Down
2 changes: 1 addition & 1 deletion src-tauri/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ fn setup_tray(app: &mut App) -> Result<(), Box<dyn std::error::Error>> {
.resource_dir()
.map_err(|e| format!("Failed to get resource directory: {}", e))?;

// Use 32x32 icons (correct size for macOS retina menubar)
// Use 48x48 icons (24pt @2x for macOS Retina menubar)
let icon_path = resource_dir.join("icons/tray/idle.png");

let img = image::open(&icon_path)
Expand Down
1 change: 0 additions & 1 deletion src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
"decorations": false,
"alwaysOnTop": true,
"skipTaskbar": true,
"transparent": true,
"hiddenTitle": true,
"focus": false,
"tabbingIdentifier": "gitify"
Expand Down
Loading