Changelog

Histórico de versões e mudanças do Zé Papagaio.

v0.1.29latest2026-04-27
  • 🐛 Instalador continuava saindo silenciosamente em 'Checando portas necessárias...' — em mais 3 pontos que ficaram fora do fix da 0.1.28. O bug do `set -e` propagando em bash 3.2 do macOS aparecia em populate_docker_ps_cache (`[ "$ZE_DOCKER_PS_CACHE_LOADED" = "1" ] && return 0` falhava no primeiro call, atinge TODA instalação fresh), em find_existing_vaults (mesma forma, atinge users sem vault Obsidian prévio), e no for-loop de reuso de portas em CONFIG_ENV (`__existing=$(grep | pipe)` com pipefail abortava quando grep não encontrava chave). Todos trocados por `if cmd; then return 0; fi` + `|| true` no pipe. Bonus: adicionado guard `prepublishOnly` no npm-wrapper que rejeita publish se detectar regressão dos 2 patterns conhecidos.
v0.1.282026-04-27
  • 🐛 Instalador saía silenciosamente em macOS quando a primeira porta default estava ocupada — bug crítico que a 0.1.27 não cobriu. check_port_free usava `cmd; return $?` — em bash 3.2 do macOS (default em /bin/bash), set -e propaga pra dentro de funções chamadas em if, comportamento histórico diferente do bash 4+/5. Quando python3 socket.bind retornava != 0 (porta ocupada), o script abortava antes de alcançar return $? — usuário via 'saída silenciosa na varredura de portas'. Bash 4+ não tem esse comportamento, por isso passava em Linux. Fix: trocou todo `cmd; return $?` por `if cmd; then return 0; else return 1; fi` (forma POSIX que captura exit code em qualquer versão de bash). Reproduzido e validado.
v0.1.272026-04-27
  • 🐛 Pre-flight de portas travava em macOS com Docker Desktop em wake-up lento. Na 0.1.26, is_our_container_on_port chamava docker ps por porta testada — e find_free_port escaneia até 100 alternativas por service × 6 services = até 600 chamadas no pior caso. Em Mac com Docker Desktop sleeping (1-2s/chamada), pre-flight ficava 10-20 min 'travado'. Fix: docker ps cacheado uma única vez, com timeout de 3s via polling kill -0 (portável pra bash 3.2 macOS, sem depender do timeout do coreutils). Bonus: progress indicator (. a cada 10 portas testadas) em find_free_port pra ninguém mais interpretar como travamento.
v0.1.262026-04-24
  • 🚀 Pre-flight check de portas no install.sh: antes de subir Redis/Neo4j/MinIO/Infinity, verifica se a porta default está livre. Se tiver conflito, sugere a próxima porta livre (aceita S/n/porta custom) ou escolhe sozinha com --auto-port. Os compose.yml agora leem ${ZE_REDIS_PORT:-6379} etc, persistindo a escolha em ~/.config/zepapagaio/env. Novo comando ze portas (alias ports) mostra todas as portas atuais, destacando em amarelo as que divergirem do default.
v0.1.252026-04-23
  • ✨ Duas skills novas em seeds/skills-library/: bash-portability-macos (10 armadilhas concretas quando bash scripts cruzam Linux↔macOS — bash 3.2, BSD vs GNU, flock keg-only, get.docker.com, emoji 4-byte, locale, etc) e docker-multi-arch-and-rosetta (como lidar com imagens amd64-only em Apple Silicon, docker manifest inspect, platform override, quando Rosetta vale a pena). Disponíveis via skill-autopilot em qualquer install novo.
v0.1.242026-04-23
  • 🔧 docker compose up falhava no Apple Silicon com 'no matching manifest for linux/arm64/v8' porque michaelf34/infinity:latest-cpu só tem build amd64. Adicionado platform: linux/amd64 no compose do rag — OrbStack/Docker Desktop rodam via Rosetta 2 em Macs ARM, perda de perf ~2-3x mas imperceptível pra vault pessoal.
v0.1.232026-04-23
  • 🔧 pipx não encontrado derrubava o install do componente testing em macOS. Agora chama pkg_install pipx (brew no mac, apt/dnf/pacman no Linux), com fallback python3 -m pip install --user pipx + export PATH pra contextos sem package manager.
v0.1.222026-04-22
  • 🔧 Root cause descoberto do banner vazio no macOS: atribuir emoji 4-byte literalmente (PARROT_INLINE="🦜") em bash 3.2 sob LC_CTYPE=C produz string vazia. 🦜 é U+1F99C (fora do BMP, 4 bytes UTF-8) — o /bin/bash do macOS não preserva esses bytes em atribuições literais com locale C. Node spawn pode herdar LC_CTYPE=C mesmo quando o terminal é UTF-8. Fix: setar via printf '\xf0\x9f\xa6\x9c' (bytes hex), byte-level, independente de locale.
