bingocode 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/desktop/README.md +30 -0
- package/desktop/bunfig.toml +1 -0
- package/desktop/index.html +17 -0
- package/desktop/package.json +55 -0
- package/desktop/pnpm-lock.yaml +3832 -0
- package/desktop/public/app-icon.jpg +0 -0
- package/desktop/public/fonts/inter-latin-ext.woff2 +0 -0
- package/desktop/public/fonts/inter-latin.woff2 +0 -0
- package/desktop/public/fonts/jetbrains-mono-latin-ext.woff2 +0 -0
- package/desktop/public/fonts/jetbrains-mono-latin.woff2 +0 -0
- package/desktop/public/fonts/manrope-latin-ext.woff2 +0 -0
- package/desktop/public/fonts/manrope-latin.woff2 +0 -0
- package/desktop/public/fonts/material-symbols-outlined.woff2 +0 -0
- package/desktop/public/icons/bilibili.svg +1 -0
- package/desktop/public/icons/douyin.svg +1 -0
- package/desktop/public/icons/github.svg +3 -0
- package/desktop/public/icons/xiaohongshu.svg +1 -0
- package/desktop/scripts/build-macos-arm64.sh +270 -0
- package/desktop/scripts/build-sidecars.ts +183 -0
- package/desktop/scripts/build-windows-x64.ps1 +295 -0
- package/desktop/scripts/scan-missing-imports.ts +235 -0
- package/desktop/sidecars/claude-sidecar.ts +156 -0
- package/desktop/src/App.tsx +5 -0
- package/desktop/src/__tests__/agentsSettings.test.tsx +349 -0
- package/desktop/src/__tests__/pages.test.tsx +290 -0
- package/desktop/src/__tests__/skillsSettings.test.tsx +205 -0
- package/desktop/src/api/adapters.ts +12 -0
- package/desktop/src/api/agents.ts +36 -0
- package/desktop/src/api/cliTasks.ts +28 -0
- package/desktop/src/api/client.ts +63 -0
- package/desktop/src/api/computerUse.ts +76 -0
- package/desktop/src/api/filesystem.ts +30 -0
- package/desktop/src/api/hahaOAuth.ts +38 -0
- package/desktop/src/api/models.ts +28 -0
- package/desktop/src/api/providers.ts +63 -0
- package/desktop/src/api/search.ts +29 -0
- package/desktop/src/api/sessions.ts +56 -0
- package/desktop/src/api/settings.ts +20 -0
- package/desktop/src/api/skills.ts +19 -0
- package/desktop/src/api/tasks.ts +36 -0
- package/desktop/src/api/teams.ts +44 -0
- package/desktop/src/api/websocket.ts +164 -0
- package/desktop/src/components/chat/AskUserQuestion.tsx +268 -0
- package/desktop/src/components/chat/AssistantMessage.tsx +29 -0
- package/desktop/src/components/chat/AttachmentGallery.tsx +113 -0
- package/desktop/src/components/chat/ChatInput.tsx +622 -0
- package/desktop/src/components/chat/CodeViewer.tsx +161 -0
- package/desktop/src/components/chat/ComputerUsePermissionModal.test.tsx +174 -0
- package/desktop/src/components/chat/ComputerUsePermissionModal.tsx +311 -0
- package/desktop/src/components/chat/DiffViewer.tsx +157 -0
- package/desktop/src/components/chat/FileSearchMenu.tsx +198 -0
- package/desktop/src/components/chat/ImageGalleryModal.tsx +91 -0
- package/desktop/src/components/chat/InlineImageGallery.tsx +106 -0
- package/desktop/src/components/chat/InlineTaskSummary.tsx +60 -0
- package/desktop/src/components/chat/MermaidRenderer.test.tsx +98 -0
- package/desktop/src/components/chat/MermaidRenderer.tsx +361 -0
- package/desktop/src/components/chat/MessageActionBar.tsx +27 -0
- package/desktop/src/components/chat/MessageList.test.tsx +313 -0
- package/desktop/src/components/chat/MessageList.tsx +249 -0
- package/desktop/src/components/chat/PermissionDialog.tsx +262 -0
- package/desktop/src/components/chat/SessionTaskBar.test.tsx +99 -0
- package/desktop/src/components/chat/SessionTaskBar.tsx +159 -0
- package/desktop/src/components/chat/StreamingIndicator.tsx +41 -0
- package/desktop/src/components/chat/TerminalChrome.tsx +35 -0
- package/desktop/src/components/chat/ThinkingBlock.tsx +87 -0
- package/desktop/src/components/chat/ToolCallBlock.tsx +247 -0
- package/desktop/src/components/chat/ToolCallGroup.tsx +617 -0
- package/desktop/src/components/chat/ToolResultBlock.tsx +107 -0
- package/desktop/src/components/chat/UserMessage.tsx +38 -0
- package/desktop/src/components/chat/chatBlocks.test.tsx +136 -0
- package/desktop/src/components/chat/clipboard.ts +25 -0
- package/desktop/src/components/chat/composerUtils.test.ts +55 -0
- package/desktop/src/components/chat/composerUtils.ts +149 -0
- package/desktop/src/components/controls/ModelSelector.tsx +156 -0
- package/desktop/src/components/controls/PermissionModeSelector.tsx +229 -0
- package/desktop/src/components/layout/AppShell.tsx +107 -0
- package/desktop/src/components/layout/ContentRouter.tsx +27 -0
- package/desktop/src/components/layout/ProjectFilter.tsx +126 -0
- package/desktop/src/components/layout/Sidebar.test.tsx +158 -0
- package/desktop/src/components/layout/Sidebar.tsx +384 -0
- package/desktop/src/components/layout/StatusBar.tsx +31 -0
- package/desktop/src/components/layout/TabBar.test.tsx +136 -0
- package/desktop/src/components/layout/TabBar.tsx +318 -0
- package/desktop/src/components/layout/TitleBar.tsx +96 -0
- package/desktop/src/components/layout/WindowControls.test.tsx +69 -0
- package/desktop/src/components/layout/WindowControls.tsx +89 -0
- package/desktop/src/components/markdown/MarkdownRenderer.test.tsx +100 -0
- package/desktop/src/components/markdown/MarkdownRenderer.tsx +229 -0
- package/desktop/src/components/settings/ClaudeOfficialLogin.tsx +107 -0
- package/desktop/src/components/shared/Button.tsx +63 -0
- package/desktop/src/components/shared/CopyButton.tsx +58 -0
- package/desktop/src/components/shared/DirectoryPicker.tsx +316 -0
- package/desktop/src/components/shared/Dropdown.tsx +91 -0
- package/desktop/src/components/shared/Input.tsx +38 -0
- package/desktop/src/components/shared/Modal.tsx +65 -0
- package/desktop/src/components/shared/ProjectContextChip.tsx +30 -0
- package/desktop/src/components/shared/Spinner.tsx +30 -0
- package/desktop/src/components/shared/Textarea.tsx +38 -0
- package/desktop/src/components/shared/Toast.tsx +47 -0
- package/desktop/src/components/shared/UpdateChecker.tsx +90 -0
- package/desktop/src/components/skills/SkillDetail.test.tsx +89 -0
- package/desktop/src/components/skills/SkillDetail.tsx +403 -0
- package/desktop/src/components/skills/SkillList.tsx +254 -0
- package/desktop/src/components/tasks/DayOfWeekPicker.tsx +57 -0
- package/desktop/src/components/tasks/NewTaskModal.tsx +407 -0
- package/desktop/src/components/tasks/PromptEditor.tsx +74 -0
- package/desktop/src/components/tasks/TaskEmptyState.tsx +30 -0
- package/desktop/src/components/tasks/TaskList.tsx +46 -0
- package/desktop/src/components/tasks/TaskRow.tsx +253 -0
- package/desktop/src/components/tasks/TaskRunsPanel.tsx +195 -0
- package/desktop/src/components/teams/TeamStatusBar.tsx +147 -0
- package/desktop/src/config/providerPresets.ts +78 -0
- package/desktop/src/config/spinnerVerbs.ts +193 -0
- package/desktop/src/hooks/useKeyboardShortcuts.ts +60 -0
- package/desktop/src/i18n/index.ts +54 -0
- package/desktop/src/i18n/locales/en.ts +670 -0
- package/desktop/src/i18n/locales/zh.ts +670 -0
- package/desktop/src/lib/__tests__/cronDescribe.test.ts +93 -0
- package/desktop/src/lib/cronDescribe.ts +188 -0
- package/desktop/src/lib/desktopRuntime.ts +54 -0
- package/desktop/src/lib/parseRunOutput.ts +79 -0
- package/desktop/src/main.tsx +13 -0
- package/desktop/src/mocks/data.ts +202 -0
- package/desktop/src/pages/ActiveSession.test.tsx +181 -0
- package/desktop/src/pages/ActiveSession.tsx +219 -0
- package/desktop/src/pages/AdapterSettings.tsx +375 -0
- package/desktop/src/pages/AgentTeams.tsx +200 -0
- package/desktop/src/pages/ComputerUseSettings.tsx +420 -0
- package/desktop/src/pages/EmptySession.tsx +518 -0
- package/desktop/src/pages/NewTaskModal.tsx +346 -0
- package/desktop/src/pages/ScheduledTasks.tsx +66 -0
- package/desktop/src/pages/ScheduledTasksEmpty.tsx +152 -0
- package/desktop/src/pages/ScheduledTasksList.tsx +416 -0
- package/desktop/src/pages/SessionControls.tsx +460 -0
- package/desktop/src/pages/Settings.tsx +1448 -0
- package/desktop/src/pages/ToolInspection.tsx +235 -0
- package/desktop/src/stores/adapterStore.ts +106 -0
- package/desktop/src/stores/agentStore.ts +34 -0
- package/desktop/src/stores/chatStore.test.ts +505 -0
- package/desktop/src/stores/chatStore.ts +850 -0
- package/desktop/src/stores/cliTaskStore.ts +152 -0
- package/desktop/src/stores/hahaOAuthStore.test.ts +77 -0
- package/desktop/src/stores/hahaOAuthStore.ts +97 -0
- package/desktop/src/stores/providerStore.ts +101 -0
- package/desktop/src/stores/sessionStore.test.ts +63 -0
- package/desktop/src/stores/sessionStore.ts +102 -0
- package/desktop/src/stores/settingsStore.ts +120 -0
- package/desktop/src/stores/skillStore.ts +51 -0
- package/desktop/src/stores/tabStore.ts +169 -0
- package/desktop/src/stores/taskStore.ts +68 -0
- package/desktop/src/stores/teamStore.ts +344 -0
- package/desktop/src/stores/uiStore.ts +100 -0
- package/desktop/src/stores/updateStore.test.ts +71 -0
- package/desktop/src/stores/updateStore.ts +221 -0
- package/desktop/src/theme/globals.css +465 -0
- package/desktop/src/types/adapter.ts +33 -0
- package/desktop/src/types/chat.ts +152 -0
- package/desktop/src/types/cliTask.ts +24 -0
- package/desktop/src/types/provider.ts +62 -0
- package/desktop/src/types/session.ts +27 -0
- package/desktop/src/types/settings.ts +22 -0
- package/desktop/src/types/skill.ts +38 -0
- package/desktop/src/types/task.ts +56 -0
- package/desktop/src/types/team.ts +38 -0
- package/desktop/src-tauri/Cargo.lock +5549 -0
- package/desktop/src-tauri/Cargo.toml +20 -0
- package/desktop/src-tauri/app-icon.svg +13 -0
- package/desktop/src-tauri/build.rs +3 -0
- package/desktop/src-tauri/capabilities/default.json +106 -0
- package/desktop/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml +5 -0
- package/desktop/src-tauri/icons/android/values/ic_launcher_background.xml +4 -0
- package/desktop/src-tauri/icons/icon.icns +0 -0
- package/desktop/src-tauri/icons/icon.ico +0 -0
- package/desktop/src-tauri/src/lib.rs +408 -0
- package/desktop/src-tauri/src/main.rs +6 -0
- package/desktop/src-tauri/tauri.conf.json +78 -0
- package/desktop/src-tauri/tauri.macos.conf.json +18 -0
- package/desktop/src-tauri/tauri.release-ci.json +5 -0
- package/desktop/src-tauri/tauri.windows.conf.json +16 -0
- package/desktop/src-tauri/windows-installer-hooks.nsh +17 -0
- package/desktop/tsconfig.json +25 -0
- package/desktop/vite.config.ts +26 -0
- package/desktop/vitest.config.ts +18 -0
- package/package.json +1 -1
- package/src/commands/desktop/desktop.tsx +9 -0
- package/src/commands/desktop/index.ts +26 -0
|
@@ -0,0 +1,670 @@
|
|
|
1
|
+
export const en = {
|
|
2
|
+
// ─── Common ──────────────────────────────────────
|
|
3
|
+
'common.cancel': 'Cancel',
|
|
4
|
+
'common.save': 'Save',
|
|
5
|
+
'common.delete': 'Delete',
|
|
6
|
+
'common.add': 'Add',
|
|
7
|
+
'common.run': 'Run',
|
|
8
|
+
'common.send': 'Send',
|
|
9
|
+
'common.stop': 'Stop',
|
|
10
|
+
'common.rename': 'Rename',
|
|
11
|
+
'common.retry': 'Retry',
|
|
12
|
+
'common.loading': 'Loading...',
|
|
13
|
+
'common.select': 'Select',
|
|
14
|
+
'common.enable': 'Enable',
|
|
15
|
+
'common.disable': 'Disable',
|
|
16
|
+
'common.active': 'ACTIVE',
|
|
17
|
+
|
|
18
|
+
// ─── Sidebar ──────────────────────────────────────
|
|
19
|
+
'sidebar.newSession': 'New session',
|
|
20
|
+
'sidebar.scheduled': 'Scheduled',
|
|
21
|
+
'sidebar.settings': 'Settings',
|
|
22
|
+
'sidebar.searchPlaceholder': 'Search sessions...',
|
|
23
|
+
'sidebar.noSessions': 'No sessions yet',
|
|
24
|
+
'sidebar.noMatching': 'No matching sessions',
|
|
25
|
+
'sidebar.sessionListFailed': 'Session list failed to load',
|
|
26
|
+
'sidebar.missingDir': 'missing dir',
|
|
27
|
+
'sidebar.allProjects': 'All projects',
|
|
28
|
+
'sidebar.other': 'Other',
|
|
29
|
+
'sidebar.timeGroup.today': 'Today',
|
|
30
|
+
'sidebar.timeGroup.yesterday': 'Yesterday',
|
|
31
|
+
'sidebar.timeGroup.last7days': 'Last 7 days',
|
|
32
|
+
'sidebar.timeGroup.last30days': 'Last 30 days',
|
|
33
|
+
'sidebar.timeGroup.older': 'Older',
|
|
34
|
+
|
|
35
|
+
// ─── Title Bar ──────────────────────────────────────
|
|
36
|
+
'titlebar.code': 'Code',
|
|
37
|
+
'titlebar.terminal': 'Terminal',
|
|
38
|
+
'titlebar.history': 'History',
|
|
39
|
+
|
|
40
|
+
// ─── Status Bar ──────────────────────────────────────
|
|
41
|
+
'status.connected': 'Connected',
|
|
42
|
+
'status.connecting': 'Connecting...',
|
|
43
|
+
'status.reconnecting': 'Reconnecting...',
|
|
44
|
+
'status.disconnected': 'Disconnected',
|
|
45
|
+
|
|
46
|
+
// ─── Settings ──────────────────────────────────────
|
|
47
|
+
'settings.title': 'Settings',
|
|
48
|
+
'settings.tab.providers': 'Providers',
|
|
49
|
+
'settings.tab.permissions': 'Permissions',
|
|
50
|
+
'settings.tab.general': 'General',
|
|
51
|
+
'settings.tab.skills': 'Skills',
|
|
52
|
+
|
|
53
|
+
// Settings > Claude Official Login
|
|
54
|
+
'settings.claudeOfficialLogin.intro': 'Using official Claude models requires signing in to your Claude.ai account. Click the button below to open the official Claude login page in your browser; you\'ll be returned here after authorizing.',
|
|
55
|
+
'settings.claudeOfficialLogin.loginButton': 'Sign in to Claude',
|
|
56
|
+
'settings.claudeOfficialLogin.loginStarting': 'Opening…',
|
|
57
|
+
'settings.claudeOfficialLogin.logoutButton': 'Sign out',
|
|
58
|
+
'settings.claudeOfficialLogin.logoutProcessing': 'Processing…',
|
|
59
|
+
'settings.claudeOfficialLogin.loggedInPrefix': 'Signed in (Claude',
|
|
60
|
+
'settings.claudeOfficialLogin.subTypeUnknown': 'Unknown',
|
|
61
|
+
'settings.claudeOfficialLogin.errorPrefix': 'Error: ',
|
|
62
|
+
'settings.claudeOfficialLogin.openBrowserFailed': 'Failed to open browser; please visit the authorization URL manually.',
|
|
63
|
+
|
|
64
|
+
// Settings > Providers
|
|
65
|
+
'settings.providers.title': 'Providers',
|
|
66
|
+
'settings.providers.description': 'Manage API providers for model access.',
|
|
67
|
+
'settings.providers.addProvider': 'Add Provider',
|
|
68
|
+
'settings.providers.officialName': 'Claude Official',
|
|
69
|
+
'settings.providers.officialDesc': 'Anthropic native — no API key required',
|
|
70
|
+
'settings.providers.connected': 'Connected ({latency}ms)',
|
|
71
|
+
'settings.providers.failed': 'Failed: {error}',
|
|
72
|
+
'settings.providers.connectivityOk': '① Connectivity ({latency}ms)',
|
|
73
|
+
'settings.providers.connectivityFailed': '① Connectivity failed: {error}',
|
|
74
|
+
'settings.providers.proxyOk': '② Proxy pipeline ({latency}ms)',
|
|
75
|
+
'settings.providers.proxyFailed': '② Proxy failed: {error}',
|
|
76
|
+
'settings.providers.confirmDelete': 'Delete provider "{name}"? This cannot be undone.',
|
|
77
|
+
'settings.providers.activate': 'Activate',
|
|
78
|
+
'settings.providers.test': 'Test',
|
|
79
|
+
'settings.providers.edit': 'Edit',
|
|
80
|
+
'settings.providers.requestFailed': 'Request failed',
|
|
81
|
+
'settings.providers.addTitle': 'Add Provider',
|
|
82
|
+
'settings.providers.editTitle': 'Edit Provider',
|
|
83
|
+
'settings.providers.preset': 'Preset',
|
|
84
|
+
'settings.providers.name': 'Name',
|
|
85
|
+
'settings.providers.namePlaceholder': 'Provider name',
|
|
86
|
+
'settings.providers.notes': 'Notes',
|
|
87
|
+
'settings.providers.notesPlaceholder': 'Optional notes...',
|
|
88
|
+
'settings.providers.baseUrl': 'Base URL',
|
|
89
|
+
'settings.providers.baseUrlPlaceholder': 'https://api.example.com/anthropic',
|
|
90
|
+
'settings.providers.apiKey': 'API Key',
|
|
91
|
+
'settings.providers.apiKeyKeep': 'API Key (leave blank to keep current)',
|
|
92
|
+
'settings.providers.modelMapping': 'Model Mapping',
|
|
93
|
+
'settings.providers.mainModel': 'Main Model',
|
|
94
|
+
'settings.providers.haikuModel': 'Haiku Model',
|
|
95
|
+
'settings.providers.sonnetModel': 'Sonnet Model',
|
|
96
|
+
'settings.providers.opusModel': 'Opus Model',
|
|
97
|
+
'settings.providers.sameAsMain': 'Same as main',
|
|
98
|
+
'settings.providers.testConnection': 'Test Connection',
|
|
99
|
+
'settings.providers.settingsJson': 'Settings JSON',
|
|
100
|
+
'settings.providers.settingsJsonDesc': '~/.claude/settings.json — edit directly, will be written on save.',
|
|
101
|
+
'settings.providers.jsonError': 'JSON syntax error: {error}',
|
|
102
|
+
'settings.providers.apiFormat': 'API Format',
|
|
103
|
+
'settings.providers.apiFormatAnthropic': 'Anthropic Messages (native)',
|
|
104
|
+
'settings.providers.apiFormatOpenaiChat': 'OpenAI Chat Completions (proxy)',
|
|
105
|
+
'settings.providers.apiFormatOpenaiResponses': 'OpenAI Responses API (proxy)',
|
|
106
|
+
'settings.providers.proxyHint': 'Requests will be translated via the local proxy',
|
|
107
|
+
|
|
108
|
+
// Settings > Permissions
|
|
109
|
+
'settings.permissions.title': 'Permission Mode',
|
|
110
|
+
'settings.permissions.description': 'Controls how tool execution permissions are handled.',
|
|
111
|
+
'settings.permissions.default': 'Ask permissions',
|
|
112
|
+
'settings.permissions.defaultDesc': 'Ask before executing tools',
|
|
113
|
+
'settings.permissions.acceptEdits': 'Accept edits',
|
|
114
|
+
'settings.permissions.acceptEditsDesc': 'Auto-approve file edits, ask for others',
|
|
115
|
+
'settings.permissions.plan': 'Plan mode',
|
|
116
|
+
'settings.permissions.planDesc': 'Think and plan without executing',
|
|
117
|
+
'settings.permissions.bypass': 'Bypass all',
|
|
118
|
+
'settings.permissions.bypassDesc': 'Skip all permission checks (dangerous)',
|
|
119
|
+
|
|
120
|
+
// Settings > Adapters
|
|
121
|
+
'settings.tab.adapters': 'IM Adapters',
|
|
122
|
+
'settings.adapters.description': 'Configure IM adapters to chat with Claude Code via Telegram or Feishu.',
|
|
123
|
+
'settings.adapters.telegram': 'Telegram',
|
|
124
|
+
'settings.adapters.feishu': 'Feishu',
|
|
125
|
+
'settings.adapters.botToken': 'Bot Token',
|
|
126
|
+
'settings.adapters.botTokenPlaceholder': 'Paste token from @BotFather',
|
|
127
|
+
'settings.adapters.appId': 'App ID',
|
|
128
|
+
'settings.adapters.appIdPlaceholder': 'e.g. cli_xxx',
|
|
129
|
+
'settings.adapters.appSecret': 'App Secret',
|
|
130
|
+
'settings.adapters.appSecretPlaceholder': 'From Feishu Open Platform',
|
|
131
|
+
'settings.adapters.encryptKey': 'Encrypt Key',
|
|
132
|
+
'settings.adapters.encryptKeyPlaceholder': 'Optional',
|
|
133
|
+
'settings.adapters.verificationToken': 'Verification Token',
|
|
134
|
+
'settings.adapters.verificationTokenPlaceholder': 'Optional',
|
|
135
|
+
'settings.adapters.allowedUsers': 'Allowed Users',
|
|
136
|
+
'settings.adapters.allowedUsersHint': 'Comma-separated. Leave empty to allow everyone.',
|
|
137
|
+
'settings.adapters.tgAllowedUsersPlaceholder': 'e.g. 123456789, 987654321',
|
|
138
|
+
'settings.adapters.fsAllowedUsersPlaceholder': 'e.g. ou_xxx, ou_yyy',
|
|
139
|
+
'settings.adapters.defaultProject': 'Default Project',
|
|
140
|
+
'settings.adapters.defaultProjectHint': 'Default working directory for new IM sessions. If empty, the bot will ask you to choose.',
|
|
141
|
+
'settings.adapters.streamingCard': 'Streaming Card Mode',
|
|
142
|
+
'settings.adapters.streamingCardDesc': 'Real-time card updates for better experience',
|
|
143
|
+
'settings.adapters.serverUrl': 'Server URL',
|
|
144
|
+
'settings.adapters.serverUrlPlaceholder': 'ws://127.0.0.1:3456',
|
|
145
|
+
'settings.adapters.save': 'Save',
|
|
146
|
+
'settings.adapters.saved': 'Saved',
|
|
147
|
+
'settings.adapters.saving': 'Saving...',
|
|
148
|
+
'settings.adapters.startHint': 'After saving, run adapter: cd adapters && bun run {platform}',
|
|
149
|
+
'settings.adapters.pairing': 'Pairing',
|
|
150
|
+
'settings.adapters.pairingDesc': 'Generate a pairing code and send it to the Bot via IM private chat to bind your identity.',
|
|
151
|
+
'settings.adapters.generateCode': 'Generate Code',
|
|
152
|
+
'settings.adapters.regenerateCode': 'Regenerate',
|
|
153
|
+
'settings.adapters.codeExpired': 'Expired',
|
|
154
|
+
'settings.adapters.codeExpiresIn': 'Expires in',
|
|
155
|
+
'settings.adapters.minutes': 'min',
|
|
156
|
+
'settings.adapters.pairingCodeHint': 'Send this code to the Bot in Feishu or Telegram private chat.',
|
|
157
|
+
'settings.adapters.pairedUsers': 'Paired Users',
|
|
158
|
+
'settings.adapters.noPairedUsers': 'No paired users yet',
|
|
159
|
+
'settings.adapters.unbind': 'Unbind',
|
|
160
|
+
'settings.adapters.unbindConfirm': 'Are you sure you want to unbind this user? They will need to re-pair to use the bot.',
|
|
161
|
+
'settings.adapters.platform.telegram': 'Telegram',
|
|
162
|
+
'settings.adapters.platform.feishu': 'Feishu',
|
|
163
|
+
|
|
164
|
+
// Settings > Agents
|
|
165
|
+
'settings.tab.agents': 'Agents',
|
|
166
|
+
'settings.agents.title': 'Installed Agents',
|
|
167
|
+
'settings.agents.description': 'Browse agents available to Claude across built-in, project, and user sources. Use /agents in TUI to inspect active sources and overrides.',
|
|
168
|
+
'settings.agents.browserTitle': 'Browse installed agents',
|
|
169
|
+
'settings.agents.browserEyebrow': 'Agent Browser',
|
|
170
|
+
'settings.agents.entryEyebrow': 'Agent Profile',
|
|
171
|
+
'settings.agents.empty': 'No agents available yet.',
|
|
172
|
+
'settings.agents.emptyHint': 'Add agent definitions in your Claude settings or project to see them here.',
|
|
173
|
+
'settings.agents.model': 'Model',
|
|
174
|
+
'settings.agents.tools': 'Tools',
|
|
175
|
+
'settings.agents.systemPrompt': 'System Prompt',
|
|
176
|
+
'settings.agents.noDescription': 'No description',
|
|
177
|
+
'settings.agents.noSystemPrompt': 'No system prompt defined.',
|
|
178
|
+
'settings.agents.backToList': 'Back to list',
|
|
179
|
+
'settings.agents.agentCount': '{count} agents',
|
|
180
|
+
'settings.agents.summary.totalAgents': 'Total agents',
|
|
181
|
+
'settings.agents.summary.activeAgents': 'Active agents',
|
|
182
|
+
'settings.agents.summary.sources': 'Sources',
|
|
183
|
+
'settings.agents.summary.source': 'Source',
|
|
184
|
+
'settings.agents.summary.model': 'Model',
|
|
185
|
+
'settings.agents.summary.tools': 'Tools',
|
|
186
|
+
'settings.agents.summary.status': 'Status',
|
|
187
|
+
'settings.agents.groupHint': '{count} agents available from {source}',
|
|
188
|
+
'settings.agents.status.active': 'Active',
|
|
189
|
+
'settings.agents.status.available': 'Available',
|
|
190
|
+
'settings.agents.overriddenBy': 'Overridden by {source}',
|
|
191
|
+
'settings.agents.overriddenByShort': 'shadowed by {source}',
|
|
192
|
+
'settings.agents.toolCount': '{count} tools',
|
|
193
|
+
'settings.agents.noTools': 'No tool restriction',
|
|
194
|
+
'settings.agents.promptHint': 'Read the current system prompt and compare how this agent is scoped.',
|
|
195
|
+
'settings.agents.source.userSettings': 'User',
|
|
196
|
+
'settings.agents.source.projectSettings': 'Project',
|
|
197
|
+
'settings.agents.source.localSettings': 'Local',
|
|
198
|
+
'settings.agents.source.policySettings': 'Managed',
|
|
199
|
+
'settings.agents.source.plugin': 'Plugin',
|
|
200
|
+
'settings.agents.source.flagSettings': 'CLI arg',
|
|
201
|
+
'settings.agents.source.built-in': 'Built-in',
|
|
202
|
+
|
|
203
|
+
// Settings > Skills
|
|
204
|
+
'settings.skills.title': 'Installed Skills',
|
|
205
|
+
'settings.skills.description': 'Skills extend Claude with specialized capabilities. Manage skills in ~/.claude/skills/',
|
|
206
|
+
'settings.skills.browserTitle': 'Browse installed skills',
|
|
207
|
+
'settings.skills.browserEyebrow': 'Skill Browser',
|
|
208
|
+
'settings.skills.browserDescription': 'Inspect bundled, project, and user skills, compare their scope, and open each skill folder to read its docs and source files.',
|
|
209
|
+
'settings.skills.entryEyebrow': 'Skill Entry',
|
|
210
|
+
'settings.skills.slashCommand': '/slash',
|
|
211
|
+
'settings.skills.tokenEstimate': '~{count} tokens',
|
|
212
|
+
'settings.skills.tokenEstimateShort': '~{count}',
|
|
213
|
+
'settings.skills.summary.totalSkills': 'Total skills',
|
|
214
|
+
'settings.skills.summary.totalFiles': 'Files',
|
|
215
|
+
'settings.skills.summary.sources': 'Sources',
|
|
216
|
+
'settings.skills.summary.tokens': 'Estimated tokens',
|
|
217
|
+
'settings.skills.summary.source': 'Source',
|
|
218
|
+
'settings.skills.summary.entry': 'Entry',
|
|
219
|
+
'settings.skills.groupHint': '{count} skills available from {source}',
|
|
220
|
+
'settings.skills.ready': 'Ready',
|
|
221
|
+
'settings.skills.unavailable': 'Unavailable',
|
|
222
|
+
'settings.skills.empty': 'No skills installed',
|
|
223
|
+
'settings.skills.emptyHint': 'Add skills to ~/.claude/skills/ to get started',
|
|
224
|
+
'settings.skills.back': 'Back to list',
|
|
225
|
+
'settings.skills.files': 'files',
|
|
226
|
+
'settings.skills.entryFile': 'entry file',
|
|
227
|
+
'settings.skills.metaTitle': 'Skill metadata',
|
|
228
|
+
'settings.skills.filesPanel': 'Files',
|
|
229
|
+
'settings.skills.filesPanelHint': 'Browse the entry file and supporting implementation files.',
|
|
230
|
+
'settings.skills.readingMode': 'Viewing in {mode}',
|
|
231
|
+
'settings.skills.docMode': 'document mode',
|
|
232
|
+
'settings.skills.codeMode': 'code mode',
|
|
233
|
+
'settings.skills.source.user': 'User',
|
|
234
|
+
'settings.skills.source.project': 'Project',
|
|
235
|
+
'settings.skills.source.plugin': 'Plugin',
|
|
236
|
+
'settings.skills.source.mcp': 'MCP',
|
|
237
|
+
'settings.skills.source.bundled': 'Built-in',
|
|
238
|
+
|
|
239
|
+
// Settings > About
|
|
240
|
+
'settings.tab.about': 'About',
|
|
241
|
+
'settings.about.version': 'Version',
|
|
242
|
+
'settings.about.repo': 'GitHub Repository',
|
|
243
|
+
'settings.about.starHint': 'If this project helps you, consider giving it a Star',
|
|
244
|
+
'settings.about.author': 'Author',
|
|
245
|
+
'settings.about.socialMedia': 'Social Media',
|
|
246
|
+
'settings.about.updates': 'App Updates',
|
|
247
|
+
'settings.about.updatesDesc': 'Check GitHub Releases, download the installer, and relaunch after install.',
|
|
248
|
+
|
|
249
|
+
// Settings > Computer Use
|
|
250
|
+
'settings.tab.computerUse': 'Computer Use',
|
|
251
|
+
'settings.computerUse.title': 'Computer Use',
|
|
252
|
+
'settings.computerUse.description': 'Allow Claude to take screenshots, click, type, and control your computer. Requires Python 3. On macOS, accessibility permissions are also needed.',
|
|
253
|
+
'settings.computerUse.notSupported': 'Computer Use is only supported on macOS and Windows.',
|
|
254
|
+
'settings.computerUse.python': 'Python 3',
|
|
255
|
+
'settings.computerUse.pythonNotFound': 'Not installed. Please install Python 3 first.',
|
|
256
|
+
'settings.computerUse.pythonFound': 'Installed',
|
|
257
|
+
'settings.computerUse.venv': 'Virtual Environment',
|
|
258
|
+
'settings.computerUse.venvReady': 'Ready',
|
|
259
|
+
'settings.computerUse.venvNotReady': 'Not created',
|
|
260
|
+
'settings.computerUse.deps': 'Dependencies',
|
|
261
|
+
'settings.computerUse.depsReady': 'Installed',
|
|
262
|
+
'settings.computerUse.depsNotReady': 'Not installed',
|
|
263
|
+
'settings.computerUse.accessibility': 'Accessibility Permission',
|
|
264
|
+
'settings.computerUse.screenRecording': 'Screen Recording Permission',
|
|
265
|
+
'settings.computerUse.permGranted': 'Granted',
|
|
266
|
+
'settings.computerUse.permDenied': 'Denied — open System Settings > Privacy & Security to grant',
|
|
267
|
+
'settings.computerUse.permUnknown': 'Setup environment first to check',
|
|
268
|
+
'settings.computerUse.permScreenRecordingUnknownSoft': 'Auto-detection can be unreliable here; if System Settings already shows it enabled, Computer Use can usually proceed',
|
|
269
|
+
'settings.computerUse.permScreenRecordingManual': 'Cannot auto-detect — please verify in System Settings',
|
|
270
|
+
'settings.computerUse.setupBtn': 'Install Environment',
|
|
271
|
+
'settings.computerUse.setupRunning': 'Installing...',
|
|
272
|
+
'settings.computerUse.setupSuccess': 'Environment setup complete!',
|
|
273
|
+
'settings.computerUse.setupFail': 'Setup failed',
|
|
274
|
+
'settings.computerUse.allReady': 'All checks passed. Computer Use is ready.',
|
|
275
|
+
'settings.computerUse.recheckBtn': 'Recheck Status',
|
|
276
|
+
'settings.computerUse.requirementsLabel': 'Required packages',
|
|
277
|
+
'settings.computerUse.appsTitle': 'Authorized Apps',
|
|
278
|
+
'settings.computerUse.appsDescription': 'Pre-authorize apps for Computer Use. Authorized apps can be controlled by Claude without runtime prompts.',
|
|
279
|
+
'settings.computerUse.appsLoading': 'Loading installed apps...',
|
|
280
|
+
'settings.computerUse.appsEmpty': 'No installed apps found. Please setup the environment first.',
|
|
281
|
+
'settings.computerUse.appsSearch': 'Search apps...',
|
|
282
|
+
'settings.computerUse.appsSaved': 'Saved',
|
|
283
|
+
'settings.computerUse.openAccessibility': 'Open Accessibility Settings',
|
|
284
|
+
'settings.computerUse.openScreenRecording': 'Open Screen Recording Settings',
|
|
285
|
+
'settings.computerUse.permRestartHint': 'After granting, restart the app for it to take effect.',
|
|
286
|
+
'settings.computerUse.flagClipboard': 'Clipboard Access',
|
|
287
|
+
'settings.computerUse.flagSystemKeys': 'System Key Combos',
|
|
288
|
+
|
|
289
|
+
// Settings > General
|
|
290
|
+
'settings.general.appearanceTitle': 'Appearance',
|
|
291
|
+
'settings.general.appearanceDescription': 'Switch between the original light workspace and the new dark workspace.',
|
|
292
|
+
'settings.general.appearance.light': 'Light',
|
|
293
|
+
'settings.general.appearance.dark': 'Dark',
|
|
294
|
+
'settings.general.languageTitle': 'Language',
|
|
295
|
+
'settings.general.languageDescription': 'Choose the display language for the application.',
|
|
296
|
+
'settings.general.effortTitle': 'Effort Level',
|
|
297
|
+
'settings.general.effortDescription': 'Controls how much computation the model uses.',
|
|
298
|
+
'settings.general.effort.low': 'Low',
|
|
299
|
+
'settings.general.effort.medium': 'Medium',
|
|
300
|
+
'settings.general.effort.high': 'High',
|
|
301
|
+
'settings.general.effort.max': 'Max',
|
|
302
|
+
|
|
303
|
+
// ─── Empty Session ──────────────────────────────────────
|
|
304
|
+
'empty.title': 'New session',
|
|
305
|
+
'empty.subtitle': 'Start a fresh coding session. Claude is ready to help you build, debug, and architect your project.',
|
|
306
|
+
'empty.placeholder': 'Ask anything...',
|
|
307
|
+
'empty.addFiles': 'Add files or photos',
|
|
308
|
+
'empty.slashCommands': 'Slash commands',
|
|
309
|
+
'empty.failedToCreate': 'Failed to create session',
|
|
310
|
+
|
|
311
|
+
// ─── Chat Input ──────────────────────────────────────
|
|
312
|
+
'chat.placeholder': 'Ask Claude to edit, debug or explain...',
|
|
313
|
+
'chat.placeholderMissing': 'This session points to a missing workspace. Create a new session or pick another project.',
|
|
314
|
+
'chat.addFiles': 'Add files or photos',
|
|
315
|
+
'chat.slashCommands': 'Slash commands',
|
|
316
|
+
'chat.navigate': 'navigate',
|
|
317
|
+
'chat.select': 'select',
|
|
318
|
+
'chat.dismiss': 'dismiss',
|
|
319
|
+
'chat.stopTitle': 'Stop generation (Cmd+.)',
|
|
320
|
+
|
|
321
|
+
// ─── Streaming Indicator ──────────────────────────────────────
|
|
322
|
+
'streaming.thinking': 'Thinking',
|
|
323
|
+
'streaming.running': 'Running',
|
|
324
|
+
'streaming.working': 'Working',
|
|
325
|
+
|
|
326
|
+
// ─── Permission Dialog ──────────────────────────────────────
|
|
327
|
+
'permission.allowEditFile': 'Allow Claude to {toolName} {fileName}?',
|
|
328
|
+
'permission.allowEditFileGeneric': 'Allow Claude to {toolName} this file?',
|
|
329
|
+
'permission.allowBash': 'Allow Claude to run this command?',
|
|
330
|
+
'permission.allowTool': 'Allow Claude to use {toolName}?',
|
|
331
|
+
'permission.awaitingApproval': 'Awaiting approval',
|
|
332
|
+
'permission.responded': 'Responded',
|
|
333
|
+
'permission.allow': 'Allow',
|
|
334
|
+
'permission.allowForSession': 'Allow for session',
|
|
335
|
+
'permission.deny': 'Deny',
|
|
336
|
+
'permission.hideDetails': 'Hide details',
|
|
337
|
+
'permission.showFullInput': 'Show full input',
|
|
338
|
+
'permission.replacingContent': 'Replacing content in file',
|
|
339
|
+
|
|
340
|
+
// ─── Computer Use Approval ──────────────────────────────────────
|
|
341
|
+
'computerUseApproval.titleApps': 'Computer Use wants to control these apps',
|
|
342
|
+
'computerUseApproval.titleTcc': 'Computer Use needs macOS permissions',
|
|
343
|
+
'computerUseApproval.reason': 'Why Claude is asking',
|
|
344
|
+
'computerUseApproval.allow': 'Allow for session',
|
|
345
|
+
'computerUseApproval.deny': 'Deny',
|
|
346
|
+
'computerUseApproval.alreadyGranted': 'Already granted for this session',
|
|
347
|
+
'computerUseApproval.notInstalled': 'App not installed',
|
|
348
|
+
'computerUseApproval.sensitiveApp': 'This app is treated as sensitive and deserves extra review.',
|
|
349
|
+
'computerUseApproval.alsoRequested': 'Also requested',
|
|
350
|
+
'computerUseApproval.hideWhileWorking': '{count} other apps will be hidden while Claude works.',
|
|
351
|
+
'computerUseApproval.hideWhileWorkingRestore': '{count} other apps will be hidden while Claude works, then restored when Claude is done.',
|
|
352
|
+
'computerUseApproval.accessibility': 'Accessibility',
|
|
353
|
+
'computerUseApproval.screenRecording': 'Screen Recording',
|
|
354
|
+
'computerUseApproval.granted': 'Granted',
|
|
355
|
+
'computerUseApproval.notGranted': 'Not granted',
|
|
356
|
+
'computerUseApproval.openAccessibility': 'Open Accessibility',
|
|
357
|
+
'computerUseApproval.openScreenRecording': 'Open Screen Recording',
|
|
358
|
+
'computerUseApproval.tryAgain': 'Try again',
|
|
359
|
+
'computerUseApproval.tccHint': 'Grant the missing permissions in System Settings, then come back and choose "Try again".',
|
|
360
|
+
'computerUseApproval.tryAgainHint': 'Try again returns control to Claude so it can call request_access once more after macOS permission changes take effect.',
|
|
361
|
+
|
|
362
|
+
// ─── Ask User Question ──────────────────────────────────────
|
|
363
|
+
'question.needsInput': 'Claude needs your input',
|
|
364
|
+
'question.answered': 'Answered',
|
|
365
|
+
'question.customResponse': 'Or type a custom response:',
|
|
366
|
+
'question.typePlaceholder': 'Type your answer...',
|
|
367
|
+
'question.submit': 'Submit',
|
|
368
|
+
'question.answeredPrefix': 'Answered: ',
|
|
369
|
+
|
|
370
|
+
// ─── Thinking Block ──────────────────────────────────────
|
|
371
|
+
'thinking.label': 'Thinking',
|
|
372
|
+
|
|
373
|
+
// ─── Tool Calls ──────────────────────────────────────
|
|
374
|
+
'tool.errorOutput': 'Error Output',
|
|
375
|
+
'tool.toolOutput': 'Tool Output',
|
|
376
|
+
'tool.toolInput': 'Tool Input',
|
|
377
|
+
'tool.readFileContents': 'Read file contents',
|
|
378
|
+
'tool.createFile': 'Create file',
|
|
379
|
+
'tool.updateFileContents': 'Update file contents',
|
|
380
|
+
'tool.linesChanged': '{count} lines changed',
|
|
381
|
+
'tool.linesCreated': '{count} lines created',
|
|
382
|
+
'tool.linesOutput': '{count} lines output',
|
|
383
|
+
'tool.result': '{toolName} result',
|
|
384
|
+
'tool.resultGeneric': 'Tool result',
|
|
385
|
+
'tool.error': 'ERROR',
|
|
386
|
+
'tool.success': 'SUCCESS',
|
|
387
|
+
'tool.showLess': 'Show less',
|
|
388
|
+
'tool.showMore': 'Show {count} more characters',
|
|
389
|
+
|
|
390
|
+
// ─── Tool Group Verbs ──────────────────────────────────────
|
|
391
|
+
'toolGroup.readOne': 'Read 1 file',
|
|
392
|
+
'toolGroup.readMany': 'Read {count} files',
|
|
393
|
+
'toolGroup.createdOne': 'created a file',
|
|
394
|
+
'toolGroup.createdMany': 'created {count} files',
|
|
395
|
+
'toolGroup.editedOne': 'edited a file',
|
|
396
|
+
'toolGroup.editedMany': 'edited {count} files',
|
|
397
|
+
'toolGroup.ranOne': 'ran a command',
|
|
398
|
+
'toolGroup.ranMany': 'ran {count} commands',
|
|
399
|
+
'toolGroup.foundFiles': 'found files',
|
|
400
|
+
'toolGroup.searchedOne': 'searched code',
|
|
401
|
+
'toolGroup.searchedMany': 'searched {count} patterns',
|
|
402
|
+
'toolGroup.agentOne': 'dispatched an agent',
|
|
403
|
+
'toolGroup.agentMany': 'dispatched {count} agents',
|
|
404
|
+
'agentStatus.starting': 'Starting',
|
|
405
|
+
'agentStatus.running': 'Running',
|
|
406
|
+
'agentStatus.done': 'Done',
|
|
407
|
+
'agentStatus.failed': 'Failed',
|
|
408
|
+
'agentStatus.stopped': 'Stopped',
|
|
409
|
+
'agentStatus.noActivity': 'No tool activity yet',
|
|
410
|
+
'agentStatus.viewResult': 'View result',
|
|
411
|
+
'agentStatus.resultTitle': 'Agent result',
|
|
412
|
+
'toolGroup.searchedWeb': 'searched the web',
|
|
413
|
+
'toolGroup.fetchedOne': 'fetched a page',
|
|
414
|
+
'toolGroup.fetchedMany': 'fetched {count} pages',
|
|
415
|
+
|
|
416
|
+
// ─── Tasks ──────────────────────────────────────
|
|
417
|
+
'tasks.title': 'Tasks',
|
|
418
|
+
'tasks.completed': 'Tasks completed',
|
|
419
|
+
'tasks.dismissCompleted': 'Hide completed tasks',
|
|
420
|
+
'tasks.newTask': '+ New task',
|
|
421
|
+
'tasks.emptyTitle': 'No scheduled tasks yet.',
|
|
422
|
+
'tasks.emptyDesc': 'Create a recurring task to automate your engineering workflows.',
|
|
423
|
+
'tasks.createNew': 'Create new task',
|
|
424
|
+
'tasks.totalTasks': 'Total Tasks',
|
|
425
|
+
'tasks.active': 'Active',
|
|
426
|
+
'tasks.disabled': 'Disabled',
|
|
427
|
+
|
|
428
|
+
// ─── New Task Modal ──────────────────────────────────────
|
|
429
|
+
'newTask.title': 'New scheduled task',
|
|
430
|
+
'newTask.localWarning': 'Local tasks only run while your computer is awake.',
|
|
431
|
+
'newTask.name': 'Name',
|
|
432
|
+
'newTask.namePlaceholder': 'daily-code-review',
|
|
433
|
+
'newTask.description': 'Description',
|
|
434
|
+
'newTask.descPlaceholder': "Review yesterday's commits and flag anything concerning",
|
|
435
|
+
'newTask.frequency': 'Frequency',
|
|
436
|
+
'newTask.everyNMinutes': 'Every N minutes',
|
|
437
|
+
'newTask.everyNHours': 'Every N hours',
|
|
438
|
+
'newTask.daily': 'Daily',
|
|
439
|
+
'newTask.weekdays': 'Weekdays (Mon–Fri)',
|
|
440
|
+
'newTask.specificDays': 'Specific days of week',
|
|
441
|
+
'newTask.monthly': 'Monthly',
|
|
442
|
+
'newTask.customCron': 'Custom cron expression',
|
|
443
|
+
'newTask.intervalMinutes': 'Every {n} minutes',
|
|
444
|
+
'newTask.intervalHours': 'Every {n} hours',
|
|
445
|
+
'newTask.atMinute': 'at minute :{m}',
|
|
446
|
+
'newTask.onMonthDay': 'On day {d} of each month',
|
|
447
|
+
'newTask.cronFormatHint': 'Format: minute hour day-of-month month day-of-week',
|
|
448
|
+
'newTask.invalidCron': 'Invalid cron expression',
|
|
449
|
+
'newTask.daySun': 'Sun',
|
|
450
|
+
'newTask.dayMon': 'Mon',
|
|
451
|
+
'newTask.dayTue': 'Tue',
|
|
452
|
+
'newTask.dayWed': 'Wed',
|
|
453
|
+
'newTask.dayThu': 'Thu',
|
|
454
|
+
'newTask.dayFri': 'Fri',
|
|
455
|
+
'newTask.daySat': 'Sat',
|
|
456
|
+
'newTask.delayNote': 'Scheduled tasks use a randomized delay of several minutes for server performance.',
|
|
457
|
+
'newTask.create': 'Create task',
|
|
458
|
+
'newTask.promptPlaceholder': 'Look at the commits from the last 24 hours. Summarize what changed, call out any risky patterns or missing tests, and note anything worth following up on.',
|
|
459
|
+
'newTask.notification': 'Notification',
|
|
460
|
+
'newTask.notifyOnComplete': 'Push notification on completion',
|
|
461
|
+
'newTask.notifyChannels': 'Notification channels',
|
|
462
|
+
'newTask.notifyHint': 'Send the task title and result to your IM channels when done.',
|
|
463
|
+
'newTask.notConfigured': 'Not configured',
|
|
464
|
+
'newTask.noChannelConfigured': 'No IM channels configured yet. Go to Settings → IM Adapters to set up.',
|
|
465
|
+
|
|
466
|
+
// ─── Cron Descriptions ──────────────────────────────────────
|
|
467
|
+
'cron.everyMinute': 'Runs every minute',
|
|
468
|
+
'cron.everyNMinutes': 'Runs every {n} minutes',
|
|
469
|
+
'cron.everyHour': 'Runs every hour',
|
|
470
|
+
'cron.everyNHours': 'Runs every {n} hours',
|
|
471
|
+
'cron.everyNHoursAtMinute': 'Runs every {n} hours at :{m}',
|
|
472
|
+
'cron.dailyAt': 'Runs daily at {time}',
|
|
473
|
+
'cron.weekdaysAt': 'Runs on weekdays at {time}',
|
|
474
|
+
'cron.specificDaysAt': 'Runs every {days} at {time}',
|
|
475
|
+
'cron.monthlyAt': 'Runs on the {day}th of every month at {time}',
|
|
476
|
+
'cron.customSchedule': 'Custom: {cron}',
|
|
477
|
+
'cron.dow.0': 'Sun',
|
|
478
|
+
'cron.dow.1': 'Mon',
|
|
479
|
+
'cron.dow.2': 'Tue',
|
|
480
|
+
'cron.dow.3': 'Wed',
|
|
481
|
+
'cron.dow.4': 'Thu',
|
|
482
|
+
'cron.dow.5': 'Fri',
|
|
483
|
+
'cron.dow.6': 'Sat',
|
|
484
|
+
|
|
485
|
+
// ─── Task Actions & Logs ──────────────────────────────────────
|
|
486
|
+
'tasks.runNow': 'Run now',
|
|
487
|
+
'tasks.confirmRun': 'Execute this task immediately?',
|
|
488
|
+
'tasks.confirmDisable': 'Disable this scheduled task?',
|
|
489
|
+
'tasks.confirmEnable': 'Enable this scheduled task?',
|
|
490
|
+
'tasks.confirmDelete': 'Permanently delete this task and all its logs?',
|
|
491
|
+
'tasks.running': 'Running...',
|
|
492
|
+
'tasks.viewLogs': 'Logs',
|
|
493
|
+
'tasks.logsTitle': 'Execution logs',
|
|
494
|
+
'tasks.noLogs': 'No execution logs yet',
|
|
495
|
+
'tasks.runStatus.running': 'Running',
|
|
496
|
+
'tasks.runStatus.completed': 'Completed',
|
|
497
|
+
'tasks.runStatus.failed': 'Failed',
|
|
498
|
+
'tasks.runStatus.timeout': 'Timeout',
|
|
499
|
+
'tasks.duration': '{s}s',
|
|
500
|
+
'tasks.viewOutput': 'Summary',
|
|
501
|
+
'tasks.hideOutput': 'Hide',
|
|
502
|
+
'tasks.close': 'Close',
|
|
503
|
+
'tasks.edit': 'Edit',
|
|
504
|
+
'tasks.editTitle': 'Edit scheduled task',
|
|
505
|
+
'tasks.saveChanges': 'Save changes',
|
|
506
|
+
'tasks.openSession': 'View conversation',
|
|
507
|
+
'tasks.createdAt': 'Created: ',
|
|
508
|
+
'tasks.lastRunAt': 'Last run: ',
|
|
509
|
+
'tasks.outputHintSession': 'Click "View conversation" to see the full output in session view.',
|
|
510
|
+
'tasks.noOutputText': 'No output available.',
|
|
511
|
+
|
|
512
|
+
// ─── Prompt Editor ──────────────────────────────────────
|
|
513
|
+
'promptEditor.worktree': 'worktree',
|
|
514
|
+
'promptEditor.bypassWarning': 'Bypass mode grants full system access',
|
|
515
|
+
'promptEditor.within': 'within',
|
|
516
|
+
'promptEditor.selectFolder': '— select a folder to limit scope',
|
|
517
|
+
|
|
518
|
+
// ─── Permission Mode Selector ──────────────────────────────────────
|
|
519
|
+
'permMode.executionPermissions': 'Execution Permissions',
|
|
520
|
+
'permMode.askPermissions': 'Ask permissions',
|
|
521
|
+
'permMode.askPermDesc': 'Confirm file edits and higher-risk commands when CLI asks',
|
|
522
|
+
'permMode.autoAccept': 'Auto accept edits',
|
|
523
|
+
'permMode.autoAcceptDesc': 'Claude writes to disk without asking',
|
|
524
|
+
'permMode.planMode': 'Plan mode',
|
|
525
|
+
'permMode.planModeDesc': 'Architecture & reasoning only, no files',
|
|
526
|
+
'permMode.bypass': 'Bypass permissions',
|
|
527
|
+
'permMode.bypassDesc': 'Full tool access for shell and file system',
|
|
528
|
+
'permMode.dontAsk': "Don't ask",
|
|
529
|
+
'permMode.enableBypassTitle': 'Enable bypass permissions?',
|
|
530
|
+
'permMode.enableBypassSubtitle': 'This grants full access to your system',
|
|
531
|
+
'permMode.enableBypassBody': 'Claude will have <strong>unrestricted</strong> access to execute shell commands and modify files within:',
|
|
532
|
+
'permMode.permReadWrite': 'Read, write, and delete any files',
|
|
533
|
+
'permMode.permShell': 'Execute arbitrary shell commands',
|
|
534
|
+
'permMode.permPackages': 'Install or remove packages',
|
|
535
|
+
'permMode.enableBypassBtn': 'Enable bypass',
|
|
536
|
+
|
|
537
|
+
// Mode labels (compact, for chips)
|
|
538
|
+
'permMode.label.default': 'Ask permissions',
|
|
539
|
+
'permMode.label.acceptEdits': 'Auto accept',
|
|
540
|
+
'permMode.label.plan': 'Plan mode',
|
|
541
|
+
'permMode.label.bypassPermissions': 'Bypass',
|
|
542
|
+
'permMode.label.dontAsk': "Don't ask",
|
|
543
|
+
|
|
544
|
+
// ─── Model Selector ──────────────────────────────────────
|
|
545
|
+
'model.selectModel': 'Select model',
|
|
546
|
+
'model.configuration': 'Model Configuration',
|
|
547
|
+
'model.effort': 'Effort',
|
|
548
|
+
|
|
549
|
+
// ─── Directory Picker ──────────────────────────────────────
|
|
550
|
+
'dirPicker.selectProject': 'Select a project...',
|
|
551
|
+
'dirPicker.recent': 'Recent',
|
|
552
|
+
'dirPicker.noRecent': 'No recent projects',
|
|
553
|
+
'dirPicker.chooseFolder': 'Choose a different folder',
|
|
554
|
+
'dirPicker.chooseProjectFolder': 'Choose project folder',
|
|
555
|
+
'dirPicker.useThisFolder': 'Use this folder',
|
|
556
|
+
'dirPicker.noSubdirs': 'No subdirectories',
|
|
557
|
+
|
|
558
|
+
// ─── File Search ──────────────────────────────────────
|
|
559
|
+
'fileSearch.searching': 'Searching...',
|
|
560
|
+
'fileSearch.noMatch': 'No files match',
|
|
561
|
+
'fileSearch.noFiles': 'No files in this directory',
|
|
562
|
+
'fileSearch.navigate': 'navigate',
|
|
563
|
+
'fileSearch.attach': 'attach',
|
|
564
|
+
'fileSearch.close': 'close',
|
|
565
|
+
|
|
566
|
+
// ─── Teams ──────────────────────────────────────
|
|
567
|
+
'teams.backToLeader': '\u2190 Back to Leader',
|
|
568
|
+
'teams.viewing': 'Viewing:',
|
|
569
|
+
'teams.transcript': 'transcript',
|
|
570
|
+
'teams.noMessages': 'No messages yet',
|
|
571
|
+
'teams.team': 'Team:',
|
|
572
|
+
'teams.members': 'members',
|
|
573
|
+
'teams.working': 'Working...',
|
|
574
|
+
'teams.thinking': 'Thinking...',
|
|
575
|
+
'teams.running': 'running',
|
|
576
|
+
'teams.leader': 'team-lead',
|
|
577
|
+
'teams.memberPlaceholder': 'Message this teammate directly...',
|
|
578
|
+
'teams.memberSessionHint': 'Messages here go straight to this teammate while you watch its transcript update.',
|
|
579
|
+
|
|
580
|
+
// ─── Scheduled Tasks Pages ──────────────────────────────────────
|
|
581
|
+
'scheduledPage.title': 'Scheduled tasks',
|
|
582
|
+
'scheduledPage.subtitle': 'Run tasks on a schedule or whenever you need them. Type {code} in any existing session to create one.',
|
|
583
|
+
'scheduledPage.desktopNotice': 'Scheduled tasks only run while the desktop app is open. Make sure it stays running for tasks to fire on time.',
|
|
584
|
+
'scheduledPage.oldSubtitle': 'Manage automated operational routines and background maintenance.',
|
|
585
|
+
'scheduledPage.executionMode': 'Execution Mode',
|
|
586
|
+
'scheduledPage.localMode': 'Local Mode',
|
|
587
|
+
'scheduledPage.remoteMode': 'Remote Mode',
|
|
588
|
+
'scheduledPage.nextRun': 'Next Run',
|
|
589
|
+
'scheduledPage.systemHealth': 'System Health',
|
|
590
|
+
'scheduledPage.activeSession': 'Active Session',
|
|
591
|
+
'scheduledPage.colTaskName': 'Task Name',
|
|
592
|
+
'scheduledPage.colFrequency': 'Frequency',
|
|
593
|
+
'scheduledPage.colLastResult': 'Last Result',
|
|
594
|
+
'scheduledPage.colNextExecution': 'Next Execution',
|
|
595
|
+
'scheduledPage.colActions': 'Actions',
|
|
596
|
+
'scheduledPage.endOfList': 'End of scheduled list',
|
|
597
|
+
'scheduledPage.pausedTasks': '9 other tasks are currently paused or disabled for maintenance.',
|
|
598
|
+
'scheduledPage.recentLogs': 'Recent Output Logs',
|
|
599
|
+
'scheduledPage.viewArtifacts': 'View Full Artifacts',
|
|
600
|
+
'scheduledPage.resourceAllocation': 'Resource Allocation',
|
|
601
|
+
'scheduledPage.cpuCapacity': 'CPU Capacity',
|
|
602
|
+
'scheduledPage.memoryLoad': 'Memory Load',
|
|
603
|
+
'scheduledPage.connectedLocal': 'Connected to local node',
|
|
604
|
+
'scheduledPage.thisMonth': '{count} this month',
|
|
605
|
+
|
|
606
|
+
// ─── Update Checker ──────────────────────────────────────
|
|
607
|
+
'update.available': 'v{version} available',
|
|
608
|
+
'update.availableLabel': 'Available',
|
|
609
|
+
'update.checking': 'Checking for updates...',
|
|
610
|
+
'update.checkNow': 'Check now',
|
|
611
|
+
'update.checkedAt': 'Last checked {time}',
|
|
612
|
+
'update.currentVersionUnknown': 'Unknown',
|
|
613
|
+
'update.newVersion': 'New version v{version} available',
|
|
614
|
+
'update.downloading': 'Downloading...',
|
|
615
|
+
'update.idle': 'Check for updates to compare your installed version with the latest GitHub Release.',
|
|
616
|
+
'update.now': 'Update now',
|
|
617
|
+
'update.later': 'Later',
|
|
618
|
+
'update.progress': 'Downloading update... {progress}%',
|
|
619
|
+
'update.releaseNotes': 'Release Notes',
|
|
620
|
+
'update.restarting': 'Restarting to finish update...',
|
|
621
|
+
'update.upToDate': 'You are up to date on v{version}.',
|
|
622
|
+
'update.failed': 'Update failed: {error}',
|
|
623
|
+
|
|
624
|
+
// ─── Active Session ──────────────────────────────────────
|
|
625
|
+
'session.untitled': 'Untitled Session',
|
|
626
|
+
'session.active': 'session active',
|
|
627
|
+
'session.lastUpdated': 'last updated {time}',
|
|
628
|
+
'session.messages': '{count} messages',
|
|
629
|
+
'session.workspaceUnavailable': 'Workspace unavailable: {dir}',
|
|
630
|
+
'session.timeJustNow': 'just now',
|
|
631
|
+
'session.timeMinutes': '{n}m ago',
|
|
632
|
+
'session.timeHours': '{n}h ago',
|
|
633
|
+
'session.timeDays': '{n}d ago',
|
|
634
|
+
|
|
635
|
+
// ─── App Shell ──────────────────────────────────────
|
|
636
|
+
'app.serverFailed': 'Local server failed to start',
|
|
637
|
+
'app.launching': 'Launching local workspace...',
|
|
638
|
+
|
|
639
|
+
// ─── Error Codes ──────────────────────────────────────
|
|
640
|
+
'error.CLI_NOT_RUNNING': 'CLI process is not running. The session may have ended or the process crashed.',
|
|
641
|
+
'error.CLI_START_FAILED': 'Failed to start CLI process.',
|
|
642
|
+
'error.CLI_AUTH_REQUIRED': 'Authentication is required. Please log in.',
|
|
643
|
+
'error.CLI_SESSION_CONFLICT': 'Session is already in use by another process.',
|
|
644
|
+
'error.CLI_SPAWN_FAILED': 'Failed to spawn CLI subprocess.',
|
|
645
|
+
'error.CLI_ERROR': 'An error occurred during processing.',
|
|
646
|
+
'error.WORKDIR_INVALID': 'Working directory is invalid or does not exist.',
|
|
647
|
+
'error.PARSE_ERROR': 'Invalid message format.',
|
|
648
|
+
'error.UNKNOWN_TYPE': 'Unknown message type.',
|
|
649
|
+
'error.BAD_REQUEST': 'Bad request.',
|
|
650
|
+
'error.NOT_FOUND': 'Resource not found.',
|
|
651
|
+
'error.INTERNAL_ERROR': 'Internal server error.',
|
|
652
|
+
|
|
653
|
+
// ─── Server Status Verbs ──────────────────────────────────────
|
|
654
|
+
'serverVerb.Thinking': 'Thinking',
|
|
655
|
+
'serverVerb.Task started': 'Task started',
|
|
656
|
+
'serverVerb.Task in progress': 'Task in progress',
|
|
657
|
+
|
|
658
|
+
// ─── Tabs ──────────────────────────────────────
|
|
659
|
+
'tabs.close': 'Close',
|
|
660
|
+
'tabs.closeOthers': 'Close Others',
|
|
661
|
+
'tabs.closeLeft': 'Close to the Left',
|
|
662
|
+
'tabs.closeRight': 'Close to the Right',
|
|
663
|
+
'tabs.closeAll': 'Close All',
|
|
664
|
+
'tabs.closeConfirmTitle': 'Session Running',
|
|
665
|
+
'tabs.closeConfirmMessage': 'This session is still running. What would you like to do?',
|
|
666
|
+
'tabs.closeConfirmKeep': 'Keep Running',
|
|
667
|
+
'tabs.closeConfirmStop': 'Stop & Close',
|
|
668
|
+
} as const
|
|
669
|
+
|
|
670
|
+
export type TranslationKey = keyof typeof en
|