* Add `cmux omo` command for OpenCode + oh-my-openagent integration Same pattern as `cmux claude-teams`: creates a tmux shim so oh-my-openagent's TmuxSessionManager spawns agents as native cmux splits instead of tmux panes. Sets TMUX/TMUX_PANE env vars, prepends shim to PATH, and execs into opencode. Closes https://github.com/manaflow-ai/cmux/issues/2085 * Auto-install oh-my-opencode plugin when running cmux omo Before launching opencode, cmux omo now: - Checks if oh-my-opencode is registered in ~/.config/opencode/opencode.json - If not, creates/updates the config with the plugin entry - Checks if the npm package is installed in node_modules - If not, runs bun add (or npm install) to install it - Then proceeds with tmux shim setup and exec * Use shadow config dir to avoid modifying user's opencode setup Instead of writing directly to ~/.config/opencode/opencode.json, cmux omo now creates a shadow config at ~/.cmuxterm/omo-config/ that layers oh-my-opencode on top of the user's existing config. Symlinks node_modules, package.json, bun.lock, and plugin config from the original dir. Sets OPENCODE_CONFIG_DIR to the shadow directory. Running plain `opencode` remains unaffected. * Add Agent Integrations docs section with Claude Code Teams and oh-my-opencode pages Adds sectioned sidebar navigation to the docs site. The new Agent Integrations section contains separate pages for cmux claude-teams and cmux omo, documenting usage, tmux shim mechanics, directory layout, environment variables, and the shadow config approach. Both pages include a nightly-only warning. Full English and Japanese translations, nav item keys added to all 19 locales. * Remove uppercase from sidebar section headers * Add more spacing above and below sidebar section headers * Enable tmux mode in oh-my-opencode config, improve docs - cmux omo now writes tmux.enabled=true to the shadow oh-my-opencode.json config. Without this, oh-my-openagent's TmuxSessionManager won't spawn visual panes even though $TMUX is set (the config defaults to false). - Nightly warnings now link to /nightly instead of generic text. - Added "What you get" section to oh-my-opencode docs explaining the visual pane behavior (auto-layout, idle cleanup, queueing). - Added tmux.enabled step to first-run and how-it-works sections. * Add terminal-notifier shim to route oh-my-openagent notifications to cmux oh-my-openagent sends macOS notifications via terminal-notifier (args: -title <t> -message <m> [-activate <id>]). The shim in ~/.cmuxterm/omo-bin/terminal-notifier intercepts these calls and routes them through cmux notify, so notifications appear in cmux's sidebar panel instead of as raw macOS notifications. * Add pane geometry to tmux-compat for oh-my-openagent grid planning oh-my-openagent's TmuxSessionManager needs pane geometry (columns, rows, position, window dimensions) to decide where to spawn agent panes. Without this data, agents run headlessly. Server side: - pane.list v2 response now includes pixel_frame, cell_size, columns, rows per pane, plus container_frame at the top level - Uses BonsplitController.layoutSnapshot() for pixel geometry and ghostty_surface_size() for terminal grid dimensions CLI side: - tmuxEnrichContextWithGeometry() computes character-cell positions from pixel frames and cell dimensions for tmux format variables (pane_width, pane_height, pane_left, pane_top, pane_active, window_width, window_height) - list-panes now resolves pane targets (%uuid) via tmuxResolvePaneTarget instead of failing with "Workspace not found" - display-message enriched with geometry for format strings like #{pane_width},#{window_width} - tmux -V now returns "tmux 3.4" (needed by oh-my-openagent's tmux-path-resolver verification) * Add socket tests for tmux-compat pane geometry 6 tests verifying the geometry enrichment works end-to-end: - pane.list returns pixel_frame, columns, rows, cell_size, container_frame - tmux -V returns version string - list-panes -F renders geometry format variables as integers - list-panes -t %<uuid> resolves pane targets - display -p renders pane_width and window_width - After split, two panes have different positions and halved widths All 6 pass on macmini (cmux-macmini). * Handle tmux -V in shim script directly (no socket needed) oh-my-openagent's tmux-path-resolver runs tmux -V to verify the binary works. The __tmux-compat handler requires a socket connection, which may not be established at verification time. Handle -V in the bash shim directly to avoid the socket dependency. * Lower default tmux pane min widths for cmux omo oh-my-openagent defaults: main_pane_min_width=120, agent_pane_min_width=40, requiring 161+ columns. Most terminal windows are narrower, causing decideSpawnActions to return canSpawn=false and defer agents forever. cmux omo now sets: main_pane_min_width=60, agent_pane_min_width=30, main_pane_size=50, requiring only 91 columns. Also moved tmux -V handling into the bash shim to avoid needing a socket connection for the version check. * Resolve merge conflicts with main (main-vertical layout, focus param) - Keep upstream main-vertical layout anchoring from #2119 - Keep upstream focus param (v2Bool) instead of no_focus - Combine with our -d flag handling: -d sets focus=false - Include customCommands nav item from main * Implement select-layout equalize and resize-pane absolute width When oh-my-openagent spawns agent panes, it calls select-layout main-vertical after each split to redistribute panes evenly, then resize-pane -x <columns> to set the main pane width. Both were previously no-ops, causing cascading uneven splits. Server side: - Add workspace.equalize_splits v2 API that calls the existing TabManager.equalizeSplits (sets all dividers to 0.5) CLI side: - select-layout now calls workspace.equalize_splits before tracking main-vertical state - resize-pane -x <columns> without directional flags now computes the pixel delta from current to desired width and resizes accordingly * Fix equalize to use proportional divider positions The previous equalize set all dividers to 0.5, which in a right- recursive binary tree (from successive splits) gives 50/25/12.5/6.25% instead of equal sizes. New algorithm counts leaf panes on each side of each split and sets the divider to N_left / (N_left + N_right). For 5 panes in a chain: 1/5, 1/4, 1/3, 1/2, giving each pane exactly 20%. * Fix select-layout main-vertical to only equalize vertical splits The proportional equalize was treating the top-level horizontal split (main vs agent column) the same as vertical splits, setting the main pane to 1/6 of the window with 5 agents. For main-vertical layout, only equalize vertical splits (the agent column), leaving the horizontal main/agent divider untouched. The subsequent resize-pane -x handles the main pane width. workspace.equalize_splits now accepts an optional orientation filter ("vertical" or "horizontal") to scope which splits get equalized. * Re-equalize agent column after kill-pane * Address PR review comments - Fix cmux omo --help: remove omo from the help-bypass guard so --help shows usage text instead of trying to launch opencode - Don't overwrite unreadable opencode.json: fail with an error instead of silently resetting to empty config - Drain installer pipes concurrently before waitUntilExit to prevent deadlock from full pipe buffers during bun/npm install --------- Co-authored-by: Lawrence Chen <lawrencecchen@users.noreply.github.com>
670 lines
47 KiB
JSON
670 lines
47 KiB
JSON
{
|
||
"meta": {
|
||
"title": "cmux — O terminal feito para multitarefa",
|
||
"description": "Terminal nativo macOS baseado no Ghostty. Funciona com Claude Code, Codex, OpenCode, Gemini CLI, Kiro, Aider e qualquer ferramenta CLI. Abas verticais, anéis de notificação, painéis divididos e uma API de socket.",
|
||
"ogDescription": "Terminal nativo macOS para agentes de código IA. Funciona com Claude Code, Codex, OpenCode, Gemini CLI, Kiro, Aider e qualquer ferramenta CLI."
|
||
},
|
||
"common": {
|
||
"downloadForMac": "Baixar para Mac",
|
||
"viewOnGitHub": "Ver no GitHub",
|
||
"closeMenu": "Fechar menu",
|
||
"openMenu": "Abrir menu",
|
||
"toggleTheme": "Alternar tema",
|
||
"backToBlog": "Voltar ao blog",
|
||
"readTheDocs": "Ler a Documentação",
|
||
"viewChangelog": "Ver Changelog"
|
||
},
|
||
"nav": {
|
||
"docs": "Documentação",
|
||
"blog": "Blog",
|
||
"changelog": "Changelog",
|
||
"community": "Comunidade",
|
||
"github": "GitHub"
|
||
},
|
||
"footer": {
|
||
"product": "Produto",
|
||
"resources": "Recursos",
|
||
"legal": "Jurídico",
|
||
"social": "Social",
|
||
"blog": "Blog",
|
||
"community": "Comunidade",
|
||
"docs": "Documentação",
|
||
"changelog": "Changelog",
|
||
"privacy": "Privacidade",
|
||
"terms": "Termos",
|
||
"eula": "EULA",
|
||
"github": "GitHub",
|
||
"twitter": "X / Twitter",
|
||
"discord": "Discord",
|
||
"contact": "Contato",
|
||
"nightly": "Nightly",
|
||
"copyright": "© {year} Manaflow",
|
||
"language": "Idioma"
|
||
},
|
||
"home": {
|
||
"taglinePrefix": "O terminal feito para ",
|
||
"typingCodingAgents": "agentes de código",
|
||
"typingMultitasking": "multitarefa",
|
||
"subtitle": "App nativo para macOS construído sobre o Ghostty. Abas verticais, anéis de notificação quando agentes precisam de atenção, painéis divididos e uma API de socket para automação.",
|
||
"features": "Recursos",
|
||
"faq": "Perguntas Frequentes",
|
||
"communitySection": "Comunidade",
|
||
"feature": {
|
||
"verticalTabs": "Abas verticais",
|
||
"verticalTabsDesc": ": a barra lateral mostra branch git, diretório de trabalho, portas e texto de notificação",
|
||
"notificationRings": "Anéis de notificação",
|
||
"notificationRingsDesc": ": os painéis acendem quando agentes precisam de atenção",
|
||
"inAppBrowser": "Navegador integrado",
|
||
"inAppBrowserDesc": ": divida um navegador ao lado do seu terminal com uma API programável",
|
||
"splitPanes": "Painéis divididos",
|
||
"splitPanesDesc": ": divisões horizontais e verticais dentro de cada aba",
|
||
"scriptable": "Programável",
|
||
"scriptableDesc": ": CLI e API de socket para automação e scripts",
|
||
"gpuAccelerated": "Acelerado por GPU",
|
||
"gpuAcceleratedDesc": ": alimentado pelo libghostty para renderização suave",
|
||
"lightweight": "Leve",
|
||
"lightweightDesc": ": Swift + AppKit nativo, sem Electron",
|
||
"keyboardShortcuts": "Atalhos de teclado",
|
||
"keyboardShortcutsDesc": ": <link>atalhos abrangentes</link> para workspaces, divisões, navegador e mais"
|
||
},
|
||
"faqGhosttyQ": "Qual a relação do cmux com o Ghostty?",
|
||
"faqGhosttyA": "O cmux não é um fork do Ghostty. Ele usa o <link>libghostty</link> como biblioteca para renderização de terminal, da mesma forma que apps usam o WebKit para visualizações web. O Ghostty é um terminal independente; o cmux é um app diferente construído sobre seu motor de renderização.",
|
||
"faqPlatformQ": "Quais plataformas são suportadas?",
|
||
"faqPlatformA": "Apenas macOS, por enquanto. O cmux é um app nativo em Swift + AppKit.",
|
||
"faqAgentsQ": "Com quais agentes de código o cmux funciona?",
|
||
"faqAgentsA": "Todos eles. O cmux é um terminal, então qualquer agente que roda em um terminal funciona diretamente: Claude Code, Codex, OpenCode, Gemini CLI, Kiro, Aider, Goose, Amp, Cline, Cursor Agent e qualquer outro que você possa executar pela linha de comando.",
|
||
"faqNotificationsQ": "Como funcionam as notificações?",
|
||
"faqNotificationsA": "Quando um processo precisa de atenção, o cmux mostra anéis de notificação ao redor dos painéis, badges de não lido na barra lateral, um popover de notificações e uma notificação no desktop do macOS. Elas disparam automaticamente via sequências de terminal padrão (OSC 9/99/777), ou você pode acioná-las com o <cliLink>CLI do cmux</cliLink> e os <hooksLink>hooks do Claude Code</hooksLink>.",
|
||
"faqShortcutsQ": "Posso personalizar os atalhos de teclado?",
|
||
"faqShortcutsA": "Os atalhos do terminal são lidos do seu arquivo de configuração do Ghostty (<configPath>~/.config/ghostty/config</configPath>). Atalhos específicos do cmux (workspaces, divisões, navegador, notificações) podem ser personalizados nas Configurações. Veja os <link>atalhos padrão</link> para a lista completa.",
|
||
"faqTmuxQ": "Como ele se compara ao tmux?",
|
||
"faqTmuxA": "O tmux é um multiplexador de terminal que roda dentro de qualquer terminal. O cmux é um app macOS nativo com interface gráfica: abas verticais, painéis divididos, navegador integrado e uma API de socket são todos embutidos. Sem arquivos de configuração ou teclas de prefixo necessários.",
|
||
"faqFreeQ": "O cmux é gratuito?",
|
||
"faqFreeA": "Sim, o cmux é gratuito. O código-fonte está disponível no <link>GitHub</link>."
|
||
},
|
||
"community": {
|
||
"title": "Comunidade",
|
||
"description": "Conecte-se com outros usuários do cmux e a equipe por trás dele.",
|
||
"discord": "Discord",
|
||
"discordAction": "Entre no nosso Discord",
|
||
"discordDesc": "Converse com a comunidade, obtenha ajuda e compartilhe feedback",
|
||
"githubAction": "Ver no GitHub",
|
||
"githubDesc": "Dê uma estrela no repo, reporte problemas e contribua",
|
||
"twitter": "Twitter",
|
||
"twitterAction": "Siga no X",
|
||
"twitterDesc": "Atualizações, anúncios e dicas",
|
||
"youtube": "YouTube",
|
||
"youtubeAction": "Inscreva-se",
|
||
"youtubeDesc": "Demos, tutoriais e walkthroughs",
|
||
"linkedin": "LinkedIn",
|
||
"linkedinAction": "Siga-nos",
|
||
"linkedinDesc": "Notícias da empresa e atualizações de engenharia",
|
||
"metaTitle": "Comunidade — cmux",
|
||
"metaDescription": "Junte-se à comunidade cmux no Discord, Twitter, GitHub e mais"
|
||
},
|
||
"blog": {
|
||
"title": "Blog",
|
||
"layoutTitle": "cmux blog",
|
||
"metaTitle": "Blog",
|
||
"metaDescription": "Notícias e atualizações da equipe cmux",
|
||
"description": "Novidades e atualizações da equipe do cmux",
|
||
"posts": {
|
||
"cmdShiftU": {
|
||
"title": "Cmd+Shift+U",
|
||
"summary": "Como o Cmd+Shift+U navega entre agentes finalizados nos workspaces do cmux.",
|
||
"date": "4 de março de 2026",
|
||
"p1": "Meu recurso favorito do cmux é o Cmd+Shift+U. Tenho 17 workspaces abertos agora, cada um rodando um agente. Eu costumava clicar entre abas e o painel de notificações para descobrir o que havia terminado. Digitar é mais rápido.",
|
||
"p2": "Cmd+Shift+U pula para a <link>notificação</link> não lida mais recente. Na prática, isso significa o último agente que terminou. Ele muda para o workspace correto, foca no painel exato, pisca para você ver onde olhar e marca como lido. Se a notificação veio de outra janela, essa janela vem para frente."
|
||
},
|
||
"zenOfCmux": {
|
||
"title": "O Zen do cmux",
|
||
"summary": "O cmux é uma primitiva, não uma solução. Ele te dá peças combináveis e seu fluxo de trabalho é por sua conta.",
|
||
"date": "27 de fevereiro de 2026",
|
||
"p1": "O cmux não é prescritivo sobre como desenvolvedores usam suas ferramentas. É um terminal e navegador com uma CLI, e o resto é com você.",
|
||
"p2": "O cmux é uma primitiva, não uma solução. Ele te dá um terminal, um navegador, notificações, workspaces, divisões, abas e uma CLI para controlar tudo isso. O cmux não te força a uma forma opinativa de usar agentes de código. O que você constrói com as primitivas é seu.",
|
||
"p3": "Os melhores desenvolvedores sempre construíram suas próprias ferramentas. Ninguém descobriu a melhor forma de trabalhar com agentes ainda, e as equipes construindo produtos fechados definitivamente também não. Os desenvolvedores mais próximos de seus próprios codebases vão descobrir primeiro.",
|
||
"p4": "Dê a um milhão de desenvolvedores primitivas combináveis e eles coletivamente encontrarão os fluxos de trabalho mais eficientes mais rápido do que qualquer equipe de produto poderia projetar de cima para baixo."
|
||
},
|
||
"showHnLaunch": {
|
||
"title": "Lançando o cmux no Show HN",
|
||
"summary": "O cmux chegou ao #2 no Hacker News, foi compartilhado por Mitchell Hashimoto e viralizou no Japão.",
|
||
"date": "21 de fevereiro de 2026",
|
||
"intro": "Postamos o cmux no <link>Show HN</link> em 19 de fevereiro:",
|
||
"blockquote1": "Eu rodo muitas sessões de Claude Code e Codex em paralelo. Estava usando o Ghostty com vários painéis divididos, e dependendo das notificações nativas do macOS para saber quando um agente precisava de mim. Mas o corpo da notificação do Claude Code é sempre apenas \"Claude is waiting for your input\" sem contexto, e com abas suficientes abertas, eu não conseguia nem ler os títulos.",
|
||
"blockquote2": "Tentei alguns orquestradores de código, mas a maioria era apps Electron/Tauri e a performance me incomodava. Também prefiro o terminal, já que orquestradores com GUI te prendem ao fluxo de trabalho deles. Então construí o cmux como um app macOS nativo em Swift/AppKit. Ele usa o libghostty para renderização de terminal e lê sua configuração existente do Ghostty para temas, fontes, cores e mais.",
|
||
"blockquote3": "As principais adições são a barra lateral e o sistema de notificações. A barra lateral tem abas verticais que mostram branch git, diretório de trabalho, portas em escuta e o texto da última notificação de cada workspace. O sistema de notificações captura sequências de terminal (OSC 9/99/777) e tem uma CLI (cmux notify) que você pode conectar aos hooks de agentes para Claude Code, OpenCode, etc. Quando um agente está esperando, seu painel recebe um anel azul e a aba acende na barra lateral, para eu saber qual precisa de mim entre divisões e abas. Cmd+Shift+U pula para o não lido mais recente.",
|
||
"blockquote4": "O navegador integrado tem uma API programável. Agentes podem capturar a árvore de acessibilidade, obter referências de elementos, clicar, preencher formulários, avaliar JS e ler logs do console. Você pode dividir um painel de navegador ao lado do seu terminal e ter o Claude Code interagindo com seu servidor de desenvolvimento diretamente.",
|
||
"blockquote5": "Tudo é programável através da CLI e API de socket: criar workspaces/abas, dividir painéis, enviar teclas, abrir URLs no navegador.",
|
||
"hitNumber2": "No pico, chegou ao #2 no Hacker News. Mitchell Hashimoto compartilhou:",
|
||
"favoriteComment": "Meu comentário favorito do <link>thread do HN</link>:",
|
||
"viralJapan": "Surpreendentemente, o cmux viralizou no Japão:",
|
||
"translation": "Tradução: \"Isso parece bom. Um app de terminal baseado no Ghostty projetado para você não se perder ao rodar múltiplas CLIs como Claude Code em paralelo. O painel aguardando entrada recebe uma moldura azul e tem seu próprio sistema de notificações.\"",
|
||
"viralChina": "E semi-viral na China:",
|
||
"extensions": "Outra coisa empolgante foi ver pessoas construindo em cima da CLI do cmux. sasha construiu uma extensão pi-cmux que mostra informações do modelo, uso de tokens e estado do agente na barra lateral:",
|
||
"scriptable": "Tudo no cmux é programável através da CLI: criando workspaces, enviando teclas, controlando o navegador, lendo notificações. Parte da filosofia do cmux é ser programável e combinável, para que as pessoas possam personalizar a forma como trabalham com agentes de código. O estado da arte para agentes de código está mudando rápido, e você não quer ficar preso a um orquestrador GUI inflexível que não consegue acompanhar.",
|
||
"cta": "Se você está rodando múltiplos agentes de código, <link>experimente o cmux</link>."
|
||
},
|
||
"introducingCmux": {
|
||
"title": "Apresentando o cmux",
|
||
"summary": "Um terminal macOS nativo construído sobre o Ghostty, projetado para rodar múltiplos agentes de código com IA lado a lado.",
|
||
"date": "12 de fevereiro de 2026",
|
||
"p1": "O cmux é um aplicativo de terminal macOS nativo construído sobre o Ghostty, projetado desde o início para desenvolvedores que rodam múltiplos agentes de código com IA simultaneamente.",
|
||
"whyTitle": "Por que cmux?",
|
||
"whyP": "Fluxos de trabalho modernos de desenvolvimento frequentemente envolvem rodar vários agentes ao mesmo tempo. Claude Code, Codex e outras ferramentas, cada uma em seu próprio terminal. Acompanhar quais precisam de atenção e alternar entre elas rapidamente é o problema que o cmux resolve.",
|
||
"featuresTitle": "Principais recursos",
|
||
"getStartedTitle": "Comece agora",
|
||
"getStartedP": "Instale o cmux via Homebrew ou baixe o DMG do <link>guia de início</link>.",
|
||
"featureVerticalTabsLabel": "Abas verticais",
|
||
"featureVerticalTabsDesc": "veja todos os seus terminais de relance na barra lateral",
|
||
"featureNotificationsLabel": "Anéis de notificação",
|
||
"featureNotificationsDesc": "abas piscam quando um agente precisa da sua atenção",
|
||
"featureSplitPanesLabel": "Painéis divididos",
|
||
"featureSplitPanesDesc": "divisões horizontais e verticais dentro de cada workspace",
|
||
"featureSocketApiLabel": "API de socket",
|
||
"featureSocketApiDesc": "controle programático para criar abas e enviar entrada",
|
||
"featureGpuLabel": "Acelerado por GPU",
|
||
"featureGpuDesc": "alimentado pelo libghostty para renderização suave"
|
||
}
|
||
},
|
||
"zenOfCmux": {
|
||
"metaTitle": "O Zen do cmux",
|
||
"metaDescription": "cmux é uma primitiva, não uma solução. Oferece peças combináveis e seu fluxo de trabalho é por sua conta."
|
||
},
|
||
"cmdShiftU": {
|
||
"metaTitle": "Cmd+Shift+U",
|
||
"metaDescription": "O novo atalho de teclado que muda como você interage com o cmux."
|
||
},
|
||
"showHnLaunch": {
|
||
"metaTitle": "Lançamento do cmux no Show HN",
|
||
"metaDescription": "A história do lançamento do cmux no Hacker News."
|
||
},
|
||
"introducingCmux": {
|
||
"metaTitle": "Apresentando o cmux",
|
||
"metaDescription": "Por que construímos o cmux, um novo terminal para macOS."
|
||
}
|
||
},
|
||
"docs": {
|
||
"layoutTitle": "cmux docs",
|
||
"gettingStarted": {
|
||
"title": "Primeiros Passos",
|
||
"metaDescription": "Instale o cmux, o terminal macOS nativo para agentes de código com IA. Homebrew, download DMG, configuração da CLI e atualizações automáticas via Sparkle.",
|
||
"intro": "O cmux é um terminal macOS nativo e leve, construído sobre o Ghostty para gerenciar múltiplos agentes de código com IA. Ele possui abas verticais, um painel de notificações e uma API de controle baseada em socket.",
|
||
"install": "Instalação",
|
||
"dmgRecommended": "DMG (recomendado)",
|
||
"dmgDesc": "Abra o .dmg e arraste o cmux para a pasta Aplicativos. O cmux se atualiza automaticamente via Sparkle, então você só precisa baixar uma vez.",
|
||
"homebrew": "Homebrew",
|
||
"updateLater": "Para atualizar depois:",
|
||
"firstLaunchCallout": "Na primeira execução, o macOS pode pedir para confirmar a abertura de um app de um desenvolvedor identificado. Clique em <strong>Abrir</strong> para continuar.",
|
||
"verifyTitle": "Verificar instalação",
|
||
"verifyDesc": "Abra o cmux e você deve ver:",
|
||
"verifyItem1": "Uma janela de terminal com uma barra lateral de abas verticais à esquerda",
|
||
"verifyItem2": "Um workspace inicial já aberto",
|
||
"verifyItem3": "O terminal Ghostty pronto para entrada",
|
||
"cliSetup": "Configuração da CLI",
|
||
"cliDesc": "O cmux inclui uma ferramenta de linha de comando para automação. Dentro dos terminais do cmux, funciona automaticamente. Para usar a CLI de fora do cmux, crie um link simbólico:",
|
||
"cliThen": "Depois você pode executar comandos como:",
|
||
"autoUpdates": "Atualizações automáticas",
|
||
"autoUpdatesDesc": "O cmux verifica atualizações automaticamente via Sparkle. Quando uma atualização estiver disponível, você verá um indicador de atualização na barra de título. Você também pode verificar manualmente via cmux > Verificar Atualizações na barra de menus.",
|
||
"sessionRestore": "Restauração de sessão (comportamento atual)",
|
||
"sessionRestoreDesc": "Após reinício, o cmux restaura apenas layout e metadados:",
|
||
"sessionItem1": "Layout de janelas, workspaces e painéis",
|
||
"sessionItem2": "Diretórios de trabalho",
|
||
"sessionItem3": "Histórico de rolagem do terminal (melhor esforço)",
|
||
"sessionItem4": "URL do navegador e histórico de navegação",
|
||
"sessionCallout": "O cmux ainda não restaura o estado de processos em execução. Sessões ativas de aplicativos de terminal como Claude Code, tmux e vim não são retomadas após reinício do app.",
|
||
"requirements": "Requisitos",
|
||
"reqItem1": "macOS 14.0 ou posterior",
|
||
"reqItem2": "Mac com Apple Silicon ou Intel",
|
||
"metaTitle": "Primeiros passos"
|
||
},
|
||
"concepts": {
|
||
"title": "Conceitos",
|
||
"metaDescription": "Como o cmux organiza terminais: janelas, workspaces, painéis e superfícies. A hierarquia por trás da barra lateral, divisões e API de socket.",
|
||
"intro": "O cmux organiza seus terminais em uma hierarquia de quatro níveis. Entender esses níveis ajuda ao usar a API de socket, CLI e atalhos de teclado.",
|
||
"hierarchy": "Hierarquia",
|
||
"windowTitle": "Janela",
|
||
"windowDesc": "Uma janela do macOS. Abra múltiplas janelas com {shortcut}. Cada janela tem sua própria barra lateral com workspaces independentes.",
|
||
"workspaceTitle": "Workspace",
|
||
"workspaceDesc": "Uma entrada na barra lateral. Cada workspace contém um ou mais painéis divididos. Workspaces são o que você vê listado na barra lateral esquerda.",
|
||
"workspaceNote": "Na interface e nos atalhos de teclado, workspaces são frequentemente chamados de \"abas\" já que se comportam como abas na barra lateral. A API de socket e variáveis de ambiente usam o termo \"workspace\".",
|
||
"contextHeader": "Contexto",
|
||
"termUsedHeader": "Termo usado",
|
||
"sidebarUI": "Interface da barra lateral",
|
||
"tab": "Aba",
|
||
"keyboardShortcuts": "Atalhos de teclado",
|
||
"workspaceOrTab": "Workspace ou aba",
|
||
"socketAPI": "API de socket",
|
||
"environmentVariable": "Variável de ambiente",
|
||
"workspaceShortcuts": "Atalhos: {new} (novo), {jump} (pular), {close} (fechar), {prevNext} (anterior/próximo)",
|
||
"paneTitle": "Painel",
|
||
"paneDesc": "Uma região dividida dentro de um workspace. Criado dividindo com {right} (direita) ou {down} (baixo). Navegue entre painéis com {nav} + teclas de seta.",
|
||
"paneNote": "Cada painel pode conter múltiplas superfícies (abas dentro do painel).",
|
||
"surfaceTitle": "Superfície",
|
||
"surfaceDesc": "Uma aba dentro de um painel. Cada painel tem sua própria barra de abas e pode conter múltiplas superfícies. Criada com {new}, navegada com {prev} / {next} ou {jump}.",
|
||
"surfaceNote": "Superfícies são as sessões individuais de terminal ou navegador com as quais você interage. Cada superfície tem sua própria variável de ambiente CMUX_SURFACE_ID.",
|
||
"panelTitle": "Panel",
|
||
"panelDesc": "O conteúdo dentro de uma superfície. Atualmente dois tipos:",
|
||
"panelTerminal": "Terminal: uma sessão de terminal Ghostty",
|
||
"panelBrowser": "Navegador: uma visualização web integrada",
|
||
"panelNote": "Panel é majoritariamente um conceito interno. Na API de socket e CLI, você interage com superfícies em vez de panels diretamente.",
|
||
"visualExample": "Exemplo visual",
|
||
"visualExampleDesc": "Neste exemplo:",
|
||
"visualItem1": "A janela contém uma barra lateral com três workspaces (dev, server, logs)",
|
||
"visualItem2": "O workspace \"dev\" está selecionado, mostrando dois painéis lado a lado",
|
||
"visualItem3": "O Painel 1 tem duas superfícies ([S1] e [S2] na barra de abas), com S1 ativa",
|
||
"visualItem4": "O Painel 2 tem uma superfície",
|
||
"visualItem5": "Cada superfície contém um panel (um terminal neste caso)",
|
||
"summary": "Resumo",
|
||
"levelHeader": "Nível",
|
||
"whatItIsHeader": "O que é",
|
||
"createdByHeader": "Criado por",
|
||
"identifiedByHeader": "Identificado por",
|
||
"macosWindow": "Janela do macOS",
|
||
"sidebarEntry": "Entrada na barra lateral",
|
||
"splitRegion": "Região dividida",
|
||
"tabWithinPane": "Aba dentro do painel",
|
||
"terminalOrBrowser": "Terminal ou navegador",
|
||
"automatic": "Automático",
|
||
"paneIdSocket": "ID do painel (API de socket)",
|
||
"panelIdInternal": "ID do panel (interno)",
|
||
"metaTitle": "Conceitos"
|
||
},
|
||
"configuration": {
|
||
"title": "Configuração",
|
||
"metaDescription": "Configure o cmux via arquivos de configuração do Ghostty. Fonte, tema, cores, estilo de painéis divididos, histórico de rolagem e configurações do app para modo de automação.",
|
||
"intro": "O cmux lê a configuração dos arquivos de configuração do Ghostty, oferecendo opções familiares se você vem do Ghostty.",
|
||
"configLocations": "Locais do arquivo de configuração",
|
||
"configLocationsDesc": "O cmux procura configuração nestes locais (em ordem):",
|
||
"createConfig": "Crie o arquivo de configuração se ele não existir:",
|
||
"appearance": "Aparência",
|
||
"font": "Fonte",
|
||
"colors": "Cores",
|
||
"splitPanes": "Painéis divididos",
|
||
"behavior": "Comportamento",
|
||
"scrollback": "Histórico de rolagem",
|
||
"workingDirectory": "Diretório de trabalho",
|
||
"appSettings": "Configurações do app",
|
||
"appSettingsDesc": "Configurações do app estão disponíveis via cmux > Configurações ({shortcut}):",
|
||
"themeMode": "Modo de tema",
|
||
"themeSystem": "Sistema: seguir aparência do macOS",
|
||
"themeLight": "Claro: sempre modo claro",
|
||
"themeDark": "Escuro: sempre modo escuro",
|
||
"automationMode": "Modo de automação",
|
||
"automationModeDesc": "Nível de acesso ao socket:",
|
||
"automationOff": "Desligado: sem controle por socket (mais seguro)",
|
||
"automationCmux": "Apenas processos cmux: permitir apenas processos iniciados dentro dos terminais do cmux se conectarem",
|
||
"automationAll": "allowAll: permitir qualquer processo local se conectar (CMUX_SOCKET_MODE=allowAll, apenas por variável de ambiente)",
|
||
"automationCallout": "Em máquinas compartilhadas, considere usar o modo \"Desligado\" ou \"Apenas processos cmux\".",
|
||
"browserLinkBehavior": "Comportamento de links do navegador",
|
||
"browserLinkDesc": "Em Configurações > Navegador, o cmux expõe duas listas de hosts com propósitos diferentes:",
|
||
"browserHostsEmbed": "Hosts para abrir no navegador integrado: aplica-se a links clicados na saída do terminal. Hosts nesta lista abrem no cmux; outros hosts abrem no seu navegador padrão. Suporta um host ou wildcard por linha (por exemplo: example.com, *.internal.example).",
|
||
"browserHostsHttp": "Hosts HTTP permitidos no navegador integrado: aplica-se apenas a URLs HTTP (não HTTPS). Hosts nesta lista podem abrir no cmux sem aviso. Os padrões incluem localhost, 127.0.0.1, ::1, 0.0.0.0 e *.localtest.me.",
|
||
"exampleConfig": "Exemplo de configuração",
|
||
"metaTitle": "Configuração"
|
||
},
|
||
"customCommands": {
|
||
"title": "Comandos personalizados",
|
||
"metaTitle": "Comandos personalizados",
|
||
"metaDescription": "Defina comandos personalizados e layouts de workspace em cmux.json. Configuração por projeto e global com monitoramento em tempo real de arquivos.",
|
||
"intro": "Defina comandos personalizados e layouts de workspace adicionando um arquivo cmux.json à raiz do seu projeto ou ~/.config/cmux/. Os comandos aparecem na paleta de comandos.",
|
||
"fileLocations": "Localizações dos arquivos",
|
||
"fileLocationsDesc": "O cmux procura configuração em dois lugares:",
|
||
"localConfig": "Por projeto:",
|
||
"localConfigDesc": "fica no diretório do seu projeto, tem precedência",
|
||
"globalConfig": "Global:",
|
||
"globalConfigDesc": "aplica-se a todos os projetos, preenche comandos não definidos localmente",
|
||
"precedenceNote": "Comandos locais substituem comandos globais com o mesmo nome.",
|
||
"liveReload": "As alterações são capturadas automaticamente — nenhum reinício necessário.",
|
||
"schema": "Esquema",
|
||
"schemaDesc": "Um arquivo cmux.json contém um array commands. Cada comando é um comando shell simples ou uma definição completa de workspace:",
|
||
"simpleCommands": "Comandos simples",
|
||
"simpleCommandsDesc": "Um comando simples executa um comando shell no terminal atualmente focado:",
|
||
"simpleCommandFields": "Campos",
|
||
"fieldName": "Exibido na paleta de comandos (obrigatório)",
|
||
"fieldDescription": "Descrição opcional",
|
||
"fieldKeywords": "Termos de pesquisa extras para a paleta de comandos",
|
||
"fieldCommand": "Comando shell para executar no terminal focado",
|
||
"fieldConfirm": "Mostrar um diálogo de confirmação antes de executar",
|
||
"simpleCommandCwdNote": "Comandos simples são executados no diretório de trabalho atual do terminal focado. Se seu comando depende de caminhos relativos ao projeto, prefixe com",
|
||
"simpleCommandCwdRepoRoot": "para executar a partir da raiz do repositório, ou",
|
||
"simpleCommandCwdCustomPath": "para qualquer diretório específico.",
|
||
"workspaceCommands": "Comandos de workspace",
|
||
"workspaceCommandsDesc": "Um comando de workspace cria um novo workspace com um layout personalizado de divisões, terminais e painéis do navegador:",
|
||
"workspaceFields": "Campos de workspace",
|
||
"wsFieldName": "Nome da aba do workspace (padrão é o nome do comando)",
|
||
"wsFieldCwd": "Diretório de trabalho do workspace",
|
||
"wsFieldColor": "Cor da aba do workspace",
|
||
"wsFieldLayout": "Árvore de layout definindo divisões e painéis",
|
||
"restartBehavior": "Comportamento de reinício",
|
||
"restartBehaviorDesc": "Controla o que acontece quando um workspace com o mesmo nome já existe:",
|
||
"restartIgnore": "Mudar para o workspace existente (padrão)",
|
||
"restartRecreate": "Fechar e recriar sem perguntar",
|
||
"restartConfirm": "Perguntar ao usuário antes de recriar",
|
||
"layoutTree": "Árvore de layout",
|
||
"layoutTreeDesc": "A árvore de layout define como os painéis são organizados usando nós de divisão recursivos:",
|
||
"splitNode": "Nó de divisão",
|
||
"splitNodeDesc": "Divide o espaço em dois filhos:",
|
||
"or": "ou",
|
||
"splitPosition": "Posição do divisor de 0.1 a 0.9 (padrão 0.5)",
|
||
"splitChildren": "Exatamente dois nós filhos (divisão ou painel)",
|
||
"paneNode": "Nó de painel",
|
||
"paneNodeDesc": "Um nó folha contendo uma ou mais superfícies (abas dentro do painel).",
|
||
"surfaceDefinition": "Definição de superfície",
|
||
"surfaceDefinitionDesc": "Cada superfície em um painel pode ser um terminal ou um navegador:",
|
||
"surfaceName": "Título de aba personalizado",
|
||
"surfaceCommand": "Comando shell para executar automaticamente na criação (apenas terminal)",
|
||
"surfaceCwd": "Diretório de trabalho para esta superfície",
|
||
"surfaceEnv": "Variáveis de ambiente como pares chave-valor",
|
||
"surfaceUrl": "URL para abrir (apenas navegador)",
|
||
"surfaceFocus": "Focar nesta superfície após a criação",
|
||
"cwdResolution": "Resolução do diretório de trabalho",
|
||
"omitted": "omitido",
|
||
"cwdRelative": "diretório de trabalho do workspace",
|
||
"cwdSubdir": "relativo ao diretório de trabalho do workspace",
|
||
"cwdHome": "expandido para o diretório home",
|
||
"absolutePath": "Caminho absoluto",
|
||
"cwdAbsolute": "usado como está",
|
||
"fullExample": "Exemplo completo"
|
||
},
|
||
"keyboardShortcuts": {
|
||
"title": "Atalhos de Teclado",
|
||
"description": "Todos os atalhos de teclado disponíveis no cmux, agrupados por categoria.",
|
||
"metaDescription": "Todos os atalhos de teclado do cmux para workspaces, superfícies, painéis divididos, navegador, notificações, busca e gerenciamento de janelas no macOS.",
|
||
"searchPlaceholder": "Buscar atalhos...",
|
||
"searchLabel": "Buscar atalhos de teclado",
|
||
"noResults": "Nenhum atalho encontrado",
|
||
"noResultsHint": "Tente um termo de busca diferente",
|
||
"cat": {
|
||
"workspaces": "Workspaces",
|
||
"workspacesBlurb": "Workspaces ficam na barra lateral. Cada workspace tem seu próprio conjunto de painéis e superfícies.",
|
||
"surfaces": "Superfícies",
|
||
"surfacesBlurb": "Superfícies são abas dentro de um painel.",
|
||
"splitPanes": "Painéis Divididos",
|
||
"browser": "Navegador",
|
||
"notifications": "Notificações",
|
||
"find": "Buscar",
|
||
"terminal": "Terminal",
|
||
"window": "Janela"
|
||
},
|
||
"sc": {
|
||
"ws-new": "Novo workspace",
|
||
"ws-prev": "Workspace anterior",
|
||
"ws-next": "Workspace seguinte",
|
||
"ws-jump-1-8": "Ir para workspace 1–8",
|
||
"ws-jump-last": "Ir para último workspace",
|
||
"ws-close": "Fechar workspace",
|
||
"ws-rename": "Renomear workspace",
|
||
"sf-new": "Nova superfície",
|
||
"sf-prev-1": "Superfície anterior",
|
||
"sf-prev-2": "Superfície anterior",
|
||
"sf-jump-1-8": "Ir para superfície 1–8",
|
||
"sf-jump-last": "Ir para última superfície",
|
||
"sf-close": "Fechar superfície",
|
||
"sp-right": "Dividir à direita",
|
||
"sp-down": "Dividir abaixo",
|
||
"sp-focus": "Focar painel direcionalmente",
|
||
"sp-browser-right": "Dividir navegador à direita",
|
||
"sp-browser-down": "Dividir navegador abaixo",
|
||
"br-open": "Abrir superfície do navegador",
|
||
"br-addr": "Focar barra de endereço",
|
||
"br-forward": "Avançar",
|
||
"br-reload": "Recarregar página",
|
||
"br-devtools": "Abrir Ferramentas de Desenvolvedor",
|
||
"nt-panel": "Mostrar painel de notificações",
|
||
"nt-latest": "Ir para última não lida",
|
||
"nt-flash": "Disparar flash",
|
||
"fd-find": "Buscar",
|
||
"fd-next-prev": "Buscar próximo / anterior",
|
||
"fd-hide": "Ocultar barra de busca",
|
||
"fd-selection": "Usar seleção para busca",
|
||
"tm-clear": "Limpar histórico de rolagem",
|
||
"tm-copy": "Copiar (com seleção)",
|
||
"tm-paste": "Colar",
|
||
"tm-font": "Aumentar / diminuir tamanho da fonte",
|
||
"tm-reset": "Resetar tamanho da fonte",
|
||
"wn-new": "Nova janela",
|
||
"wn-settings": "Configurações",
|
||
"wn-reload": "Recarregar configuração",
|
||
"wn-quit": "Sair"
|
||
},
|
||
"metaTitle": "Atalhos de teclado"
|
||
},
|
||
"api": {
|
||
"title": "Referência da API",
|
||
"metaDescription": "Referência da CLI e API de socket Unix do cmux. Gerenciamento de workspaces, painéis divididos, controle de entrada, notificações, metadados da barra lateral, variáveis de ambiente e métodos de detecção.",
|
||
"intro": "O cmux oferece uma ferramenta CLI e um socket Unix para controle programático. Cada comando está disponível através de ambas as interfaces.",
|
||
"socket": "Socket",
|
||
"buildHeader": "Build",
|
||
"pathHeader": "Caminho",
|
||
"release": "Release",
|
||
"debug": "Debug",
|
||
"taggedDebug": "Build de debug com tag",
|
||
"socketOverride": "Substitua com a variável de ambiente CMUX_SOCKET_PATH. Envie uma requisição JSON terminada em nova linha por chamada:",
|
||
"socketCallout": "Requisições JSON via socket devem usar method e params. Payloads JSON legados v1 como <legacy>'{'\"command\":\"...\"'}'</legacy> não são suportados.",
|
||
"accessModes": "Modos de acesso",
|
||
"modeHeader": "Modo",
|
||
"descriptionHeader": "Descrição",
|
||
"howToEnableHeader": "Como ativar",
|
||
"offMode": "Socket desativado",
|
||
"offEnable": "Interface de Configurações ou CMUX_SOCKET_MODE=off",
|
||
"cmuxOnlyMode": "Apenas processos iniciados dentro dos terminais do cmux podem se conectar.",
|
||
"cmuxOnlyEnable": "Modo padrão na interface de Configurações",
|
||
"allowAllMode": "Permitir qualquer processo local se conectar (sem verificação de ancestralidade).",
|
||
"allowAllEnable": "Apenas por variável de ambiente: CMUX_SOCKET_MODE=allowAll",
|
||
"accessCallout": "Em máquinas compartilhadas, use Desligado ou apenas processos cmux.",
|
||
"cliOptions": "Opções da CLI",
|
||
"flagHeader": "Flag",
|
||
"customSocketPath": "Caminho de socket personalizado",
|
||
"outputJson": "Saída em formato JSON",
|
||
"targetWindow": "Direcionar uma janela específica",
|
||
"targetWorkspace": "Direcionar um workspace específico",
|
||
"targetSurface": "Direcionar uma superfície específica",
|
||
"idFormat": "Controlar formato de identificador na saída JSON",
|
||
"workspaceCommands": "Comandos de workspace",
|
||
"listWorkspacesDesc": "Listar todos os workspaces abertos.",
|
||
"newWorkspaceDesc": "Criar um novo workspace.",
|
||
"selectWorkspaceDesc": "Alternar para um workspace específico.",
|
||
"currentWorkspaceDesc": "Obter o workspace atualmente ativo.",
|
||
"closeWorkspaceDesc": "Fechar um workspace.",
|
||
"splitCommands": "Comandos de divisão",
|
||
"newSplitDesc": "Criar um novo painel dividido. Direções: left, right, up, down.",
|
||
"listSurfacesDesc": "Listar todas as superfícies no workspace atual.",
|
||
"focusSurfaceDesc": "Focar uma superfície específica.",
|
||
"inputCommands": "Comandos de entrada",
|
||
"sendDesc": "Enviar texto para o terminal focado.",
|
||
"sendKeyDesc": "Enviar uma tecla. Teclas: enter, tab, escape, backspace, delete, up, down, left, right.",
|
||
"sendSurfaceDesc": "Enviar texto para uma superfície específica.",
|
||
"sendKeySurfaceDesc": "Enviar uma tecla para uma superfície específica.",
|
||
"notificationCommands": "Comandos de notificação",
|
||
"notifyDesc": "Enviar uma notificação.",
|
||
"listNotificationsDesc": "Listar todas as notificações.",
|
||
"clearNotificationsDesc": "Limpar todas as notificações.",
|
||
"sidebarMetadata": "Comandos de metadados da barra lateral",
|
||
"sidebarMetadataDesc": "Definir indicadores de status, barras de progresso e entradas de log na barra lateral para qualquer workspace. Útil para scripts de build, integrações de CI e agentes de código com IA que querem exibir estado rapidamente.",
|
||
"setStatusDesc": "Definir um indicador de status na barra lateral. Use uma chave única para que diferentes ferramentas possam gerenciar suas próprias entradas.",
|
||
"clearStatusDesc": "Remover uma entrada de status da barra lateral por chave.",
|
||
"listStatusDesc": "Listar todas as entradas de status da barra lateral para um workspace.",
|
||
"setProgressDesc": "Definir uma barra de progresso na barra lateral (0.0 a 1.0).",
|
||
"clearProgressDesc": "Limpar a barra de progresso da barra lateral.",
|
||
"logDesc": "Adicionar uma entrada de log à barra lateral. Níveis: info, progress, success, warning, error.",
|
||
"clearLogDesc": "Limpar todas as entradas de log da barra lateral.",
|
||
"listLogDesc": "Listar entradas de log da barra lateral.",
|
||
"sidebarStateDesc": "Exportar todos os metadados da barra lateral (cwd, branch git, portas, status, progresso, logs).",
|
||
"utilityCommands": "Comandos utilitários",
|
||
"pingDesc": "Verificar se o cmux está rodando e respondendo.",
|
||
"capabilitiesDesc": "Listar métodos de socket disponíveis e modo de acesso atual.",
|
||
"identifyDesc": "Mostrar contexto da janela/workspace/painel/superfície focados.",
|
||
"envVariables": "Variáveis de ambiente",
|
||
"variableHeader": "Variável",
|
||
"socketPathDesc": "Substituir o caminho do socket usado pela CLI e integrações",
|
||
"socketEnableDesc": "Forçar ativação/desativação do socket (1/0, true/false, on/off)",
|
||
"socketModeDesc": "Substituir modo de acesso (cmuxOnly, allowAll, off). Também aceita cmux-only/cmux_only e allow-all/allow_all",
|
||
"workspaceIdDesc": "Definido automaticamente: ID do workspace atual",
|
||
"surfaceIdDesc": "Definido automaticamente: ID da superfície atual",
|
||
"termProgramDesc": "Definido como ghostty",
|
||
"termDesc": "Definido como xterm-ghostty",
|
||
"envCallout": "Valores legados de CMUX_SOCKET_MODE full e notifications ainda são aceitos para compatibilidade.",
|
||
"detectingCmux": "Detectando o cmux",
|
||
"examples": "Exemplos",
|
||
"pythonClient": "Cliente Python",
|
||
"shellScript": "Script shell",
|
||
"buildScriptNotification": "Script de build com notificação",
|
||
"metaTitle": "Referência da API"
|
||
},
|
||
"notifications": {
|
||
"title": "Notificações",
|
||
"metaDescription": "Envie notificações de desktop de agentes de IA e scripts no cmux. CLI, sequências de escape OSC 99/777 e integração com hooks do Claude Code.",
|
||
"intro": "O cmux suporta notificações de desktop, permitindo que agentes de IA e scripts alertem você quando precisam de atenção.",
|
||
"lifecycle": "Ciclo de vida",
|
||
"received": "Recebida: notificação aparece no painel, alerta de desktop é disparado (se não suprimido)",
|
||
"unread": "Não lida: badge exibido na aba do workspace",
|
||
"read": "Lida: limpa quando você visualiza aquele workspace",
|
||
"cleared": "Limpa: removida do painel",
|
||
"suppression": "Supressão",
|
||
"suppressionDesc": "Alertas de desktop são suprimidos quando:",
|
||
"suppressItem1": "A janela do cmux está focada",
|
||
"suppressItem2": "O workspace específico enviando a notificação está ativo",
|
||
"suppressItem3": "O painel de notificações está aberto",
|
||
"notificationPanel": "Painel de notificações",
|
||
"notificationPanelDesc": "Pressione <openShortcut>⌘⇧I</openShortcut> para abrir o painel de notificações. Clique em uma notificação para ir ao workspace. Pressione <jumpShortcut>⌘⇧U</jumpShortcut> para ir diretamente ao workspace com a notificação não lida mais recente.",
|
||
"customCommand": "Comando personalizado",
|
||
"customCommandDesc": "Execute um comando shell toda vez que uma notificação for agendada. Defina em Configurações > App > Comando de Notificação. O comando é executado via /bin/sh -c com estas variáveis de ambiente:",
|
||
"customCommandNote": "O comando é executado independentemente do seletor de som do sistema. Defina o seletor como \"Nenhum\" para usar apenas o comando personalizado, ou mantenha ambos para um som do sistema mais uma ação personalizada.",
|
||
"sending": "Enviando notificações",
|
||
"cli": "CLI",
|
||
"osc777Title": "OSC 777 (simples)",
|
||
"osc777Desc": "O protocolo RXVT usa um formato fixo com título e corpo:",
|
||
"osc99Title": "OSC 99 (rico)",
|
||
"osc99Desc": "O protocolo Kitty suporta subtítulos e IDs de notificação:",
|
||
"variableHeader": "Variável",
|
||
"descriptionHeader": "Descrição",
|
||
"envTitle": "Título da notificação (nome do workspace ou do app)",
|
||
"envSubtitle": "Subtítulo da notificação",
|
||
"envBody": "Corpo da notificação",
|
||
"cmpTitleBody": "Título + corpo",
|
||
"cmpSubtitle": "Subtítulo",
|
||
"cmpNotificationId": "ID da notificação",
|
||
"cmpComplexity": "Complexidade",
|
||
"cmpYes": "Sim",
|
||
"cmpNo": "Não",
|
||
"cmpHigher": "Maior",
|
||
"cmpLower": "Menor",
|
||
"featureHeader": "Recurso",
|
||
"comparisonCallout": "Use OSC 777 para notificações simples. Use OSC 99 quando precisar de subtítulos ou IDs de notificação. Use a CLI (cmux notify) para a integração mais fácil.",
|
||
"claudeCodeHooks": "Hooks do Claude Code",
|
||
"claudeCodeHooksDesc": "O cmux se integra com o <link>Claude Code</link> via hooks para notificá-lo quando tarefas são concluídas.",
|
||
"createHookScript": "1. Crie o script de hook",
|
||
"configureClaude": "2. Configure o Claude Code",
|
||
"restartNote": "Reinicie o Claude Code para aplicar os hooks.",
|
||
"copilotCliHooks": "GitHub Copilot CLI",
|
||
"copilotCliHooksDesc": "O Copilot CLI suporta <link>hooks</link> que executam comandos shell em eventos do ciclo de vida como envio de prompts, parada do agente e erros.",
|
||
"copilotCliRepoHooks": "Para hooks no nível do repositório, crie um arquivo .github/hooks/notify.json com a mesma estrutura:",
|
||
"integrationExamples": "Exemplos de integração",
|
||
"notifyAfterLong": "Notificar após comando longo",
|
||
"python": "Python",
|
||
"nodejs": "Node.js",
|
||
"tmuxPassthrough": "Passthrough do tmux",
|
||
"tmuxDesc": "Se estiver usando tmux dentro do cmux, ative o passthrough:",
|
||
"metaTitle": "Notificações"
|
||
},
|
||
"browserAutomation": {
|
||
"title": "Automação do Navegador",
|
||
"metaDescription": "Referência de comandos do navegador cmux para navegação, interação com DOM, espera, inspeção, avaliação de JavaScript, abas, diálogos, frames, downloads e estado do navegador.",
|
||
"intro": "O grupo de comandos de navegador do cmux oferece automação de navegador contra superfícies de navegador do cmux. Use para navegar, interagir com elementos DOM, inspecionar estado da página, avaliar JavaScript e gerenciar dados de sessão do navegador.",
|
||
"commandIndex": "Índice de Comandos",
|
||
"categoryHeader": "Categoria",
|
||
"subcommandsHeader": "Subcomandos",
|
||
"navAndTargeting": "Navegação e direcionamento",
|
||
"waiting": "Espera",
|
||
"domInteraction": "Interação com DOM",
|
||
"inspection": "Inspeção",
|
||
"jsAndInjection": "JavaScript e injeção",
|
||
"framesDialogsDownloads": "Frames, diálogos, downloads",
|
||
"stateAndSession": "Estado e dados de sessão",
|
||
"tabsAndLogs": "Abas e logs",
|
||
"targetingSurface": "Direcionando uma superfície de navegador",
|
||
"targetingDesc": "A maioria dos subcomandos requer uma superfície alvo. Você pode passá-la posicionalmente ou com --surface.",
|
||
"navigation": "Navegação",
|
||
"waitingSection": "Espera",
|
||
"waitingDesc": "Use wait para bloquear até que seletores, texto, fragmentos de URL, estado de carregamento ou uma condição JavaScript seja satisfeita.",
|
||
"domSection": "Interação com DOM",
|
||
"domDesc": "Ações mutáveis suportam --snapshot-after para verificação rápida em scripts.",
|
||
"inspectionSection": "Inspeção",
|
||
"inspectionDesc": "Use getters estruturados para scripts e snapshots/screenshots para revisão humana.",
|
||
"jsSection": "Avaliação e Injeção de JavaScript",
|
||
"stateSection": "Estado",
|
||
"stateDesc": "Comandos de dados de sessão cobrem cookies, armazenamento local/de sessão e snapshots completos do estado do navegador.",
|
||
"tabsSection": "Abas",
|
||
"tabsDesc": "Operações de abas do navegador mapeiam para superfícies de navegador no grupo de abas ativo.",
|
||
"consoleSection": "Console e Erros",
|
||
"dialogsSection": "Diálogos",
|
||
"framesSection": "Frames",
|
||
"downloadsSection": "Downloads",
|
||
"commonPatterns": "Padrões Comuns",
|
||
"patternNavigate": "Navegar, esperar, inspecionar",
|
||
"patternForm": "Preencher um formulário e verificar texto de sucesso",
|
||
"patternDebug": "Capturar artefatos de debug em falha",
|
||
"patternSession": "Persistir e restaurar sessão do navegador",
|
||
"metaTitle": "Automação do navegador"
|
||
},
|
||
"changelog": {
|
||
"title": "Changelog",
|
||
"metaDescription": "Notas de lançamento e histórico de versões do cmux. Novos recursos, correções de bugs e mudanças para o terminal macOS nativo.",
|
||
"metaTitle": "Registro de alterações"
|
||
},
|
||
"navItems": {
|
||
"gettingStarted": "Primeiros Passos",
|
||
"concepts": "Conceitos",
|
||
"configuration": "Configuração",
|
||
"customCommands": "Comandos personalizados",
|
||
"keyboardShortcuts": "Atalhos de Teclado",
|
||
"apiReference": "Referência da API",
|
||
"browserAutomation": "Automação do Navegador",
|
||
"notifications": "Notificações",
|
||
"agentIntegrations": "Agent Integrations",
|
||
"claudeCodeTeams": "Claude Code Teams",
|
||
"ohMyOpenCode": "oh-my-opencode",
|
||
"changelog": "Changelog"
|
||
}
|
||
},
|
||
"legal": {
|
||
"privacyPolicy": "Política de Privacidade",
|
||
"termsOfService": "Termos de Serviço",
|
||
"eula": "EULA"
|
||
},
|
||
"wallOfLove": {
|
||
"title": "Mural de Amor",
|
||
"description": "O que as pessoas estão dizendo sobre o cmux."
|
||
},
|
||
"testimonials": {
|
||
"mitchellh": "Mais um dia, mais um projeto baseado em libghostty, desta vez um terminal macOS com abas verticais, melhor organização/notificações, navegador integrado/programável voltado especificamente para quem usa muitos workflows de agentes baseados em terminal.",
|
||
"schrockn": "Isso é exatamente o produto que eu estava procurando. Depois de duas horas esta manhã, estou apaixonado.",
|
||
"egrefen": "Estou usando isso o fim de semana inteiro e é incrível.",
|
||
"max4c": "essa tem sido minha ferramenta favorita nas últimas duas semanas",
|
||
"asaza": "cmux parece tão bom que talvez finalmente seja hora de dizer adeus ao VSCode",
|
||
"johnthedebs": "Ei, isso parece seriamente incrível. Amei as ideias aqui, especificamente: a programabilidade, UI em camadas, navegador com API. Ansioso para testar. Também quero dizer que aprecio muito o Mitchell Hashimoto ter criado o libghostty; parece um momento empolgante para ser usuário de terminal.",
|
||
"joeriddles": "Abas verticais no meu terminal! Nunca tinha pensado nisso antes. Eu uso e amo abas verticais no Firefox.",
|
||
"dchu17": "Testei e foi bem intuitivo. Bom trabalho!",
|
||
"afruth": "Gostei, usei no último dia em três projetos paralelos, cada um com vários worktrees. Ter isso junto com lazygit e yazi / nvim me deixou um pouco mais produtivo que o normal sem precisar ficar correndo atrás de várias instâncias de ghostty / iTerm. Também parece mais natural que tmux.",
|
||
"northprint": "Experimentei o cmux porque parecia bom — é bom",
|
||
"indykish": "cmux é bem bom.",
|
||
"kataring": "Migrei para o cmux.dev",
|
||
"scottw": "Essa foi uma descoberta muito útil. Recomendo demais.",
|
||
"johnblythe": "baixei no fim de semana e adorei. estava esperando algo assim.",
|
||
"bchris91": "Isso é exatamente o que eu queria. Trabalho incrível, obrigado!",
|
||
"connorelsea": "Usando há uma semana e é fantástico. Aba vertical para cada tarefa em andamento. Dentro, claudes de um lado e navegador com PR e recursos do outro, alterno entre tarefas e mantenho tudo organizado. Misture com skills para o Claude monitorar CI recursivamente, etc. me sinto iluminado pra ser honesto",
|
||
"tonkotsuboy": "Mudei do Warp para o Ghostty no início do ano, mas agora migrei para o cmux. As abas verticais são práticas e gosto de ser notificado quando tarefas do Claude Code terminam. É baseado no Ghostty, então a performance ultrarrápida se mantém. A exibição de branches e completions que configurei no Ghostty continuam funcionando também."
|
||
},
|
||
"nightly": {
|
||
"title": "cmux NIGHTLY",
|
||
"subtitle": "Builds de ponta do branch main",
|
||
"metaTitle": "cmux NIGHTLY — Builds Nightly",
|
||
"metaDescription": "Baixe o cmux NIGHTLY, um app separado compilado automaticamente do commit mais recente no main. Funciona ao lado da versão estável com suas próprias atualizações automáticas.",
|
||
"description": "O cmux NIGHTLY é compilado automaticamente do commit mais recente no main. Ele tem seu próprio bundle ID, então funciona ao lado da versão estável sem conflitos. Use-o para testar novos recursos antes do lançamento.",
|
||
"download": "Baixar NIGHTLY para Mac",
|
||
"warning": "Builds nightly podem conter bugs ou recursos incompletos. Se algo quebrar, reporte no <githubLink>GitHub</githubLink> ou em <discordLink>#nightly-bugs no Discord</discordLink> e volte para a versão estável."
|
||
},
|
||
"languageSwitcher": {
|
||
"label": "Idioma"
|
||
}
|
||
}
|