Changelog

Version history and changes for Zé Papagaio.

v0.1.29latest2026-04-27
  • 🐛 インストーラーが「必要なポートを確認中...」で静かに終了し続けていた — 0.1.28 のフィックスでカバーできなかった 3 箇所。bash 3.2 macOS の `set -e` 伝播バグは populate_docker_ps_cache (`[ "$ZE_DOCKER_PS_CACHE_LOADED" = "1" ] && return 0` が初回呼び出しで失敗、**すべての** fresh install に影響)、find_existing_vaults (同じ形式、Obsidian vault がない user に影響)、そして CONFIG_ENV を読むポート再利用 for-loop (`__existing=$(grep | pipe)` が pipefail で grep がキーを見つけられないと中断) に出現。すべて `if cmd; then return 0; fi` + pipe に `|| true` に置き換え。ボーナス: npm-wrapper に `prepublishOnly` guard を追加 — 既知の 2 つのパターンの回帰を検出すると publish を拒否。
v0.1.282026-04-27
  • 🐛 macOS で最初のデフォルトポートが使用中のとき、インストーラーが静かに終了していた — 0.1.27 では対応できなかった重大なバグ。check_port_free は `cmd; return $?` を使用していた — macOS の bash 3.2 (default /bin/bash) では、set -e が if で呼ばれた関数内に伝播する (bash 4+/5 とは異なる歴史的な動作)。python3 socket.bind が != 0 を返す (ポート使用中) と、return $? に到達する前にスクリプトが中断 — ユーザーには「ポートスキャン中の静かな終了」として見えた。bash 4+ にはこの動作がないため Linux ではパスしていた。修正: 全ての `cmd; return $?` を `if cmd; then return 0; else return 1; fi` (POSIX 形式、どの bash バージョンでも exit code を捕捉) に置き換え。再現と検証済み。
v0.1.272026-04-27
  • 🐛 macOS で Docker Desktop の起動が遅い場合にポートの事前チェックがフリーズしていた。0.1.26 では is_our_container_on_port がテストされたポートごとに docker ps を呼び、find_free_port は service あたり最大 100 の代替を × 6 services = 最悪 600 回の呼び出しをスキャン。Docker Desktop が sleeping している macOS では (1-2秒/回)、pre-flight が 10-20 分間「ハング」していた。修正: docker ps を 1 回だけキャッシュし、kill -0 ポーリングで 3 秒タイムアウト (bash 3.2 macOS にポータブル、coreutils の timeout に依存しない)。ボーナス: find_free_port に進捗インジケーター (テストされた 10 ポートごとに .) を追加し、誰もハングと誤解しないように。
v0.1.262026-04-24
  • 🚀 install.sh でポートの事前チェック: Redis/Neo4j/MinIO/Infinity を起動する前にデフォルトポートが空いているか確認。競合があれば次の空きポートを提案 (Y/n/カスタム) するか、--auto-port で自動選択。compose.yml は ${ZE_REDIS_PORT:-6379} などを読み、選択は ~/.config/zepapagaio/env に保存。新コマンド ze portas (エイリアス ports) で現在のポートを一覧表示し、デフォルトと異なるものを強調します。
v0.1.252026-04-23
  • ✨ seeds/skills-library/ に 2 つの新しいスキル: bash-portability-macos(bash スクリプトが Linux↔macOS をまたぐときの 10 の具体的な罠 — bash 3.2、BSD vs GNU、flock keg-only、get.docker.com、4 バイト絵文字、ロケールなど)と docker-multi-arch-and-rosetta(Apple Silicon 上で amd64 専用イメージを扱う方法、docker manifest inspect、platform override、Rosetta がいつ価値あるか)。新規インストールでは skill-autopilot 経由で利用可能。
v0.1.242026-04-23
  • 🔧 Apple Silicon で docker compose up が 'no matching manifest for linux/arm64/v8' で失敗していました(michaelf34/infinity:latest-cpu は amd64 ビルドのみ)。rag compose に platform: linux/amd64 を追加 — ARM Mac では OrbStack/Docker Desktop が Rosetta 2 で実行、パフォーマンス低下は ~2-3 倍ですが個人 vault では気になりません。
v0.1.232026-04-23
  • 🔧 pipx が見つからず macOS で testing コンポーネントのインストールが失敗していました。pkg_install pipx(mac では brew、Linux では apt/dnf/pacman)を呼び出すように変更し、パッケージマネージャーがない環境用に python3 -m pip install --user pipx + PATH エクスポートのフォールバックを追加。
