Changelog
Version history and changes for Zé Papagaio.
v0.1.29latest2026-04-27
- •🐛 Installer beendete sich weiterhin stillschweigend bei 'Prüfe benötigte Ports...' — in 3 weiteren Stellen, die der 0.1.28-Fix nicht abdeckte. Der bash 3.2 `set -e`-Propagations-Bug erschien in populate_docker_ps_cache (`[ "$ZE_DOCKER_PS_CACHE_LOADED" = "1" ] && return 0` versagte beim ersten Aufruf, betrifft JEDE frische Installation), in find_existing_vaults (gleiche Form, betrifft Nutzer ohne vorheriges Obsidian-Vault) und in der Port-Wiederverwendung-For-Schleife, die CONFIG_ENV liest (`__existing=$(grep | pipe)` mit pipefail brach ab, wenn grep den Schlüssel nicht fand). Alle durch `if cmd; then return 0; fi` + `|| true` auf dem Pipe ersetzt. Bonus: `prepublishOnly`-Guard in npm-wrapper hinzugefügt, der Publish ablehnt, wenn eine Regression der 2 bekannten Patterns erkannt wird.
v0.1.282026-04-27
- •🐛 Installer beendete sich stillschweigend auf macOS, wenn der erste Standard-Port belegt war — kritischer Bug, den 0.1.27 nicht abdeckte. check_port_free nutzte `cmd; return $?` — in macOS bash 3.2 (default /bin/bash) propagiert set -e in Funktionen, die in if aufgerufen werden, historisches Verhalten anders als bash 4+/5. Wenn python3 socket.bind != 0 zurückgab (Port belegt), brach das Skript ab, bevor return $? erreicht wurde — Nutzer sah 'stiller Ausstieg beim Port-Scan'. Bash 4+ hat dieses Verhalten nicht, daher lief es unter Linux durch. Fix: `cmd; return $?` durch `if cmd; then return 0; else return 1; fi` ersetzt (POSIX-Form, erfasst Exit-Code in jeder Bash-Version). Reproduziert und validiert.
v0.1.272026-04-27
- •🐛 Port-Pre-Flight blieb auf macOS mit langsam aufwachendem Docker Desktop hängen. In 0.1.26 rief is_our_container_on_port docker ps pro getestetem Port auf — und find_free_port scannt bis zu 100 Alternativen pro Service × 6 Services = bis zu 600 Aufrufe im schlimmsten Fall. Auf macOS mit schlafendem Docker Desktop (1-2s/Aufruf) blieb das Pre-Flight 10-20 Min hängen. Fix: docker ps wird einmal gecacht, mit 3s-Timeout über kill -0-Polling (portabel zu bash 3.2 macOS, ohne Abhängigkeit vom coreutils-timeout). Bonus: Fortschrittsanzeige (. alle 10 getesteten Ports) in find_free_port, damit niemand mehr denkt, es hängt.
v0.1.262026-04-24
- •🚀 Port-Pre-Flight in install.sh: Vor dem Start von Redis/Neo4j/MinIO/Infinity wird geprüft, ob der Standardport frei ist. Bei Konflikt wird der nächste freie Port vorgeschlagen (J/n/eigener Port) oder mit --auto-port automatisch gewählt. compose.yml liest jetzt ${ZE_REDIS_PORT:-6379} etc.; die Wahl bleibt in ~/.config/zepapagaio/env erhalten. Neuer Befehl ze portas (Alias ports) listet alle aktuellen Ports und hebt Abweichungen vom Standard hervor.
v0.1.252026-04-23
- •✨ Zwei neue Skills in seeds/skills-library/: bash-portability-macos (10 konkrete Fallen beim Cross-Betrieb von bash-Skripten Linux↔macOS — bash 3.2, BSD vs GNU, flock keg-only, get.docker.com, 4-Byte-Emoji, Locale usw.) und docker-multi-arch-and-rosetta (Umgang mit amd64-only Images auf Apple Silicon, docker manifest inspect, Platform-Override, wann sich Rosetta lohnt). Verfügbar über skill-autopilot bei jeder frischen Installation.
v0.1.242026-04-23
- •🔧 docker compose up schlug auf Apple Silicon mit 'no matching manifest for linux/arm64/v8' fehl, weil michaelf34/infinity:latest-cpu nur einen amd64-Build hat. platform: linux/amd64 zum rag-Compose hinzugefügt — OrbStack/Docker Desktop laufen auf ARM Macs via Rosetta 2, ~2-3x Performance-Einbuße aber unmerklich für persönliche Vault-Nutzung.
v0.1.232026-04-23
- •🔧 pipx nicht gefunden brach die Installation der testing-Komponente auf macOS ab. Ruft jetzt pkg_install pipx (brew auf mac, apt/dnf/pacman auf Linux) mit Fallback auf python3 -m pip install --user pipx + PATH-Export für Umgebungen ohne Paketmanager.
v0.1.222026-04-22
- •🔧 Root Cause des leeren Banners auf macOS gefunden: Zuweisung eines 4-Byte-Emoji-Literals (PARROT_INLINE="🦜") in bash 3.2 unter LC_CTYPE=C kann eine leere Zeichenkette erzeugen. 🦜 ist U+1F99C (außerhalb BMP, 4 Bytes UTF-8) — macOS /bin/bash bewahrt diese Bytes in literalen Zuweisungen nicht, wenn das Locale C ist. Node spawn kann LC_CTYPE=C erben, selbst wenn das Terminal UTF-8 ist. Fix: via printf '\xf0\x9f\xa6\x9c' setzen (rohe Hex-Bytes), locale-unabhängig.
v0.1.212026-04-22
- •🔧 Banner zeigte $PARROT_INLINE leer auf macOS. Die Erkennung in 0.1.20 verwendete inline elif case ... esac; then — eine Syntax, die bash 3.2 (immer noch Standard in /bin/bash auf macOS) unvorhersehbar parst. Neu geschrieben als bash-3.2-sicher mit explizitem > Fallback, damit die Variable nie leer ist.
v0.1.202026-04-22
- •🔧 Das Banner fiel selbst auf Macs auf den ASCII-Fallback > statt 🦜 zurück. Die alte Erkennung verlangte 3 Bedingungen (TTY + locale charmap + LANG), und bei npx zerbrach die Node-Pipe den isatty-Check. Fix: macOS nutzt immer Emoji (Terminal.app/iTerm2/Warp rendern es nativ seit ~2010); Linux behält die Locale-basierte Erkennung.
v0.1.192026-04-22
- •🔧 Das Banner zeigte $PARROT_INLINE wörtlich statt des 🦜-Emojis. Das Heredoc hatte einfache Anführungszeichen (<<'EOF'), die Variablen-Expansion in bash blockieren. Ersetzt durch <<EOF — jetzt wird 🦜 gerendert (oder > in Terminals ohne Emoji-Support).
v0.1.182026-04-22
- •🔧 macOS: date -Iseconds existiert in BSD date nicht. Ersetzt durch date -u +%Y-%m-%dT%H:%M:%SZ in install.sh und scripts/ze — erzeugte stillschweigend kaputte Timestamps.
- •🔧 macOS: sed -i 'X' file ist in BSD sed inkompatibel (BSD braucht sed -i '' 'X' file). Der OBSIDIAN_API_KEY-Rewrite schlug unter macOS fehl. Ersetzt durch grep -v + mv — identisches Verhalten in GNU und BSD.
v0.1.172026-04-22
- •🔧 macOS: Installation rief curl get.docker.com | sh auf, das nur unter Linux funktioniert. Erkennt jetzt macOS und zeigt zwei Optionen: OrbStack (brew install --cask orbstack) oder Docker Desktop (brew install --cask docker). Keins lässt sich auf macOS vollautomatisieren — beide brauchen Lizenz-Akzeptanz und App-Start, damit der Daemon läuft.
- •🔧 macOS: Die docker compose Plugin-Prüfung wollte das Linux-Binary herunterladen. Docker Desktop und OrbStack liefern docker compose mit. Fehlt es unter macOS, sagt die Meldung jetzt 'App läuft nicht, öffne Docker Desktop/OrbStack'.
- •🔧 macOS: Der 'Docker läuft nicht'-Fallback rief systemctl start docker auf, das es unter macOS nicht gibt. Meldung jetzt plattformgerecht.
v0.1.162026-04-22
- •🔧 macOS Apple Silicon: Installation schlug mit 'Falha ao instalar flock' fehl. Homebrew installiert util-linux als keg-only (Binaries in /opt/homebrew/opt/util-linux/bin, nicht im PATH) wegen Konflikt mit macOS-eigenem uuid.h. Der Installer erkennt jetzt macOS und fügt das keg-only-Verzeichnis dem Session-PATH hinzu.
- •🔧 flock ist jetzt optional. Ist es nicht verfügbar, läuft die Installation mit Warnung weiter und vault-autocommit ohne Lock — git commit ist atomar, im schlimmsten Fall ein redundanter Commit. git, curl, python3 bleiben Pflicht.
v0.1.152026-04-22
- •✨ Neuer Standard-Embeddings-Provider: lokales Infinity. Docker-Container mit intfloat/multilingual-e5-small (384 dim, mehrsprachig), ohne API-Key, ohne laufende Kosten, offline. Semantische Suche läuft jetzt standardmäßig 100% lokal.
- •Der Installer fragt jetzt, welcher Embeddings-Provider verwendet werden soll: lokales Infinity (Standard) oder OpenAI. Wird Infinity gewählt, ist OPENAI_API_KEY optional (nur die multimodal-Komponente benötigt sie).
- •🔧 install.sh ist jetzt idempotent gegenüber verwaisten Containern — führt docker compose down --remove-orphans vor up aus. Löst Namenskonflikte, wenn eine vorherige Installation abgebrochen wurde.
- •🔧 server.py hängt nicht mehr automatisch /v1 an ZE_EMBED_BASE_URL an. Der Benutzer gibt den exakten Pfad an, den der Provider erwartet (Infinity v2: kein /v1; OpenAI: https://api.openai.com/v1). Ermöglicht Verbindungen zu Ollama, LocalAI und anderen OpenAI-kompatiblen Backends ohne Überraschungen.
v0.1.142026-04-22
- •🔒 Security: Neo4j was previously bound to 0.0.0.0 despite docs stating loopback-only. Fixed in components/graph/docker-compose.yml — both ports (7474, 7687) now bind to 127.0.0.1, matching Redis and MinIO. Users running 0.1.13 or earlier on untrusted networks (cafés, coworking WiFi) should update immediately.
- •Added SECURITY.md with coordinated disclosure channel, supported versions, and known limitations (including the user-wide hook scope caveat).
- •Added CHANGELOG.md (this file) and repository/bugs fields in package.json for vendor auditability.
- •🙏 Thanks to Pedro Ernesto (SOC 2 analyst) for the comprehensive security review that made this release possible.
v0.1.132026-04-13
- •Python 3.14 compatibility: pysqlite3-binary now uses a conditional marker (`python_version < '3.14'`). On 3.14+ the code falls back to stdlib sqlite3 — modern Pythons already ship with enable_load_extension. Before this fix, initial vault indexing would fail on Macs running Python 3.14 because pysqlite3-binary only has wheels up to cp313.
v0.1.122026-04-13
- •Neo4j auto-recovery fixed: component bind mount (not a named volume) is now actually cleaned when credentials go stale
- •Post-boot auth check via cypher-shell: if the .env password does not match the one persisted in the volume (Neo4j ignores NEO4J_AUTH on non-empty volumes), the installer resets and restarts automatically
v0.1.112026-04-13
- •Auto-recovery: install.sh detects containers in bad state (crashed, volumes with stale credentials) and cleans them up before reinstalling
v0.1.102026-04-13
- •Neo4j password is now generated automatically (32 chars), like Redis and MinIO — no more confusing "will be created now" prompt
v0.1.92026-04-13
- •Neo4j password validation: requires a minimum of 8 characters (Neo4j rejects shorter passwords and would crash the container)
v0.1.82026-04-13
- •Neo4j startup timeout bumped from 60s to 180s (first boot on Mac Docker Desktop takes longer due to virtualization)
- •Heartbeat every 30s while waiting for Neo4j, with dead-container detection to avoid unnecessary waits
v0.1.72026-04-13
- •macOS bash 3.2 compatibility: fixed "unbound variable" error when no Obsidian vault was found
- •Removed `local` usage outside functions that broke the multi-vault selection flow
v0.1.62026-04-13
- •Parrot emoji 🦜 with automatic ASCII fallback for terminals without Unicode support
v0.1.52026-04-13
- •Auto-install dependencies: Docker, uv, Claude Code, Node.js, Obsidian — all installed automatically if missing
- •Automatic Obsidian vault creation: detects existing vaults or creates a new one with .obsidian/, plugins, git init, and welcome note
- •Fix: pysqlite3-binary fallback for Pythons without enable_load_extension (common on Ubuntu via apt)
- •Fix: autoMemoryDirectory now set in settings.json — Claude recognizes Zé after install
- •Post-install screen redesigned: parrot ASCII art, step-by-step usage tutorial, and useful commands
- •Default vault renamed to ~/cofre/ai-zepapagaio to avoid collision with existing vaults
v0.1.42026-04-12
- •macOS compatibility: fallback for realpath -m (GNU/Linux-only flag)
v0.1.32026-04-12
- •Install counter: anonymous ping at end of install, API on site, live display in hero
- •Site favicon replaced with green parrot icon (was Vercel default)
- •Nav reorganized: fewer items, no overflow, hamburger menu on mobile
- •Architecture diagram in docs replaced from ASCII to styled HTML cards
- •Docs and changelog are now fully multilingual (pt-BR + en complete)
v0.1.22026-04-12
- •Installer now detects Obsidian and auto-registers the obsidian MCP server
- •Skills section added to the website landing page
- •Documentation and changelog pages added to the site
v0.1.12026-04-11
- •60 seed skills shipped (API design, debugging, Next.js, security, and more)
- •Auto-index images: hook automatically indexes relevant images without asking
- •npm packaging — npx zepapagaio init now works out of the box
v0.1.0Phase 22026-04-11
- •Unified Docker Compose — all services in a single compose.yml
- •Cache layer: Redis for tool call, RAG, and GitHub API caching
- •Storage layer: MinIO with buckets for images (30d TTL), test artifacts, and vault attachments
- •Multimodal pipeline: screenshot → GPT-4o-mini description → vault note → RAG index
- •Testing: Robot Framework + headless Playwright in isolated container
- •New hooks: auto-extract graph entities, auto-index images
- •New CLI commands: ze cache, ze imagem, ze testa, ze parar, ze voltar
v0.0.1Phase 12026-04-10
- •vault-rag MCP: semantic search via OpenAI embeddings + sqlite-vec
- •vault-graph MCP: Neo4j knowledge graph with Cypher queries
- •Autocommit hook: automatic git commits on vault changes
- •CLI ze: ze status, ze lembra, ze puxa, ze grafo, ze desinstala, ze doctor
- •Seed memory files: initial notes for bootstrapping a new vault
- •Obsidian MCP integration (optional, requires Local REST API plugin)