From e88ac33bd1174db169b69745bdb90f3d2a3ea05a Mon Sep 17 00:00:00 2001 From: Giuseppe Imperato Date: Fri, 20 Mar 2026 19:41:20 +0100 Subject: [PATCH 1/2] fix: add system tray icon, update README acknowledgements, add AppId MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CRITICAL FIX β€” app was invisible on launch: - settings.json had StartMinimized=true + no tray icon β†’ window hidden with no way to restore. Process running, window never visible. - Added H.NotifyIcon.WinUI v2.3.0 tray icon with: - DoubleClickCommand β†’ RestoreWindow() (show + activate window) - Context menu: "Mostra PassKey" / "Blocca Vault" / "Esci" - Window hide on close (Minimizza option) β†’ tray icon remains README: updated Acknowledgements text (Giuseppe Imperato) Installer: added AppId GUID for proper in-place upgrade detection Co-Authored-By: Claude Sonnet 4.6 --- Installer/PassKey.iss | 1 + README.md | 21 +++++++++++-------- src/PassKey.Desktop/MainWindow.xaml | 21 +++++++++++++++++++ src/PassKey.Desktop/MainWindow.xaml.cs | 24 ++++++++++++++++++++++ src/PassKey.Desktop/PassKey.Desktop.csproj | 1 + 5 files changed, 59 insertions(+), 9 deletions(-) diff --git a/Installer/PassKey.iss b/Installer/PassKey.iss index 2284cd1..8d77688 100644 --- a/Installer/PassKey.iss +++ b/Installer/PassKey.iss @@ -2,6 +2,7 @@ ; Builds the Windows installer for PassKey Desktop + BrowserHost [Setup] +AppId={{A7F3C2D1-8E4B-4F9A-B6D5-3C1E7A2F0D84} AppName=PassKey AppVersion=1.0.1 AppVerName=PassKey 1.0.1 diff --git a/README.md b/README.md index b837138..023f11e 100644 --- a/README.md +++ b/README.md @@ -176,15 +176,18 @@ PassKey handles sensitive cryptographic key material. Please read [SECURITY.md]( ## πŸ™ Acknowledgements -PassKey was designed and conceived by **Giuseppe Imperato**. - -The implementation was made possible with the extensive assistance of -[Claude](https://www.anthropic.com/claude) by Anthropic β€” an AI assistant -that helped architect, code-review, debug, and document the entire project -across dozens of development sessions. - -This project is a demonstration of human-AI collaboration in building -production-quality, security-critical software. +PassKey was conceived and designed by **Giuseppe Imperato**. + +Its realization was made possible through the extensive assistance of +[Claude](https://www.anthropic.com/claude) by Anthropicβ€”an AI assistant +that helped architect, write and review code, debug, and document the +entire project across dozens of development sessions (and 35 failed attempts). + +This project is a demonstration of human-AI collaboration in building a +project where the vision was clear, but the technical skills were distinctly +lacking. As the saying goes: "this is not the finish line, but rather a +starting point"; it is my hope, therefore, that this project can serve as +an inspiration for anyone. --- diff --git a/src/PassKey.Desktop/MainWindow.xaml b/src/PassKey.Desktop/MainWindow.xaml index 5dbf7ee..03b397c 100644 --- a/src/PassKey.Desktop/MainWindow.xaml +++ b/src/PassKey.Desktop/MainWindow.xaml @@ -2,8 +2,29 @@ x:Class="PassKey.Desktop.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:tb="using:H.NotifyIcon" Title="PassKey"> + + + + + + + + + + + diff --git a/src/PassKey.Desktop/MainWindow.xaml.cs b/src/PassKey.Desktop/MainWindow.xaml.cs index 4a2b367..5c0b318 100644 --- a/src/PassKey.Desktop/MainWindow.xaml.cs +++ b/src/PassKey.Desktop/MainWindow.xaml.cs @@ -1,4 +1,5 @@ using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; using Microsoft.Extensions.DependencyInjection; using Microsoft.UI; using Microsoft.UI.Xaml; @@ -29,6 +30,9 @@ public MainWindow() Activated += OnActivated; AppWindow.Closing += OnWindowClosing; + + // Doppio click sull'icona tray β†’ mostra la finestra + TrayIcon.DoubleClickCommand = new RelayCommand(RestoreWindow); } private async void OnWindowClosing(Microsoft.UI.Windowing.AppWindow sender, Microsoft.UI.Windowing.AppWindowClosingEventArgs args) @@ -183,4 +187,24 @@ private static ShellView CreateShellView(ShellViewModel vm) view.SetViewModel(vm); return view; } + + // ── Tray icon ──────────────────────────────────────────────────────────── + + public void RestoreWindow() + { + AppWindow.Show(); + Activate(); + } + + private void TrayShow_Click(object sender, RoutedEventArgs e) + => RestoreWindow(); + + private void TrayLock_Click(object sender, RoutedEventArgs e) + { + App.Services.GetRequiredService().Lock(); + RestoreWindow(); + } + + private void TrayExit_Click(object sender, RoutedEventArgs e) + => Application.Current.Exit(); } diff --git a/src/PassKey.Desktop/PassKey.Desktop.csproj b/src/PassKey.Desktop/PassKey.Desktop.csproj index 69fe5e0..16ab5f6 100644 --- a/src/PassKey.Desktop/PassKey.Desktop.csproj +++ b/src/PassKey.Desktop/PassKey.Desktop.csproj @@ -34,6 +34,7 @@ + From e83c8c0da996ef8c4327ac15d1e42ea030b46897 Mon Sep 17 00:00:00 2001 From: Giuseppe Imperato Date: Fri, 20 Mar 2026 19:43:22 +0100 Subject: [PATCH 2/2] fix: override SkiaSharp 2.80.3 with 2.88.9 (CVE GHSA-j7hp-h8jx-5ppr) CommunityToolkit.WinUI.UI.Controls.Markdown pulls in SkiaSharp 2.80.3 which has a known high-severity vulnerability. Forcing SkiaSharp 2.88.9 as a direct dependency overrides the transitive resolution to the safe version. Eliminates NU1903 warning in CI. Co-Authored-By: Claude Sonnet 4.6 --- src/PassKey.Desktop/PassKey.Desktop.csproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/PassKey.Desktop/PassKey.Desktop.csproj b/src/PassKey.Desktop/PassKey.Desktop.csproj index 16ab5f6..52fcfaa 100644 --- a/src/PassKey.Desktop/PassKey.Desktop.csproj +++ b/src/PassKey.Desktop/PassKey.Desktop.csproj @@ -27,6 +27,8 @@ + +