From 374966c06ec08f520fe6184e3e579f7e3872ab8b Mon Sep 17 00:00:00 2001 From: Musa Date: Wed, 3 Jun 2026 14:55:15 -0700 Subject: [PATCH] release 0.4.23 (#963) * release 0.4.23 Co-authored-by: Musa * release 0.4.23 Co-authored-by: Musa * ci: seed ~/.plano cache for zero-config smoke test on release-bump PRs --------- Co-authored-by: Cursor Agent --- .github/workflows/ci.yml | 23 +++++++++++++++++-- apps/www/src/components/Hero.tsx | 2 +- build_filter_image.sh | 2 +- cli/planoai/__init__.py | 2 +- cli/planoai/consts.py | 2 +- cli/pyproject.toml | 2 +- cli/uv.lock | 2 +- .../preference_based_routing/README.md | 2 +- docs/source/conf.py | 2 +- docs/source/get_started/quickstart.rst | 4 ++-- docs/source/resources/deployment.rst | 4 ++-- 11 files changed, 33 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4d980ec8..bfe57eab 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -110,6 +110,25 @@ jobs: # ── Zero-config path: `planoai up` with no args, no plano.yaml in cwd. # Exercises the synthesize_default_config branch in cli/planoai/main.py # which is otherwise never hit by the smoke test above. + # + # Pre-seed ~/.plano/ from the freshly-built artifacts so the CLI's + # cached-download path hits in step (2) of ensure_wasm_plugins / + # ensure_brightstaff_binary. Without this, running from outside the + # repo means find_repo_root() returns None, the local-build short- + # circuit is skipped, and the CLI tries to download from a GitHub + # release that does not yet exist for the in-flight version on + # release-bump PRs (e.g. 0.4.23 before publish-binaries has run). + - name: Seed ~/.plano cache for zero-config test + run: | + VERSION=$(sed -nE 's/^__version__ = "(.*)"$/\1/p' cli/planoai/__init__.py) + mkdir -p ~/.plano/plugins ~/.plano/bin + cp crates/target/wasm32-wasip1/release/prompt_gateway.wasm ~/.plano/plugins/ + cp crates/target/wasm32-wasip1/release/llm_gateway.wasm ~/.plano/plugins/ + cp crates/target/release/brightstaff ~/.plano/bin/ + chmod +x ~/.plano/bin/brightstaff + echo "$VERSION" > ~/.plano/plugins/wasm.version + echo "$VERSION" > ~/.plano/bin/brightstaff.version + - name: Zero-config smoke test env: OPENAI_API_KEY: test-key-not-used @@ -164,13 +183,13 @@ jobs: load: true tags: | ${{ env.PLANO_DOCKER_IMAGE }} - ${{ env.DOCKER_IMAGE }}:0.4.22 + ${{ env.DOCKER_IMAGE }}:0.4.23 ${{ env.DOCKER_IMAGE }}:latest cache-from: type=gha cache-to: type=gha,mode=max - name: Save image as artifact - run: docker save ${{ env.PLANO_DOCKER_IMAGE }} ${{ env.DOCKER_IMAGE }}:0.4.22 ${{ env.DOCKER_IMAGE }}:latest -o /tmp/plano-image.tar + run: docker save ${{ env.PLANO_DOCKER_IMAGE }} ${{ env.DOCKER_IMAGE }}:0.4.23 ${{ env.DOCKER_IMAGE }}:latest -o /tmp/plano-image.tar - name: Upload image artifact uses: actions/upload-artifact@v6 diff --git a/apps/www/src/components/Hero.tsx b/apps/www/src/components/Hero.tsx index b45c6873..b9d5b170 100644 --- a/apps/www/src/components/Hero.tsx +++ b/apps/www/src/components/Hero.tsx @@ -24,7 +24,7 @@ export function Hero() { >
- v0.4.22 + v0.4.23 — diff --git a/build_filter_image.sh b/build_filter_image.sh index 64708056..624955c2 100644 --- a/build_filter_image.sh +++ b/build_filter_image.sh @@ -1 +1 @@ -docker build -f Dockerfile . -t katanemo/plano -t katanemo/plano:0.4.22 +docker build -f Dockerfile . -t katanemo/plano -t katanemo/plano:0.4.23 diff --git a/cli/planoai/__init__.py b/cli/planoai/__init__.py index ec2c63da..dc0c543a 100644 --- a/cli/planoai/__init__.py +++ b/cli/planoai/__init__.py @@ -1,3 +1,3 @@ """Plano CLI - Intelligent Prompt Gateway.""" -__version__ = "0.4.22" +__version__ = "0.4.23" diff --git a/cli/planoai/consts.py b/cli/planoai/consts.py index 5cafb817..8f13ba50 100644 --- a/cli/planoai/consts.py +++ b/cli/planoai/consts.py @@ -5,7 +5,7 @@ PLANO_COLOR = "#969FF4" SERVICE_NAME_ARCHGW = "plano" PLANO_DOCKER_NAME = "plano" -PLANO_DOCKER_IMAGE = os.getenv("PLANO_DOCKER_IMAGE", "katanemo/plano:0.4.22") +PLANO_DOCKER_IMAGE = os.getenv("PLANO_DOCKER_IMAGE", "katanemo/plano:0.4.23") DEFAULT_OTEL_TRACING_GRPC_ENDPOINT = "http://localhost:4317" # Native mode constants diff --git a/cli/pyproject.toml b/cli/pyproject.toml index f7ac640e..e0a90e11 100644 --- a/cli/pyproject.toml +++ b/cli/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "planoai" -version = "0.4.22" +version = "0.4.23" description = "Python-based CLI tool to manage Plano." authors = [{name = "Katanemo Labs, Inc."}] readme = "README.md" diff --git a/cli/uv.lock b/cli/uv.lock index d63fab73..98d50481 100644 --- a/cli/uv.lock +++ b/cli/uv.lock @@ -337,7 +337,7 @@ wheels = [ [[package]] name = "planoai" -version = "0.4.22" +version = "0.4.23" source = { editable = "." } dependencies = [ { name = "click" }, diff --git a/demos/llm_routing/preference_based_routing/README.md b/demos/llm_routing/preference_based_routing/README.md index 5bbcab13..3401dcf6 100644 --- a/demos/llm_routing/preference_based_routing/README.md +++ b/demos/llm_routing/preference_based_routing/README.md @@ -3,7 +3,7 @@ This demo shows how you can use user preferences to route user prompts to approp ## How to start the demo -Make sure you have Plano CLI installed (`pip install planoai==0.4.22` or `uv tool install planoai==0.4.22`). +Make sure you have Plano CLI installed (`pip install planoai==0.4.23` or `uv tool install planoai==0.4.23`). ```bash cd demos/llm_routing/preference_based_routing diff --git a/docs/source/conf.py b/docs/source/conf.py index 4a739313..8d006444 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -17,7 +17,7 @@ from sphinxawesome_theme.postprocess import Icons project = "Plano Docs" copyright = "2026, Katanemo Labs, a DigitalOcean Company" author = "Katanemo Labs, Inc" -release = " v0.4.22" +release = " v0.4.23" # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration diff --git a/docs/source/get_started/quickstart.rst b/docs/source/get_started/quickstart.rst index 801ad685..0b49f104 100644 --- a/docs/source/get_started/quickstart.rst +++ b/docs/source/get_started/quickstart.rst @@ -43,7 +43,7 @@ Plano's CLI allows you to manage and interact with the Plano efficiently. To ins .. code-block:: console - $ uv tool install planoai==0.4.22 + $ uv tool install planoai==0.4.23 **Option 2: Install with pip (Traditional)** @@ -51,7 +51,7 @@ Plano's CLI allows you to manage and interact with the Plano efficiently. To ins $ python -m venv venv $ source venv/bin/activate # On Windows, use: venv\Scripts\activate - $ pip install planoai==0.4.22 + $ pip install planoai==0.4.23 .. _llm_routing_quickstart: diff --git a/docs/source/resources/deployment.rst b/docs/source/resources/deployment.rst index c8246f8c..6858269f 100644 --- a/docs/source/resources/deployment.rst +++ b/docs/source/resources/deployment.rst @@ -65,7 +65,7 @@ Create a ``docker-compose.yml`` file with the following configuration: # docker-compose.yml services: plano: - image: katanemo/plano:0.4.22 + image: katanemo/plano:0.4.23 container_name: plano ports: - "10000:10000" # ingress (client -> plano) @@ -153,7 +153,7 @@ Create a ``plano-deployment.yaml``: spec: containers: - name: plano - image: katanemo/plano:0.4.22 + image: katanemo/plano:0.4.23 ports: - containerPort: 12000 # LLM gateway (chat completions, model routing) name: llm-gateway