Release v1.2.0: Integrate osquery for enhanced system information
Major Features: - Integrated osquery for comprehensive system information gathering - Added OsqueryService for executing SQL queries against system tables - Implemented Osquery Console tab for interactive SQL queries System Info Improvements: - Enhanced system info collection using osquery tables - Added support for multiple GPU detection - Improved memory detection with proper GB formatting - Fixed OS Architecture detection (x64/x86) - Better network interface detection (IPv4 only) - Human-readable timestamp formatting UI/UX Enhancements: - Added window resizing with corner drag support - Implemented dynamic window sizing (SizeToContent) - Added ScrollViewer for content overflow - Improved IP address formatting with bullet points - Added field labels to all system info displays - Set minimum/maximum window size constraints Bug Fixes: - Fixed XAML StackPanel Spacing property issue - Merged duplicate MainWindow constructors - Fixed non-nullable field warnings - Fixed EventHandler nullability signatures - Removed redundant hostname/OS name fields - Fixed GPU registry query to detect all GPUs 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -11,11 +11,15 @@
|
||||
|
||||
mc:Ignorable="d"
|
||||
Title="PSG - Oversight"
|
||||
Height="500"
|
||||
Width="400"
|
||||
SizeToContent="Height"
|
||||
Width="420"
|
||||
MinHeight="400"
|
||||
MinWidth="350"
|
||||
MaxHeight="800"
|
||||
Icon="Assets/trayicon.ico"
|
||||
WindowStyle="None"
|
||||
AllowsTransparency="True"
|
||||
ResizeMode="CanResizeWithGrip"
|
||||
Background="Transparent"
|
||||
Foreground="{DynamicResource TextDarkBrush}">
|
||||
|
||||
@@ -225,7 +229,8 @@
|
||||
<TabItem Header="SysInfo" FontSize="16"/>
|
||||
<TabItem Header="InstalledApps" FontSize="16"/>
|
||||
<TabItem Header="Status" FontSize="16"/>
|
||||
</TabControl>
|
||||
<TabItem Header="Osquery" FontSize="16"/>
|
||||
</TabControl>
|
||||
|
||||
<!--
|
||||
<Button Grid.Column="1"
|
||||
@@ -263,61 +268,65 @@
|
||||
</TabControl.Resources>
|
||||
|
||||
<!-- 🔹 SysInfo Tab -->
|
||||
<TabItem Header="SysInfo">
|
||||
<StackPanel Margin="5,0,5,0" VerticalAlignment="Top">
|
||||
<TextBlock x:Name="HostnameTextBlock" Text="Hostname" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" />
|
||||
<TextBlock x:Name="OSNameTextBlock" Text="OS Name" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" />
|
||||
<TextBlock x:Name="OSVersionTextBlock" Text="OS Version" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" />
|
||||
<TextBlock x:Name="WindowsVersionTextBlock" Text="Windows Version" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" />
|
||||
<TextBlock x:Name="WindowsBuildTextBlock" Text="Windows Build" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" />
|
||||
<TextBlock x:Name="OSArchitectureTextBlock" Text="OS Architecture" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" />
|
||||
<TextBlock x:Name="ProcessorNameTextBlock" Text="Processor Name" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" />
|
||||
<TextBlock x:Name="ProcessorArchitectureTextBlock" Text="Processor Architecture" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" />
|
||||
<TabItem Header="SysInfo">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
|
||||
<StackPanel Margin="5,0,5,0" VerticalAlignment="Top">
|
||||
<TextBlock x:Name="HostnameTextBlock" Text="Hostname" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" />
|
||||
<TextBlock x:Name="OSNameTextBlock" Text="OS Name" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" />
|
||||
<TextBlock x:Name="OSVersionTextBlock" Text="OS Version" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" />
|
||||
<TextBlock x:Name="WindowsVersionTextBlock" Text="Windows Version" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" />
|
||||
<TextBlock x:Name="WindowsBuildTextBlock" Text="Windows Build" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" />
|
||||
<TextBlock x:Name="OSArchitectureTextBlock" Text="OS Architecture" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" />
|
||||
<TextBlock x:Name="ProcessorNameTextBlock" Text="Processor Name" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" />
|
||||
<TextBlock x:Name="ProcessorArchitectureTextBlock" Text="Processor Architecture" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" />
|
||||
|
||||
|
||||
<Button Content="Export to CSV"
|
||||
Style="{StaticResource CustomRaisedButton}"
|
||||
Background="{DynamicResource PrimaryBrush}"
|
||||
Foreground="{DynamicResource SelectedLightBrush}"
|
||||
Click="ExportToCsvButton_Click"
|
||||
Width="200"
|
||||
Margin="5"
|
||||
HorizontalAlignment="Left" />
|
||||
<!-- New fields -->
|
||||
<TextBlock x:Name="MemoryTextBlock" Text="Total Memory" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" />
|
||||
<TextBlock x:Name="GpuTextBlock" Text="GPU(s)" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" TextWrapping="Wrap" />
|
||||
<TextBlock x:Name="IpTextBlock" Text="IP Addresses" FontSize="12" Margin="5" Foreground="{DynamicResource TextBrush}" TextWrapping="Wrap" />
|
||||
<TextBlock x:Name="CollectedAtTextBlock" Text="Last updated: N/A" FontSize="12" Margin="8,10,5,5" Foreground="{DynamicResource TextDarkBrush}" FontStyle="Italic" />
|
||||
|
||||
<Button Content="Save System Info"
|
||||
Style="{StaticResource CustomRaisedButton}"
|
||||
Background="{DynamicResource PrimaryBrush}"
|
||||
Foreground="{DynamicResource SelectedLightBrush}"
|
||||
Click="StoreSystemInfoButton_Click"
|
||||
Width="200"
|
||||
Margin="5"
|
||||
HorizontalAlignment="Left" />
|
||||
<StackPanel Orientation="Horizontal" Margin="5,8,5,5" HorizontalAlignment="Left">
|
||||
<Button Content="Refresh now"
|
||||
Style="{StaticResource CustomRaisedButton}"
|
||||
Background="{DynamicResource PrimaryBrush}"
|
||||
Foreground="{DynamicResource SelectedLightBrush}"
|
||||
Click="RefreshButton_Click"
|
||||
Width="120"
|
||||
Margin="0,0,8,0" />
|
||||
<Button Content="Export to CSV"
|
||||
Style="{StaticResource CustomRaisedButton}"
|
||||
Background="{DynamicResource PrimaryBrush}"
|
||||
Foreground="{DynamicResource SelectedLightBrush}"
|
||||
Click="ExportToCsvButton_Click"
|
||||
Width="120"
|
||||
Margin="0,0,8,0" />
|
||||
<Button Content="Save System Info"
|
||||
Style="{StaticResource CustomRaisedButton}"
|
||||
Background="{DynamicResource PrimaryBrush}"
|
||||
Foreground="{DynamicResource SelectedLightBrush}"
|
||||
Click="StoreSystemInfoButton_Click"
|
||||
Width="120" />
|
||||
</StackPanel>
|
||||
|
||||
<CheckBox
|
||||
x:Name="IncludeInstalledAppsCheckBox"
|
||||
Content="Include installed Apps?"
|
||||
FontSize="14"
|
||||
Margin="5"
|
||||
Foreground="{DynamicResource TextDarkBrush}"
|
||||
Style="{StaticResource MaterialDesignCheckBox}" />
|
||||
<CheckBox x:Name="IncludeInstalledAppsCheckBox"
|
||||
Content="Include installed Apps?"
|
||||
FontSize="14"
|
||||
Margin="5"
|
||||
Foreground="{DynamicResource TextDarkBrush}"
|
||||
Style="{StaticResource MaterialDesignCheckBox}" />
|
||||
|
||||
<TextBlock x:Name="StatusTextBlock"
|
||||
FontSize="14"
|
||||
FontWeight="SemiBold"
|
||||
Margin="10,5"
|
||||
Foreground="{DynamicResource ErrorBrush}" />
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<TextBlock x:Name="StatusTextBlock"
|
||||
FontSize="14"
|
||||
FontWeight="SemiBold"
|
||||
Margin="10,5"
|
||||
Foreground="{DynamicResource ErrorBrush}" />
|
||||
|
||||
</StackPanel>
|
||||
</TabItem>
|
||||
|
||||
<!-- 🔹 InstalledApps Tab -->
|
||||
<!-- 🔹 InstalledApps Tab -->
|
||||
<TabItem Header="InstalledApps">
|
||||
<StackPanel Margin="10">
|
||||
<ListBox x:Name="InstalledAppsListBox" Height="300" Width="350" Margin="5">
|
||||
@@ -401,7 +410,53 @@
|
||||
</StackPanel>
|
||||
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
<!-- 🔹 Osquery Console Tab -->
|
||||
<TabItem Header="Osquery">
|
||||
<Grid Background="{DynamicResource BackgroundDarkBrush}" Margin="10">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock Text="Enter Osquery SQL:" FontWeight="Bold" Margin="0,0,0,4" Foreground="{DynamicResource TextLightBrush}"/>
|
||||
<TextBox x:Name="OsqueryQueryBox"
|
||||
Grid.Row="1"
|
||||
Height="60"
|
||||
TextWrapping="Wrap"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
Background="#252526"
|
||||
Foreground="White"
|
||||
FontFamily="Consolas"
|
||||
FontSize="14"
|
||||
AcceptsReturn="True"
|
||||
Text="SELECT * FROM system_info;" />
|
||||
|
||||
<Button Grid.Row="1"
|
||||
Content="Run Query"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Top"
|
||||
Width="120"
|
||||
Margin="0,4,0,0"
|
||||
Click="RunOsqueryQuery_Click"/>
|
||||
|
||||
<TextBox x:Name="OsqueryOutputBox"
|
||||
Grid.Row="2"
|
||||
Margin="0,10,0,0"
|
||||
TextWrapping="Wrap"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
Background="#1e1e1e"
|
||||
Foreground="#dcdcdc"
|
||||
FontFamily="Consolas"
|
||||
FontSize="13"
|
||||
AcceptsReturn="True"
|
||||
IsReadOnly="True"
|
||||
Text="Results will appear here..." />
|
||||
</Grid>
|
||||
</TabItem>
|
||||
|
||||
</TabControl>
|
||||
</Border>
|
||||
|
||||
<!-- ✅ Tray Icon (not inside Grid) -->
|
||||
|
||||
Reference in New Issue
Block a user