From bfbf838b19b5cc703b8aeeca9c0ec0c6ca000369 Mon Sep 17 00:00:00 2001 From: Adil Hafeez Date: Tue, 17 Feb 2026 05:45:44 -0800 Subject: [PATCH] release 0.4.7 (#752) --- .github/workflows/ci.yml | 4 +-- CLAUDE.md | 33 ++++++++++++++++++- 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 +- config/validate_plano_config.sh | 2 +- .../preference_based_routing/README.md | 4 +-- docs/source/conf.py | 2 +- docs/source/get_started/quickstart.rst | 6 ++-- docs/source/resources/deployment.rst | 2 +- 12 files changed, 47 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4211257e..4d07452b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -75,13 +75,13 @@ jobs: load: true tags: | ${{ env.PLANO_DOCKER_IMAGE }} - ${{ env.DOCKER_IMAGE }}:0.4.6 + ${{ env.DOCKER_IMAGE }}:0.4.7 ${{ 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.6 ${{ env.DOCKER_IMAGE }}:latest -o /tmp/plano-image.tar + run: docker save ${{ env.PLANO_DOCKER_IMAGE }} ${{ env.DOCKER_IMAGE }}:0.4.7 ${{ env.DOCKER_IMAGE }}:latest -o /tmp/plano-image.tar - name: Upload image artifact uses: actions/upload-artifact@v4 diff --git a/CLAUDE.md b/CLAUDE.md index 9f431033..b8c1c1bd 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -58,7 +58,7 @@ docker build -t katanemo/plano:latest . ### E2E Tests (tests/e2e/) -E2E tests require a built Docker image and API keys. They run via `tests/e2e/run_e2e_tests.sh` which executes three test suites: `test_prompt_gateway.py`, `test_model_alias_routing.py`, and `test_openai_responses_api_client_with_state.py`. +E2E tests require a built Docker image and API keys. They run via `tests/e2e/run_e2e_tests.sh` which executes four test suites: `test_prompt_gateway.py`, `test_model_alias_routing.py`, `test_openai_responses_api_client.py`, and `test_openai_responses_api_client_with_state.py`. ## Architecture @@ -91,6 +91,8 @@ The `planoai` CLI manages the Plano lifecycle. Key commands: - `planoai logs` — Stream access/debug logs - `planoai trace` — OTEL trace collection and analysis - `planoai init` — Initialize new project +- `planoai cli_agent` — Start a CLI agent connected to Plano +- `planoai generate_prompt_targets` — Generate prompt_targets from python methods Entry point: `cli/planoai/main.py`. Container lifecycle in `core.py`. Docker operations in `docker_cli.py`. @@ -106,6 +108,35 @@ User configs define: `agents` (id + url), `model_providers` (model + access_key) Turbo monorepo with Next.js 16 / React 19 applications and shared packages (UI components, Tailwind config, TypeScript config). Not part of the core proxy — these are web applications. +## Release Process + +To prepare a release (e.g., bumping from `0.4.6` to `0.4.7`), update the version string in all of the following files: + +**CI Workflow:** +- `.github/workflows/ci.yml` — docker build/save tags + +**CLI:** +- `cli/planoai/__init__.py` — `__version__` +- `cli/planoai/consts.py` — `PLANO_DOCKER_IMAGE` default +- `cli/pyproject.toml` — `version` + +**Build & Config:** +- `build_filter_image.sh` — docker build tag +- `config/validate_plano_config.sh` — docker image tag + +**Docs:** +- `docs/source/conf.py` — `release` +- `docs/source/get_started/quickstart.rst` — install commands and example output +- `docs/source/resources/deployment.rst` — docker image tag + +**Website & Demos:** +- `apps/www/src/components/Hero.tsx` — version badge +- `demos/llm_routing/preference_based_routing/README.md` — example output + +**Important:** Do NOT change `0.4.6` references in `*.lock` files or `Cargo.lock` — those refer to the `colorama` and `http-body` dependency versions, not Plano. + +Commit message format: `release X.Y.Z` + ## Key Conventions - Rust edition 2021, formatted with `cargo fmt`, linted with `cargo clippy -D warnings` diff --git a/apps/www/src/components/Hero.tsx b/apps/www/src/components/Hero.tsx index 2fc99651..f98bc4d2 100644 --- a/apps/www/src/components/Hero.tsx +++ b/apps/www/src/components/Hero.tsx @@ -24,7 +24,7 @@ export function Hero() { >
- v0.4.6 + v0.4.7 — diff --git a/build_filter_image.sh b/build_filter_image.sh index 9c76be60..318fa542 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.6 +docker build -f Dockerfile . -t katanemo/plano -t katanemo/plano:0.4.7 diff --git a/cli/planoai/__init__.py b/cli/planoai/__init__.py index a3b304e1..9e014320 100644 --- a/cli/planoai/__init__.py +++ b/cli/planoai/__init__.py @@ -1,3 +1,3 @@ """Plano CLI - Intelligent Prompt Gateway.""" -__version__ = "0.4.6" +__version__ = "0.4.7" diff --git a/cli/planoai/consts.py b/cli/planoai/consts.py index a2538e73..fa94efb6 100644 --- a/cli/planoai/consts.py +++ b/cli/planoai/consts.py @@ -5,5 +5,5 @@ PLANO_COLOR = "#969FF4" SERVICE_NAME_ARCHGW = "plano" PLANO_DOCKER_NAME = "plano" -PLANO_DOCKER_IMAGE = os.getenv("PLANO_DOCKER_IMAGE", "katanemo/plano:0.4.6") +PLANO_DOCKER_IMAGE = os.getenv("PLANO_DOCKER_IMAGE", "katanemo/plano:0.4.7") DEFAULT_OTEL_TRACING_GRPC_ENDPOINT = "http://host.docker.internal:4317" diff --git a/cli/pyproject.toml b/cli/pyproject.toml index 84af6ca3..673e821b 100644 --- a/cli/pyproject.toml +++ b/cli/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "planoai" -version = "0.4.6" +version = "0.4.7" description = "Python-based CLI tool to manage Plano." authors = [{name = "Katanemo Labs, Inc."}] readme = "README.md" diff --git a/config/validate_plano_config.sh b/config/validate_plano_config.sh index 0a518819..8eafd344 100644 --- a/config/validate_plano_config.sh +++ b/config/validate_plano_config.sh @@ -5,7 +5,7 @@ failed_files=() for file in $(find . -name config.yaml -o -name plano_config_full_reference.yaml); do echo "Validating ${file}..." touch $(pwd)/${file}_rendered - if ! docker run --rm -v "$(pwd)/${file}:/app/plano_config.yaml:ro" -v "$(pwd)/${file}_rendered:/app/plano_config_rendered.yaml:rw" --entrypoint /bin/sh katanemo/plano:0.4.6 -c "python -m planoai.config_generator" 2>&1 > /dev/null ; then + if ! docker run --rm -v "$(pwd)/${file}:/app/plano_config.yaml:ro" -v "$(pwd)/${file}_rendered:/app/plano_config_rendered.yaml:rw" --entrypoint /bin/sh ${PLANO_DOCKER_IMAGE:-katanemo/plano:0.4.7} -c "python -m planoai.config_generator" 2>&1 > /dev/null ; then echo "Validation failed for $file" failed_files+=("$file") fi diff --git a/demos/llm_routing/preference_based_routing/README.md b/demos/llm_routing/preference_based_routing/README.md index 4cf2ec05..6c8ace08 100644 --- a/demos/llm_routing/preference_based_routing/README.md +++ b/demos/llm_routing/preference_based_routing/README.md @@ -15,9 +15,9 @@ Make sure your machine is up to date with [latest version of plano]([url](https: ```bash (venv) $ planoai up --service plano --foreground # Or if installed with uv: uvx planoai up --service plano --foreground -2025-05-30 18:00:09,953 - planoai.main - INFO - Starting plano cli version: 0.4.6 +2025-05-30 18:00:09,953 - planoai.main - INFO - Starting plano cli version: 0.4.7 2025-05-30 18:00:09,953 - planoai.main - INFO - Validating /Users/adilhafeez/src/intelligent-prompt-gateway/demos/llm_routing/preference_based_routing/config.yaml -2025-05-30 18:00:10,422 - cli.core - INFO - Starting plano gateway, image name: plano, tag: katanemo/plano:0.4.6 +2025-05-30 18:00:10,422 - cli.core - INFO - Starting plano gateway, image name: plano, tag: katanemo/plano:0.4.7 2025-05-30 18:00:10,662 - cli.core - INFO - plano status: running, health status: starting 2025-05-30 18:00:11,712 - cli.core - INFO - plano status: running, health status: starting 2025-05-30 18:00:12,761 - cli.core - INFO - plano is running and is healthy! diff --git a/docs/source/conf.py b/docs/source/conf.py index f4d88f19..fafef73e 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 = "2025, Katanemo Labs, Inc" author = "Katanemo Labs, Inc" -release = " v0.4.6" +release = " v0.4.7" # -- 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 7bccc1a9..5fda423c 100644 --- a/docs/source/get_started/quickstart.rst +++ b/docs/source/get_started/quickstart.rst @@ -37,7 +37,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.6 + $ uv tool install planoai==0.4.7 **Option 2: Install with pip (Traditional)** @@ -45,7 +45,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.6 + $ pip install planoai==0.4.7 .. _llm_routing_quickstart: @@ -90,7 +90,7 @@ Start Plano: $ planoai up plano_config.yaml # Or if installed with uv tool: uvx planoai up plano_config.yaml - 2024-12-05 11:24:51,288 - planoai.main - INFO - Starting plano cli version: 0.4.6 + 2024-12-05 11:24:51,288 - planoai.main - INFO - Starting plano cli version: 0.4.7 2024-12-05 11:24:51,825 - planoai.utils - INFO - Schema validation successful! 2024-12-05 11:24:51,825 - planoai.main - INFO - Starting plano ... diff --git a/docs/source/resources/deployment.rst b/docs/source/resources/deployment.rst index 1848c149..2456a80b 100644 --- a/docs/source/resources/deployment.rst +++ b/docs/source/resources/deployment.rst @@ -25,7 +25,7 @@ Create a ``docker-compose.yml`` file with the following configuration: # docker-compose.yml services: plano: - image: katanemo/plano:0.4.6 + image: katanemo/plano:0.4.7 container_name: plano ports: - "10000:10000" # ingress (client -> plano)