新增: 设置页 UX 重构(master-detail 左导航 + 搜索 + 即时反馈 + 导入导出)
- SettingsNav 左导航 7 类 + 顶部搜索(索引匹配 label/desc 高亮定位) - GeneralPanel 拆分 Appearance/Performance/Advanced Section - SettingRow 统一行 + 即时反馈(已保存)+ 下轮生效 badge - 统一组件库 settings.css(scoped 重复 class 抽全局) - 导入导出(默认排除 keyring 密钥) - activeCategory 持久化 + 窄屏折叠 tab
This commit is contained in:
+40
-4
@@ -3,6 +3,25 @@ export default {
|
||||
// ===== Page title =====
|
||||
title: '⚙️ Settings',
|
||||
|
||||
// ===== Left nav categories (phase 3 master-detail) =====
|
||||
navAppearance: 'Appearance',
|
||||
navAiModel: 'AI Models',
|
||||
navKnowledge: 'Knowledge',
|
||||
navPerformance: 'Performance',
|
||||
navSecurity: 'Security',
|
||||
navAdvanced: 'Advanced',
|
||||
|
||||
// ===== Settings search (phase 4) =====
|
||||
searchPlaceholder: 'Search settings…',
|
||||
searchNoResult: 'No results',
|
||||
|
||||
// ===== Instant feedback (phase 5 SettingRow) =====
|
||||
savedHint: '✓ Saved',
|
||||
nextRoundBadge: 'Next message',
|
||||
|
||||
// ===== Connection mgmt (phase 7: experimental badge, not wired to AI yet) =====
|
||||
experimentalBadge: 'Experimental · not wired to AI tools',
|
||||
|
||||
// ===== AI Provider panel =====
|
||||
panelAiProvider: '🤖 AI Model Config',
|
||||
addProvider: '+ Add Provider',
|
||||
@@ -73,6 +92,10 @@ export default {
|
||||
|
||||
// ===== General settings panel =====
|
||||
panelGeneral: '🎨 General',
|
||||
// 阶段2 UX 重构:GeneralPanel 拆 3 Section 后各 Section 标题
|
||||
sectionAppearance: '🎨 Appearance',
|
||||
sectionPerformance: '⚡ Performance',
|
||||
sectionAdvanced: '⚙️ Advanced',
|
||||
labelTheme: 'Theme',
|
||||
descTheme: 'Dark / light',
|
||||
themeDark: '🌙 Dark',
|
||||
@@ -97,6 +120,9 @@ export default {
|
||||
labelShowTokenUsage: 'Show token usage',
|
||||
descShowTokenUsage: 'Show token consumption of each reply in conversations',
|
||||
|
||||
labelStreamingMd: 'Streaming Markdown rendering',
|
||||
descStreamingMd: 'Render code blocks/lists/headings during streaming (unclosed code blocks degrade to plain text to avoid flicker); when off, only plain text is shown during streaming and full formatting applies after generation completes',
|
||||
|
||||
labelGlobalConcurrency: 'Global max concurrency',
|
||||
descGlobalConcurrency: 'Shared cap on simultaneous LLM requests across all conversations',
|
||||
|
||||
@@ -104,7 +130,8 @@ export default {
|
||||
descPerConvConcurrency: 'Concurrent LLM calls within one conversation (main loop / title / distill shared)',
|
||||
|
||||
labelAgentMaxIterations: 'Agent max iterations',
|
||||
descAgentMaxIterations: 'Max rounds of the agentic loop (stream → tool → feedback) (1-50, default 10); changes take effect on the next message',
|
||||
descAgentMaxIterations: 'Max rounds of the agentic loop (stream → tool → feedback) (0=unlimited, 1-50, default 10); changes take effect on the next message',
|
||||
labelUnlimited: 'Unlimited',
|
||||
|
||||
labelAgentMaxRetries: 'Stream failure retries',
|
||||
descAgentMaxRetries: 'Auto-retry count on stream failure (0-10, default 3); only retries pre-stream failures (no token output yet); mid-stream failures are abandoned',
|
||||
@@ -131,12 +158,9 @@ export default {
|
||||
labelTriggerMode: 'Distill trigger',
|
||||
descTriggerMode: 'When auto-distillation is triggered',
|
||||
triggerOnComplete: 'On conversation complete',
|
||||
triggerOnIdle: 'On conversation idle',
|
||||
triggerManualOnly: 'Manual only',
|
||||
labelMinMessages: 'Min message count',
|
||||
descMinMessages: 'Distillation triggers only after this many messages (filters out small talk noise)',
|
||||
labelIdleTimeout: 'Idle timeout (s)',
|
||||
descIdleTimeout: 'Seconds to wait in idle-trigger mode',
|
||||
labelAutoInject: 'Auto-inject related knowledge',
|
||||
descAutoInject: 'Retrieve related knowledge and inject it into the conversation context during chat',
|
||||
labelVectorEnabled: 'Semantic retrieval (vector)',
|
||||
@@ -159,6 +183,18 @@ export default {
|
||||
toastSetDefaultFail: 'Failed to set default: {msg}',
|
||||
toastConnIncomplete: 'Please fill in Name and Host',
|
||||
|
||||
// ===== Import / Export (phase 6) =====
|
||||
export: 'Export',
|
||||
import: 'Import',
|
||||
exportHint: 'Export all preferences (appSettings + knowledge config) as a JSON file',
|
||||
importHint: 'Import from a JSON file and overwrite current preferences',
|
||||
importConfirm: 'Importing will overwrite all current preferences (appearance / performance / knowledge, etc.). Continue?',
|
||||
importSuccess: 'Imported successfully (some items like concurrency / iterations take effect after restart or next message)',
|
||||
importFail: 'Import failed: {msg}',
|
||||
exportFail: 'Export failed: {msg}',
|
||||
importInvalidJson: 'The file is not a valid DevFlow settings backup (wrong format)',
|
||||
importScopeNote: 'Scope: appSettings + knowledge config (no provider keys)',
|
||||
|
||||
// ===== Confirm dialogs =====
|
||||
confirmDeleteProvider: 'Delete provider "{name}"? This cannot be undone.',
|
||||
confirmDeleteConn: 'Delete connection "{name}"?',
|
||||
|
||||
Reference in New Issue
Block a user