agentvibes 5.6.0 → 5.6.1

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.
Files changed (101) hide show
  1. package/.agentvibes/config.json +3 -38
  2. package/.claude/config/audio-effects.cfg +1 -1
  3. package/.claude/config/background-music-enabled.txt +1 -1
  4. package/.claude/config/background-music-position.txt +6 -6
  5. package/.claude/github-star-reminder.txt +1 -1
  6. package/.claude/hooks/play-tts-ssh-remote.sh +119 -42
  7. package/.claude/hooks/play-tts-windows-receiver.sh +31 -0
  8. package/.claude/hooks/stop.sh +2 -27
  9. package/.claude/hooks-windows/play-tts-windows-sapi.ps1 +108 -108
  10. package/.claude/hooks-windows/play-tts.ps1 +23 -7
  11. package/.claude/piper-voices-dir.txt +1 -1
  12. package/.clawdbot/skill/README.md +326 -0
  13. package/.mcp.json +17 -27
  14. package/README.md +11 -2
  15. package/RELEASE_NOTES.md +38 -0
  16. package/bin/agent-vibes +39 -39
  17. package/package.json +1 -1
  18. package/src/bmad-detector.js +71 -71
  19. package/src/cli/list-personalities.js +110 -110
  20. package/src/cli/list-voices.js +114 -114
  21. package/src/commands/bmad-voices.js +394 -394
  22. package/src/commands/install-mcp.js +476 -476
  23. package/src/console/brand-colors.js +13 -13
  24. package/src/console/constants/personalities.js +44 -44
  25. package/src/console/modals/modal-overlay.js +247 -247
  26. package/src/console/navigation.js +5 -1
  27. package/src/console/tabs/agents-tab.js +5 -5
  28. package/src/console/tabs/help-tab.js +314 -314
  29. package/src/console/tabs/readme-tab.js +272 -272
  30. package/src/console/tabs/setup-tab.js +32 -17
  31. package/src/console/tabs/voices-tab.js +2 -2
  32. package/src/console/widgets/destroy-list.js +25 -25
  33. package/src/console/widgets/notice.js +55 -55
  34. package/src/console/widgets/personality-picker.js +213 -213
  35. package/src/console/widgets/reverb-picker.js +97 -97
  36. package/src/console/widgets/track-picker.js +1 -1
  37. package/src/i18n/de.js +202 -202
  38. package/src/i18n/es.js +202 -202
  39. package/src/i18n/fr.js +202 -202
  40. package/src/i18n/hi.js +202 -202
  41. package/src/i18n/ja.js +202 -202
  42. package/src/i18n/ko.js +202 -202
  43. package/src/i18n/pt.js +202 -202
  44. package/src/i18n/strings.js +54 -54
  45. package/src/i18n/zh-CN.js +202 -202
  46. package/src/installer/language-screen.js +31 -31
  47. package/src/installer/music-file-input.js +304 -304
  48. package/src/services/agent-voice-store.js +420 -423
  49. package/src/services/config-service.js +264 -264
  50. package/src/services/language-service.js +47 -47
  51. package/src/services/llm-provider-service.js +11 -4
  52. package/src/services/navigation-service.js +34 -10
  53. package/src/services/provider-service.js +143 -143
  54. package/src/utils/audio-duration-validator.js +298 -298
  55. package/src/utils/audio-format-validator.js +277 -277
  56. package/src/utils/dependency-checker.js +469 -469
  57. package/src/utils/file-ownership-verifier.js +358 -358
  58. package/src/utils/list-formatter.js +194 -194
  59. package/src/utils/music-file-validator.js +285 -285
  60. package/src/utils/preview-list-prompt.js +136 -136
  61. package/src/utils/secure-music-storage.js +412 -412
  62. package/.agentvibes/LITE-MODE.md +0 -236
  63. package/.agentvibes/README.md +0 -136
  64. package/.agentvibes/backup/session-start-tts.sh.20251210_212814 +0 -141
  65. package/.agentvibes/backups/agents/analyst_20260204_144958.md +0 -78
  66. package/.agentvibes/backups/agents/architect_20260204_144958.md +0 -72
  67. package/.agentvibes/backups/agents/dev_20260204_144958.md +0 -74
  68. package/.agentvibes/backups/agents/pm_20260204_144958.md +0 -72
  69. package/.agentvibes/backups/agents/quick-flow-solo-dev_20260204_144958.md +0 -64
  70. package/.agentvibes/backups/agents/sm_20260204_144958.md +0 -87
  71. package/.agentvibes/backups/agents/tea_20260204_144958.md +0 -79
  72. package/.agentvibes/backups/agents/tech-writer_20260204_144958.md +0 -82
  73. package/.agentvibes/backups/agents/ux-designer_20260204_144958.md +0 -80
  74. package/.agentvibes/config/README-personality-defaults.md +0 -162
  75. package/.agentvibes/config/agentvibes.json +0 -1
  76. package/.agentvibes/config/mode.txt +0 -1
  77. package/.agentvibes/config/personality-voice-defaults.default.json +0 -21
  78. package/.agentvibes/config/save-audio.txt +0 -1
  79. package/.agentvibes/config/voice-metadata.json +0 -160
  80. package/.agentvibes/hooks/help.sh +0 -191
  81. package/.agentvibes/hooks/post-tool-use-lite.sh +0 -111
  82. package/.agentvibes/hooks/save-audio-manager.sh +0 -162
  83. package/.agentvibes/hooks/session-start-full-optimized.sh +0 -102
  84. package/.agentvibes/hooks/session-start-full.sh +0 -142
  85. package/.agentvibes/hooks/session-start-lite-v2.sh +0 -34
  86. package/.agentvibes/hooks/session-start-lite.sh +0 -29
  87. package/.agentvibes/hooks/stop-lite.sh +0 -115
  88. package/.agentvibes/hooks/switch-mode.sh +0 -215
  89. package/.agentvibes/output-styles/audio-summary.md +0 -30
  90. package/.claude/audio/voice-samples/piper/alan.wav +0 -0
  91. package/.claude/audio/voice-samples/piper/amy.wav +0 -0
  92. package/.claude/audio/voice-samples/piper/charlotte.wav +0 -0
  93. package/.claude/audio/voice-samples/piper/joe.wav +0 -0
  94. package/.claude/audio/voice-samples/piper/john.wav +0 -0
  95. package/.claude/audio/voice-samples/piper/katherine.wav +0 -0
  96. package/.claude/audio/voice-samples/piper/kristin.wav +0 -0
  97. package/.claude/audio/voice-samples/piper/linda.wav +0 -0
  98. package/.claude/audio/voice-samples/piper/marcus.wav +0 -0
  99. package/.claude/audio/voice-samples/piper/ryan.wav +0 -0
  100. package/.claude/hooks/post-response.sh +0 -41
  101. package/bin/ensure-soprano-running.sh +0 -43
