diff --git a/src/PSLauncher.App/Resources/Theme.xaml b/src/PSLauncher.App/Resources/Theme.xaml
index 9a05fbd..b1ef735 100644
--- a/src/PSLauncher.App/Resources/Theme.xaml
+++ b/src/PSLauncher.App/Resources/Theme.xaml
@@ -94,6 +94,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+ TextWrapping="Wrap" />
+
-
-
-
+
+
-
+
+ /// Le bouton "..." ouvre son ContextMenu sur clic gauche (par défaut, ContextMenu ne s'ouvre qu'au clic droit).
+ ///
+ private void OnMoreMenuClick(object sender, RoutedEventArgs e)
+ {
+ if (sender is Button btn && btn.ContextMenu is { } menu)
+ {
+ menu.PlacementTarget = btn;
+ menu.Placement = PlacementMode.Bottom;
+ menu.IsOpen = true;
+ }
+ }
}
diff --git a/src/PSLauncher.App/Views/ReleaseNotesViewerDialog.xaml b/src/PSLauncher.App/Views/ReleaseNotesViewerDialog.xaml
new file mode 100644
index 0000000..48ad195
--- /dev/null
+++ b/src/PSLauncher.App/Views/ReleaseNotesViewerDialog.xaml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/PSLauncher.App/Views/ReleaseNotesViewerDialog.xaml.cs b/src/PSLauncher.App/Views/ReleaseNotesViewerDialog.xaml.cs
new file mode 100644
index 0000000..774e80c
--- /dev/null
+++ b/src/PSLauncher.App/Views/ReleaseNotesViewerDialog.xaml.cs
@@ -0,0 +1,37 @@
+using System.Windows;
+using System.Windows.Documents;
+using Markdig;
+using Markdig.Wpf;
+
+namespace PSLauncher.App.Views;
+
+public partial class ReleaseNotesViewerDialog : Window
+{
+ public ReleaseNotesViewerDialog(string version, string releaseNotesMarkdown)
+ {
+ InitializeComponent();
+
+ var pipeline = new MarkdownPipelineBuilder().UseSupportedExtensions().Build();
+ FlowDocument doc;
+ try
+ {
+ doc = Markdig.Wpf.Markdown.ToFlowDocument(releaseNotesMarkdown, pipeline);
+ }
+ catch
+ {
+ doc = new FlowDocument(new Paragraph(new Run(releaseNotesMarkdown)));
+ }
+
+ DataContext = new
+ {
+ Title = $"Notes de version — v{version}",
+ ReleaseNotesDocument = doc
+ };
+ }
+
+ private void OnClose(object sender, RoutedEventArgs e)
+ {
+ DialogResult = false;
+ Close();
+ }
+}