v0.3.0: CI dotnet 8.0.424 pinned with isolated install
CI / build (push) Canceled after 0s
CI / test (push) Canceled after 0s
CI / release (push) Canceled after 0s

- Pin .NET SDK to 8.0.424 in all CI jobs to avoid floating channel drift

- Install SDK to runner temp via DOTNET_INSTALL_DIR to bypass

  C:\\Program Files\\dotnet overwrite/extract conflicts on Gitea Windows runners

- Simplify release job to dotnet publish + upload-artifact

- Exclude memory-bank/ via .gitignore (internal dev memory stays local)
This commit is contained in:
fristy committed 2026-09-05 00:22:09 +03:00
commit acc34d9543
18 files changed
+4122

No files matched your search

+632
View File
@@ -0,0 +1,632 @@
<Window x:Class="RgbLedStripController.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="RGB Led Strip Controller"
Height="800"
Width="1320"
MinWidth="1040"
MinHeight="700"
WindowStartupLocation="CenterScreen">
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
<DataTemplate x:Key="EffectOptionTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Border Padding="8,4"
Background="#18FFFFFF"
CornerRadius="8">
<TextBlock FontSize="11"
FontWeight="SemiBold"
Foreground="{StaticResource MutedTextBrush}"
Text="{Binding Code}" />
</Border>
<TextBlock Grid.Column="2"
VerticalAlignment="Center"
FontSize="13"
FontWeight="SemiBold"
Text="{Binding Label}" />
</Grid>
</DataTemplate>
</Window.Resources>
<Border Margin="12"
Padding="24"
Background="#FF0D131B"
BorderBrush="#18FFFFFF"
BorderThickness="1"
CornerRadius="22"
ClipToBounds="True">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="16" />
<RowDefinition Height="*" />
<RowDefinition Height="12" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Border Grid.Row="0" Style="{StaticResource CardBorderStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<StackPanel>
<TextBlock Style="{StaticResource SectionTitleStyle}"
FontSize="30"
Text="RGB Led Strip Controller" />
<TextBlock Margin="0,8,0,0"
FontSize="14"
Foreground="{StaticResource MutedTextBrush}"
Text="Windows 10 için sade, çok fonksiyonlu multi ELK-BLEDOM protokolüne uygun rgb led şerit kontrolcüsü." />
</StackPanel>
<StackPanel Grid.Column="1"
Margin="24,0,0,0"
VerticalAlignment="Center">
<Border HorizontalAlignment="Right"
Padding="12,6"
CornerRadius="12"
Background="{Binding State.StatusBrush}">
<TextBlock FontSize="13"
FontWeight="SemiBold"
Foreground="Black"
Text="{Binding State.ConnectionLabel}" />
</Border>
<TextBlock Margin="0,12,0,0"
HorizontalAlignment="Right"
FontSize="13"
Text="{Binding State.ConnectedSummary}" />
<TextBlock Margin="0,4,0,0"
HorizontalAlignment="Right"
FontSize="13"
Foreground="{StaticResource MutedTextBrush}"
Text="{Binding State.TargetSummary}" />
</StackPanel>
</Grid>
</Border>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="320" />
<ColumnDefinition Width="18" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Style="{StaticResource CardBorderStyle}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="14" />
<RowDefinition Height="*" />
<RowDefinition Height="14" />
<RowDefinition Height="Auto" />
<RowDefinition Height="12" />
<RowDefinition Height="Auto" />
<RowDefinition Height="12" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Style="{StaticResource SectionTitleStyle}"
FontSize="22"
Text="Cihazlar" />
<Button Grid.Column="1"
Click="ScanClicked"
IsEnabled="{Binding CanScan}">
<TextBlock FontSize="13" Text="Tara" />
</Button>
</Grid>
<ListBox Grid.Row="2"
ItemsSource="{Binding Devices}"
SelectedItem="{Binding SelectedDevice, Mode=TwoWay}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock FontSize="15"
FontWeight="SemiBold"
Text="{Binding DisplayName}" />
<Border Grid.Column="1"
Margin="12,0,0,0"
Padding="8,3"
CornerRadius="8"
Background="#213CC7FF"
VerticalAlignment="Center">
<TextBlock FontSize="11"
FontWeight="SemiBold"
Foreground="{StaticResource AccentBrush}"
Text="{Binding Badge}" />
</Border>
</Grid>
<StackPanel Grid.Row="1" Margin="0,8,0,0">
<TextBlock FontSize="12"
Foreground="{StaticResource MutedTextBrush}"
Text="{Binding SecondaryLabel}" />
<TextBlock Margin="0,3,0,0"
FontSize="12"
Foreground="{StaticResource MutedTextBrush}"
Text="{Binding SignalLabel}" />
</StackPanel>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Border Grid.Row="4" Style="{StaticResource PanelCardStyle}">
<StackPanel>
<TextBlock FontSize="12"
Foreground="{StaticResource MutedTextBrush}"
Text="Seçili cihaz" />
<TextBlock Margin="0,8,0,0"
FontSize="15"
FontWeight="SemiBold"
Text="{Binding SelectedDeviceSummaryDisplay}"
TextWrapping="Wrap" />
<TextBlock Margin="0,10,0,0"
FontSize="12"
Foreground="{StaticResource MutedTextBrush}"
Text="{Binding LastKnownDeviceCaptionDisplay}"
TextWrapping="Wrap" />
</StackPanel>
</Border>
<Grid Grid.Row="6">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="12" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0"
Text="{Binding AliasEditorText, UpdateSourceTrigger=PropertyChanged}" />
<Button Grid.Column="2"
Click="SaveAliasClicked"
IsEnabled="{Binding CanSaveAlias}">
<TextBlock FontSize="13" Text="Takma adı kaydet" />
</Button>
</Grid>
<Grid Grid.Row="8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="12" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Button Grid.Column="0"
Click="ConnectClicked"
IsEnabled="{Binding CanConnect}">
<TextBlock FontSize="14" Text="Bağlan" />
</Button>
<Button Grid.Column="2"
Style="{StaticResource GhostButtonStyle}"
Click="DisconnectAllClicked"
IsEnabled="{Binding CanDisconnectAll}">
<TextBlock FontSize="14" Text="Tümünü kes" />
</Button>
</Grid>
</Grid>
</Border>
<Grid Grid.Column="2">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="16" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Border Style="{StaticResource CardBorderStyle}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="14" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Style="{StaticResource SectionTitleStyle}"
FontSize="22"
Text="Bağlı cihazlar" />
<ListBox Grid.Row="2"
ItemsSource="{Binding ConnectedDevices}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="182" />
</Grid.ColumnDefinitions>
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock FontSize="15"
FontWeight="SemiBold"
Text="{Binding DisplayName}" />
<Border Grid.Column="1"
Margin="12,0,0,0"
Padding="8,3"
CornerRadius="8"
Background="{Binding StatusBrush}"
VerticalAlignment="Center">
<TextBlock FontSize="11"
FontWeight="SemiBold"
Foreground="Black"
Text="{Binding StatusLabel}" />
</Border>
</Grid>
<TextBlock Margin="0,8,0,0"
FontSize="12"
Foreground="{StaticResource MutedTextBrush}"
Text="{Binding SecondaryLabel}" />
<TextBlock Margin="0,3,0,0"
FontSize="12"
Foreground="{StaticResource MutedTextBrush}"
Text="{Binding SignalLabel}" />
<TextBlock Margin="0,8,0,0"
FontSize="13"
Text="{Binding StatusText}"
TextWrapping="Wrap" />
</StackPanel>
<StackPanel Grid.Column="1"
HorizontalAlignment="Right"
VerticalAlignment="Center">
<CheckBox Content="Komuta dahil"
IsChecked="{Binding IsControlTarget, Mode=TwoWay}"
Margin="0,0,0,10"
Style="{StaticResource TargetCheckBoxStyle}" />
<Button Style="{StaticResource DangerGhostButtonStyle}"
Click="DisconnectConnectedClicked"
Tag="{Binding}">
<TextBlock FontSize="13" Text="Bağlantıyı kes" />
</Button>
</StackPanel>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Border>
<Border Grid.Row="2" Style="{StaticResource CardBorderStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="16" />
<ColumnDefinition Width="1.15*" />
<ColumnDefinition Width="16" />
<ColumnDefinition Width="0.95*" />
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Style="{StaticResource PanelCardStyle}">
<StackPanel>
<TextBlock Style="{StaticResource SectionTitleStyle}"
FontSize="20"
Text="Güç ve parlaklık" />
<Button Margin="0,16,0,0"
Click="PowerClicked"
IsEnabled="{Binding CanUseControls}">
<TextBlock FontSize="14" Text="{Binding State.PowerButtonLabel}" />
</Button>
<TextBlock Margin="0,22,0,0"
FontSize="13"
Foreground="{StaticResource MutedTextBrush}"
Text="Parlaklık" />
<DockPanel Margin="0,6,0,0">
<TextBlock DockPanel.Dock="Right"
FontSize="15"
FontWeight="SemiBold"
Text="{Binding State.BrightnessLabel}" />
</DockPanel>
<Slider x:Name="BrightnessSlider"
Minimum="0"
Maximum="100"
TickFrequency="5"
Value="{Binding State.Brightness}"
IsEnabled="{Binding CanUseBrightnessControl}"
LostMouseCapture="BrightnessCommitLostMouseCapture"
PreviewKeyUp="BrightnessCommitKeyUp"
PreviewMouseLeftButtonUp="BrightnessCommitMouseUp"
ValueChanged="BrightnessChanged" />
</StackPanel>
</Border>
<Border Grid.Column="2" Style="{StaticResource PanelCardStyle}">
<StackPanel>
<TextBlock Style="{StaticResource SectionTitleStyle}"
FontSize="20"
Text="Renk" />
<StackPanel Orientation="Horizontal" Margin="0,16,0,0">
<Border Width="74"
Height="74"
CornerRadius="12"
Background="{Binding State.SelectedBrush}" />
<StackPanel Margin="14,4,0,0"
VerticalAlignment="Center">
<TextBlock FontSize="16"
FontWeight="SemiBold"
Text="{Binding State.SelectedHex}" />
<TextBlock Margin="0,4,0,0"
FontSize="12"
Foreground="{StaticResource MutedTextBrush}"
Text="{Binding State.SelectedRgbLabel}" />
</StackPanel>
</StackPanel>
<TextBlock Margin="0,18,0,0"
FontSize="12"
Foreground="{StaticResource MutedTextBrush}"
Text="Hızlı renkler" />
<ItemsControl Margin="0,14,0,0"
ItemsSource="{Binding ColorPresets}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="7" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Width="38"
Height="38"
Margin="0,0,10,10"
Background="{Binding Hex}"
Tag="{Binding Hex}"
ToolTip="{Binding ToolTipLabel}"
Click="PresetColorClicked"
Style="{StaticResource SwatchButtonStyle}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<Button Margin="0,4,0,0"
Style="{StaticResource WarmGhostButtonStyle}"
Click="SelectColorClicked"
IsEnabled="{Binding CanUseControls}">
<TextBlock FontSize="14" Text="Renk seçici" />
</Button>
</StackPanel>
</Border>
<Border Grid.Column="4" Style="{StaticResource PanelCardStyle}">
<StackPanel>
<TextBlock Style="{StaticResource SectionTitleStyle}"
FontSize="20"
Text="Mod" />
<TextBlock Margin="0,16,0,0"
FontSize="12"
Foreground="{StaticResource MutedTextBrush}"
Text="Aktif mod" />
<TextBlock Margin="0,8,0,0"
FontSize="15"
FontWeight="SemiBold"
Text="{Binding State.CurrentModeLabel}" />
<UniformGrid Margin="0,14,0,0"
Columns="4">
<Button Margin="0,0,8,0"
Click="SwitchRgbModeClicked"
IsEnabled="{Binding CanUseControls}">
<TextBlock FontSize="13" Text="RGB" />
</Button>
<Button Margin="0,0,8,0"
Click="SwitchEffectModeClicked"
IsEnabled="{Binding CanUseControls}">
<TextBlock FontSize="13" Text="Efekt" />
</Button>
<Button Click="SwitchGrayscaleModeClicked"
IsEnabled="{Binding CanUseControls}">
<TextBlock FontSize="13" Text="Gri ton" />
</Button>
<Button Margin="8,0,0,0"
Click="SwitchTemperatureModeClicked"
IsEnabled="{Binding CanUseControls}">
<TextBlock FontSize="13" Text="Beyaz" />
</Button>
</UniformGrid>
<StackPanel Margin="0,18,0,0"
Visibility="{Binding CanShowEffectControls, Converter={StaticResource BooleanToVisibilityConverter}}">
<TextBlock FontSize="12"
Foreground="{StaticResource MutedTextBrush}"
Text="Hazır efekt" />
<ComboBox x:Name="EffectsComboBox"
Margin="0,10,0,0"
Style="{StaticResource EffectComboBoxStyle}"
ItemTemplate="{StaticResource EffectOptionTemplate}"
ItemsSource="{Binding Effects}"
SelectedValuePath="PatternId"
SelectedValue="{Binding State.SelectedEffectId}"
SelectionChanged="EffectChanged"
IsEnabled="{Binding CanUseControls}" />
</StackPanel>
<StackPanel Margin="0,18,0,0"
Visibility="{Binding CanShowEffectSpeed, Converter={StaticResource BooleanToVisibilityConverter}}">
<TextBlock FontSize="12"
Foreground="{StaticResource MutedTextBrush}"
Text="Efekt hızı" />
<DockPanel Margin="0,6,0,0">
<TextBlock DockPanel.Dock="Right"
FontSize="15"
FontWeight="SemiBold"
Text="{Binding State.EffectSpeedLabel}" />
</DockPanel>
<Slider x:Name="EffectSpeedSlider"
Minimum="0"
Maximum="100"
TickFrequency="5"
Value="{Binding State.EffectSpeed}"
IsEnabled="{Binding CanUseControls}"
LostMouseCapture="EffectSpeedCommitLostMouseCapture"
PreviewKeyUp="EffectSpeedCommitKeyUp"
PreviewMouseLeftButtonUp="EffectSpeedCommitMouseUp"
ValueChanged="EffectSpeedChanged" />
</StackPanel>
<StackPanel Margin="0,18,0,0"
Visibility="{Binding CanShowGrayscaleControls, Converter={StaticResource BooleanToVisibilityConverter}}">
<TextBlock FontSize="12"
Foreground="{StaticResource MutedTextBrush}"
Text="Gri ton" />
<DockPanel Margin="0,6,0,0">
<TextBlock DockPanel.Dock="Right"
FontSize="15"
FontWeight="SemiBold"
Text="{Binding State.GrayscaleLabel}" />
</DockPanel>
<Slider x:Name="GrayscaleSlider"
Minimum="0"
Maximum="100"
TickFrequency="5"
Value="{Binding State.GrayscaleLevel}"
IsEnabled="{Binding CanUseControls}"
LostMouseCapture="GrayscaleCommitLostMouseCapture"
PreviewKeyUp="GrayscaleCommitKeyUp"
PreviewMouseLeftButtonUp="GrayscaleCommitMouseUp"
ValueChanged="GrayscaleChanged" />
</StackPanel>
<StackPanel Margin="0,18,0,0"
Visibility="{Binding CanShowTemperatureControls, Converter={StaticResource BooleanToVisibilityConverter}}">
<TextBlock FontSize="12"
Foreground="{StaticResource MutedTextBrush}"
Text="Beyaz sıcaklığı" />
<DockPanel Margin="0,6,0,0">
<TextBlock DockPanel.Dock="Right"
FontSize="15"
FontWeight="SemiBold"
Text="{Binding State.TemperatureLabel}" />
</DockPanel>
<Slider x:Name="TemperatureSlider"
Minimum="0"
Maximum="100"
TickFrequency="5"
Value="{Binding State.TemperatureLevel}"
IsEnabled="{Binding CanUseControls}"
LostMouseCapture="TemperatureCommitLostMouseCapture"
PreviewKeyUp="TemperatureCommitKeyUp"
PreviewMouseLeftButtonUp="TemperatureCommitMouseUp"
ValueChanged="TemperatureChanged" />
<UniformGrid Margin="0,14,0,0"
Columns="3">
<Button Margin="0,0,8,0"
Tag="0"
Click="TemperaturePresetClicked"
IsEnabled="{Binding CanUseControls}">
<TextBlock FontSize="12" Text="Soğuk" />
</Button>
<Button Margin="0,0,8,0"
Tag="50"
Click="TemperaturePresetClicked"
IsEnabled="{Binding CanUseControls}">
<TextBlock FontSize="12" Text="Doğal" />
</Button>
<Button Click="TemperaturePresetClicked"
Tag="100"
IsEnabled="{Binding CanUseControls}">
<TextBlock FontSize="12" Text="Sıcak" />
</Button>
</UniformGrid>
</StackPanel>
<TextBlock Margin="0,20,0,0"
FontSize="12"
Foreground="{StaticResource MutedTextBrush}"
Text="Durum" />
<TextBlock Margin="0,8,0,0"
FontSize="15"
FontWeight="SemiBold"
Text="{Binding State.StatusText}"
TextWrapping="Wrap" />
</StackPanel>
</Border>
</Grid>
</Border>
</Grid>
</Grid>
<Border Grid.Row="4"
Padding="14,12"
Background="#99111822"
BorderBrush="#18FFFFFF"
BorderThickness="1"
CornerRadius="14">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="16" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="16" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock VerticalAlignment="Center"
FontSize="12"
Foreground="{StaticResource MutedTextBrush}">
<Run Text="Made by " />
<Hyperlink NavigateUri="https://fristy.net"
RequestNavigate="FooterLinkClicked">
<Run Text="@fristyxd" />
</Hyperlink>
</TextBlock>
<StackPanel Grid.Column="2"
VerticalAlignment="Center"
HorizontalAlignment="Center">
<TextBlock HorizontalAlignment="Center"
FontSize="12"
FontWeight="SemiBold"
Text="{Binding VersionDisplay}" />
<TextBlock Margin="0,4,0,0"
HorizontalAlignment="Center"
FontSize="12"
Foreground="{StaticResource MutedTextBrush}"
Text="{Binding UpdateStatusText}"
TextWrapping="Wrap" />
</StackPanel>
<Button Grid.Column="4"
Click="CheckForUpdatesClicked"
IsEnabled="{Binding CanCheckForUpdates}">
<TextBlock FontSize="13"
Text="{Binding UpdateButtonLabel}" />
</Button>
</Grid>
</Border>
</Grid>
</Border>
</Window>