package/src/i18n/pt.js CHANGED
@@ -1,203 +1,203 @@
1
- export default {
2
- languageSelectTitle: "🌐 Select Language / Seleccionar Idioma / Choisir la langue / Sprache wählen / Selecionar Idioma / 言語を選択 / भाषा चुनें / 选择语言 / 언어 선택",
3
- languageApplied: "Idioma aplicado",
4
- welcomeTitle: "Bem-vindo ao AgentVibes!",
5
- installDetails: "Detalhes da instalação",
6
- installLocation: "Local de instalação",
7
- packageVersion: "Versão do pacote",
8
- readyToConfigure: "Pronto para configurar o AgentVibes?",
9
- installationCancelled: "Instalação cancelada.",
10
- startInstall: "Iniciar instalação",
11
- installationCancelledMsg: "A instalação foi cancelada pelo usuário.",
12
- installedSuccess: "AgentVibes instalado com sucesso!",
13
- installComplete: "Instalação concluída",
14
- installationFailed: "Falha na instalação",
15
- installing: "Instalando AgentVibes...",
16
- providerLabel: "Provedor",
17
- voiceLabel: "Voz",
18
- locationLabel: "Local",
19
- versionLabel: "Versão",
20
- configurationSetup: "Configuração",
21
- configurationIntro: "Por favor, configure sua instalação do AgentVibes.",
22
- navigationHint: "Use as teclas de seta para navegar entre as páginas.",
23
- nonInteractiveDetected: "Modo não interativo detectado",
24
- installError: "Falha na instalação",
25
- continuePrompt: "Continuar",
26
- cancelPrompt: "Cancelar",
27
- setupWizard: "Assistente de Configuração",
28
- setupWizardSubtitle: "TTS para assistentes de IA com personalidade.",
29
- dependencyCheck: "Verificação de Dependências",
30
- checkingDependencies: "Verificando dependências...",
31
- depColumn: "Dependência",
32
- statusColumn: "Status",
33
- installed: "Instalado",
34
- notFound: "Não encontrado",
35
- ffmpegMissing: "Não encontrado (necessário para música de fundo)",
36
- ttsDetected: "Provedores TTS Detectados",
37
- noTtsFound: "Nenhum provedor TTS encontrado. Instale o Piper ou Soprano primeiro.",
38
- providerSelection: "Seleção de Provedor",
39
- availableProviders: "Provedores TTS disponíveis:",
40
- providerAndVoice: "Provedor e Voz",
41
- voiceChangeHint: "(após instalação, pode alterar em Configurações)",
42
- introText: "Texto de Introdução",
43
- introTextLabel: "Texto intro",
44
- none: "nenhum",
45
- example: "Exemplo",
46
- screen1Hint: "Tela 1/5: Boas-vindas | [←/→] Navegar | [Enter] Começar | [Esc] Sair",
47
- screen2Hint: "Tela 2/5: Dependências | [←] Voltar | [Enter] Próximo",
48
- screen3Hint: "Tela 3/5: Provedor | [←] Voltar | [↑↓] Escolher | [Enter/→] Confirmar",
49
- screen4Hint: "Tela 4/5: Configurar | [Esc] Voltar | [E] Editar | [↓] Aceitar e Instalar",
50
- screen5HintDone: "Tela 5/5: Completo | [Enter] OK — Concluído",
51
- screen5HintWait: "Tela 5/5: Instalando... | Aguarde",
52
- languageSettings: "Idioma",
53
- languageSettingsSubtitle: "Selecionar idioma da interface",
54
- currentLanguage: "Idioma atual",
55
- changeLanguage: "Alterar idioma",
56
- beginBtn: "▶ Começar",
57
- exitBtn: "✗ Sair",
58
- footerText: "[Enter] Continuar/Concluir [Esc] Voltar/Sair [C] Console [S/V/M/A/R] Tab [Q] Sair",
59
- customizationTool: "Ferramenta de Personalização",
60
- quitLabel: "[Q] Sair",
61
- tabInstall: "Instalar",
62
- tabSettings: "Configurações",
63
- tabVoices: "Vozes",
64
- tabMusic: "Música",
65
- tabBmad: "BMad",
66
- tabReceiver: "Receptor",
67
- tabReadme: "Leiame",
68
- tabHelp: "Ajuda",
69
- subTabVoice: " [V] Voz ",
70
- subTabEffects: " [E] Efeitos ",
71
- subTabPersonality: " [P] Personalidade ",
72
- subTabOutput: " [O] Saída ",
73
- subTabLanguage: " [L] Idioma ",
74
- sectionProviderVoice: " 🎤 Provedor e Voz ",
75
- sectionAudioEffects: " ⚡ Efeitos de Áudio ",
76
- sectionBgMusic: " 🎸 Música de Fundo ",
77
- sectionStyle: " 🎭 Estilo ",
78
- sectionIntroText: " ✍️ Texto de Intro ",
79
- sectionAudioDest: " 📡 Destino de Áudio ",
80
- sectionConfigStorage: " 💾 Armazenamento de Config ",
81
- sectionLanguage: " 🌐 Idioma ",
82
- providerRowLabel: "Provedor:",
83
- currentVoiceLabel: "Voz Atual:",
84
- reverbLabel: "Reverb:",
85
- trackLabel: "Faixa:",
86
- volumeLabel: "Volume:",
87
- verbosityLabel: "Verbosidade:",
88
- personalityLabel: "Personalidade:",
89
- introTextRowLabel: "Texto Intro:",
90
- destinationLabel: "Destino:",
91
- sshAliasLabel: "Alias SSH:",
92
- globalLabel: "Global:",
93
- localLabel: "Local:",
94
- languageLabel: "Idioma:",
95
- switchBtn: "Trocar",
96
- changeBtn: "Alterar",
97
- playBtn: "▶ Reproduzir",
98
- stopBtn: "■ Parar",
99
- previewBtn: "▶ Visualizar",
100
- fullPreviewBtn: "▶ Visualização Completa",
101
- saveGloballyBtn: "Salvar Global",
102
- saveLocallyBtn: "Salvar Local",
103
- cancelChangesBtn: "Cancelar Alterações",
104
- editBtn: "Editar",
105
- clearBtn: "Limpar",
106
- applyLanguageBtn: "✓ Aplicar Idioma",
107
- enabledBtn: "Ativado",
108
- disabledBtn: "Desativado",
109
- okSaveBtn: "OK — Salvar",
110
- enableBtn: "Ativar",
111
- streamingTextBtn: "Apenas Texto Streaming ✓",
112
- streamingPulseBtn: "Streaming Áudio Pulse",
113
- continueArrowBtn: "Continuar →",
114
- acceptInstallBtn: "✓ Aceitar e Instalar",
115
- okDoneBtn: "✓ OK — Concluído",
116
- doneCustomizeBtn: "✓ Concluído - Personalizar mais",
117
- doneQuitBtn: "✕ Concluído - Sair",
118
- editInstallBtn: "Editar",
119
- musicDisabledMsg: "Música desativada. Ativar agora?",
120
- settingsFooter: "[↑↓] Grupo [←→] Irmão/Sub-tab [Enter/Space] Ativar [Tab] Trocar Tab [Q] Sair",
121
- voicesFooter: "[↑↓/jk] Navegar [Space] Visualizar [Enter] Selecionar [F] Favorito [/] Buscar",
122
- musicFooter: "[↑↓/jk] Navegar [Space] Visualizar [Enter] Selecionar [M] Alternar [*] Favorito [F] Filtrar [Q] Sair",
123
- helpFooter: "[↑↓/jk] Rolar [/] Buscar [PgUp/PgDn] Página [S/V/M/A/R] Tab [Q] Sair",
124
- readmeFooter: "[↑↓/jk] Rolar [PgUp/PgDn] Página [/] Buscar [S/V/M/A/R] Tab [Q] Sair",
125
- receiverFooter: "Receptor SSH [Q] Sair",
126
- searchLabel: "Buscar:",
127
- settingsSavedMsg: "Configurações Salvas",
128
- changesRevertedMsg: "Alterações revertidas",
129
- musicBuiltInHeader: "── Faixas Integradas ",
130
- musicStatusHeader: "── Status da Música ",
131
- musicStatusLabel: "Música:",
132
- musicActiveTrack: "Faixa Ativa:",
133
- musicFilterLabel: "Filtro:",
134
- musicFilterAll: "Todos",
135
- musicFilterFavs: "Favoritos",
136
- musicToggleBtn: "[Ativar/Desativar Música]",
137
- musicAddCustomBtn: "[Adicionar Faixa]",
138
- voicesHeader: "── Vozes ",
139
- voicesColName: "Nome",
140
- voicesColGender: "Gênero",
141
- voicesColProvider: "Provedor",
142
- voicesInfoHeader: "── Info da Voz ",
143
- voicesSwitchBtn: "[Trocar Voz]",
144
- voicesFavoriteBtn: "[★ Favorito]",
145
- voicesDownloadBtn: "[Baixar Voz]",
146
- voicesRowHintInstalled: "[Space] Visualizar [Enter] Selecionar [*] Favorito",
147
- voicesRowHintUninstalled: "[Enter] Baixar e instalar",
148
- musicRowHint: "[Space] Reproduzir [Enter] Selecionar [*] Favorito",
149
- musicHintText: "[Space] visualizar [Enter] definir faixa [*] favorito",
150
- genderFemale: "Feminino",
151
- genderMale: "Masculino",
152
- voiceInfoVoice: "Voz:",
153
- voiceInfoGender: "Gênero:",
154
- voiceInfoLanguage: "Idioma:",
155
- voiceInfoQuality: "Qualidade:",
156
- voiceInfoProvider: "Provedor:",
157
- voiceInfoId: "ID:",
158
- voiceInfoSpeaker: "Locutor:",
159
- voiceInfoModel: "Modelo:",
160
- voiceInfoSpeakerId: "ID do Locutor:",
161
- voiceInfoDownload: "⬇ Pressionar [Enter] para baixar e instalar",
162
- voicePlaying: "(reproduzindo)",
163
- bmadTitle: "🧙 Agentes BMAD",
164
- bmadWhatIsHeader: "O que é BMAD?",
165
- bmadDesc: "O Método BMad (Build More Architect Dreams) é um módulo de framework\nde desenvolvimento orientado por IA que ajuda você a construir software\nde ponta a ponta, da ideação à implementação agêntica. Fornece agentes IA\nespecializados, fluxos de trabalho guiados e planejamento inteligente.\n\nSe você está confortável trabalhando com assistentes de codificação IA\ncomo Claude, Cursor ou GitHub Copilot, você está pronto para começar.",
166
- bmadInstallHeader: "Instalar BMAD no seu projeto:",
167
- bmadLearnMoreHeader: "Saiba mais:",
168
- bmadInstalledNote: "Uma vez que o BMAD estiver instalado, esta aba mostrará todos os seus\nagentes e permitirá personalizar a voz, pretexto, reverb, personalidade\ne música de fundo de cada agente independentemente.",
169
- receiverWhatIsTitle: "O que é o Receptor SSH?",
170
- receiverDesc: "O Receptor SSH permite que seus servidores remotos falem através desta\nmáquina. Quando um assistente de IA em um servidor remoto precisa\nreproduzir áudio TTS, ele envia o texto via SSH para esta máquina, que\ngera e reproduz o áudio pelos seus alto-falantes localmente.\n\nIA Remota ──[SSH]──► Esta Máquina ──[piper+sox+ffmpeg]──► Seus Alto-falantes",
171
- helpSectionGlobal: "Atalhos Globais",
172
- helpSectionNavigation: "Atalhos de Navegação",
173
- helpSectionColors: "Guia de Cores das Abas",
174
- helpQuit: "Sair do console",
175
- helpForceQuit: "Forçar saída",
176
- helpSwitchSettings: "Ir para aba Configurações",
177
- helpSwitchVoices: "Ir para aba Vozes",
178
- helpSwitchMusic: "Ir para aba Música",
179
- helpSwitchReadme: "Ir para aba Readme",
180
- helpSwitchHelp: "Ir para aba Ajuda",
181
- helpSwitchInstall: "Ir para aba Instalar",
182
- helpCloseModal: "Fechar modal / voltar",
183
- helpNavigateLists: "Navegar listas",
184
- helpSelectActivate: "Selecionar / ativar",
185
- helpTogglePreview: "Alternar / visualizar",
186
- helpNextButton: "Próximo botão",
187
- helpPrevButton: "Botão anterior",
188
- helpOpenSearch: "Abrir busca/filtro",
189
- helpToggleFavFilter: "Alternar filtro de favoritos (Vozes/Música)",
190
- helpToggleFav: "Alternar favorito (aba Música)",
191
- helpToggleMusic: "Ativar/desativar música (aba Música)",
192
- helpColorSettings: "Rodapé da aba Configurações",
193
- helpColorVoices: "Rodapé da aba Vozes",
194
- helpColorMusic: "Rodapé da aba Música",
195
- helpColorReadme: "Rodapé da aba Readme",
196
- helpColorHelp: "Rodapé da aba Ajuda",
197
- helpColorInstall: "Rodapé da aba Instalar",
198
- helpSearchLabel: "Buscar:",
199
- readmeScrollMore: "↓ Role para mais conteúdo ↓",
200
- readmeNotFound: "*(Nenhum README.md encontrado no diretório atual)*",
201
- bmadFooterNobmad: "[Tab] Mudar Aba [Q] Sair",
202
- bmadFooterBmad: "[↑↓/jk] Navegar [Space] Visualizar [Enter] Configurar [A] Auto-atribuir [B] Lote [X] Redefinir [Q] Sair",
1
+ export default {
2
+ languageSelectTitle: "🌐 Select Language / Seleccionar Idioma / Choisir la langue / Sprache wählen / Selecionar Idioma / 言語を選択 / भाषा चुनें / 选择语言 / 언어 선택",
3
+ languageApplied: "Idioma aplicado",
4
+ welcomeTitle: "Bem-vindo ao AgentVibes!",
5
+ installDetails: "Detalhes da instalação",
6
+ installLocation: "Local de instalação",
7
+ packageVersion: "Versão do pacote",
8
+ readyToConfigure: "Pronto para configurar o AgentVibes?",
9
+ installationCancelled: "Instalação cancelada.",
10
+ startInstall: "Iniciar instalação",
11
+ installationCancelledMsg: "A instalação foi cancelada pelo usuário.",
12
+ installedSuccess: "AgentVibes instalado com sucesso!",
13
+ installComplete: "Instalação concluída",
14
+ installationFailed: "Falha na instalação",
15
+ installing: "Instalando AgentVibes...",
16
+ providerLabel: "Provedor",
17
+ voiceLabel: "Voz",
18
+ locationLabel: "Local",
19
+ versionLabel: "Versão",
20
+ configurationSetup: "Configuração",
21
+ configurationIntro: "Por favor, configure sua instalação do AgentVibes.",
22
+ navigationHint: "Use as teclas de seta para navegar entre as páginas.",
23
+ nonInteractiveDetected: "Modo não interativo detectado",
24
+ installError: "Falha na instalação",
25
+ continuePrompt: "Continuar",
26
+ cancelPrompt: "Cancelar",
27
+ setupWizard: "Assistente de Configuração",
28
+ setupWizardSubtitle: "TTS para assistentes de IA com personalidade.",
29
+ dependencyCheck: "Verificação de Dependências",
30
+ checkingDependencies: "Verificando dependências...",
31
+ depColumn: "Dependência",
32
+ statusColumn: "Status",
33
+ installed: "Instalado",
34
+ notFound: "Não encontrado",
35
+ ffmpegMissing: "Não encontrado (necessário para música de fundo)",
36
+ ttsDetected: "Provedores TTS Detectados",
37
+ noTtsFound: "Nenhum provedor TTS encontrado. Instale o Piper ou Soprano primeiro.",
38
+ providerSelection: "Seleção de Provedor",
39
+ availableProviders: "Provedores TTS disponíveis:",
40
+ providerAndVoice: "Provedor e Voz",
41
+ voiceChangeHint: "(após instalação, pode alterar em Configurações)",
42
+ introText: "Texto de Introdução",
43
+ introTextLabel: "Texto intro",
44
+ none: "nenhum",
45
+ example: "Exemplo",
46
+ screen1Hint: "Tela 1/5: Boas-vindas | [←/→] Navegar | [Enter] Começar | [Esc] Sair",
47
+ screen2Hint: "Tela 2/5: Dependências | [←] Voltar | [Enter] Próximo",
48
+ screen3Hint: "Tela 3/5: Provedor | [←] Voltar | [↑↓] Escolher | [Enter/→] Confirmar",
49
+ screen4Hint: "Tela 4/5: Configurar | [Esc] Voltar | [E] Editar | [↓] Aceitar e Instalar",
50
+ screen5HintDone: "Tela 5/5: Completo | [Enter] OK — Concluído",
51
+ screen5HintWait: "Tela 5/5: Instalando... | Aguarde",
52
+ languageSettings: "Idioma",
53
+ languageSettingsSubtitle: "Selecionar idioma da interface",
54
+ currentLanguage: "Idioma atual",
55
+ changeLanguage: "Alterar idioma",
56
+ beginBtn: "▶ Começar",
57
+ exitBtn: "✗ Sair",
58
+ footerText: "[Enter] Continuar/Concluir [Esc] Voltar/Sair [C] Console [S/V/M/A/R] Tab [Q] Sair",
59
+ customizationTool: "Ferramenta de Personalização",
60
+ quitLabel: "[Q] Sair",
61
+ tabInstall: "Instalar",
62
+ tabSettings: "Configurações",
63
+ tabVoices: "Vozes",
64
+ tabMusic: "Música",
65
+ tabBmad: "BMad",
66
+ tabReceiver: "Receptor",
67
+ tabReadme: "Leiame",
68
+ tabHelp: "Ajuda",
69
+ subTabVoice: " [V] Voz ",
70
+ subTabEffects: " [E] Efeitos ",
71
+ subTabPersonality: " [P] Personalidade ",
72
+ subTabOutput: " [O] Saída ",
73
+ subTabLanguage: " [L] Idioma ",
74
+ sectionProviderVoice: " 🎤 Provedor e Voz ",
75
+ sectionAudioEffects: " ⚡ Efeitos de Áudio ",
76
+ sectionBgMusic: " 🎸 Música de Fundo ",
77
+ sectionStyle: " 🎭 Estilo ",
78
+ sectionIntroText: " ✍️ Texto de Intro ",
79
+ sectionAudioDest: " 📡 Destino de Áudio ",
80
+ sectionConfigStorage: " 💾 Armazenamento de Config ",
81
+ sectionLanguage: " 🌐 Idioma ",
82
+ providerRowLabel: "Provedor:",
83
+ currentVoiceLabel: "Voz Atual:",
84
+ reverbLabel: "Reverb:",
85
+ trackLabel: "Faixa:",
86
+ volumeLabel: "Volume:",
87
+ verbosityLabel: "Verbosidade:",
88
+ personalityLabel: "Personalidade:",
89
+ introTextRowLabel: "Texto Intro:",
90
+ destinationLabel: "Destino:",
91
+ sshAliasLabel: "Alias SSH:",
92
+ globalLabel: "Global:",
93
+ localLabel: "Local:",
94
+ languageLabel: "Idioma:",
95
+ switchBtn: "Trocar",
96
+ changeBtn: "Alterar",
97
+ playBtn: "▶ Reproduzir",
98
+ stopBtn: "■ Parar",
99
+ previewBtn: "▶ Visualizar",
100
+ fullPreviewBtn: "▶ Visualização Completa",
101
+ saveGloballyBtn: "Salvar Global",
102
+ saveLocallyBtn: "Salvar Local",
103
+ cancelChangesBtn: "Cancelar Alterações",
104
+ editBtn: "Editar",
105
+ clearBtn: "Limpar",
106
+ applyLanguageBtn: "✓ Aplicar Idioma",
107
+ enabledBtn: "Ativado",
108
+ disabledBtn: "Desativado",
109
+ okSaveBtn: "OK — Salvar",
110
+ enableBtn: "Ativar",
111
+ streamingTextBtn: "Apenas Texto Streaming ✓",
112
+ streamingPulseBtn: "Streaming Áudio Pulse",
113
+ continueArrowBtn: "Continuar →",
114
+ acceptInstallBtn: "✓ Aceitar e Instalar",
115
+ okDoneBtn: "✓ OK — Concluído",
116
+ doneCustomizeBtn: "✓ Concluído - Personalizar mais",
117
+ doneQuitBtn: "✕ Concluído - Sair",
118
+ editInstallBtn: "Editar",
119
+ musicDisabledMsg: "Música desativada. Ativar agora?",
120
+ settingsFooter: "[↑↓] Grupo [←→] Irmão/Sub-tab [Enter/Space] Ativar [Tab] Trocar Tab [Q] Sair",
121
+ voicesFooter: "[↑↓/jk] Navegar [Space] Visualizar [Enter] Selecionar [F] Favorito [/] Buscar",
122
+ musicFooter: "[↑↓/jk] Navegar [Space] Visualizar [Enter] Selecionar [M] Alternar [*] Favorito [F] Filtrar [Q] Sair",
123
+ helpFooter: "[↑↓/jk] Rolar [/] Buscar [PgUp/PgDn] Página [S/V/M/A/R] Tab [Q] Sair",
124
+ readmeFooter: "[↑↓/jk] Rolar [PgUp/PgDn] Página [/] Buscar [S/V/M/A/R] Tab [Q] Sair",
125
+ receiverFooter: "Receptor SSH [Q] Sair",
126
+ searchLabel: "Buscar:",
127
+ settingsSavedMsg: "Configurações Salvas",
128
+ changesRevertedMsg: "Alterações revertidas",
129
+ musicBuiltInHeader: "── Faixas Integradas ",
130
+ musicStatusHeader: "── Status da Música ",
131
+ musicStatusLabel: "Música:",
132
+ musicActiveTrack: "Faixa Ativa:",
133
+ musicFilterLabel: "Filtro:",
134
+ musicFilterAll: "Todos",
135
+ musicFilterFavs: "Favoritos",
136
+ musicToggleBtn: "[Ativar/Desativar Música]",
137
+ musicAddCustomBtn: "[Adicionar Faixa]",
138
+ voicesHeader: "── Vozes ",
139
+ voicesColName: "Nome",
140
+ voicesColGender: "Gênero",
141
+ voicesColProvider: "Provedor",
142
+ voicesInfoHeader: "── Info da Voz ",
143
+ voicesSwitchBtn: "[Trocar Voz]",
144
+ voicesFavoriteBtn: "[★ Favorito]",
145
+ voicesDownloadBtn: "[Baixar Voz]",
146
+ voicesRowHintInstalled: "[Space] Visualizar [Enter] Selecionar [*] Favorito",
147
+ voicesRowHintUninstalled: "[Enter] Baixar e instalar",
148
+ musicRowHint: "[Space] Reproduzir [Enter] Selecionar [*] Favorito",
149
+ musicHintText: "[Space] visualizar [Enter] definir faixa [*] favorito",
150
+ genderFemale: "Feminino",
151
+ genderMale: "Masculino",
152
+ voiceInfoVoice: "Voz:",
153
+ voiceInfoGender: "Gênero:",
154
+ voiceInfoLanguage: "Idioma:",
155
+ voiceInfoQuality: "Qualidade:",
156
+ voiceInfoProvider: "Provedor:",
157
+ voiceInfoId: "ID:",
158
+ voiceInfoSpeaker: "Locutor:",
159
+ voiceInfoModel: "Modelo:",
160
+ voiceInfoSpeakerId: "ID do Locutor:",
161
+ voiceInfoDownload: "⬇ Pressionar [Enter] para baixar e instalar",
162
+ voicePlaying: "(reproduzindo)",
163
+ bmadTitle: "🧙 Agentes BMAD",
164
+ bmadWhatIsHeader: "O que é BMAD?",
165
+ bmadDesc: "O Método BMad (Build More Architect Dreams) é um módulo de framework\nde desenvolvimento orientado por IA que ajuda você a construir software\nde ponta a ponta, da ideação à implementação agêntica. Fornece agentes IA\nespecializados, fluxos de trabalho guiados e planejamento inteligente.\n\nSe você está confortável trabalhando com assistentes de codificação IA\ncomo Claude, Cursor ou GitHub Copilot, você está pronto para começar.",
166
+ bmadInstallHeader: "Instalar BMAD no seu projeto:",
167
+ bmadLearnMoreHeader: "Saiba mais:",
168
+ bmadInstalledNote: "Uma vez que o BMAD estiver instalado, esta aba mostrará todos os seus\nagentes e permitirá personalizar a voz, pretexto, reverb, personalidade\ne música de fundo de cada agente independentemente.",
169
+ receiverWhatIsTitle: "O que é o Receptor SSH?",
170
+ receiverDesc: "O Receptor SSH permite que seus servidores remotos falem através desta\nmáquina. Quando um assistente de IA em um servidor remoto precisa\nreproduzir áudio TTS, ele envia o texto via SSH para esta máquina, que\ngera e reproduz o áudio pelos seus alto-falantes localmente.\n\nIA Remota ──[SSH]──► Esta Máquina ──[piper+sox+ffmpeg]──► Seus Alto-falantes",
171
+ helpSectionGlobal: "Atalhos Globais",
172
+ helpSectionNavigation: "Atalhos de Navegação",
173
+ helpSectionColors: "Guia de Cores das Abas",
174
+ helpQuit: "Sair do console",
175
+ helpForceQuit: "Forçar saída",
176
+ helpSwitchSettings: "Ir para aba Configurações",
177
+ helpSwitchVoices: "Ir para aba Vozes",
178
+ helpSwitchMusic: "Ir para aba Música",
179
+ helpSwitchReadme: "Ir para aba Readme",
180
+ helpSwitchHelp: "Ir para aba Ajuda",
181
+ helpSwitchInstall: "Ir para aba Instalar",
182
+ helpCloseModal: "Fechar modal / voltar",
183
+ helpNavigateLists: "Navegar listas",
184
+ helpSelectActivate: "Selecionar / ativar",
185
+ helpTogglePreview: "Alternar / visualizar",
186
+ helpNextButton: "Próximo botão",
187
+ helpPrevButton: "Botão anterior",
188
+ helpOpenSearch: "Abrir busca/filtro",
189
+ helpToggleFavFilter: "Alternar filtro de favoritos (Vozes/Música)",
190
+ helpToggleFav: "Alternar favorito (aba Música)",
191
+ helpToggleMusic: "Ativar/desativar música (aba Música)",
192
+ helpColorSettings: "Rodapé da aba Configurações",
193
+ helpColorVoices: "Rodapé da aba Vozes",
194
+ helpColorMusic: "Rodapé da aba Música",
195
+ helpColorReadme: "Rodapé da aba Readme",
196
+ helpColorHelp: "Rodapé da aba Ajuda",
197
+ helpColorInstall: "Rodapé da aba Instalar",
198
+ helpSearchLabel: "Buscar:",
199
+ readmeScrollMore: "↓ Role para mais conteúdo ↓",
200
+ readmeNotFound: "*(Nenhum README.md encontrado no diretório atual)*",
201
+ bmadFooterNobmad: "[Tab] Mudar Aba [Q] Sair",
202
+ bmadFooterBmad: "[↑↓/jk] Navegar [Space] Visualizar [Enter] Configurar [A] Auto-atribuir [B] Lote [X] Redefinir [Q] Sair",
203
203
  };
@@ -1,54 +1,54 @@
1
- /**
2
- * File: src/i18n/strings.js
3
- *
4
- * Internationalization strings for the AgentVibes installer TUI.
5
- * Supports: en, es, fr, de, pt, ja, hi, zh-CN, ko
6
- *
7
- * Usage:
8
- * import { t, SUPPORTED_LANGUAGES, strings } from './i18n/strings.js';
9
- * t('es', 'welcomeTitle') // => Spanish welcome title
10
- * t('xx', 'welcomeTitle') // => falls back to English
11
- */
12
-
13
- import en from './en.js';
14
- import es from './es.js';
15
- import fr from './fr.js';
16
- import de from './de.js';
17
- import pt from './pt.js';
18
- import ja from './ja.js';
19
- import hi from './hi.js';
20
- import zhCN from './zh-CN.js';
21
- import ko from './ko.js';
22
-
23
- export const strings = { en, es, fr, de, pt, ja, hi, 'zh-CN': zhCN, ko };
24
-
25
- /**
26
- * Translate a key for a given language, falling back to English.
27
- * @param {string} lang - Language code (e.g. 'es', 'zh-CN')
28
- * @param {string} key - String key to look up
29
- * @returns {string} Translated string, or English fallback, or the key itself
30
- */
31
- export function t(lang, key) {
32
- const langStrings = strings[lang];
33
- if (langStrings && langStrings[key] !== undefined) {
34
- return langStrings[key];
35
- }
36
- // Fall back to English
37
- return strings.en[key] !== undefined ? strings.en[key] : key;
38
- }
39
-
40
- /**
41
- * Supported languages for the language chooser UI.
42
- * Each entry has: value (language code), name (display label for inquirer)
43
- */
44
- export const SUPPORTED_LANGUAGES = [
45
- { value: 'en', name: '🇺🇸 English' },
46
- { value: 'es', name: '🇪🇸 Español (Spanish)' },
47
- { value: 'fr', name: '🇫🇷 Français (French)' },
48
- { value: 'de', name: '🇩🇪 Deutsch (German)' },
49
- { value: 'pt', name: '🇧🇷 Português (Portuguese)' },
50
- { value: 'ja', name: '🇯🇵 日本語 (Japanese)' },
51
- { value: 'hi', name: '🇮🇳 हिन्दी (Hindi)' },
52
- { value: 'zh-CN', name: '🇨🇳 中文 (Chinese Simplified)' },
53
- { value: 'ko', name: '🇰🇷 한국어 (Korean)' },
54
- ];
1
+ /**
2
+ * File: src/i18n/strings.js
3
+ *
4
+ * Internationalization strings for the AgentVibes installer TUI.
5
+ * Supports: en, es, fr, de, pt, ja, hi, zh-CN, ko
6
+ *
7
+ * Usage:
8
+ * import { t, SUPPORTED_LANGUAGES, strings } from './i18n/strings.js';
9
+ * t('es', 'welcomeTitle') // => Spanish welcome title
10
+ * t('xx', 'welcomeTitle') // => falls back to English
11
+ */
12
+
13
+ import en from './en.js';
14
+ import es from './es.js';
15
+ import fr from './fr.js';
16
+ import de from './de.js';
17
+ import pt from './pt.js';
18
+ import ja from './ja.js';
19
+ import hi from './hi.js';
20
+ import zhCN from './zh-CN.js';
21
+ import ko from './ko.js';
22
+
23
+ export const strings = { en, es, fr, de, pt, ja, hi, 'zh-CN': zhCN, ko };
24
+
25
+ /**
26
+ * Translate a key for a given language, falling back to English.
27
+ * @param {string} lang - Language code (e.g. 'es', 'zh-CN')
28
+ * @param {string} key - String key to look up
29
+ * @returns {string} Translated string, or English fallback, or the key itself
30
+ */
31
+ export function t(lang, key) {
32
+ const langStrings = strings[lang];
33
+ if (langStrings && langStrings[key] !== undefined) {
34
+ return langStrings[key];
35
+ }
36
+ // Fall back to English
37
+ return strings.en[key] !== undefined ? strings.en[key] : key;
38
+ }
39
+
40
+ /**
41
+ * Supported languages for the language chooser UI.
42
+ * Each entry has: value (language code), name (display label for inquirer)
43
+ */
44
+ export const SUPPORTED_LANGUAGES = [
45
+ { value: 'en', name: '🇺🇸 English' },
46
+ { value: 'es', name: '🇪🇸 Español (Spanish)' },
47
+ { value: 'fr', name: '🇫🇷 Français (French)' },
48
+ { value: 'de', name: '🇩🇪 Deutsch (German)' },
49
+ { value: 'pt', name: '🇧🇷 Português (Portuguese)' },
50
+ { value: 'ja', name: '🇯🇵 日本語 (Japanese)' },
51
+ { value: 'hi', name: '🇮🇳 हिन्दी (Hindi)' },
52
+ { value: 'zh-CN', name: '🇨🇳 中文 (Chinese Simplified)' },
53
+ { value: 'ko', name: '🇰🇷 한국어 (Korean)' },
54
+ ];