Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ jobs:
- name: Checkout Code
uses: actions/checkout@v7

- name: Checkout Avalonia.LayoutInspector
run: git clone https://github.com/spelech/Avalonia.LayoutInspector.git ../Avalonia.LayoutInspector

- name: Setup .NET SDK 10.0
uses: actions/setup-dotnet@v6
with:
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ jobs:
- name: Checkout Code
uses: actions/checkout@v7

- name: Checkout Avalonia.LayoutInspector
run: git clone https://github.com/spelech/Avalonia.LayoutInspector.git ../Avalonia.LayoutInspector

- name: Setup .NET 10 SDK
uses: actions/setup-dotnet@v6
with:
Expand Down
2 changes: 1 addition & 1 deletion App.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
</Application.Styles>
<TrayIcon.Icons>
<TrayIcons>
<TrayIcon Icon="avares://LocalLLMServerManager/Assets/app-icon.ico" ToolTipText="Local LLM Server Manager v3.15.1" IsVisible="True">
<TrayIcon Icon="avares://LocalLLMServerManager/Assets/app-icon.ico" ToolTipText="Local LLM Server Manager v3.16.0" IsVisible="True">
<TrayIcon.Menu>
<NativeMenu>
<NativeMenuItem Header="Open Native Dashboard" Click="OnOpenDashboardClick"/>
Expand Down
2 changes: 1 addition & 1 deletion Endpoints/HealthEndpoints.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public static void MapHealthEndpoints(this WebApplication app)
StableDiffusion = forgeHealthy ? "Online" : "Offline",
ComfyUI = comfyHealthy ? "Online" : "Offline",
PreferredImageEngine = settings.PreferredImageEngine,
Version = "3.15.1",
Version = "3.16.0",
});
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<Version>3.15.1</Version>
<AssemblyVersion>3.15.1.0</AssemblyVersion>
<FileVersion>3.15.1.0</FileVersion>
<Version>3.16.0</Version>
<AssemblyVersion>3.16.0.0</AssemblyVersion>
<FileVersion>3.16.0.0</FileVersion>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>

Expand Down
12 changes: 11 additions & 1 deletion LocalLLMServerManager.Shared/ViewModels/AiAssistantViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,20 @@ public partial class AiAssistantViewModel : ObservableObject

public Action? OnPopOutNativeWindowRequested { get; set; }

[ObservableProperty] private bool _isDrawerOpen = false;

[RelayCommand]
public void RequestPopOut()
{
OnPopOutNativeWindowRequested?.Invoke();
if (OnPopOutNativeWindowRequested != null)
{
IsDrawerOpen = false;
OnPopOutNativeWindowRequested.Invoke();
}
else
{
IsDrawerOpen = !IsDrawerOpen;
}
}

[RelayCommand]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,16 +57,19 @@ public partial class DocumentationViewModel : ObservableObject
public Action<int>? OnNavigateToTabRequested { get; set; }
public Action? OnPopOutNativeWindowRequested { get; set; }

[ObservableProperty] private bool _isDrawerOpen = false;

[RelayCommand]
public void PopOutNativeWindow()
{
if (OnPopOutNativeWindowRequested != null)
{
IsDrawerOpen = false;
OnPopOutNativeWindowRequested.Invoke();
}
else
{
ToggleFloatingOverlay();
IsDrawerOpen = !IsDrawerOpen;
}
}

Expand Down
26 changes: 26 additions & 0 deletions LocalLLMServerManager.Shared/ViewModels/MainViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,32 @@ public HttpClient Http
[ObservableProperty]
private int _selectedModelsTabIndex = 0;

[ObservableProperty] private bool _isAnyDrawerOpen = false;

[RelayCommand]
public void ToggleDocumentationDrawer()
{
Assistant.IsDrawerOpen = false;
Documentation.IsDrawerOpen = !Documentation.IsDrawerOpen;
IsAnyDrawerOpen = Documentation.IsDrawerOpen;
}

[RelayCommand]
public void ToggleAiAssistDrawer()
{
Documentation.IsDrawerOpen = false;
Assistant.IsDrawerOpen = !Assistant.IsDrawerOpen;
IsAnyDrawerOpen = Assistant.IsDrawerOpen;
}