v0.1.212026-04-22
  • 🔧 Banner renderizava $PARROT_INLINE vazio no macOS. A detecção em 0.1.20 usava elif case ... esac; then inline — sintaxe que o bash 3.2 (default em /bin/bash do macOS) interpreta de forma imprevisível. Reescrito pra bash 3.2-proof + fallback explícito > no topo pra nunca deixar vazio.
v0.1.202026-04-22
  • 🔧 Banner caía no fallback ASCII > em vez do 🦜 mesmo em Macs. A detecção antiga exigia 3 condições (TTY + locale charmap + LANG), e ao rodar via npx o pipe do Node quebrava o check isatty. Fix: macOS sempre usa emoji (Terminal.app/iTerm2/Warp renderizam nativamente desde ~2010); Linux mantém detecção por locale.
v0.1.192026-04-22
  • 🔧 Banner mostrava $PARROT_INLINE literal em vez do emoji 🦜. Heredoc estava com aspas simples (<<'EOF') que bloqueia expansão de variável. Trocado por <<EOF — agora renderiza 🦜 (ou > em terminais sem emoji).
v0.1.182026-04-22
  • 🔧 macOS: date -Iseconds não existe no BSD date. Trocado por date -u +%Y-%m-%dT%H:%M:%SZ em install.sh e scripts/ze — estava gerando timestamp quebrado silenciosamente.
  • 🔧 macOS: sed -i 'X' file não é compatível no BSD sed (BSD exige sed -i '' 'X' file). O rewrite da OBSIDIAN_API_KEY falhava no macOS. Trocado por grep -v + mv — funciona igual em GNU e BSD.
v0.1.172026-04-22
  • 🔧 macOS: install chamava curl get.docker.com | sh que só roda em Linux. Agora detecta macOS e mostra as opções: OrbStack (brew install --cask orbstack) ou Docker Desktop (brew install --cask docker). Nenhum dos dois dá pra automatizar 100% no macOS — exigem aceitar licença e abrir o app pra daemon subir.
  • 🔧 macOS: o check do docker compose plugin tentava baixar o binário Linux. Docker Desktop e OrbStack já trazem docker compose built-in; se não estiver disponível no macOS, agora a mensagem é 'app não rodando, abra o Docker Desktop/OrbStack'.
  • 🔧 macOS: fallback de 'docker não rodando' chamava systemctl start docker, que não existe no macOS. Agora mostra mensagem coerente com a plataforma.
v0.1.162026-04-22
  • 🔧 macOS Apple Silicon: install falhava com 'Falha ao instalar flock'. O Homebrew instala util-linux como keg-only (binários em /opt/homebrew/opt/util-linux/bin, não linkados no PATH) pra evitar colisão com o uuid.h nativo do macOS. O instalador agora detecta macOS e adiciona o keg-only ao PATH da sessão.
  • 🔧 flock agora é opcional. Se não estiver disponível, o install segue com warning e o vault-autocommit roda sem lock — git commit é atômico, no pior caso gera commit redundante. git, curl e python3 continuam obrigatórios.
