diff --git a/CHANGELOG.md b/CHANGELOG.md index c225e20..57345c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **Configurable backup retention.** Choose how many timestamped store backups to keep (default 20) from Settings → "Backups to keep". The count is honoured on the next write-triggered backup, with no restart required. +- **Delete a CLI.** A "Delete CLI" action on the CLI view removes an empty CLI + after confirmation. Deletion uses must-be-empty semantics: a CLI with visible + (non-trashed) snips can't be deleted until those snips are removed. The CLI's + icon asset and any leftover trashed snips are cleaned up with it. ## [0.1.0-alpha.1] - 2026-05-30 diff --git a/src/Snipdeck.App/Services/WindowsShellInteractions.cs b/src/Snipdeck.App/Services/WindowsShellInteractions.cs index da9d4ce..f9c7ece 100644 --- a/src/Snipdeck.App/Services/WindowsShellInteractions.cs +++ b/src/Snipdeck.App/Services/WindowsShellInteractions.cs @@ -47,6 +47,19 @@ public async Task ConfirmAsync(string title, string message, string confir return result == ContentDialogResult.Primary; } + public async Task NotifyAsync(string title, string message, string buttonText = "OK") + { + var dialog = new ContentDialog + { + Title = title, + Content = message, + CloseButtonText = buttonText, + DefaultButton = ContentDialogButton.Close, + XamlRoot = GetXamlRoot(), + }; + _ = await dialog.ShowAsync(); + } + public async Task EditSnipAsync(Snip snip, IReadOnlyList availableClis) { ArgumentNullException.ThrowIfNull(snip); diff --git a/src/Snipdeck.App/Views/ShellPage.xaml b/src/Snipdeck.App/Views/ShellPage.xaml index b797d94..196ece1 100644 --- a/src/Snipdeck.App/Views/ShellPage.xaml +++ b/src/Snipdeck.App/Views/ShellPage.xaml @@ -96,6 +96,7 @@ +