[RelayCommand]
public void CloseDrawers()
{
Documentation.IsDrawerOpen = false;
Assistant.IsDrawerOpen = false;
IsAnyDrawerOpen = false;
}

[ObservableProperty]
private string _appVersionText = $"LocalLLMServerManager v{typeof(MainViewModel).Assembly.GetName().Version?.ToString(3) ?? "3.15.1"} — Unified WASM & Desktop UI";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,15 @@
<!-- Action Controls -->
<StackPanel Grid.Column="2" Orientation="Horizontal" Spacing="8" VerticalAlignment="Center">
<Button x:Name="AiPopOutButton" Content="↗️ Pop Out" Command="{Binding RequestPopOutCommand}" Classes="matte-secondary" FontSize="11" Padding="10,6"/>
<Button Content="⚙️ Setup &amp; Endpoint" Command="{Binding ToggleSetupCardCommand}" Classes="matte-secondary" FontSize="11" Padding="10,6"/>
<Button Content="🔄 Reload Prompts" Command="{Binding ReloadPromptsCommand}" Classes="matte-secondary" FontSize="11" Padding="10,6"/>
<Button Content="🧹 Clear Chat" Command="{Binding ClearChatCommand}" Classes="matte-secondary" FontSize="11" Padding="10,6"/>
<Button Content="⋮" ToolTip.Tip="More Actions" Classes="matte-secondary" FontSize="14" Padding="8,4">
<Button.Flyout>
<MenuFlyout Placement="BottomEdgeAlignedRight">
<MenuItem Header="⚙️ Setup &amp; Endpoint" Command="{Binding ToggleSetupCardCommand}"/>
<MenuItem Header="🔄 Reload Prompts" Command="{Binding ReloadPromptsCommand}"/>
<MenuItem Header="🧹 Clear Chat" Command="{Binding ClearChatCommand}"/>
</MenuFlyout>
</Button.Flyout>
</Button>
</StackPanel>
</Grid>
</Border>
Expand Down Expand Up @@ -268,37 +274,33 @@
</ScrollViewer>
</Border>

<!-- Composer Input & Controls Row -->
<Grid ColumnDefinitions="Auto, *, Auto">
<Button x:Name="AttachFileButton"
Grid.Column="0"
Click="OnAttachFileButtonClick"
Content="📎"
ToolTip.Tip="Attach image (PNG, JPG, WEBP)"
Classes="matte-secondary"
Padding="10,8"
FontSize="12"
Margin="0,0,6,0"
VerticalAlignment="Center"/>
<!-- Row 1: Full-width multiline Prompt TextBox -->
<TextBox x:Name="PromptTextBox"
KeyDown="OnPromptTextBoxKeyDown"
Text="{Binding InputText}"
Watermark="Ask anything or command the application (e.g., 'What is my current VRAM usage?' or 'Generate an image with Flux')..."
AcceptsReturn="True"
MaxHeight="120"
FontSize="12"
HorizontalAlignment="Stretch"/>

<TextBox x:Name="PromptTextBox"
Grid.Column="1"
KeyDown="OnPromptTextBoxKeyDown"
Text="{Binding InputText}"
Watermark="Ask anything or command the application (e.g., 'What is my current VRAM usage?' or 'Generate an image with Flux')..."
AcceptsReturn="True"
MaxHeight="100"
FontSize="12"
VerticalAlignment="Center"
Margin="0,0,8,0"/>
<!-- Row 2: Controls Toolbar -->
<Grid Margin="0,8,0,0">
<!-- Left-aligned Controls -->
<StackPanel Orientation="Horizontal" Spacing="6" HorizontalAlignment="Left" VerticalAlignment="Center">
<Button x:Name="AttachFileButton"
Click="OnAttachFileButtonClick"
Content="📎"
ToolTip.Tip="Attach image (PNG, JPG, WEBP)"
Classes="matte-secondary"
Padding="10,8"
FontSize="12"/>

