Private
Public Access
1
0

Add adjustable context size, custom chatbot name, and cat icon for AI chat

Settings > AI tab now includes context size slider (2048–131072) with VRAM
estimate and a chatbot name field. ChatService reads both dynamically instead
of hardcoding num_ctx=16384 and "Purrse AI". Chat panel FAB and empty state
use mdi-cat icon to match the rest of the app.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Catherine Renelle
2026-02-13 14:38:07 -05:00
parent 0ad8e472f7
commit 688dd333dc
11 changed files with 1696 additions and 12 deletions
@@ -67,13 +67,14 @@ public class AiCategorizationService : IAiCategorizationService
if (settings == null)
{
return new AiCategorizationSettingsResponse(
false, "http://localhost:11434", "llama3.1:8b", 0.7, 30, true, null, null);
false, "http://localhost:11434", "llama3.1:8b", 0.7, 30, true, null, null, 16384, null);
}
return new AiCategorizationSettingsResponse(
settings.IsEnabled, settings.OllamaUrl, settings.ModelName,
settings.ConfidenceThreshold, settings.TimeoutSeconds, settings.UpdatePayeeDefaults,
settings.SystemPrompt, settings.UserPromptTemplate);
settings.SystemPrompt, settings.UserPromptTemplate,
settings.ChatContextSize, settings.ChatBotName);
}
public async Task<AiCategorizationSettingsResponse> UpdateSettingsAsync(Guid userId, UpdateAiCategorizationSettingsRequest request)
@@ -98,6 +99,8 @@ public class AiCategorizationService : IAiCategorizationService
settings.UpdatePayeeDefaults = request.UpdatePayeeDefaults;
settings.SystemPrompt = string.IsNullOrWhiteSpace(request.SystemPrompt) ? null : request.SystemPrompt;
settings.UserPromptTemplate = string.IsNullOrWhiteSpace(request.UserPromptTemplate) ? null : request.UserPromptTemplate;
settings.ChatContextSize = request.ChatContextSize;
settings.ChatBotName = string.IsNullOrWhiteSpace(request.ChatBotName) ? null : request.ChatBotName;
settings.UpdatedAt = DateTime.UtcNow;
await _db.SaveChangesAsync();
@@ -105,7 +108,8 @@ public class AiCategorizationService : IAiCategorizationService
return new AiCategorizationSettingsResponse(
settings.IsEnabled, settings.OllamaUrl, settings.ModelName,
settings.ConfidenceThreshold, settings.TimeoutSeconds, settings.UpdatePayeeDefaults,
settings.SystemPrompt, settings.UserPromptTemplate);
settings.SystemPrompt, settings.UserPromptTemplate,
settings.ChatContextSize, settings.ChatBotName);
}
public async Task<OllamaConnectionTestResponse> TestConnectionAsync(Guid userId)