Luna gera mensagens de commit usando a API Google Gemini 2.0 Flash.
- Commits por arquivo: um commit para cada arquivo
- Gemini 2.0 Flash: resumos AI baseados nas diffs dos arquivos
- Prefixos convencionais: adiciona prefixo se estiver ausente
- Controle de tamanho: alvo < 60 caracteres, máximo configurável (padrão 72)
- Filtragem inteligente: ignora binários e imagens comuns
- Emojis opcionais: habilite com
-e
- Coleta arquivos staged via
git diff --cached --name-only - Envia cada diff para o Gemini
- Se a resposta não contiver prefixo conhecido, seleciona aleatoriamente de:
chore:,refactor:,feat:,fix:,docs:,test:, etc. - Se
-eestiver ativo, adiciona emoji aleatório - Trunca para
maxCommitLengthe realiza commit comgit commit -m <mensagem> -- <arquivo>
- Windows
- Git instalado e disponível no PATH
- Chave API Google Gemini (
https://aistudio.google.com/app/apikey)
-
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: 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_GEMINIIsso salva a chave no .lunarc global. Reabra o terminal após definir.
Execute Luna dentro de um repositório Git com alterações staged.
-
help|h: Mostra ajuda -
commit|c: Gera e commita mensagens por arquivo -
apikey <SUA_CHAVE>|k <SUA_CHAVE>: Define a chave API -
config|cfgcom subcomandos:init: Cria.lunacfgno diretório atualshow: Mostra configuração mescladaedit: Placeholder (não implementado ainda)
$ git add . && Luna commit # ou Luna c$ 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 LunaApikey first- Execute
Luna apikey SUA_CHAVEe reabra o terminal
- Execute
-
Erro ao rodar comandos Git
- Verifique se está em um repositório Git e se o Git está instalado
-
Nenhuma alteração staged
- Execute
git add .ou faça stage de arquivos específicos
- Execute
-
Chave API não funciona
- Verifique se a chave é válida e tem acesso ao Gemini 2.0 Flash
Feito com ❤️ por hax — versão 1.3 (Beta)