v0.6.0 · agora bilíngue de verdade

Pare de olhar pro terminal.

Notificações nativas do Windows quando o Claude termina, pede permissão ou falha. Traduzidas, contextualizadas pelo projeto, instaladas em dois comandos.

Windows 10/11 pt-BR · en-US MIT Open source
claude — Claude Code

$ claude

Pensando...

Claude precisa da sua atenção

Aguardando você confirmar uma permissão · meu-projeto

Claude Code agora
O problema

Você sempre acaba olhando o terminal.

Pede pro Claude rodar algo, vai pra outra aba, esquece. Cinco minutos depois lembra. Volta, ele tá esperando há quatro pra você confirmar uma permissão. Esses cinco minutos somam.

Terminal silencioso

Toast nativo dispara

Você responde na hora

Recursos

O que faz o Ringly se sentir nativo.

i18n

Bilíngue first-class

192+ chaves em paridade total entre pt-BR e en-US. Toast, TUI, CLI, doctor, update notes — tudo respeita o idioma escolhido.

pt-BR

Claude terminou

Pronto pra próxima · meu-projeto

en-US

Claude finished

Ready for next · my-project

163 testes
0

Cobertura real, rodando em ~600ms via Vitest.

0

Zero deps no hook

Caminho quente independente. Plugin funciona sem o npm package.

Atomic writes

Toda mudança em settings.json escreve num temp e renomeia atomicamente. Sem race condition entre TUI e hook.

AUMID automático

ringly init registra o AUMID Claude.Code.CLI e cria o atalho do Menu Iniciar. Sem isso, Windows 10/11 silencia o toast.

256kb

256KB stdin limit

Payloads sanitizados, strings truncadas a 500 chars, paths a 1024. Defesa em profundidade.

hooks

5 eventos cobertos

Notification, Stop, StopFailure, SubagentStop, SessionStart. Cada um com toggle e tradução própria.

NotificationStopStopFailureSubagentStopSessionStart
slash command

Update guiado

/ringly-update mostra um resumo amigável do que mudou (lido do CHANGELOG) antes de pedir confirmação.

/ringly-update

Atualizar Ringly de 0.5.2 para 0.6.0?

· Resumo amigável do CHANGELOG

· Mensagens no seu idioma

MIT

Open source, atomic writes, 163 testes, zero dependências no caminho quente.

Ler a licença
Como funciona

Cinco passos entre o Claude e o seu desktop.

Sem polling, sem segundo processo de fundo. Só hooks oficiais do Claude Code, lidos por um dispatcher de 3kb sem dependências.

  1. 01

    Claude emite evento

    Notification, Stop, StopFailure, SubagentStop ou SessionStart — qualquer um dos cinco hooks oficiais.

  2. 02

    hooks.json chama dispatch.mjs

    O plugin registra os hooks no Claude Code e roda um script Node de ~3kb, zero deps.

  3. 03

    Lê ~/.claude/settings.json

    Resolução em runtime: idioma, eventos ativos, som, debug. Sem cache, sem restart, sempre fresco.

  4. 04

    Tenta 3 caminhos em ordem

    Módulo Node ringly/hook → binário CLI no PATH → fallback PowerShell embutido. Falha silenciosa, nunca quebra a sessão.

  5. 05

    Toast XML via AUMID registrado

    ToastNotificationManager monta o XML e dispara pelo AUMID Claude.Code.CLI, registrado pelo ringly init.

Eventos suportados

Os cinco hooks do Claude Code, traduzidos.

Cada evento dispara um toast com tom e urgência diferentes. Você liga e desliga individualmente pelo ringly config.

Notification

Claude pediu permissão ou input. Aparece quando você precisa intervir.

Claude precisa da sua atenção

Aguardando você responder · meu-projeto

Stop

Claude terminou de responder. Hora de revisar.

Claude terminou

Pronto pra próxima instrução · meu-projeto

StopFailure

Erro de API encerrou a sessão. Bom saber na hora.

A sessão do Claude parou

Um erro de API encerrou a sessão · meu-projeto

SubagentStop

Um subagent terminou. Desligado por padrão, ligue se você usa muito.

Subagent terminou

code-reviewer concluiu · meu-projeto

