优化: 所有剩余UI/UX待办一批完成(持久化+AuditLog+解耦+total+原12大改+P2)
持久化(P1-c):新建 usePersistedRef composable,Tasks/AuditLog/ProjectDetail 等接入 localStorage
AuditLog(P1-d):后端 list_tool_executions 加 WHERE 筛选+返 {items,total,has_more},前端对接+长列折叠+筛选持久化
数据源解耦(P1-g):ProjectDetail projectTasks 按 project_id 独立加载 + ChatInput @项目联想独立加载(不读 store.tasks 当前页)
GitChanges(12a):后端 get_module_commits 加 git rev-list --count 返 total,前端显真实总数
原12大改:Dashboard 统计卡压底行(1)/Projects 列表卡片视图(2)/project_event 埋点排序(3)/TaskDetail 重设计(4)/IdeaDetail 重设计(5)/KnowledgeDetail 重设计(6)/界面持久化+侧栏Ctrl+B+审批数字键(7)/ProjectDetail 三栏改两栏(10)
P2打磨:文件浏览器(FileTree去重/FilePreview行号.md Diff/selectedFilePath归位)/settings反馈(假保存/端口校验)/AI会话(try-catch/scrollIntoView)/后端计数(move_queue事件/timeline total/workflow分页/import_batch分块)/杂项(TopBar/ConfirmDialog键盘/CIStatus i18n/ToolResultBody/ModuleNode/ApprovalDialog全选)
This commit is contained in:
@@ -41,6 +41,14 @@ export default {
|
||||
// UX-260617-08: conversation load/switch failure feedback (network jitter/IPC down → empty list/blank, was silent)
|
||||
loadConvFail: 'Failed to load conversations. Please check your network or backend connection.',
|
||||
switchConvFail: 'Failed to switch conversation. Please retry.',
|
||||
// M30: rename/archive/pin IPC failure feedback (was no try/catch, exceptions leaked to unhandledrejection)
|
||||
renameConvFail: 'Failed to rename. Please retry.',
|
||||
archiveConvFail: 'Failed to {action}. Please retry.',
|
||||
pinConvFail: 'Failed to {action}. Please retry.',
|
||||
archiveAction: 'archive',
|
||||
unarchiveAction: 'unarchive',
|
||||
pinAction: 'pin',
|
||||
unpinAction: 'unpin',
|
||||
// AE-2025-07: Agentic loop progress bar copy
|
||||
// Note: max round / completed tool count are not surfaced by backend this round;
|
||||
// template conditionally omits them. Add *WithMax keys once backend exposes them.
|
||||
|
||||
@@ -240,5 +240,11 @@ export default {
|
||||
// ── AE-2025-04 Session Trust ──
|
||||
// Auto-approval toast (same-session already approved same-kind op: same tool + same dir)
|
||||
autoApprovedToast: 'Auto-approved: {tool}({dir})',
|
||||
|
||||
// ── CIStatus.vue (commit CI checks status card) ──
|
||||
ciTitle: 'CI Checks',
|
||||
ciNFailed: '{n} failed',
|
||||
ciNPending: '{n} pending',
|
||||
ciNPassed: '{n} passed',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ export default {
|
||||
next: 'Next',
|
||||
page: 'Page {n}',
|
||||
last: '(last)',
|
||||
total: '{n} total',
|
||||
},
|
||||
|
||||
risk: {
|
||||
@@ -42,6 +43,7 @@ export default {
|
||||
executing: 'Executing',
|
||||
completed: 'Completed',
|
||||
failed: 'Failed',
|
||||
interrupted: 'Interrupted',
|
||||
},
|
||||
|
||||
decided: {
|
||||
|
||||
@@ -14,6 +14,9 @@ export default {
|
||||
close: 'Close',
|
||||
loading: 'Loading…',
|
||||
unknownError: 'Unknown error',
|
||||
// Collapse/expand (reusable generic verbs for description/log/future long content)
|
||||
expand: 'Expand',
|
||||
collapse: 'Collapse',
|
||||
// Pagination UI (F-260621-02 P3 baseline; off by default, opt-in per-page)
|
||||
pagination: {
|
||||
prev: 'Prev',
|
||||
|
||||
@@ -135,6 +135,8 @@ export default {
|
||||
|
||||
// Native dialog text (confirm / alert)
|
||||
confirmDelete: 'Delete idea "{title}"? This cannot be undone.',
|
||||
// ⑥ Status change confirm (terminal promoted/rejected/archived or leaving approved)
|
||||
confirmStatus: 'Change idea "{title}" status from {from} to {to}?',
|
||||
promoteFailed: 'Promotion failed',
|
||||
evalFailed: 'Evaluation failed',
|
||||
},
|
||||
|
||||
@@ -15,6 +15,12 @@ export default {
|
||||
publish: 'Publish',
|
||||
reject: 'Reject',
|
||||
archive: 'Archive',
|
||||
// ⑤ Operation feedback toast
|
||||
savedToast: 'Saved',
|
||||
publishedToast: 'Published to library',
|
||||
rejectedToast: 'Rejected',
|
||||
archivedToast: 'Archived',
|
||||
createdToast: 'Created, moved to pending',
|
||||
reuseCount: '🔄 Reused {n} times',
|
||||
confidenceBadge: 'Confidence: {label}',
|
||||
contentLabel: 'Content',
|
||||
@@ -83,6 +89,7 @@ export default {
|
||||
createFailed: 'Failed to create knowledge',
|
||||
updateStatusFailed: 'Failed to update status',
|
||||
archiveFailed: 'Failed to archive',
|
||||
saveFailed: 'Failed to save',
|
||||
loadConfigFailed: 'Failed to load config',
|
||||
saveConfigFailed: 'Failed to save config',
|
||||
extractFailed: 'Extraction failed',
|
||||
|
||||
@@ -64,6 +64,8 @@ export default {
|
||||
// Approval actions
|
||||
approvalConfirm: 'Confirm ({count})',
|
||||
approvalCancel: 'Cancel',
|
||||
approvalSelectAll: 'Select all',
|
||||
approvalInvert: 'Invert',
|
||||
// Tech stack
|
||||
techStackLabel: 'Tech Stack',
|
||||
// Tab navigation
|
||||
|
||||
@@ -4,6 +4,10 @@ export default {
|
||||
// Header actions
|
||||
create: '+ New Project',
|
||||
trash: '🗑 Trash',
|
||||
// View mode toggle (compact list default / spacious card)
|
||||
viewModeTitle: 'Switch view mode',
|
||||
viewList: 'List view',
|
||||
viewCard: 'Card view',
|
||||
// New project modal
|
||||
createTitle: 'New Project',
|
||||
nameLabel: 'Project Name',
|
||||
|
||||
@@ -67,8 +67,9 @@ export default {
|
||||
fetchHintSaveFirst: 'Save the provider first, then fetch models',
|
||||
labelWeight: 'Weight',
|
||||
modelListTitle: 'Fetched models ({count})',
|
||||
modelListHint: 'Enabled / weight are session-local edits; the next "Test connection" overwrites with fresh probe results',
|
||||
modelListHint: 'After toggling enabled / weight, click "Save" below to write them into the provider config; the next "Test connection" overwrites with fresh probe results',
|
||||
saveModels: 'Save model config',
|
||||
modelListUnsavedHint: 'Model list has unsaved changes (enabled / weight) — closing or navigating away will discard them',
|
||||
toastFetchOk: 'Fetched {count} models',
|
||||
toastFetchFail: 'Fetch failed: {msg}',
|
||||
fetchFailedTimeout: 'Fetch timed out, check that the Base URL is reachable: {msg}',
|
||||
@@ -213,6 +214,8 @@ export default {
|
||||
// ===== Toast =====
|
||||
toastLoadProviderFail: 'Failed to load providers',
|
||||
toastSaveIncomplete: 'Please fill in all fields (Name / Base URL / API Key / Model)',
|
||||
// L19: confirm before discarding an edited form
|
||||
confirmDiscardUnsaved: 'The form has unsaved changes. Discard them?',
|
||||
toastSaved: 'Saved',
|
||||
toastSaveFail: 'Save failed: {msg}',
|
||||
// P0-2: save-failure classified guidance (persistent banner, not raw Err text)
|
||||
@@ -225,6 +228,7 @@ export default {
|
||||
toastSetDefaultOk: 'Set as default',
|
||||
toastSetDefaultFail: 'Failed to set default: {msg}',
|
||||
toastConnIncomplete: 'Please fill in Name and Host',
|
||||
toastConnPortInvalid: 'Port must be between 1 and 65535',
|
||||
|
||||
// ===== Import / Export (phase 6) =====
|
||||
export: 'Export',
|
||||
|
||||
@@ -62,5 +62,10 @@ export default {
|
||||
workflowEdgeDetail: 'Edge Condition Editor',
|
||||
workflowUnconditional: 'Unconditional',
|
||||
workflowCondPlaceholder: 'Enter condition expression (e.g. outputs.done == true)',
|
||||
// Description collapse (show expand button beyond 400px, Problem4 redesign)
|
||||
expand: 'Expand',
|
||||
collapse: 'Collapse',
|
||||
// Related info panel title (wide-screen right column / info grouping)
|
||||
relatedTitle: 'Related',
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user