feat(i18n): 覆盖支持扩展到 19 语言(de/fr/pt/ko/ar/hi/id/tr/vi/th/ru/it/nl/sv/pl/zh-HK/zh-TW/zh-MO)

This commit is contained in:
HuanLinOTO
2026-08-23 14:57:48 +08:00
parent 16a809594c
commit 7f8f95a59b
20 changed files with 6224 additions and 2 deletions
+328
View File
@@ -0,0 +1,328 @@
export const pt: Record<string, string> = {
files: 'Arquivos',
explorer: 'Explorador',
git: 'Controle de código-fonte',
terminal: 'Terminal',
editor: 'Editor',
editorExplorer: 'Comportamento de abertura de arquivos',
editorExplorerDesc: 'Controla como os arquivos são abertos',
editorExplorerMerged: 'Mesclado',
editorExplorerMergedDesc: 'Arquivos alternam no mesmo lugar na mesma janela; novas janelas começam com a árvore de arquivos aberta',
editorExplorerSplit: 'Separado',
editorExplorerSplitDesc: 'Janelas sem caminho são o explorador independente (somente árvore de arquivos); cada arquivo abre sua própria janela (com árvore encaixada, fechada por padrão)',
editorTreeToggle: 'Painel da árvore de arquivos',
editorPathPlaceholder: 'Caminho do arquivo (relativo ao diretório da sessão ou absoluto), Enter para abrir',
editorSearchPlaceholder: 'Pesquisar arquivos por nome…',
editorSearchNoResults: 'Nenhum arquivo correspondente',
editorSearchTruncated: 'Resultados demais — exibindo lista parcial',
editorEmptyHint: 'Escolha um arquivo na árvore do painel ou no campo de caminho acima para começar a pré-visualizar',
openFileNewTab: 'Abrir em nova aba',
openFileSide: 'Abrir ao lado',
openWithMenu: 'Abrir com',
openWithSshSuffix: ' (SSH)',
pinOpenWith: 'Fixar no menu',
unpinOpenWith: 'Desafixar',
openWithExplorer: 'Gerenciador de arquivos',
openWithVscode: 'VS Code',
openWithCursor: 'Cursor',
openWithZed: 'Zed',
openWithSettingsSshTitle: 'Host remoto SSH',
openWithSettingsSshDesc: 'Vazio = workspace local; com user@host ou um alias SSH, os abridores da família VSCode passam a usar o protocolo vscode-remote/ssh-remote e o Gerenciador de arquivos / Zed / editores personalizados fora da família VSCode ficam ocultos do menu',
openWithSettingsSshPlaceholder: 'user@host ou alias SSH',
openWithSettingsCustomTitle: 'Editores personalizados',
openWithSettingsCustomDesc: 'Nome + modelo de URL (espaço reservado {path}) + sinalizador de família VSCode; no modo remoto, apenas editores da família VSCode podem abrir um caminho remoto',
openWithSettingsAdd: 'Adicionar',
openWithSettingsName: 'Nome',
openWithSettingsTemplate: 'ex.: cursor://file/{path}',
openWithSettingsFamily: 'Família VSCode',
openWithSettingsFamilyDesc: 'Este editor fala o dialeto de URL do VSCode (suporta aberturas SSH remotas)',
openWithSettingsRemove: 'Remover',
openWithSettingsInvalidHint: 'Editores com nome ausente ou modelo sem {path} / scheme:// não aparecem no menu',
newTab: 'Nova aba',
openExplorer: 'Explorador',
brokenSymlink: 'Symlink quebrado',
openGit: 'Painel Git',
newTerminal: 'Novo terminal',
terminalLimit: 'Limite de terminais atingido (3)',
close: 'Fechar',
closeOtherTabs: 'Fechar outras abas',
closeLeftTabs: 'Fechar abas à esquerda',
closeRightTabs: 'Fechar abas à direita',
collapse: 'Recolher barra lateral',
expand: 'Expandir barra lateral',
collapseBottomPanel: 'Recolher painel inferior',
expandBottomPanel: 'Expandir painel inferior',
terminalError: 'Falha na conexão do terminal',
terminalConnectFailed: 'O terminal falhou ao conectar repetidamente',
terminalRetry: 'Tentar novamente',
terminalDepsFailed: 'A dependência do terminal node-pty falhou ao carregar',
terminalDepsHint: 'Execute o comando abaixo em um terminal ou cmd na máquina do DSH para reparar e tente novamente (node-pty permanece em sincronia com a versão do núcleo do DSH):',
terminalDepsProfile: ' (perfil detectado: {profile})',
preview: 'Pré-visualizar',
edit: 'Editar',
mermaidError: 'Falha ao renderizar o Mermaid',
mermaidZoomIn: 'Ampliar',
mermaidZoomOut: 'Reduzir',
mermaidZoomReset: 'Redefinir',
mermaidZoomHint: 'Rolar para ampliar · arrastar para mover · Esc para fechar',
refresh: 'Atualizar',
save: 'Salvar',
saved: 'Salvo',
unsaved: 'Não salvo',
saveFailed: 'Falha ao salvar',
truncation: 'Arquivo grande demais — exibindo os primeiros 512KB',
binary: 'Arquivo binário, pré-visualização indisponível',
loading: 'Carregando…',
error: 'Falha ao carregar',
retry: 'Tentar novamente',
splitLeft: 'Dividir à esquerda',
splitRight: 'Dividir à direita',
splitUp: 'Dividir acima',
splitDown: 'Dividir abaixo',
notRepo: 'Este diretório não é um repositório git',
noChanges: 'Sem alterações',
stage: 'Preparar (stage)',
unstage: 'Desfazer stage',
stageAll: 'Preparar tudo',
unstageAll: 'Desfazer stage de tudo',
commitPlaceholder: 'Mensagem de commit (Ctrl+Enter)',
commit: 'Commit',
commitError: 'Falha no commit',
branch: 'Branch',
checkoutError: 'Falha ao alternar de branch',
history: 'Histórico',
changes: 'Alterações',
staged: 'Preparadas',
unstaged: 'Não preparadas',
cancel: 'Cancelar',
diffEmpty: 'Sem alterações de texto',
diffLoadError: 'Falha ao carregar o diff',
diffBinary: 'Binário',
diffAdded: 'Adicionado',
diffDeleted: 'Excluído',
diffRenamed: 'Renomeado',
diffExpand: 'Expandir mais {count} linhas',
diffCollapse: 'Recolher',
discard: 'Descartar alterações',
discardTitle: 'Descartar alterações',
discardDesc: 'Isso descarta as alterações do diretório de trabalho de "{path}" (não recuperável).',
viewCommitDiff: 'Ver diff do commit',
copyShortHash: 'Copiar hash curto',
copyFullHash: 'Copiar hash completo',
copySubject: 'Copiar assunto',
revertCommit: 'Reverter commit',
revertTitle: 'Reverter commit',
revertDesc: 'Crie um novo commit no branch atual que reverte "{subject}".',
cherryPickCommit: 'Cherry-pick deste commit',
cherryPickTitle: 'Cherry-pick deste commit',
cherryPickDesc: 'Aplicar as alterações de "{subject}" ao branch atual.',
timeJustNow: 'agora mesmo',
timeMinutesAgo: 'há {n} min',
timeHoursAgo: 'há {n} h',
timeYesterday: 'ontem',
loadMore: 'Carregar mais',
historyLoadError: 'Falha ao carregar mais histórico',
produced: 'Produzidos',
producedOpen: 'Abrir na barra lateral',
disconnected: 'Terminal desconectado, reconectando…',
exited: 'O processo do terminal saiu',
noSession: 'Selecione uma conversa para usar a barra lateral',
pluginNotLoaded: 'Plugin não carregado; aba indisponível:',
hiddenFiles: 'Arquivos ocultos',
parent: 'Diretório pai',
copied: 'Copiado',
copy: 'Copiar',
newFile: 'Novo arquivo',
openEditor: 'Abrir editor',
gitDetail: 'Ver detalhes das alterações',
referenceFile: '@arquivo',
addToConversation: 'Adicionar à conversa',
copyRelative: 'Copiar caminho relativo',
copyAbsolute: 'Copiar caminho absoluto',
download: 'Baixar',
uploadFiles: 'Enviar arquivos',
uploadFolder: 'Enviar pasta',
uploadHere: 'Enviar aqui',
uploadDropHint: 'Solte arquivos/pastas aqui para enviar',
uploadDropChat: 'Solte no chat para adicionar imagens',
uploadTo: 'Enviar para {dir}',
uploadingTo: 'Enviando para {dir}…',
uploadProgress: 'Enviando {done}/{total}: {name}',
uploadDone: '{count} arquivo(s) enviado(s)',
uploadFailed: 'Falha no envio: {error}',
uploadFailedUnknown: 'Erro desconhecido',
uploadTooLarge: 'Arquivo grande demais (acima do limite de envio)',
uploadCancelled: 'Envio cancelado',
settingsNav: 'Cartão lateral',
settingsIntro: 'Gerencie o que o cartão lateral mostra e como ele se comporta',
settingsPopupDesc: 'Configurar opções relacionadas para {feature}',
settingsDone: 'Concluído',
settingsOpenTitle: 'Abrir por padrão em novas conversas',
settingsOpenDesc: 'Expandir o cartão lateral automaticamente em conversas totalmente novas; conversas existentes mantêm seus próprios layouts',
settingsWidthTitle: 'Participação padrão na largura',
settingsWidthDesc: 'Participação padrão do cartão lateral na largura da janela em novas conversas (20–60)',
settingsWidthSuffix: '%',
settingsOpenPathTitle: 'Abrir arquivos do chat na barra lateral',
settingsOpenPathDesc: 'Abrir links de arquivos no chat (linhas de ferramentas, arquivos produzidos, menções) no editor da barra lateral em vez do aplicativo padrão do sistema',
settingsTitleBarTitle: 'Modo de compatibilidade de posição',
settingsTitleBarDesc: 'Escolha o esquema de compatibilidade da barra de título: detecção automática (padrão, conservador) / web oficial do DSH / shells de desktop conhecidos / personalizado (distância de deslocamento + CSS personalizado)',
settingsTitleBarStripTitle: 'Distância de deslocamento',
settingsTitleBarStripDesc: 'Altura da faixa da barra de título: quantos pixels os botões e o conteúdo da barra lateral descem (0–120, padrão 40; aplica-se no esquema personalizado)',
settingsSchemeAutoTitle: 'Detecção automática',
settingsSchemeAutoDesc: 'Conservador: somente a API padrão Window Controls Overlay contribui (altura real da sobreposição de título); ambientes web comuns não recebem nenhuma modificação',
settingsSchemeWebTitle: 'Web oficial do DSH',
settingsSchemeWebDesc: 'Declare explicitamente a interface web oficial: nenhuma adaptação (nem mesmo a geometria padrão do WCO)',
settingsSchemeCustomTitle: 'Personalizado',
settingsSchemeCustomDesc: 'Controle total: injete CSS personalizado (pode sobrescrever estilos internos) e defina a distância de deslocamento da barra de título',
settingsSchemeDetectedSuffix: 'detectado',
settingsCustomCssTitle: 'CSS personalizado',
settingsCustomCssDesc: 'Estilos anexados ao final da página (quem vem depois vence em empate de cascata; use !important para sobrescrever variáveis inline escritas por JS)',
settingsCustomCssPlaceholder: '/* ex.: reserve 36px para um shell com barra de título desenhada por conta própria */\nhtml[data-dsh-title-bar-height="36"] {\n --dsh-title-bar-strip: 36px !important;\n}',
settingsSaveFailed: 'Falha ao salvar',
settingsConflict: 'A configuração foi alterada em outra janela — tente novamente',
binaryNoPreview: 'Este tipo de arquivo não pode ser pré-visualizado',
downloadToView: 'Baixar para ver',
settingsSubagentTitle: 'Abrir automaticamente a página de Tarefas quando um subagente aparecer',
settingsSubagentDesc: 'Expandir o cartão lateral e abrir a página de Tarefas quando a conversa atual gerar um novo subagente; desative para abrir manualmente',
settingsJobsTitle: 'Abrir automaticamente a página de Tarefas em segundo plano quando houver uma nova tarefa',
settingsJobsDesc: 'Expandir o cartão lateral e abrir a página de Tarefas sempre que uma nova tarefa em segundo plano aparecer para a conversa atual (cada nova tarefa dispara); desative para abrir manualmente',
settingsToolsTitle: 'Injetar ferramentas de terminal para o modelo',
settingsToolsDesc: 'Quando ativado, o modelo pode criar e operar terminais da barra lateral por meio das 8 ferramentas terminal_* (desativado por padrão)',
settingsBottomTerminalTitle: 'Abrir um terminal automaticamente na primeira expansão do painel inferior',
settingsBottomTerminalDesc: 'Quando o painel inferior for expandido pela primeira vez em uma sessão, tente abrir uma nova aba de terminal lá (a cota de terminais ainda se aplica; ativado por padrão)',
settingsFontFamilyTitle: 'Família de fonte do terminal',
settingsFontFamilyDesc: 'Família de fonte personalizada do terminal (uma pilha CSS font-family como "JetBrains Mono", monospace; deixe vazio para seguir a fonte monoespaçada do tema)',
settingsFontFamilyPlaceholder: '"JetBrains Mono", monospace',
settingsFontSizeTitle: 'Tamanho da fonte do terminal',
settingsFontSizeDesc: 'Tamanho da fonte do terminal em px (9–32, padrão 13)',
settingsFontSizeSuffix: 'px',
settingsShellTitle: 'Caminho do shell',
settingsShellDesc: 'Shell iniciado para terminais de UI e do modelo (caminho absoluto ou executável puro). Vazio mantém a ordem legada: config.shell do yaml → $SHELL / shell de login / powershell.exe no Windows. Aplica-se aos terminais abertos depois',
settingsShellPlaceholder: 'ex.: /bin/zsh (vazio = automático)',
settingsShellArgsTitle: 'Argumentos do shell',
settingsShellArgsDesc: 'Argumentos explícitos do shell, separados por espaço; quando não vazios, substituem totalmente os padrões (mesmo contrato do shellArgs do yaml)',
settingsShellArgsPlaceholder: 'ex.: -l (vazio = padrões)',
settingsTabsTitle: 'Conteúdo da barra lateral',
settingsViewersTitle: 'Visualizadores de arquivos',
settingsGeneralTitle: 'Geral',
settingsPopup: 'Configurações do recurso',
settingsViewerCatchAll: 'Curinga: qualquer arquivo',
viewerImage: 'Imagem',
viewerPdf: 'PDF',
viewerMarkdown: 'Markdown',
viewerCode: 'Código',
viewerBinary: 'Download binário',
viewerHtml: 'HTML',
browser: 'Navegador',
browserPlaceholder: 'Digite uma URL, ex.: example.com',
browserGo: 'Ir',
browserBack: 'Voltar',
browserForward: 'Avançar',
browserStart: 'Digite uma URL para começar a navegar (modo sandbox)',
browserBlockedScheme: 'Bloqueado: apenas URLs http/https são permitidas',
browserBlockedLoopback: 'Bloqueado: endereços locais e internos não podem ser navegados aqui',
browserInvalid: 'URL inválida',
browserNoSandboxWarning: 'Sandbox desativado: a página atual roda com privilégios completos da interface (reative nas configurações)',
htmlNoSandboxWarning: 'Sandbox desativado: este HTML roda com privilégios completos da interface (reative nas configurações)',
sandboxStatusOn: 'Modo sandbox: ativado · as páginas não podem acessar os dados da interface nem arquivos locais; logins e cookies de terceiros podem não funcionar',
sandboxUnlock: 'Desativar temporariamente (inseguro)',
sandboxRestore: 'Restaurar sandbox',
settingsHtmlDefaultUnsafeTitle: 'Abrir pré-visualizações de HTML sem sandbox por padrão (inseguro)',
settingsHtmlDefaultUnsafeDesc: 'Quando ativado, toda pré-visualização de HTML recém-aberta começa sem sandbox (mesma origem da interface — pode ler arquivos de sessão e APIs internas); a linha de status ainda oferece restauração em um toque',
settingsHtmlSandboxTitle: 'Desativar o sandbox da pré-visualização de HTML (inseguro)',
settingsHtmlSandboxDesc: 'Com o sandbox desativado, o HTML pré-visualizado roda com a mesma origem da interface: pode ler arquivos de sessão, armazenamento local e chamar APIs internas. Ative apenas para arquivos totalmente confiáveis',
settingsBrowserSandboxTitle: 'Desativar o sandbox do navegador (inseguro)',
settingsBrowserSandboxDesc: 'Com o sandbox desativado, qualquer site visitado roda com a mesma origem da interface: pode ler dados da sessão e agir como sua sessão conectada. Ative apenas para sites totalmente confiáveis',
settingsBrowserLinksTitle: 'Abrir links externos do chat na barra lateral',
settingsBrowserLinksDesc: 'Quando ativado, clicar em um link externo no chat ou na interface abre na barra lateral em vez de uma nova janela; HTTP e HTTPS são controlados separadamente pelos interruptores abaixo; Ctrl/Cmd+clique sempre ignora',
settingsBrowserHttpTitle: 'Abrir páginas HTTP na barra lateral',
settingsBrowserHttpDesc: 'Quando ativado, clicar em um link externo HTTP no chat ou na interface abre na barra lateral (páginas de plugins que declaram urlTarget vencem); Ctrl/Cmd+clique sempre ignora',
settingsBrowserHttpsTitle: 'Abrir páginas HTTPS na barra lateral',
settingsBrowserHttpsDesc: 'Quando ativado, clicar em um link externo HTTPS no chat ou na interface abre na barra lateral. Desativado por padrão: a maioria dos sites HTTPS se recusa a ser incorporada, então o navegador do sistema é o padrão mais suave',
browserOpenExternal: 'Abrir no navegador',
browserEmbedBlocked: '{host} se recusou a ser incorporado',
browserEmbedBlockedDesc: 'O site proíbe ser exibido dentro de outras páginas (X-Frame-Options / frame-ancestors), então não pode carregar na barra lateral. Abra-o diretamente no navegador.',
browserEmbedAnyway: 'Carregar mesmo assim',
subagent: 'Tarefas',
openSubagent: 'Tarefas',
subagentMainAgent: 'Agente principal',
subagentEmpty: 'Nenhum subagente',
subagentEmptyDesc: 'Subagentes gerados sob o agente principal aparecerão aqui',
subagentRunning: 'Executando',
subagentInactive: 'Inativo',
subagentModeOneShot: 'De uso único',
subagentModeContinuable: 'Continuável',
subagentCount: '{count} subagentes',
subagentCountRunning: '{count} subagentes · {running} executando',
subagentDiagCorrupt: 'Corrompido',
subagentDiagUnsupported: 'Não suportado',
subagentDiagUnavailable: 'Indisponível',
subagentThinking: 'Pensando…',
sideChat: 'Chat lateral (beta)',
sideChatNew: 'Novo tópico',
sideChatUntitled: 'Novo tópico',
sideChatEmpty: 'Nenhuma conversa lateral',
sideChatEmptyDesc: 'Cada conversa lateral é uma aba própria na faixa de abas — ela herda o contexto da sessão atual e nunca entra na conversa principal',
sideChatCreating: 'Criando conversa lateral…',
sideChatRetry: 'Tentar novamente',
sideChatThreads: 'Alternar tópico / novo',
sideChatSave: 'Salvar como nova sessão',
sideChatSaveTitle: 'Promover este tópico a uma sessão de nível superior na lista principal de sessões',
sideChatSaved: 'Salvo como nova sessão',
sideChatNoTurn: 'O salvamento está disponível após o primeiro turno concluído',
sideChatPendingDrop: 'A última pergunta não respondida não será incluída na sessão salva',
sideChatFirstPlaceholder: 'Faça a primeira pergunta — contexto herdado…',
sideChatComposerPlaceholder: 'Fazer uma pergunta de acompanhamento…',
sideChatThinking: 'Mergulhando fundo…',
sideChatThink: 'Pensamento',
sideChatInjection: 'Contexto injetado',
sideChatSend: 'Enviar',
sideChatCancel: 'Parar',
sideChatCancelTitle: 'Abortar o turno em execução (o trabalho na fila é mantido)',
sideChatClose: 'Fechar tópico',
sideChatCloseTitle: 'Liberar o agente do tópico (o histórico é mantido)',
sideChatError: 'Erro no chat lateral: {message}',
jobs: 'Tarefas em segundo plano',
jobsCount: '{count} tarefas em segundo plano',
jobsCountRunning: '{count} tarefas em segundo plano · {running} executando',
jobStatusRunning: 'Executando',
jobStatusStopping: 'Parando',
jobStatusCompleted: 'Concluída',
jobStatusKilled: 'Encerrada',
jobStatusFailed: 'Falhou',
jobDurationSeconds: '{seconds}s',
jobDurationMinutes: '{minutes}m {seconds}s',
jobDurationHours: '{hours}h {minutes}m',
jobViewOutput: 'Ver saída',
jobHideOutput: 'Ocultar saída',
jobNoOutput: 'Sem saída ainda',
jobNotReadYet: 'Aguardando o modelo ler esta tarefa; a saída aparece aqui quando o modelo executa job_output',
jobOutputTruncated: 'Saída truncada',
jobOutputError: 'Falha ao ler a saída',
jobKill: 'Encerrar',
jobKillConfirm: 'Clique novamente para confirmar o encerramento',
jobKillError: 'Falha ao encerrar',
addPluginsTabCard: 'Adicionar plugins de aba',
addPluginsTabCardDesc: 'Registrar uma nova página da barra lateral',
addPluginsViewerCard: 'Adicionar plugins de pré-visualização',
addPluginsViewerCardDesc: 'Registrar uma pré-visualização de tipo de arquivo',
addPluginsTabDesc: 'As páginas da barra lateral (abas) podem ser estendidas por plugins. Os plugins registram pelo serviço ctx.betterSidebar; clicar em Instalar copia o comando de instalação — cole-o em um terminal onde seu perfil do DSH vive e execute.',
addPluginsViewerDesc: 'Os visualizadores de arquivos podem ser estendidos por plugins. Os plugins registram pelo serviço ctx.betterSidebar; clicar em Instalar copia o comando de instalação — cole-o em um terminal onde seu perfil do DSH vive e execute.',
addPluginsBrowseMore: 'Navegue por mais plugins no GitHub (topic: dsh-better-sidebar)',
addPluginsSearch: 'Pesquisar por nome ou descrição do plugin…',
addPluginsNoMatch: 'Nenhum plugin corresponde',
addPluginsRecommended: 'Plugins recomendados',
addPluginsEmpty: 'Nenhum plugin selecionado ainda — publique o seu sob o topic do GitHub',
openPlugin: 'Abrir',
copyInstall: 'Copiar comando de instalação',
pluginOfficeDesc: 'Pré-visualização do pacote Office (.docx / .xlsx / .pptx) para o editor do better-sidebar, mantendo as bibliotecas pesadas de renderização do Office fora do bundle principal',
pluginFlowglassDesc: 'Fluxograma de sessão ao vivo com três faixas para usuário, assistente e chamadas de ferramenta, além de grupos paralelos, ramos de subagentes, drill-down e status ao vivo; registra uma aba nativa "Fluxograma" quando o better-sidebar está instalado e mantém a gaveta independente como fallback',
pluginGitForgeDesc: 'Aba Git Forge: biblioteca de contas GitHub/Gitea (e outras forges) + concessões por projeto + política rígida de push; os tokens ficam em secrets locais (nunca no contexto do modelo); ferramenta GitForge somente leitura e helper de credenciais HTTPS do agente',
pluginGitRemotesDesc: 'Aba de remotos Git: branch/upstream/ahead-behind, fetch (prune opcional), pull ff-only e push apenas após confirmar na aba. Não substitui a aba interna de stage/commit do Git e não oferece force-push nem push automático pelo modelo',
pluginSentinelDesc: 'Despertar de agentes dirigido por condições: sensores de arquivo/processo/porta/HTTP/comando/webhook acordam sessões adormecidas quando as condições disparam; registra uma aba "Sentinelas" com a tabela de monitoramento global do servidor',
pluginSidebarQaDesc: 'Selecionar e perguntar: selecione o texto da conversa → pergunte no painel à direita → uma sessão de acompanhamento dedicada (❓acompanhamento) no mesmo workspace; um modelo rápido sem pensamento comprime o contexto principal e o injeta com a citação, sem interromper a conversa principal. Acompanhamentos aninham, continuam e arquivam',
pluginSshTunnelDesc: 'Aba de túnel SSH: inventário de múltiplos hosts + concessões por projeto + chaves locais; ferramenta SSHManager (exec/SFTP/estratégias de sessão); terminal interativo central e SFTP de dois painéis',
pluginTurnReviewDesc: 'Um portão humano no diff do turno recém-terminado: Approve / Request changes por caminho com comentário opcional; caminhos agrupados por sessão principal / subagente / não atribuído; diff inline de snapshot-vs-atual antes de decidir. Sem fork, sem /rewind',
pluginVideoPreviewDesc: 'Pré-visualização inline de vídeo (.mp4/.webm/.mov/.mkv/.avi etc.) para o editor do better-sidebar, respaldada por uma rota de host /video dedicada com suporte a HTTP Range (206) — a barra de progresso funciona e os arquivos não são limitados pelo mediaLimit de 20MB',
pluginDocsPanelDesc: 'Documentos globais na barra lateral do DSH: leia suas próprias notas Markdown de qualquer workspace — uma lista de arquivos, um sumário, abrir no Chrome / VS Code e botões de copiar; o diretório de documentos é configurável (padrão ~/.dsh/docs)',
}