From de4b37dc26a314a8e8f84bb95071caf71201c087 Mon Sep 17 00:00:00 2001 From: Stuart Meeks Date: Sun, 7 Jun 2026 06:11:43 +0000 Subject: [PATCH 1/3] Add Snipdeck branding: app icon, tile logo, README logo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The app now carries its own identity — a faceted green chevron — in place of the default .NET exe icon, the generated tray identicon and the blank window icon. - designs/: source SVGs (snipdeck-icon.svg glyph, snipdeck-tile.svg tile) - Assets/Snipdeck.ico: multi-size ICO (16-256, 256 PNG-compressed) rendered from the glyph; regeneration steps in Assets/README.md - csproj: ApplicationIcon for the exe + ship the ico to output - MainWindow: AppWindow.SetIcon for Alt-Tab/taskbar - Tray: load the shipped ico instead of generating an identicon, dropping the PNG-to-ICO wrapper and the IPathProvider dependency - release.yml: vpk pack --icon so Setup.exe and shortcuts match - README: tile logo at the top Co-Authored-By: Claude Opus 4.8 --- .github/workflows/release.yml | 1 + CHANGELOG.md | 8 ++ README.md | 4 + designs/snipdeck-icon.svg | 73 ++++++++++++++++ designs/snipdeck-tile.svg | 79 ++++++++++++++++++ src/Snipdeck.App/Assets/README.md | 21 +++++ src/Snipdeck.App/Assets/Snipdeck.ico | Bin 0 -> 135578 bytes src/Snipdeck.App/MainWindow.xaml.cs | 4 + .../Services/HNotifyIconTrayService.cs | 65 ++------------ src/Snipdeck.App/Snipdeck.App.csproj | 8 ++ 10 files changed, 204 insertions(+), 59 deletions(-) create mode 100644 designs/snipdeck-icon.svg create mode 100644 designs/snipdeck-tile.svg create mode 100644 src/Snipdeck.App/Assets/Snipdeck.ico diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dddd695..6820743 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -103,6 +103,7 @@ jobs: --mainExe Snipdeck.App.exe ` --packTitle "${{ env.PACK_TITLE }}" ` --packAuthors "${{ env.PACK_AUTHORS }}" ` + --icon src/Snipdeck.App/Assets/Snipdeck.ico ` --channel $channel ` --outputDir Releases diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f23a20..2139907 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added +- **Snipdeck branding.** The app now ships with its own icon — a faceted green + chevron — replacing the default .NET exe icon, the generated identicon in the + system tray, and the blank window icon. The icon appears on the executable, + taskbar, Start menu, Alt-Tab, window title bar, system tray and the Velopack + installer. The README carries the new tile logo, and the source SVGs live in + `designs/`. + ## [0.1.0] - 2026-06-01 ### Added diff --git a/README.md b/README.md index 015b956..28180e9 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ +

+ Snipdeck +

+ # Snipdeck A native Windows desktop app for managing parameterised CLI command snippets diff --git a/designs/snipdeck-icon.svg b/designs/snipdeck-icon.svg new file mode 100644 index 0000000..91c2b4e --- /dev/null +++ b/designs/snipdeck-icon.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/designs/snipdeck-tile.svg b/designs/snipdeck-tile.svg new file mode 100644 index 0000000..71d88f4 --- /dev/null +++ b/designs/snipdeck-tile.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Snipdeck.App/Assets/README.md b/src/Snipdeck.App/Assets/README.md index adf89aa..6eebc40 100644 --- a/src/Snipdeck.App/Assets/README.md +++ b/src/Snipdeck.App/Assets/README.md @@ -1,5 +1,26 @@ # Assets +## App icon + +`Snipdeck.ico` is the multi-size app icon (16/20/24/32/48/64/128/256, the 256 +entry PNG-compressed), rendered from `designs/snipdeck-icon.svg`. It is embedded +in the exe (``), set on the window (`AppWindow.SetIcon`), used +by the tray icon and passed to `vpk pack --icon` for the installer. + +To regenerate after the SVG changes (the glyph is 430×507, so each render is +height-fitted and centred on a square page): + +```sh +for s in 16 20 24 32 48 64 128 256; do + left=$(awk "BEGIN{printf \"%.2f\", ($s-430/507*$s)/2}") + rsvg-convert -h $s --page-width $s --page-height $s --left $left --top 0 \ + designs/snipdeck-icon.svg -o glyph-$s.png +done +icotool -c -o src/Snipdeck.App/Assets/Snipdeck.ico \ + glyph-16.png glyph-20.png glyph-24.png glyph-32.png glyph-48.png \ + glyph-64.png glyph-128.png -r glyph-256.png +``` + ## Home hero images (theme-specific) The Home page hero banner uses a theme-specific image: diff --git a/src/Snipdeck.App/Assets/Snipdeck.ico b/src/Snipdeck.App/Assets/Snipdeck.ico new file mode 100644 index 0000000000000000000000000000000000000000..8d54cd57de4bfd3d194086c394c038d0c5aaf137 GIT binary patch literal 135578 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 wPB@&>F?ysSkK)m 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 WriteTrayIconFileAsync() - { - var pngBytes = IdenticonService.GeneratePng(_iconSeed, size: _trayIconPixels); - var icoBytes = WrapPngAsIco(pngBytes, _trayIconPixels, _trayIconPixels); - _ = Directory.CreateDirectory(_paths.AppDataDirectory); - var path = Path.Combine(_paths.AppDataDirectory, _trayIconFileName); - await File.WriteAllBytesAsync(path, icoBytes); - return path; - } - - // Modern Windows accepts a PNG embedded inside an ICO container — - // just a 6-byte ICONDIR header plus a 16-byte ICONDIRENTRY pointing - // at the PNG bytes. Format ref: ICONDIR / ICONDIRENTRY on MSDN. - private static byte[] WrapPngAsIco(byte[] png, int width, int height) - { - const int headerSize = 6; - const int entrySize = 16; - const int dataOffset = headerSize + entrySize; - - var ico = new byte[dataOffset + png.Length]; - var span = ico.AsSpan(); - - // ICONDIR: reserved(0), type(1 = icon), count(1) - BinaryPrimitives.WriteUInt16LittleEndian(span[2..4], 1); - BinaryPrimitives.WriteUInt16LittleEndian(span[4..6], 1); - - // ICONDIRENTRY: width/height bytes are 0 for >=256, otherwise the literal size. - ico[6] = width >= 256 ? (byte)0 : (byte)width; - ico[7] = height >= 256 ? (byte)0 : (byte)height; - // ico[8] colorCount = 0 (>= 8bpp), ico[9] reserved = 0 — already zero. - BinaryPrimitives.WriteUInt16LittleEndian(span[10..12], 1); // planes - BinaryPrimitives.WriteUInt16LittleEndian(span[12..14], 32); // bits per pixel - BinaryPrimitives.WriteUInt32LittleEndian(span[14..18], (uint)png.Length); - BinaryPrimitives.WriteUInt32LittleEndian(span[18..22], dataOffset); - - Buffer.BlockCopy(png, 0, ico, dataOffset, png.Length); - return ico; - } - private sealed partial class RelayCommand(Action execute) : System.Windows.Input.ICommand { #pragma warning disable CS0067 // 'CanExecuteChanged' is never used — relay never changes. diff --git a/src/Snipdeck.App/Snipdeck.App.csproj b/src/Snipdeck.App/Snipdeck.App.csproj index e678005..ae0767b 100644 --- a/src/Snipdeck.App/Snipdeck.App.csproj +++ b/src/Snipdeck.App/Snipdeck.App.csproj @@ -22,6 +22,10 @@ true + + Assets\Snipdeck.ico @@ -39,6 +43,10 @@ + + + + From 2abf1788e632cadef506058927de858bec946a44 Mon Sep 17 00:00:00 2001 From: Stuart Meeks Date: Sun, 7 Jun 2026 06:22:40 +0000 Subject: [PATCH 2/3] Fix taskbar icon and add glyph to the custom title bar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AppWindow.SetIcon alone does not reliably propagate to the taskbar button — call the explicit SetTaskbarIcon (WinAppSDK 1.6+) as well. The custom title bar now shows the chevron glyph between the hamburger and the app name, from a new TitleBarGlyph.png (64 px render of the glyph SVG, displayed at 16 logical px). Co-Authored-By: Claude Opus 4.8 --- CHANGELOG.md | 6 +++--- src/Snipdeck.App/Assets/README.md | 9 +++++++-- src/Snipdeck.App/Assets/TitleBarGlyph.png | Bin 0 -> 4729 bytes src/Snipdeck.App/MainWindow.xaml | 4 ++++ src/Snipdeck.App/MainWindow.xaml.cs | 10 +++++++--- src/Snipdeck.App/Snipdeck.App.csproj | 1 + 6 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 src/Snipdeck.App/Assets/TitleBarGlyph.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 2139907..b5374bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,9 +11,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **Snipdeck branding.** The app now ships with its own icon — a faceted green chevron — replacing the default .NET exe icon, the generated identicon in the system tray, and the blank window icon. The icon appears on the executable, - taskbar, Start menu, Alt-Tab, window title bar, system tray and the Velopack - installer. The README carries the new tile logo, and the source SVGs live in - `designs/`. + taskbar, Start menu, Alt-Tab, window title bar (beside the app name), system + tray and the Velopack installer. The README carries the new tile logo, and the + source SVGs live in `designs/`. ## [0.1.0] - 2026-06-01 diff --git a/src/Snipdeck.App/Assets/README.md b/src/Snipdeck.App/Assets/README.md index 6eebc40..f746dee 100644 --- a/src/Snipdeck.App/Assets/README.md +++ b/src/Snipdeck.App/Assets/README.md @@ -4,8 +4,13 @@ `Snipdeck.ico` is the multi-size app icon (16/20/24/32/48/64/128/256, the 256 entry PNG-compressed), rendered from `designs/snipdeck-icon.svg`. It is embedded -in the exe (``), set on the window (`AppWindow.SetIcon`), used -by the tray icon and passed to `vpk pack --icon` for the installer. +in the exe (``), set on the window (`AppWindow.SetIcon` + +`SetTaskbarIcon`), used by the tray icon and passed to `vpk pack --icon` for +the installer. + +`TitleBarGlyph.png` is the same glyph at natural aspect, 64 px tall, shown at +16 logical px in the custom title bar (`rsvg-convert -h 64 +designs/snipdeck-icon.svg -o TitleBarGlyph.png`). To regenerate after the SVG changes (the glyph is 430×507, so each render is height-fitted and centred on a square page): diff --git a/src/Snipdeck.App/Assets/TitleBarGlyph.png b/src/Snipdeck.App/Assets/TitleBarGlyph.png new file mode 100644 index 0000000000000000000000000000000000000000..d4cdb9d2ee042b3f62fa105956923179fca9678c GIT binary patch literal 4729 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 + + From 9f93ca39243a5430192d8baa395525e4d2fe159d Mon Sep 17 00:00:00 2001 From: Stuart Meeks Date: Sun, 7 Jun 2026 06:27:35 +0000 Subject: [PATCH 3/3] Brighten the Home hero eyebrow to the primary text colour "Next Iteration" was the muted secondary grey; use TextFillColorPrimaryBrush so it reads white in Dark theme while staying legible on the light hero image in Light theme. Co-Authored-By: Claude Opus 4.8 --- CHANGELOG.md | 4 ++++ src/Snipdeck.App/Views/ShellPage.xaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5374bc..93ba988 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 tray and the Velopack installer. The README carries the new tile logo, and the source SVGs live in `designs/`. +### Changed +- The "Next Iteration" eyebrow on the Home hero now uses the primary text + colour (white in Dark theme) instead of the muted secondary grey. + ## [0.1.0] - 2026-06-01 ### Added diff --git a/src/Snipdeck.App/Views/ShellPage.xaml b/src/Snipdeck.App/Views/ShellPage.xaml index d5e9268..9e2c507 100644 --- a/src/Snipdeck.App/Views/ShellPage.xaml +++ b/src/Snipdeck.App/Views/ShellPage.xaml @@ -75,7 +75,7 @@ + Foreground="{ThemeResource TextFillColorPrimaryBrush}" />