mulmoclaude 0.3.0 → 0.5.0
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/bin/mulmoclaude.js +7 -24
- package/client/assets/html2canvas-Cx501zZr-DiKaqnKs.js +5 -0
- package/client/assets/{index-eHWB79u5.js → index-C94GcmNa.js} +203 -198
- package/client/assets/index-CY-WpQUm.css +2 -0
- package/client/assets/{index.es-D4YyL_Dg-BfRHLTZV.js → index.es-D4YyL_Dg-5ipqh8Pe.js} +5 -5
- package/client/assets/material-symbols-outlined-NzYEeyps.woff2 +0 -0
- package/client/index.html +2 -4
- package/package.json +17 -15
- package/server/agent/attachmentConverter.ts +2 -2
- package/server/agent/backend/claude-code.ts +170 -0
- package/server/agent/backend/index.ts +14 -0
- package/server/agent/backend/types.ts +65 -0
- package/server/agent/index.ts +31 -159
- package/server/agent/mcp-server.ts +88 -10
- package/server/agent/mcp-tools/index.ts +8 -7
- package/server/agent/mcp-tools/notify.ts +76 -0
- package/server/agent/mcp-tools/x.ts +12 -2
- package/server/agent/plugin-names.ts +10 -4
- package/server/agent/prompt.ts +187 -26
- package/server/agent/resumeFailover.ts +5 -5
- package/server/agent/sandboxMounts.ts +3 -3
- package/server/api/auth/bearerAuth.ts +3 -3
- package/server/api/auth/token.ts +2 -2
- package/server/api/routes/agent.ts +99 -4
- package/server/api/routes/chart.ts +13 -0
- package/server/api/routes/chat-index.ts +2 -1
- package/server/api/routes/config.ts +35 -8
- package/server/api/routes/files.ts +75 -24
- package/server/api/routes/html.ts +15 -2
- package/server/api/routes/image.ts +75 -20
- package/server/api/routes/mulmo-script.ts +33 -31
- package/server/api/routes/news.ts +146 -0
- package/server/api/routes/notifications.ts +58 -2
- package/server/api/routes/pdf.ts +2 -2
- package/server/api/routes/plugins.ts +73 -91
- package/server/api/routes/presentHtml.ts +9 -0
- package/server/api/routes/roles.ts +12 -2
- package/server/api/routes/scheduler.ts +20 -11
- package/server/api/routes/schedulerTasks.ts +58 -21
- package/server/api/routes/sessions.ts +15 -4
- package/server/api/routes/sessionsCursor.ts +4 -4
- package/server/api/routes/skills.ts +26 -5
- package/server/api/routes/sources.ts +8 -7
- package/server/api/routes/todos.ts +30 -0
- package/server/api/routes/todosColumnsHandlers.ts +13 -27
- package/server/api/routes/todosHandlers.ts +1 -1
- package/server/api/routes/todosItemsHandlers.ts +14 -14
- package/server/api/routes/wiki/frontmatter.ts +86 -0
- package/server/api/routes/wiki.ts +335 -75
- package/server/api/sandboxStatus.ts +1 -1
- package/server/events/notifications.ts +32 -8
- package/server/events/pub-sub/index.ts +3 -3
- package/server/events/relay-client.ts +26 -16
- package/server/events/resolveRelayBridgeOptions.ts +125 -0
- package/server/index.ts +72 -49
- package/server/system/config.ts +5 -5
- package/server/system/credentials.ts +7 -5
- package/server/system/env.ts +15 -5
- package/server/system/macosNotify.ts +152 -0
- package/server/utils/errors.ts +11 -2
- package/server/utils/fetch.ts +54 -0
- package/server/utils/files/atomic.ts +18 -17
- package/server/utils/files/image-store.ts +19 -13
- package/server/utils/files/journal-io.ts +2 -2
- package/server/utils/files/json.ts +5 -5
- package/server/utils/files/markdown-image-fill.ts +131 -0
- package/server/utils/files/markdown-store.ts +22 -6
- package/server/utils/files/naming.ts +20 -10
- package/server/utils/files/reference-dirs-io.ts +3 -3
- package/server/utils/files/roles-io.ts +4 -4
- package/server/utils/files/safe.ts +14 -14
- package/server/utils/files/scheduler-overrides-io.ts +2 -2
- package/server/utils/files/spreadsheet-store.ts +15 -10
- package/server/utils/files/workspace-io.ts +12 -12
- package/server/utils/gemini.ts +30 -4
- package/server/utils/gitignore.ts +9 -9
- package/server/utils/id.ts +40 -8
- package/server/utils/json.ts +5 -5
- package/server/utils/logBackgroundError.ts +12 -3
- package/server/utils/logPreview.ts +24 -0
- package/server/utils/markdown.ts +5 -5
- package/server/utils/port.d.mts +6 -0
- package/server/utils/port.mjs +48 -0
- package/server/utils/promptMeta.ts +32 -0
- package/server/utils/request.ts +12 -6
- package/server/utils/slug.ts +65 -4
- package/server/utils/spawn.ts +1 -1
- package/server/utils/types.ts +2 -2
- package/server/workspace/chat-index/index.ts +1 -1
- package/server/workspace/chat-index/summarizer.ts +5 -5
- package/server/workspace/custom-dirs.ts +5 -5
- package/server/workspace/helps/gemini.md +57 -0
- package/server/workspace/helps/index.md +2 -1
- package/server/workspace/helps/sources.md +42 -0
- package/server/workspace/helps/wiki.md +40 -5
- package/server/workspace/journal/archivist-cli.ts +121 -0
- package/server/workspace/journal/{archivist.ts → archivist-schemas.ts} +12 -120
- package/server/workspace/journal/dailyPass.ts +78 -38
- package/server/workspace/journal/diff.ts +2 -2
- package/server/workspace/journal/index.ts +56 -5
- package/server/workspace/journal/memoryExtractor.ts +1 -1
- package/server/workspace/journal/optimizationPass.ts +4 -5
- package/server/workspace/journal/paths.ts +8 -24
- package/server/workspace/journal/state.ts +18 -8
- package/server/workspace/news/reader.ts +248 -0
- package/server/workspace/paths.ts +4 -3
- package/server/workspace/reference-dirs.ts +3 -3
- package/server/workspace/skills/parser.ts +6 -6
- package/server/workspace/skills/scheduler.ts +5 -4
- package/server/workspace/skills/user-tasks.ts +3 -2
- package/server/workspace/skills/writer.ts +3 -3
- package/server/workspace/sources/arxivDiscovery.ts +2 -2
- package/server/workspace/sources/classifier.ts +1 -1
- package/server/workspace/sources/fetchers/rss.ts +5 -5
- package/server/workspace/sources/fetchers/rssParser.ts +4 -4
- package/server/workspace/sources/interests.ts +3 -3
- package/server/workspace/sources/paths.ts +6 -6
- package/server/workspace/sources/pipeline/fetch.ts +59 -13
- package/server/workspace/sources/pipeline/index.ts +59 -7
- package/server/workspace/sources/pipeline/notify.ts +13 -5
- package/server/workspace/sources/pipeline/plan.ts +11 -9
- package/server/workspace/sources/pipeline/summarize.ts +1 -1
- package/server/workspace/sources/pipeline/write.ts +5 -5
- package/server/workspace/sources/rateLimiter.ts +1 -1
- package/server/workspace/sources/sourceState.ts +9 -4
- package/server/workspace/sources/types.ts +9 -0
- package/server/workspace/sources/urls.ts +1 -1
- package/server/workspace/tool-trace/classify.ts +4 -4
- package/server/workspace/workspace.ts +7 -7
- package/src/App.vue +477 -251
- package/src/components/CanvasViewToggle.vue +12 -10
- package/src/components/ChatInput.vue +112 -105
- package/src/components/FileContentHeader.vue +10 -7
- package/src/components/FileContentRenderer.vue +37 -10
- package/src/components/FileTree.vue +34 -4
- package/src/components/FileTreePane.vue +32 -27
- package/src/components/FilesView.vue +5 -3
- package/src/components/FilterChip.vue +22 -0
- package/src/components/LockStatusPopup.vue +19 -13
- package/src/components/NewsView.vue +252 -0
- package/src/components/NotificationBell.vue +35 -9
- package/src/components/NotificationToast.vue +4 -1
- package/src/components/PageChatComposer.vue +101 -0
- package/src/components/PluginLauncher.vue +36 -62
- package/src/components/RightSidebar.vue +13 -10
- package/src/components/RoleSelector.vue +3 -2
- package/src/components/SessionHeaderControls.vue +63 -0
- package/src/components/SessionHistoryExpandButton.vue +30 -0
- package/src/components/SessionHistoryPanel.vue +64 -93
- package/src/components/SessionHistoryToggleButton.vue +40 -0
- package/src/components/SessionRoleIcon.vue +72 -0
- package/src/components/SessionSidebar.vue +96 -0
- package/src/components/SessionTabBar.vue +44 -51
- package/src/components/SettingsMcpTab.vue +361 -52
- package/src/components/SettingsModal.vue +203 -72
- package/src/components/SettingsReferenceDirsTab.vue +72 -51
- package/src/components/SettingsWorkspaceDirsTab.vue +74 -51
- package/src/components/SidebarHeader.vue +50 -16
- package/src/components/SourcesManager.vue +900 -0
- package/src/components/SourcesView.vue +45 -0
- package/src/components/StackView.vue +84 -48
- package/src/components/SuggestionsPanel.vue +25 -36
- package/src/components/SystemFileBanner.vue +106 -0
- package/src/components/ThinkingIndicator.vue +41 -0
- package/src/components/TodoExplorer.vue +72 -22
- package/src/components/todo/TodoAddDialog.vue +17 -12
- package/src/components/todo/TodoEditDialog.vue +7 -2
- package/src/components/todo/TodoEditPanel.vue +15 -10
- package/src/components/todo/TodoKanbanView.vue +16 -6
- package/src/components/todo/TodoListView.vue +14 -3
- package/src/components/todo/TodoTableView.vue +36 -5
- package/src/composables/favicon/conditions.ts +76 -0
- package/src/composables/favicon/resolveColor.ts +93 -0
- package/src/composables/favicon/types.ts +61 -0
- package/src/composables/useAppApi.ts +23 -0
- package/src/composables/useChatScroll.ts +5 -5
- package/src/composables/useCurrentRole.ts +32 -0
- package/src/composables/useDynamicFavicon.ts +174 -58
- package/src/composables/useEventListeners.ts +7 -12
- package/src/composables/useFaviconState.ts +93 -12
- package/src/composables/useFileSelection.ts +25 -6
- package/src/composables/useHealth.ts +76 -7
- package/src/composables/useLayoutMode.ts +27 -0
- package/src/composables/useNewsItems.ts +38 -0
- package/src/composables/useNewsReadState.ts +75 -0
- package/src/composables/useNotifications.ts +76 -13
- package/src/composables/usePendingCalls.ts +11 -1
- package/src/composables/useRoles.ts +6 -10
- package/src/composables/useRunElapsed.ts +80 -0
- package/src/composables/useSessionDerived.ts +21 -5
- package/src/composables/useSessionHistory.ts +7 -17
- package/src/composables/useSidePanelVisible.ts +25 -0
- package/src/composables/useViewLayout.ts +16 -37
- package/src/config/apiRoutes.ts +19 -6
- package/src/config/historyFilters.ts +30 -0
- package/src/config/mcpCatalog.ts +285 -0
- package/src/config/mcpTypes.ts +26 -0
- package/src/config/roles.ts +19 -51
- package/src/config/systemFileDescriptors.ts +170 -0
- package/src/config/toolNames.ts +6 -1
- package/src/config/workspacePaths.ts +1 -0
- package/src/index.css +14 -0
- package/src/lang/de.ts +706 -0
- package/src/lang/en.ts +726 -0
- package/src/lang/es.ts +712 -0
- package/src/lang/fr.ts +704 -0
- package/src/lang/ja.ts +707 -0
- package/src/lang/ko.ts +709 -0
- package/src/lang/pt-BR.ts +702 -0
- package/src/lang/zh.ts +705 -0
- package/src/lib/vue-i18n.ts +97 -0
- package/src/main.ts +3 -0
- package/src/plugins/canvas/View.vue +104 -186
- package/src/plugins/canvas/definition.ts +0 -8
- package/src/plugins/canvas/index.ts +3 -2
- package/src/plugins/chart/Preview.vue +1 -1
- package/src/plugins/chart/View.vue +9 -4
- package/src/plugins/chart/index.ts +3 -2
- package/src/plugins/editImage/index.ts +3 -2
- package/src/plugins/generateImage/index.ts +3 -2
- package/src/plugins/manageRoles/Preview.vue +4 -1
- package/src/plugins/manageRoles/View.vue +67 -46
- package/src/plugins/manageRoles/index.ts +3 -2
- package/src/plugins/manageSkills/Preview.vue +8 -3
- package/src/plugins/manageSkills/View.vue +39 -34
- package/src/plugins/manageSkills/index.ts +3 -2
- package/src/plugins/manageSource/Preview.vue +1 -1
- package/src/plugins/manageSource/View.vue +3 -687
- package/src/plugins/manageSource/index.ts +3 -2
- package/src/plugins/markdown/Preview.vue +1 -1
- package/src/plugins/markdown/View.vue +164 -73
- package/src/plugins/markdown/definition.ts +6 -4
- package/src/plugins/markdown/index.ts +3 -2
- package/src/plugins/presentForm/Preview.vue +99 -0
- package/src/plugins/presentForm/View.vue +675 -0
- package/src/plugins/presentForm/definition.ts +127 -0
- package/src/plugins/presentForm/index.ts +18 -0
- package/src/plugins/presentForm/plugin.ts +94 -0
- package/src/plugins/presentForm/types.ts +109 -0
- package/src/plugins/presentHtml/Preview.vue +1 -1
- package/src/plugins/presentHtml/View.vue +7 -4
- package/src/plugins/presentHtml/index.ts +3 -2
- package/src/plugins/presentMulmoScript/Preview.vue +1 -1
- package/src/plugins/presentMulmoScript/View.vue +36 -26
- package/src/plugins/presentMulmoScript/index.ts +3 -2
- package/src/plugins/scheduler/AutomationsPreview.vue +37 -0
- package/src/plugins/scheduler/AutomationsView.vue +23 -0
- package/src/plugins/scheduler/CalendarView.vue +23 -0
- package/src/plugins/scheduler/LegacySchedulerView.vue +32 -0
- package/src/plugins/scheduler/Preview.vue +7 -4
- package/src/plugins/scheduler/TasksTab.vue +119 -28
- package/src/plugins/scheduler/View.vue +75 -32
- package/src/plugins/scheduler/automationsDefinition.ts +58 -0
- package/src/plugins/scheduler/calendarDefinition.ts +46 -0
- package/src/plugins/scheduler/formatSchedule.ts +93 -0
- package/src/plugins/scheduler/index.ts +68 -14
- package/src/plugins/scheduler/legacyShape.ts +34 -0
- package/src/plugins/spreadsheet/Preview.vue +9 -5
- package/src/plugins/spreadsheet/View.vue +43 -57
- package/src/plugins/spreadsheet/engine/responseDecoder.ts +2 -1
- package/src/plugins/spreadsheet/index.ts +3 -2
- package/src/plugins/textResponse/Preview.vue +15 -58
- package/src/plugins/textResponse/View.vue +42 -45
- package/src/plugins/textResponse/utils.ts +25 -0
- package/src/plugins/todo/Preview.vue +11 -6
- package/src/plugins/todo/View.vue +27 -13
- package/src/plugins/todo/composables/useTodos.ts +3 -1
- package/src/plugins/todo/index.ts +3 -2
- package/src/plugins/ui-image/ImagePreview.vue +6 -3
- package/src/plugins/ui-image/ImageView.vue +7 -4
- package/src/plugins/wiki/Preview.vue +5 -2
- package/src/plugins/wiki/View.vue +539 -92
- package/src/plugins/wiki/index.ts +5 -2
- package/src/plugins/wiki/route.ts +121 -0
- package/src/router/guards.ts +43 -24
- package/src/router/index.ts +53 -26
- package/src/router/pageRoutes.ts +23 -0
- package/src/tools/index.ts +12 -5
- package/src/tools/legacyPluginNames.ts +13 -0
- package/src/types/notification.ts +31 -6
- package/src/types/vue-i18n.d.ts +20 -0
- package/src/utils/agent/eventDispatch.ts +3 -6
- package/src/utils/agent/formatElapsed.ts +37 -0
- package/src/utils/agent/request.ts +22 -1
- package/src/utils/canvas/layoutMode.ts +26 -0
- package/src/utils/canvas/sidePanelVisible.ts +19 -0
- package/src/utils/dom/scrollIntoViewByTestId.ts +38 -0
- package/src/utils/errors.ts +9 -2
- package/src/utils/files/filename.ts +24 -0
- package/src/utils/filesPreview/schedulerPreview.ts +9 -3
- package/src/utils/id.ts +18 -0
- package/src/utils/image/cacheBust.ts +16 -0
- package/src/utils/image/resolve.ts +16 -0
- package/src/utils/markdown/taskList.ts +175 -0
- package/src/utils/mcp/interpolateSpec.ts +97 -0
- package/src/utils/notification/dispatch.ts +51 -15
- package/src/utils/path/workspaceLinkRouter.ts +99 -0
- package/src/utils/session/mergeSessions.ts +5 -0
- package/src/utils/sources/filter.ts +69 -0
- package/src/vite-env.d.ts +9 -0
- package/client/assets/chunk-vKJrgz-R-C_I3GbVV.js +0 -1
- package/client/assets/html2canvas-Cx501zZr-BF5dYYkY.js +0 -5
- package/client/assets/index-Bm70FDU2.css +0 -1
- package/client/assets/typeof-DBp4T-Ny-BC0P-2DM.js +0 -1
- package/server/workspace/journal/linkRewrite.ts +0 -4
- package/src/components/ToolResultsPanel.vue +0 -77
- package/src/composables/useCanvasViewMode.ts +0 -121
- package/src/plugins/scheduler/definition.ts +0 -57
- package/src/utils/canvas/viewMode.ts +0 -46
- package/src/utils/role/plugins.ts +0 -12
- package/src/utils/session/seedRoleDefault.ts +0 -35
- /package/client/assets/{purify.es-Fx1Nqyry-PeS5RUhs.js → purify.es-Fx1Nqyry-BwJECkqS.js} +0 -0
|
@@ -0,0 +1,702 @@
|
|
|
1
|
+
// Brazilian Portuguese dictionary. Mirror the shape of src/lang/en.ts —
|
|
2
|
+
// missing keys fall back to English per createI18n's fallbackLocale.
|
|
3
|
+
|
|
4
|
+
const ptBRMessages = {
|
|
5
|
+
common: {
|
|
6
|
+
save: "Salvar",
|
|
7
|
+
cancel: "Cancelar",
|
|
8
|
+
loading: "Carregando...",
|
|
9
|
+
close: "Fechar",
|
|
10
|
+
dismiss: "Dispensar",
|
|
11
|
+
add: "Adicionar",
|
|
12
|
+
remove: "Remover",
|
|
13
|
+
saving: "Salvando...",
|
|
14
|
+
saved: "Salvo",
|
|
15
|
+
noResultsYet: "Ainda não há resultados",
|
|
16
|
+
noImageYet: "Ainda não há imagem",
|
|
17
|
+
sendChat: "Iniciar um novo chat",
|
|
18
|
+
},
|
|
19
|
+
sessionTabBar: {
|
|
20
|
+
newSession: "Nova sessão",
|
|
21
|
+
activeSessions: "{count} sessão ativa (agente em execução) | {count} sessões ativas (agente em execução)",
|
|
22
|
+
unreadReplies: "{count} resposta não lida | {count} respostas não lidas",
|
|
23
|
+
unreadDot: "Nova resposta",
|
|
24
|
+
origin: {
|
|
25
|
+
scheduler: "Iniciada pelo agendador",
|
|
26
|
+
skill: "Iniciada por uma skill",
|
|
27
|
+
bridge: "Iniciada por um bridge",
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
chatInput: {
|
|
31
|
+
placeholder: "Digite uma tarefa ou arraste / cole / anexe um arquivo…",
|
|
32
|
+
send: "Enviar",
|
|
33
|
+
attachFile: "Anexar arquivo",
|
|
34
|
+
fileTooLarge: "Arquivo muito grande ({sizeMB} MB). O limite é 30 MB.",
|
|
35
|
+
unsupportedFileType: "Tipo de arquivo não suportado. Aceitos: imagens, PDF, DOCX, XLSX, PPTX e arquivos de texto.",
|
|
36
|
+
},
|
|
37
|
+
sessionHistoryPanel: {
|
|
38
|
+
filters: {
|
|
39
|
+
all: "Todas",
|
|
40
|
+
unread: "Não lidas",
|
|
41
|
+
human: "Pessoa",
|
|
42
|
+
scheduler: "Agendador",
|
|
43
|
+
skill: "Skill",
|
|
44
|
+
bridge: "Bridge",
|
|
45
|
+
},
|
|
46
|
+
failedToRefresh: "⚠ Falha ao atualizar: {error}",
|
|
47
|
+
showingLastKnown: " — exibindo a última lista conhecida.",
|
|
48
|
+
noSessions: "Ainda não há sessões.",
|
|
49
|
+
noMatching: "Nenhuma sessão correspondente.",
|
|
50
|
+
running: "Em execução",
|
|
51
|
+
noMessages: "(sem mensagens)",
|
|
52
|
+
openRowAria: "Abrir sessão: {preview}",
|
|
53
|
+
},
|
|
54
|
+
notificationBell: {
|
|
55
|
+
notifications: "Notificações",
|
|
56
|
+
markAllRead: "Marcar tudo como lido",
|
|
57
|
+
noNotifications: "Nenhuma notificação",
|
|
58
|
+
dismiss: "Dispensar",
|
|
59
|
+
},
|
|
60
|
+
sidebarHeader: {
|
|
61
|
+
home: "Ir para o chat mais recente",
|
|
62
|
+
toolCallHistory: "Histórico de chamadas de ferramentas",
|
|
63
|
+
settings: "Configurações",
|
|
64
|
+
settingsGeminiMissing: "Configurações — Chave da API Gemini ausente",
|
|
65
|
+
},
|
|
66
|
+
rightSidebar: {
|
|
67
|
+
toggleSystemPrompt: "Alternar system prompt",
|
|
68
|
+
systemPrompt: "System Prompt",
|
|
69
|
+
availableTools: "Ferramentas disponíveis",
|
|
70
|
+
toggleToolDescription: "Alternar descrição da ferramenta",
|
|
71
|
+
toolCallHistory: "Histórico de chamadas de ferramentas",
|
|
72
|
+
noToolCalls: "Ainda não há chamadas de ferramentas",
|
|
73
|
+
arguments: "Argumentos",
|
|
74
|
+
error: "Erro",
|
|
75
|
+
result: "Resultado",
|
|
76
|
+
running: "Executando...",
|
|
77
|
+
},
|
|
78
|
+
fileTreePane: {
|
|
79
|
+
sort: "Ordenar:",
|
|
80
|
+
sortByName: "Ordenar por nome",
|
|
81
|
+
name: "Nome",
|
|
82
|
+
sortByRecent: "Ordenar por data de modificação (mais recentes primeiro)",
|
|
83
|
+
recent: "Recente",
|
|
84
|
+
reference: "Referência",
|
|
85
|
+
// "RO" = Read-Only. Abreviação em inglês mantida para caber como
|
|
86
|
+
// badge compacto ao lado do rótulo Referência.
|
|
87
|
+
readOnlyBadge: "RO",
|
|
88
|
+
},
|
|
89
|
+
fileTree: {
|
|
90
|
+
workspace: "(workspace)",
|
|
91
|
+
recentlyChanged: "Alterados recentemente",
|
|
92
|
+
},
|
|
93
|
+
lockStatusPopup: {
|
|
94
|
+
sandboxEnabledTooltip: "Sandbox habilitado (Docker)",
|
|
95
|
+
noSandboxTooltip: "Sem sandbox (Docker não encontrado)",
|
|
96
|
+
sandboxEnabledLabel: "Sandbox habilitado:",
|
|
97
|
+
sandboxEnabledBody: "Docker está em execução. O acesso ao sistema de arquivos está isolado.",
|
|
98
|
+
noSandboxLabel: "Sem sandbox:",
|
|
99
|
+
noSandboxBodyPrefix: "O Claude pode acessar todos os arquivos da sua máquina. Instale o",
|
|
100
|
+
noSandboxBodySuffix: "para habilitar o isolamento do sistema de arquivos.",
|
|
101
|
+
dockerDesktop: "Docker Desktop",
|
|
102
|
+
hostCredentials: "Credenciais do host anexadas:",
|
|
103
|
+
credsLoading: "carregando…",
|
|
104
|
+
sshAgent: "Agente SSH:",
|
|
105
|
+
forwarded: "encaminhado",
|
|
106
|
+
notForwarded: "não encaminhado",
|
|
107
|
+
mountedConfigs: "Configurações montadas:",
|
|
108
|
+
none: "nenhuma",
|
|
109
|
+
testIsolation: "Testar isolamento do sandbox:",
|
|
110
|
+
},
|
|
111
|
+
settingsModal: {
|
|
112
|
+
title: "Configurações",
|
|
113
|
+
tabs: {
|
|
114
|
+
gemini: "Chave API do Gemini",
|
|
115
|
+
tools: "Ferramentas permitidas",
|
|
116
|
+
mcp: "Servidores MCP",
|
|
117
|
+
dirs: "Diretórios",
|
|
118
|
+
refs: "Diretórios de referência",
|
|
119
|
+
},
|
|
120
|
+
// Slots `<i18n-t>` — os nomes `envKey` / `envFile` renderizam como
|
|
121
|
+
// `<code>` inline no SettingsModal.vue, então os literais de
|
|
122
|
+
// variável e nome de arquivo permanecem não traduzidos.
|
|
123
|
+
geminiRequired: "A geração de imagens requer {envKey}. Adicione-o a {envFile} e reinicie o app.",
|
|
124
|
+
geminiAskButton: "Perguntar ao Claude",
|
|
125
|
+
geminiAskMessage: "Qual é o papel da chave API do Gemini neste app?",
|
|
126
|
+
toolNamesLabel: "Nomes de ferramentas",
|
|
127
|
+
invalidToolNamesPrefix: "Estes parecem não padrão (prefixo esperado",
|
|
128
|
+
invalidToolNamesSuffix: "):",
|
|
129
|
+
mcpToolsError: "⚠ Não foi possível obter o status das ferramentas MCP: {error}. Exibindo todas as ferramentas independentemente de estarem habilitadas.",
|
|
130
|
+
changesHint: "As alterações se aplicam na próxima mensagem. Não é preciso reiniciar.",
|
|
131
|
+
cannotSaveTooltip: "Não é possível salvar até as configurações carregarem com sucesso",
|
|
132
|
+
saving: "Salvando…",
|
|
133
|
+
loadingLabel: "Carregando…",
|
|
134
|
+
unsavedMarker: "●",
|
|
135
|
+
unsavedToolsConfirm: "Allowed Tools tem alterações não salvas. Fechar mesmo assim?",
|
|
136
|
+
unsavedMcpDraftConfirm: "Há um rascunho de servidor MCP aberto. Fechar mesmo assim?",
|
|
137
|
+
mcpSaveFailed: "Não foi possível salvar as alterações dos servidores MCP.",
|
|
138
|
+
},
|
|
139
|
+
canvasViewToggle: {
|
|
140
|
+
stackViewTooltip: "Visão em pilha · clique para alternar para visão única",
|
|
141
|
+
singleViewTooltip: "Visão única · clique para alternar para visão em pilha",
|
|
142
|
+
switchToSingle: "Alternar para visão única",
|
|
143
|
+
switchToStack: "Alternar para visão em pilha",
|
|
144
|
+
},
|
|
145
|
+
sessionHistoryToggle: {
|
|
146
|
+
showTooltip: "Mostrar o painel de histórico de sessões à esquerda",
|
|
147
|
+
hideTooltip: "Ocultar o painel de histórico de sessões",
|
|
148
|
+
show: "Mostrar histórico de sessões",
|
|
149
|
+
hide: "Ocultar histórico de sessões",
|
|
150
|
+
},
|
|
151
|
+
sessionHistoryExpand: {
|
|
152
|
+
expandTooltip: "Expandir o painel de histórico de sessões para largura total",
|
|
153
|
+
collapseTooltip: "Recolher o painel de histórico de sessões",
|
|
154
|
+
expand: "Expandir histórico de sessões",
|
|
155
|
+
collapse: "Recolher histórico de sessões",
|
|
156
|
+
},
|
|
157
|
+
settingsWorkspaceDirs: {
|
|
158
|
+
explanation: "Diretórios personalizados para organizar arquivos em {dataDir} e {artifactsDir}. O Claude os usa para decidir onde salvar arquivos.",
|
|
159
|
+
noEntries: "Nenhum diretório personalizado configurado.",
|
|
160
|
+
addDirTitle: "Adicionar diretório",
|
|
161
|
+
pathPlaceholder: "data/clientes ou artifacts/relatorios",
|
|
162
|
+
descPlaceholder: "Descrição (o que vai nesta pasta)",
|
|
163
|
+
errPathRequired: "Caminho é obrigatório",
|
|
164
|
+
errMustStartWith: "Deve começar com data/ ou artifacts/",
|
|
165
|
+
errAlreadyExists: "Já existe",
|
|
166
|
+
},
|
|
167
|
+
settingsReferenceDirs: {
|
|
168
|
+
explanation:
|
|
169
|
+
"Diretórios externos que o Claude pode ler, mas não modificar. No modo Docker, são montados como somente leitura. Úteis para referenciar vaults do Obsidian, código de projetos ou pastas de documentos.",
|
|
170
|
+
noEntries: "Nenhum diretório de referência configurado.",
|
|
171
|
+
addDirTitle: "Adicionar diretório de referência",
|
|
172
|
+
pathPlaceholder: "/Users/eu/ObsidianVault ou ~/Documentos/notas",
|
|
173
|
+
labelPlaceholder: "Rótulo (opcional — padrão é o nome da pasta)",
|
|
174
|
+
readOnlyBadge: "somente leitura",
|
|
175
|
+
errPathRequired: "Caminho é obrigatório",
|
|
176
|
+
errMustBeAbsolute: "Deve ser um caminho absoluto ou começar com ~/",
|
|
177
|
+
errAlreadyExists: "Já existe",
|
|
178
|
+
errLabelConflict: 'Rótulo "{label}" já existe',
|
|
179
|
+
},
|
|
180
|
+
pluginLauncher: {
|
|
181
|
+
todos: { label: "Tarefas", title: "Abrir tarefas" },
|
|
182
|
+
calendar: { label: "Calendário", title: "Abrir calendário" },
|
|
183
|
+
automations: { label: "Ações", title: "Abrir ações" },
|
|
184
|
+
wiki: { label: "Wiki", title: "Abrir wiki" },
|
|
185
|
+
sources: { label: "Fontes", title: "Abrir fontes de informação" },
|
|
186
|
+
news: { label: "Notícias", title: "Abrir o leitor de notícias" },
|
|
187
|
+
skills: { label: "Skills", title: "Abrir skills" },
|
|
188
|
+
roles: { label: "Papéis", title: "Abrir papéis" },
|
|
189
|
+
files: { label: "Arquivos", title: "Abrir arquivos do workspace" },
|
|
190
|
+
},
|
|
191
|
+
fileContentHeader: {
|
|
192
|
+
showRendered: "Mostrar Markdown renderizado",
|
|
193
|
+
showRaw: "Mostrar código-fonte",
|
|
194
|
+
rendered: "Renderizado",
|
|
195
|
+
raw: "Fonte",
|
|
196
|
+
closeFile: "Fechar arquivo",
|
|
197
|
+
},
|
|
198
|
+
fileContentRenderer: {
|
|
199
|
+
selectFile: "Selecione um arquivo",
|
|
200
|
+
htmlPreview: "Pré-visualização HTML",
|
|
201
|
+
pdfPreview: "Pré-visualização PDF",
|
|
202
|
+
parseError: "erro de análise",
|
|
203
|
+
},
|
|
204
|
+
settingsMcpTab: {
|
|
205
|
+
explanation:
|
|
206
|
+
"Adicione servidores MCP externos. Servidores HTTP funcionam em todos os modos. Servidores Stdio usam o {npx} / {node} / {tsx} da imagem do sandbox; quando o Docker está habilitado, os caminhos devem ficar dentro do workspace.",
|
|
207
|
+
localhostRewrite: "No modo Docker, {localhost} é reescrito para {hostDockerInternal}.",
|
|
208
|
+
noServers: "Ainda não há servidores MCP configurados.",
|
|
209
|
+
enabled: "habilitado",
|
|
210
|
+
urlLabel: "URL:",
|
|
211
|
+
commandLabel: "Comando:",
|
|
212
|
+
dockerNonWorkspaceWarning: "⚠ Contém caminhos fora do workspace — não serão resolvidos dentro do Docker.",
|
|
213
|
+
addServerButton: "+ Adicionar servidor MCP",
|
|
214
|
+
nameLabel: "Nome",
|
|
215
|
+
namePlaceholder: "meu-servidor",
|
|
216
|
+
typeHttp: "HTTP",
|
|
217
|
+
typeStdio: "Stdio (comando)",
|
|
218
|
+
urlFieldLabel: "URL",
|
|
219
|
+
urlPlaceholder: "https://example.com/mcp",
|
|
220
|
+
commandFieldLabel: "Comando",
|
|
221
|
+
argsLabel: "Argumentos (um por linha)",
|
|
222
|
+
// Forma de função de mensagem — ignora o compilador de mensagens do
|
|
223
|
+
// vue-i18n para que o `@` literal não seja interpretado como
|
|
224
|
+
// referência a mensagem vinculada.
|
|
225
|
+
argsPlaceholder: () => "-y\n@modelcontextprotocol/server-filesystem\n/workspace/path",
|
|
226
|
+
errNoName: "Informe um Nome, ou forneça uma URL / argumentos dos quais possamos derivá-lo.",
|
|
227
|
+
errBadName: "O nome deve começar com letra minúscula e conter apenas [a-z0-9_-].",
|
|
228
|
+
errIdExists: 'O id de servidor "{id}" já existe.',
|
|
229
|
+
errBadHttpUrl: "A URL HTTP deve começar com http:// ou https://",
|
|
230
|
+
pendingEntryWarning: "Conclua ou cancele primeiro a entrada de servidor MCP pendente.",
|
|
231
|
+
customHeading: "Servidores personalizados",
|
|
232
|
+
catalog: {
|
|
233
|
+
heading: "Servidores MCP pré-configurados",
|
|
234
|
+
audience: { general: "🟢 Geral", developer: "🔵 Desenvolvedor" },
|
|
235
|
+
risk: { low: "baixo", medium: "médio", high: "alto" },
|
|
236
|
+
upstream: "📦 Origem",
|
|
237
|
+
setupGuide: "📚 Configuração",
|
|
238
|
+
entry: {
|
|
239
|
+
memory: {
|
|
240
|
+
displayName: "Memória",
|
|
241
|
+
description: "Permite que o Claude lembre o contexto entre sessões.",
|
|
242
|
+
},
|
|
243
|
+
sequentialThinking: {
|
|
244
|
+
displayName: "Pensamento sequencial",
|
|
245
|
+
description: "Ajuda o Claude a resolver problemas complexos passo a passo.",
|
|
246
|
+
},
|
|
247
|
+
context7: {
|
|
248
|
+
displayName: "Context7 (documentação de bibliotecas)",
|
|
249
|
+
description: "Documentação atualizada de bibliotecas populares — supera o corte de treinamento do modelo.",
|
|
250
|
+
},
|
|
251
|
+
deepwiki: {
|
|
252
|
+
displayName: "DeepWiki (wiki de repos do GitHub)",
|
|
253
|
+
description: "Pergunte sobre qualquer repositório do GitHub e receba uma resposta estruturada estilo wiki.",
|
|
254
|
+
},
|
|
255
|
+
notion: {
|
|
256
|
+
displayName: "Notion",
|
|
257
|
+
description: "Leia e escreva no seu workspace do Notion — páginas, bancos de dados e busca.",
|
|
258
|
+
field: {
|
|
259
|
+
apiKey: {
|
|
260
|
+
label: "Token de integração do Notion",
|
|
261
|
+
help: "Crie uma integração no Notion e copie o Internal Integration Secret. Clique em 🔑 para abrir a página de integrações.",
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
slack: {
|
|
266
|
+
displayName: "Slack",
|
|
267
|
+
description: "Liste canais, envie mensagens e busque o histórico do seu workspace do Slack.",
|
|
268
|
+
field: {
|
|
269
|
+
botToken: {
|
|
270
|
+
label: "Token do bot",
|
|
271
|
+
help: "App do Slack → OAuth & Permissions → Bot User OAuth Token. Começa com xoxb-.",
|
|
272
|
+
},
|
|
273
|
+
teamId: {
|
|
274
|
+
label: "ID do team / workspace",
|
|
275
|
+
help: "Execute team.info ou veja a URL do workspace — algo como T01ABC23DEF.",
|
|
276
|
+
},
|
|
277
|
+
},
|
|
278
|
+
},
|
|
279
|
+
googleMaps: {
|
|
280
|
+
displayName: "Google Maps",
|
|
281
|
+
description: "Buscar lugares, obter rotas e consultar detalhes de localização.",
|
|
282
|
+
field: {
|
|
283
|
+
apiKey: {
|
|
284
|
+
label: "Chave de API do Google Maps",
|
|
285
|
+
help: "Google Cloud Console → APIs & Services → Credentials → Criar chave de API. Habilite Places + Directions.",
|
|
286
|
+
},
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
weatherOpenMeteo: {
|
|
290
|
+
displayName: "Clima (Open-Meteo)",
|
|
291
|
+
description: "Previsão do tempo gratuita e condições atuais no mundo todo — sem chave de API.",
|
|
292
|
+
},
|
|
293
|
+
},
|
|
294
|
+
config: {
|
|
295
|
+
howToGet: "Como obter",
|
|
296
|
+
install: "Instalar",
|
|
297
|
+
errMissingRequired: "Campos obrigatórios faltando: {fields}",
|
|
298
|
+
requiredMarker: "*",
|
|
299
|
+
requiredAria: "obrigatório",
|
|
300
|
+
},
|
|
301
|
+
},
|
|
302
|
+
},
|
|
303
|
+
pluginScheduler: {
|
|
304
|
+
prev: "Anterior",
|
|
305
|
+
today: "Hoje",
|
|
306
|
+
goToday: "Ir para hoje",
|
|
307
|
+
next: "Próximo",
|
|
308
|
+
deleteItem: "Excluir item",
|
|
309
|
+
closeEditor: "Fechar editor",
|
|
310
|
+
apiError: "⚠ Falha ao atualizar o agendador: {error}",
|
|
311
|
+
tabCalendar: "Calendário",
|
|
312
|
+
tabTasks: "Tarefas",
|
|
313
|
+
heading: "Agendador",
|
|
314
|
+
itemCount: "{count} item | {count} itens",
|
|
315
|
+
noScheduled: "Nenhum item agendado",
|
|
316
|
+
unscheduled: "Sem agendamento",
|
|
317
|
+
editItem: "Editar item",
|
|
318
|
+
update: "Atualizar",
|
|
319
|
+
editSource: "Editar fonte",
|
|
320
|
+
applyChanges: "Aplicar alterações",
|
|
321
|
+
yamlParseError: "Não foi possível analisar o YAML — verifique se 'title' está presente",
|
|
322
|
+
propLabel: "{key}:",
|
|
323
|
+
moreCount: "+{count} mais",
|
|
324
|
+
previewIcon: "📅",
|
|
325
|
+
previewUpcoming: "{count} próximos",
|
|
326
|
+
previewAutomations: "{count} automação | {count} automações",
|
|
327
|
+
previewMore: "+ {count} mais…",
|
|
328
|
+
},
|
|
329
|
+
pluginSchedulerTasks: {
|
|
330
|
+
recommendedFrequencies: "Frequências recomendadas",
|
|
331
|
+
tableTaskType: "Tipo de tarefa",
|
|
332
|
+
tableSuggestedSchedule: "Agendamento sugerido",
|
|
333
|
+
noTasks: "Nenhuma tarefa agendada",
|
|
334
|
+
runNow: "Executar agora",
|
|
335
|
+
enable: "Habilitar",
|
|
336
|
+
disable: "Desabilitar",
|
|
337
|
+
delete: "Excluir",
|
|
338
|
+
nextRun: "Próxima: {time}",
|
|
339
|
+
originSystem: "Sistema",
|
|
340
|
+
originUser: "Usuário",
|
|
341
|
+
originSkill: "Skill",
|
|
342
|
+
runFailed: "Falha na execução: {error}",
|
|
343
|
+
toggleFailed: "Falha ao alternar: {error}",
|
|
344
|
+
deleteFailed: "Falha ao excluir: {error}",
|
|
345
|
+
detailsToggle: "Mostrar detalhes",
|
|
346
|
+
promptLabel: "Prompt",
|
|
347
|
+
roleLabel: "Função",
|
|
348
|
+
},
|
|
349
|
+
pluginCanvas: {
|
|
350
|
+
undo: "Desfazer",
|
|
351
|
+
redo: "Refazer",
|
|
352
|
+
clear: "Limpar",
|
|
353
|
+
styleLabel: "Estilo:",
|
|
354
|
+
},
|
|
355
|
+
pluginChart: {
|
|
356
|
+
untitled: "Gráfico",
|
|
357
|
+
chartCount: "{count} gráfico | {count} gráficos",
|
|
358
|
+
chartTitle: "Gráfico {num}",
|
|
359
|
+
png: "PNG",
|
|
360
|
+
},
|
|
361
|
+
pluginTodo: {
|
|
362
|
+
clearFilters: "Limpar todos os filtros",
|
|
363
|
+
deleteItem: "Excluir item",
|
|
364
|
+
apiError: "⚠ Falha ao atualizar as tarefas: {error}",
|
|
365
|
+
loadFailed: "Falha ao carregar os Todos",
|
|
366
|
+
heading: "Lista de tarefas",
|
|
367
|
+
completedRatio: "{done}/{total} concluídas",
|
|
368
|
+
filter: "Filtro:",
|
|
369
|
+
noItems: "Ainda não há tarefas",
|
|
370
|
+
noMatchingFilter: "Nenhum item corresponde ao filtro ativo",
|
|
371
|
+
update: "Atualizar",
|
|
372
|
+
clearCompleted: "Limpar concluídas",
|
|
373
|
+
clearButton: "Limpar ✕",
|
|
374
|
+
deleteSymbol: "✕",
|
|
375
|
+
},
|
|
376
|
+
todoExplorer: {
|
|
377
|
+
heading: "Tarefas",
|
|
378
|
+
doneRatio: "{done}/{total} feitas",
|
|
379
|
+
addButton: "+ Adicionar",
|
|
380
|
+
addColumnButton: "+ Coluna",
|
|
381
|
+
labels: "Rótulos:",
|
|
382
|
+
searchPlaceholder: "Buscar...",
|
|
383
|
+
clearButton: "Limpar ✕",
|
|
384
|
+
clearFiltersTitle: "Limpar filtros de rótulo",
|
|
385
|
+
emptyHint: 'Ainda não há tarefas. Clique em "+ Adicionar" para criar uma.',
|
|
386
|
+
addColumn: "Adicionar coluna",
|
|
387
|
+
newColumnLabelField: "Rótulo",
|
|
388
|
+
newColumnPlaceholder: "Revisar",
|
|
389
|
+
noMatchingFilter: "Nenhum item corresponde ao filtro atual",
|
|
390
|
+
},
|
|
391
|
+
todoPreview: {
|
|
392
|
+
completedRatio: "{done}/{total} concluídas",
|
|
393
|
+
moreItems: "+ {count} mais…",
|
|
394
|
+
headerIcon: "☑",
|
|
395
|
+
doneIcon: "✓",
|
|
396
|
+
pendingIcon: "○",
|
|
397
|
+
moreLabels: "+{count}",
|
|
398
|
+
},
|
|
399
|
+
todoDialogs: {
|
|
400
|
+
addTitle: "Adicionar tarefa",
|
|
401
|
+
editTitle: "Editar tarefa",
|
|
402
|
+
deleteButton: "Excluir",
|
|
403
|
+
deleteTitle: "Excluir este item",
|
|
404
|
+
noneOption: "— Nenhum —",
|
|
405
|
+
fieldText: "Texto",
|
|
406
|
+
fieldNote: "Nota",
|
|
407
|
+
fieldStatus: "Status",
|
|
408
|
+
fieldPriority: "Prioridade",
|
|
409
|
+
fieldDueDate: "Data de vencimento",
|
|
410
|
+
fieldLabels: "Rótulos",
|
|
411
|
+
fieldLabelsCommaSeparated: "Rótulos (separados por vírgula)",
|
|
412
|
+
textPlaceholder: "O que precisa ser feito?",
|
|
413
|
+
labelsPlaceholder: "trabalho, urgente",
|
|
414
|
+
},
|
|
415
|
+
todoKanban: {
|
|
416
|
+
rename: "Renomear",
|
|
417
|
+
alreadyDoneColumn: "Já é a coluna de concluídas",
|
|
418
|
+
markAsDoneColumn: "Definir como coluna de concluídas",
|
|
419
|
+
deleteColumn: "Excluir coluna",
|
|
420
|
+
columnActions: "Ações da coluna",
|
|
421
|
+
addCard: "+ Adicionar cartão",
|
|
422
|
+
openCardAria: "Abrir tarefa: {task}",
|
|
423
|
+
},
|
|
424
|
+
todoTableList: {
|
|
425
|
+
noMatchingFilter: "Nenhum item corresponde ao filtro atual",
|
|
426
|
+
sortColumnAria: "Ordenar por {column}",
|
|
427
|
+
expandRowAria: "Expandir tarefa: {task}",
|
|
428
|
+
},
|
|
429
|
+
pluginWiki: {
|
|
430
|
+
backToIndex: "Voltar ao índice",
|
|
431
|
+
pdf: "PDF",
|
|
432
|
+
pdfFailed: "⚠ Falha no PDF",
|
|
433
|
+
tabIndex: "Índice",
|
|
434
|
+
tabLog: "Log",
|
|
435
|
+
tabLint: "Lint",
|
|
436
|
+
empty: "O wiki está vazio. Peça ao Wiki Manager para ingerir uma fonte.",
|
|
437
|
+
previewMore: "+ {count} mais…",
|
|
438
|
+
chatPlaceholder: "Pergunte sobre esta página…",
|
|
439
|
+
emptyPage: 'A página "{title}" ainda não existe.',
|
|
440
|
+
emptyContent: 'A página "{title}" existe, mas não tem conteúdo.',
|
|
441
|
+
createPage: "Solicitar a criação desta página wiki",
|
|
442
|
+
updatePage: "Solicitar a atualização desta página wiki",
|
|
443
|
+
tagFilterAll: "Todas",
|
|
444
|
+
noMatches: "Nenhuma página com a tag #{tag}",
|
|
445
|
+
lintChat: "Revisar meu wiki",
|
|
446
|
+
taskCountMismatch: "A fonte do wiki e a saída renderizada divergem no número de tarefas. A alternância foi recusada para evitar corromper o arquivo.",
|
|
447
|
+
},
|
|
448
|
+
pluginPresentForm: {
|
|
449
|
+
fallbackTitle: "Formulário",
|
|
450
|
+
fieldCount: "{count} campo | {count} campos",
|
|
451
|
+
submitted: "Enviado",
|
|
452
|
+
errorSummary: "Por favor, corrija os seguintes erros",
|
|
453
|
+
requiredMarker: "*",
|
|
454
|
+
selectOption: "Selecione uma opção",
|
|
455
|
+
charactersCount: "{current} / {max} caracteres",
|
|
456
|
+
charactersCountNoMax: "{current} caracteres",
|
|
457
|
+
submit: "Enviar",
|
|
458
|
+
progress: "{filled} de {total} campos obrigatórios preenchidos",
|
|
459
|
+
},
|
|
460
|
+
pluginPresentHtml: {
|
|
461
|
+
saveAsPdf: "Salvar como PDF (abre o diálogo de impressão)",
|
|
462
|
+
pdf: "PDF",
|
|
463
|
+
untitled: "Página HTML",
|
|
464
|
+
hideSource: "Ocultar fonte <>",
|
|
465
|
+
showSource: "Mostrar fonte <>",
|
|
466
|
+
},
|
|
467
|
+
pluginNews: {
|
|
468
|
+
title: "Notícias",
|
|
469
|
+
itemCount: "{unread} não lidas / {total} no total",
|
|
470
|
+
filterAll: "Todas",
|
|
471
|
+
filterUnread: "Não lidas",
|
|
472
|
+
allSources: "Todas",
|
|
473
|
+
markAllRead: "Marcar todas como lidas",
|
|
474
|
+
selectPrompt: "Selecione um item para ler.",
|
|
475
|
+
empty: "Sem notícias nesta visão.",
|
|
476
|
+
unread: "Não lida",
|
|
477
|
+
openOriginal: "Abrir original",
|
|
478
|
+
noBody: "Sem conteúdo — abra o artigo original.",
|
|
479
|
+
bodyError: "Falha ao carregar o conteúdo: {error}",
|
|
480
|
+
loadError: "Falha ao carregar notícias: {error}",
|
|
481
|
+
chatPlaceholder: "Pergunte o que quiser sobre este artigo",
|
|
482
|
+
},
|
|
483
|
+
pluginManageSource: {
|
|
484
|
+
titlePlaceholder: "Título (opcional)",
|
|
485
|
+
heading: "Fontes de informação",
|
|
486
|
+
chatPlaceholder: "Pergunte sobre suas fontes de informação…",
|
|
487
|
+
sourceCount: "{count} fonte | {count} fontes",
|
|
488
|
+
addButton: "Adicionar",
|
|
489
|
+
rebuildNow: "Reconstruir agora",
|
|
490
|
+
rebuilding: "Reconstruindo…",
|
|
491
|
+
typeField: "Tipo",
|
|
492
|
+
addingLabel: "Adicionando…",
|
|
493
|
+
addAndRebuild: "Adicionar + Reconstruir",
|
|
494
|
+
emptyPickPack: "Ainda não há fontes registradas. Escolha um pacote inicial abaixo, clique em {addBold} acima ou peça ao Claude para registrar uma.",
|
|
495
|
+
emptyAddStrong: "+ Adicionar",
|
|
496
|
+
registering: "Registrando + buscando…",
|
|
497
|
+
removeLabel: "Remover",
|
|
498
|
+
removingLabel: "Removendo…",
|
|
499
|
+
todaysBrief: "Resumo de hoje",
|
|
500
|
+
todaysBriefLoading: "Carregando o resumo de hoje…",
|
|
501
|
+
briefNone: "Ainda não há resumo para esta data. Clique em Reconstruir agora.",
|
|
502
|
+
briefEmpty: "O resumo de hoje está vazio.",
|
|
503
|
+
briefLoadFailed: "Falha ao carregar o resumo",
|
|
504
|
+
lastRebuildSummary: "Última reconstrução ({date}): {itemCount} itens de {planned} fontes, {duplicates} duplicatas descartadas.",
|
|
505
|
+
archiveErrorsSuffix: "({count} erros de arquivamento)",
|
|
506
|
+
kindRss: "RSS",
|
|
507
|
+
kindGithubRel: "Releases do GitHub",
|
|
508
|
+
kindGithubIss: "Issues do GitHub",
|
|
509
|
+
kindArxiv: "arXiv",
|
|
510
|
+
kindGithubReleases: "Releases do GitHub",
|
|
511
|
+
kindGithubIssues: "Issues do GitHub",
|
|
512
|
+
briefDateLabel: "({date})",
|
|
513
|
+
primaryRssPlaceholder: "https://news.ycombinator.com/rss",
|
|
514
|
+
primaryGithubPlaceholder: "https://github.com/owner/repo (ou owner/repo)",
|
|
515
|
+
primaryArxivPlaceholder: "cat:cs.CL",
|
|
516
|
+
primaryRssHint: "URL do feed (RSS 2.0 / Atom / RDF)",
|
|
517
|
+
primaryGithubRelHint: "URL do repo do GitHub ou owner/repo — busca releases",
|
|
518
|
+
primaryGithubIssHint: "URL do repo do GitHub ou owner/repo — busca issues",
|
|
519
|
+
primaryArxivHint: "Consulta de busca do arXiv (ex.: cat:cs.CL ou au:hinton)",
|
|
520
|
+
confirmRemove: 'Remover a fonte "{slug}"?',
|
|
521
|
+
flashRegistered: "Registrada. Buscando novos itens…",
|
|
522
|
+
flashRebuildReady: "Pronto: {itemCount} itens de {planned} fonte.|Pronto: {itemCount} itens de {planned} fontes.",
|
|
523
|
+
flashRebuildComplete: "Reconstrução concluída: {itemCount} itens de {planned} fontes.",
|
|
524
|
+
flashRebuildFailed: "Falha na reconstrução: {error}",
|
|
525
|
+
flashRegisterFailed: "Falha ao registrar a fonte",
|
|
526
|
+
flashRegisterSucceededRebuildFailed: "Registro bem-sucedido, mas falha na reconstrução: {error}",
|
|
527
|
+
flashRemoved: 'Removida "{slug}".',
|
|
528
|
+
flashRemoveFailed: "Falha ao remover: {error}",
|
|
529
|
+
flashRefreshListFailed: "Falha ao atualizar as fontes: {error}",
|
|
530
|
+
flashPresetAlreadyRegistered: 'Todas as fontes em "{label}" já estão registradas.',
|
|
531
|
+
flashPresetRegistered: 'Registrada {count} fonte de "{label}". Buscando…|Registradas {count} fontes de "{label}". Buscando…',
|
|
532
|
+
flashPresetPartial: "Registradas {ok}/{total}. Erros: {errors}",
|
|
533
|
+
errPrimaryRequired: "Por favor, preencha o campo URL / consulta.",
|
|
534
|
+
errRssUrlProtocol: "A URL do feed RSS deve começar com http:// ou https://",
|
|
535
|
+
errRssUrlInvalid: "A URL do feed RSS não é uma URL válida.",
|
|
536
|
+
errRssUrlHost: "A URL do feed RSS deve incluir um host.",
|
|
537
|
+
errGithubInvalid: "Informe uma URL de repositório do GitHub (https://github.com/owner/repo) ou owner/repo.",
|
|
538
|
+
errUnsupportedKind: "Tipo de fetcher não suportado.",
|
|
539
|
+
initialLoading: "Carregando fontes…",
|
|
540
|
+
initialLoadFailed: "Falha ao carregar fontes.",
|
|
541
|
+
retryLabel: "Tentar novamente",
|
|
542
|
+
filter: {
|
|
543
|
+
all: "Todas",
|
|
544
|
+
rss: "RSS",
|
|
545
|
+
github: "GitHub",
|
|
546
|
+
arxiv: "arXiv",
|
|
547
|
+
scheduleDaily: "Diário",
|
|
548
|
+
scheduleWeekly: "Semanal",
|
|
549
|
+
scheduleManual: "Manual",
|
|
550
|
+
noMatching: "Nenhuma fonte corresponde ao filtro atual.",
|
|
551
|
+
clearFilter: "Limpar filtro",
|
|
552
|
+
},
|
|
553
|
+
},
|
|
554
|
+
pluginManageSkills: {
|
|
555
|
+
deleteProjectSkill: "Excluir esta skill de projeto",
|
|
556
|
+
heading: "Skills",
|
|
557
|
+
previewCount: "{count} skill | {count} skills",
|
|
558
|
+
previewMore: "+{count} mais",
|
|
559
|
+
subheading: ({ named }: { named: (key: string) => unknown }) => `${named("count")} disponíveis · clique para visualizar · "Run" invoca como /<name>`,
|
|
560
|
+
emptyWithPath: "Nenhuma skill encontrada. Adicione pastas de skills em {path}.",
|
|
561
|
+
emptySkillPath: "~/.claude/skills/",
|
|
562
|
+
selectHint: "Selecione uma skill à esquerda para ver seu SKILL.md.",
|
|
563
|
+
loading: "Carregando…",
|
|
564
|
+
fieldDescription: "Descrição",
|
|
565
|
+
fieldBody: "Corpo (Markdown)",
|
|
566
|
+
emptyBody: "(corpo vazio)",
|
|
567
|
+
btnEdit: "Editar",
|
|
568
|
+
btnDelete: "Excluir",
|
|
569
|
+
btnRun: "Executar",
|
|
570
|
+
errListFailed: "Falha ao carregar skills: {error}",
|
|
571
|
+
errDetailFailed: "Falha ao carregar a skill: {error}",
|
|
572
|
+
errSaveFailed: "Falha ao salvar: {error}",
|
|
573
|
+
errDeleteFailed: "Falha ao excluir",
|
|
574
|
+
confirmDelete: 'Excluir a skill "{name}"? Isso remove ~/mulmoclaude/.claude/skills/{name}/SKILL.md.',
|
|
575
|
+
},
|
|
576
|
+
pluginManageRoles: {
|
|
577
|
+
heading: "Papéis personalizados",
|
|
578
|
+
roleCount: "{count} papel | {count} papéis",
|
|
579
|
+
previewCount: "{count} papel personalizado | {count} papéis personalizados",
|
|
580
|
+
addButton: "+ Adicionar",
|
|
581
|
+
createPanel: "Criar novo papel",
|
|
582
|
+
fieldId: "ID",
|
|
583
|
+
fieldName: "Nome",
|
|
584
|
+
fieldIcon: "Ícone",
|
|
585
|
+
fieldPrompt: "Prompt",
|
|
586
|
+
fieldPlugins: "Plugins",
|
|
587
|
+
fieldStarterQueries: "Consultas iniciais",
|
|
588
|
+
onePerLine: "(uma por linha)",
|
|
589
|
+
helpLink: "?",
|
|
590
|
+
idFormatted: "({id})",
|
|
591
|
+
missingEnv: "({env} ausente)",
|
|
592
|
+
requiresEnv: "Requer {env} no .env",
|
|
593
|
+
collapse: "Recolher",
|
|
594
|
+
expand: "Expandir",
|
|
595
|
+
idPlaceholder: "id-unico",
|
|
596
|
+
creating: "Criando…",
|
|
597
|
+
create: "Criar",
|
|
598
|
+
updating: "Atualizando…",
|
|
599
|
+
update: "Atualizar",
|
|
600
|
+
cancel: "Cancelar",
|
|
601
|
+
delete: "Excluir",
|
|
602
|
+
emptyHint: 'Ainda não há papéis personalizados. Clique em "+ Adicionar" ou peça ao Claude para criar um.',
|
|
603
|
+
errIdRequired: "O ID é obrigatório.",
|
|
604
|
+
errIdInvalid: "O ID pode conter apenas letras, números, '-' e '_'.",
|
|
605
|
+
errNameRequired: "O nome é obrigatório.",
|
|
606
|
+
errIdDuplicate: "Já existe um papel com ID '{id}'.",
|
|
607
|
+
errCreateFailed: "Falha ao criar",
|
|
608
|
+
errSaveFailed: "Falha ao salvar",
|
|
609
|
+
errDeleteFailed: "Falha ao excluir",
|
|
610
|
+
errNetworkError: "Erro de rede",
|
|
611
|
+
errServerError: "Erro do servidor: {status}",
|
|
612
|
+
},
|
|
613
|
+
pluginUiImage: {
|
|
614
|
+
promptLabel: "{label}:",
|
|
615
|
+
},
|
|
616
|
+
pluginMulmoScript: {
|
|
617
|
+
beatCount: "{count} beat | {count} beats",
|
|
618
|
+
movie: "Vídeo",
|
|
619
|
+
generating: "Gerando…",
|
|
620
|
+
rendering: "Renderizando…",
|
|
621
|
+
saving: "Salvando…",
|
|
622
|
+
update: "Atualizar",
|
|
623
|
+
characters: "Personagens",
|
|
624
|
+
drop: "Soltar",
|
|
625
|
+
gen: "Gerar",
|
|
626
|
+
play: "▶ Reproduzir",
|
|
627
|
+
stop: "■ Parar",
|
|
628
|
+
errPrefix: "⚠ Erro",
|
|
629
|
+
noBeats: "Nenhum beat encontrado no script",
|
|
630
|
+
editSource: "Editar fonte do script",
|
|
631
|
+
applyChanges: "Aplicar alterações",
|
|
632
|
+
generateAll: "Gerar tudo",
|
|
633
|
+
orDropImage: "ou solte uma imagem",
|
|
634
|
+
generate: "Gerar",
|
|
635
|
+
generateAudio: "♪ Gerar",
|
|
636
|
+
saveErrorInvalidJson: "⚠ JSON inválido: {error}",
|
|
637
|
+
saveErrorSaveFailed: "⚠ Falha ao salvar: {error}",
|
|
638
|
+
},
|
|
639
|
+
pluginMarkdown: {
|
|
640
|
+
loading: "Carregando documento...",
|
|
641
|
+
loadFailed: "⚠ Falha ao carregar o documento: {error}",
|
|
642
|
+
refreshFailed: "⚠ Falha ao atualizar o documento: {error} — exibindo o último conteúdo carregado com sucesso.",
|
|
643
|
+
noContent: "Nenhum conteúdo Markdown disponível",
|
|
644
|
+
pdf: "PDF",
|
|
645
|
+
pdfFailedShort: "⚠ Falha no PDF",
|
|
646
|
+
editSource: "Editar fonte Markdown",
|
|
647
|
+
saving: "Salvando...",
|
|
648
|
+
applyChanges: "Aplicar alterações",
|
|
649
|
+
cancel: "Cancelar",
|
|
650
|
+
saveFailed: "Falha ao salvar: {error}",
|
|
651
|
+
saveError: "⚠ {error}",
|
|
652
|
+
copyLabel: "Copiar",
|
|
653
|
+
copiedLabel: "Copiado!",
|
|
654
|
+
taskCountMismatch: "O número de tarefas diverge entre a fonte Markdown e a saída renderizada. A alternância foi recusada para evitar corromper o arquivo.",
|
|
655
|
+
},
|
|
656
|
+
pluginTextResponse: {
|
|
657
|
+
pdf: "PDF",
|
|
658
|
+
pdfFailed: "⚠ Falha no PDF",
|
|
659
|
+
editContent: "Editar conteúdo de texto",
|
|
660
|
+
applyChanges: "Aplicar alterações",
|
|
661
|
+
copyLabel: "Copiar",
|
|
662
|
+
copiedLabel: "Copiado!",
|
|
663
|
+
cancel: "Cancelar",
|
|
664
|
+
},
|
|
665
|
+
pluginSpreadsheet: {
|
|
666
|
+
previewUntitled: "Planilha",
|
|
667
|
+
previewSheets: "{count} aba | {count} abas",
|
|
668
|
+
untitled: "Planilha",
|
|
669
|
+
excel: "Excel",
|
|
670
|
+
valuePlaceholder: "Valor",
|
|
671
|
+
valueOrFormulaPlaceholder: "Valor ou Fórmula (ex.: 100 ou SUM(B2:B11))",
|
|
672
|
+
formatPlaceholder: "Formato (ex.: $#,##0.00)",
|
|
673
|
+
loading: "Carregando planilha...",
|
|
674
|
+
noData: "Nenhum dado de planilha disponível",
|
|
675
|
+
editData: "Editar dados da planilha",
|
|
676
|
+
applyChanges: "Aplicar alterações",
|
|
677
|
+
dataMustBeArray: "Os dados devem ser uma matriz de planilhas",
|
|
678
|
+
loadFailed: "Falha ao carregar a planilha: {error}",
|
|
679
|
+
invalidJsonAlert: "Formato JSON inválido: {error}",
|
|
680
|
+
unknownError: "Erro desconhecido",
|
|
681
|
+
update: "Atualizar",
|
|
682
|
+
stringType: "Texto",
|
|
683
|
+
formulaType: "Fórmula",
|
|
684
|
+
},
|
|
685
|
+
app: {
|
|
686
|
+
startConversation: "Iniciar uma conversa",
|
|
687
|
+
thinking: "Pensando…",
|
|
688
|
+
},
|
|
689
|
+
suggestionsPanel: {
|
|
690
|
+
suggestions: "Sugestões",
|
|
691
|
+
sendEditHint: "clique para enviar · shift+clique para editar",
|
|
692
|
+
},
|
|
693
|
+
settingsToolsTab: {
|
|
694
|
+
// Renderizado via <i18n-t> com slots nomeados `allowedTools` e
|
|
695
|
+
// `claudeMcp` para que as tags `<code>` inline mantenham seu estilo
|
|
696
|
+
// enquanto o texto é traduzível.
|
|
697
|
+
explanation:
|
|
698
|
+
"Nomes adicionais de ferramentas a serem passados ao Claude via {allowedTools}. Um por linha. Útil para servidores MCP integrados ao Claude Code como Gmail / Google Calendar após autenticar via {claudeMcp}.",
|
|
699
|
+
},
|
|
700
|
+
};
|
|
701
|
+
|
|
702
|
+
export default ptBRMessages;
|