Skip to content

v0.1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 22 Oct 19:36
· 14 commits to main since this release

Changelog

  • 165536e Merge branch 'docs/cloud-spec'
  • 83cce16 Merge branch 'docs/zapi-parity'
  • 5f92f33 Merge branch 'feat/m6-messages' into integration/preview
  • 53284b4 Merge branch 'feat/m7-events' into integration/m5-m7
  • 07e5a63 Merge branch 'feat/m7-events' into integration/m5-m7
  • 9246650 Merge branch 'feat/m8-groups' into feat/m9-chats-profile
  • 8f91a30 Merge branch 'feat/site-docs'
  • a914c4b Merge branch 'main' (marco 11) into feat/m10-status-channels
  • d050572 Merge branch 'worktree-agent-a1cf4927ae1520103'
  • ca10ee5 Merge branch 'worktree-agent-a1fff95ec377ff8dd'
  • 4705ebd Merge branch 'worktree-agent-a2e69ba5c1a1c77c8'
  • e743665 Merge branch 'worktree-agent-a3ec45bffd541937b'
  • 94d3e64 Merge branch 'worktree-agent-a803e93d3e85e3a43'
  • 73ba3ea Merge branch 'worktree-agent-ac14451c5b9c062e2'
  • c2d79a0 Merge main (M10 status/channels/labels) into feat/attendant
  • 89d200b Merge: Cardápio do LiteZap (catálogo próprio, sem escrita na Meta)
  • ee6a6ec Merge: IA por assinatura (plantão no Claude Code e runtime Codex)
  • 7b2c19c feat(agentes): OpenAPI, guia de Agentes e changelog
  • e1ffd56 feat(agentes): aba Agentes no painel
  • af404b7 feat(agentes): loop de tool use, executor com permissões e gatilho pelo hook
  • e210a52 feat(agentes): rotas /agents na API e ligação no serve
  • 909db89 feat(agentes): runtime codex_cli (assinatura ChatGPT pelo Codex CLI), opt-in
  • b0f4823 feat(agentes): tabela única de ferramentas do MCP e tool use nos provedores
  • 771fe0f feat(agenthook): hook de agente (marco 5): POST assinado, resposta pela fila, pausa por humano, loop guard, rotas e aba Atendente IA
  • 279da78 feat(api): CRUD de webhooks com escopo admin/instância, entregas e retry da dead-letter; SSE por instância e global
  • 382975a feat(api): GET /v1/me, escopo do chamador no contexto e montagem autenticada de /mcp
  • 7f4f520 feat(api): REST de instâncias com auth admin/instância
  • a648dee feat(api): rotas de mensagens, chats, contatos, settings e mídia; wiring da fila, ingestão e lookup
  • 56e498b feat(apierr): envelope de erro da API
  • b3efc89 feat(app): extensão do Claude Desktop (.mcpb), vigia da configuração e erros do painel em português
  • 7639c63 feat(app): janela nativa no macOS com ícone no Dock
  • e0bf8b1 feat(app): lançador de bandeja litezap-app (fyne.io/systray, motor no processo, pasta por usuário, login em um clique, estado e Sair gracioso), ícone gerado em Go, script do .app para macOS e docs
  • 764c812 feat(app): litezap-app mcp e "Conectar a IA" em um clique
  • ef7019a feat(atendente): atendente IA embutido no motor (perfis, provedores, multimodal)
  • db5aef8 feat(atendente): painel, docs, OpenAPI e página do site do atendente IA
  • bdee8af feat(cardapio): aba Cardápio no painel
  • 1bab90b feat(cardapio): atendente, agentes e MCP usam o cardápio
  • a33c894 feat(cardapio): catálogo próprio do LiteZap (modelo, API e importações)
  • 7ec9a11 feat(cardapio): coleções, várias fotos, promoção, oculto, busca, massa e pedidos
  • 7e72d61 feat(cardapio): ferramentas MCP do catálogo completo e permissões dos agentes
  • 3e86dff feat(cardapio): montar o cardápio com a assinatura do usuário (Claude/ChatGPT)
  • dc9c731 feat(cardapio): painel com coleções, galeria de fotos, filtros, massa e pedidos
  • c119361 feat(cardapio): rotas REST de coleções, fotos, busca, massa, pedidos e CSV
  • 2cc5a2d feat(cloud): configuração por ambiente (LITEZAP_CONFIG_JSON e variáveis das opções novas) e tabelas da nuvem (uso diário, kv do motor, flags por instância, dono do webhook)
  • d84e37e feat(cloud): login de um clique emitido pelo operador e exportação lógica (E7, E8)
  • b2feb3a feat(cloud): logs JSON, watchdog de conexão zumbi e retenção de mensagens e mídia (E9, E13, E15)
  • aee87cc feat(cloud): token de operador, settings travadas, limite de instâncias, proxy obrigatório, webhooks do operador e envio suspenso (E4, E5, E17)
  • 2be9c75 feat(cloud): uso diário persistido, /metrics Prometheus, instance.proxy_failed, endpoint de ops e upgrade gracioso (E2, E3, E6, E11, E12)
  • 97fa42f feat(config): carrega yaml + env e gera token admin
  • fc3b24b feat(dashboard): painel web embutido em /app/ (instâncias com SSE, pareamento por QR/código, conversas e envio com a fila explicada, settings, webhooks com entregas/retry, eventos ao vivo) e login em um clique por código de uso único só em loopback
  • 433fc47 feat(events): barramento com envelope v1, produtores de instância, mensagens, recibos, envios e history.synced
  • 71fa7b7 feat(examples): agent-claude, atendente de referencia com a API da Anthropic; docs do hook de agente
  • fb08339 feat(ia): IA grátis por padrão (Ollama, Gemini e Groq)
  • 2aaed78 feat(ingest): grava mensagens, recibos e history sync no log
  • 123bfba feat(instance): máquina de estados com tabela de transições
  • 7b0ade1 feat(lookup): resolução de números com cache e limite por minuto
  • d9be7af feat(m10): MCP e painel de status, canais e etiquetas
  • 6e0f9da feat(m10): status, canais e etiquetas Business (worker, store, service, API)
  • efa7248 feat(m11): painel com renomear/etiquetas/allowlist e gerador de link de pareamento
  • 385b234 feat(m11): plataforma e parceiros no motor
  • 910bd22 feat(m12): catálogo e pedidos (fase 1) e limpeza explícita do perfil comercial
  • 05307af feat(m12): editar o perfil comercial do WhatsApp Business
  • 5c39c91 feat(m7): eventos de chamada e presença, status played, respostas de botão e filtros de webhook
  • a3de169 feat(m8): grupos e comunidades — serviço gRPC Groups, rotas REST, cotas anti-ban, group.updated, MCP e aba Grupos
  • 4a1daff feat(m9): MCP, painel, docs e OpenAPI de chats, contatos, perfil e privacidade
  • cd44eed feat(m9): chats, contatos, perfil e privacidade (worker, store, service, API)
  • d2fe68a feat(manager): observers, Client(id), first_connected_at e histórico fora do laço de supervisão
  • 92bf581 feat(manager): supervisão com heartbeat, backoff e circuit breaker
  • 4ca4a80 feat(mcp): send_message e send_media com reply_to/menções e tipos novos; ferramentas send_reaction, send_location, send_contact, edit_message e delete_message com avisos de segurança
  • def9ce7 feat(mcp): servidor MCP com ferramentas sobre Backend (service local em /mcp e cliente REST no litezap mcp stdio)
  • 7b77cf7 feat(media): download de media.url com bloqueio SSRF, MIME confiável, base64 e URLs assinadas
  • 6f3ec91 feat(painel): identidade LiteZap, criação guiada de instância e correção do congelamento
  • 4932c5b feat(plugin): comando whatsapp-plantao para atender com a assinatura Claude
  • 3daa123 feat(proto): RPCs e eventos de mensagens com mídia por caminho; limite gRPC de 32MB
  • 9763a21 feat(proto): contrato gRPC supervisor-worker
  • 61f61b3 feat(queue): carência após conectar, janela de envio, TTL e verificação de número antes do primeiro envio
  • 6605837 feat(queue): despachante por instância com ordem estrita, rampa, retry e wait
  • 4bf46f3 feat(queue): relógio injetável, ritmo, digitação e backoff
  • 2689b4b feat(secure): ids, tokens de instância e hash
  • f9c2402 feat(serve): liga barramento, webhooks e SSE; config webhook_allow_private_urls e retenções
  • 8ee4640 feat(service): casos de uso de instância
  • 944c06d feat(service): chats, histórico paginado, marcar lido, contatos, números com cache e mídia sob demanda com download único
  • 5137b84 feat(service): envio com validação, mídia, idempotência, TTL e wait; settings com restart por proxy
  • aa740cc feat(service,api): validação dos tipos novos, reply_to, menções, prévia de link com filtro SSRF e limite de 5s, editar/apagar/fixar com janelas, encaminhar mídia recebida; fila visível (listar, cancelar item, esvaziar)
  • ff8f9ee feat(settings): settings por instância (ritmo com pisos, janela, fuso, rampa, proxy) e defaults na config
  • 8904a5c feat(site): docs na profundidade Z-API/Supabase, referência por operação, marco 3 e páginas em breve
  • 823539f feat(site): identidade visual atual do LiteZap (logo, azul #377AFB, Public Sans)
  • 4c52504 feat(site): site do produto e docs (Astro + Starlight), OpenAPI 3.1 e imagem Docker
  • 9a6e8dd feat(spawner): interfaces e caminho curto de socket
  • eb557ac feat(spawner): spawner de processos com pid files e limpeza de órfãos
  • 9d6d335 feat(store): fila de envio com pending, idempotência, recuperação e cache de números
  • 93ecd24 feat(store): migração 0002, log de mensagens, chats e mídia
  • 74430ea feat(store): sqlite com migrações e CRUD de instâncias
  • 50fd531 feat(store): tabelas webhooks e webhook_deliveries (outbox) com retry, expiração e retenção
  • 7c46b71 feat(webhook): outbox com entrega assinada, backoff por entrega e por endpoint, dead-letter, retry manual e retenção
  • db4e853 feat(worker): adaptador whatsmeow e entrada do subcomando worker
  • 06682b8 feat(worker): envio e download por arquivo, contatos, números e eventos de mensagem via whatsmeow
  • 25c735e feat(worker): filas ao vivo e de histórico com contrapressão e RPCs de mensagens
  • 0a26c1a feat(worker): proxy por instância, sem proxy herdado do ambiente e sem fallback direto
  • 8486a98 feat(worker): servidor gRPC com hub de eventos e snapshot
  • 682101c feat(worker,queue): tipos novos de envio (sticker, gif, ptv, localização, contatos, enquete), citação, menções, prévia de link, editar/apagar/fixar/encaminhar; recepção de edições, revogações e votos; delay_ms/typing_ms; cancelar e esvaziar fila
  • 55db3da feat: LiteZap no Claude sem reiniciar e plugin do Claude Code
  • 31c3184 feat: subcomandos serve/worker/version e wiring do supervisor
  • b55b4f8 fix(agentes): endurece o executor conforme a revisão de segurança
  • a42a257 fix(agentes): endurece o runtime codex_cli conforme a revisão de segurança
  • 3f2b003 fix(agenthook): correcoes da revisao: humano assumindo cancela respostas na fila, loop guard escalona e nao perde contagem, resposta antes das reacoes
  • cfc160b fix(api): aceita JID com @ codificado (%40) nas rotas
  • 204f481 fix(api): corpo acima do limite responde 413 media_too_large em vez de JSON inválido
  • ad6e9af fix(app): correções da revisão da janela nativa
  • f36034d fix(app): correções da revisão de segurança do Conectar a IA
  • 78e1fe7 fix(app): correções da revisão independente (MIME fixo dos assets, bandeja responsiva após erro e com consulta de estado fora do loop, código de 1 min que descarta os pendentes, settings sem 0 em campo vazio nem senha mascarada do proxy, status de mensagem não regride, hash malformado)
  • 5c0a6e8 fix(app): endurece a busca do app pela extensão e a detecção do Claude no Windows
  • 2dd743f fix(app): impede que o Claude Desktop recoloque o LiteZap depois de desconectar
  • 5008376 fix(atendente): correções da revisão de segurança
  • 487622f fix(cardapio): corrige os pontos da revisão de segurança
  • d3105f7 fix(cardapio): pontos da revisão do catálogo completo
  • 244671e fix(cardapio): tags nas ferramentas, motivo de cada linha inválida e include_empty
  • cfab93b fix(cloud): correções da revisão independente
  • 560b976 fix(lookup): cota só é gasta depois de obter o worker; Lookup informa ida à rede; Cached sem rede; check-numbers com limite diário
  • 76940b5 fix(lookup): lote maior que a cota devolve ErrTooManyNumbers (não retentável); plano limita check-numbers a 10
  • befcfa5 fix(m10): correções da revisão independente
  • 67f0d20 fix(m11): correções da revisão de segurança
  • ac44561 fix(m12): endurece o catálogo e os pedidos conforme a revisão de segurança
  • a707f46 fix(m12): recusa remover o pin do mapa e registra a validação no aparelho
  • 23a217a fix(m6): correções da revisão independente (edições/revogações recebidas só do autor ou admin, sem encaminhar visualização única, menção LID no texto, limites da miniatura, prévia nunca em endereço privado, janela de edição 15 min)
  • 8a2d244 fix(m7): chamadas reais — reject de aparelho hospedado ignorado, atendida e não atendida
  • 14d43e4 fix(m7): correções da revisão independente
  • 17a8f2c fix(m7): presença só é enviada ao worker com a instância conectada
  • 1b5353d fix(m7): reject vindo de aparelho da própria conta não encerra a chamada
  • da2d917 fix(m8): correções da revisão independente; docs: README, specs, OpenAPI e guia de grupos
  • d9ab789 fix(m8): grupos respondem na hora com a instância não pareada (smoke)
  • f4a230c fix(m8,m9): fotos PNG/GIF convertidas para JPEG; criação de comunidade
  • 819a1cc fix(m9): chamadas de conta falham na hora sem sessão
  • b17d440 fix(m9): correções da revisão independente
  • b4496cd fix(m9): recado do perfil pelo IQ "status" clássico
  • 73185f5 fix(manager): aguarda o gravador de histórico ao encerrar o worker; first_connected_at só após persistir connected
  • 69efe53 fix(manager): clear the instance JID when logged_out is persisted
  • d20bd6b fix(manager): exiting junto do pedido de stop/logout, doc de locking, teste de estado final
  • eb7a2fd fix(manager): logout sem depender do evento, halt sem worker duplicado, shutdown fecha Start
  • aee2c81 fix(mcp): correções da revisão independente
  • 8570cef fix(media): ResolveMime sempre confere os bytes; HTML rotulado como imagem/vídeo/áudio é recusado
  • f481fe9 fix(media): identifica o LiteZap no download de mídia e avisa fotos que falharam
  • 341613e fix(media): media.url com esquema inválido responde validation_failed, não media_fetch_failed
  • df500b3 fix(media): media_key cai para O_EXCL sem hard link; imagem leva o tipo detectado nos bytes
  • b0575af fix(media): media_key criada de forma atômica e exclusiva; MAC da URL assinada com prefixo de tamanho
  • 2027a6d fix(queue): Delete da instância encerra o despachante e libera as esperas (Queues.Forget)
  • cbfe1ef fix(queue): MaxPerMinute <= 0 desliga o limite por minuto no pacer
  • 6432cd5 fix(queue): consultas de número com ritmo e limite diário; resposta no outro formato do 9º dígito resolvida pelo cache; worker indisponível não conta falha de consulta
  • 54af009 fix(queue): destinatário novo independe da rampa; erro de escrita no store pausa o despachante
  • 8bd69fc fix(queue): rampa antes da consulta de número, carência só após o aviso de connected, consulta interrompida não conta falha
  • b7d9f03 fix(serve): fecha conexões que passam do prazo do shutdown antes de parar fila, workers e store
  • 0e0cf69 fix(service): Delete aposenta a instância no manager para Start concorrente não deixar worker órfão
  • 4d6e496 fix(service): UpdateSettings serializado por instância para não perder atualizações concorrentes
  • bcd0252 fix(service): bound best-effort logout and unretire on failed Delete
  • 62dc925 fix(service): client_message_id concorrente com outro corpo responde conflict
  • 9731a04 fix(service): limita legenda, emoji da reação e nome do arquivo no envio
  • dcb9a25 fix(service): map worker gRPC errors to API errors
  • f96990f fix(service): media_download_failed com Unavailable responde 502 worker_error (retentável), não instance_not_connected
  • 9a79f9f fix(service): worker DeadlineExceeded is worker_timeout (504), not not_connected
  • 458a2a4 fix(spawner): dial worker socket via custom dialer so Windows paths work
  • 0a3be81 fix(spawner): fecha conn de worker morto, Close gracioso, pipe de vida do pai, socket dir seguro
  • e9e784a fix(spawner): remove LITEZAP_WORKER_PROXY_URL herdada e compara variáveis sem diferenciar maiúsculas
  • 254a54d fix(store): índice parcial dos itens queued; spec: linha 6 (site e documentação)
  • a2dd3a9 fix(webhook): correções da revisão independente
  • 9b09d48 fix(worker): back off and give up on repeated unknown connect failures
  • e50bb5d fix(worker): logout durante pareamento, rounds de QR com backoff e shutdown limpo
  • a790ab9 fix(worker): resolver LID do histórico pelo blob, endereçamento de grupos LID, erros de download e recibos inactive
  • 6a2f14e fix(worker): temporary ban is a recoverable failure; reconnect after unknown connect failure
  • b0149e7 fix(worker): timeout do primeiro QR, ready limpo no fim da rodada, copia dos codes
  • a301283 fix: bind antes de matar órfãos, timeouts e orçamento de shutdown, endurecimento da API
  • 5ce6595 fix: clear the cached QR when a pairing round ends
  • c0bb15b fix: endurece token admin vazio, Equal vazio e lista de instâncias não nula
  • 9e2dd26 merge: app local (painel + bandeja) sobre o marco 4 (MCP)
  • 5210aff merge: integration/preview (marco 6) em feat/cloud-c1-engine
  • 14cd002 merge: marco 7 (eventos e chamadas) sobre o marco 5 (hook de agente)
  • 3519e81 refactor(agentes): tira um auxiliar sem uso da sessão do atendente
  • 7324b1f refactor(worker): pareamento sem GetQRChannel, rotacao de QR propria
  • aedea56 refactor: remove o Cardápio (catálogo próprio do LiteZap)

App para quem não usa terminal (sobe em alguns minutos, depois dos binários): LiteZap-macos.dmg, LiteZap-windows.zip, LiteZap-linux-amd64.tar.gz. Veja https://github.com/douglasdf99/litezap#baixar-o-app

Imagem Docker: docker pull ghcr.io/douglasdf99/litezap:0.1.0

LiteZap é um projeto não oficial, sem vínculo com o WhatsApp ou a Meta. Use por sua conta e risco.