1
0

Refactor: Reorganize project structure by moving core components into dedicated directories and introducing new configuration and API models.

This commit is contained in:
2026-02-26 21:51:36 +01:00
parent fbff8c98ff
commit d60730c4bf
13 changed files with 83 additions and 60 deletions

View File

@@ -0,0 +1,40 @@
using System.Text.Json;
using System.Text.Json.Serialization;
using Toak.Serialization;
namespace Toak.Configuration;
public static class ConfigManager
{
private static readonly string ConfigDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".config", "toak");
private static readonly string ConfigPath = Path.Combine(ConfigDir, "config.json");
public static ToakConfig LoadConfig()
{
if (!File.Exists(ConfigPath))
{
return new ToakConfig();
}
try
{
var json = File.ReadAllText(ConfigPath);
return JsonSerializer.Deserialize(json, AppJsonSerializerContext.Default.ToakConfig) ?? new ToakConfig();
}
catch (Exception)
{
return new ToakConfig();
}
}
public static void SaveConfig(ToakConfig config)
{
if (!Directory.Exists(ConfigDir))
{
Directory.CreateDirectory(ConfigDir);
}
var json = JsonSerializer.Serialize(config, AppJsonSerializerContext.Default.ToakConfig);
File.WriteAllText(ConfigPath, json);
}
}

View File

@@ -0,0 +1,16 @@
namespace Toak.Configuration;
public class ToakConfig
{
public string GroqApiKey { get; set; } = string.Empty;
public string TypingBackend { get; set; } = "xdotool"; // wtype or xdotool
public bool ModulePunctuation { get; set; } = true;
public bool ModuleTechnicalSanitization { get; set; } = true;
public string StyleMode { get; set; } = "Professional";
public bool StructureBulletPoints { get; set; } = false;
public bool StructureSmartParagraphing { get; set; } = true;
public string WhisperLanguage { get; set; } = string.Empty;
public string LlmModel { get; set; } = "openai/gpt-oss-20b";
public string WhisperModel { get; set; } = "whisper-large-v3-turbo";
}