SessionStart

Checagem de update em background, throttled a uma vez por dia.

Ringly 0.6.0 disponível

Rode /ringly-update no Claude Code pra atualizar.

i18n de verdade

Sem leak. Sem typo. Sem afterthought.

Cada string da TUI, do CLI, do doctor, dos toasts, do update guiado — tudo em paridade pt-BR / en-US. Detecção pelo locale do sistema ou explícito pelo ringly config.

Toast
pt-BR

Claude terminou

Pronto pra próxima instrução · meu-projeto

en-US

Claude finished

Ready for your next instruction · my-project

CLI
pt-BR

✓ Toast exibido com sucesso

9 passou · 0 avisos · 0 falhou

en-US

✓ Toast shown successfully

9 passed · 0 warnings · 0 failed

TUI do ringly config
pt-BR

◉ Ringly · config · Eventos

↑ ↓ navegar · espaço alternar · enter salvar

en-US

◉ Ringly · config · Events

↑ ↓ navigate · space toggle · enter save

Sob o capô

Construído com a engenharia que você esperaria de um devtool sério.

163 testes
0 deps no hook
<3kb dispatcher
24h throttle de update
2 idiomas
5 hook events

Construído com

TypeScript Node.js React Ink Vitest Biome tsup yargs npm Windows GitHub MIT
Instalação

Dois passos, e os dois importam.

O Windows 10/11 silencia toasts de apps sem AUMID registrado. Por isso o npm é obrigatório — ele faz o registro. Sem ele, você ouve no máximo um beep.

Passo 1

Instalar a CLI ringly

1

Registra o AUMID Claude.Code.CLI no Windows, cria o atalho do Menu Iniciar, escreve a config inicial e imprime o comando do passo 2 pra você colar.

shell
$ npm install -g ringly
$ ringly init
Passo 2

Instalar o plugin no Claude Code

2

Registra os hooks Notification, Stop, StopFailure, SubagentStop e SessionStart. Usa o AUMID já registrado no passo 1.

claude code
/plugin marketplace add nickdevcode/Ringly
/plugin install ringly@ringly

Pular um dos dois passos é a única forma de o toast nativo não aparecer. É uma exigência do próprio Windows, não escolha de design.

FAQ

Perguntas frequentes.

  • Funciona em macOS e Linux?

    A v1.0 cobre Windows 10/11. macOS e Linux têm os back-ends estruturados, traduções prontas, mas os toasts nativos estão planejados pra próxima versão.
  • Preciso mesmo dos dois passos de instalação?

    Sim. O Windows exige um AUMID registrado pro ToastNotificationManager exibir notificações na Central de Ações. Esse registro é feito só pelo ringly init. Sem ele, o plugin no máximo toca um beep.
  • Como mudo o idioma depois de instalar?

    Roda ringly config no terminal. A TUI tem setas pra navegar, espaço pra alternar, seletor visual de idioma. Escreve em settings.json com backup e atomic write.
  • Posso desligar a checagem automática de updates?

    Sim. Roda ringly config e marca check_updates como false. Ou edita settings.json direto. A checagem já é throttled a uma vez por dia.
  • Por que o Ringly não aparece em /plugin → Configure?

    Decisão de design desde a v0.5.0. O schema do plugin manager do Claude Code não suporta enum nem toggle por Enter, o que tornava a UX confusa. Toda config vive no ringly config, que é mais robusto.
  • É seguro?

    Atomic writes, permissões 0600 no settings.json em Unix, sanitização de payload (256KB stdin, 500 chars em strings), validação de AUMID por regex. Tudo MIT, código aberto, 163 testes.
  • Como debugo se algo não funciona?

    Roda ringly doctor — 9+ checks no ambiente. Liga debug: true em settings.json pra ver logs detalhados. Logs rotacionam a 5MB.
  • Como contribuo?

    Abre uma issue ou PR no repositório. O CONTRIBUTING.md tem setup local, padrões de commit, como rodar lint/typecheck/testes. PRs bilíngues bem-vindas.
Bora começar

Faça o Claude Code se sentir nativo.

Dois comandos, uma TUI bonita, e o seu desktop te avisa em vez de você ficar piscando pra ele.