Compare commits

..
4 changed files with 41 additions and 23 deletions
+12 -11
View File
@@ -1,19 +1,20 @@
<Application x:Class="ClaudeCheckerWindows.App" <Application x:Class="ClaudeCheckerWindows.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:po="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
ShutdownMode="OnExplicitShutdown"> ShutdownMode="OnExplicitShutdown">
<Application.Resources> <Application.Resources>
<SolidColorBrush x:Key="BackgroundBrush" Color="#F3F3F3"/> <SolidColorBrush x:Key="BackgroundBrush" Color="#F3F3F3" po:Freeze="False"/>
<SolidColorBrush x:Key="CardBrush" Color="#FFFFFF"/> <SolidColorBrush x:Key="CardBrush" Color="#FFFFFF" po:Freeze="False"/>
<SolidColorBrush x:Key="AccentBrush" Color="#F97316"/> <SolidColorBrush x:Key="AccentBrush" Color="#F97316" po:Freeze="False"/>
<SolidColorBrush x:Key="TextBrush" Color="#1C1C1C"/> <SolidColorBrush x:Key="TextBrush" Color="#1C1C1C" po:Freeze="False"/>
<SolidColorBrush x:Key="SecondaryBrush" Color="#6E6E6E"/> <SolidColorBrush x:Key="SecondaryBrush" Color="#6E6E6E" po:Freeze="False"/>
<SolidColorBrush x:Key="BorderBrush" Color="#E0E0E0"/> <SolidColorBrush x:Key="BorderBrush" Color="#E0E0E0" po:Freeze="False"/>
<SolidColorBrush x:Key="BlueBrush" Color="#0078D4"/> <SolidColorBrush x:Key="BlueBrush" Color="#0078D4" po:Freeze="False"/>
<SolidColorBrush x:Key="ButtonBrush" Color="#FFFFFF"/> <SolidColorBrush x:Key="ButtonBrush" Color="#FFFFFF" po:Freeze="False"/>
<SolidColorBrush x:Key="SurfaceBrush" Color="#FAFAFA"/> <SolidColorBrush x:Key="SurfaceBrush" Color="#FAFAFA" po:Freeze="False"/>
<SolidColorBrush x:Key="BannerBgBrush" Color="#E8F2FB"/> <SolidColorBrush x:Key="BannerBgBrush" Color="#E8F2FB" po:Freeze="False"/>
<SolidColorBrush x:Key="BannerBorderBrush" Color="#B3D6F5"/> <SolidColorBrush x:Key="BannerBorderBrush" Color="#B3D6F5" po:Freeze="False"/>
<Style x:Key="HeaderText" TargetType="TextBlock"> <Style x:Key="HeaderText" TargetType="TextBlock">
<Setter Property="FontSize" Value="10"/> <Setter Property="FontSize" Value="10"/>
+13
View File
@@ -17,6 +17,19 @@ public partial class App : Application
protected override void OnStartup(StartupEventArgs e) protected override void OnStartup(StartupEventArgs e)
{ {
var logPath = System.IO.Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
"ClaudeChecker", "startup_crash.txt");
AppDomain.CurrentDomain.UnhandledException += (_, ex) =>
System.IO.File.WriteAllText(logPath, ex.ExceptionObject?.ToString() ?? "unknown");
DispatcherUnhandledException += (_, ex) =>
{
System.IO.File.WriteAllText(logPath, ex.Exception?.ToString() ?? "unknown");
ex.Handled = false;
};
base.OnStartup(e); base.OnStartup(e);
ThemeManager.Initialize(); ThemeManager.Initialize();
SetupTray(); SetupTray();
+8 -10
View File
@@ -2,6 +2,7 @@ using Microsoft.Win32;
using System; using System;
using System.Windows; using System.Windows;
using System.Windows.Media; using System.Windows.Media;
using System.Windows.Threading;
namespace ClaudeCheckerWindows; namespace ClaudeCheckerWindows;
@@ -14,20 +15,17 @@ public static class ThemeManager
{ {
IsDark = ReadIsDark(); IsDark = ReadIsDark();
Apply(); Apply();
SystemEvents.UserPreferenceChanged += OnPreferenceChanged;
}
private static void OnPreferenceChanged(object sender, UserPreferenceChangedEventArgs e) var timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(5) };
{ timer.Tick += (_, _) =>
if (e.Category != UserPreferenceCategory.General) return;
var nowDark = ReadIsDark();
if (nowDark == IsDark) return;
IsDark = nowDark;
Application.Current.Dispatcher.Invoke(() =>
{ {
var nowDark = ReadIsDark();
if (nowDark == IsDark) return;
IsDark = nowDark;
Apply(); Apply();
ThemeChanged?.Invoke(); ThemeChanged?.Invoke();
}); };
timer.Start();
} }
private static bool ReadIsDark() private static bool ReadIsDark()
+8 -2
View File
@@ -1,5 +1,6 @@
using System; using System;
using System.Diagnostics; using System.Diagnostics;
using System.Reflection;
using System.IO; using System.IO;
using System.IO.Compression; using System.IO.Compression;
using System.Net.Http; using System.Net.Http;
@@ -55,7 +56,11 @@ public class UpdateManager : INotifyPropertyChanged
public string CurrentVersion => public string CurrentVersion =>
System.Reflection.Assembly.GetExecutingAssembly() System.Reflection.Assembly.GetExecutingAssembly()
.GetName().Version?.ToString(3) ?? "1.0.0"; .GetCustomAttribute<System.Reflection.AssemblyInformationalVersionAttribute>()
?.InformationalVersion.Split('+')[0]
?? "1.0.0";
private bool IsPreReleaseBuild => CurrentVersion.Contains('-');
public UpdateManager() public UpdateManager()
{ {
@@ -91,7 +96,8 @@ public class UpdateManager : INotifyPropertyChanged
LatestBetaVersion = beta.Version; LatestBetaVersion = beta.Version;
BetaAvailable = true; BetaAvailable = true;
if (BetaChannel && IsNewer(beta.Version, LatestVersion)) // Show beta update if user opted in, or if they're already running a beta
if ((BetaChannel || IsPreReleaseBuild) && IsNewer(beta.Version, LatestVersion))
{ {
LatestVersion = beta.Version; LatestVersion = beta.Version;
ReleaseNotes = beta.Notes ?? ""; ReleaseNotes = beta.Notes ?? "";