feat: v0.4.0 - provider icon system, settings modal & polish

- Add provider icon system with extracted icon library (cc-switch based)

- Persist icon and icon_color in SQLite and config.toml

- Add Settings modal (theme / language / update check / silent download)

- Add useTheme and useUpdateCheck hooks

- Add provider icon picker (IconPicker) with search and grid

- Fix icon frame 2-layer color difference in ProviderEdit

- Dashboard heatmap and daily usage improvements

- Sessions page polish and adaptive layout

- Bump version to 0.4.0
This commit is contained in:
KimiSwitch Dev committed 2026-07-28 16:01:11 +08:00
1 parent 14d48500bf
commit ebf2dd28d5
134 files changed
+2898 -326

No files matched your search

+31
View File
@@ -74,6 +74,13 @@ export const enTranslations: Record<TranslationKey, string> = {
readOnlyPreview: "Editable JSON",
apply: "Apply",
invalidJson: "Invalid JSON: {message}",
clickToSelectIcon: "Click to select icon",
clickToChangeIcon: "Click to change icon",
selectIcon: "Select icon",
clearIcon: "Clear icon",
iconPickerSearch: "Search icons",
iconPickerSearchPlaceholder: "Type an icon name...",
iconPickerNoResults: "No matching icons found",
// Agent / target
target: "Target",
@@ -203,6 +210,30 @@ export const enTranslations: Record<TranslationKey, string> = {
zh: "中文",
en: "English",
// Theme & Settings
themeLight: "Light",
themeDark: "Dark",
themeAuto: "Auto",
settings: "Settings",
settingsTitle: "Settings",
settingsAppearance: "Appearance",
settingsUpdates: "Updates",
settingsAbout: "About",
checkUpdate: "Check for updates",
checking: "Checking…",
upToDate: "You're up to date",
updateAvailable: "Update available",
currentVersion: "Current version",
latestVersion: "Latest version",
downloadUpdate: "Download update",
downloading: "Downloading…",
downloadComplete: "Download complete, click to install",
install: "Install",
updateCheckFailed: "Update check failed",
lastChecked: "Last checked",
appDescription: "Windows desktop LLM provider config manager",
referenceProject: "Reference project",
// Validation errors
emptyProviderName: "Provider name is empty",
duplicateProviderName: "Duplicate provider name: {0}",