Luna gera mensagens de commit usando a API do OpenRouter, permitindo usar sua própria chave e escolher qualquer modelo suportado.
- Seletor de arquivos interativo: escolha quais arquivos alterados colocar em staged, direto na TUI
- Commits por arquivo: um commit para cada arquivo selecionado
- Alimentado pelo OpenRouter: resumos AI baseados nas diffs dos arquivos, usando o modelo que você escolher
- Prefixos convencionais: adiciona prefixo se estiver ausente
- Emojis escolhidos pela IA: com
-e, o modelo escolhe um emoji estilo gitmoji que combina com a intenção do commit - Controle de tamanho: alvo < 60 caracteres, máximo configurável (padrão 72)
- Filtragem inteligente: ignora binários e imagens comuns
- Lista todos os arquivos alterados via
git status --porcelain(modificados, staged, não rastreados), exceto os ignorados - Você escolhe quais incluir:
↑/↓para mover,espaçopara selecionar,apara selecionar todos,enterpara confirmar - Coloca os arquivos selecionados em staged (
git add) e processa um por um - Envia o diff de cada arquivo para o modelo configurado no OpenRouter
- Se
-eestiver ativo, o modelo prefixa a mensagem com um emoji correspondente; se a resposta não contiver prefixo conhecido, um é selecionado aleatoriamente de:chore:,refactor:,feat:,fix:,docs:,test:, etc. - Trunca para
maxCommitLengthe realiza commit comgit commit -m <mensagem> -- <arquivo>
- Windows
- Git instalado e disponível no PATH
- Chave API do OpenRouter (
https://openrouter.ai/keys) - Uma Nerd Font definida como fonte do terminal, para que os ícones da interface sejam exibidos corretamente
-
Copie
bin/Luna.exepara um diretório, ex:C:\Users\user\Luna -
Adicione essa pasta ao PATH do sistema:
- Pressione
Win + R, executesysdm.cpl, abra "Variáveis de Ambiente" - Edite a variável
Path→ "Novo" → cole o caminho da pasta - Salve e reabra o terminal
- Pressione
$ go build -o ./bin/Luna.exe main.goOu use o script auxiliar:
$ ./build.sho Luna lê configurações de arquivos de projeto e globais:
- Projeto:
.lunacfg(na raiz do repositório ou no diretório pai mais próximo) - Global:
.lunarc(no diretório home do usuário)
Prioridade:
- Chave API e modelo: Global → Projeto → Padrão
- Outras configurações: Projeto → Padrão
Configurações padrão (do código):
ignoredPatterns:*.exe,*.dll,*.png,*.jpg,*.jpeg,*.gif,*.bincommitPrefixes:chore:,refactor:,feat:,fix:,docs:,test:maxCommitLength:72defaultEmoji:false
$ Luna apikey SUA_CHAVE_OPENROUTER
$ Luna model openai/gpt-4o-miniIsso salva a chave e o modelo no .lunarc global. Reabra o terminal após definir. Veja os modelos disponíveis em openrouter.ai/models.
Execute Luna dentro de um repositório Git com qualquer alteração (staged, não staged ou não rastreada) — você escolhe quais arquivos colocar em staged direto na TUI.
-
help|h: Mostra ajuda -
commit|c: Gera e commita mensagens por arquivo -
apikey <SUA_CHAVE>|k <SUA_CHAVE>: Define a chave API -
model <MODEL_ID>|m <MODEL_ID>: Define o modelo do OpenRouter -
config|cfgcom subcomandos:init: Cria.lunacfgno diretório atualshow: Mostra configuração mescladaedit: Placeholder (não implementado ainda)
$ Luna commit # ou Luna cUse ↑/↓ para mover, espaço para selecionar arquivos, a para selecionar todos, enter para colocar em staged e commitar.
$ Luna c -e # habilita emojis nas mensagensGerando commit para o arquivo: src/main.go
Commited src/main.go com a mensagem:
🚀 feat: add user authentication system
Gerando commit para o arquivo: README.md
Commited README.md com a mensagem:
📝 docs: update installation instructions
- Luna ignora arquivos binários/imagens comuns
- Se o modelo retornar resposta vazia, fallback é
update <arquivo> - Prefixos suportados:
feat:,fix:,docs:,refactor:,test:,chore: maxCommitLengthé aplicado (padrão 72)
-
Erro:
Set API key using 'luna apikey' first- Execute
Luna apikey SUA_CHAVEe reabra o terminal
- Execute
-
Erro:
Set model using 'luna model' first- Execute
Luna model MODEL_ID(veja openrouter.ai/models)
- Execute
-
Erro ao rodar comandos Git
- Verifique se está em um repositório Git e se o Git está instalado
-
Nenhuma alteração encontrada
- Nada aparece no
git status; modifique ou crie um arquivo primeiro
- Nada aparece no
-
Chave API não funciona
- Verifique se a chave é válida e se o modelo escolhido está acessível na sua conta OpenRouter
Feito com ❤️ por hax — versão 1.3 (Beta)