v0.1.152026-04-22
  • ✨ Novo provider default de embeddings: Infinity local. Container Docker rodando intfloat/multilingual-e5-small (384 dim, multilíngue), sem chave, sem custo, offline. A busca semântica agora é 100% local por padrão.
  • O instalador agora pergunta qual provider de embeddings usar: Infinity local (default) ou OpenAI. Se escolher Infinity, OPENAI_API_KEY vira opcional (só o componente multimodal precisa).
  • 🔧 install.sh agora é idempotente contra containers órfãos — roda docker compose down --remove-orphans antes do up. Resolve conflito de nome quando instalação anterior foi interrompida no meio.
  • 🔧 server.py não adiciona mais /v1 automaticamente ao ZE_EMBED_BASE_URL. Agora o usuário passa o path exato (Infinity v2: sem /v1; OpenAI: https://api.openai.com/v1). Permite apontar pra Ollama, LocalAI e outros backends OpenAI-compatible sem surpresas.
v0.1.142026-04-22
  • 🔒 Segurança: o Neo4j estava fazendo bind em 0.0.0.0 apesar da documentação afirmar que tudo rodava só em loopback. Corrigido em components/graph/docker-compose.yml — as duas portas (7474, 7687) agora fazem bind em 127.0.0.1, alinhadas com Redis e MinIO. Quem estiver rodando 0.1.13 ou anterior em redes não-confiáveis (cafés, coworkings) deve atualizar imediatamente.
  • Adicionado SECURITY.md com canal de disclosure coordenado, versões suportadas e limitações conhecidas (incluindo o caveat dos hooks em escopo de usuário).
  • Adicionado CHANGELOG.md (este aqui) e campos repository/bugs no package.json pra facilitar auditoria de vendor.
  • 🙏 Obrigado ao Pedro Ernesto (analista SOC 2) pelo review de segurança completo que tornou esta release possível.
v0.1.132026-04-13
  • Compatibilidade com Python 3.14: pysqlite3-binary agora usa marker condicional (`python_version < '3.14'`). Em 3.14+ o código cai no fallback de sqlite3 stdlib — Pythons modernos já vêm com enable_load_extension habilitado. Antes, a indexação inicial do vault falhava em Macs com Python 3.14 porque pysqlite3-binary só tem wheels até cp313.
v0.1.122026-04-13
  • Auto-recovery do Neo4j corrigido: o bind mount do componente (não volume nomeado) agora é limpo de verdade quando as credenciais ficam stale
  • Auth check pós-boot via cypher-shell: se a senha do .env não bate com a persistida no volume (Neo4j ignora NEO4J_AUTH em volume não-vazio), o install limpa e sobe de novo automaticamente
v0.1.112026-04-13
  • Auto-recovery: install.sh detecta containers em estado ruim (crashados, volume com credenciais stale) e limpa automaticamente antes de reinstalar
v0.1.102026-04-13
  • Senha do Neo4j agora é gerada automaticamente (32 chars), igual Redis e MinIO — sem prompt confuso de "será criada agora"
v0.1.92026-04-13
  • Validação de senha do Neo4j: exige mínimo 8 caracteres (Neo4j rejeita senhas mais curtas e crashava o container)
v0.1.82026-04-13
  • Timeout do Neo4j aumentado de 60s para 180s (primeiro boot no Docker Desktop do Mac leva mais tempo por causa da virtualização)
  • Heartbeat a cada 30s durante a espera do Neo4j, com detecção de container morto pra evitar wait desnecessário
v0.1.72026-04-13
  • Compatibilidade com bash 3.2 do macOS: corrigido "unbound variable" quando nenhum vault Obsidian era encontrado
  • Removido uso de `local` fora de função que quebrava o fluxo de seleção de múltiplos vaults
v0.1.62026-04-13
  • Emoji 🦜 com fallback ASCII automático para terminais sem suporte a Unicode
v0.1.52026-04-13
  • Auto-instalação de dependências: Docker, uv, Claude Code, Node.js, Obsidian — tudo instalado automaticamente se não encontrado
  • Criação automática do vault Obsidian: detecta vaults existentes ou cria um novo com .obsidian/, plugins, git init e nota de boas-vindas
  • Fix: fallback pysqlite3-binary para Pythons sem enable_load_extension (comum em Ubuntu via apt)
  • Fix: autoMemoryDirectory agora é setado no settings.json — Claude reconhece o Zé após instalação
  • Tela pós-instalação redesenhada: arte ASCII do papagaio, tutorial de uso passo a passo e comandos úteis
  • Vault default renomeado para ~/cofre/ai-zepapagaio para evitar colisão com vaults existentes
v0.1.42026-04-12
  • Compatibilidade com macOS: fallback para realpath -m (flag exclusiva do GNU/Linux)
v0.1.32026-04-12
  • Contador de instalações: ping anônimo no final do install, API no site, exibição na hero
  • Favicon do site trocado pro papagaio verde (antes era o da Vercel)
  • Nav reorganizada: menos itens, sem overflow, menu hamburger no mobile
  • Diagrama de arquitetura na documentação trocado de ASCII pra HTML estilizado
  • Documentação e changelog agora são 100% multilíngue (pt-BR + en completos)
v0.1.22026-04-12
  • Instalador agora detecta o Obsidian e registra automaticamente o servidor MCP do Obsidian
  • Seção de Skills adicionada à landing page do site
  • Páginas de documentação e changelog adicionadas ao site
v0.1.12026-04-11
  • 60 skills seed incluídas (design de API, debugging, Next.js, segurança e mais)
  • Auto-indexação de imagens: hook indexa automaticamente imagens relevantes sem pedir
  • Empacotamento npm — npx zepapagaio init agora funciona direto
v0.1.0Fase 22026-04-11
  • Docker Compose unificado — todos os serviços em um único compose.yml
  • Camada de cache: Redis para caching de chamadas de tool, RAG e API do GitHub
  • Camada de storage: MinIO com buckets para imagens (TTL 30 dias), artefatos de teste e anexos do vault
  • Pipeline multimodal: screenshot → descrição via GPT-4o-mini → nota no vault → índice RAG
  • Testing: Robot Framework + Playwright headless em container isolado
  • Novos hooks: auto-extração de entidades no grafo, auto-indexação de imagens
  • Novos comandos CLI: ze cache, ze imagem, ze testa, ze parar, ze voltar
v0.0.1Fase 12026-04-10
  • vault-rag MCP: busca semântica via embeddings OpenAI + sqlite-vec
  • vault-graph MCP: knowledge graph Neo4j com queries Cypher
  • Hook de autocommit: commits automáticos em git nas mudanças do vault
  • CLI ze: ze status, ze lembra, ze puxa, ze grafo, ze desinstala, ze doctor
  • Arquivos de memória seed: notas iniciais para bootstrap de um vault novo
  • Integração com Obsidian MCP (opcional, requer plugin Local REST API)