Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions Installer/PassKey.iss
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
21 changes: 12 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

---

Expand Down
21 changes: 21 additions & 0 deletions src/PassKey.Desktop/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -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">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ContentPresenter x:Name="RootPresenter" />
<tb:TaskbarIcon
x:Name="TrayIcon"
IconSource="Assets/PassKey.ico"
ToolTipText="PassKey">
<tb:TaskbarIcon.ContextFlyout>
<MenuFlyout>
<MenuFlyoutItem x:Name="TrayShowItem"
Text="Mostra PassKey"
Click="TrayShow_Click" />
<MenuFlyoutSeparator />
<MenuFlyoutItem x:Name="TrayLockItem"
Text="Blocca Vault"
Click="TrayLock_Click" />
<MenuFlyoutSeparator />
<MenuFlyoutItem x:Name="TrayExitItem"
Text="Esci"
Click="TrayExit_Click" />
</MenuFlyout>
</tb:TaskbarIcon.ContextFlyout>
</tb:TaskbarIcon>
</Grid>
</Window>
24 changes: 24 additions & 0 deletions src/PassKey.Desktop/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.UI;
using Microsoft.UI.Xaml;
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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<IVaultStateService>().Lock();
RestoreWindow();
}

private void TrayExit_Click(object sender, RoutedEventArgs e)
=> Application.Current.Exit();
}
3 changes: 3 additions & 0 deletions src/PassKey.Desktop/PassKey.Desktop.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,16 @@

<ItemGroup>
<PackageReference Include="CommunityToolkit.WinUI.UI.Controls.Markdown" Version="7.1.2" />
<!-- Override transitive SkiaSharp 2.80.3 (CVE GHSA-j7hp-h8jx-5ppr) with safe version -->
<PackageReference Include="SkiaSharp" Version="2.88.9" />
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.8.260101001" />
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.7463" />
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="10.0.2" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="10.0.2" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="10.0.2" />
<PackageReference Include="pt.KeePassLibStd" Version="2.50.0.4849" />
<PackageReference Include="H.NotifyIcon.WinUI" Version="2.3.0" />
</ItemGroup>

<ItemGroup>
Expand Down
Loading