diff --git a/apps/desktop/src/renderer/locales/settings-tasks-copy.ts b/apps/desktop/src/renderer/locales/settings-tasks-copy.ts
index d58505f2e6..721e53cf21 100644
--- a/apps/desktop/src/renderer/locales/settings-tasks-copy.ts
+++ b/apps/desktop/src/renderer/locales/settings-tasks-copy.ts
@@ -51,10 +51,10 @@ export type SettingsTasksCopy = {
purgeUnverified: string;
noMatchTitle: string;
noMatchBody: string;
- moreActions(name: string): string;
- restore: string;
- restoreTask(name: string): string;
+ unarchive: string;
+ unarchiveTask(name: string): string;
delete: string;
+ deleteTask(name: string): string;
emptyTitle: string;
emptyBody: string;
};
@@ -80,10 +80,10 @@ const SETTINGS_TASKS_COPY_BY_LOCALE = {
purgeUnverified: '任务已删除,但无法读取列表确认结果。请重新打开本页查看。',
noMatchTitle: '没有匹配的任务',
noMatchBody: '换个关键词试试。',
- moreActions: (name: string) => `「${name}」的更多操作`,
- restore: '恢复',
- restoreTask: (name: string) => `恢复「${name}」`,
+ unarchive: '取消归档',
+ unarchiveTask: (name: string) => `取消归档「${name}」`,
delete: '彻底删除',
+ deleteTask: (name: string) => `彻底删除「${name}」`,
emptyTitle: '没有已归档的任务',
emptyBody: '在侧栏里归档一个任务后,可以在这里恢复或彻底删除它。',
},
@@ -107,10 +107,10 @@ const SETTINGS_TASKS_COPY_BY_LOCALE = {
purgeUnverified: '任務已刪除,但無法讀取列表確認結果。請重新開啟本頁檢視。',
noMatchTitle: '沒有符合的任務',
noMatchBody: '換個關鍵詞試試。',
- moreActions: (name: string) => `「${name}」的更多操作`,
- restore: '恢復',
- restoreTask: (name: string) => `恢復「${name}」`,
+ unarchive: '取消歸檔',
+ unarchiveTask: (name: string) => `取消歸檔「${name}」`,
delete: '徹底刪除',
+ deleteTask: (name: string) => `徹底刪除「${name}」`,
emptyTitle: '沒有已歸檔的任務',
emptyBody: '在側欄裡歸檔一個任務後,可以在這裡恢復或徹底刪除它。',
},
@@ -142,10 +142,10 @@ const SETTINGS_TASKS_COPY_BY_LOCALE = {
purgeUnverified: 'The tasks were deleted, but the list could not be read back to confirm. Reopen this page to check.',
noMatchTitle: 'No matching tasks',
noMatchBody: 'Try a different search.',
- moreActions: (name: string) => `More actions for ${name}`,
- restore: 'Restore',
- restoreTask: (name: string) => `Restore ${name}`,
+ unarchive: 'Unarchive',
+ unarchiveTask: (name: string) => `Unarchive ${name}`,
delete: 'Delete',
+ deleteTask: (name: string) => `Delete ${name}`,
emptyTitle: 'Nothing archived',
emptyBody: 'Archive a task from the rail to restore or permanently delete it here.',
},
diff --git a/apps/desktop/src/renderer/settings/tasks-settings-page.tsx b/apps/desktop/src/renderer/settings/tasks-settings-page.tsx
index 2b36e16ee2..42c0eae8be 100644
--- a/apps/desktop/src/renderer/settings/tasks-settings-page.tsx
+++ b/apps/desktop/src/renderer/settings/tasks-settings-page.tsx
@@ -21,8 +21,8 @@ import { useCallback, useMemo, useState } from 'react';
import type { ProjectRecord } from '@maka/core/project';
import { formatCompactTimestamp } from '@maka/core/relative-time';
import { runtimeHostProfileUsesHostWorkspace } from '@maka/runtime-host/profile-kind';
-import { Button, EmptyState, MoreMenu, useMountedRef, useToast, useUiLocale } from '@maka/ui';
-import { Archive, ICON_SIZE, Search } from '@maka/ui/icons';
+import { Button, EmptyState, IconButton, useMountedRef, useToast, useUiLocale } from '@maka/ui';
+import { Archive, ICON_SIZE, Search, Trash2, Unarchive } from '@maka/ui/icons';
import { HStack, StackItem } from '@astryxdesign/core';
import { List, ListItem } from '@astryxdesign/core/List';
import { TextInput } from '@astryxdesign/core/TextInput';
@@ -236,25 +236,27 @@ export function TasksSettingsPage(props: ArchivedTasksBridge) {
startContent={}
endContent={
<>
-