本プロジェクトの変更履歴を Keep a Changelog の形式に沿って記録します。バージョン番号は Semantic Versioning に従います。
devbase up後に dev コンテナへ接続した VS Code を自動オープンできるように しました (PLAN31_3)。DEVBASE_OPEN_EDITOR=1(既定 OFF)で有効化、devbase up --open/--no-openで都度上書き。/work/$GIT_REPOをワークスペースとして開きます。 ローカル / WSL(Windows 側)/ VS Code Remote-SSH 統合ターミナル(手元クライアント側) を自動判別し、素の SSH では手元で実行するコマンドを提示します。エディタはDEVBASE_EDITOR(既定code)で変更可能。詳細:docs/user/environment-variables.md。devbase buildに--expires[=DAYS]を追加しました (i07)。イメージ作成日が DAYS 日(既定 7、DEVBASE_IMAGE_MAX_AGE_DAYSで上書き可)以上のときのみ no-cache で 再ビルドし、未満なら再ビルドしません(既存イメージを使用)。親イメージ(FROM devbase-*)の 作成日は独立して判定します。devbase buildの--no-cacheも明示フラグとして整理しました。
build/rebuild/upの再ビルド仕様を統一しました (i07)。キャッシュの 扱いを 3 モード(既定=キャッシュビルド /--no-cache=無条件 no-cache /--expires=N= 期限切れ時のみ no-cache・期限内は再ビルドしない)に整理し、devbase rebuildをdevbase build --expires=7のシノニムに、devbase upの自動準備をそのrebuild相当に 集約しました。devbase rebuildは従来の素のdocker compose build --no-cacheをやめ、 devbase-base の 2 段ビルドと期限判定(期限内はスキップ)を行うようになりました。devbase upの「7 日未満は再ビルドしない」挙動は従来どおり維持されます。devbase upの自動再ビルドで base イメージの日付判定を分離しました。 プロジェクトイメージが閾値(既定 7 日)超過で--no-cache再ビルドされる際、 ベースの作成日を独立して判定し、ベースが閾値内(新しい)であればベースを no-cache で 作り直さず、プロジェクトイメージのみ no-cache で再ビルドします。ベースが古い、または 判定できない場合はベースも含めて no-cache で再ビルドします。- シェル有効化を
bin/rcの source に統一しました (PLAN31_1)。devbase init後に いま開いているシェルへ devbase(PATH / 補完)を即時適用するには. ~/devbase/bin/rc(=source ~/devbase/bin/rc)を使います。bin/rcは自身の 場所からDEVBASE_ROOTを解決するため、Python(uv)起動もコマンド置換$(...)も不要になり、ワンライナーはcurl -fsSL https://dl.basex.jp/i | bash && . ~/devbase/bin/rcで現在のシェルまで 有効化できます。
devbase shell-rcサブコマンドを廃止しました (PLAN31_1, 破壊的変更)。rc ファイル パスを print してsource "$(devbase shell-rc)"する方式は、上記の. bin/rcに 置き換えました。source "$(devbase shell-rc)"を使っているスクリプトは. <DEVBASE_ROOT>/bin/rcに書き換えてください。
- ワンライナー installer (
install.sh) を新設しました (PLAN31_1)。curl -fsSL https://dl.basex.jp/i | bashで~/devbaseへの clone(既存ならgit pull --ff-only)とdevbase initまで 自動完了します(uv の自動導入・PATH/補完の登録・plugins.yml生成を含む)。- 配置先 / clone 元 / ref を
DEVBASE_INSTALL_DIR/DEVBASE_INSTALL_REPO/DEVBASE_INSTALL_REFで上書きできます。DEVBASE_INSTALL_REFは branch/tag 名 として妥当な文字のみ許可し、オプション注入を防ぎます。 - 非 TTY (
curl | bash) で対話プロンプトを出しません。env initは対話必須のため 実行せず、完了後に次の手順(shell-rc再読み込み /plugin install/env init/build/up/login)を案内します。 - 配置先が devbase 以外の非空ディレクトリの場合は誤上書きを避けて中止します。
- CI に
install.shの ShellCheck (severity=error) を追加しました。
- 配置先 / clone 元 / ref を
devbase listの対話選択を TUI 化しました。questionary導入により、↑↓ の 矢印キーで行移動、文字入力でプロジェクト名のインクリメンタル絞り込みができます (全項目に通し番号を表示)。Enter で決定、Ctrl-C で中止します。- 選択行が起動中 (running) の場合は「再起動 (up) / 再ビルド (rebuild --no-cache) /
停止 (down)」を選ぶサブメニューを表示します。それ以外 (stopped / unknown) は
従来どおり
upを起動します。 - 非 TTY(パイプ/CI/リダイレクト)では従来どおりプレーンな一覧表示にフォールバック
し、
questionary未導入環境では番号入力方式にフォールバックします。 - 入力ライブラリを
simple-term-menuからquestionary(prompt_toolkit ベース) へ 移行し、↑長押し時にスクロールが取りこぼされて遅くなる問題を解消しました。
- 選択行が起動中 (running) の場合は「再起動 (up) / 再ビルド (rebuild --no-cache) /
停止 (down)」を選ぶサブメニューを表示します。それ以外 (stopped / unknown) は
従来どおり
devbase rebuildコマンドを新設しました。docker compose build --no-cache相当で、 キャッシュを無効化してプロジェクト (compose) イメージを作り直します。devbase rebuild [name]/devbase project rebuild [name]として任意のディレクトリから利用できます (devbase listの running サブメニューからも起動できます)。なおdevbase-baseまで 作り直す 2 段ビルドは従来どおりdevbase build --no-cacheを使用してください。devbase projectサブコマンド群を新設しました (PLAN06)。CWD に依存せずプロジェクト名でコンテナ操作ができます。devbase project up/down/ps/logs/scale [name]で、任意のディレクトリから$DEVBASE_ROOT/projects/<name>を対象に操作できます。名前解決はラッパー (bin/devbase) が対象ディレクトリへcdしてから実行するため、シェル実装のbuildを含む全操作が名前指定で成立します(呼び出し元シェルの作業ディレクトリは変わりません)。存在しない名前はエラーになり候補が提示されます。devbase project listで$DEVBASE_ROOT/projects/配下をNAME/PLUGIN/STATUSの一覧表示します。PLUGIN列はシンボリックリンク先から解決するため、PLAN04 の同名衝突 suffix(例carmo.takemi)が付いていても正しいプラグイン名を表示します。TTY ではデフォルトで対話選択になり、一覧から番号で選んだプロジェクトをproject upで起動します。--no-interactive(--plain/-P)で一覧表示のみに切り替えられ、パイプ・リダイレクト・CI などの非 TTY 環境では自動的に一覧表示へフォールバックします(--interactive/-iは後方互換として引き続き受け付けます)。- トップレベルシノニム
devbase up/down/ps/scale [name]/devbase build [image]/devbase login [index]/devbase listを整備しました(logsはシノニムを持たずdevbase project logsのみ)。 - bash / zsh のシェル補完に
projectグループとプロジェクト名補完($DEVBASE_ROOT/projects/配下を列挙)を追加しました。 - 利用者向けドキュメント
docs/user/cli-reference.md/docs/user/container-operations.mdをproject体系に更新しました。
devbase env export/devbase env importで S3 URI (s3://bucket/key) を入出力先として指定できるようになりました (PLAN03-1 PR3)。- 既定でオブジェクト単位の SSE (
aws:kmsまたはAES256) を強制し、export 時はバケット側のデフォルト暗号化もGetBucketEncryptionで事前確認します。 - 暗号化が未設定のバケットへ export する場合は
--unsafe-allow-unencrypted-bucketの明示が必要です (オブジェクト単位の SSE はこのフラグに関係なく常に付与されます)。 - SSE 種別 (
DEVBASE_S3_SSE) / KMS 鍵 (DEVBASE_S3_SSE_KMS_KEY_ID) / エンドポイント (DEVBASE_S3_ENDPOINT_URL) / リージョン (DEVBASE_S3_REGION) は環境変数で上書きできます。MinIO / LocalStack の利用も可能です。 boto3は main dependency として常に同梱されます (S3 を使わないユーザにも 25MB 程度入りますが、引数検出や lazy install の複雑さを避けるトレードオフです)。
- 既定でオブジェクト単位の SSE (
devbase env export/devbase env importの利用者向けドキュメントdocs/user/env-export-import.mdを新設しました (PLAN03-1 PR5)。- バンドル構造、age 暗号化 (recipient / identity / passphrase)、入出力先 (local / stdio / S3)、merge モード比較、
.env.sources.ymlの扱い、2 フェーズ書き込みとバックアップ、典型ワークフロー、トラブルシューティングまでを網羅します。 - README と環境変数ガイドからのリンクも追加しました。
- バンドル構造、age 暗号化 (recipient / identity / passphrase)、入出力先 (local / stdio / S3)、merge モード比較、
devbase containerグループを非推奨化しました (PLAN06)。devbase container <sub>はdevbase project <sub>のエイリアスとして当面動作しますが、実行時に非推奨警告を表示します(移行期間後のリリースで削除予定)。[name]指定やlistなどの新機能はproject側のみで提供されます。トップレベルショートカット (devbase up等) の転送先もcontainerからprojectへ変更しました。gs://(GCS) スキームは PLAN03-1 PR4 廃案 により対応しません。指定すると明示的なエラーメッセージで失敗します (旧: "未実装")。lib/devbase/env/配下の export / import モジュールをリファクタリングしました (PLAN03-1 PR5)。公開 API (ExportOptions,ImportOptions,export,import_bundle) に互換性のない変更はありません。- export / import で重複していた passphrase 読み取り / 既定鍵 fallback / セキュアな bytes 書き込みを
io_common.pyに集約。 - 711 行に肥大化していた
io_import.pyを「orchestration (io_import.py, 209 行)」「merge 計画 (_import_merge.py)」「2 フェーズ atomic 書き込み + backup GC (_import_atomic.py)」の 3 モジュールに分割。
- export / import で重複していた passphrase 読み取り / 既定鍵 fallback / セキュアな bytes 書き込みを
2.2.0 - 2026-04-20
OSS 化に伴う初回リリース。devbase は本バージョンより devbasex Organization 配下で公開されます。
- MIT License
- プラグインマーケットの概念導入。任意のレジストリを
devbase plugin repo addで追加可能。 - 公式サンプルレジストリ
devbasex/devbase-samples(adminer / ai-plugins / devbase を収録)。 - PHP 8.5 ベースの開発コンテナ(
containers/php85)。 - スナップショットの差分回数ベースの世代管理。
GIT_HOST環境変数による Git ホストの切り替えサポート。
DEFAULT_OFFICIAL_REGISTRYをdevbasex/devbase-samples.gitに変更。- README / docs 内のリポジトリ参照を
devbasex/devbaseに更新。 - ドキュメント体系を
docs/user,docs/plugin-dev,docs/developerに再編。
- 「公式レジストリ」固定の概念を廃止。各レジストリは対等な扱いとなる。