- 侧边栏 4 → 6 项:首页 / 历史记录 / 词汇表 / 风格 / 帮助中心 / 设置 - 词典 → 词汇表,整页改 chip 流式布局:phrase + hitCount,hover ✕ 删除, 批量输入(每行一个),重置统计 / 清除全部 - DictionaryEntry 加 hitCount + 兼容旧 dictionary.json 解码 - DictationCoordinator 在润色后扫描最终文本递增命中数; 删除 learnTerms 自动学词路径 - 润色模式 → 风格 (StyleTab):4 张模式卡 + 启用开关; 关闭时跳过 Ark 直接插入原文 (UserPreferences.polishEnabled) - 帮助中心:快速上手 4 步、快捷键速查、FAQ、GitHub 外链 - 设置 Tab 合并 Volc ASR + Ark 凭据、录音、授权、隐私、关于 + 检查更新 - 胶囊:NSPanel 220×96, hasShadow=false;macOS 26 分支去掉 SwiftUI 阴影 → 解决"红绿灯外圈黑边" - 侧边栏视觉:strokeBorder 0.08 → 0.04、阴影 radius 16 → 6 → 解决"灰色边栏 + 黑色卡顿" - 首页底部新增今日概览 + 风格预览
56 lines
2.0 KiB
Swift
56 lines
2.0 KiB
Swift
import Foundation
|
|
import OpenLessCore
|
|
|
|
public final class UserPreferences: @unchecked Sendable {
|
|
public static let shared = UserPreferences()
|
|
private let defaults = UserDefaults.standard
|
|
|
|
private enum Key {
|
|
static let polishMode = "openless.polish_mode"
|
|
static let polishEnabled = "openless.polish_enabled"
|
|
static let hotkeyTrigger = "openless.hotkey_trigger"
|
|
static let hotkeyMode = "openless.hotkey_mode"
|
|
static let hasCompletedOnboarding = "openless.onboarding_completed"
|
|
}
|
|
|
|
public init() {}
|
|
|
|
/// 风格全局开关。关闭时识别后直接插入原文,不调润色模型。默认开。
|
|
public var polishEnabled: Bool {
|
|
get {
|
|
if defaults.object(forKey: Key.polishEnabled) == nil { return true }
|
|
return defaults.bool(forKey: Key.polishEnabled)
|
|
}
|
|
set { defaults.set(newValue, forKey: Key.polishEnabled) }
|
|
}
|
|
|
|
public var polishMode: PolishMode {
|
|
get {
|
|
let raw = defaults.string(forKey: Key.polishMode) ?? PolishMode.light.rawValue
|
|
return PolishMode(rawValue: raw) ?? .light
|
|
}
|
|
set { defaults.set(newValue.rawValue, forKey: Key.polishMode) }
|
|
}
|
|
|
|
public var hotkeyTrigger: HotkeyBinding.Trigger {
|
|
get {
|
|
let raw = defaults.string(forKey: Key.hotkeyTrigger) ?? HotkeyBinding.Trigger.rightOption.rawValue
|
|
return HotkeyBinding.Trigger(rawValue: raw) ?? .rightOption
|
|
}
|
|
set { defaults.set(newValue.rawValue, forKey: Key.hotkeyTrigger) }
|
|
}
|
|
|
|
public var hotkeyMode: HotkeyMode {
|
|
get {
|
|
let raw = defaults.string(forKey: Key.hotkeyMode) ?? HotkeyMode.toggle.rawValue
|
|
return HotkeyMode(rawValue: raw) ?? .toggle
|
|
}
|
|
set { defaults.set(newValue.rawValue, forKey: Key.hotkeyMode) }
|
|
}
|
|
|
|
public var hasCompletedOnboarding: Bool {
|
|
get { defaults.bool(forKey: Key.hasCompletedOnboarding) }
|
|
set { defaults.set(newValue, forKey: Key.hasCompletedOnboarding) }
|
|
}
|
|
}
|