<StackPanel Grid.Column="2" Orientation="Horizontal" Spacing="6" VerticalAlignment="Center">
<ComboBox ItemsSource="{Binding AvailableModelCapabilities}"
SelectedItem="{Binding SelectedModelCapability}"
MinWidth="200"
MaxWidth="300"
VerticalAlignment="Center"
Margin="0,0,6,0">
MinWidth="180"
MaxWidth="280"
VerticalAlignment="Center">
<ComboBox.ItemTemplate>
<DataTemplate DataType="models:AiModelCapabilityInfo">
<StackPanel Orientation="Horizontal" Spacing="6">
Expand All @@ -308,11 +310,24 @@
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>

<!-- Right-aligned Controls -->
<StackPanel Orientation="Horizontal" Spacing="6" HorizontalAlignment="Right" VerticalAlignment="Center">
<Button Content="⏹️ Stop"
Command="{Binding StopGenerationCommand}"
Classes="matte-secondary"
IsVisible="{Binding IsGenerating}"
Padding="14,8"
FontSize="12"/>

<Button Content="⏹️ Stop" Command="{Binding StopGenerationCommand}" Classes="matte-secondary"
IsVisible="{Binding IsGenerating}" Padding="14,8" FontSize="12"/>
<Button x:Name="SendButton" Content="🚀 Send" Command="{Binding SendMessageCommand}" Classes="matte-primary"
IsVisible="{Binding !IsGenerating}" Padding="16,8" FontSize="12"/>
<Button x:Name="SendButton"
Content="🚀 Send"
Command="{Binding SendMessageCommand}"
Classes="matte-primary"
IsVisible="{Binding !IsGenerating}"
Padding="16,8"
FontSize="12"/>
</StackPanel>
</Grid>
</StackPanel>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@

<!-- Hardware Compatibility Filter Chips -->
<ScrollViewer Grid.Row="1" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled" Margin="0,0,0,10">
<StackPanel Orientation="Horizontal" Spacing="6">
<TextBlock Text="Hardware Filter:" FontSize="12" Foreground="{StaticResource TextMutedBrush}" VerticalAlignment="Center" Margin="0,0,4,0"/>
<StackPanel Orientation="Horizontal" Spacing="8">
<TextBlock Text="Hardware Filter:" FontSize="12" Foreground="{StaticResource TextMutedBrush}" VerticalAlignment="Center"/>
<Button Command="{Binding ToggleFitVerdictCommand}" CommandParameter="FullVram" Classes="hw-filter-btn" Classes.inactive="{Binding !IsFullVramActive}" BorderBrush="#10B981">
<StackPanel Orientation="Horizontal" Spacing="5">
<TextBlock Text="✓" IsVisible="{Binding IsFullVramActive}" Foreground="#10B981" FontWeight="Bold"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@
<TextBlock Text="🎨 Studio Presets Manager" FontSize="16" FontWeight="Bold" Foreground="{StaticResource TextMainBrush}"/>
<TextBlock Text="Manage built-in and user-customized generation presets for Video, Image, and Audio/TTS workflows:" FontSize="13" Foreground="{StaticResource TextMutedBrush}"/>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal" Spacing="6" VerticalAlignment="Center">
<StackPanel Grid.Column="1" Orientation="Horizontal" Spacing="8" VerticalAlignment="Center">
<Button Content="➕ Create New Preset" Command="{Binding CreatePresetCommand}" Classes="matte-primary" Padding="10,6" FontSize="12"/>
<Button Content="🔄 Reset Defaults" Command="{Binding ResetPresetsToDefaultCommand}" Classes="matte-secondary" Padding="10,6" FontSize="12"/>
</StackPanel>
Expand Down Expand Up @@ -197,7 +197,7 @@
</Border>

<!-- Actions -->
<StackPanel Grid.Column="3" Orientation="Horizontal" Spacing="6" VerticalAlignment="Center">
<StackPanel Grid.Column="3" Orientation="Horizontal" Spacing="8" VerticalAlignment="Center">
<Button Content="📋 Duplicate"
Command="{Binding $parent[UserControl].((vm:SettingsViewModel)DataContext).DuplicatePresetCommand}"
CommandParameter="{Binding}"
Expand Down
Loading
Loading