v0.1.222026-04-22
  • 🔧 macOS でバナーが空になる根本原因を特定: bash 3.2 の LC_CTYPE=C 下で 4 バイト絵文字リテラル(PARROT_INLINE="🦜")を代入すると空文字列になることがあります。🦜 は U+1F99C(BMP 外、UTF-8 で 4 バイト)— macOS の /bin/bash はロケールが C のとき、リテラル代入でこれらのバイトを保持しません。ターミナルが UTF-8 でも Node spawn が LC_CTYPE=C を継承する可能性があります。修正: printf '\xf0\x9f\xa6\x9c'(生の 16 進バイト)で設定、ロケール非依存。
v0.1.212026-04-22
  • 🔧 macOS でバナーが $PARROT_INLINE を空で表示。0.1.20 の検出は inline の elif case ... esac; then を使用していましたが、bash 3.2(macOS の /bin/bash のデフォルト)は予測不能にパースします。bash 3.2 対応のコードに書き直し、トップで > の明示的フォールバックを設定して空にならないようにしました。
v0.1.202026-04-22
  • 🔧 Mac でもバナーが 🦜 の代わりに ASCII フォールバック > に落ちていました。旧検出は 3 条件(TTY + locale charmap + LANG)を同時に要求していましたが、npx 経由だと Node のパイプで isatty チェックが壊れていました。修正: macOS では常に絵文字を使用(Terminal.app/iTerm2/Warp は ~2010 年以降ネイティブにレンダリング)。Linux はロケールベース検出を維持。
v0.1.192026-04-22
  • 🔧 バナーが 🦜 絵文字の代わりに $PARROT_INLINE をリテラルで表示していました。heredoc がシングルクオート(<<'EOF')になっていて bash の変数展開がブロックされていました。<<EOF に変更 — 🦜(絵文字非対応ターミナルでは >)が表示されます。
v0.1.182026-04-22
  • 🔧 macOS: date -Iseconds は BSD date に存在しません。install.sh と scripts/ze で portable な date -u +%Y-%m-%dT%H:%M:%SZ に置き換え — 壊れたタイムスタンプが静かに生成されていました。
  • 🔧 macOS: sed -i 'X' file は BSD sed と非互換(BSD は sed -i '' 'X' file が必要)。OBSIDIAN_API_KEY の書き換えが macOS で失敗していました。grep -v + mv に置き換え、GNU と BSD で同じ動作。
v0.1.172026-04-22
  • 🔧 macOS: インストールが curl get.docker.com | sh を呼び出していました(Linux 専用)。macOS を検出して 2 つの選択肢を表示: OrbStack(brew install --cask orbstack)または Docker Desktop(brew install --cask docker)。どちらも macOS では完全自動化できません — ライセンス同意とアプリ起動(デーモン開始のため)が必要です。
  • 🔧 macOS: docker compose プラグインチェックが Linux バイナリをダウンロードしようとしていました。Docker Desktop と OrbStack には docker compose が組み込まれています。macOS で利用不可の場合、メッセージは「アプリが起動していません、Docker Desktop/OrbStack を開いてください」に変更。
  • 🔧 macOS: 「docker が動作していない」のフォールバックが systemctl start docker を呼んでいました(macOS には存在しません)。プラットフォームに合ったメッセージを表示するように修正。
v0.1.162026-04-22
  • 🔧 macOS Apple Silicon でインストールが 'Falha ao instalar flock' で失敗していました。Homebrew は macOS 標準の uuid.h との競合を避けるため util-linux を keg-only でインストールします(バイナリは /opt/homebrew/opt/util-linux/bin にあるが PATH には追加されない)。インストーラーが macOS を検出して keg-only ディレクトリをセッションの PATH に追加するようになりました。
  • 🔧 flock がオプションになりました。利用できない場合は警告を出してインストールを続行し、vault-autocommit はロックなしで動作します — git commit はアトミックなので、最悪でも冗長なコミットが発生するだけです。git、curl、python3 は引き続き必須です。
v0.1.152026-04-22
  • ✨ 埋め込みのデフォルトプロバイダーを新設: ローカル Infinity。Docker コンテナで intfloat/multilingual-e5-small(384次元、多言語)を実行。APIキー不要、追加コストなし、オフライン動作。セマンティック検索はデフォルトで100%ローカルに。
  • インストーラーで埋め込みプロバイダーを選べるようになりました: ローカル Infinity(デフォルト)または OpenAI。Infinity を選ぶと OPENAI_API_KEY は任意になります(multimodal コンポーネントのみ必要)。
  • 🔧 install.sh が孤立コンテナに対して冪等になりました — up の前に docker compose down --remove-orphans を実行します。前回のインストールが途中で中断された場合の名前衝突を解決します。
  • 🔧 server.py が ZE_EMBED_BASE_URL に自動で /v1 を追加しなくなりました。ユーザーがプロバイダーの期待するパスを正確に指定します(Infinity v2: /v1 なし、OpenAI: https://api.openai.com/v1)。Ollama、LocalAI など他の OpenAI 互換バックエンドへの接続も想定通りに動きます。
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)