You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by po...@apache.org on 2022/08/04 19:36:57 UTC

[airflow] 02/07: Move breeze commands to sub-commands (#25449)

This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch v2-3-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit 93910dfb538f66a6613440233ad3c9d70dd0e103
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Tue Aug 2 17:21:01 2022 +0200

    Move breeze commands to sub-commands (#25449)
    
    * mOve breeze commands to sub-commands
    
    Originally Python version of Breeze had only a handful of commands,
    while moving from Bash, but we are close to completion of the
    transition and the number of commands grew quite a lot bringit it
    on par to the commands we used to have in the Bash version of Breeze.
    
    However, only a small subset of the commands is actually useful to
    average developer, most of the more advanced commands are used in
    specific circumstances (release management, configuring Breeze
    once or rebuilding the image or even runing non-interactive test
    session are rarely used. Therefore it makes much more sense to
    surface the common commands as the top-level commands and move
    the less frequent commands to subcommands to move them out from
    the main help page.
    
    At the same time, the BREEZE.rst documentation got a little messy
    during the move and this is the right time to structure it similarly
    to breeze commands:
    
    * prerequisites and installation
    * first-time configuration
    * regular task description
    * more advanced tasks grupped in the same subcommands as in Breeze
    * diving deeper into details of Breeze implentation for those
      who wish to understand how Breeze works under-the-hood
    
    Aliases for the common commands that users could already get used to
    were created, and deprecation warnings are printed in casee those
    commands are used (guiding the user to the new commands to use).
    
    Less frequently used options for shell command are still available
    in `shell` but they have been removed from the default command to
    remove clutter. You can still used them by explicitly specifying
    the `shell` commnd.
    
    Configuration for rich click has been separated out from the
    command group implementation to separate packages. This allows
    for less problems with circular imports - none of the commands
    are needed when rich-click configuration is being prepared, which
    happens before main `click` command is parsed, which allows to
    run imports of the "code" as late as possible.
    
    * Update manage-dags-files.rst
    
    (cherry picked from commit b91fd990a6b24cc63c9e50ead6dae1764a7416d5)
---
 .github/workflows/build-images.yml                 |   36 +-
 .github/workflows/ci.yml                           |  221 ++--
 .github/workflows/codeql-analysis.yml              |    2 +-
 .github/workflows/release_dockerhub_image.yml      |   20 +-
 BREEZE.rst                                         | 1372 ++++++++++----------
 CI.rst                                             |    2 +-
 CONTRIBUTORS_QUICK_START.rst                       |    2 +-
 IMAGES.rst                                         |   20 +-
 TESTING.rst                                        |   20 +-
 breeze                                             |    2 +-
 dev/MANUALLY_BUILDING_IMAGES.md                    |    4 +-
 dev/PROVIDER_PACKAGE_DETAILS.md                    |   18 +-
 dev/README_RELEASE_AIRFLOW.md                      |   10 +-
 dev/README_RELEASE_PROVIDER_PACKAGES.md            |   12 +-
 dev/REFRESHING_CI_CACHE.md                         |    8 +-
 dev/TRACKING_BACKTRACKING_ISSUES.md                |    8 +-
 .../0011-unified-communication-with-the-users.md   |    2 +-
 .../doc/adr/0012-asking-user-for-confirmation.md   |    2 +-
 dev/breeze/src/airflow_breeze/breeze.py            |   15 +
 .../{breeze.py => commands/__init__.py}            |   13 -
 .../src/airflow_breeze/commands/ci_commands.py     |   60 +-
 .../airflow_breeze/commands/ci_commands_config.py  |   62 +
 .../airflow_breeze/commands/ci_image_commands.py   |  148 +--
 .../commands/ci_image_commands_config.py           |  117 ++
 .../airflow_breeze/commands/developer_commands.py  |  156 +--
 .../commands/developer_commands_config.py          |  161 +++
 .../src/airflow_breeze/commands/main_command.py    |  151 ++-
 .../commands/production_image_commands.py          |  164 +--
 .../commands/production_image_commands_config.py   |  132 ++
 .../commands/release_management_commands.py        |  110 +-
 .../commands/release_management_commands_config.py |  100 ++
 ...d_maintenance_commands.py => setup_commands.py} |  156 +--
 .../commands/setup_commands_config.py              |   64 +
 .../airflow_breeze/commands/testing_commands.py    |   48 +-
 .../commands/testing_commands_config.py            |   57 +
 .../src/airflow_breeze/configure_rich_click.py     |   53 +-
 .../airflow_breeze/params/common_build_params.py   |    2 +-
 .../{breeze.py => utils/click_utils.py}            |   16 +-
 .../src/airflow_breeze/utils/common_options.py     |   18 +-
 dev/breeze/src/airflow_breeze/utils/console.py     |   12 +
 .../airflow_breeze/utils/docker_command_utils.py   |    4 +-
 dev/breeze/src/airflow_breeze/utils/image.py       |    4 +-
 dev/breeze/src/airflow_breeze/utils/path_utils.py  |    4 +-
 dev/breeze/src/airflow_breeze/utils/run_utils.py   |    7 +-
 dev/breeze/src/airflow_breeze/utils/visuals.py     |    2 +-
 dev/refresh_images.sh                              |   10 +-
 docker_tests/docker_tests_utils.py                 |    4 +-
 images/breeze/output-build-docs.svg                |  292 -----
 images/breeze/output-build-image.svg               |  332 -----
 images/breeze/output-build-prod-image.svg          |  396 ------
 images/breeze/output-cleanup.svg                   |  120 --
 images/breeze/output-command-hash-export.svg       |   95 --
 images/breeze/output-commands-hash.txt             |   91 +-
 images/breeze/output-commands.svg                  |  384 ++----
 images/breeze/output-compile-www-assets.svg        |  115 --
 images/breeze/output-config.svg                    |  144 --
 images/breeze/output-docker-compose-tests.svg      |  128 --
 images/breeze/output-exec.svg                      |   99 --
 images/breeze/output-find-newer-dependencies.svg   |  132 --
 images/breeze/output-fix-ownership.svg             |  116 --
 images/breeze/output-free-space.svg                |  104 --
 images/breeze/output-generate-constraints.svg      |  180 ---
 images/breeze/output-prepare-airflow-package.svg   |  124 --
 .../output-prepare-provider-documentation.svg      |  164 ---
 images/breeze/output-prepare-provider-packages.svg |  172 ---
 images/breeze/output-pull-image.svg                |  174 ---
 images/breeze/output-pull-prod-image.svg           |  174 ---
 images/breeze/output-regenerate-command-images.svg |   99 --
 images/breeze/output-release-prod-images.svg       |  158 ---
 images/breeze/output-resource-check.svg            |   99 --
 images/breeze/output-selective-check.svg           |  148 ---
 images/breeze/output-self-upgrade.svg              |  107 --
 images/breeze/output-setup-autocomplete.svg        |  116 --
 images/breeze/output-shell.svg                     |  252 ----
 images/breeze/output-start-airflow.svg             |  260 ----
 images/breeze/output-stop.svg                      |  111 --
 images/breeze/output-tests.svg                     |  192 ---
 images/breeze/output-verify-image.svg              |  132 --
 images/breeze/output-verify-prod-image.svg         |  136 --
 images/breeze/output-verify-provider-packages.svg  |  172 ---
 images/breeze/output-version.svg                   |   95 --
 images/breeze/output_build-docs.svg                |  292 +++++
 images/breeze/output_ci-image.svg                  |  111 ++
 images/breeze/output_ci-image_build.svg            |  328 +++++
 images/breeze/output_ci-image_pull.svg             |  174 +++
 images/breeze/output_ci-image_verify.svg           |  132 ++
 images/breeze/output_ci.svg                        |  119 ++
 .../breeze/output_ci_find-newer-dependencies.svg   |  140 ++
 images/breeze/output_ci_fix-ownership.svg          |  116 ++
 images/breeze/output_ci_free-space.svg             |  104 ++
 images/breeze/output_ci_resource-check.svg         |   99 ++
 images/breeze/output_ci_selective-check.svg        |  148 +++
 images/breeze/output_cleanup.svg                   |  120 ++
 images/breeze/output_compile-www-assets.svg        |  115 ++
 images/breeze/output_exec.svg                      |   99 ++
 images/breeze/output_prod-image.svg                |  111 ++
 images/breeze/output_prod-image_build.svg          |  392 ++++++
 images/breeze/output_prod-image_pull.svg           |  174 +++
 images/breeze/output_prod-image_verify.svg         |  136 ++
 images/breeze/output_release-management.svg        |  123 ++
 ...put_release-management_generate-constraints.svg |  180 +++
 ..._release-management_prepare-airflow-package.svg |  124 ++
 ...e-management_prepare-provider-documentation.svg |  184 +++
 ...elease-management_prepare-provider-packages.svg |  184 +++
 ...tput_release-management_release-prod-images.svg |  158 +++
 ...release-management_verify-provider-packages.svg |  172 +++
 images/breeze/output_setup.svg                     |  127 ++
 images/breeze/output_setup_autocomplete.svg        |  116 ++
 images/breeze/output_setup_command-hash-export.svg |   95 ++
 images/breeze/output_setup_config.svg              |  144 ++
 .../output_setup_regenerate-command-images.svg     |   99 ++
 images/breeze/output_setup_self-upgrade.svg        |  107 ++
 images/breeze/output_setup_version.svg             |   95 ++
 images/breeze/output_shell.svg                     |  256 ++++
 images/breeze/output_start-airflow.svg             |  264 ++++
 images/breeze/output_static-checks.svg             |  260 ++++
 images/breeze/output_stop.svg                      |  111 ++
 images/breeze/output_testing.svg                   |  107 ++
 .../breeze/output_testing_docker-compose-tests.svg |  128 ++
 images/breeze/output_testing_tests.svg             |  192 +++
 .../ci/pre_commit/pre_commit_breeze_cmd_line.py    |   43 +-
 121 files changed, 8266 insertions(+), 7137 deletions(-)

diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml
index 2757646887..9c88be73fa 100644
--- a/.github/workflows/build-images.yml
+++ b/.github/workflows/build-images.yml
@@ -156,7 +156,7 @@ jobs:
         env:
           PR_LABELS: "${{ steps.get-latest-pr-labels.outputs.pull-request-labels }}"
           COMMIT_REF: "${{ env.TARGET_COMMIT_SHA }}"
-        run: breeze selective-check
+        run: breeze ci selective-check
       - name: env
         run: printenv
         env:
@@ -219,7 +219,7 @@ jobs:
           cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: Cache pre-commit envs
         uses: actions/cache@v3
         with:
@@ -237,7 +237,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
       - name: >-
           Build & Push AMD64 CI images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
           ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
-        run: breeze build-image --push-image --tag-as-latest --run-in-parallel
+        run: breeze ci-image build --push --tag-as-latest --run-in-parallel
         env:
           UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}
           DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
@@ -245,16 +245,16 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           PYTHON_VERSIONS: ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
       - name: Push empty CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
         if: failure() || cancelled()
-        run: breeze build-image --push-image --empty-image --run-in-parallel
+        run: breeze ci-image build --push --empty-image --run-in-parallel
         env:
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Candidates for pip resolver backtrack triggers"
         if: failure() || cancelled()
         run: >
-          breeze find-newer-dependencies --max-age 1
+          breeze ci find-newer-dependencies --max-age 1
           --python "${{ needs.build-info.outputs.default-python-version }}"
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   build-prod-images:
@@ -312,7 +312,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: Cache pre-commit envs
         uses: actions/cache@v3
         with:
@@ -327,7 +327,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
       - name: >
           Pull CI image for PROD build:
           ${{ needs.build-info.outputs.default-python-version }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        run: breeze pull-image --tag-as-latest
+        run: breeze ci-image pull --tag-as-latest
         env:
           # Always use default Python version of CI image for preparing packages
           PYTHON_MAJOR_MINOR_VERSION: ${{ needs.build-info.outputs.default-python-version }}
@@ -336,13 +336,15 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
         run: rm -fv ./dist/*  ./docker-context-files/*
       - name: "Prepare providers packages"
         run: >
-          breeze prepare-provider-packages
+          breeze release-management prepare-provider-packages
           --package-list-file ./scripts/ci/installed_providers.txt
           --package-format wheel
           --version-suffix-for-pypi dev0
         if: needs.build-info.outputs.default-branch == 'main'
       - name: "Prepare airflow package"
-        run: breeze prepare-airflow-package --package-format wheel --version-suffix-for-pypi dev0
+        run: >
+          breeze release-management prepare-airflow-package
+          --package-format wheel --version-suffix-for-pypi dev0
       - name: "Move dist packages to docker-context files"
         run: mv -v ./dist/*.whl ./docker-context-files
       - name: Compile www assets
@@ -351,10 +353,10 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           Build & Push PROD images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
           ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
         run: >
-          breeze build-prod-image
+          breeze prod-image build
           --run-in-parallel
           --tag-as-latest
-          --push-image
+          --push
           --install-packages-from-context
         env:
           UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}
@@ -363,11 +365,11 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           PYTHON_VERSIONS: ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
       - name: Push empty PROD images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
         if: failure() || cancelled()
-        run: breeze build-prod-image --cleanup-context --push-image --empty-image --run-in-parallel
+        run: breeze prod-image build --cleanup-context --push --empty-image --run-in-parallel
         env:
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
 
@@ -421,14 +423,14 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           python-version: ${{ needs.build-info.outputs.default-python-version }}
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: "Start ARM instance"
         run: ./scripts/ci/images/ci_start_arm_instance_and_connect_to_docker.sh
       - name: >
           Build ARM CI images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
           ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
         run: >
-          breeze build-image --run-in-parallel --builder airflow_cache --platform "linux/arm64"
+          breeze ci-image build --run-in-parallel --builder airflow_cache --platform "linux/arm64"
         env:
           UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}
           DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
@@ -438,5 +440,5 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
         run: ./scripts/ci/images/ci_stop_arm_instance.sh
         if: always()
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 4677ae5d47..8e376bc36b 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -237,7 +237,7 @@ jobs:
         env:
           PR_LABELS: "${{ steps.source-run-info.outputs.pullRequestLabels }}"
           COMMIT_REF: "${{ github.sha }}"
-        run: breeze selective-check
+        run: breeze ci selective-check
       # Avoid having to specify the runs-on logic every time. We use the custom
       # env var AIRFLOW_SELF_HOSTED_RUNNER set only on our runners, but never
       # on the public runners
@@ -330,7 +330,7 @@ jobs:
       - run: ./scripts/ci/install_breeze.sh
         if: needs.build-info.outputs.in-workflow-build == 'true'
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
         if: needs.build-info.outputs.in-workflow-build == 'true'
       - name: Cache pre-commit envs
         uses: actions/cache@v3
@@ -353,7 +353,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
       - name: >
           Build & Push CI images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
           ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
-        run: breeze build-image --push-image --tag-as-latest --run-in-parallel
+        run: breeze ci-image build --push --tag-as-latest --run-in-parallel
         env:
           UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}
           DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
@@ -363,10 +363,10 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
       - name: "Candidates for pip resolver backtrack triggers"
         if: failure() || cancelled()
         run: >
-          breeze find-newer-dependencies --max-age 1
+          breeze ci find-newer-dependencies --max-age 1
           --python "${{ needs.build-info.outputs.default-python-version }}"
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always() && needs.build-info.outputs.in-workflow-build == 'true'
 
   build-prod-images:
@@ -404,7 +404,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
       - run: ./scripts/ci/install_breeze.sh
         if: needs.build-info.outputs.in-workflow-build == 'true'
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
         if: needs.build-info.outputs.in-workflow-build == 'true'
       - name: Cache pre-commit envs
         uses: actions/cache@v3
@@ -426,7 +426,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
       - name: >
           Pull CI image for PROD build:
           ${{ needs.build-info.outputs.default-python-version }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}"
-        run: breeze pull-image --tag-as-latest
+        run: breeze ci-image pull --tag-as-latest
         env:
           # Always use default Python version of CI image for preparing packages
           PYTHON_MAJOR_MINOR_VERSION: ${{ needs.build-info.outputs.default-python-version }}
@@ -437,29 +437,28 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
         if: needs.build-info.outputs.in-workflow-build == 'true'
       - name: "Prepare providers packages"
         run: >
-          breeze prepare-provider-packages
+          breeze release-management prepare-provider-packages
           --package-list-file ./scripts/ci/installed_providers.txt
           --package-format wheel --version-suffix-for-pypi dev0
         if: >
           needs.build-info.outputs.in-workflow-build == 'true' &&
           needs.build-info.outputs.default-branch == 'main'
       - name: "Prepare airflow package"
-        run: breeze prepare-airflow-package --package-format wheel --version-suffix-for-pypi dev0
+        run: >
+          breeze release-management prepare-airflow-package
+          --package-format wheel --version-suffix-for-pypi dev0
         if: needs.build-info.outputs.in-workflow-build == 'true'
       - name: "Move dist packages to docker-context files"
         run: mv -v ./dist/*.whl ./docker-context-files
         if: needs.build-info.outputs.in-workflow-build == 'true'
-      - name: Compile www assets
-        run: breeze compile-www-assets
-        if: needs.build-info.outputs.in-workflow-build == 'true'
       - name: >
           Build & Push PROD images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
           ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
         run: >
-          breeze build-prod-image
+          breeze prod-image build
           --tag-as-latest
           --run-in-parallel
-          --push-image
+          --push
           --install-packages-from-context
         env:
           UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}
@@ -468,7 +467,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           PYTHON_VERSIONS: ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
         if: needs.build-info.outputs.in-workflow-build == 'true'
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always() && needs.build-info.outputs.in-workflow-build == 'true'
 
   run-new-breeze-tests:
@@ -489,7 +488,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           cache-dependency-path: ./dev/breeze/setup*
       - run: python -m pip install --editable ./dev/breeze/
       - run: python -m pytest ./dev/breeze/ -n auto --color=yes
-      - run: breeze version
+      - run: breeze setup version
 
   tests-ui:
     timeout-minutes: 10
@@ -612,15 +611,15 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: Wait for CI images ${{ env.PYTHON_VERSIONS }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
         id: wait-for-images
-        run: breeze pull-image --run-in-parallel --verify-image --wait-for-image --tag-as-latest
+        run: breeze ci-image pull --run-in-parallel --verify --wait-for-image --tag-as-latest
         env:
           PYTHON_VERSIONS: ${{ needs.build-info.outputs.python-versions-list-as-string }}
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   static-checks:
@@ -654,10 +653,10 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           restore-keys: pre-commit-${{steps.host-python-version.outputs.host-python-version}}
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: >
           Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        run: breeze pull-image --tag-as-latest
+        run: breeze ci-image pull --tag-as-latest
         env:
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Get Python version"
@@ -671,7 +670,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           SKIP: ${{ needs.build-info.outputs.skip-pre-commits }}
           COLUMNS: "250"
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   # Those checks are run if no image needs to be built for checks. This is for simple changes that
@@ -688,12 +687,6 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
     steps:
       - name: Cleanup repo
         run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm -rf /workspace/*"
-      - name: "Setup python"
-        uses: actions/setup-python@v4
-        with:
-          python-version: ${{ needs.build-info.outputs.default-python-version }}
-          cache: 'pip'
-          cache-dependency-path: ./dev/breeze/setup*
       - name: Cache pre-commit envs
         uses: actions/cache@v3
         with:
@@ -707,9 +700,15 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           ref: ${{ github.sha }}
           fetch-depth: 2
           persist-credentials: false
+      - name: "Setup python"
+        uses: actions/setup-python@v4
+        with:
+          python-version: ${{ needs.build-info.outputs.default-python-version }}
+          cache: 'pip'
+          cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: "Get Python version"
         run: "echo \"::set-output name=host-python-version::$(python -c
  'import platform; print(platform.python_version())')\""
@@ -724,7 +723,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           SKIP: ${{ needs.build-info.outputs.skip-pre-commits }}
           COLUMNS: "250"
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   docs:
@@ -751,9 +750,9 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        run: breeze pull-image --tag-as-latest
+        run: breeze ci-image pull --tag-as-latest
         env:
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - uses: actions/cache@v3
@@ -781,7 +780,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           github.event_name == 'push'
         run: aws s3 sync --delete ./files/documentation s3://apache-airflow-docs
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   prepare-test-provider-packages-wheel:
@@ -809,24 +808,28 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: >
           Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        run: breeze pull-image --tag-as-latest
+        run: breeze ci-image pull --tag-as-latest
         env:
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Cleanup dist files"
         run: rm -fv ./dist/*
       - name: "Prepare provider documentation"
-        run: breeze prepare-provider-documentation --answer yes
+        run: breeze release-management prepare-provider-documentation --answer yes
       - name: "Prepare provider packages: wheel"
-        run: breeze prepare-provider-packages --package-format wheel --version-suffix-for-pypi dev0
+        run: >
+          breeze release-management prepare-provider-packages
+          --package-format wheel --version-suffix-for-pypi dev0
       - name: "Prepare airflow package: wheel"
-        run: breeze prepare-airflow-package --package-format wheel --version-suffix-for-pypi dev0
+        run: >
+          breeze release-management prepare-airflow-package
+          --package-format wheel --version-suffix-for-pypi dev0
       - name: "Install and test provider packages and airflow via wheel files"
         run: >
-          breeze verify-provider-packages --use-airflow-version wheel --use-packages-from-dist
-          --package-format wheel
+          breeze release-management verify-provider-packages
+          --use-airflow-version wheel --use-packages-from-dist --package-format wheel
         env:
           SKIP_CONSTRAINTS: "${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}"
       - name: "Remove airflow package and replace providers with 2.2-compliant versions"
@@ -839,7 +842,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
               apache-airflow-providers-celery==2.1.3
       - name: "Install and test provider packages and airflow on Airflow 2.2 files"
         run: >
-          breeze verify-provider-packages --use-airflow-version 2.2.0
+          breeze release-management verify-provider-packages --use-airflow-version 2.2.0
           --use-packages-from-dist --package-format wheel --airflow-constraints-reference constraints-2.2.0
         env:
           # The extras below are all extras that should be installed with Airflow 2.2.0
@@ -856,7 +859,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
             sftp,singularity,slack,snowflake,sqlite,ssh,statsd,tableau,telegram,trino,vertica,\
             virtualenv,yandex,zendesk"
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   prepare-test-provider-packages-sdist:
@@ -884,18 +887,22 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: >
           Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        run: breeze pull-image --tag-as-latest
+        run: breeze ci-image pull --tag-as-latest
         env:
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Cleanup dist files"
         run: rm -fv ./dist/*
       - name: "Prepare provider packages: sdist"
-        run: breeze prepare-provider-packages --package-format sdist --version-suffix-for-pypi dev0
+        run: >
+          breeze release-management prepare-provider-packages
+          --package-format sdist --version-suffix-for-pypi dev0
       - name: "Prepare airflow package: sdist"
-        run: breeze prepare-airflow-package --package-format sdist --version-suffix-for-pypi dev0
+        run: >
+          breeze release-management prepare-airflow-package
+          --package-format sdist --version-suffix-for-pypi dev0
       - name: "Upload provider distribution artifacts"
         uses: actions/upload-artifact@v2
         with:
@@ -904,12 +911,12 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           retention-days: 1
       - name: "Install and test provider packages and airflow via sdist files"
         run: >
-          breeze verify-provider-packages --use-airflow-version sdist --use-packages-from-dist
-          --package-format sdist
+          breeze release-management verify-provider-packages
+          --use-airflow-version sdist --use-packages-from-dist --package-format sdist
         env:
           SKIP_CONSTRAINTS: "${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}"
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   tests-helm:
@@ -943,10 +950,10 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: >
           Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        run: breeze pull-image --tag-as-latest
+        run: breeze ci-image pull --tag-as-latest
         env:
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Tests: Helm"
@@ -976,7 +983,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           path: "./files/coverage*.xml"
           retention-days: 7
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   tests-postgres:
@@ -1014,9 +1021,9 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        run: breeze pull-image --tag-as-latest
+        run: breeze ci-image pull --tag-as-latest
         env:
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Test downgrade"
@@ -1050,7 +1057,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           path: "./files/coverage*.xml"
           retention-days: 7
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   tests-mysql:
@@ -1087,9 +1094,9 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        run: breeze pull-image --tag-as-latest
+        run: breeze ci-image pull --tag-as-latest
         env:
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Test downgrade"
@@ -1123,7 +1130,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           path: "./files/coverage*.xml"
           retention-days: 7
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   tests-mssql:
@@ -1160,9 +1167,9 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        run: breeze pull-image --tag-as-latest
+        run: breeze ci-image pull --tag-as-latest
         env:
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Test downgrade"
@@ -1194,7 +1201,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           path: "./files/coverage*.xml"
           retention-days: 7
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   tests-sqlite:
@@ -1229,9 +1236,9 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        run: breeze pull-image --tag-as-latest
+        run: breeze ci-image pull --tag-as-latest
         env:
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Test downgrade"
@@ -1263,7 +1270,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           path: ./files/coverage*.xml
           retention-days: 7
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   tests-quarantined:
@@ -1306,9 +1313,9 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           echo "ISSUE_ID=10128" >> $GITHUB_ENV
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        run: breeze pull-image --tag-as-latest
+        run: breeze ci-image pull --tag-as-latest
         env:
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Tests: Quarantined"
@@ -1344,7 +1351,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           path: "./files/coverage*.xml"
           retention-days: 7
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   upload-coverage:
@@ -1407,7 +1414,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: "Cache virtualenv environment"
         uses: actions/cache@v3
         with:
@@ -1418,12 +1425,12 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
         # or from build-prod-images above.
         # We are utilising single job to wait for all images because this job merely waits
         # For the images to be available and test them.
-        run: breeze pull-prod-image --verify-image --wait-for-image --run-in-parallel
+        run: breeze prod-image pull --verify --wait-for-image --run-in-parallel
         env:
           PYTHON_VERSIONS: ${{ needs.build-info.outputs.python-versions-list-as-string }}
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   test-docker-compose-quick-start:
@@ -1450,15 +1457,15 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: Pull PROD image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        run: breeze pull-prod-image --tag-as-latest
+        run: breeze prod-image pull --tag-as-latest
         env:
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Test docker-compose quick start"
-        run: breeze docker-compose-tests
+        run: breeze testing docker-compose-tests
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   tests-kubernetes:
@@ -1502,9 +1509,9 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: Pull PROD images ${{ env.PYTHON_VERSIONS }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        run: breeze pull-prod-image --run-in-parallel --tag-as-latest
+        run: breeze prod-image pull --run-in-parallel --tag-as-latest
         env:
           PYTHON_VERSIONS: ${{ needs.build-info.outputs.python-versions-list-as-string }}
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
@@ -1528,7 +1535,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           path: /tmp/kind_logs_*
           retention-days: 7
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   tests-helm-executor-upgrade:
@@ -1567,9 +1574,9 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: Pull PROD images ${{ env.PYTHON_VERSIONS }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        run: breeze pull-prod-image --run-in-parallel --tag-as-latest
+        run: breeze prod-image pull --run-in-parallel --tag-as-latest
         env:
           PYTHON_VERSIONS: ${{ needs.build-info.outputs.python-versions-list-as-string }}
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
@@ -1604,7 +1611,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           path: /tmp/kind_logs_*
           retention-days: 7
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   constraints:
@@ -1641,18 +1648,20 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: Pull CI images ${{ env.PYTHON_VERSIONS }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        run: breeze pull-image --run-in-parallel --tag-as-latest
+        run: breeze ci-image pull --run-in-parallel --tag-as-latest
         env:
           PYTHON_VERSIONS: ${{ needs.build-info.outputs.python-versions-list-as-string }}
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Generate constraints"
         run: |
-          breeze generate-constraints --run-in-parallel \
+          breeze release-management generate-constraints --run-in-parallel \
               --airflow-constraints-mode constraints-source-providers
-          breeze generate-constraints --run-in-parallel --airflow-constraints-mode constraints-no-providers
-          breeze generate-constraints --run-in-parallel --airflow-constraints-mode constraints
+          breeze release-management generate-constraints \
+              --run-in-parallel --airflow-constraints-mode constraints-no-providers
+          breeze release-management generate-constraints \
+              --run-in-parallel --airflow-constraints-mode constraints
         env:
           PYTHON_VERSIONS: ${{ needs.build-info.outputs.python-versions-list-as-string }}
       - name: "Set constraints branch name"
@@ -1677,7 +1686,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           branch: ${{ steps.constraints-branch.outputs.branch }}
           directory: "repo"
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   # Push BuildX cache to GitHub Registry in Apache repository, if all tests are successful and build
@@ -1701,7 +1710,6 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
         platform: ["linux/amd64", "linux/arm64"]
     env:
       RUNS_ON: ${{ fromJson(needs.build-info.outputs.runs-on) }}
-      PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }}
     steps:
       - name: Cleanup repo
         run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm -rf /workspace/*"
@@ -1717,11 +1725,11 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: >
           Pull CI image for PROD build
           ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}"
-        run: breeze pull-image --tag-as-latest
+        run: breeze ci-image pull --tag-as-latest
         env:
           # Always use default Python version of CI image for preparing packages
           PYTHON_MAJOR_MINOR_VERSION: ${{ needs.build-info.outputs.default-python-version }}
@@ -1729,12 +1737,12 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
       - name: "Cleanup dist and context file"
         run: rm -fv ./dist/* ./docker-context-files/*
       - name: "Prepare airflow package for PROD build"
-        run: breeze prepare-airflow-package --package-format wheel
+        run: breeze release-management prepare-airflow-package --package-format wheel
         env:
           VERSION_SUFFIX_FOR_PYPI: "dev0"
       - name: "Prepare providers packages for PROD build"
         run: >
-          breeze prepare-provider-packages
+          breeze release-management prepare-provider-packages
           --package-list-file ./scripts/ci/installed_providers.txt
           --package-format wheel
         env:
@@ -1743,34 +1751,40 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
       - name: "Start ARM instance"
         run: ./scripts/ci/images/ci_start_arm_instance_and_connect_to_docker.sh
         if: matrix.platform == 'linux/arm64'
-      - name: "Push CI cache ${{ matrix.python-version }} ${{ matrix.platform }}"
+      - name: "Push CI cache ${{ matrix.platform }}"
         run: >
-          breeze build-image
+          breeze ci-image build
           --builder airflow_cache
           --prepare-buildx-cache
           --run-in-parallel
           --force-build
           --platform ${{ matrix.platform }}
-        env:
-          PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }}
+      - name: "Push CI latest image ${{ matrix.platform }}"
+        run: >
+          breeze ci-image build
+          --tag-as-latest --push --run-in-parallel --platform ${{ matrix.platform }}
+        if: matrix.platform == 'linux/amd64'
       - name: "Move dist packages to docker-context files"
         run: mv -v ./dist/*.whl ./docker-context-files
         if: needs.build-info.outputs.default-branch == 'main'
       - name: "Push PROD cache ${{ matrix.python-version }} ${{ matrix.platform }}"
         run: >
-          breeze build-prod-image
+          breeze prod-image build
           --builder airflow_cache
           --install-packages-from-context
           --prepare-buildx-cache
           --platform ${{ matrix.platform }}
-        env:
-          PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }}
         if: needs.build-info.outputs.default-branch == 'main'
+      - name: "Push PROD latest image ${{ matrix.platform }}"
+        run: >
+          breeze prod-image build --tag-as-latest --install-packages-from-context
+          --push --run-in-parallel --platform ${{ matrix.platform }}
+        if: matrix.platform == 'linux/amd64'
       - name: "Stop ARM instance"
         run: ./scripts/ci/images/ci_stop_arm_instance.sh
         if: always() && matrix.platform == 'linux/arm64'
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
 
   build-ci-arm-images:
@@ -1795,7 +1809,8 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
       RUNS_ON: ${{ fromJson(needs.build-info.outputs.runs-on)[0] }}
     if: >
       needs.build-info.outputs.upgrade-to-newer-dependencies != 'false' &&
-      needs.build-info.outputs.in-workflow-build == 'true'
+      needs.build-info.outputs.in-workflow-build == 'true' &&
+      needs.build-info.outputs.merge-run != 'true'
     steps:
       - name: Cleanup repo
         run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm -rf /workspace/*"
@@ -1810,14 +1825,14 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           python-version: ${{ needs.build-info.outputs.default-python-version }}
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: "Start ARM instance"
         run: ./scripts/ci/images/ci_start_arm_instance_and_connect_to_docker.sh
       - name: >
           Build CI ARM images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
           ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
         run: >
-          breeze build-image
+          breeze ci-image build
           --run-in-parallel
           --builder airflow_cache
           --platform "linux/arm64"
@@ -1830,5 +1845,5 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
         run: ./scripts/ci/images/ci_stop_arm_instance.sh
         if: always()
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 4e6c7c83f4..08a6d97ae0 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -55,7 +55,7 @@ jobs:
         id: selective-checks
         env:
           COMMIT_REF: "${{ github.sha }}"
-        run: breeze selective-check
+        run: breeze ci selective-check
 
   analyze:
     name: Analyze
diff --git a/.github/workflows/release_dockerhub_image.yml b/.github/workflows/release_dockerhub_image.yml
index 3259759cac..23eb3d8f1a 100644
--- a/.github/workflows/release_dockerhub_image.yml
+++ b/.github/workflows/release_dockerhub_image.yml
@@ -61,7 +61,7 @@ jobs:
       - run: ./scripts/ci/install_breeze.sh
       - name: Selective checks
         id: selective-checks
-        run: breeze selective-check
+        run: breeze ci selective-check
   release-images:
     timeout-minutes: 120
     name: "Release images: ${{ github.event.inputs.airflowVersion }}, ${{ matrix.python-version }}"
@@ -95,9 +95,9 @@ jobs:
           cache-dependency-path: ./dev/breeze/setup*
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
-        run: breeze free-space
+        run: breeze ci free-space
       - name: Build CI image for PROD build ${{ needs.build-info.outputs.defaultPythonVersion }}
-        run: breeze build-image
+        run: breeze ci-image build
         env:
           PYTHON_MAJOR_MINOR_VERSION: ${{ needs.build-info.outputs.defaultPythonVersion }}
       - name: "Cleanup dist and context file"
@@ -112,7 +112,7 @@ jobs:
       - name: >
           Release regular images: ${{ github.event.inputs.airflowVersion }}, ${{ matrix.python-version }}
         run: >
-          breeze release-prod-images
+          breeze release-management release-prod-images
           --dockerhub-repo ${{ github.repository }}
           --airflow-version  ${{ github.event.inputs.airflowVersion }}
           ${{ needs.build-info.outputs.skipLatest }}
@@ -121,7 +121,7 @@ jobs:
       - name: >
           Release slim images: ${{ github.event.inputs.airflowVersion }}, ${{ matrix.python-version }}
         run: >
-          breeze release-prod-images
+          breeze release-management release-prod-images
           --dockerhub-repo ${{ github.repository }}
           --airflow-version  ${{ github.event.inputs.airflowVersion }}
           ${{ needs.build-info.outputs.skipLatest }}
@@ -133,15 +133,15 @@ jobs:
       - name: >
           Verify regular AMD64 image: ${{ github.event.inputs.airflowVersion }}, ${{ matrix.python-version }}
         run: >
-          breeze verify-prod-image
-          --pull-image
+          breeze prod-image verify
+          --pull
           --image-name
           ${{github.repository}}:${{github.event.inputs.airflowVersion}}-python${{matrix.python-version}}
       - name: >
           Verify slim AMD64 image: ${{ github.event.inputs.airflowVersion }}, ${{ matrix.python-version }}
         run: >
-          breeze verify-prod-image
-          --pull-image
+          breeze prod-image verify
+          --pull
           --slim-image
           --image-name
           ${{github.repository}}:slim-${{github.event.inputs.airflowVersion}}-python${{matrix.python-version}}
@@ -149,5 +149,5 @@ jobs:
         run: docker logout
         if: always()
       - name: "Fix ownership"
-        run: breeze fix-ownership
+        run: breeze ci fix-ownership
         if: always()
diff --git a/BREEZE.rst b/BREEZE.rst
index 28ddcd541f..c70590ced9 100644
--- a/BREEZE.rst
+++ b/BREEZE.rst
@@ -92,7 +92,7 @@ Here is an example configuration with more than 200GB disk space for Docker:
 Docker Compose
 --------------
 
-- **Version**: Install the latest stable `Docker Compose<https://docs.docker.com/compose/install/>`_
+- **Version**: Install the latest stable `Docker Compose <https://docs.docker.com/compose/install/>`_
   and add it to the PATH. ``Breeze`` detects if you are using version that is too old and warns you to upgrade.
 - **Permissions**: Configure permission to be able to run the ``docker-compose`` command by your user.
 
@@ -127,10 +127,18 @@ Docker in WSL 2
 
 - **WSL 2 Docker mount errors**:
     Another reason to use Linux filesystem, is that sometimes - depending on the length of
-    your path, you might get strange errors when you try start ``Breeze``, such us
+    your path, you might get strange errors when you try start ``Breeze``, such as
     ``caused: mount through procfd: not a directory: unknown:``. Therefore checking out
     Airflow in Windows-mounted Filesystem is strongly discouraged.
 
+- **WSL 2 Docker volume remount errors**:
+    If you're experiencing errors such as ``ERROR: for docker-compose_airflow_run
+    Cannot create container for service airflow: not a directory`` when starting Breeze
+    after the first time or an error like ``docker: Error response from daemon: not a directory.
+    See 'docker run --help'.`` when running the pre-commit tests, you may need to consider
+    `installing Docker directly in WSL 2 <https://dev.to/bowmanjd/install-docker-on-windows-wsl-without-docker-desktop-34m9>`_
+    instead of using Docker Desktop for Windows.
+
 - **WSL 2 Memory Usage** :
     WSL 2 can consume a lot of memory under the process name "Vmmem". To reclaim the memory after
     development you can:
@@ -166,6 +174,12 @@ environments. This can be done automatically by the following command (follow in
 
     pipx ensurepath
 
+In Mac
+
+.. code-block:: bash
+
+    python -m pipx ensurepath
+
 
 Resources required
 ==================
@@ -193,7 +207,7 @@ periodically. For details see
 On WSL2 you might want to increase your Virtual Hard Disk by following:
 `Expanding the size of your WSL 2 Virtual Hard Disk <https://docs.microsoft.com/en-us/windows/wsl/compare-versions#expanding-the-size-of-your-wsl-2-virtual-hard-disk>`_
 
-There is a command ``breeze resource-check`` that you can run to check available resources. See below
+There is a command ``breeze ci resource-check`` that you can run to check available resources. See below
 for details.
 
 Cleaning the environment
@@ -240,19 +254,13 @@ Those are all available commands for Breeze and details about the commands are d
 
 Breeze installed this way is linked to your checked out sources of Airflow so Breeze will
 automatically use latest version of sources from ``./dev/breeze``. Sometimes, when dependencies are
-updated ``breeze`` commands with offer you to ``self-upgrade`` (you just need to answer ``y`` when asked).
+updated ``breeze`` commands with offer you to run self-upgrade (you just need to answer ``y`` when asked).
 
 You can always run such self-upgrade at any time:
 
 .. code-block:: bash
 
-    breeze self-upgrade
-
-Those are all available flags of ``self-upgrade`` command:
-
-.. image:: ./images/breeze/output-self-upgrade.svg
-  :width: 100%
-  :alt: Breeze self-upgrade
+    breeze setup self-upgrade
 
 If you have several checked out Airflow sources, Breeze will warn you if you are using it from a different
 source tree and will offer you to re-install from those sources - to make sure that you are using the right
@@ -264,17 +272,11 @@ By default Breeze works on the version of Airflow that you run it in - in case y
 sources of Airflow and you installed Breeze from a directory - Breeze will be run on Airflow sources from
 where it was installed.
 
-You can run ``breeze version`` command to see where breeze installed from and what are the current sources
+You can run ``breeze setup version`` command to see where breeze installed from and what are the current sources
 that Breeze works on
 
-Those are all available flags of ``version`` command:
-
-.. image:: ./images/breeze/output-version.svg
-  :width: 100%
-  :alt: Breeze version
-
 Running Breeze for the first time
-=================================
+---------------------------------
 
 The First time you run Breeze, it pulls and builds a local version of Docker images.
 It pulls the latest Airflow CI images from the
@@ -294,25 +296,12 @@ You should set up the autocomplete option automatically by running:
 
 .. code-block:: bash
 
-   breeze setup-autocomplete
-
-You get the auto-completion working when you re-enter the shell (follow the instructions printed).
-The command will warn you and not reinstall autocomplete if you already did, but you can
-also force reinstalling the autocomplete via:
-
-.. code-block:: bash
-
-   breeze setup-autocomplete --force
-
-Those are all available flags of ``setup-autocomplete`` command:
+   breeze setup autocomplete
 
-.. image:: ./images/breeze/output-setup-autocomplete.svg
-  :width: 100%
-  :alt: Breeze setup autocomplete
 
+Customizing your environment
+----------------------------
 
-Customize your environment
---------------------------
 When you enter the Breeze environment, automatically an environment file is sourced from
 ``files/airflow-breeze-config/variables.env``.
 
@@ -354,27 +343,18 @@ inside container, to enable modified tmux configurations.
       </a>
     </div>
 
-Running tests in the CI interactive environment
-===============================================
-
-Breeze helps with running tests in the same environment/way as CI tests are run. You can run various
-types of tests while you enter Breeze CI interactive environment - this is described in detail
-in `<TESTING.rst>`_
+Regular development tasks
+=========================
 
-Here is the part of Breeze video which is relevant (note that it refers to the old ``./breeze-legacy``
-command and it is not yet available in the new ``breeze`` command):
-
-.. raw:: html
+The regular Breeze development tasks are available as top-level commands. Those tasks are most often
+used during the development, that's why they are available without any sub-command. More advanced
+commands are separated to sub-commands.
 
-    <div align="center">
-      <a href="https://youtu.be/4MCTXq-oF68?t=262">
-        <img src="images/breeze/overlayed_breeze_running_tests.png" width="640"
-             alt="Airflow Breeze - Running tests">
-      </a>
-    </div>
+Entering Breeze shell
+---------------------
 
-Choosing different Breeze environment configuration
-===================================================
+This is the most often used feature of breeze. It simply allows to enter the shell inside the Breeze
+development environment (inside the Breeze container).
 
 You can use additional ``breeze`` flags to choose your environment. You can specify a Python
 version to use, and backend (the meta-data database). Thanks to that, with Breeze, you can recreate the same
@@ -395,17 +375,6 @@ default settings.
 You can see which value of the parameters that can be stored persistently in cache marked with >VALUE<
 in the help of the commands.
 
-Another part of configuration is enabling/disabling cheatsheet, asciiart. The cheatsheet and asciiart can
-be disabled - they are "nice looking" and cheatsheet
-contains useful information for first time users but eventually you might want to disable both if you
-find it repetitive and annoying.
-
-With the config setting colour-blind-friendly communication for Breeze messages. By default we communicate
-with the users about information/errors/warnings/successes via colour-coded messages, but we can switch
-it off by passing ``--no-colour`` to config in which case the messages to the user printed by Breeze
-will be printed using different schemes (italic/bold/underline) to indicate different kind of messages
-rather than colours.
-
 Here is the part of Breeze video which is relevant (note that it refers to the old ``./breeze-legacy``
 command but it is very similar to current ``breeze`` command):
 
@@ -418,275 +387,159 @@ command but it is very similar to current ``breeze`` command):
       </a>
     </div>
 
-Those are all available flags of ``config`` command:
-
-.. image:: ./images/breeze/output-config.svg
-  :width: 100%
-  :alt: Breeze config
-
-
-You can also dump hash of the configuration options used - this is mostly use to generate the dump
-of help of the commands only when they change.
-
-.. image:: ./images/breeze/output-command-hash-export.svg
-  :width: 100%
-  :alt: Breeze command-hash-export
-
-Regenerating images for documentation
-=====================================
-
-This documentation contains exported images with "help" of their commands and parameters. You can
-regenerate all those images (which might be needed in case new version of rich is used) via
-``regenerate-breeze-images`` command.
-
-.. image:: ./images/breeze/output-regenerate-command-images.svg
-  :width: 100%
-  :alt: Breeze regenerate-command-images
+Building the documentation
+--------------------------
 
+To build documentation in Breeze, use the ``build-docs`` command:
 
-Compiling www assets
-====================
+.. code-block:: bash
 
-Airflow webserver needs to prepare www assets - compiled with node and yarn. The ``compile-www-assets``
-command takes care about it. This is needed when you want to run webserver inside of the breeze.
+     breeze build-docs
 
-.. image:: ./images/breeze/output-compile-www-assets.svg
-  :width: 100%
-  :alt: Breeze compile-www-assets
+Results of the build can be found in the ``docs/_build`` folder.
 
-Starting complete Airflow installation
-======================================
+The documentation build consists of three steps:
 
-For testing Airflow oyou often want to start multiple components (in multiple terminals). Breeze has
-built-in ``start-airflow`` command that start breeze container, launches multiple terminals using tmux
-and launches all Airflow necessary components in those terminals.
+* verifying consistency of indexes
+* building documentation
+* spell checking
 
-When you are starting airflow from local sources, www asset compilation is automatically executed before.
+You can choose only one stage of the two by providing ``--spellcheck-only`` or ``--docs-only`` after
+extra ``--`` flag.
 
 .. code-block:: bash
 
-    breeze --python 3.7 --backend mysql start-airflow
-
+    breeze build-docs --spellcheck-only
 
-You can also use it to start any released version of Airflow from ``PyPI`` with the
-``--use-airflow-version`` flag.
+This process can take some time, so in order to make it shorter you can filter by package, using the flag
+``--package-filter <PACKAGE-NAME>``. The package name has to be one of the providers or ``apache-airflow``. For
+instance, for using it with Amazon, the command would be:
 
 .. code-block:: bash
 
-    breeze --python 3.7 --backend mysql --use-airflow-version 2.2.5 start-airflow
-
-Those are all available flags of ``start-airflow`` command:
-
-.. image:: ./images/breeze/output-start-airflow.svg
-  :width: 100%
-  :alt: Breeze start-airflow
-
-
-Troubleshooting
-===============
-
-If you are having problems with the Breeze environment, try the steps below. After each step you
-can check whether your problem is fixed.
-
-1. If you are on macOS, check if you have enough disk space for Docker (Breeze will warn you if not).
-2. Stop Breeze with ``breeze stop``.
-3. Delete the ``.build`` directory and run ``breeze build-image``.
-4. Clean up Docker images via ``breeze cleanup`` command.
-5. Restart your Docker Engine and try again.
-6. Restart your machine and try again.
-7. Re-install Docker Desktop and try again.
-
-In case the problems are not solved, you can set the VERBOSE_COMMANDS variable to "true":
+     breeze build-docs --package-filter apache-airflow-providers-amazon
 
-.. code-block::
+Often errors during documentation generation come from the docstrings of auto-api generated classes.
+During the docs building auto-api generated files are stored in the ``docs/_api`` folder. This helps you
+easily identify the location the problems with documentation originated from.
 
-        export VERBOSE_COMMANDS="true"
+Those are all available flags of ``build-docs`` command:
 
+.. image:: ./images/breeze/output_build-docs.svg
+  :width: 100%
+  :alt: Breeze build documentation
 
-Then run the failed command, copy-and-paste the output from your terminal to the
-`Airflow Slack <https://s.apache.org/airflow-slack>`_  #airflow-breeze channel and
-describe your problem.
+Here is the part of Breeze video which is relevant (note that it refers to the old ``./breeze-legacy``
+command but it is very similar to current ``breeze`` command):
 
-Uses of the Airflow Breeze environment
-======================================
+.. raw:: html
 
-Airflow Breeze is a bash script serving as a "swiss-army-knife" of Airflow testing. Under the
-hood it uses other scripts that you can also run manually if you have problem with running the Breeze
-environment. Breeze script allows performing the following tasks:
+    <div align="center">
+      <a href="https://youtu.be/4MCTXq-oF68?t=1760">
+        <img src="images/breeze/overlayed_breeze_build_docs.png" width="640"
+             alt="Airflow Breeze - Build docs">
+      </a>
+    </div>
 
-Those are commands mostly used by contributors:
+Running static checks
+---------------------
 
-* Execute arbitrary command in the test environment with ``breeze shell`` command
-* Enter interactive shell in CI container when ``shell`` (or no command) is specified
-* Start containerised, development-friendly airflow installation with ``breeze start-airflow`` command
-* Compile www assets for webserver ``breeze compile-www-assets`` command
-* Build documentation with ``breeze build-docs`` command
-* Initialize local virtualenv with ``./scripts/tools/initialize_virtualenv.py`` command
-* Run static checks with autocomplete support ``breeze static-checks`` command
-* Run test specified with ``breeze tests`` command
-* Run docker-compose tests with ``breeze docker-compose-tests`` command.
-* Build CI docker image with ``breeze build-image`` command
-* Cleanup breeze with ``breeze cleanup`` command
+You can run static checks via Breeze. You can also run them via pre-commit command but with auto-completion
+Breeze makes it easier to run selective static checks. If you press <TAB> after the static-check and if
+you have auto-complete setup you should see auto-completable list of all checks available.
 
-Additional management tasks:
+.. code-block:: bash
 
-* Join running interactive shell with ``breeze exec`` command
-* Stop running interactive environment with ``breeze stop`` command
-* Execute arbitrary docker-compose command with ``./breeze-legacy docker-compose`` command
+     breeze static-checks -t run-mypy
 
-Tests
------
+The above will run mypy check for currently staged files.
 
-You can regular unit tests with ``breeze`` in two different ways, either interactively run tests with
-the default ``shell`` command or via the ``tests`` command.
+You can also pass specific pre-commit flags for example ``--all-files`` :
 
-Iterate on tests interactively
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.. code-block:: bash
 
-You can simply enter the ``breeze`` container and run ``pytest`` command there. You can enter the
-container via just ``breeze`` command or ``breeze shell`` command (the latter has more options
-useful when you run integration or system tests). This is the best way if you want to interactively
-run selected tests and iterate with the tests. Once you enter ``breeze`` environment it is ready
-out-of-the-box to run your tests by running the right ``pytest`` command (autocomplete should help
-you with autocompleting test name if you start typing ``pytest tests<TAB>``).
+     breeze static-checks -t run-mypy --all-files
 
-Here are few examples:
+The above will run mypy check for all files.
 
-Running single test:
+There is a convenience ``--last-commit`` flag that you can use to run static check on last commit only:
 
 .. code-block:: bash
 
-    pytest tests/core/test_core.py::TestCore::test_check_operators
+     breeze static-checks -t run-mypy --last-commit
 
-To run the whole test class:
+The above will run mypy check for all files in the last commit.
+
+There is another convenience ``--commit-ref`` flag that you can use to run static check on specific commit:
 
 .. code-block:: bash
 
-    pytest tests/core/test_core.py::TestCore
+     breeze static-checks -t run-mypy --commit-ref 639483d998ecac64d0fef7c5aa4634414065f690
 
-You can re-run the tests interactively, add extra parameters to pytest and modify the files before
-re-running the test to iterate over the tests. You can also add more flags when starting the
-``breeze shell`` command when you run integration tests or system tests. Read more details about it
-in the ``TESTING.rst <TESTING.rst#>`` where all the test types of our are explained and more information
-on how to run them.
+The above will run mypy check for all files in the 639483d998ecac64d0fef7c5aa4634414065f690 commit.
+Any ``commit-ish`` reference from Git will work here (branch, tag, short/long hash etc.)
 
-Running group of tests
-~~~~~~~~~~~~~~~~~~~~~~
+If you ever need to get a list of the files that will be checked (for troubleshooting) use these commands:
 
-You can also run tests via built-in ``breeze tests`` command - similarly as iterative ``pytest`` command
-allows to run test individually, or by class or in any other way pytest allows to test them, but it
-also allows to run the tests in the same test "types" that are used to run the tests in CI: Core, Always
-API, Providers. This how our CI runs them - running each group in parallel to other groups and you can
-replicate this behaviour.
+.. code-block:: bash
 
-Another interesting use of the ``breeze tests`` command is that you can easily specify sub-set of the
-tests for Providers. ``breeze tests --test-type "Providers[airbyte,http]`` for example will only run
-tests for airbyte and http providers.
+     breeze static-checks -t identity --verbose # currently staged files
+     breeze static-checks -t identity --verbose --from-ref $(git merge-base main HEAD) --to-ref HEAD #  branch updates
 
-Here is the detailed set of options for the ``breeze tests`` command.
+Those are all available flags of ``static-checks`` command:
 
-.. image:: ./images/breeze/output-tests.svg
+.. image:: ./images/breeze/output_static-checks.svg
   :width: 100%
-  :alt: Breeze tests
-
-Kubernetes tests
-----------------
-
-* Manage KinD Kubernetes cluster and deploy Airflow to KinD cluster ``./breeze-legacy kind-cluster`` commands
-* Run Kubernetes tests  specified with ``./breeze-legacy kind-cluster tests`` command
-* Enter the interactive kubernetes test environment with ``./breeze-legacy kind-cluster shell`` command
-
-CI Image tasks
---------------
-
-The image building is usually run for users automatically when needed,
-but sometimes Breeze users might want to manually build, pull or verify the CI images.
-
-* Build CI docker image with ``breeze build-image`` command
-* Pull CI images in parallel ``breeze pull-image`` command
-* Verify CI image ``breeze verify-image`` command
-
-PROD Image tasks
-----------------
-
-Users can also build Production images when they are developing them. However when you want to
-use the PROD image, the regular docker build commands are recommended. See
-`building the image <https://airflow.apache.org/docs/docker-stack/build.html>`_
-
-* Build PROD image with ``breeze build-prod-image`` command
-* Pull PROD image in parallel ``breeze pull-prod-image`` command
-* Verify CI image ``breeze verify-prod-image`` command
+  :alt: Breeze static checks
 
-Configuration and maintenance
------------------------------
+Here is the part of Breeze video which is relevant (note that it refers to the old ``./breeze-legacy``
+command but it is very similar to current ``breeze`` command):
 
-* Cleanup breeze with ``breeze cleanup`` command
-* Self-upgrade breeze with ``breeze self-upgrade`` command
-* Setup autocomplete for Breeze with ``breeze setup-autocomplete`` command
-* Print Breeze version with ``breeze version`` command
-* Outputs hash of commands defined by ``breeze`` with ``command-hash-export`` (useful to avoid needless
-  regeneration of Breeze images)
+.. raw:: html
 
-CI tasks
---------
-* Freeing space needed to run CI tests with ``breeze free-space`` command
-* Fixing ownership of files in your repository with ``breeze fix-ownership`` command
-* Checking available resources for docker with ``breeze resource-check`` command
-* Deciding which tests should be run with ``breeze selective-check`` command
+    <div align="center">
+      <a href="https://youtu.be/4MCTXq-oF68?t=1675">
+        <img src="images/breeze/overlayed_breeze_static_checks.png" width="640"
+             alt="Airflow Breeze - Static checks">
+      </a>
+    </div>
 
-Release tasks
--------------
+.. note::
 
-Maintainers also can use Breeze for other purposes (those are commands that regular contributors likely
-do not need or have no access to run). Those are usually connected with releasing Airflow:
+    When you run static checks, some of the artifacts (mypy_cache) is stored in docker-compose volume
+    so that it can speed up static checks execution significantly. However, sometimes, the cache might
+    get broken, in which case you should run ``breeze stop`` to clean up the cache.
 
-* Prepare cache for CI: ``breeze build-image --prepare-build-cache`` and
-  ``breeze build-prod image --prepare-build-cache``(needs buildx plugin and write access to registry ghcr.io)
-* Generate constraints with ``breeze generate-constraints`` (needed when conflicting changes are merged)
-* Prepare airflow packages: ``breeze prepare-airflow-package`` (when releasing Airflow)
-* Verify providers: ``breeze verify-provider-packages`` (when releasing provider packages) - including importing
-  the providers in an earlier airflow version.
-* Prepare provider documentation ``breeze prepare-provider-documentation`` and prepare provider packages
-  ``breeze prepare-provider-packages`` (when releasing provider packages)
-* Finding the updated dependencies since the last successful build when we have conflict with
-  ``breeze find-newer-dependencies`` command
-* Release production images to DockerHub with ``breeze release-prod-images`` command
 
+Starting Airflow
+----------------
 
-Details of Breeze usage
-=======================
+For testing Airflow you often want to start multiple components (in multiple terminals). Breeze has
+built-in ``start-airflow`` command that start breeze container, launches multiple terminals using tmux
+and launches all Airflow necessary components in those terminals.
 
-Database volumes in Breeze
---------------------------
+When you are starting airflow from local sources, www asset compilation is automatically executed before.
 
-Breeze keeps data for all it's integration in named docker volumes. Each backend and integration
-keeps data in their own volume. Those volumes are persisted until ``breeze stop`` command.
-You can also preserve the volumes by adding flag ``--preserve-volumes`` when you run the command.
-Then, next time when you start Breeze, it will have the data pre-populated.
+.. code-block:: bash
 
-Those are all available flags of ``stop`` command:
+    breeze --python 3.7 --backend mysql start-airflow
 
-.. image:: ./images/breeze/output-stop.svg
-  :width: 100%
-  :alt: Breeze stop
 
-Image cleanup
---------------
+You can also use it to start any released version of Airflow from ``PyPI`` with the
+``--use-airflow-version`` flag.
 
-Breeze uses docker images heavily and those images are rebuild periodically. This might cause extra
-disk usage by the images. If you need to clean-up the images periodically you can run
-``breeze cleanup`` command (by default it will skip removing your images before cleaning up but you
-can also remove the images to clean-up everything by adding ``--include-current-images``).
+.. code-block:: bash
 
-Those are all available flags of ``cleanup`` command:
+    breeze --python 3.7 --backend mysql --use-airflow-version 2.2.5 start-airflow
 
+Those are all available flags of ``start-airflow`` command:
 
-.. image:: ./images/breeze/output-cleanup.svg
+.. image:: ./images/breeze/output_start-airflow.svg
   :width: 100%
-  :alt: Breeze cleanup
+  :alt: Breeze start-airflow
 
-Launching multiple terminals
-----------------------------
+Launching multiple terminals in the same environment
+----------------------------------------------------
 
 Often if you want to run full airflow in the Breeze environment you need to launch multiple terminals and
 run ``airflow webserver``, ``airflow scheduler``, ``airflow worker`` in separate terminals.
@@ -729,82 +582,70 @@ Here is the part of Breeze video which is relevant:
 
 Those are all available flags of ``exec`` command:
 
-.. image:: ./images/breeze/output-exec.svg
+.. image:: ./images/breeze/output_exec.svg
   :width: 100%
   :alt: Breeze exec
 
-Additional tools
-----------------
-
-To shrink the Docker image, not all tools are pre-installed in the Docker image. But we have made sure that there
-is an easy process to install additional tools.
 
-Additional tools are installed in ``/files/bin``. This path is added to ``$PATH``, so your shell will
-automatically autocomplete files that are in that directory. You can also keep the binaries for your tools
-in this directory if you need to.
+Compiling www assets
+--------------------
 
-**Installation scripts**
+Airflow webserver needs to prepare www assets - compiled with node and yarn. The ``compile-www-assets``
+command takes care about it. This is needed when you want to run webserver inside of the breeze.
 
-For the development convenience, we have also provided installation scripts for commonly used tools. They are
-installed to ``/files/opt/``, so they are preserved after restarting the Breeze environment. Each script
-is also available in ``$PATH``, so just type ``install_<TAB>`` to get a list of tools.
+.. image:: ./images/breeze/output_compile-www-assets.svg
+  :width: 100%
+  :alt: Breeze compile-www-assets
 
-Currently available scripts:
+Breeze cleanup
+--------------
 
-* ``install_aws.sh`` - installs `the AWS CLI <https://aws.amazon.com/cli/>`__ including
-* ``install_az.sh`` - installs `the Azure CLI <https://github.com/Azure/azure-cli>`__ including
-* ``install_gcloud.sh`` - installs `the Google Cloud SDK <https://cloud.google.com/sdk>`__ including
-  ``gcloud``, ``gsutil``.
-* ``install_imgcat.sh`` - installs `imgcat - Inline Images Protocol <https://iterm2.com/documentation-images.html>`__
-  for iTerm2 (Mac OS only)
-* ``install_java.sh`` - installs `the OpenJDK 8u41 <https://openjdk.java.net/>`__
-* ``install_kubectl.sh`` - installs `the Kubernetes command-line tool, kubectl <https://kubernetes.io/docs/reference/kubectl/kubectl/>`__
-* ``install_snowsql.sh`` - installs `SnowSQL <https://docs.snowflake.com/en/user-guide/snowsql.html>`__
-* ``install_terraform.sh`` - installs `Terraform <https://www.terraform.io/docs/index.html>`__
+Breeze uses docker images heavily and those images are rebuild periodically. This might cause extra
+disk usage by the images. If you need to clean-up the images periodically you can run
+``breeze setup cleanup`` command (by default it will skip removing your images before cleaning up but you
+can also remove the images to clean-up everything by adding ``--all``).
 
-Launching Breeze integrations
------------------------------
+Those are all available flags of ``cleanup`` command:
 
-When Breeze starts, it can start additional integrations. Those are additional docker containers
-that are started in the same docker-compose command. Those are required by some of the tests
-as described in `<TESTING.rst#airflow-integration-tests>`_.
 
-By default Breeze starts only airflow container without any integration enabled. If you selected
-``postgres`` or ``mysql`` backend, the container for the selected backend is also started (but only the one
-that is selected). You can start the additional integrations by passing ``--integration`` flag
-with appropriate integration name when starting Breeze. You can specify several ``--integration`` flags
-to start more than one integration at a time.
-Finally you can specify ``--integration all`` to start all integrations.
+.. image:: ./images/breeze/output_cleanup.svg
+  :width: 100%
+  :alt: Breeze setup cleanup
 
-Once integration is started, it will continue to run until the environment is stopped with
-``breeze stop`` command. or restarted via ``breeze restart`` command
+Running arbitrary commands in container
+---------------------------------------
 
-Note that running integrations uses significant resources - CPU and memory.
+More sophisticated usages of the breeze shell is using the ``breeze shell`` command - it has more parameters
+and you can also use it to execute arbitrary commands inside the container.
 
-Here is the part of Breeze video which is relevant (note that it refers to the old ``./breeze-legacy``
-command but it is very similar to current ``breeze`` command):
+.. code-block:: bash
 
-.. raw:: html
+     breeze shell "ls -la"
 
-    <div align="center">
-      <a href="https://youtu.be/4MCTXq-oF68?t=1187">
-        <img src="images/breeze/overlayed_breeze_integrations.png" width="640"
-             alt="Airflow Breeze - Integrations">
-      </a>
-    </div>
+Those are all available flags of ``shell`` command:
 
-Managing CI images
-------------------
+.. image:: ./images/breeze/output_shell.svg
+  :width: 100%
+  :alt: Breeze shell
 
-With Breeze you can build images that are used by Airflow CI and production ones.
 
-For all development tasks, unit tests, integration tests, and static code checks, we use the
-**CI image** maintained in GitHub Container Registry.
+Stopping the environment
+------------------------
 
-The CI image is built automatically as needed, however it can be rebuilt manually with
-``build-image`` command. The production
-image should be built manually - but also a variant of this image is built automatically when
-kubernetes tests are executed see `Running Kubernetes tests <#running-kubernetes-tests>`_
+After starting up, the environment runs in the background and takes quite some memory which you might
+want to free for other things you are running on your host.
+
+You can always stop it via:
+
+.. code-block:: bash
+
+   breeze stop
+
+Those are all available flags of ``stop`` command:
+
+.. image:: ./images/breeze/output_stop.svg
+  :width: 100%
+  :alt: Breeze stop
 
 Here is the part of Breeze video which is relevant (note that it refers to the old ``./breeze-legacy``
 command but it is very similar to current ``breeze`` command):
@@ -812,184 +653,270 @@ command but it is very similar to current ``breeze`` command):
 .. raw:: html
 
     <div align="center">
-      <a href="https://youtu.be/4MCTXq-oF68?t=1387">
-        <img src="images/breeze/overlayed_breeze_build_images.png" width="640"
-             alt="Airflow Breeze - Building images">
+      <a href="https://youtu.be/4MCTXq-oF68?t=2639">
+        <img src="images/breeze/overlayed_breeze_stop.png" width="640"
+             alt="Airflow Breeze - Stop environment">
       </a>
     </div>
 
-Building the image first time pulls a pre-built version of images from the Docker Hub, which may take some
-time. But for subsequent source code changes, no wait time is expected.
-However, changes to sensitive files like ``setup.py`` or ``Dockerfile.ci`` will trigger a rebuild
-that may take more time though it is highly optimized to only rebuild what is needed.
 
-Breeze has built in mechanism to check if your local image has not diverged too much from the
-latest image build on CI. This might happen when for example latest patches have been released as new
-Python images or when significant changes are made in the Dockerfile. In such cases, Breeze will
-download the latest images before rebuilding because this is usually faster than rebuilding the image.
+Troubleshooting
+===============
 
-Those are all available flags of ``build-image`` command:
+If you are having problems with the Breeze environment, try the steps below. After each step you
+can check whether your problem is fixed.
 
-.. image:: ./images/breeze/output-build-image.svg
-  :width: 100%
-  :alt: Breeze build-image
+1. If you are on macOS, check if you have enough disk space for Docker (Breeze will warn you if not).
+2. Stop Breeze with ``breeze stop``.
+3. Delete the ``.build`` directory and run ``breeze ci-image build``.
+4. Clean up Docker images via ``breeze cleanup`` command.
+5. Restart your Docker Engine and try again.
+6. Restart your machine and try again.
+7. Re-install Docker Desktop and try again.
 
-You can also pull the CI images locally in parallel with optional verification.
+In case the problems are not solved, you can set the VERBOSE_COMMANDS variable to "true":
 
-Those are all available flags of ``pull-image`` command:
+.. code-block::
 
-.. image:: ./images/breeze/output-pull-image.svg
-  :width: 100%
-  :alt: Breeze pull-image
+        export VERBOSE_COMMANDS="true"
 
-Finally, you can verify CI image by running tests - either with the pulled/built images or
-with an arbitrary image.
 
-Those are all available flags of ``verify-image`` command:
+Then run the failed command, copy-and-paste the output from your terminal to the
+`Airflow Slack <https://s.apache.org/airflow-slack>`_  #airflow-breeze channel and
+describe your problem.
+
+Advanced commands
+=================
+
+Airflow Breeze is a bash script serving as a "swiss-army-knife" of Airflow testing. Under the
+hood it uses other scripts that you can also run manually if you have problem with running the Breeze
+environment. Breeze script allows performing the following tasks:
+
+Running tests
+-------------
+
+You can run tests with ``breeze``. There are various tests type and breeze allows to run different test
+types easily. You can run unit tests in different ways, either interactively run tests with the default
+``shell`` command or via the ``testing`` commands. The latter allows to run more kinds of tests easily.
 
-.. image:: ./images/breeze/output-verify-image.svg
+Here is the detailed set of options for the ``breeze testing`` command.
+
+.. image:: ./images/breeze/output_testing.svg
   :width: 100%
-  :alt: Breeze verify-image
+  :alt: Breeze testing
 
-Verifying providers
--------------------
+Iterate on tests interactively via ``shell`` command
+....................................................
 
-Breeze can also be used to verify if provider classes are importable and if they are following the
-right naming conventions. This happens automatically on CI but you can also run it manually.
+You can simply enter the ``breeze`` container and run ``pytest`` command there. You can enter the
+container via just ``breeze`` command or ``breeze shell`` command (the latter has more options
+useful when you run integration or system tests). This is the best way if you want to interactively
+run selected tests and iterate with the tests. Once you enter ``breeze`` environment it is ready
+out-of-the-box to run your tests by running the right ``pytest`` command (autocomplete should help
+you with autocompleting test name if you start typing ``pytest tests<TAB>``).
+
+Here are few examples:
+
+Running single test:
 
 .. code-block:: bash
 
-     breeze verify-provider-packages
+    pytest tests/core/test_core.py::TestCore::test_check_operators
 
-You can also run the verification with an earlier airflow version to check for compatibility.
+To run the whole test class:
 
 .. code-block:: bash
 
-    breeze verify-provider-packages --use-airflow-version 2.1.0
+    pytest tests/core/test_core.py::TestCore
 
-All the command parameters are here:
+You can re-run the tests interactively, add extra parameters to pytest and modify the files before
+re-running the test to iterate over the tests. You can also add more flags when starting the
+``breeze shell`` command when you run integration tests or system tests. Read more details about it
+in the ``TESTING.rst <TESTING.rst#>`` where all the test types of our are explained and more information
+on how to run them.
+
+Here is the part of Breeze video which is relevant (note that it refers to the old ``./breeze-legacy``
+command and it is not yet available in the new ``breeze`` command):
 
-.. image:: ./images/breeze/output-verify-provider-packages.svg
+.. raw:: html
+
+    <div align="center">
+      <a href="https://youtu.be/4MCTXq-oF68?t=262">
+        <img src="images/breeze/overlayed_breeze_running_tests.png" width="640"
+             alt="Airflow Breeze - Running tests">
+      </a>
+    </div>
+
+
+Running unit/integration tests in groups
+........................................
+
+Another option you have is that you can also run tests via built-in ``breeze testing`` command.
+The iterative ``pytest`` command allows to run test individually, or by class or in any other way
+pytest allows to test them and run them interactively, but ``breeze testing`` command allows to
+run the tests in the same test "types" that are used to run the tests in CI: for example Core, Always
+API, Providers. This how our CI runs them - running each group in parallel to other groups and you can
+replicate this behaviour.
+
+Another interesting use of the ``breeze testing tests`` command is that you can easily specify sub-set of the
+tests for Providers. ``breeze testing tests --test-type "Providers[airbyte,http]`` for example will only run
+tests for airbyte and http providers.
+
+Here is the detailed set of options for the ``breeze testing tests`` command.
+
+.. image:: ./images/breeze/output_testing_tests.svg
   :width: 100%
-  :alt: Breeze verify-provider-packages
+  :alt: Breeze testing tests
 
-Preparing packages
-------------------
+Running docker-compose tests
+............................
 
-Breeze can also be used to prepare airflow packages - both "apache-airflow" main package and
-provider packages.
+You can use Breeze to run docker-compose tests. Those tests are run using Production image
+and they are running test with the Quick-start docker compose we have.
 
-You can read more about testing provider packages in
-`TESTING.rst <TESTING.rst#running-tests-with-provider-packages>`_
+.. image:: ./images/breeze/output_testing_docker-compose-tests.svg
+  :width: 100%
+  :alt: Breeze testing docker-compose-tests
 
-There are several commands that you can run in Breeze to manage and build packages:
 
-* preparing Provider documentation files
-* preparing Airflow packages
-* preparing Provider packages
+Running Kubernetes tests
+........................
 
-Preparing provider documentation files is part of the release procedure by the release managers
-and it is described in detail in `dev <dev/README_RELEASE_PROVIDER_PACKAGES.md>`_ .
+Breeze helps with running Kubernetes tests in the same environment/way as CI tests are run.
+Breeze helps to setup KinD cluster for testing, setting up virtualenv and downloads the right tools
+automatically to run the tests.
 
-The below example perform documentation preparation for provider packages.
+You can:
 
-.. code-block:: bash
+* Manage KinD Kubernetes cluster and deploy Airflow to KinD cluster ``./breeze-legacy kind-cluster`` commands
+* Run Kubernetes tests  specified with ``./breeze-legacy kind-cluster tests`` command
+* Enter the interactive kubernetes test environment with ``./breeze-legacy kind-cluster shell`` command
 
-     breeze prepare-provider-documentation
+This is described in detail in `Testing Kubernetes <TESTING.rst#running-tests-with-kubernetes>`_.
 
-By default, the documentation preparation runs package verification to check if all packages are
-importable, but you can add ``--skip-package-verification`` to skip it.
+Here is the part of Breeze video which is relevant (note that it refers to the old ``./breeze-legacy``
+command and it is not yet available in the current ``breeze`` command):
 
-.. code-block:: bash
+.. raw:: html
 
-     breeze prepare-provider-documentation --skip-package-verification
+    <div align="center">
+      <a href="https://youtu.be/4MCTXq-oF68?t=2093">
+        <img src="images/breeze/overlayed_breeze_kubernetes_tests.png" width="640"
+             alt="Airflow Breeze - Kubernetes tests">
+      </a>
+    </div>
 
-You can also add ``--answer yes`` to perform non-interactive build.
+CI Image tasks
+--------------
 
-.. image:: ./images/breeze/output-prepare-provider-documentation.svg
-  :width: 100%
-  :alt: Breeze prepare-provider-documentation
+The image building is usually run for users automatically when needed,
+but sometimes Breeze users might want to manually build, pull or verify the CI images.
 
-The packages are prepared in ``dist`` folder. Note, that this command cleans up the ``dist`` folder
-before running, so you should run it before generating airflow package below as it will be removed.
+.. image:: ./images/breeze/output_ci-image.svg
+  :width: 100%
+  :alt: Breeze ci-image
 
-The below example builds provider packages in the wheel format.
+For all development tasks, unit tests, integration tests, and static code checks, we use the
+**CI image** maintained in GitHub Container Registry.
 
-.. code-block:: bash
+The CI image is built automatically as needed, however it can be rebuilt manually with
+``ci image build`` command.
 
-     breeze prepare-provider-packages
+Here is the part of Breeze video which is relevant (note that it refers to the old ``./breeze-legacy``
+command but it is very similar to current ``breeze`` command):
 
-If you run this command without packages, you will prepare all packages, you can however specify
-providers that you would like to build. By default ``both`` types of packages are prepared (
-``wheel`` and ``sdist``, but you can change it providing optional --package-format flag.
+.. raw:: html
 
-.. code-block:: bash
+    <div align="center">
+      <a href="https://youtu.be/4MCTXq-oF68?t=1387">
+        <img src="images/breeze/overlayed_breeze_build_images.png" width="640"
+             alt="Airflow Breeze - Building images">
+      </a>
+    </div>
 
-     breeze prepare-provider-packages google amazon
+Building the image first time pulls a pre-built version of images from the Docker Hub, which may take some
+time. But for subsequent source code changes, no wait time is expected.
+However, changes to sensitive files like ``setup.py`` or ``Dockerfile.ci`` will trigger a rebuild
+that may take more time though it is highly optimized to only rebuild what is needed.
 
-You can see all providers available by running this command:
+Breeze has built in mechanism to check if your local image has not diverged too much from the
+latest image build on CI. This might happen when for example latest patches have been released as new
+Python images or when significant changes are made in the Dockerfile. In such cases, Breeze will
+download the latest images before rebuilding because this is usually faster than rebuilding the image.
 
-.. code-block:: bash
+Building CI image
+.................
 
-     breeze prepare-provider-packages --help
+Those are all available flags of ``ci-image build`` command:
 
-.. image:: ./images/breeze/output-prepare-provider-packages.svg
+.. image:: ./images/breeze/output_ci-image_build.svg
   :width: 100%
-  :alt: Breeze prepare-provider-packages
+  :alt: Breeze ci-image build
 
-You can prepare airflow packages using breeze:
+Pulling CI image
+................
 
-.. code-block:: bash
+You can also pull the CI images locally in parallel with optional verification.
 
-     breeze prepare-airflow-package
+Those are all available flags of ``pull`` command:
 
-This prepares airflow .whl package in the dist folder.
+.. image:: ./images/breeze/output_ci-image_pull.svg
+  :width: 100%
+  :alt: Breeze ci-image pull
 
-Again, you can specify optional ``--package-format`` flag to build selected formats of airflow packages,
-default is to build ``both`` type of packages ``sdist`` and ``wheel``.
+Verifying CI image
+..................
 
-.. code-block:: bash
+Finally, you can verify CI image by running tests - either with the pulled/built images or
+with an arbitrary image.
 
-     breeze prepare-airflow-package --package-format=wheel
+Those are all available flags of ``verify`` command:
 
-.. image:: ./images/breeze/output-prepare-airflow-package.svg
+.. image:: ./images/breeze/output_ci-image_verify.svg
   :width: 100%
-  :alt: Breeze prepare-airflow-package
+  :alt: Breeze ci-image verify
 
-Managing Production images
---------------------------
+PROD Image tasks
+----------------
+
+Users can also build Production images when they are developing them. However when you want to
+use the PROD image, the regular docker build commands are recommended. See
+`building the image <https://airflow.apache.org/docs/docker-stack/build.html>`_
+
+.. image:: ./images/breeze/output_prod-image.svg
+  :width: 100%
+  :alt: Breeze prod-image
 
 The **Production image** is also maintained in GitHub Container Registry for Caching
 and in ``apache/airflow`` manually pushed for released versions. This Docker image (built using official
 Dockerfile) contains size-optimised Airflow installation with selected extras and dependencies.
 
 However in many cases you want to add your own custom version of the image - with added apt dependencies,
-python dependencies, additional Airflow extras. Breeze's ``build-image`` command helps to build your own,
+python dependencies, additional Airflow extras. Breeze's ``prod-image build`` command helps to build your own,
 customized variant of the image that contains everything you need.
 
-You can switch to building the production image by using ``build-prod-image`` command.
+You can building the production image manually by using ``prod-image build`` command.
 Note, that the images can also be built using ``docker build`` command by passing appropriate
 build-args as described in `IMAGES.rst <IMAGES.rst>`_ , but Breeze provides several flags that
-makes it easier to do it. You can see all the flags by running ``breeze build-prod-image --help``,
+makes it easier to do it. You can see all the flags by running ``breeze prod-image build --help``,
 but here typical examples are presented:
 
 .. code-block:: bash
 
-     breeze build-prod-image --additional-extras "jira"
+     breeze prod-image build --additional-extras "jira"
 
 This installs additional ``jira`` extra while installing airflow in the image.
 
 
 .. code-block:: bash
 
-     breeze build-prod-image --additional-python-deps "torchio==0.17.10"
+     breeze prod-image build --additional-python-deps "torchio==0.17.10"
 
 This install additional pypi dependency - torchio in specified version.
 
-
 .. code-block:: bash
 
-     breeze build-prod-image --additional-dev-apt-deps "libasound2-dev" \
+     breeze prod-image build --additional-dev-apt-deps "libasound2-dev" \
          --additional-runtime-apt-deps "libasound2"
 
 This installs additional apt dependencies - ``libasound2-dev`` in the build image and ``libasound`` in the
@@ -1002,16 +929,19 @@ suffix and they need to also be paired with corresponding runtime dependency add
 
 .. code-block:: bash
 
-     breeze build-prod-image --python 3.7 --additional-dev-deps "libasound2-dev" \
+     breeze prod-image build --python 3.7 --additional-dev-deps "libasound2-dev" \
         --additional-runtime-apt-deps "libasound2"
 
 Same as above but uses python 3.7.
 
+Building PROD image
+...................
+
 Those are all available flags of ``build-prod-image`` command:
 
-.. image:: ./images/breeze/output-build-prod-image.svg
+.. image:: ./images/breeze/output_prod-image_build.svg
   :width: 100%
-  :alt: Breeze commands
+  :alt: Breeze prod-image build
 
 Here is the part of Breeze video which is relevant (note that it refers to the old ``./breeze-legacy``
 command but it is very similar to current ``breeze`` command):
@@ -1025,179 +955,342 @@ command but it is very similar to current ``breeze`` command):
       </a>
     </div>
 
+Pulling PROD image
+..................
+
 You can also pull PROD images in parallel with optional verification.
 
 Those are all available flags of ``pull-prod-image`` command:
 
-.. image:: ./images/breeze/output-pull-prod-image.svg
+.. image:: ./images/breeze/output_prod-image_pull.svg
   :width: 100%
-  :alt: Breeze pull-prod-image
+  :alt: Breeze prod-image pull
+
+Verifying PROD image
+....................
 
 Finally, you can verify PROD image by running tests - either with the pulled/built images or
 with an arbitrary image.
 
 Those are all available flags of ``verify-prod-image`` command:
 
-.. image:: ./images/breeze/output-verify-prod-image.svg
+.. image:: ./images/breeze/output_prod-image_verify.svg
   :width: 100%
-  :alt: Breeze verify-prod-image
+  :alt: Breeze prod-image verify
 
-Releasing Production images to DockerHub
-----------------------------------------
 
-The **Production image** can be released by release managers who have permissions to push the image. This
-happens only when there is an RC candidate or final version of Airflow released.
+Breeze setup
+------------
 
-You release "regular" and "slim" images as separate steps.
+Breeze has tools that you can use to configure defaults and breeze behaviours and perform some maintenance
+operations that might be necessary when you add new commands in Breeze. It also allows to configure your
+host operating system for Breeze autocompletion.
 
-Releasing "regular" images:
+Those are all available flags of ``setup`` command:
 
-.. code-block:: bash
+.. image:: ./images/breeze/output_setup.svg
+  :width: 100%
+  :alt: Breeze setup
 
-     breeze release-prod-images --airflow-version 2.4.0
+Breeze configuration
+....................
 
-Or "slim" images:
+You can configure and inspect settings of Breeze command via this command: Python version, Backend used as
+well as backend versions.
+
+Another part of configuration is enabling/disabling cheatsheet, asciiart. The cheatsheet and asciiart can
+be disabled - they are "nice looking" and cheatsheet
+contains useful information for first time users but eventually you might want to disable both if you
+find it repetitive and annoying.
+
+With the config setting colour-blind-friendly communication for Breeze messages. By default we communicate
+with the users about information/errors/warnings/successes via colour-coded messages, but we can switch
+it off by passing ``--no-colour`` to config in which case the messages to the user printed by Breeze
+will be printed using different schemes (italic/bold/underline) to indicate different kind of messages
+rather than colours.
+
+Those are all available flags of ``setup config`` command:
+
+.. image:: ./images/breeze/output_setup_config.svg
+  :width: 100%
+  :alt: Breeze setup config
+
+Setting up autocompletion
+.........................
+
+You get the auto-completion working when you re-enter the shell (follow the instructions printed).
+The command will warn you and not reinstall autocomplete if you already did, but you can
+also force reinstalling the autocomplete via:
 
 .. code-block:: bash
 
-     breeze release-prod-images --airflow-version 2.4.0 --slim-images
+   breeze setup autocomplete --force
 
-By default when you are releasing the "final" image, we also tag image with "latest" tags but this
-step can be skipped if you pass the ``--skip-latest`` flag.
+Those are all available flags of ``setup-autocomplete`` command:
 
-These are all of the available flags for the ``release-prod-images`` command:
+.. image:: ./images/breeze/output_setup_autocomplete.svg
+  :width: 100%
+  :alt: Breeze setup autocomplete
 
-.. image:: ./images/breeze/output-release-prod-images.svg
+Breeze version
+..............
+
+You can display Breeze version and with ``--verbose`` flag it can provide more information: where
+Breeze is installed from and details about setup hashes.
+
+Those are all available flags of ``version`` command:
+
+.. image:: ./images/breeze/output_setup_version.svg
   :width: 100%
-  :alt: Release prod images
+  :alt: Breeze version
 
 
-Running static checks
----------------------
+Breeze self-upgrade
+...................
 
-You can run static checks via Breeze. You can also run them via pre-commit command but with auto-completion
-Breeze makes it easier to run selective static checks. If you press <TAB> after the static-check and if
-you have auto-complete setup you should see auto-completable list of all checks available.
+You can self-upgrade breeze automatically. Those are all available flags of ``self-upgrade`` command:
 
-.. code-block:: bash
+.. image:: ./images/breeze/output_setup_self-upgrade.svg
+  :width: 100%
+  :alt: Breeze setup self-upgrade
 
-     breeze static-checks -t mypy
+Exporting breeze command hash output
+....................................
 
-The above will run mypy check for currently staged files.
+You can also dump hash of the configuration options used - this is mostly used to generate the dump
+of help of the commands only when they change by pre-commit..
 
-You can also pass specific pre-commit flags for example ``--all-files`` :
+.. image:: ./images/breeze/output_setup_command-hash-export.svg
+  :width: 100%
+  :alt: Breeze config command-hash-export
 
-.. code-block:: bash
 
-     breeze static-checks -t mypy --all-files
+Regenerating images for documentation
+.....................................
 
-The above will run mypy check for all files.
+This documentation contains exported images with "help" of their commands and parameters. You can
+regenerate all those images (which might be needed in case new version of rich is used) via
+``regenerate-command-images`` command.
 
-There is a convenience ``--last-commit`` flag that you can use to run static check on last commit only:
+.. image:: ./images/breeze/output_setup_regenerate-command-images.svg
+  :width: 100%
+  :alt: Breeze setup regenerate-command-images
 
-.. code-block:: bash
 
-     breeze static-checks -t mypy --last-commit
+CI tasks
+--------
 
-The above will run mypy check for all files in the last commit.
+Breeze hase a number of commands that are mostly used in CI environment to perform cleanup.
 
-There is another convenience ``--commit-ref`` flag that you can use to run static check on specific commit:
+.. image:: ./images/breeze/output_ci.svg
+  :width: 100%
+  :alt: Breeze ci commands
 
-.. code-block:: bash
+Running resource check
+......................
 
-     breeze static-checks -t mypy --commit-ref 639483d998ecac64d0fef7c5aa4634414065f690
+Breeze requires certain resources to be available - disk, memory, CPU. When you enter Breeze's shell,
+the resources are checked and information if there is enough resources is displayed. However you can
+manually run resource check any time by ``breeze ci resource-check`` command.
 
-The above will run mypy check for all files in the 639483d998ecac64d0fef7c5aa4634414065f690 commit.
-Any ``commit-ish`` reference from Git will work here (branch, tag, short/long hash etc.)
+Those are all available flags of ``resource-check`` command:
 
-If you ever need to get a list of the files that will be checked (for troubleshooting) use these commands:
+.. image:: ./images/breeze/output_ci_resource-check.svg
+  :width: 100%
+  :alt: Breeze ci resource-check
+
+Freeing the space
+.................
+
+When our CI runs a job, it needs all memory and disk it can have. We have a Breeze command that frees
+the memory and disk space used. You can also use it clear space locally but it performs a few operations
+that might be a bit invasive - such are removing swap file and complete pruning of docker disk space used.
+
+Those are all available flags of ``free-space`` command:
+
+.. image:: ./images/breeze/output_ci_free-space.svg
+  :width: 100%
+  :alt: Breeze ci free-space
+
+Fixing File/Directory Ownership
+...............................
+
+On Linux, there is a problem with propagating ownership of created files (a known Docker problem). The
+files and directories created in the container are not owned by the host user (but by the root user in our
+case). This may prevent you from switching branches, for example, if files owned by the root user are
+created within your sources. In case you are on a Linux host and have some files in your sources created
+by the root user, you can fix the ownership of those files by running :
+
+.. code-block::
+
+  breeze ci fix-ownership
+
+Those are all available flags of ``fix-ownership`` command:
+
+.. image:: ./images/breeze/output_ci_fix-ownership.svg
+  :width: 100%
+  :alt: Breeze ci fix-ownership
+
+Selective check
+...............
+
+When our CI runs a job, it needs to decide which tests to run, whether to build images and how much the test
+should be run on multiple combinations of Python, Kubernetes, Backend versions. In order to optimize time
+needed to run the CI Builds. You can also use the tool to test what tests will be run when you provide
+a specific commit that Breeze should run the tests on.
+
+More details about the algorithm used to pick the right tests can be
+found in `Selective Checks <dev/breeze/SELECTIVE_CHECKS.md>`_.
+
+Those are all available flags of ``selective-check`` command:
+
+.. image:: ./images/breeze/output_ci_selective-check.svg
+  :width: 100%
+  :alt: Breeze ci selective-check
+
+Tracking backtracking issues for CI builds
+..........................................
+
+When our CI runs a job, we automatically upgrade our dependencies in the ``main`` build. However, this might
+lead to conflicts and ``pip`` backtracking for a long time (possibly forever) for dependency resolution.
+Unfortunately those issues are difficult to diagnose so we had to invent our own tool to help us with
+diagnosing them. This tool is ``find-newer-dependencies`` and it works in the way that it helps to guess
+which new dependency might have caused the backtracking. The whole process is described in
+`tracking backtracking issues <dev/TRACKING_BACKTRACKING_ISSUES.md>`_.
+
+Those are all available flags of ``find-newer-dependencies`` command:
+
+.. image:: ./images/breeze/output_ci_find-newer-dependencies.svg
+  :width: 100%
+  :alt: Breeze ci find-newer-dependencies
+
+Release management tasks
+------------------------
+
+Maintainers also can use Breeze for other purposes (those are commands that regular contributors likely
+do not need or have no access to run). Those are usually connected with releasing Airflow:
+
+.. image:: ./images/breeze/output_release-management.svg
+  :width: 100%
+  :alt: Breeze release management
+
+Breeze can be used to prepare airflow packages - both "apache-airflow" main package and
+provider packages.
+
+Preparing provider documentation
+................................
+
+You can read more about testing provider packages in
+`TESTING.rst <TESTING.rst#running-tests-with-provider-packages>`_
+
+There are several commands that you can run in Breeze to manage and build packages:
+
+* preparing Provider documentation files
+* preparing Airflow packages
+* preparing Provider packages
+
+Preparing provider documentation files is part of the release procedure by the release managers
+and it is described in detail in `dev <dev/README_RELEASE_PROVIDER_PACKAGES.md>`_ .
+
+The below example perform documentation preparation for provider packages.
 
 .. code-block:: bash
 
-     breeze static-checks -t identity --verbose # currently staged files
-     breeze static-checks -t identity --verbose --from-ref $(git merge-base main HEAD) --to-ref HEAD #  branch updates
+     breeze release-management prepare-provider-documentation
 
-Those are all available flags of ``static-checks`` command:
+By default, the documentation preparation runs package verification to check if all packages are
+importable, but you can add ``--skip-package-verification`` to skip it.
+
+.. code-block:: bash
+
+     breeze release-management prepare-provider-documentation --skip-package-verification
+
+You can also add ``--answer yes`` to perform non-interactive build.
 
-.. image:: ./images/breeze/output-static-checks.svg
+.. image:: ./images/breeze/output_release-management_prepare-provider-documentation.svg
   :width: 100%
-  :alt: Breeze static checks
+  :alt: Breeze prepare-provider-documentation
 
-Here is the part of Breeze video which is relevant (note that it refers to the old ``./breeze-legacy``
-command but it is very similar to current ``breeze`` command):
+Preparing provider packages
+...........................
 
-.. raw:: html
+You can use Breeze to prepare provider packages.
 
-    <div align="center">
-      <a href="https://youtu.be/4MCTXq-oF68?t=1675">
-        <img src="images/breeze/overlayed_breeze_static_checks.png" width="640"
-             alt="Airflow Breeze - Static checks">
-      </a>
-    </div>
+The packages are prepared in ``dist`` folder. Note, that this command cleans up the ``dist`` folder
+before running, so you should run it before generating airflow package below as it will be removed.
 
-.. note::
+The below example builds provider packages in the wheel format.
 
-    When you run static checks, some of the artifacts (mypy_cache) is stored in docker-compose volume
-    so that it can speed up static checks execution significantly. However, sometimes, the cache might
-    get broken, in which case you should run ``breeze stop`` to clean up the cache.
+.. code-block:: bash
+
+     breeze release-management prepare-provider-packages
 
+If you run this command without packages, you will prepare all packages, you can however specify
+providers that you would like to build. By default ``both`` types of packages are prepared (
+``wheel`` and ``sdist``, but you can change it providing optional --package-format flag.
+
+.. code-block:: bash
+
+     breeze release-management prepare-provider-packages google amazon
+
+You can see all providers available by running this command:
+
+.. code-block:: bash
+
+     breeze release-management prepare-provider-packages --help
+
+.. image:: ./images/breeze/output_release-management_prepare-provider-packages.svg
+  :width: 100%
+  :alt: Breeze prepare-provider-packages
 
-Building the Documentation
---------------------------
+Verifying provider packages
+...........................
 
-To build documentation in Breeze, use the ``build-docs`` command:
+Breeze can also be used to verify if provider classes are importable and if they are following the
+right naming conventions. This happens automatically on CI but you can also run it manually if you
+just prepared provider packages and they are present in ``dist`` folder.
 
 .. code-block:: bash
 
-     breeze build-docs
+     breeze release-management verify-provider-packages
 
-Results of the build can be found in the ``docs/_build`` folder.
+You can also run the verification with an earlier airflow version to check for compatibility.
 
-The documentation build consists of three steps:
+.. code-block:: bash
 
-* verifying consistency of indexes
-* building documentation
-* spell checking
+    breeze release-management verify-provider-packages --use-airflow-version 2.1.0
 
-You can choose only one stage of the two by providing ``--spellcheck-only`` or ``--docs-only`` after
-extra ``--`` flag.
+All the command parameters are here:
 
-.. code-block:: bash
+.. image:: ./images/breeze/output_release-management_verify-provider-packages.svg
+  :width: 100%
+  :alt: Breeze verify-provider-packages
 
-    breeze build-docs --spellcheck-only
 
-This process can take some time, so in order to make it shorter you can filter by package, using the flag
-``--package-filter <PACKAGE-NAME>``. The package name has to be one of the providers or ``apache-airflow``. For
-instance, for using it with Amazon, the command would be:
+Preparing airflow packages
+..........................
 
-.. code-block:: bash
+You can prepare airflow packages using Breeze:
 
-     breeze build-docs --package-filter apache-airflow-providers-amazon
+.. code-block:: bash
 
-Often errors during documentation generation come from the docstrings of auto-api generated classes.
-During the docs building auto-api generated files are stored in the ``docs/_api`` folder. This helps you
-easily identify the location the problems with documentation originated from.
+     breeze release-management prepare-airflow-package
 
-Those are all available flags of ``build-docs`` command:
+This prepares airflow .whl package in the dist folder.
 
-.. image:: ./images/breeze/output-build-docs.svg
-  :width: 100%
-  :alt: Breeze build documentation
+Again, you can specify optional ``--package-format`` flag to build selected formats of airflow packages,
+default is to build ``both`` type of packages ``sdist`` and ``wheel``.
 
-Here is the part of Breeze video which is relevant (note that it refers to the old ``./breeze-legacy``
-command but it is very similar to current ``breeze`` command):
+.. code-block:: bash
 
-.. raw:: html
+     breeze release-management prepare-airflow-package --package-format=wheel
 
-    <div align="center">
-      <a href="https://youtu.be/4MCTXq-oF68?t=1760">
-        <img src="images/breeze/overlayed_breeze_build_docs.png" width="640"
-             alt="Airflow Breeze - Build docs">
-      </a>
-    </div>
+.. image:: ./images/breeze/output_release-management_prepare-airflow-package.svg
+  :width: 100%
+  :alt: Breeze release-management prepare-airflow-package
 
 Generating constraints
-----------------------
+......................
 
 Whenever setup.py gets modified, the CI main job will re-generate constraint files. Those constraint
 files are stored in separated orphan branches: ``constraints-main``, ``constraints-2-0``.
@@ -1206,7 +1299,7 @@ Those are constraint files as described in detail in the
 `<CONTRIBUTING.rst#pinned-constraint-files>`_ contributing documentation.
 
 
-You can use ``breeze generate-constraints`` command to manually generate constraints for
+You can use ``breeze release-management generate-constraints`` command to manually generate constraints for
 all or selected python version and single constraint mode like this:
 
 .. warning::
@@ -1217,7 +1310,7 @@ all or selected python version and single constraint mode like this:
 
 .. code-block:: bash
 
-     breeze generate-constraints --airflow-constraints-mode constraints
+     breeze release-management generate-constraints --airflow-constraints-mode constraints
 
 Constraints are generated separately for each python version and there are separate constraints modes:
 
@@ -1236,7 +1329,7 @@ Constraints are generated separately for each python version and there are separ
 
 Those are all available flags of ``generate-constraints`` command:
 
-.. image:: ./images/breeze/output-generate-constraints.svg
+.. image:: ./images/breeze/output_release-management_generate-constraints.svg
   :width: 100%
   :alt: Breeze generate-constraints
 
@@ -1249,101 +1342,101 @@ This bumps the constraint files to latest versions and stores hash of setup.py.
 and setup.py hash files are stored in the ``files`` folder and while generating the constraints diff
 of changes vs the previous constraint files is printed.
 
+Releasing Production images
+...........................
 
-Using local virtualenv environment in Your Host IDE
----------------------------------------------------
-
-You can set up your host IDE (for example, IntelliJ's PyCharm/Idea) to work with Breeze
-and benefit from all the features provided by your IDE, such as local and remote debugging,
-language auto-completion, documentation support, etc.
+The **Production image** can be released by release managers who have permissions to push the image. This
+happens only when there is an RC candidate or final version of Airflow released.
 
-To use your host IDE with Breeze:
+You release "regular" and "slim" images as separate steps.
 
-1. Create a local virtual environment:
+Releasing "regular" images:
 
-   You can use any of the following wrappers to create and manage your virtual environments:
-   `pyenv <https://github.com/pyenv/pyenv>`_, `pyenv-virtualenv <https://github.com/pyenv/pyenv-virtualenv>`_,
-   or `virtualenvwrapper <https://virtualenvwrapper.readthedocs.io/en/latest/>`_.
+.. code-block:: bash
 
-2. Use the right command to activate the virtualenv (``workon`` if you use virtualenvwrapper or
-   ``pyenv activate`` if you use pyenv.
+     breeze release-management release-prod-images --airflow-version 2.4.0
 
-3. Initialize the created local virtualenv:
+Or "slim" images:
 
 .. code-block:: bash
 
-   ./scripts/tools/initialize_virtualenv.py
-
-.. warning::
-   Make sure that you use the right Python version in this command - matching the Python version you have
-   in your local virtualenv. If you don't, you will get strange conflicts.
+     breeze release-management release-prod-images --airflow-version 2.4.0 --slim-images
 
-4. Select the virtualenv you created as the project's default virtualenv in your IDE.
+By default when you are releasing the "final" image, we also tag image with "latest" tags but this
+step can be skipped if you pass the ``--skip-latest`` flag.
 
-Note that you can also use the local virtualenv for Airflow development without Breeze.
-This is a lightweight solution that has its own limitations.
+These are all of the available flags for the ``release-prod-images`` command:
 
-More details on using the local virtualenv are available in the `LOCAL_VIRTUALENV.rst <LOCAL_VIRTUALENV.rst>`_.
+.. image:: ./images/breeze/output_release-management_release-prod-images.svg
+  :width: 100%
+  :alt: Breeze release management release prod images
 
-Here is the part of Breeze video which is relevant (note that it refers to the old ``./breeze-legacy``
-but it is not available in the ``breeze`` command):
 
-.. raw:: html
+Details of Breeze usage
+=======================
 
-    <div align="center">
-      <a href="https://youtu.be/4MCTXq-oF68?t=1920">
-        <img src="images/breeze/overlayed_breeze_initialize_virtualenv.png" width="640"
-             alt="Airflow Breeze - Initialize virtualenv">
-      </a>
-    </div>
+Database volumes in Breeze
+--------------------------
 
-Running docker-compose tests
-----------------------------
+Breeze keeps data for all it's integration in named docker volumes. Each backend and integration
+keeps data in their own volume. Those volumes are persisted until ``breeze stop`` command.
+You can also preserve the volumes by adding flag ``--preserve-volumes`` when you run the command.
+Then, next time when you start Breeze, it will have the data pre-populated.
 
-You can use Breeze to run docker-compose tests. Those tests are run using Production image
-and they are running test with the Quick-start docker compose we have.
+Those are all available flags of ``stop`` command:
 
-.. image:: ./images/breeze/output-docker-compose-tests.svg
+.. image:: ./images/breeze/output-stop.svg
   :width: 100%
-  :alt: Breeze generate-constraints
+  :alt: Breeze stop
 
 
-Running Kubernetes tests
-------------------------
+Additional tools
+----------------
 
-Breeze helps with running Kubernetes tests in the same environment/way as CI tests are run.
-Breeze helps to setup KinD cluster for testing, setting up virtualenv and downloads the right tools
-automatically to run the tests.
+To shrink the Docker image, not all tools are pre-installed in the Docker image. But we have made sure that there
+is an easy process to install additional tools.
 
-This is described in detail in `Testing Kubernetes <TESTING.rst#running-tests-with-kubernetes>`_.
+Additional tools are installed in ``/files/bin``. This path is added to ``$PATH``, so your shell will
+automatically autocomplete files that are in that directory. You can also keep the binaries for your tools
+in this directory if you need to.
 
-Here is the part of Breeze video which is relevant (note that it refers to the old ``./breeze-legacy``
-command and it is not yet available in the current ``breeze`` command):
+**Installation scripts**
 
-.. raw:: html
+For the development convenience, we have also provided installation scripts for commonly used tools. They are
+installed to ``/files/opt/``, so they are preserved after restarting the Breeze environment. Each script
+is also available in ``$PATH``, so just type ``install_<TAB>`` to get a list of tools.
 
-    <div align="center">
-      <a href="https://youtu.be/4MCTXq-oF68?t=2093">
-        <img src="images/breeze/overlayed_breeze_kubernetes_tests.png" width="640"
-             alt="Airflow Breeze - Kubernetes tests">
-      </a>
-    </div>
+Currently available scripts:
 
-Stopping the interactive environment
-------------------------------------
+* ``install_aws.sh`` - installs `the AWS CLI <https://aws.amazon.com/cli/>`__ including
+* ``install_az.sh`` - installs `the Azure CLI <https://github.com/Azure/azure-cli>`__ including
+* ``install_gcloud.sh`` - installs `the Google Cloud SDK <https://cloud.google.com/sdk>`__ including
+  ``gcloud``, ``gsutil``.
+* ``install_imgcat.sh`` - installs `imgcat - Inline Images Protocol <https://iterm2.com/documentation-images.html>`__
+  for iTerm2 (Mac OS only)
+* ``install_java.sh`` - installs `the OpenJDK 8u41 <https://openjdk.java.net/>`__
+* ``install_kubectl.sh`` - installs `the Kubernetes command-line tool, kubectl <https://kubernetes.io/docs/reference/kubectl/kubectl/>`__
+* ``install_snowsql.sh`` - installs `SnowSQL <https://docs.snowflake.com/en/user-guide/snowsql.html>`__
+* ``install_terraform.sh`` - installs `Terraform <https://www.terraform.io/docs/index.html>`__
 
-After starting up, the environment runs in the background and takes precious memory.
-You can always stop it via:
+Launching Breeze integrations
+-----------------------------
 
-.. code-block:: bash
+When Breeze starts, it can start additional integrations. Those are additional docker containers
+that are started in the same docker-compose command. Those are required by some of the tests
+as described in `<TESTING.rst#airflow-integration-tests>`_.
 
-   breeze stop
+By default Breeze starts only airflow container without any integration enabled. If you selected
+``postgres`` or ``mysql`` backend, the container for the selected backend is also started (but only the one
+that is selected). You can start the additional integrations by passing ``--integration`` flag
+with appropriate integration name when starting Breeze. You can specify several ``--integration`` flags
+to start more than one integration at a time.
+Finally you can specify ``--integration all`` to start all integrations.
 
-Those are all available flags of ``stop`` command:
+Once integration is started, it will continue to run until the environment is stopped with
+``breeze stop`` command. or restarted via ``breeze restart`` command
 
-.. image:: ./images/breeze/output-stop.svg
-  :width: 100%
-  :alt: Breeze stop
+Note that running integrations uses significant resources - CPU and memory.
 
 Here is the part of Breeze video which is relevant (note that it refers to the old ``./breeze-legacy``
 command but it is very similar to current ``breeze`` command):
@@ -1351,73 +1444,61 @@ command but it is very similar to current ``breeze`` command):
 .. raw:: html
 
     <div align="center">
-      <a href="https://youtu.be/4MCTXq-oF68?t=2639">
-        <img src="images/breeze/overlayed_breeze_stop.png" width="640"
-             alt="Airflow Breeze - Stop environment">
+      <a href="https://youtu.be/4MCTXq-oF68?t=1187">
+        <img src="images/breeze/overlayed_breeze_integrations.png" width="640"
+             alt="Airflow Breeze - Integrations">
       </a>
     </div>
 
-Running resource check
-----------------------
-
-Breeze requires certain resources to be available - disk, memory, CPU. When you enter Breeze's shell,
-the resources are checked and information if there is enough resources is displayed. However you can
-manually run resource check any time by ``breeze resource-check`` command.
 
-Those are all available flags of ``resource-check`` command:
 
-.. image:: ./images/breeze/output-resource-check.svg
-  :width: 100%
-  :alt: Breeze resource-check
+Using local virtualenv environment in Your Host IDE
+---------------------------------------------------
 
+You can set up your host IDE (for example, IntelliJ's PyCharm/Idea) to work with Breeze
+and benefit from all the features provided by your IDE, such as local and remote debugging,
+language auto-completion, documentation support, etc.
 
-Freeing the space
------------------
+To use your host IDE with Breeze:
 
-When our CI runs a job, it needs all memory and disk it can have. We have a Breeze command that frees
-the memory and disk space used. You can also use it clear space locally but it performs a few operations
-that might be a bit invasive - such are removing swap file and complete pruning of docker disk space used.
+1. Create a local virtual environment:
 
-Those are all available flags of ``free-space`` command:
+   You can use any of the following wrappers to create and manage your virtual environments:
+   `pyenv <https://github.com/pyenv/pyenv>`_, `pyenv-virtualenv <https://github.com/pyenv/pyenv-virtualenv>`_,
+   or `virtualenvwrapper <https://virtualenvwrapper.readthedocs.io/en/latest/>`_.
 
-.. image:: ./images/breeze/output-free-space.svg
-  :width: 100%
-  :alt: Breeze free-space
+2. Use the right command to activate the virtualenv (``workon`` if you use virtualenvwrapper or
+   ``pyenv activate`` if you use pyenv.
 
+3. Initialize the created local virtualenv:
 
-Selective check
----------------
+.. code-block:: bash
 
-When our CI runs a job, it needs to decide which tests to run, whether to build images and how much the test
-should be run on multiple combinations of Python, Kubernetes, Backend versions. In order to optimize time
-needed to run the CI Builds. You can also use the tool to test what tests will be run when you provide
-a specific commit that Breeze should run the tests on.
+   ./scripts/tools/initialize_virtualenv.py
 
-More details about the algorithm used to pick the right tests can be
-found in `Selective Checks <dev/breeze/SELECTIVE_CHECKS.md>`_.
+.. warning::
+   Make sure that you use the right Python version in this command - matching the Python version you have
+   in your local virtualenv. If you don't, you will get strange conflicts.
 
-Those are all available flags of ``selective-check`` command:
+4. Select the virtualenv you created as the project's default virtualenv in your IDE.
 
-.. image:: ./images/breeze/output-selective-check.svg
-  :width: 100%
-  :alt: Breeze selective-check
+Note that you can also use the local virtualenv for Airflow development without Breeze.
+This is a lightweight solution that has its own limitations.
 
+More details on using the local virtualenv are available in the `LOCAL_VIRTUALENV.rst <LOCAL_VIRTUALENV.rst>`_.
 
-Tracking backtracking issues for CI builds
-------------------------------------------
+Here is the part of Breeze video which is relevant (note that it refers to the old ``./breeze-legacy``
+but it is not available in the ``breeze`` command):
 
-When our CI runs a job, we automatically upgrade our dependencies in the ``main`` build. However, this might
-lead to conflicts and ``pip`` backtracking for a long time (possibly forever) for dependency resolution.
-Unfortunately those issues are difficult to diagnose so we had to invent our own tool to help us with
-diagnosing them. This tool is ``find-newer-dependencies`` and it works in the way that it helps to guess
-which new dependency might have caused the backtracking. The whole process is described in
-`tracking backtracking issues <dev/TRACKING_BACKTRACKING_ISSUES.md>`_.
+.. raw:: html
 
-Those are all available flags of ``find-newer-dependencies`` command:
+    <div align="center">
+      <a href="https://youtu.be/4MCTXq-oF68?t=1920">
+        <img src="images/breeze/overlayed_breeze_initialize_virtualenv.png" width="640"
+             alt="Airflow Breeze - Initialize virtualenv">
+      </a>
+    </div>
 
-.. image:: ./images/breeze/output-find-newer-dependencies.svg
-  :width: 100%
-  :alt: Breeze find-newer-dependencies
 
 Internal details of Breeze
 ==========================
@@ -1459,22 +1540,6 @@ from your ``logs`` directory in the Airflow sources, so all logs created in the
 visible in the host as well. Every time you enter the container, the ``logs`` directory is
 cleaned so that logs do not accumulate.
 
-Running Arbitrary commands in the Breeze environment
-----------------------------------------------------
-
-To run other commands/executables inside the Breeze Docker-based environment, use the
-``breeze shell`` command.
-
-.. code-block:: bash
-
-     breeze shell "ls -la"
-
-Those are all available flags of ``shell`` command:
-
-.. image:: ./images/breeze/output-shell.svg
-  :width: 100%
-  :alt: Breeze shell
-
 Running "Docker Compose" commands
 ---------------------------------
 
@@ -1501,25 +1566,6 @@ For automation scripts, you can export the ``ANSWER`` variable (and set it to
 
   export ANSWER="yes"
 
-Fixing File/Directory Ownership
--------------------------------
-
-On Linux, there is a problem with propagating ownership of created files (a known Docker problem). The
-files and directories created in the container are not owned by the host user (but by the root user in our
-case). This may prevent you from switching branches, for example, if files owned by the root user are
-created within your sources. In case you are on a Linux host and have some files in your sources created
-by the root user, you can fix the ownership of those files by running :
-
-.. code-block::
-
-  breeze fix-ownership
-
-Those are all available flags of ``fix-ownership`` command:
-
-.. image:: ./images/breeze/output-fix-ownership.svg
-  :width: 100%
-  :alt: Breeze fix-ownership
-
 
 Mounting Local Sources to Breeze
 --------------------------------
@@ -1610,7 +1656,7 @@ You can add dependencies to the ``Dockerfile.ci``, ``setup.py``.
 After you exit the container and re-run ``breeze``, Breeze detects changes in dependencies,
 asks you to confirm rebuilding the image and proceeds with rebuilding if you confirm (or skip it
 if you do not confirm). After rebuilding is done, Breeze drops you to shell. You may also use the
-``build-image`` command to only rebuild CI image and not to go into shell.
+``build`` command to only rebuild CI image and not to go into shell.
 
 Incremental apt Dependencies in the Dockerfile.ci during development
 ....................................................................
diff --git a/CI.rst b/CI.rst
index c058598449..362dabcbf7 100644
--- a/CI.rst
+++ b/CI.rst
@@ -693,7 +693,7 @@ In order to add a new version the following operations should be done (example u
 
 .. code-block:: bash
 
-  breeze build-image --python 3.10
+  breeze ci-image build --python 3.10
 
 * Find the 2 new images (prod, ci) created in
   `GitHub Container registry <https://github.com/orgs/apache/packages?tab=packages&ecosystem=container&q=airflow>`_
diff --git a/CONTRIBUTORS_QUICK_START.rst b/CONTRIBUTORS_QUICK_START.rst
index dd5c4bed8a..1777f705ce 100644
--- a/CONTRIBUTORS_QUICK_START.rst
+++ b/CONTRIBUTORS_QUICK_START.rst
@@ -267,7 +267,7 @@ Setting up Breeze
 
 .. code-block:: bash
 
-  $ breeze setup-autocomplete
+  $ breeze setup autocomplete
 
 3. Initialize breeze environment with required python version and backend. This may take a while for first time.
 
diff --git a/IMAGES.rst b/IMAGES.rst
index c2fe3143f4..67eb329ba2 100644
--- a/IMAGES.rst
+++ b/IMAGES.rst
@@ -85,13 +85,13 @@ You can build the CI image using current sources this command:
 
 .. code-block:: bash
 
-  breeze build-image
+  breeze ci-image build
 
 You can build the PROD image using current sources with this command:
 
 .. code-block:: bash
 
-  breeze build-prod-image
+  breeze prod-image build
 
 By adding ``--python <PYTHON_MAJOR_MINOR_VERSION>`` parameter you can build the
 image version for the chosen Python version.
@@ -104,13 +104,13 @@ For example if you want to build Python 3.7 version of production image with
 
 .. code-block:: bash
 
-  breeze build-prod-image --python 3.7 --extras "all"
+  breeze prod-image build --python 3.7 --extras "all"
 
 If you just want to add new extras you can add them like that:
 
 .. code-block:: bash
 
-  breeze build-prod-image --python 3.7 --additional-extras "all"
+  breeze prod-image build --python 3.7 --additional-extras "all"
 
 The command that builds the CI image is optimized to minimize the time needed to rebuild the image when
 the source code of Airflow evolves. This means that if you already have the image locally downloaded and
@@ -128,7 +128,7 @@ parameter to Breeze:
 
 .. code-block:: bash
 
-  breeze build-prod-image --python 3.7 --additional-extras=trino --install-airflow-version=2.0.0
+  breeze prod-image build --python 3.7 --additional-extras=trino --install-airflow-version=2.0.0
 
 This will build the image using command similar to:
 
@@ -165,7 +165,7 @@ You can also skip installing airflow and install it from locally provided files
 
 .. code-block:: bash
 
-  breeze build-prod-image --python 3.7 --additional-extras=trino --install-packages-from-context
+  breeze prod-image build --python 3.7 --additional-extras=trino --install-packages-from-context
 
 In this case you airflow and all packages (.whl files) should be placed in ``docker-context-files`` folder.
 
@@ -192,21 +192,21 @@ or ``disabled`` flags when you run Breeze commands. For example:
 
 .. code-block:: bash
 
-  breeze build-image --python 3.7 --docker-cache local
+  breeze ci-image build --python 3.7 --docker-cache local
 
 Will build the CI image using local build cache (note that it will take quite a long time the first
 time you run it).
 
 .. code-block:: bash
 
-  breeze build-prod-image --python 3.7 --docker-cache registry
+  breeze prod-image build --python 3.7 --docker-cache registry
 
 Will build the production image with cache used from registry.
 
 
 .. code-block:: bash
 
-  breeze build-prod-image --python 3.7 --docker-cache disabled
+  breeze prod-image build --python 3.7 --docker-cache disabled
 
 Will build the production image from the scratch.
 
@@ -327,7 +327,7 @@ the same image can be built using ``breeze`` (it supports auto-completion of the
 
 .. code-block:: bash
 
-  breeze build-prod-image --python 3.7 --additional-extras=jdbc --additional-python-deps="pandas" \
+  breeze prod-image build --python 3.7 --additional-extras=jdbc --additional-python-deps="pandas" \
       --additional-dev-apt-deps="gcc g++" --additional-runtime-apt-deps="default-jre-headless"
 
 You can customize more aspects of the image - such as additional commands executed before apt dependencies
diff --git a/TESTING.rst b/TESTING.rst
index 0e2bd60289..bb971036c8 100644
--- a/TESTING.rst
+++ b/TESTING.rst
@@ -169,37 +169,37 @@ to breeze.
 
 .. code-block:: bash
 
-     breeze tests tests/providers/http/hooks/test_http.py tests/core/test_core.py --db-reset --log-cli-level=DEBUG
+     breeze testing tests tests/providers/http/hooks/test_http.py tests/core/test_core.py --db-reset --log-cli-level=DEBUG
 
 You can run the whole test suite without adding the test target:
 
 .. code-block:: bash
 
-    breeze tests --db-reset
+    breeze testing tests --db-reset
 
 You can also specify individual tests or a group of tests:
 
 .. code-block:: bash
 
-    breeze tests --db-reset tests/core/test_core.py::TestCore
+    breeze testing tests --db-reset tests/core/test_core.py::TestCore
 
 You can also limit the tests to execute to specific group of tests
 
 .. code-block:: bash
 
-    breeze tests --test-type Core
+    breeze testing tests --test-type Core
 
 In case of Providers tests, you can run tests for all providers
 
 .. code-block:: bash
 
-    breeze tests --test-type Providers
+    breeze testing tests --test-type Providers
 
 You can also limit the set of providers you would like to run tests of
 
 .. code-block:: bash
 
-    breeze tests --test-type "Providers[airbyte,http]"
+    breeze testing tests --test-type "Providers[airbyte,http]"
 
 
 You can also write tests in "limited progress" mode (useful in the future to run CI). In this mode each
@@ -208,7 +208,7 @@ after it completes.
 
 .. code-block:: bash
 
-    breeze tests --test-type Core --limit-progress-output
+    breeze testing tests --test-type Core --limit-progress-output
 
 
 Running Tests of a specified type from the Host
@@ -585,7 +585,7 @@ need to run the following steps:
 
 .. code-block:: bash
 
-     breeze prepare-provider-packages [PACKAGE ...]
+     breeze release-management prepare-provider-packages [PACKAGE ...]
 
 If you run this command without packages, you will prepare all packages. However, You can specify
 providers that you would like to build if you just want to build few provider packages.
@@ -596,7 +596,7 @@ before running, so you should run it before generating ``apache-airflow`` packag
 
 .. code-block:: bash
 
-     breeze prepare-airflow-package
+     breeze release-management prepare-airflow-package
 
 This prepares airflow .whl package in the dist folder.
 
@@ -1112,7 +1112,7 @@ example, the below command will build google, postgres and mysql wheel packages:
 
 .. code-block:: bash
 
-  breeze prepare-provider-packages google postgres mysql
+  breeze release-management prepare-provider-packages google postgres mysql
 
 Those packages will be prepared in ./dist folder. This folder is mapped to /dist folder
 when you enter Breeze, so it is easy to automate installing those packages for testing.
diff --git a/breeze b/breeze
index d84f4bb8f0..9f80124481 100755
--- a/breeze
+++ b/breeze
@@ -32,7 +32,7 @@ function manual_instructions() {
     echo "    pip -m install pipx"
     echo "    pipx ensurepath"
     echo "    pipx install -e '${MY_DIR}/dev/breeze/'"
-    echo "    breeze setup-autocomplete --force"
+    echo "    breeze setup autocomplete --force"
     echo
     echo "   After that, both pipx and breeze should be available on your path"
     echo
diff --git a/dev/MANUALLY_BUILDING_IMAGES.md b/dev/MANUALLY_BUILDING_IMAGES.md
index 99cf589d69..2a07f8b0c0 100644
--- a/dev/MANUALLY_BUILDING_IMAGES.md
+++ b/dev/MANUALLY_BUILDING_IMAGES.md
@@ -83,13 +83,13 @@ docker buildx ls
 Preparing regular images:
 
 ```shell script
-breeze release-prod-images --airflow-version "${VERSION}"
+breeze release-management release-prod-images --airflow-version "${VERSION}"
 ```
 
 Preparing slim images:
 
 ```shell script
-breeze release-prod-images --airflow-version "${VERSION}" --slim-images
+breeze release-management release-prod-images --airflow-version "${VERSION}" --slim-images
 ```
 
 This will wipe Breeze cache and docker-context-files in order to make sure the build is "clean". It
diff --git a/dev/PROVIDER_PACKAGE_DETAILS.md b/dev/PROVIDER_PACKAGE_DETAILS.md
index 34abe8f86e..75b39e667e 100644
--- a/dev/PROVIDER_PACKAGE_DETAILS.md
+++ b/dev/PROVIDER_PACKAGE_DETAILS.md
@@ -63,13 +63,13 @@ Details to be hashed out in [the related issue](https://github.com/apache/airflo
 You can verify if all providers are properly named and importable.
 
 ```bash
-breeze verify-provider-packages
+breeze release-management verify-provider-packages
 ```
 
 You can also run the verification with an earlier airflow version to check for compatibility.
 
 ```bash
-breeze verify-provider-packages --use-airflow-version 2.1.0
+breeze release-management verify-provider-packages --use-airflow-version 2.1.0
 ```
 
 
@@ -78,7 +78,7 @@ breeze verify-provider-packages --use-airflow-version 2.1.0
 When you want to prepare release notes for a package, you need to run:
 
 ```bash
-breeze prepare-provider-documentation <PACKAGE_ID> ...
+breeze release-management prepare-provider-documentation <PACKAGE_ID> ...
 ```
 
 The version for each package is going to be updated separately for each package when we agree to the
@@ -96,7 +96,7 @@ release date without providing
 the date (to update the existing release notes)
 
 ```bash
-breeze prepare-provider-documentation google
+breeze release-management prepare-provider-documentation google
 ```
 
 
@@ -135,7 +135,7 @@ the folders (for example Apache Hive's PACKAGE_ID is `apache.hive` ). You can se
 providers by running:
 
 ```bash
-breeze prepare-provider-packages --help
+breeze release-management prepare-provider-packages --help
 ```
 
 The examples below show how you can build selected packages, but you can also build all packages by
@@ -144,25 +144,25 @@ omitting the package ids altogether.
 * To build the release candidate packages for PyPI upload run the following command:
 
 ```bash
-breeze prepare-provider-packages --package-format both --version-suffix-for-pypi=rc1 [PACKAGE_ID] ...
+breeze release-management prepare-provider-packages --package-format both --version-suffix-for-pypi=rc1 [PACKAGE_ID] ...
 ```
 
 for example:
 
 ```bash
-breeze prepare-provider-packages --package-format both --version-suffix-for-pypi=rc1 http ...
+breeze release-management prepare-provider-packages --package-format both --version-suffix-for-pypi=rc1 http ...
 ```
 
 * To build the final release packages run the following command:
 
 ```bash
-breeze prepare-provider-packages --package-format both [PACKAGE_ID] ...
+breeze release-management prepare-provider-packages --package-format both [PACKAGE_ID] ...
 ```
 
 for example:
 
 ```bash
-breeze prepare-provider-packages --package-format both http ...
+breeze release-management prepare-provider-packages --package-format both http ...
 ```
 
 * For each package, this creates a wheel package and source distribution package in your `dist` folder with
diff --git a/dev/README_RELEASE_AIRFLOW.md b/dev/README_RELEASE_AIRFLOW.md
index f699e04ab2..33ede31b24 100644
--- a/dev/README_RELEASE_AIRFLOW.md
+++ b/dev/README_RELEASE_AIRFLOW.md
@@ -257,7 +257,7 @@ The Release Candidate artifacts we vote upon should be the exact ones we vote ag
 - Make sure you have the latest CI image
 
     ```shell script
-    breeze pull-image --python 3.7
+    breeze ci-image build --python 3.7
     ```
 
 - Tarball the repo
@@ -274,7 +274,7 @@ The Release Candidate artifacts we vote upon should be the exact ones we vote ag
 - Generate SHA512/ASC (If you have not generated a key yet, generate it by following instructions on http://www.apache.org/dev/openpgp.html#key-gen-generate-key)
 
     ```shell script
-    breeze prepare-airflow-package --package-format both
+    breeze release-management prepare-airflow-package --package-format both
     pushd dist
     ${AIRFLOW_REPO_ROOT}/dev/sign.sh *
     popd
@@ -467,7 +467,7 @@ To do this we need to
 - Build the package:
 
     ```shell script
-    breeze prepare-airflow-package --version-suffix-for-pypi "${VERSION_SUFFIX}" --package-format both
+    breeze release-management prepare-airflow-package --version-suffix-for-pypi "${VERSION_SUFFIX}" --package-format both
     ```
 
 - Verify the artifacts that would be uploaded:
@@ -1001,10 +1001,10 @@ the older branches, you should set the "skip" field to true.
 for PYTHON in 3.7 3.8 3.9 3.10
 do
     docker pull apache/airflow:${VERSION}-python${PYTHON}
-    breeze verify-prod-image --image-name apache/airflow:${VERSION}-python${PYTHON}
+    breeze prod-image verify --image-name apache/airflow:${VERSION}-python${PYTHON}
 done
 docker pull apache/airflow:${VERSION}
-breeze verify-prod-image --image-name apache/airflow:${VERSION}
+breeze prod-image verify --image-name apache/airflow:${VERSION}
 ```
 
 
diff --git a/dev/README_RELEASE_PROVIDER_PACKAGES.md b/dev/README_RELEASE_PROVIDER_PACKAGES.md
index 7abd809102..dc52716f29 100644
--- a/dev/README_RELEASE_PROVIDER_PACKAGES.md
+++ b/dev/README_RELEASE_PROVIDER_PACKAGES.md
@@ -126,7 +126,7 @@ Details about maintaining the SEMVER version are going to be discussed and imple
 [the related issue](https://github.com/apache/airflow/issues/11425)
 
 ```shell script
-breeze prepare-provider-documentation [packages]
+breeze release-management prepare-provider-documentation [packages]
 ```
 
 This command will not only prepare documentation but will also help the release manager to review
@@ -148,7 +148,7 @@ When you want to regenerate the changes before the release and make sure all cha
 are updated, run it in non-interactive mode:
 
 ```shell script
-breeze prepare-provider-documentation --answer yes [packages]
+breeze release-management prepare-provider-documentation --answer yes [packages]
 ```
 
 ## Build provider packages for SVN apache upload
@@ -173,13 +173,13 @@ rm -rf ${AIRFLOW_REPO_ROOT}/dist/*
 * Release candidate packages:
 
 ```shell script
-breeze prepare-provider-packages --package-format both
+breeze release-management prepare-provider-packages --package-format both
 ```
 
 if you only build few packages, run:
 
 ```shell script
-breeze prepare-provider-packages --package-format both PACKAGE PACKAGE ....
+breeze release-management prepare-provider-packages --package-format both PACKAGE PACKAGE ....
 ```
 
 * Sign all your packages
@@ -238,13 +238,13 @@ this will clean up dist folder before generating the packages, so you will only
 ```shell script
 rm -rf ${AIRFLOW_REPO_ROOT}/dist/*
 
-breeze prepare-provider-packages --version-suffix-for-pypi rc1 --package-format both
+breeze release-management prepare-provider-packages --version-suffix-for-pypi rc1 --package-format both
 ```
 
 if you only build few packages, run:
 
 ```shell script
-breeze prepare-provider-packages --version-suffix-for-pypi rc1 --package-format both PACKAGE PACKAGE ....
+breeze release-management prepare-provider-packages --version-suffix-for-pypi rc1 --package-format both PACKAGE PACKAGE ....
 ```
 
 * Verify the artifacts that would be uploaded:
diff --git a/dev/REFRESHING_CI_CACHE.md b/dev/REFRESHING_CI_CACHE.md
index 5fd458bf34..c6596aa864 100644
--- a/dev/REFRESHING_CI_CACHE.md
+++ b/dev/REFRESHING_CI_CACHE.md
@@ -51,10 +51,10 @@ manual refresh might be needed.
 # Manually generating constraint files
 
 ```bash
-breeze build-image --run-in-parallel --upgrade-to-newer-dependencies --answer yes
-breeze generate-constraints --airflow-constraints-mode constraints --run-in-parallel --answer yes
-breeze generate-constraints --airflow-constraints-mode constraints-source-providers --run-in-parallel --answer yes
-breeze generate-constraints --airflow-constraints-mode constraints-no-providers --run-in-parallel --answer yes
+breeze ci-image build --run-in-parallel --upgrade-to-newer-dependencies --answer yes
+breeze release-management generate-constraints --airflow-constraints-mode constraints --run-in-parallel --answer yes
+breeze release-management generate-constraints --airflow-constraints-mode constraints-source-providers --run-in-parallel --answer yes
+breeze release-management generate-constraints --airflow-constraints-mode constraints-no-providers --run-in-parallel --answer yes
 
 AIRFLOW_SOURCES=$(pwd)
 ```
diff --git a/dev/TRACKING_BACKTRACKING_ISSUES.md b/dev/TRACKING_BACKTRACKING_ISSUES.md
index 27afc390ab..2a959175d3 100644
--- a/dev/TRACKING_BACKTRACKING_ISSUES.md
+++ b/dev/TRACKING_BACKTRACKING_ISSUES.md
@@ -130,7 +130,7 @@ the version that was correctly installed before and is stored in the current con
 The process of tracking down which package is the "root cause" looks as follows:
 
 1. Checkout the latest main of Airflow
-2. Build the latest image (with constraints): `breeze build-image --python 3.7`
+2. Build the latest image (with constraints): `breeze ci-image build --python 3.7`
 3. Enter breeze `breeze`
 4. Attempt to run the `pip install` command that was printed in the "Candidates ..." step
 5. The command should succeed (the candidates are pinned to the "working" version)
@@ -192,15 +192,15 @@ You need to install the breeze:
 
 * `pipx install -e ./dev/breeze` if you use pipx install.
 
-Then you can run ``breeze find-newer-dependencies`` with optional flags.
+Then you can run ``breeze ci find-newer-dependencies`` with optional flags.
 For example if you know that the build  was likely broken on a given date and time
 (in your timezone) and you want to check python 3.8 (because this is the only
 failing build) you can run:
 
 ```
-breeze find-newer-dependencies --updated-on-or-after '2022-02-22 10:30:00' --timezone 'CET' --python 3.8
+breeze ci find-newer-dependencies --updated-on-or-after '2022-02-22 10:30:00' --timezone 'CET' --python 3.8
 ```
 
 The full list of options for `find-newer-dependencies` can be seen here
 
-![breeze find-newer-dependencies](../images/breeze/output-find-newer-dependencies.svg)
+![breeze ci find-newer-dependencies](../images/breeze/output-find-newer-dependencies.svg)
diff --git a/dev/breeze/doc/adr/0011-unified-communication-with-the-users.md b/dev/breeze/doc/adr/0011-unified-communication-with-the-users.md
index 89f967e350..6de55bac57 100644
--- a/dev/breeze/doc/adr/0011-unified-communication-with-the-users.md
+++ b/dev/breeze/doc/adr/0011-unified-communication-with-the-users.md
@@ -67,7 +67,7 @@ We are using rich and colours to communicate the type of messages:
 * instructions should be printed without style and default rich rendering should be used
 
 By default, we map those styles to those colors, but we can change configuration of Breeze to
-be colour-blind-friendly by disabling colours in communication via `breeze config --no-colour`.
+be colour-blind-friendly by disabling colours in communication via `breeze setup config --no-colour`.
 
 When signalling warning or error The communication should not be confusing and
 should not contain "noise". It should contain simple - usually one-liner -
diff --git a/dev/breeze/doc/adr/0012-asking-user-for-confirmation.md b/dev/breeze/doc/adr/0012-asking-user-for-confirmation.md
index 82dd2df35b..1e83095b61 100644
--- a/dev/breeze/doc/adr/0012-asking-user-for-confirmation.md
+++ b/dev/breeze/doc/adr/0012-asking-user-for-confirmation.md
@@ -73,7 +73,7 @@ confirmation is necessary. Default action in this case is "quit" so if the user
 the operation should quit without making any change.
 
 2) If there is a long-running (but not disruptive) operation that user directly requested (for example
-building and image by `build-image` command), there should be no question asked unless there is some
+building and image by `ci-image build` command), there should be no question asked unless there is some
 condition that could change the length of the action (for example when we realise that the user have not
 rebased to the latest main and rebuilding the image might take far longer than initially anticipated by
 the user). In case of such unexpected condition the default answer should be "quit" as well without timeout.
diff --git a/dev/breeze/src/airflow_breeze/breeze.py b/dev/breeze/src/airflow_breeze/breeze.py
index 608619ae8e..c58567044f 100755
--- a/dev/breeze/src/airflow_breeze/breeze.py
+++ b/dev/breeze/src/airflow_breeze/breeze.py
@@ -25,5 +25,20 @@ from airflow_breeze.utils.path_utils import (
 find_airflow_sources_root_to_operate_on()
 create_directories_and_files()
 
+from airflow_breeze.commands import developer_commands  # noqa
+from airflow_breeze.commands.ci_commands import ci_group  # noqa
+from airflow_breeze.commands.ci_image_commands import ci_image  # noqa
+from airflow_breeze.commands.production_image_commands import prod_image  # noqa
+from airflow_breeze.commands.release_management_commands import release_management  # noqa
+from airflow_breeze.commands.setup_commands import setup  # noqa
+from airflow_breeze.commands.testing_commands import testing  # noqa
+
+main.add_command(testing)
+main.add_command(ci_group)
+main.add_command(ci_image)
+main.add_command(prod_image)
+main.add_command(setup)
+main.add_command(release_management)
+
 if __name__ == '__main__':
     main()
diff --git a/dev/breeze/src/airflow_breeze/breeze.py b/dev/breeze/src/airflow_breeze/commands/__init__.py
old mode 100755
new mode 100644
similarity index 66%
copy from dev/breeze/src/airflow_breeze/breeze.py
copy to dev/breeze/src/airflow_breeze/commands/__init__.py
index 608619ae8e..13a83393a9
--- a/dev/breeze/src/airflow_breeze/breeze.py
+++ b/dev/breeze/src/airflow_breeze/commands/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python3
 # Licensed to the Apache Software Foundation (ASF) under one
 # or more contributor license agreements.  See the NOTICE file
 # distributed with this work for additional information
@@ -15,15 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-from airflow_breeze.configure_rich_click import click  # isort: skip # noqa
-from airflow_breeze.commands.main_command import main
-from airflow_breeze.utils.path_utils import (
-    create_directories_and_files,
-    find_airflow_sources_root_to_operate_on,
-)
-
-find_airflow_sources_root_to_operate_on()
-create_directories_and_files()
-
-if __name__ == '__main__':
-    main()
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_commands.py b/dev/breeze/src/airflow_breeze/commands/ci_commands.py
index 9d4dda4297..a5aa7d960e 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_commands.py
@@ -24,7 +24,6 @@ from typing import Optional, Tuple
 
 import click
 
-from airflow_breeze.commands.main_command import main
 from airflow_breeze.global_constants import (
     DEFAULT_PYTHON_MAJOR_MINOR_VERSION,
     MOUNT_ALL,
@@ -32,6 +31,7 @@ from airflow_breeze.global_constants import (
     github_events,
 )
 from airflow_breeze.params.shell_params import ShellParams
+from airflow_breeze.utils.click_utils import BreezeGroup
 from airflow_breeze.utils.common_options import (
     option_airflow_constraints_reference,
     option_answer,
@@ -58,53 +58,13 @@ from airflow_breeze.utils.image import find_available_ci_image
 from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT
 from airflow_breeze.utils.run_utils import run_command
 
-CI_COMMANDS = {
-    "name": "CI commands",
-    "commands": [
-        "fix-ownership",
-        "free-space",
-        "resource-check",
-        "selective-check",
-        "find-newer-dependencies",
-    ],
-}
 
-CI_PARAMETERS = {
-    "breeze fix-ownership": [
-        {
-            "name": "Fix ownership flags",
-            "options": [
-                "--use-sudo",
-            ],
-        }
-    ],
-    "breeze selective-check": [
-        {
-            "name": "Selective check flags",
-            "options": [
-                "--commit-ref",
-                "--pr-labels",
-                "--default-branch",
-                "--github-event-name",
-            ],
-        }
-    ],
-    "breeze find-newer-dependencies": [
-        {
-            "name": "Find newer dependencies flags",
-            "options": [
-                "--python",
-                "--timezone",
-                "--constraints-branch",
-                "--updated-on-or-after",
-                "--max-age",
-            ],
-        }
-    ],
-}
+@click.group(cls=BreezeGroup, name='ci', help='Tools that CI workflows use to cleanup/manage CI environment')
+def ci_group():
+    pass
 
 
-@main.command(name="free-space", help="Free space for jobs run in CI.")
+@ci_group.command(name="free-space", help="Free space for jobs run in CI.")
 @option_verbose
 @option_dry_run
 @option_answer
@@ -120,7 +80,7 @@ def free_space(verbose: bool, dry_run: bool, answer: str):
         run_command(["docker", "logout", "ghcr.io"], verbose=verbose, dry_run=dry_run, check=False)
 
 
-@main.command(name="resource-check", help="Check if available docker resources are enough.")
+@ci_group.command(name="resource-check", help="Check if available docker resources are enough.")
 @option_verbose
 @option_dry_run
 def resource_check(verbose: bool, dry_run: bool):
@@ -169,7 +129,7 @@ def fix_ownership_without_docker(dry_run: bool, verbose: bool):
         fix_ownership_for_path(directory_to_fix, dry_run=dry_run, verbose=verbose)
 
 
-@main.command(name="fix-ownership", help="Fix ownership of source files to be same as host user.")
+@ci_group.command(name="fix-ownership", help="Fix ownership of source files to be same as host user.")
 @click.option(
     '--use-sudo',
     is_flag=True,
@@ -237,7 +197,9 @@ def get_changed_files(commit_ref: Optional[str], dry_run: bool, verbose: bool) -
     return changed_files
 
 
-@main.command(name="selective-check", help="Checks what kind of tests should be run for an incoming commit.")
+@ci_group.command(
+    name="selective-check", help="Checks what kind of tests should be run for an incoming commit."
+)
 @click.option(
     '--commit-ref',
     help="Commit-ish reference to the commit that should be checked",
@@ -310,7 +272,7 @@ def selective_check(
     print(str(sc))
 
 
-@main.command(name="find-newer-dependencies", help="Finds which dependencies are being upgraded.")
+@ci_group.command(name="find-newer-dependencies", help="Finds which dependencies are being upgraded.")
 @option_timezone
 @option_airflow_constraints_reference
 @option_python
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_commands_config.py b/dev/breeze/src/airflow_breeze/commands/ci_commands_config.py
new file mode 100644
index 0000000000..08d805ed47
--- /dev/null
+++ b/dev/breeze/src/airflow_breeze/commands/ci_commands_config.py
@@ -0,0 +1,62 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from typing import Dict, List, Union
+
+CI_COMMANDS: Dict[str, Union[str, List[str]]] = {
+    "name": "CI commands",
+    "commands": [
+        "fix-ownership",
+        "free-space",
+        "resource-check",
+        "selective-check",
+        "find-newer-dependencies",
+    ],
+}
+CI_PARAMETERS: Dict[str, List[Dict[str, Union[str, List[str]]]]] = {
+    "breeze ci fix-ownership": [
+        {
+            "name": "Fix ownership flags",
+            "options": [
+                "--use-sudo",
+            ],
+        }
+    ],
+    "breeze ci selective-check": [
+        {
+            "name": "Selective check flags",
+            "options": [
+                "--commit-ref",
+                "--pr-labels",
+                "--default-branch",
+                "--default-constraints-branch",
+                "--github-event-name",
+            ],
+        }
+    ],
+    "breeze ci find-newer-dependencies": [
+        {
+            "name": "Find newer dependencies flags",
+            "options": [
+                "--python",
+                "--timezone",
+                "--airflow-constraints-reference",
+                "--updated-on-or-after",
+                "--max-age",
+            ],
+        }
+    ],
+}
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
index 397fbc4839..d77d26c6a2 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
@@ -22,9 +22,9 @@ from typing import List, Optional, Tuple, Union
 
 import click
 
-from airflow_breeze.commands.main_command import main
 from airflow_breeze.params.build_ci_params import BuildCiParams
 from airflow_breeze.params.shell_params import ShellParams
+from airflow_breeze.utils.click_utils import BreezeGroup
 from airflow_breeze.utils.common_options import (
     option_additional_dev_apt_command,
     option_additional_dev_apt_deps,
@@ -57,8 +57,8 @@ from airflow_breeze.utils.common_options import (
     option_parallelism,
     option_platform_multiple,
     option_prepare_buildx_cache,
-    option_pull_image,
-    option_push_image,
+    option_pull,
+    option_push,
     option_python,
     option_python_image,
     option_python_versions,
@@ -68,7 +68,7 @@ from airflow_breeze.utils.common_options import (
     option_tag_as_latest,
     option_upgrade_to_newer_dependencies,
     option_verbose,
-    option_verify_image,
+    option_verify,
     option_wait_for_image,
 )
 from airflow_breeze.utils.confirm import STANDARD_TIMEOUT, Answer, user_confirm
@@ -97,104 +97,12 @@ from airflow_breeze.utils.run_utils import (
     run_command,
 )
 
-CI_IMAGE_TOOLS_COMMANDS = {
-    "name": "CI Image tools",
-    "commands": [
-        "build-image",
-        "pull-image",
-        "verify-image",
-    ],
-}
 
-CI_IMAGE_TOOLS_PARAMETERS = {
-    "breeze build-image": [
-        {
-            "name": "Basic usage",
-            "options": [
-                "--python",
-                "--upgrade-to-newer-dependencies",
-                "--debian-version",
-                "--image-tag",
-                "--tag-as-latest",
-                "--docker-cache",
-                "--force-build",
-            ],
-        },
-        {
-            "name": "Building images in parallel",
-            "options": [
-                "--run-in-parallel",
-                "--parallelism",
-                "--python-versions",
-            ],
-        },
-        {
-            "name": "Advanced options (for power users)",
-            "options": [
-                "--install-providers-from-sources",
-                "--airflow-constraints-mode",
-                "--airflow-constraints-reference",
-                "--python-image",
-                "--additional-python-deps",
-                "--runtime-apt-deps",
-                "--runtime-apt-command",
-                "--additional-extras",
-                "--additional-runtime-apt-deps",
-                "--additional-runtime-apt-env",
-                "--additional-runtime-apt-command",
-                "--additional-dev-apt-deps",
-                "--additional-dev-apt-env",
-                "--additional-dev-apt-command",
-                "--dev-apt-deps",
-                "--dev-apt-command",
-            ],
-        },
-        {
-            "name": "Preparing cache and push (for maintainers and CI)",
-            "options": [
-                "--github-token",
-                "--github-username",
-                "--platform",
-                "--login-to-github-registry",
-                "--push-image",
-                "--empty-image",
-                "--prepare-buildx-cache",
-            ],
-        },
-    ],
-    "breeze pull-image": [
-        {
-            "name": "Pull image flags",
-            "options": [
-                "--image-tag",
-                "--python",
-                "--github-token",
-                "--verify-image",
-                "--wait-for-image",
-                "--tag-as-latest",
-            ],
-        },
-        {
-            "name": "Parallel running",
-            "options": [
-                "--run-in-parallel",
-                "--parallelism",
-                "--python-versions",
-            ],
-        },
-    ],
-    "breeze verify-image": [
-        {
-            "name": "Verify image flags",
-            "options": [
-                "--image-name",
-                "--python",
-                "--image-tag",
-                "--pull-image",
-            ],
-        }
-    ],
-}
+@click.group(
+    cls=BreezeGroup, name='ci-image', help="Tools that developers can use to manually manage CI images"
+)
+def ci_image():
+    pass
 
 
 def check_if_image_building_is_needed(ci_image_params: BuildCiParams, dry_run: bool, verbose: bool) -> bool:
@@ -202,7 +110,7 @@ def check_if_image_building_is_needed(ci_image_params: BuildCiParams, dry_run: b
     if not ci_image_params.force_build and not ci_image_params.upgrade_to_newer_dependencies:
         if not should_we_run_the_build(build_ci_params=ci_image_params):
             return False
-    if ci_image_params.prepare_buildx_cache or ci_image_params.push_image:
+    if ci_image_params.prepare_buildx_cache or ci_image_params.push:
         login_to_github_docker_registry(image_params=ci_image_params, dry_run=dry_run, verbose=verbose)
     return True
 
@@ -235,7 +143,7 @@ def start_building(params: BuildCiParams, dry_run: bool, verbose: bool):
     make_sure_builder_configured(parallel=True, params=params, dry_run=dry_run, verbose=verbose)
 
 
-@main.command(name='build-image')
+@ci_image.command(name='build')
 @option_github_repository
 @option_verbose
 @option_dry_run
@@ -252,7 +160,7 @@ def start_building(params: BuildCiParams, dry_run: bool, verbose: bool):
 @option_docker_cache
 @option_image_tag_for_building
 @option_prepare_buildx_cache
-@option_push_image
+@option_push
 @option_empty_image
 @option_install_providers_from_sources
 @option_additional_extras
@@ -275,7 +183,7 @@ def start_building(params: BuildCiParams, dry_run: bool, verbose: bool):
 @option_airflow_constraints_reference_build
 @option_tag_as_latest
 @option_additional_pip_install_flags
-def build_image(
+def build(
     verbose: bool,
     dry_run: bool,
     run_in_parallel: bool,
@@ -320,7 +228,7 @@ def build_image(
         run_build(ci_image_params=params)
 
 
-@main.command(name='pull-image')
+@ci_image.command(name='pull')
 @option_verbose
 @option_dry_run
 @option_python
@@ -329,12 +237,12 @@ def build_image(
 @option_parallelism
 @option_python_versions
 @option_github_token
-@option_verify_image
+@option_verify
 @option_wait_for_image
 @option_image_tag_for_pulling
 @option_tag_as_latest
 @click.argument('extra_pytest_args', nargs=-1, type=click.UNPROCESSED)
-def pull_ci_image(
+def pull(
     verbose: bool,
     dry_run: bool,
     python: str,
@@ -346,7 +254,7 @@ def pull_ci_image(
     image_tag: str,
     wait_for_image: bool,
     tag_as_latest: bool,
-    verify_image: bool,
+    verify: bool,
     extra_pytest_args: Tuple,
 ):
     """Pull and optionally verify CI images - possibly in parallel for all Python versions."""
@@ -354,7 +262,7 @@ def pull_ci_image(
         get_console().print("[red]You cannot pull latest images because they are not published any more!\n")
         get_console().print(
             "[yellow]You need to specify commit tag to pull and image. If you wish to get"
-            " the latest image, you need to run `breeze build-image` command\n"
+            " the latest image, you need to run `breeze ci-image build` command\n"
         )
         sys.exit(1)
     perform_environment_checks(verbose=verbose)
@@ -375,7 +283,7 @@ def pull_ci_image(
             image_params_list=ci_image_params_list,
             python_version_list=python_version_list,
             verbose=verbose,
-            verify_image=verify_image,
+            verify=verify,
             wait_for_image=wait_for_image,
             tag_as_latest=tag_as_latest,
             extra_pytest_args=extra_pytest_args if extra_pytest_args is not None else (),
@@ -396,8 +304,8 @@ def pull_ci_image(
             sys.exit(return_code)
 
 
-@main.command(
-    name='verify-image',
+@ci_image.command(
+    name='verify',
     context_settings=dict(
         ignore_unknown_options=True,
         allow_extra_args=True,
@@ -409,16 +317,16 @@ def pull_ci_image(
 @option_github_repository
 @option_image_tag_for_verifying
 @option_image_name
-@option_pull_image
+@option_pull
 @click.argument('extra_pytest_args', nargs=-1, type=click.UNPROCESSED)
-def verify_ci_image(
+def verify(
     verbose: bool,
     dry_run: bool,
     python: str,
     github_repository: str,
     image_name: str,
     image_tag: Optional[str],
-    pull_image: bool,
+    pull: bool,
     extra_pytest_args: Tuple,
 ):
     """Verify CI image."""
@@ -426,7 +334,7 @@ def verify_ci_image(
     if image_name is None:
         build_params = BuildCiParams(python=python, image_tag=image_tag, github_repository=github_repository)
         image_name = build_params.airflow_image_name_with_tag
-    if pull_image:
+    if pull:
         command_to_run = ["docker", "pull", image_name]
         run_command(command_to_run, verbose=verbose, dry_run=dry_run, check=True)
     get_console().print(f"[info]Verifying CI image: {image_name}[/]")
@@ -526,14 +434,14 @@ def run_build_ci_image(
     """
     if (
         ci_image_params.is_multi_platform()
-        and not ci_image_params.push_image
+        and not ci_image_params.push
         and not ci_image_params.prepare_buildx_cache
     ):
         get_console().print(
-            "\n[red]You cannot use multi-platform build without using --push-image flag or "
+            "\n[red]You cannot use multi-platform build without using --push flag or "
             "preparing buildx cache![/]\n"
         )
-        return 1, "Error: building multi-platform image without --push-image."
+        return 1, "Error: building multi-platform image without --push."
     if verbose or dry_run:
         get_console().print(
             f"\n[info]Building CI image of airflow from {AIRFLOW_SOURCES_ROOT} "
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_image_commands_config.py b/dev/breeze/src/airflow_breeze/commands/ci_image_commands_config.py
new file mode 100644
index 0000000000..4e95067484
--- /dev/null
+++ b/dev/breeze/src/airflow_breeze/commands/ci_image_commands_config.py
@@ -0,0 +1,117 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from typing import Dict, List, Union
+
+CI_IMAGE_TOOLS_COMMANDS: Dict[str, Union[str, List[str]]] = {
+    "name": "CI Image tools",
+    "commands": [
+        "build",
+        "pull",
+        "verify",
+    ],
+}
+CI_IMAGE_TOOLS_PARAMETERS: Dict[str, List[Dict[str, Union[str, List[str]]]]] = {
+    "breeze ci-image build": [
+        {
+            "name": "Basic usage",
+            "options": [
+                "--python",
+                "--upgrade-to-newer-dependencies",
+                "--debian-version",
+                "--image-tag",
+                "--tag-as-latest",
+                "--docker-cache",
+                "--force-build",
+            ],
+        },
+        {
+            "name": "Building images in parallel",
+            "options": [
+                "--run-in-parallel",
+                "--parallelism",
+                "--python-versions",
+            ],
+        },
+        {
+            "name": "Advanced options (for power users)",
+            "options": [
+                "--builder",
+                "--install-providers-from-sources",
+                "--airflow-constraints-mode",
+                "--airflow-constraints-reference",
+                "--python-image",
+                "--additional-python-deps",
+                "--runtime-apt-deps",
+                "--runtime-apt-command",
+                "--additional-extras",
+                "--additional-pip-install-flags",
+                "--additional-runtime-apt-deps",
+                "--additional-runtime-apt-env",
+                "--additional-runtime-apt-command",
+                "--additional-dev-apt-deps",
+                "--additional-dev-apt-env",
+                "--additional-dev-apt-command",
+                "--dev-apt-deps",
+                "--dev-apt-command",
+            ],
+        },
+        {
+            "name": "Preparing cache and push (for maintainers and CI)",
+            "options": [
+                "--github-token",
+                "--github-username",
+                "--platform",
+                "--login-to-github-registry",
+                "--push",
+                "--empty-image",
+                "--prepare-buildx-cache",
+            ],
+        },
+    ],
+    "breeze ci-image pull": [
+        {
+            "name": "Pull image flags",
+            "options": [
+                "--image-tag",
+                "--python",
+                "--github-token",
+                "--verify",
+                "--wait-for-image",
+                "--tag-as-latest",
+            ],
+        },
+        {
+            "name": "Parallel running",
+            "options": [
+                "--run-in-parallel",
+                "--parallelism",
+                "--python-versions",
+            ],
+        },
+    ],
+    "breeze ci-image verify": [
+        {
+            "name": "Verify image flags",
+            "options": [
+                "--image-name",
+                "--python",
+                "--image-tag",
+                "--pull",
+            ],
+        }
+    ],
+}
diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands.py b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
index 0910ecad3a..9e4fe4bc38 100644
--- a/dev/breeze/src/airflow_breeze/commands/developer_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
@@ -20,7 +20,7 @@ import shutil
 import sys
 from typing import Iterable, Optional, Tuple
 
-import rich_click as click
+import click
 
 from airflow_breeze.commands.ci_image_commands import rebuild_or_pull_ci_image_if_needed
 from airflow_breeze.commands.main_command import main
@@ -79,154 +79,6 @@ from airflow_breeze.utils.run_utils import (
 )
 from airflow_breeze.utils.visuals import ASCIIART, ASCIIART_STYLE, CHEATSHEET, CHEATSHEET_STYLE
 
-DEVELOPER_COMMANDS = {
-    "name": "Developer tools",
-    "commands": [
-        "shell",
-        "start-airflow",
-        "compile-www-assets",
-        "exec",
-        "stop",
-        "build-docs",
-        "static-checks",
-    ],
-}
-
-DEVELOPER_PARAMETERS = {
-    "breeze": [
-        {
-            "name": "Basic flags for the default (shell) command",
-            "options": [
-                "--python",
-                "--backend",
-                "--postgres-version",
-                "--mysql-version",
-                "--mssql-version",
-                "--integration",
-                "--forward-credentials",
-                "--db-reset",
-            ],
-        },
-        {
-            "name": "Advanced flags for the default (shell) command",
-            "options": [
-                "--use-airflow-version",
-                "--constraints-reference",
-                "--airflow-extras",
-                "--use-packages-from-dist",
-                "--package-format",
-                "--force-build",
-                "--image-tag",
-                "--mount-sources",
-                "--debian-version",
-            ],
-        },
-    ],
-    "breeze shell": [
-        {
-            "name": "Basic flags",
-            "options": [
-                "--python",
-                "--backend",
-                "--postgres-version",
-                "--mysql-version",
-                "--mssql-version",
-                "--integration",
-                "--forward-credentials",
-                "--db-reset",
-            ],
-        },
-        {
-            "name": "Advanced flag for running",
-            "options": [
-                "--use-airflow-version",
-                "--constraints-reference",
-                "--airflow-extras",
-                "--use-packages-from-dist",
-                "--package-format",
-                "--force-build",
-                "--image-tag",
-                "--mount-sources",
-                "--debian-version",
-            ],
-        },
-    ],
-    "breeze compile-www-assets": [
-        {
-            "name": "Compile www assets flag",
-            "options": [
-                "--dev",
-            ],
-        }
-    ],
-    "breeze start-airflow": [
-        {
-            "name": "Basic flags",
-            "options": [
-                "--python",
-                "--load-example-dags",
-                "--load-default-connections",
-                "--backend",
-                "--postgres-version",
-                "--mysql-version",
-                "--mssql-version",
-                "--integration",
-                "--forward-credentials",
-                "--db-reset",
-            ],
-        },
-        {
-            "name": "Advanced flag for running",
-            "options": [
-                "--use-airflow-version",
-                "--constraints-reference",
-                "--airflow-extras",
-                "--use-packages-from-dist",
-                "--package-format",
-                "--force-build",
-                "--image-tag",
-                "--mount-sources",
-            ],
-        },
-    ],
-    "breeze exec": [
-        {"name": "Drops in the interactive shell of active airflow container"},
-    ],
-    "breeze stop": [
-        {
-            "name": "Stop flags",
-            "options": [
-                "--preserve-volumes",
-            ],
-        },
-    ],
-    "breeze build-docs": [
-        {
-            "name": "Doc flags",
-            "options": [
-                "--docs-only",
-                "--spellcheck-only",
-                "--clean-build",
-                "--for-production",
-                "--package-filter",
-            ],
-        },
-    ],
-    "breeze static-checks": [
-        {
-            "name": "Pre-commit flags",
-            "options": [
-                "--type",
-                "--file",
-                "--all-files",
-                "--show-diff-on-failure",
-                "--last-commit",
-            ],
-        },
-    ],
-}
-
-
 # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 # Make sure that whatever you add here as an option is also
 # Added in the "main" command in breeze.py. The min command above
@@ -284,7 +136,7 @@ def shell(
     platform: Optional[str],
     extra_args: Tuple,
 ):
-    """Enter breeze.py environment. this is the default command use when no other is selected."""
+    """Enter breeze environment. this is the default command use when no other is selected."""
     if verbose or dry_run:
         get_console().print("\n[success]Welcome to breeze.py[/]\n")
         get_console().print(f"\n[success]Root of Airflow Sources = {AIRFLOW_SOURCES_ROOT}[/]\n")
@@ -366,7 +218,7 @@ def start_airflow(
     platform: Optional[str],
     extra_args: Tuple,
 ):
-    """Enter breeze.py environment and starts all Airflow components in the tmux session."""
+    """Enter breeze environment and starts all Airflow components in the tmux session."""
     if use_airflow_version is None:
         run_compile_www_assets(dev=False, verbose=verbose, dry_run=dry_run)
     enter_shell(
@@ -599,7 +451,7 @@ def stop(verbose: bool, dry_run: bool, preserve_volumes: bool):
     run_command(command_to_execute, verbose=verbose, dry_run=dry_run, env=env_variables)
 
 
-@main.command(name='exec', help='Joins the interactive shell of running airflow container')
+@main.command(name='exec', help='Joins the interactive shell of running airflow container.')
 @option_verbose
 @option_dry_run
 @click.argument('exec_args', nargs=-1, type=click.UNPROCESSED)
diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py b/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py
new file mode 100644
index 0000000000..5893a92d6e
--- /dev/null
+++ b/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py
@@ -0,0 +1,161 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from typing import Dict, List, Union
+
+DEVELOPER_COMMANDS: Dict[str, Union[str, List[str]]] = {
+    "name": "Basic developer commands",
+    "commands": [
+        "start-airflow",
+        "static-checks",
+        "build-docs",
+        "stop",
+        "shell",
+        "exec",
+        "compile-www-assets",
+        "cleanup",
+    ],
+}
+DEVELOPER_PARAMETERS: Dict[str, List[Dict[str, Union[str, List[str]]]]] = {
+    "breeze": [
+        {
+            "name": "Basic flags",
+            "options": [
+                "--python",
+                "--backend",
+                "--postgres-version",
+                "--mysql-version",
+                "--mssql-version",
+                "--integration",
+                "--forward-credentials",
+                "--db-reset",
+            ],
+        },
+    ],
+    "breeze shell": [
+        {
+            "name": "Basic flags",
+            "options": [
+                "--python",
+                "--backend",
+                "--postgres-version",
+                "--mysql-version",
+                "--mssql-version",
+                "--integration",
+                "--forward-credentials",
+                "--db-reset",
+            ],
+        },
+        {
+            "name": "Advanced flag for running",
+            "options": [
+                "--use-airflow-version",
+                "--airflow-constraints-reference",
+                "--platform",
+                "--airflow-extras",
+                "--use-packages-from-dist",
+                "--package-format",
+                "--force-build",
+                "--image-tag",
+                "--mount-sources",
+                "--debian-version",
+            ],
+        },
+    ],
+    "breeze compile-www-assets": [
+        {
+            "name": "Compile www assets flag",
+            "options": [
+                "--dev",
+            ],
+        }
+    ],
+    "breeze start-airflow": [
+        {
+            "name": "Basic flags",
+            "options": [
+                "--python",
+                "--load-example-dags",
+                "--load-default-connections",
+                "--backend",
+                "--platform",
+                "--postgres-version",
+                "--mysql-version",
+                "--mssql-version",
+                "--integration",
+                "--forward-credentials",
+                "--db-reset",
+            ],
+        },
+        {
+            "name": "Advanced flag for running",
+            "options": [
+                "--use-airflow-version",
+                "--airflow-constraints-reference",
+                "--airflow-extras",
+                "--use-packages-from-dist",
+                "--package-format",
+                "--force-build",
+                "--image-tag",
+                "--mount-sources",
+            ],
+        },
+    ],
+    "breeze exec": [
+        {"name": "Drops in the interactive shell of active airflow container"},
+    ],
+    "breeze stop": [
+        {
+            "name": "Stop flags",
+            "options": [
+                "--preserve-volumes",
+            ],
+        },
+    ],
+    "breeze build-docs": [
+        {
+            "name": "Doc flags",
+            "options": [
+                "--docs-only",
+                "--spellcheck-only",
+                "--clean-build",
+                "--for-production",
+                "--package-filter",
+            ],
+        },
+    ],
+    "breeze static-checks": [
+        {
+            "name": "Pre-commit flags",
+            "options": [
+                "--type",
+                "--file",
+                "--all-files",
+                "--show-diff-on-failure",
+                "--last-commit",
+                "--commit-ref",
+            ],
+        },
+    ],
+    "breeze cleanup": [
+        {
+            "name": "Cleanup flags",
+            "options": [
+                "--all",
+            ],
+        },
+    ],
+}
diff --git a/dev/breeze/src/airflow_breeze/commands/main_command.py b/dev/breeze/src/airflow_breeze/commands/main_command.py
index fbf3b38067..f4adab3c15 100644
--- a/dev/breeze/src/airflow_breeze/commands/main_command.py
+++ b/dev/breeze/src/airflow_breeze/commands/main_command.py
@@ -15,52 +15,91 @@
 # specific language governing permissions and limitations
 # under the License.
 import platform
+import shutil
 import subprocess
 import sys
+from typing import Optional
 
+from click import Context
+
+from airflow_breeze.commands.ci_image_commands import ci_image
+from airflow_breeze.commands.production_image_commands import prod_image
+from airflow_breeze.commands.testing_commands import testing
 from airflow_breeze.configure_rich_click import click
+from airflow_breeze.utils.click_utils import BreezeGroup
 from airflow_breeze.utils.common_options import (
-    option_airflow_extras,
     option_answer,
     option_backend,
     option_db_reset,
-    option_debian_version,
     option_dry_run,
-    option_force_build,
     option_forward_credentials,
     option_github_repository,
-    option_installation_package_format,
     option_integration,
-    option_mount_sources,
     option_mssql_version,
     option_mysql_version,
     option_postgres_version,
     option_python,
-    option_use_airflow_version,
-    option_use_packages_from_dist,
     option_verbose,
 )
+from airflow_breeze.utils.confirm import Answer, user_confirm
+from airflow_breeze.utils.console import get_console
+from airflow_breeze.utils.path_utils import BUILD_CACHE_DIR
+from airflow_breeze.utils.run_utils import run_command
 
 
-@click.group(invoke_without_command=True, context_settings={'help_option_names': ['-h', '--help']})
-@option_verbose
-@option_dry_run
+def print_deprecated(deprecated_command: str, command_to_use: str):
+    get_console().print("[yellow]" + ("#" * 80) + "\n")
+    get_console().print(f"[yellow]The command '{deprecated_command}' is deprecated!\n")
+    get_console().print(f"Use 'breeze {command_to_use}' instead\n")
+    get_console().print("[yellow]" + ("#" * 80) + "\n")
+
+
+class MainGroupWithAliases(BreezeGroup):
+    def get_command(self, ctx: Context, cmd_name: str):
+        # Aliases for important commands moved to sub-commands
+        from airflow_breeze.commands.setup_commands import setup
+
+        rv = click.Group.get_command(self, ctx, cmd_name)
+        if rv is not None:
+            return rv
+        if cmd_name == 'build-image':
+            print_deprecated('build-image', 'ci-image build')
+            return ci_image.get_command(ctx, 'build')
+        if cmd_name == 'build-prod-image':
+            print_deprecated('build-prod-image', 'prod-image build')
+            return prod_image.get_command(ctx, 'build')
+        if cmd_name == 'tests':
+            print_deprecated('tests', 'testing tests')
+            return testing.get_command(ctx, 'tests')
+        if cmd_name == 'config':
+            print_deprecated('config', 'setup config')
+            return setup.get_command(ctx, 'config')
+        if cmd_name == 'setup-autocomplete':
+            print_deprecated('setup-autocomplete', 'setup autocomplete')
+            return setup.get_command(ctx, 'autocomplete')
+        if cmd_name == 'version':
+            # version alias does not need to be deprecated. It's ok to keep it also at top level
+            # even if it is not displayed in help
+            return setup.get_command(ctx, 'version')
+        return None
+
+
+@click.group(
+    cls=MainGroupWithAliases,
+    invoke_without_command=True,
+    context_settings={'help_option_names': ['-h', '--help']},
+)
 @option_python
-@option_github_repository
 @option_backend
 @option_postgres_version
 @option_mysql_version
 @option_mssql_version
-@option_debian_version
-@option_forward_credentials
-@option_force_build
-@option_use_airflow_version
-@option_airflow_extras
-@option_use_packages_from_dist
-@option_installation_package_format
-@option_mount_sources
 @option_integration
+@option_forward_credentials
 @option_db_reset
+@option_verbose
+@option_dry_run
+@option_github_repository
 @option_answer
 @click.pass_context
 def main(ctx: click.Context, **kwargs):
@@ -140,3 +179,77 @@ def check_for_rosetta_environment():
         pass
     except PermissionError:
         pass
+
+
+@main.command(
+    name="cleanup",
+    help="Cleans the cache of parameters, docker cache and optionally built CI/PROD images.",
+)
+@click.option(
+    '--all',
+    is_flag=True,
+    help='Also remove currently downloaded Breeze images.',
+)
+@option_verbose
+@option_answer
+@option_dry_run
+@option_github_repository
+def cleanup(verbose: bool, dry_run: bool, github_repository: str, all: bool, answer: Optional[str]):
+    if all:
+        get_console().print(
+            "\n[info]Removing cache of parameters, clean up docker cache "
+            "and remove locally downloaded images[/]"
+        )
+    else:
+        get_console().print("[info]Removing cache of parameters, and cleans up docker cache[/]")
+    if all:
+        docker_images_command_to_execute = [
+            'docker',
+            'images',
+            '--filter',
+            'label=org.apache.airflow.image',
+            '--format',
+            '{{.Repository}}:{{.Tag}}',
+        ]
+        command_result = run_command(
+            docker_images_command_to_execute, verbose=verbose, text=True, capture_output=True
+        )
+        images = command_result.stdout.splitlines() if command_result and command_result.stdout else []
+        if images:
+            get_console().print("[info]Removing images:[/]")
+            for image in images:
+                get_console().print(f"[info] * {image}[/]")
+            get_console().print()
+            docker_rmi_command_to_execute = [
+                'docker',
+                'rmi',
+                '--force',
+            ]
+            docker_rmi_command_to_execute.extend(images)
+            given_answer = user_confirm("Are you sure with the removal?")
+            if given_answer == Answer.YES:
+                run_command(docker_rmi_command_to_execute, verbose=verbose, dry_run=dry_run, check=False)
+            elif given_answer == Answer.QUIT:
+                sys.exit(0)
+        else:
+            get_console().print("[info]No locally downloaded images to remove[/]\n")
+    get_console().print("Pruning docker images")
+    given_answer = user_confirm("Are you sure with the removal?")
+    if given_answer == Answer.YES:
+        system_prune_command_to_execute = ['docker', 'system', 'prune']
+        run_command(
+            system_prune_command_to_execute,
+            verbose=verbose,
+            dry_run=dry_run,
+            check=False,
+            enabled_output_group=True,
+        )
+    elif given_answer == Answer.QUIT:
+        sys.exit(0)
+    get_console().print(f"Removing build cache dir ${BUILD_CACHE_DIR}")
+    given_answer = user_confirm("Are you sure with the removal?")
+    if given_answer == Answer.YES:
+        if not dry_run:
+            shutil.rmtree(BUILD_CACHE_DIR, ignore_errors=True)
+    elif given_answer == Answer.QUIT:
+        sys.exit(0)
diff --git a/dev/breeze/src/airflow_breeze/commands/production_image_commands.py b/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
index 2b75729789..eb2de5c03d 100644
--- a/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
@@ -22,9 +22,9 @@ from typing import List, Optional, Tuple
 
 import click
 
-from airflow_breeze.commands.main_command import main
 from airflow_breeze.global_constants import ALLOWED_INSTALLATION_METHODS, DEFAULT_EXTRAS
 from airflow_breeze.params.build_prod_params import BuildProdParams
+from airflow_breeze.utils.click_utils import BreezeGroup
 from airflow_breeze.utils.common_options import (
     option_additional_dev_apt_command,
     option_additional_dev_apt_deps,
@@ -56,8 +56,8 @@ from airflow_breeze.utils.common_options import (
     option_parallelism,
     option_platform_multiple,
     option_prepare_buildx_cache,
-    option_pull_image,
-    option_push_image,
+    option_pull,
+    option_push,
     option_python,
     option_python_image,
     option_python_versions,
@@ -67,7 +67,7 @@ from airflow_breeze.utils.common_options import (
     option_tag_as_latest,
     option_upgrade_to_newer_dependencies,
     option_verbose,
-    option_verify_image,
+    option_verify,
     option_wait_for_image,
 )
 from airflow_breeze.utils.console import get_console
@@ -88,118 +88,6 @@ from airflow_breeze.utils.registry import login_to_github_docker_registry
 from airflow_breeze.utils.run_tests import verify_an_image
 from airflow_breeze.utils.run_utils import filter_out_none, fix_group_permissions, run_command
 
-PRODUCTION_IMAGE_TOOLS_COMMANDS = {
-    "name": "Production Image tools",
-    "commands": [
-        "build-prod-image",
-        "pull-prod-image",
-        "verify-prod-image",
-    ],
-}
-PRODUCTION_IMAGE_TOOLS_PARAMETERS = {
-    "breeze build-prod-image": [
-        {
-            "name": "Basic usage",
-            "options": [
-                "--python",
-                "--install-airflow-version",
-                "--upgrade-to-newer-dependencies",
-                "--debian-version",
-                "--image-tag",
-                "--tag-as-latest",
-                "--docker-cache",
-            ],
-        },
-        {
-            "name": "Building images in parallel",
-            "options": [
-                "--run-in-parallel",
-                "--parallelism",
-                "--python-versions",
-            ],
-        },
-        {
-            "name": "Options for customizing images",
-            "options": [
-                "--install-providers-from-sources",
-                "--airflow-extras",
-                "--airflow-constraints-mode",
-                "--airflow-constraints-reference",
-                "--python-image",
-                "--additional-python-deps",
-                "--additional-extras",
-                "--additional-runtime-apt-deps",
-                "--additional-runtime-apt-env",
-                "--additional-runtime-apt-command",
-                "--additional-dev-apt-deps",
-                "--additional-dev-apt-env",
-                "--additional-dev-apt-command",
-                "--runtime-apt-deps",
-                "--runtime-apt-command",
-                "--dev-apt-deps",
-                "--dev-apt-command",
-            ],
-        },
-        {
-            "name": "Customization options (for specific customization needs)",
-            "options": [
-                "--install-packages-from-context",
-                "--cleanup-context",
-                "--disable-mysql-client-installation",
-                "--disable-mssql-client-installation",
-                "--disable-postgres-client-installation",
-                "--disable-airflow-repo-cache",
-                "--install-airflow-reference",
-                "--installation-method",
-            ],
-        },
-        {
-            "name": "Preparing cache and push (for maintainers and CI)",
-            "options": [
-                "--github-token",
-                "--github-username",
-                "--platform",
-                "--login-to-github-registry",
-                "--push-image",
-                "--empty-image",
-                "--prepare-buildx-cache",
-            ],
-        },
-    ],
-    "breeze pull-prod-image": [
-        {
-            "name": "Pull image flags",
-            "options": [
-                "--image-tag",
-                "--python",
-                "--github-token",
-                "--verify-image",
-                "--wait-for-image",
-                "--tag-as-latest",
-            ],
-        },
-        {
-            "name": "Parallel running",
-            "options": [
-                "--run-in-parallel",
-                "--parallelism",
-                "--python-versions",
-            ],
-        },
-    ],
-    "breeze verify-prod-image": [
-        {
-            "name": "Verify image flags",
-            "options": [
-                "--image-name",
-                "--python",
-                "--image-tag",
-                "--pull-image",
-            ],
-        }
-    ],
-}
-
 
 def start_building(parallel: bool, prod_image_params: BuildProdParams, dry_run: bool, verbose: bool):
     make_sure_builder_configured(
@@ -208,7 +96,7 @@ def start_building(parallel: bool, prod_image_params: BuildProdParams, dry_run:
     if prod_image_params.cleanup_context:
         clean_docker_context_files(verbose=verbose, dry_run=dry_run)
     check_docker_context_files(prod_image_params.install_packages_from_context)
-    if prod_image_params.prepare_buildx_cache or prod_image_params.push_image:
+    if prod_image_params.prepare_buildx_cache or prod_image_params.push:
         login_to_github_docker_registry(image_params=prod_image_params, dry_run=dry_run, verbose=verbose)
 
 
@@ -240,10 +128,17 @@ def run_build_in_parallel(
     pool.close()
 
 
+@click.group(
+    cls=BreezeGroup, name='prod-image', help="Tools that developers can use to manually manage PROD images"
+)
+def prod_image():
+    pass
+
+
 @option_verbose
 @option_dry_run
 @option_answer
-@main.command(name='build-prod-image')
+@prod_image.command(name='build')
 @option_python
 @option_run_in_parallel
 @option_parallelism
@@ -257,7 +152,7 @@ def run_build_in_parallel(
 @option_docker_cache
 @option_image_tag_for_building
 @option_prepare_buildx_cache
-@option_push_image
+@option_push
 @option_empty_image
 @option_airflow_constraints_mode_prod
 @click.option(
@@ -314,7 +209,7 @@ def run_build_in_parallel(
 @option_runtime_apt_deps
 @option_tag_as_latest
 @option_additional_pip_install_flags
-def build_prod_image(
+def build(
     verbose: bool,
     dry_run: bool,
     run_in_parallel: bool,
@@ -361,7 +256,7 @@ def build_prod_image(
         run_build(prod_image_params=params)
 
 
-@main.command(name='pull-prod-image')
+@prod_image.command(name='pull')
 @option_verbose
 @option_dry_run
 @option_python
@@ -373,7 +268,7 @@ def build_prod_image(
 @option_image_tag_for_pulling
 @option_wait_for_image
 @option_tag_as_latest
-@option_verify_image
+@option_verify
 @click.argument('extra_pytest_args', nargs=-1, type=click.UNPROCESSED)
 def pull_prod_image(
     verbose: bool,
@@ -387,7 +282,7 @@ def pull_prod_image(
     image_tag: str,
     wait_for_image: bool,
     tag_as_latest: bool,
-    verify_image: bool,
+    verify: bool,
     extra_pytest_args: Tuple,
 ):
     """Pull and optionally verify Production images - possibly in parallel for all Python versions."""
@@ -395,7 +290,7 @@ def pull_prod_image(
         get_console().print("[red]You cannot pull latest images because they are not published any more!\n")
         get_console().print(
             "[yellow]You need to specify commit tag to pull and image. If you wish to get"
-            " the latest image, you need to run `breeze build-image` command\n"
+            " the latest image, you need to run `breeze ci-image build` command\n"
         )
         sys.exit(1)
     perform_environment_checks(verbose=verbose)
@@ -416,7 +311,7 @@ def pull_prod_image(
             image_params_list=prod_image_params_list,
             python_version_list=python_version_list,
             verbose=verbose,
-            verify_image=verify_image,
+            verify=verify,
             wait_for_image=wait_for_image,
             tag_as_latest=tag_as_latest,
             extra_pytest_args=extra_pytest_args if extra_pytest_args is not None else (),
@@ -439,8 +334,8 @@ def pull_prod_image(
             sys.exit(return_code)
 
 
-@main.command(
-    name='verify-prod-image',
+@prod_image.command(
+    name='verify',
     context_settings=dict(
         ignore_unknown_options=True,
         allow_extra_args=True,
@@ -452,21 +347,21 @@ def pull_prod_image(
 @option_github_repository
 @option_image_tag_for_verifying
 @option_image_name
-@option_pull_image
+@option_pull
 @click.option(
     '--slim-image',
     help='The image to verify is slim and non-slim tests should be skipped.',
     is_flag=True,
 )
 @click.argument('extra_pytest_args', nargs=-1, type=click.UNPROCESSED)
-def verify_prod_image(
+def verify(
     verbose: bool,
     dry_run: bool,
     python: str,
     github_repository: str,
     image_name: str,
     image_tag: Optional[str],
-    pull_image: bool,
+    pull: bool,
     slim_image: bool,
     extra_pytest_args: Tuple,
 ):
@@ -477,7 +372,7 @@ def verify_prod_image(
             python=python, image_tag=image_tag, github_repository=github_repository
         )
         image_name = build_params.airflow_image_name_with_tag
-    if pull_image:
+    if pull:
         command_to_run = ["docker", "pull", image_name]
         run_command(command_to_run, verbose=verbose, dry_run=dry_run, check=True)
     get_console().print(f"[info]Verifying PROD image: {image_name}[/]")
@@ -562,17 +457,18 @@ def run_build_production_image(
     :param verbose: print commands when running
     :param dry_run: do not execute "write" commands - just print what would happen
     :param prod_image_params: PROD image parameters
+    :param parallel: run build in parallel
     """
     if (
         prod_image_params.is_multi_platform()
-        and not prod_image_params.push_image
+        and not prod_image_params.push
         and not prod_image_params.prepare_buildx_cache
     ):
         get_console().print(
-            "\n[red]You cannot use multi-platform build without using --push-image flag"
+            "\n[red]You cannot use multi-platform build without using --push flag"
             " or preparing buildx cache![/]\n"
         )
-        return 1, "Error: building multi-platform image without --push-image."
+        return 1, "Error: building multi-platform image without --push."
     get_console().print(f"\n[info]Building PROD Image for Python {prod_image_params.python}\n")
     if prod_image_params.prepare_buildx_cache:
         build_command_result = build_cache(
diff --git a/dev/breeze/src/airflow_breeze/commands/production_image_commands_config.py b/dev/breeze/src/airflow_breeze/commands/production_image_commands_config.py
new file mode 100644
index 0000000000..049086c82c
--- /dev/null
+++ b/dev/breeze/src/airflow_breeze/commands/production_image_commands_config.py
@@ -0,0 +1,132 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from typing import Dict, List, Union
+
+PRODUCTION_IMAGE_TOOLS_COMMANDS: Dict[str, Union[str, List[str]]] = {
+    "name": "Production Image tools",
+    "commands": [
+        "build",
+        "pull",
+        "verify",
+    ],
+}
+PRODUCTION_IMAGE_TOOLS_PARAMETERS: Dict[str, List[Dict[str, Union[str, List[str]]]]] = {
+    "breeze prod-image build": [
+        {
+            "name": "Basic usage",
+            "options": [
+                "--python",
+                "--install-airflow-version",
+                "--upgrade-to-newer-dependencies",
+                "--debian-version",
+                "--image-tag",
+                "--tag-as-latest",
+                "--docker-cache",
+            ],
+        },
+        {
+            "name": "Building images in parallel",
+            "options": [
+                "--run-in-parallel",
+                "--parallelism",
+                "--python-versions",
+            ],
+        },
+        {
+            "name": "Options for customizing images",
+            "options": [
+                "--builder",
+                "--install-providers-from-sources",
+                "--airflow-extras",
+                "--airflow-constraints-mode",
+                "--airflow-constraints-reference",
+                "--python-image",
+                "--additional-extras",
+                "--additional-pip-install-flags",
+                "--additional-python-deps",
+                "--additional-runtime-apt-deps",
+                "--additional-runtime-apt-env",
+                "--additional-runtime-apt-command",
+                "--additional-dev-apt-deps",
+                "--additional-dev-apt-env",
+                "--additional-dev-apt-command",
+                "--runtime-apt-deps",
+                "--runtime-apt-command",
+                "--dev-apt-deps",
+                "--dev-apt-command",
+            ],
+        },
+        {
+            "name": "Customization options (for specific customization needs)",
+            "options": [
+                "--install-packages-from-context",
+                "--cleanup-context",
+                "--disable-mysql-client-installation",
+                "--disable-mssql-client-installation",
+                "--disable-postgres-client-installation",
+                "--disable-airflow-repo-cache",
+                "--install-airflow-reference",
+                "--installation-method",
+            ],
+        },
+        {
+            "name": "Preparing cache and push (for maintainers and CI)",
+            "options": [
+                "--github-token",
+                "--github-username",
+                "--platform",
+                "--login-to-github-registry",
+                "--push",
+                "--empty-image",
+                "--prepare-buildx-cache",
+            ],
+        },
+    ],
+    "breeze prod-image pull": [
+        {
+            "name": "Pull image flags",
+            "options": [
+                "--image-tag",
+                "--python",
+                "--github-token",
+                "--verify",
+                "--wait-for-image",
+                "--tag-as-latest",
+            ],
+        },
+        {
+            "name": "Parallel running",
+            "options": [
+                "--run-in-parallel",
+                "--parallelism",
+                "--python-versions",
+            ],
+        },
+    ],
+    "breeze prod-image verify": [
+        {
+            "name": "Verify image flags",
+            "options": [
+                "--image-name",
+                "--python",
+                "--slim-image",
+                "--image-tag",
+                "--pull",
+            ],
+        }
+    ],
+}
diff --git a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
index 12aea0ca5e..db05b80a0b 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -25,7 +25,6 @@ from typing import IO, Dict, List, Optional, Tuple
 import click
 
 from airflow_breeze.commands.ci_image_commands import rebuild_or_pull_ci_image_if_needed
-from airflow_breeze.commands.main_command import main
 from airflow_breeze.global_constants import (
     ALLOWED_PLATFORMS,
     CURRENT_PYTHON_MAJOR_MINOR_VERSIONS,
@@ -35,6 +34,7 @@ from airflow_breeze.global_constants import (
     MULTI_PLATFORM,
 )
 from airflow_breeze.params.shell_params import ShellParams
+from airflow_breeze.utils.click_utils import BreezeGroup
 from airflow_breeze.utils.common_options import (
     argument_packages,
     option_airflow_constraints_mode_ci,
@@ -67,89 +67,6 @@ from airflow_breeze.utils.parallel import check_async_run_results
 from airflow_breeze.utils.python_versions import get_python_version_list
 from airflow_breeze.utils.run_utils import RunCommandResult, run_command, run_compile_www_assets
 
-RELEASE_MANAGEMENT_PARAMETERS = {
-    "breeze prepare-airflow-package": [
-        {"name": "Package flags", "options": ["--package-format", "--version-suffix-for-pypi"]}
-    ],
-    "breeze verify-provider-packages": [
-        {
-            "name": "Provider verification flags",
-            "options": [
-                "--use-airflow-version",
-                "--airflow-constraints-reference",
-                "--airflow-extras",
-                "--use-packages-from-dist",
-                "--package-format",
-                "--skip-constraints",
-                "--debug",
-            ],
-        }
-    ],
-    "breeze prepare-provider-packages": [
-        {
-            "name": "Package flags",
-            "options": [
-                "--package-format",
-                "--version-suffix-for-pypi",
-                "--package-list-file",
-                "--debug",
-            ],
-        }
-    ],
-    "breeze prepare-provider-documentation": [
-        {
-            "name": "Provider documentation preparation flags",
-            "options": [
-                "--debug",
-            ],
-        }
-    ],
-    "breeze generate-constraints": [
-        {
-            "name": "Generate constraints flags",
-            "options": [
-                "--image-tag",
-                "--python",
-                "--airflow-constraints-mode",
-                "--debug",
-            ],
-        },
-        {
-            "name": "Parallel running",
-            "options": [
-                "--run-in-parallel",
-                "--parallelism",
-                "--python-versions",
-            ],
-        },
-    ],
-    "breeze release-prod-images": [
-        {
-            "name": "Release PROD IMAGE flags",
-            "options": [
-                "--airflow-version",
-                "--dockerhub-repo",
-                "--slim-images",
-                "--limit-python",
-                "--limit-platform",
-                "--skip-latest",
-            ],
-        }
-    ],
-}
-
-RELEASE_MANAGEMENT_COMMANDS = {
-    "name": "Release management",
-    "commands": [
-        "verify-provider-packages",
-        "prepare-provider-documentation",
-        "prepare-provider-packages",
-        "prepare-airflow-package",
-        "release-prod-images",
-        "generate-constraints",
-    ],
-}
-
 option_debug_release_management = click.option(
     "--debug",
     is_flag=True,
@@ -215,7 +132,16 @@ echo -e '\\e[34mRun this command to debug:
         )
 
 
-@main.command(
+@click.group(
+    cls=BreezeGroup,
+    name='release-management',
+    help="Tools that release managers can use to prepare and manage Airflow releases",
+)
+def release_management():
+    pass
+
+
+@release_management.command(
     name='prepare-airflow-package',
     help="Prepare sdist/whl package of Airflow.",
 )
@@ -257,7 +183,7 @@ def prepare_airflow_packages(
     sys.exit(result_command.returncode)
 
 
-@main.command(
+@release_management.command(
     name='prepare-provider-documentation',
     help="Prepare CHANGELOG, README and COMMITS information for providers.",
 )
@@ -297,7 +223,7 @@ def prepare_provider_documentation(
     sys.exit(result_command.returncode)
 
 
-@main.command(
+@release_management.command(
     name='prepare-provider-packages',
     help="Prepare sdist/whl packages of Airflow Providers.",
 )
@@ -392,7 +318,7 @@ def run_generate_constraints_in_parallel(
     pool.close()
 
 
-@main.command(
+@release_management.command(
     name='generate-constraints',
     help="Generates pinned constraint files with all extras from setup.py in parallel.",
 )
@@ -436,7 +362,7 @@ def generate_constraints(
         if run_in_parallel:
             get_console().print("\n[info]Use this command to build the images:[/]\n")
             get_console().print(
-                f"     breeze build-image --run-in-parallel --python-versions '{python_versions}' "
+                f"     breeze ci-image build --run-in-parallel --python-versions '{python_versions}' "
                 f"--upgrade-to-newer-dependencies\n"
             )
         else:
@@ -445,7 +371,7 @@ def generate_constraints(
             )
             get_console().print("\n[info]Use this command to build the image:[/]\n")
             get_console().print(
-                f"     breeze build-image --python '{shell_params.python}' "
+                f"     breeze ci-image build --python '{shell_params.python}' "
                 f"--upgrade-to-newer-dependencies\n"
             )
         sys.exit(1)
@@ -489,7 +415,7 @@ def generate_constraints(
             sys.exit(return_code)
 
 
-@main.command(
+@release_management.command(
     name='verify-provider-packages',
     help="Verifies if all provider code is following expectations for providers.",
 )
@@ -566,7 +492,7 @@ def alias_image(image_from: str, image_to: str, dry_run: bool, verbose: bool):
     )
 
 
-@main.command(
+@release_management.command(
     name="release-prod-images", help="Release production images to DockerHub (needs DockerHub permissions)."
 )
 @click.option('--airflow-version', required=True, help="Airflow version to release (2.3.0, 2.3.0rc1 etc.)")
diff --git a/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py b/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
new file mode 100644
index 0000000000..641b181eac
--- /dev/null
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
@@ -0,0 +1,100 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from typing import Dict, List, Union
+
+RELEASE_MANAGEMENT_COMMANDS: Dict[str, Union[str, List[str]]] = {
+    "name": "Release management",
+    "commands": [
+        "verify-provider-packages",
+        "prepare-provider-documentation",
+        "prepare-provider-packages",
+        "prepare-airflow-package",
+        "release-prod-images",
+        "generate-constraints",
+    ],
+}
+
+RELEASE_MANAGEMENT_PARAMETERS: Dict[str, List[Dict[str, Union[str, List[str]]]]] = {
+    "breeze release-management prepare-airflow-package": [
+        {"name": "Package flags", "options": ["--package-format", "--version-suffix-for-pypi"]}
+    ],
+    "breeze release-management verify-provider-packages": [
+        {
+            "name": "Provider verification flags",
+            "options": [
+                "--use-airflow-version",
+                "--airflow-constraints-reference",
+                "--airflow-extras",
+                "--use-packages-from-dist",
+                "--package-format",
+                "--skip-constraints",
+                "--debug",
+            ],
+        }
+    ],
+    "breeze release-management prepare-provider-packages": [
+        {
+            "name": "Package flags",
+            "options": [
+                "--package-format",
+                "--version-suffix-for-pypi",
+                "--package-list-file",
+                "--debug",
+            ],
+        }
+    ],
+    "breeze release-management prepare-provider-documentation": [
+        {
+            "name": "Provider documentation preparation flags",
+            "options": [
+                "--debug",
+            ],
+        }
+    ],
+    "breeze release-management generate-constraints": [
+        {
+            "name": "Generate constraints flags",
+            "options": [
+                "--image-tag",
+                "--python",
+                "--airflow-constraints-mode",
+                "--debug",
+            ],
+        },
+        {
+            "name": "Parallel running",
+            "options": [
+                "--run-in-parallel",
+                "--parallelism",
+                "--python-versions",
+            ],
+        },
+    ],
+    "breeze release-management release-prod-images": [
+        {
+            "name": "Release PROD IMAGE flags",
+            "options": [
+                "--airflow-version",
+                "--dockerhub-repo",
+                "--slim-images",
+                "--limit-python",
+                "--limit-platform",
+                "--skip-latest",
+            ],
+        }
+    ],
+}
diff --git a/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py b/dev/breeze/src/airflow_breeze/commands/setup_commands.py
similarity index 75%
rename from dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py
rename to dev/breeze/src/airflow_breeze/commands/setup_commands.py
index 7ef0a11a20..f9d6d488db 100644
--- a/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/setup_commands.py
@@ -29,11 +29,11 @@ from click import Context
 from airflow_breeze import NAME, VERSION
 from airflow_breeze.commands.main_command import main
 from airflow_breeze.utils.cache import check_if_cache_exists, delete_cache, touch_cache_file
+from airflow_breeze.utils.click_utils import BreezeGroup
 from airflow_breeze.utils.common_options import (
     option_answer,
     option_backend,
     option_dry_run,
-    option_github_repository,
     option_mssql_version,
     option_mysql_version,
     option_postgres_version,
@@ -41,11 +41,10 @@ from airflow_breeze.utils.common_options import (
     option_verbose,
 )
 from airflow_breeze.utils.confirm import STANDARD_TIMEOUT, Answer, user_confirm
-from airflow_breeze.utils.console import get_console
+from airflow_breeze.utils.console import get_console, get_stderr_console
 from airflow_breeze.utils.docker_command_utils import perform_environment_checks
 from airflow_breeze.utils.path_utils import (
     AIRFLOW_SOURCES_ROOT,
-    BUILD_CACHE_DIR,
     get_installation_airflow_sources,
     get_installation_sources_config_metadata_hash,
     get_package_setup_metadata_hash,
@@ -57,132 +56,10 @@ from airflow_breeze.utils.reinstall import ask_to_reinstall_breeze, reinstall_br
 from airflow_breeze.utils.run_utils import assert_pre_commit_installed, run_command
 from airflow_breeze.utils.visuals import ASCIIART, ASCIIART_STYLE
 
-CONFIGURATION_AND_MAINTENANCE_COMMANDS = {
-    "name": "Configuration & maintenance",
-    "commands": [
-        "cleanup",
-        "self-upgrade",
-        "setup-autocomplete",
-        "config",
-        "regenerate-command-images",
-        "command-hash-export",
-        "version",
-    ],
-}
 
-CONFIGURATION_AND_MAINTENANCE_PARAMETERS = {
-    "breeze cleanup": [
-        {
-            "name": "Cleanup flags",
-            "options": [
-                "--all",
-            ],
-        },
-    ],
-    "breeze self-upgrade": [
-        {
-            "name": "Self-upgrade flags",
-            "options": [
-                "--use-current-airflow-sources",
-                "--force",
-            ],
-        }
-    ],
-    "breeze setup-autocomplete": [
-        {
-            "name": "Setup autocomplete flags",
-            "options": [
-                "--force",
-            ],
-        },
-    ],
-    "breeze config": [
-        {
-            "name": "Config flags",
-            "options": [
-                "--python",
-                "--backend",
-                "--cheatsheet",
-                "--asciiart",
-                "--colour",
-            ],
-        },
-    ],
-}
-
-
-@main.command(
-    name="cleanup",
-    help="Cleans the cache of parameters, docker cache and optionally - currently downloaded images.",
-)
-@click.option(
-    '--all',
-    is_flag=True,
-    help='Also remove currently downloaded Breeze images.',
-)
-@option_verbose
-@option_answer
-@option_dry_run
-@option_github_repository
-def cleanup(verbose: bool, dry_run: bool, github_repository: str, all: bool, answer: Optional[str]):
-    if all:
-        get_console().print(
-            "\n[info]Removing cache of parameters, clean up docker cache "
-            "and remove locally downloaded images[/]"
-        )
-    else:
-        get_console().print("[info]Removing cache of parameters, and cleans up docker cache[/]")
-    if all:
-        docker_images_command_to_execute = [
-            'docker',
-            'images',
-            '--filter',
-            'label=org.apache.airflow.image',
-            '--format',
-            '{{.Repository}}:{{.Tag}}',
-        ]
-        command_result = run_command(
-            docker_images_command_to_execute, verbose=verbose, text=True, capture_output=True
-        )
-        images = command_result.stdout.splitlines() if command_result and command_result.stdout else []
-        if images:
-            get_console().print("[info]Removing images:[/]")
-            for image in images:
-                get_console().print(f"[info] * {image}[/]")
-            get_console().print()
-            docker_rmi_command_to_execute = [
-                'docker',
-                'rmi',
-                '--force',
-            ]
-            docker_rmi_command_to_execute.extend(images)
-            given_answer = user_confirm("Are you sure with the removal?")
-            if given_answer == Answer.YES:
-                run_command(docker_rmi_command_to_execute, verbose=verbose, dry_run=dry_run, check=False)
-            elif given_answer == Answer.QUIT:
-                sys.exit(0)
-        else:
-            get_console().print("[info]No locally downloaded images to remove[/]\n")
-    get_console().print("Pruning docker images")
-    given_answer = user_confirm("Are you sure with the removal?")
-    if given_answer == Answer.YES:
-        system_prune_command_to_execute = ['docker', 'system', 'prune']
-        run_command(
-            system_prune_command_to_execute,
-            verbose=verbose,
-            dry_run=dry_run,
-            check=False,
-            enabled_output_group=True,
-        )
-    elif given_answer == Answer.QUIT:
-        sys.exit(0)
-    get_console().print(f"Removing build cache dir ${BUILD_CACHE_DIR}")
-    given_answer = user_confirm("Are you sure with the removal?")
-    if given_answer == Answer.YES:
-        if not dry_run:
-            shutil.rmtree(BUILD_CACHE_DIR, ignore_errors=True)
-    elif given_answer == Answer.QUIT:
-        sys.exit(0)
+@click.group(cls=BreezeGroup, name='setup', help='Tools that developers can use to configure Breeze')
+def setup():
+    pass
 
 
 @click.option(
@@ -198,7 +75,7 @@ def cleanup(verbose: bool, dry_run: bool, github_repository: str, all: bool, ans
     help='Use current workdir Airflow sources for upgrade'
     + (f" rather than from {get_installation_airflow_sources()}." if not output_file_for_recording else "."),
 )
-@main.command(
+@setup.command(
     name='self-upgrade',
     help="Self upgrade Breeze. By default it re-installs Breeze "
     f"from {get_installation_airflow_sources()}."
@@ -230,8 +107,8 @@ def self_upgrade(force: bool, use_current_airflow_sources: bool):
     help='Force autocomplete setup even if already setup before (overrides the setup).',
 )
 @option_answer
-@main.command(name='setup-autocomplete')
-def setup_autocomplete(verbose: bool, dry_run: bool, force: bool, answer: Optional[str]):
+@setup.command(name='autocomplete')
+def autocomplete(verbose: bool, dry_run: bool, force: bool, answer: Optional[str]):
     """
     Enables autocompletion of breeze commands.
     """
@@ -289,7 +166,7 @@ def setup_autocomplete(verbose: bool, dry_run: bool, force: bool, answer: Option
 
 
 @option_verbose
-@main.command()
+@setup.command()
 def version(verbose: bool):
     """Print information about version of apache-airflow-breeze."""
 
@@ -310,7 +187,7 @@ def version(verbose: bool):
         )
 
 
-@main.command(name='config')
+@setup.command(name='config')
 @option_python
 @option_backend
 @option_postgres_version
@@ -391,7 +268,7 @@ def dict_hash(dictionary: Dict[str, Any]) -> str:
     return dhash.hexdigest()
 
 
-@main.command(
+@setup.command(
     name="command-hash-export",
     help="Outputs hash of all click commands to file or stdout if `-` "
     "is used (useful to see if images should be regenerated).",
@@ -402,11 +279,16 @@ def command_hash_export(verbose: bool, output: IO):
     with Context(main) as ctx:
         the_context_dict = ctx.to_info_dict()
         if verbose:
-            get_console().print(the_context_dict)
+            get_stderr_console().print(the_context_dict)
         output.write(f"main:{dict_hash(the_context_dict['command']['params'])}\n")
         commands_dict = the_context_dict['command']['commands']
         for command in sorted(commands_dict.keys()):
-            output.write(f"{command}:{dict_hash(commands_dict[command])}\n")
+            current_command_dict = commands_dict[command]
+            if 'commands' in current_command_dict:
+                for subcommand in sorted(current_command_dict.keys()):
+                    output.write(f"{command}:{subcommand}:{dict_hash(current_command_dict[subcommand])}\n")
+            else:
+                output.write(f"{command}:{dict_hash(current_command_dict)}\n")
 
 
 def write_to_shell(command_to_execute: str, dry_run: bool, script_path: str, force_setup: bool) -> bool:
@@ -476,7 +358,7 @@ def backup(script_path_file: Path):
     shutil.copy(str(script_path_file), str(script_path_file) + ".bak")
 
 
-@main.command(name="regenerate-command-images", help="Regenerate breeze command images.")
+@setup.command(name="regenerate-command-images", help="Regenerate breeze command images.")
 @option_verbose
 @option_dry_run
 def regenerate_command_images(verbose: bool, dry_run: bool):
diff --git a/dev/breeze/src/airflow_breeze/commands/setup_commands_config.py b/dev/breeze/src/airflow_breeze/commands/setup_commands_config.py
new file mode 100644
index 0000000000..b4560a1b21
--- /dev/null
+++ b/dev/breeze/src/airflow_breeze/commands/setup_commands_config.py
@@ -0,0 +1,64 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from typing import Dict, List, Union
+
+SETUP_COMMANDS: Dict[str, Union[str, List[str]]] = {
+    "name": "Setup",
+    "commands": [
+        "autocomplete",
+        "self-upgrade",
+        "cleanup",
+        "config",
+        "regenerate-command-images",
+        "command-hash-export",
+        "version",
+    ],
+}
+SETUP_PARAMETERS: Dict[str, List[Dict[str, Union[str, List[str]]]]] = {
+    "breeze setup self-upgrade": [
+        {
+            "name": "Self-upgrade flags",
+            "options": [
+                "--use-current-airflow-sources",
+                "--force",
+            ],
+        }
+    ],
+    "breeze setup autocomplete": [
+        {
+            "name": "Setup autocomplete flags",
+            "options": [
+                "--force",
+            ],
+        },
+    ],
+    "breeze setup config": [
+        {
+            "name": "Config flags",
+            "options": [
+                "--python",
+                "--backend",
+                "--postgres-version",
+                "--mysql-version",
+                "--mssql-version",
+                "--cheatsheet",
+                "--asciiart",
+                "--colour",
+            ],
+        },
+    ],
+}
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands.py b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
index 05aa3aa7e8..1427e4551a 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
@@ -27,11 +27,11 @@ from typing import Dict, List, Optional, Tuple
 
 import click
 
-from airflow_breeze.commands.main_command import main
 from airflow_breeze.global_constants import ALLOWED_TEST_TYPE_CHOICES
 from airflow_breeze.params.build_prod_params import BuildProdParams
 from airflow_breeze.params.shell_params import ShellParams
 from airflow_breeze.utils.ci_group import ci_group
+from airflow_breeze.utils.click_utils import BreezeGroup
 from airflow_breeze.utils.common_options import (
     option_backend,
     option_db_reset,
@@ -56,49 +56,13 @@ from airflow_breeze.utils.docker_command_utils import (
 from airflow_breeze.utils.run_tests import run_docker_compose_tests
 from airflow_breeze.utils.run_utils import RunCommandResult, run_command
 
-TESTING_COMMANDS = {
-    "name": "Testing",
-    "commands": ["docker-compose-tests", "tests"],
-}
 
-TESTING_PARAMETERS = {
-    "breeze docker-compose-tests": [
-        {
-            "name": "Docker-compose tests flag",
-            "options": [
-                "--image-name",
-                "--image-tag",
-                "--python",
-            ],
-        }
-    ],
-    "breeze tests": [
-        {
-            "name": "Basic flag for tests command",
-            "options": [
-                "--integration",
-                "--test-type",
-                "--db-reset",
-                "--backend",
-                "--python",
-                "--postgres-version",
-                "--mysql-version",
-                "--mssql-version",
-            ],
-        },
-        {
-            "name": "Advanced flag for tests command",
-            "options": [
-                "--limit-progress-output",
-                "--image-tag",
-                "--mount-sources",
-            ],
-        },
-    ],
-}
+@click.group(cls=BreezeGroup, name='testing', help='Tools that developers can use to run tests')
+def testing():
+    pass
 
 
-@main.command(
+@testing.command(
     name='docker-compose-tests',
     context_settings=dict(
         ignore_unknown_options=True,
@@ -222,7 +186,7 @@ def run_with_progress(
     return result
 
 
-@main.command(
+@testing.command(
     name='tests',
     help="Run the specified unit test targets. Multiple targets may be specified separated by spaces.",
     context_settings=dict(
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py b/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
new file mode 100644
index 0000000000..c91b336f7a
--- /dev/null
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
@@ -0,0 +1,57 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from typing import Dict, List, Union
+
+TESTING_COMMANDS: Dict[str, Union[str, List[str]]] = {
+    "name": "Testing",
+    "commands": ["tests", "docker-compose-tests"],
+}
+TESTING_PARAMETERS: Dict[str, List[Dict[str, Union[str, List[str]]]]] = {
+    "breeze testing tests": [
+        {
+            "name": "Basic flag for tests command",
+            "options": [
+                "--integration",
+                "--test-type",
+                "--db-reset",
+                "--backend",
+                "--python",
+                "--postgres-version",
+                "--mysql-version",
+                "--mssql-version",
+            ],
+        },
+        {
+            "name": "Advanced flag for tests command",
+            "options": [
+                "--limit-progress-output",
+                "--image-tag",
+                "--mount-sources",
+            ],
+        },
+    ],
+    "breeze testing docker-compose-tests": [
+        {
+            "name": "Docker-compose tests flag",
+            "options": [
+                "--image-name",
+                "--image-tag",
+                "--python",
+            ],
+        }
+    ],
+}
diff --git a/dev/breeze/src/airflow_breeze/configure_rich_click.py b/dev/breeze/src/airflow_breeze/configure_rich_click.py
index 8933d57dbe..71ea09c39a 100644
--- a/dev/breeze/src/airflow_breeze/configure_rich_click.py
+++ b/dev/breeze/src/airflow_breeze/configure_rich_click.py
@@ -19,27 +19,34 @@ from airflow_breeze.utils import recording  # isort:skip # noqa
 try:
     # We handle ImportError so that click autocomplete works
     import rich_click as click
-
-    from airflow_breeze.commands.ci_commands import CI_COMMANDS, CI_PARAMETERS
-    from airflow_breeze.commands.ci_image_commands import CI_IMAGE_TOOLS_COMMANDS, CI_IMAGE_TOOLS_PARAMETERS
-    from airflow_breeze.commands.configuration_and_maintenance_commands import (
-        CONFIGURATION_AND_MAINTENANCE_COMMANDS,
-        CONFIGURATION_AND_MAINTENANCE_PARAMETERS,
+except ImportError as e:
+    if "No module named 'rich_click'" in e.msg:
+        # just ignore the import error when rich_click is missing
+        import click  # type: ignore[no-redef]
+    else:
+        raise
+else:
+    from airflow_breeze.commands.ci_commands_config import CI_COMMANDS, CI_PARAMETERS
+    from airflow_breeze.commands.ci_image_commands_config import (
+        CI_IMAGE_TOOLS_COMMANDS,
+        CI_IMAGE_TOOLS_PARAMETERS,
     )
-    from airflow_breeze.commands.developer_commands import DEVELOPER_COMMANDS, DEVELOPER_PARAMETERS
-    from airflow_breeze.commands.production_image_commands import (
+    from airflow_breeze.commands.developer_commands_config import DEVELOPER_COMMANDS, DEVELOPER_PARAMETERS
+    from airflow_breeze.commands.production_image_commands_config import (
         PRODUCTION_IMAGE_TOOLS_COMMANDS,
         PRODUCTION_IMAGE_TOOLS_PARAMETERS,
     )
-    from airflow_breeze.commands.release_management_commands import (
+    from airflow_breeze.commands.release_management_commands_config import (
         RELEASE_MANAGEMENT_COMMANDS,
         RELEASE_MANAGEMENT_PARAMETERS,
     )
-    from airflow_breeze.commands.testing_commands import TESTING_COMMANDS, TESTING_PARAMETERS
+    from airflow_breeze.commands.setup_commands_config import SETUP_COMMANDS, SETUP_PARAMETERS
+    from airflow_breeze.commands.testing_commands_config import TESTING_COMMANDS, TESTING_PARAMETERS
 
     click.rich_click.SHOW_METAVARS_COLUMN = False
     click.rich_click.SHOW_ARGUMENTS = False
     click.rich_click.APPEND_METAVARS_HELP = True
+    click.rich_click.OPTIONS_PANEL_TITLE = "Common options"
     click.rich_click.STYLE_ERRORS_SUGGESTION = "bright_blue italic"
     click.rich_click.ERRORS_SUGGESTION = "\nTry running the '--help' flag for more information.\n"
     click.rich_click.ERRORS_EPILOGUE = (
@@ -48,7 +55,7 @@ try:
     click.rich_click.OPTION_GROUPS = {
         **DEVELOPER_PARAMETERS,
         **TESTING_PARAMETERS,
-        **CONFIGURATION_AND_MAINTENANCE_PARAMETERS,
+        **SETUP_PARAMETERS,
         **CI_IMAGE_TOOLS_PARAMETERS,
         **PRODUCTION_IMAGE_TOOLS_PARAMETERS,
         **CI_PARAMETERS,
@@ -57,17 +64,15 @@ try:
     click.rich_click.COMMAND_GROUPS = {
         "breeze": [
             DEVELOPER_COMMANDS,
-            TESTING_COMMANDS,
-            CONFIGURATION_AND_MAINTENANCE_COMMANDS,
-            CI_IMAGE_TOOLS_COMMANDS,
-            PRODUCTION_IMAGE_TOOLS_COMMANDS,
-            CI_COMMANDS,
-            RELEASE_MANAGEMENT_COMMANDS,
-        ]
+            {
+                "name": "Advanced command groups",
+                "commands": ["testing", "ci-image", "prod-image", "setup", "release-management", "ci"],
+            },
+        ],
+        "breeze testing": [TESTING_COMMANDS],
+        "breeze ci-image": [CI_IMAGE_TOOLS_COMMANDS],
+        "breeze prod-image": [PRODUCTION_IMAGE_TOOLS_COMMANDS],
+        "setup": [SETUP_COMMANDS],
+        "release-management": [RELEASE_MANAGEMENT_COMMANDS],
+        "breeze ci": [CI_COMMANDS],
     }
-except ImportError as e:
-    if "No module named 'rich_click'" in e.msg:
-        # just ignore the import error when rich_click is missing
-        import click  # type: ignore[no-redef]
-    else:
-        raise
diff --git a/dev/breeze/src/airflow_breeze/params/common_build_params.py b/dev/breeze/src/airflow_breeze/params/common_build_params.py
index 93cc8548a7..320c9289c4 100644
--- a/dev/breeze/src/airflow_breeze/params/common_build_params.py
+++ b/dev/breeze/src/airflow_breeze/params/common_build_params.py
@@ -62,7 +62,7 @@ class CommonBuildParams:
     platform: str = DOCKER_DEFAULT_PLATFORM
     prepare_buildx_cache: bool = False
     python_image: Optional[str] = None
-    push_image: bool = False
+    push: bool = False
     python: str = "3.7"
     runtime_apt_command: str = ""
     runtime_apt_deps: str = ""
diff --git a/dev/breeze/src/airflow_breeze/breeze.py b/dev/breeze/src/airflow_breeze/utils/click_utils.py
old mode 100755
new mode 100644
similarity index 66%
copy from dev/breeze/src/airflow_breeze/breeze.py
copy to dev/breeze/src/airflow_breeze/utils/click_utils.py
index 608619ae8e..4034593551
--- a/dev/breeze/src/airflow_breeze/breeze.py
+++ b/dev/breeze/src/airflow_breeze/utils/click_utils.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python3
 # Licensed to the Apache Software Foundation (ASF) under one
 # or more contributor license agreements.  See the NOTICE file
 # distributed with this work for additional information
@@ -15,15 +14,8 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-from airflow_breeze.configure_rich_click import click  # isort: skip # noqa
-from airflow_breeze.commands.main_command import main
-from airflow_breeze.utils.path_utils import (
-    create_directories_and_files,
-    find_airflow_sources_root_to_operate_on,
-)
 
-find_airflow_sources_root_to_operate_on()
-create_directories_and_files()
-
-if __name__ == '__main__':
-    main()
+try:
+    from rich_click import RichGroup as BreezeGroup
+except ImportError:
+    from click import Group as BreezeGroup  # type: ignore[misc] # noqa
diff --git a/dev/breeze/src/airflow_breeze/utils/common_options.py b/dev/breeze/src/airflow_breeze/utils/common_options.py
index ebfdb8e122..ff91acf1d4 100644
--- a/dev/breeze/src/airflow_breeze/utils/common_options.py
+++ b/dev/breeze/src/airflow_breeze/utils/common_options.py
@@ -308,11 +308,11 @@ option_prepare_buildx_cache = click.option(
     is_flag=True,
     envvar='PREPARE_BUILDX_CACHE',
 )
-option_push_image = click.option(
-    '--push-image',
+option_push = click.option(
+    '--push',
     help='Push image after building it.',
     is_flag=True,
-    envvar='PUSH_IMAGE',
+    envvar='PUSH',
 )
 option_empty_image = click.option(
     '--empty-image',
@@ -333,11 +333,11 @@ option_tag_as_latest = click.option(
     is_flag=True,
     envvar='TAG_AS_LATEST',
 )
-option_verify_image = click.option(
-    '--verify-image',
+option_verify = click.option(
+    '--verify',
     help='Verify image.',
     is_flag=True,
-    envvar='VERIFY_IMAGE',
+    envvar='VERIFY',
 )
 option_additional_pip_install_flags = click.option(
     '--additional-pip-install-flags',
@@ -459,11 +459,11 @@ option_airflow_constraints_mode_prod = click.option(
     show_default=True,
     help='Mode of constraints for PROD image building',
 )
-option_pull_image = click.option(
-    '--pull-image',
+option_pull = click.option(
+    '--pull',
     help="Pull image is missing before attempting to verify it.",
     is_flag=True,
-    envvar='PULL_IMAGE',
+    envvar='PULL',
 )
 option_python_image = click.option(
     '--python-image',
diff --git a/dev/breeze/src/airflow_breeze/utils/console.py b/dev/breeze/src/airflow_breeze/utils/console.py
index 41ae65ef61..18e6ca2437 100644
--- a/dev/breeze/src/airflow_breeze/utils/console.py
+++ b/dev/breeze/src/airflow_breeze/utils/console.py
@@ -79,3 +79,15 @@ def get_console() -> Console:
         theme=get_theme(),
         record=True if recording_file else False,
     )
+
+
+@lru_cache(maxsize=None)
+def get_stderr_console() -> Console:
+    return Console(
+        force_terminal=True,
+        color_system="standard",
+        stderr=True,
+        width=180 if not recording_width else int(recording_width),
+        theme=get_theme(),
+        record=True if recording_file else False,
+    )
diff --git a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
index 5f0de41fbc..164caf546c 100644
--- a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
@@ -433,7 +433,7 @@ def prepare_base_build_command(image_params: CommonBuildParams, verbose: bool) -
                 "--builder",
                 image_params.builder,
                 "--progress=tty",
-                "--push" if image_params.push_image else "--load",
+                "--push" if image_params.push else "--load",
             ]
         )
     else:
@@ -688,7 +688,7 @@ def warm_up_docker_builder(image_params: CommonBuildParams, verbose: bool, dry_r
     get_console().print(f"[info]Warming up the {image_params.builder} builder for syntax: {docker_syntax}")
     warm_up_image_param = deepcopy(image_params)
     warm_up_image_param.image_tag = "warmup"
-    warm_up_image_param.push_image = False
+    warm_up_image_param.push = False
     build_command = prepare_base_build_command(image_params=warm_up_image_param, verbose=verbose)
     warm_up_command = []
     warm_up_command.extend(["docker"])
diff --git a/dev/breeze/src/airflow_breeze/utils/image.py b/dev/breeze/src/airflow_breeze/utils/image.py
index 57ccc2e3a1..5d83e7fff5 100644
--- a/dev/breeze/src/airflow_breeze/utils/image.py
+++ b/dev/breeze/src/airflow_breeze/utils/image.py
@@ -43,7 +43,7 @@ def run_pull_in_parallel(
     image_params_list: Union[List[BuildCiParams], List[BuildProdParams]],
     python_version_list: List[str],
     verbose: bool,
-    verify_image: bool,
+    verify: bool,
     tag_as_latest: bool,
     wait_for_image: bool,
     extra_pytest_args: Tuple,
@@ -54,7 +54,7 @@ def run_pull_in_parallel(
     )
     pool = mp.Pool(parallelism)
     poll_time = 10.0
-    if not verify_image:
+    if not verify:
         results = [
             pool.apply_async(
                 run_pull_image,
diff --git a/dev/breeze/src/airflow_breeze/utils/path_utils.py b/dev/breeze/src/airflow_breeze/utils/path_utils.py
index c54b54e5c7..55aa5fd2e1 100644
--- a/dev/breeze/src/airflow_breeze/utils/path_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/path_utils.py
@@ -68,7 +68,7 @@ def skip_upgrade_check():
 
 def get_package_setup_metadata_hash() -> str:
     """
-    Retrieves hash of setup.py and setup.cfg files from the source of installation of Breeze.
+    Retrieves hash of setup files from the source of installation of Breeze.
 
     This is used in order to determine if we need to upgrade Breeze, because some
     setup files changed. Blake2b algorithm will not be flagged by security checkers
@@ -117,7 +117,7 @@ def get_installation_sources_config_metadata_hash() -> str:
 
 def get_used_sources_setup_metadata_hash() -> str:
     """
-    Retrieves hash of setup.py and setup.cfg files from the currently used sources.
+    Retrieves hash of setup files from the currently used sources.
     """
     return get_sources_setup_metadata_hash(get_used_airflow_sources())
 
diff --git a/dev/breeze/src/airflow_breeze/utils/run_utils.py b/dev/breeze/src/airflow_breeze/utils/run_utils.py
index 4d99fa6a67..ead77dc2da 100644
--- a/dev/breeze/src/airflow_breeze/utils/run_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/run_utils.py
@@ -187,7 +187,7 @@ def assert_pre_commit_installed(verbose: bool):
     else:
         get_console().print("\n[error]Error checking for pre-commit-installation:[/]\n")
         get_console().print(command_result.stderr)
-        get_console().print("\nMake sure to run:\n      breeze self-upgrade\n\n")
+        get_console().print("\nMake sure to run:\n      breeze setup self-upgrade\n\n")
         sys.exit(1)
 
 
@@ -215,7 +215,8 @@ def instruct_build_image(python: str):
     """Print instructions to the user that they should build the image"""
     get_console().print(f'[warning]\nThe CI image for Python version {python} may be outdated[/]\n')
     get_console().print(
-        f"\n[info]Please run at the earliest convenience:[/]\n\nbreeze build-image --python {python}\n\n"
+        f"\n[info]Please run at the earliest "
+        f"convenience:[/]\n\nbreeze ci-image build --python {python}\n\n"
     )
 
 
@@ -351,7 +352,7 @@ def get_runnable_ci_image(verbose: bool, dry_run: bool) -> str:
         image=airflow_image,
         verbose=verbose,
         dry_run=dry_run,
-        instruction=f"breeze build-image --python {python_version}",
+        instruction=f"breeze ci-image build --python {python_version}",
     )
     return airflow_image
 
diff --git a/dev/breeze/src/airflow_breeze/utils/visuals.py b/dev/breeze/src/airflow_breeze/utils/visuals.py
index b5db534514..7702ed0390 100644
--- a/dev/breeze/src/airflow_breeze/utils/visuals.py
+++ b/dev/breeze/src/airflow_breeze/utils/visuals.py
@@ -126,7 +126,7 @@ CHEATSHEET = f"""
 
         You can disable this cheatsheet by running:
 
-            ./breeze config --no-cheatsheet
+            ./breeze setup config --no-cheatsheet
 
 """
 CHEATSHEET_STYLE = "white"
diff --git a/dev/refresh_images.sh b/dev/refresh_images.sh
index 7675db65b2..6ae20ee24a 100755
--- a/dev/refresh_images.sh
+++ b/dev/refresh_images.sh
@@ -23,9 +23,9 @@ export ANSWER="yes"
 export CI="true"
 export GITHUB_TOKEN=""
 
-breeze self-upgrade --force --use-current-airflow-sources
+breeze setup self-upgrade --force --use-current-airflow-sources
 
-breeze build-image \
+breeze ci-image build \
      --builder airflow_cache \
      --run-in-parallel \
      --prepare-buildx-cache \
@@ -35,16 +35,16 @@ breeze build-image \
 
 rm -fv ./dist/* ./docker-context-files/*
 
-breeze prepare-provider-packages \
+breeze release-management prepare-provider-packages \
     --package-list-file ./scripts/ci/installed_providers.txt \
     --package-format wheel \
     --version-suffix-for-pypi dev0
 
-breeze prepare-airflow-package --package-format wheel --version-suffix-for-pypi dev0
+breeze release-management prepare-airflow-package --package-format wheel --version-suffix-for-pypi dev0
 
 mv -v ./dist/*.whl ./docker-context-files
 
-breeze build-prod-image \
+breeze prod-image build \
      --builder airflow_cache \
      --run-in-parallel \
      --install-packages-from-context \
diff --git a/docker_tests/docker_tests_utils.py b/docker_tests/docker_tests_utils.py
index 6b3512b3b5..77960ebaeb 100644
--- a/docker_tests/docker_tests_utils.py
+++ b/docker_tests/docker_tests_utils.py
@@ -83,11 +83,11 @@ In case 2) - Follow the steps below:
 
 CI image:
 
-     ./breeze build-image --upgrade-to-newer-dependencies --python 3.7
+     ./breeze ci-image build --upgrade-to-newer-dependencies --python 3.7
 
 Production image:
 
-     ./breeze build-image --production-image --upgrade-to-newer-dependencies --python 3.7
+     ./breeze ci-image build --production-image --upgrade-to-newer-dependencies --python 3.7
 
 * You will see error messages there telling which requirements are conflicting and which packages caused the
   conflict. Add the limitation that caused the conflict to EAGER_UPGRADE_ADDITIONAL_REQUIREMENTS
diff --git a/images/breeze/output-build-docs.svg b/images/breeze/output-build-docs.svg
deleted file mode 100644
index 27fc3c7751..0000000000
--- a/images/breeze/output-build-docs.svg
+++ /dev/null
@@ -1,292 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1465.1999999999998" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-417653393-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-417653393-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-417653393-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-417653393-r2 { fill: #c5c8c6 }
-.terminal-417653393-r3 { fill: #d0b344;font-weight: bold }
-.terminal-417653393-r4 { fill: #868887 }
-.terminal-417653393-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-417653393-r6 { fill: #98a84b;font-weight: bold }
-.terminal-417653393-r7 { fill: #8d7b39 }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-417653393-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1414.1999999999998" />
-    </clipPath>
-    <clipPath id="terminal-417653393-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-9">
-    <rect x="0" y="221.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-10">
-    <rect x="0" y="245.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-11">
-    <rect x="0" y="269.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-12">
-    <rect x="0" y="294.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-13">
-    <rect x="0" y="318.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-14">
-    <rect x="0" y="343.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-15">
-    <rect x="0" y="367.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-16">
-    <rect x="0" y="391.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-17">
-    <rect x="0" y="416.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-18">
-    <rect x="0" y="440.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-19">
-    <rect x="0" y="465.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-20">
-    <rect x="0" y="489.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-21">
-    <rect x="0" y="513.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-22">
-    <rect x="0" y="538.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-23">
-    <rect x="0" y="562.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-24">
-    <rect x="0" y="587.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-25">
-    <rect x="0" y="611.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-26">
-    <rect x="0" y="635.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-27">
-    <rect x="0" y="660.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-28">
-    <rect x="0" y="684.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-29">
-    <rect x="0" y="709.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-30">
-    <rect x="0" y="733.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-31">
-    <rect x="0" y="757.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-32">
-    <rect x="0" y="782.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-33">
-    <rect x="0" y="806.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-34">
-    <rect x="0" y="831.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-35">
-    <rect x="0" y="855.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-36">
-    <rect x="0" y="879.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-37">
-    <rect x="0" y="904.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-38">
-    <rect x="0" y="928.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-39">
-    <rect x="0" y="953.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-40">
-    <rect x="0" y="977.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-41">
-    <rect x="0" y="1001.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-42">
-    <rect x="0" y="1026.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-43">
-    <rect x="0" y="1050.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-44">
-    <rect x="0" y="1075.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-45">
-    <rect x="0" y="1099.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-46">
-    <rect x="0" y="1123.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-47">
-    <rect x="0" y="1148.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-48">
-    <rect x="0" y="1172.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-49">
-    <rect x="0" y="1197.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-50">
-    <rect x="0" y="1221.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-51">
-    <rect x="0" y="1245.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-52">
-    <rect x="0" y="1270.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-53">
-    <rect x="0" y="1294.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-54">
-    <rect x="0" y="1319.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-55">
-    <rect x="0" y="1343.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-417653393-line-56">
-    <rect x="0" y="1367.9" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1463.2" rx="8"/><text class="terminal-417653393-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;build-docs</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#terminal-417653393-clip-terminal)">
-    
-    <g class="terminal-417653393-matrix">
-    <text class="terminal-417653393-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-417653393-line-0)">
-</text><text class="terminal-417653393-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-417653393-line-1)">Usage:&#160;</text><text class="terminal-417653393-r1" x="97.6" y="44.4" textLength="329.4" clip-path="url(#terminal-417653393-line-1)">breeze&#160;build-docs&#160;[OPTIONS]</text><text class="terminal-417653393-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-417653393-line-1)">
-</text><text class="terminal-417653393-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-417653393-line-2)">
-</text><text class="terminal-417653393-r2" x="12.2" y="93.2" textLength="451.4" clip-path="url(#terminal-417653393-line-3)">Build&#160;documentation&#160;in&#160;the&#160;container.</text><text class="terminal-417653393-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-417653393-line-3)">
-</text><text class="terminal-417653393-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-417653393-line-4)">
-</text><text class="terminal-417653393-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-417653393-line-5)">╭─</text><text class="terminal-417653393-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-417653393-line-5)">&#160;Doc&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-417653393-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-417653393-l [...]
-</text><text class="terminal-417653393-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-417653393-line-6)">│</text><text class="terminal-417653393-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-417653393-line-6)">-</text><text class="terminal-417653393-r5" x="36.6" y="166.4" textLength="61" clip-path="url(#terminal-417653393-line-6)">-docs</text><text class="terminal-417653393-r5" x="97.6" y="166.4" textLength="61" clip-path="url(#terminal-417653393-line- [...]
-</text><text class="terminal-417653393-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-417653393-line-7)">│</text><text class="terminal-417653393-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-417653393-line-7)">-</text><text class="terminal-417653393-r5" x="36.6" y="190.8" textLength="134.2" clip-path="url(#terminal-417653393-line-7)">-spellcheck</text><text class="terminal-417653393-r5" x="170.8" y="190.8" textLength="61" clip-path="url(#terminal-41765 [...]
-</text><text class="terminal-417653393-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-417653393-line-8)">│</text><text class="terminal-417653393-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-417653393-line-8)">-</text><text class="terminal-417653393-r5" x="36.6" y="215.2" textLength="73.2" clip-path="url(#terminal-417653393-line-8)">-clean</text><text class="terminal-417653393-r5" x="109.8" y="215.2" textLength="73.2" clip-path="url(#terminal-417653393 [...]
-</text><text class="terminal-417653393-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-417653393-line-9)">│</text><text class="terminal-417653393-r2" x="305" y="239.6" textLength="1134.6" clip-path="url(#terminal-417653393-line-9)">before&#160;the&#160;build&#160;-&#160;useful&#160;for&#160;a&#160;clean&#160;build.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-417653393-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-417653393-line-10)">│</text><text class="terminal-417653393-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-417653393-line-10)">-</text><text class="terminal-417653393-r5" x="36.6" y="264" textLength="48.8" clip-path="url(#terminal-417653393-line-10)">-for</text><text class="terminal-417653393-r5" x="85.4" y="264" textLength="134.2" clip-path="url(#terminal-417653393-line-1 [...]
-</text><text class="terminal-417653393-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-417653393-line-11)">│</text><text class="terminal-417653393-r5" x="305" y="288.4" textLength="12.2" clip-path="url(#terminal-417653393-line-11)">-</text><text class="terminal-417653393-r5" x="317.2" y="288.4" textLength="73.2" clip-path="url(#terminal-417653393-line-11)">-clean</text><text class="terminal-417653393-r5" x="390.4" y="288.4" textLength="73.2" clip-path="url(#terminal-417653 [...]
-</text><text class="terminal-417653393-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-417653393-line-12)">│</text><text class="terminal-417653393-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-417653393-line-12)">-</text><text class="terminal-417653393-r5" x="36.6" y="312.8" textLength="97.6" clip-path="url(#terminal-417653393-line-12)">-package</text><text class="terminal-417653393-r5" x="134.2" y="312.8" textLength="85.4" clip-path="url(#terminal-4176 [...]
-</text><text class="terminal-417653393-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-417653393-line-13)">│</text><text class="terminal-417653393-r7" x="305" y="337.2" textLength="1134.6" clip-path="url(#terminal-417653393-line-13)">(apache-airflow&#160;|&#160;apache-airflow-providers&#160;|&#160;apache-airflow-providers-airbyte&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-417653393-r4" x="1451.8" y [...]
-</text><text class="terminal-417653393-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-417653393-line-14)">│</text><text class="terminal-417653393-r7" x="305" y="361.6" textLength="1134.6" clip-path="url(#terminal-417653393-line-14)">apache-airflow-providers-alibaba&#160;|&#160;apache-airflow-providers-amazon&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><te [...]
-</text><text class="terminal-417653393-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-417653393-line-15)">│</text><text class="terminal-417653393-r7" x="305" y="386" textLength="1134.6" clip-path="url(#terminal-417653393-line-15)">apache-airflow-providers-apache-beam&#160;|&#160;apache-airflow-providers-apache-cassandra&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-417653393-r4" x="1451.8" y="386" textLength="12.2" clip [...]
-</text><text class="terminal-417653393-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-417653393-line-16)">│</text><text class="terminal-417653393-r7" x="305" y="410.4" textLength="1134.6" clip-path="url(#terminal-417653393-line-16)">apache-airflow-providers-apache-drill&#160;|&#160;apache-airflow-providers-apache-druid&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-417653393-r4" x="1451.8" y="410.4" t [...]
-</text><text class="terminal-417653393-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-417653393-line-17)">│</text><text class="terminal-417653393-r7" x="305" y="434.8" textLength="1134.6" clip-path="url(#terminal-417653393-line-17)">apache-airflow-providers-apache-hdfs&#160;|&#160;apache-airflow-providers-apache-hive&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-417653393-r4" x="1451.8" y [...]
-</text><text class="terminal-417653393-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-417653393-line-18)">│</text><text class="terminal-417653393-r7" x="305" y="459.2" textLength="1134.6" clip-path="url(#terminal-417653393-line-18)">apache-airflow-providers-apache-kylin&#160;|&#160;apache-airflow-providers-apache-livy&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-417653393-r4" x="1451.8" y="459 [...]
-</text><text class="terminal-417653393-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-417653393-line-19)">│</text><text class="terminal-417653393-r7" x="305" y="483.6" textLength="1134.6" clip-path="url(#terminal-417653393-line-19)">apache-airflow-providers-apache-pig&#160;|&#160;apache-airflow-providers-apache-pinot&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-417653393-r4" x="1451.8" y [...]
-</text><text class="terminal-417653393-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-417653393-line-20)">│</text><text class="terminal-417653393-r7" x="305" y="508" textLength="1134.6" clip-path="url(#terminal-417653393-line-20)">apache-airflow-providers-apache-spark&#160;|&#160;apache-airflow-providers-apache-sqoop&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-417653393-r4" x="1451.8" y="508" textLen [...]
-</text><text class="terminal-417653393-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-417653393-line-21)">│</text><text class="terminal-417653393-r7" x="305" y="532.4" textLength="1134.6" clip-path="url(#terminal-417653393-line-21)">apache-airflow-providers-arangodb&#160;|&#160;apache-airflow-providers-asana&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><te [...]
-</text><text class="terminal-417653393-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-417653393-line-22)">│</text><text class="terminal-417653393-r7" x="305" y="556.8" textLength="1134.6" clip-path="url(#terminal-417653393-line-22)">apache-airflow-providers-celery&#160;|&#160;apache-airflow-providers-cloudant&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text cl [...]
-</text><text class="terminal-417653393-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-417653393-line-23)">│</text><text class="terminal-417653393-r7" x="305" y="581.2" textLength="1134.6" clip-path="url(#terminal-417653393-line-23)">apache-airflow-providers-cncf-kubernetes&#160;|&#160;apache-airflow-providers-databricks&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-417653393-r4" x="1451.8" y="581.2" textLe [...]
-</text><text class="terminal-417653393-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-417653393-line-24)">│</text><text class="terminal-417653393-r7" x="305" y="605.6" textLength="1134.6" clip-path="url(#terminal-417653393-line-24)">apache-airflow-providers-datadog&#160;|&#160;apache-airflow-providers-dbt-cloud&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="termi [...]
-</text><text class="terminal-417653393-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-417653393-line-25)">│</text><text class="terminal-417653393-r7" x="305" y="630" textLength="1134.6" clip-path="url(#terminal-417653393-line-25)">apache-airflow-providers-dingding&#160;|&#160;apache-airflow-providers-discord&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="term [...]
-</text><text class="terminal-417653393-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-417653393-line-26)">│</text><text class="terminal-417653393-r7" x="305" y="654.4" textLength="1134.6" clip-path="url(#terminal-417653393-line-26)">apache-airflow-providers-docker&#160;|&#160;apache-airflow-providers-elasticsearch&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-417653393-r [...]
-</text><text class="terminal-417653393-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-417653393-line-27)">│</text><text class="terminal-417653393-r7" x="305" y="678.8" textLength="1134.6" clip-path="url(#terminal-417653393-line-27)">apache-airflow-providers-exasol&#160;|&#160;apache-airflow-providers-facebook&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text cl [...]
-</text><text class="terminal-417653393-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-417653393-line-28)">│</text><text class="terminal-417653393-r7" x="305" y="703.2" textLength="1134.6" clip-path="url(#terminal-417653393-line-28)">apache-airflow-providers-ftp&#160;|&#160;apache-airflow-providers-github&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="terminal-417653393-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-417653393-line-29)">│</text><text class="terminal-417653393-r7" x="305" y="727.6" textLength="1134.6" clip-path="url(#terminal-417653393-line-29)">apache-airflow-providers-google&#160;|&#160;apache-airflow-providers-grpc&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-417653393-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-417653393-line-30)">│</text><text class="terminal-417653393-r7" x="305" y="752" textLength="1134.6" clip-path="url(#terminal-417653393-line-30)">apache-airflow-providers-hashicorp&#160;|&#160;apache-airflow-providers-http&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text c [...]
-</text><text class="terminal-417653393-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-417653393-line-31)">│</text><text class="terminal-417653393-r7" x="305" y="776.4" textLength="1134.6" clip-path="url(#terminal-417653393-line-31)">apache-airflow-providers-imap&#160;|&#160;apache-airflow-providers-influxdb&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tex [...]
-</text><text class="terminal-417653393-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-417653393-line-32)">│</text><text class="terminal-417653393-r7" x="305" y="800.8" textLength="1134.6" clip-path="url(#terminal-417653393-line-32)">apache-airflow-providers-jdbc&#160;|&#160;apache-airflow-providers-jenkins&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-417653393-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-417653393-line-33)">│</text><text class="terminal-417653393-r7" x="305" y="825.2" textLength="1134.6" clip-path="url(#terminal-417653393-line-33)">apache-airflow-providers-jira&#160;|&#160;apache-airflow-providers-microsoft-azure&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-417653393-r [...]
-</text><text class="terminal-417653393-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-417653393-line-34)">│</text><text class="terminal-417653393-r7" x="305" y="849.6" textLength="1134.6" clip-path="url(#terminal-417653393-line-34)">apache-airflow-providers-microsoft-mssql&#160;|&#160;apache-airflow-providers-microsoft-psrp&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-417653393-r4" x="1451.8" y="849.6" textLength="12.2" clip-pat [...]
-</text><text class="terminal-417653393-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-417653393-line-35)">│</text><text class="terminal-417653393-r7" x="305" y="874" textLength="1134.6" clip-path="url(#terminal-417653393-line-35)">apache-airflow-providers-microsoft-winrm&#160;|&#160;apache-airflow-providers-mongo&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-417653393-r4" x="145 [...]
-</text><text class="terminal-417653393-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-417653393-line-36)">│</text><text class="terminal-417653393-r7" x="305" y="898.4" textLength="1134.6" clip-path="url(#terminal-417653393-line-36)">apache-airflow-providers-mysql&#160;|&#160;apache-airflow-providers-neo4j&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-417653393-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-417653393-line-37)">│</text><text class="terminal-417653393-r7" x="305" y="922.8" textLength="1134.6" clip-path="url(#terminal-417653393-line-37)">apache-airflow-providers-odbc&#160;|&#160;apache-airflow-providers-openfaas&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tex [...]
-</text><text class="terminal-417653393-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-417653393-line-38)">│</text><text class="terminal-417653393-r7" x="305" y="947.2" textLength="1134.6" clip-path="url(#terminal-417653393-line-38)">apache-airflow-providers-opsgenie&#160;|&#160;apache-airflow-providers-oracle&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text cl [...]
-</text><text class="terminal-417653393-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-417653393-line-39)">│</text><text class="terminal-417653393-r7" x="305" y="971.6" textLength="1134.6" clip-path="url(#terminal-417653393-line-39)">apache-airflow-providers-pagerduty&#160;|&#160;apache-airflow-providers-papermill&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-417653 [...]
-</text><text class="terminal-417653393-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-417653393-line-40)">│</text><text class="terminal-417653393-r7" x="305" y="996" textLength="1134.6" clip-path="url(#terminal-417653393-line-40)">apache-airflow-providers-plexus&#160;|&#160;apache-airflow-providers-postgres&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class= [...]
-</text><text class="terminal-417653393-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-417653393-line-41)">│</text><text class="terminal-417653393-r7" x="305" y="1020.4" textLength="1134.6" clip-path="url(#terminal-417653393-line-41)">apache-airflow-providers-presto&#160;|&#160;apache-airflow-providers-qubole&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</t [...]
-</text><text class="terminal-417653393-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-417653393-line-42)">│</text><text class="terminal-417653393-r7" x="305" y="1044.8" textLength="1134.6" clip-path="url(#terminal-417653393-line-42)">apache-airflow-providers-redis&#160;|&#160;apache-airflow-providers-salesforce&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class [...]
-</text><text class="terminal-417653393-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-417653393-line-43)">│</text><text class="terminal-417653393-r7" x="305" y="1069.2" textLength="1134.6" clip-path="url(#terminal-417653393-line-43)">apache-airflow-providers-samba&#160;|&#160;apache-airflow-providers-segment&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</t [...]
-</text><text class="terminal-417653393-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-417653393-line-44)">│</text><text class="terminal-417653393-r7" x="305" y="1093.6" textLength="1134.6" clip-path="url(#terminal-417653393-line-44)">apache-airflow-providers-sendgrid&#160;|&#160;apache-airflow-providers-sftp&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</t [...]
-</text><text class="terminal-417653393-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-417653393-line-45)">│</text><text class="terminal-417653393-r7" x="305" y="1118" textLength="1134.6" clip-path="url(#terminal-417653393-line-45)">apache-airflow-providers-singularity&#160;|&#160;apache-airflow-providers-slack&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="termina [...]
-</text><text class="terminal-417653393-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-417653393-line-46)">│</text><text class="terminal-417653393-r7" x="305" y="1142.4" textLength="1134.6" clip-path="url(#terminal-417653393-line-46)">apache-airflow-providers-snowflake&#160;|&#160;apache-airflow-providers-sqlite&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class [...]
-</text><text class="terminal-417653393-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-417653393-line-47)">│</text><text class="terminal-417653393-r7" x="305" y="1166.8" textLength="1134.6" clip-path="url(#terminal-417653393-line-47)">apache-airflow-providers-ssh&#160;|&#160;apache-airflow-providers-tableau&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-417653393-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-417653393-line-48)">│</text><text class="terminal-417653393-r7" x="305" y="1191.2" textLength="1134.6" clip-path="url(#terminal-417653393-line-48)">apache-airflow-providers-telegram&#160;|&#160;apache-airflow-providers-trino&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text>< [...]
-</text><text class="terminal-417653393-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-417653393-line-49)">│</text><text class="terminal-417653393-r7" x="305" y="1215.6" textLength="1134.6" clip-path="url(#terminal-417653393-line-49)">apache-airflow-providers-vertica&#160;|&#160;apache-airflow-providers-yandex&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text>< [...]
-</text><text class="terminal-417653393-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-417653393-line-50)">│</text><text class="terminal-417653393-r7" x="305" y="1240" textLength="1134.6" clip-path="url(#terminal-417653393-line-50)">apache-airflow-providers-zendesk&#160;|&#160;docker-stack&#160;|&#160;helm-chart)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="terminal-417653393-r4" x="0" y="1264.4" textLength="1464" clip-path="url(#terminal-417653393-line-51)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-417653393-r2" x="1464" y="1264.4" textLength="12.2" clip-path="url(#terminal-417653393-line-51)">
-</text><text class="terminal-417653393-r4" x="0" y="1288.8" textLength="24.4" clip-path="url(#terminal-417653393-line-52)">╭─</text><text class="terminal-417653393-r4" x="24.4" y="1288.8" textLength="1415.2" clip-path="url(#terminal-417653393-line-52)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-417653393-r4" x="1439.6" y="1288.8" textLength="24.4" clip-path="url(#terminal-41765 [...]
-</text><text class="terminal-417653393-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-417653393-line-53)">│</text><text class="terminal-417653393-r5" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#terminal-417653393-line-53)">-</text><text class="terminal-417653393-r5" x="36.6" y="1313.2" textLength="97.6" clip-path="url(#terminal-417653393-line-53)">-verbose</text><text class="terminal-417653393-r6" x="280.6" y="1313.2" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-417653393-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-417653393-line-54)">│</text><text class="terminal-417653393-r5" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#terminal-417653393-line-54)">-</text><text class="terminal-417653393-r5" x="36.6" y="1337.6" textLength="48.8" clip-path="url(#terminal-417653393-line-54)">-dry</text><text class="terminal-417653393-r5" x="85.4" y="1337.6" textLength="48.8" clip-path="url(#terminal-41765 [...]
-</text><text class="terminal-417653393-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-417653393-line-55)">│</text><text class="terminal-417653393-r5" x="24.4" y="1362" textLength="12.2" clip-path="url(#terminal-417653393-line-55)">-</text><text class="terminal-417653393-r5" x="36.6" y="1362" textLength="85.4" clip-path="url(#terminal-417653393-line-55)">-github</text><text class="terminal-417653393-r5" x="122" y="1362" textLength="134.2" clip-path="url(#terminal-417653393- [...]
-</text><text class="terminal-417653393-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-417653393-line-56)">│</text><text class="terminal-417653393-r5" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#terminal-417653393-line-56)">-</text><text class="terminal-417653393-r5" x="36.6" y="1386.4" textLength="61" clip-path="url(#terminal-417653393-line-56)">-help</text><text class="terminal-417653393-r6" x="280.6" y="1386.4" textLength="24.4" clip-path="url(#terminal-41765 [...]
-</text><text class="terminal-417653393-r4" x="0" y="1410.8" textLength="1464" clip-path="url(#terminal-417653393-line-57)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-417653393-r2" x="1464" y="1410.8" textLength="12.2" clip-path="url(#terminal-417653393-line-57)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output-build-image.svg b/images/breeze/output-build-image.svg
deleted file mode 100644
index 3176d38205..0000000000
--- a/images/breeze/output-build-image.svg
+++ /dev/null
@@ -1,332 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1709.1999999999998" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-3553883049-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-3553883049-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-3553883049-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-3553883049-r2 { fill: #c5c8c6 }
-.terminal-3553883049-r3 { fill: #d0b344;font-weight: bold }
-.terminal-3553883049-r4 { fill: #868887 }
-.terminal-3553883049-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-3553883049-r6 { fill: #98a84b;font-weight: bold }
-.terminal-3553883049-r7 { fill: #8d7b39 }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-3553883049-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1658.1999999999998" />
-    </clipPath>
-    <clipPath id="terminal-3553883049-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-9">
-    <rect x="0" y="221.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-10">
-    <rect x="0" y="245.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-11">
-    <rect x="0" y="269.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-12">
-    <rect x="0" y="294.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-13">
-    <rect x="0" y="318.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-14">
-    <rect x="0" y="343.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-15">
-    <rect x="0" y="367.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-16">
-    <rect x="0" y="391.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-17">
-    <rect x="0" y="416.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-18">
-    <rect x="0" y="440.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-19">
-    <rect x="0" y="465.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-20">
-    <rect x="0" y="489.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-21">
-    <rect x="0" y="513.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-22">
-    <rect x="0" y="538.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-23">
-    <rect x="0" y="562.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-24">
-    <rect x="0" y="587.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-25">
-    <rect x="0" y="611.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-26">
-    <rect x="0" y="635.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-27">
-    <rect x="0" y="660.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-28">
-    <rect x="0" y="684.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-29">
-    <rect x="0" y="709.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-30">
-    <rect x="0" y="733.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-31">
-    <rect x="0" y="757.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-32">
-    <rect x="0" y="782.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-33">
-    <rect x="0" y="806.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-34">
-    <rect x="0" y="831.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-35">
-    <rect x="0" y="855.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-36">
-    <rect x="0" y="879.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-37">
-    <rect x="0" y="904.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-38">
-    <rect x="0" y="928.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-39">
-    <rect x="0" y="953.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-40">
-    <rect x="0" y="977.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-41">
-    <rect x="0" y="1001.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-42">
-    <rect x="0" y="1026.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-43">
-    <rect x="0" y="1050.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-44">
-    <rect x="0" y="1075.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-45">
-    <rect x="0" y="1099.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-46">
-    <rect x="0" y="1123.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-47">
-    <rect x="0" y="1148.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-48">
-    <rect x="0" y="1172.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-49">
-    <rect x="0" y="1197.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-50">
-    <rect x="0" y="1221.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-51">
-    <rect x="0" y="1245.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-52">
-    <rect x="0" y="1270.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-53">
-    <rect x="0" y="1294.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-54">
-    <rect x="0" y="1319.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-55">
-    <rect x="0" y="1343.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-56">
-    <rect x="0" y="1367.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-57">
-    <rect x="0" y="1392.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-58">
-    <rect x="0" y="1416.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-59">
-    <rect x="0" y="1441.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-60">
-    <rect x="0" y="1465.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-61">
-    <rect x="0" y="1489.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-62">
-    <rect x="0" y="1514.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-63">
-    <rect x="0" y="1538.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-64">
-    <rect x="0" y="1563.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-65">
-    <rect x="0" y="1587.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3553883049-line-66">
-    <rect x="0" y="1611.9" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1707.2" rx="8"/><text class="terminal-3553883049-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;build-image</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#terminal-3553883049-clip-terminal)">
-    
-    <g class="terminal-3553883049-matrix">
-    <text class="terminal-3553883049-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3553883049-line-0)">
-</text><text class="terminal-3553883049-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3553883049-line-1)">Usage:&#160;</text><text class="terminal-3553883049-r1" x="97.6" y="44.4" textLength="341.6" clip-path="url(#terminal-3553883049-line-1)">breeze&#160;build-image&#160;[OPTIONS]</text><text class="terminal-3553883049-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-1)">
-</text><text class="terminal-3553883049-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-2)">
-</text><text class="terminal-3553883049-r2" x="12.2" y="93.2" textLength="1073.6" clip-path="url(#terminal-3553883049-line-3)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;for&#160;all&#160;python&#160;versions&#160;(sequentially).</text><text class="terminal-3553883049-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-3)">
-</text><text class="terminal-3553883049-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-4)">
-</text><text class="terminal-3553883049-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3553883049-line-5)">╭─</text><text class="terminal-3553883049-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3553883049-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3553883049-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-355388 [...]
-</text><text class="terminal-3553883049-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-6)">│</text><text class="terminal-3553883049-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-6)">-</text><text class="terminal-3553883049-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-3553883049-line-6)">-python</text><text class="terminal-3553883049-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-355 [...]
-</text><text class="terminal-3553883049-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-7)">│</text><text class="terminal-3553883049-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-3553883049-line-7)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-3553883049-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-8)">│</text><text class="terminal-3553883049-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-3553883049-line-8)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-3553883049-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-9)">│</text><text class="terminal-3553883049-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-9)">-</text><text class="terminal-3553883049-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-3553883049-line-9)">-upgrade</text><text class="terminal-3553883049-r5" x="134.2" y="239.6" textLength="268.4" clip-path="url(#terminal [...]
-</text><text class="terminal-3553883049-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3553883049-line-10)">│</text><text class="terminal-3553883049-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-3553883049-line-10)">-</text><text class="terminal-3553883049-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-3553883049-line-10)">-debian</text><text class="terminal-3553883049-r5" x="122" y="264" textLength="97.6" clip-path="url(#terminal-35538830 [...]
-</text><text class="terminal-3553883049-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-11)">│</text><text class="terminal-3553883049-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-11)">-</text><text class="terminal-3553883049-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-3553883049-line-11)">-image</text><text class="terminal-3553883049-r5" x="109.8" y="288.4" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-3553883049-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-12)">│</text><text class="terminal-3553883049-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-12)">-</text><text class="terminal-3553883049-r5" x="36.6" y="312.8" textLength="48.8" clip-path="url(#terminal-3553883049-line-12)">-tag</text><text class="terminal-3553883049-r5" x="85.4" y="312.8" textLength="122" clip-path="url(#terminal-355 [...]
-</text><text class="terminal-3553883049-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-13)">│</text><text class="terminal-3553883049-r2" x="475.8" y="337.2" textLength="414.8" clip-path="url(#terminal-3553883049-line-13)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-3553883049-r5" x="890.6" y="337.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-13)">-</text><text class="terminal-3553883049- [...]
-</text><text class="terminal-3553883049-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-14)">│</text><text class="terminal-3553883049-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-14)">-</text><text class="terminal-3553883049-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-3553883049-line-14)">-docker</text><text class="terminal-3553883049-r5" x="122" y="361.6" textLength="73.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-3553883049-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3553883049-line-15)">│</text><text class="terminal-3553883049-r4" x="475.8" y="386" textLength="549" clip-path="url(#terminal-3553883049-line-15)">[default:&#160;registry]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3553883049-r4" x="1451.8" y="386" t [...]
-</text><text class="terminal-3553883049-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-16)">│</text><text class="terminal-3553883049-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-16)">-</text><text class="terminal-3553883049-r5" x="36.6" y="410.4" textLength="73.2" clip-path="url(#terminal-3553883049-line-16)">-force</text><text class="terminal-3553883049-r5" x="109.8" y="410.4" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-3553883049-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-3553883049-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3553883049-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-17)">
-</text><text class="terminal-3553883049-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-3553883049-line-18)">╭─</text><text class="terminal-3553883049-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-3553883049-line-18)">&#160;Building&#160;images&#160;in&#160;parallel&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3553883049-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="ur [...]
-</text><text class="terminal-3553883049-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-19)">│</text><text class="terminal-3553883049-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-19)">-</text><text class="terminal-3553883049-r5" x="36.6" y="483.6" textLength="48.8" clip-path="url(#terminal-3553883049-line-19)">-run</text><text class="terminal-3553883049-r5" x="85.4" y="483.6" textLength="146.4" clip-path="url(#terminal-3 [...]
-</text><text class="terminal-3553883049-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3553883049-line-20)">│</text><text class="terminal-3553883049-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-3553883049-line-20)">-</text><text class="terminal-3553883049-r5" x="36.6" y="508" textLength="146.4" clip-path="url(#terminal-3553883049-line-20)">-parallelism</text><text class="terminal-3553883049-r2" x="280.6" y="508" textLength="915" clip-path="url(#terminal-3 [...]
-</text><text class="terminal-3553883049-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-21)">│</text><text class="terminal-3553883049-r4" x="280.6" y="532.4" textLength="915" clip-path="url(#terminal-3553883049-line-21)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-3553883049-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-22)">│</text><text class="terminal-3553883049-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-22)">-</text><text class="terminal-3553883049-r5" x="36.6" y="556.8" textLength="85.4" clip-path="url(#terminal-3553883049-line-22)">-python</text><text class="terminal-3553883049-r5" x="122" y="556.8" textLength="109.8" clip-path="url(#terminal [...]
-</text><text class="terminal-3553883049-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-23)">│</text><text class="terminal-3553883049-r4" x="280.6" y="581.2" textLength="951.6" clip-path="url(#terminal-3553883049-line-23)">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-3553883049-r4" x="0" y="605.6" textLength="1464" clip-path="url(#terminal-3553883049-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3553883049-r2" x="1464" y="605.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-24)">
-</text><text class="terminal-3553883049-r4" x="0" y="630" textLength="24.4" clip-path="url(#terminal-3553883049-line-25)">╭─</text><text class="terminal-3553883049-r4" x="24.4" y="630" textLength="1415.2" clip-path="url(#terminal-3553883049-line-25)">&#160;Advanced&#160;options&#160;(for&#160;power&#160;users)&#160;────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3553883049-r4" x="1439.6" y="630" textLength="24.4" clip-path="url [...]
-</text><text class="terminal-3553883049-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-26)">│</text><text class="terminal-3553883049-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-26)">-</text><text class="terminal-3553883049-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-3553883049-line-26)">-install</text><text class="terminal-3553883049-r5" x="134.2" y="654.4" textLength="280.6" clip-path="url(#termi [...]
-</text><text class="terminal-3553883049-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-27)">│</text><text class="terminal-3553883049-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-27)">-</text><text class="terminal-3553883049-r5" x="36.6" y="678.8" textLength="97.6" clip-path="url(#terminal-3553883049-line-27)">-airflow</text><text class="terminal-3553883049-r5" x="134.2" y="678.8" textLength="207.4" clip-path="url(#termi [...]
-</text><text class="terminal-3553883049-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-28)">│</text><text class="terminal-3553883049-r7" x="463.6" y="703.2" textLength="866.2" clip-path="url(#terminal-3553883049-line-28)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="terminal-3553883049-r4" x="1451.8" y="703.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-28)">│</text><text clas [...]
-</text><text class="terminal-3553883049-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-29)">│</text><text class="terminal-3553883049-r4" x="463.6" y="727.6" textLength="866.2" clip-path="url(#terminal-3553883049-line-29)">[default:&#160;constraints-source-providers]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</ [...]
-</text><text class="terminal-3553883049-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3553883049-line-30)">│</text><text class="terminal-3553883049-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-3553883049-line-30)">-</text><text class="terminal-3553883049-r5" x="36.6" y="752" textLength="97.6" clip-path="url(#terminal-3553883049-line-30)">-airflow</text><text class="terminal-3553883049-r5" x="134.2" y="752" textLength="268.4" clip-path="url(#terminal-3553 [...]
-</text><text class="terminal-3553883049-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-31)">│</text><text class="terminal-3553883049-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-31)">-</text><text class="terminal-3553883049-r5" x="36.6" y="776.4" textLength="85.4" clip-path="url(#terminal-3553883049-line-31)">-python</text><text class="terminal-3553883049-r5" x="122" y="776.4" textLength="73.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-3553883049-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-32)">│</text><text class="terminal-3553883049-r2" x="463.6" y="800.8" textLength="976" clip-path="url(#terminal-3553883049-line-32)">something&#160;like:&#160;python:VERSION-slim-bullseye&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-3553883049-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-33)">│</text><text class="terminal-3553883049-r7" x="463.6" y="825.2" textLength="976" clip-path="url(#terminal-3553883049-line-33)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-3553883049-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-34)">│</text><text class="terminal-3553883049-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-34)">-</text><text class="terminal-3553883049-r5" x="36.6" y="849.6" textLength="134.2" clip-path="url(#terminal-3553883049-line-34)">-additional</text><text class="terminal-3553883049-r5" x="170.8" y="849.6" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-3553883049-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-3553883049-line-35)">│</text><text class="terminal-3553883049-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-3553883049-line-35)">-</text><text class="terminal-3553883049-r5" x="36.6" y="874" textLength="97.6" clip-path="url(#terminal-3553883049-line-35)">-runtime</text><text class="terminal-3553883049-r5" x="134.2" y="874" textLength="109.8" clip-path="url(#terminal-3553 [...]
-</text><text class="terminal-3553883049-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-36)">│</text><text class="terminal-3553883049-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-36)">-</text><text class="terminal-3553883049-r5" x="36.6" y="898.4" textLength="97.6" clip-path="url(#terminal-3553883049-line-36)">-runtime</text><text class="terminal-3553883049-r5" x="134.2" y="898.4" textLength="146.4" clip-path="url(#termi [...]
-</text><text class="terminal-3553883049-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-37)">│</text><text class="terminal-3553883049-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-37)">-</text><text class="terminal-3553883049-r5" x="36.6" y="922.8" textLength="134.2" clip-path="url(#terminal-3553883049-line-37)">-additional</text><text class="terminal-3553883049-r5" x="170.8" y="922.8" textLength="85.4" clip-path="url(#te [...]
-</text><text class="terminal-3553883049-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-38)">│</text><text class="terminal-3553883049-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-38)">-</text><text class="terminal-3553883049-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-3553883049-line-38)">-additional</text><text class="terminal-3553883049-r5" x="170.8" y="947.2" textLength="207.4" clip-path="url(#t [...]
-</text><text class="terminal-3553883049-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-39)">│</text><text class="terminal-3553883049-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-39)">-</text><text class="terminal-3553883049-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-3553883049-line-39)">-additional</text><text class="terminal-3553883049-r5" x="170.8" y="971.6" textLength="195.2" clip-path="url(#t [...]
-</text><text class="terminal-3553883049-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-3553883049-line-40)">│</text><text class="terminal-3553883049-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-3553883049-line-40)">-</text><text class="terminal-3553883049-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-3553883049-line-40)">-additional</text><text class="terminal-3553883049-r5" x="170.8" y="996" textLength="244" clip-path="url(#terminal-35 [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-41)">│</text><text class="terminal-3553883049-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-41)">-</text><text class="terminal-3553883049-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-3553883049-line-41)">-additional</text><text class="terminal-3553883049-r5" x="170.8" y="1020.4" textLength="158.6" clip-path="ur [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-42)">│</text><text class="terminal-3553883049-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-42)">-</text><text class="terminal-3553883049-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-3553883049-line-42)">-additional</text><text class="terminal-3553883049-r5" x="170.8" y="1044.8" textLength="146.4" clip-path="ur [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-43)">│</text><text class="terminal-3553883049-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-43)">-</text><text class="terminal-3553883049-r5" x="36.6" y="1069.2" textLength="134.2" clip-path="url(#terminal-3553883049-line-43)">-additional</text><text class="terminal-3553883049-r5" x="170.8" y="1069.2" textLength="195.2" clip-path="ur [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-44)">│</text><text class="terminal-3553883049-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-44)">-</text><text class="terminal-3553883049-r5" x="36.6" y="1093.6" textLength="48.8" clip-path="url(#terminal-3553883049-line-44)">-dev</text><text class="terminal-3553883049-r5" x="85.4" y="1093.6" textLength="109.8" clip-path="url(#termin [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-3553883049-line-45)">│</text><text class="terminal-3553883049-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-3553883049-line-45)">-</text><text class="terminal-3553883049-r5" x="36.6" y="1118" textLength="48.8" clip-path="url(#terminal-3553883049-line-45)">-dev</text><text class="terminal-3553883049-r5" x="85.4" y="1118" textLength="146.4" clip-path="url(#terminal-35538 [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1142.4" textLength="1464" clip-path="url(#terminal-3553883049-line-46)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3553883049-r2" x="1464" y="1142.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-46)">
-</text><text class="terminal-3553883049-r4" x="0" y="1166.8" textLength="24.4" clip-path="url(#terminal-3553883049-line-47)">╭─</text><text class="terminal-3553883049-r4" x="24.4" y="1166.8" textLength="1415.2" clip-path="url(#terminal-3553883049-line-47)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-3553883049-r4" x="1439.6" y="1166.8" textLeng [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-48)">│</text><text class="terminal-3553883049-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-48)">-</text><text class="terminal-3553883049-r5" x="36.6" y="1191.2" textLength="85.4" clip-path="url(#terminal-3553883049-line-48)">-github</text><text class="terminal-3553883049-r5" x="122" y="1191.2" textLength="73.2" clip-path="url(#termi [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-49)">│</text><text class="terminal-3553883049-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-49)">-</text><text class="terminal-3553883049-r5" x="36.6" y="1215.6" textLength="85.4" clip-path="url(#terminal-3553883049-line-49)">-github</text><text class="terminal-3553883049-r5" x="122" y="1215.6" textLength="109.8" clip-path="url(#term [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-3553883049-line-50)">│</text><text class="terminal-3553883049-r5" x="24.4" y="1240" textLength="12.2" clip-path="url(#terminal-3553883049-line-50)">-</text><text class="terminal-3553883049-r5" x="36.6" y="1240" textLength="109.8" clip-path="url(#terminal-3553883049-line-50)">-platform</text><text class="terminal-3553883049-r2" x="341.6" y="1240" textLength="329.4" clip-path="url(#termina [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-51)">│</text><text class="terminal-3553883049-r5" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-51)">-</text><text class="terminal-3553883049-r5" x="36.6" y="1264.4" textLength="61" clip-path="url(#terminal-3553883049-line-51)">-push</text><text class="terminal-3553883049-r5" x="97.6" y="1264.4" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-52)">│</text><text class="terminal-3553883049-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-52)">-</text><text class="terminal-3553883049-r5" x="36.6" y="1288.8" textLength="73.2" clip-path="url(#terminal-3553883049-line-52)">-empty</text><text class="terminal-3553883049-r5" x="109.8" y="1288.8" textLength="73.2" clip-path="url(#term [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-53)">│</text><text class="terminal-3553883049-r5" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-53)">-</text><text class="terminal-3553883049-r5" x="36.6" y="1313.2" textLength="97.6" clip-path="url(#terminal-3553883049-line-53)">-prepare</text><text class="terminal-3553883049-r5" x="134.2" y="1313.2" textLength="158.6" clip-path="url(#t [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-54)">│</text><text class="terminal-3553883049-r2" x="341.6" y="1337.6" textLength="1098" clip-path="url(#terminal-3553883049-line-54)">image).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1362" textLength="1464" clip-path="url(#terminal-3553883049-line-55)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3553883049-r2" x="1464" y="1362" textLength="12.2" clip-path="url(#terminal-3553883049-line-55)">
-</text><text class="terminal-3553883049-r4" x="0" y="1386.4" textLength="24.4" clip-path="url(#terminal-3553883049-line-56)">╭─</text><text class="terminal-3553883049-r4" x="24.4" y="1386.4" textLength="1415.2" clip-path="url(#terminal-3553883049-line-56)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3553883049-r4" x="1439.6" y="1386.4" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-57)">│</text><text class="terminal-3553883049-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-57)">-</text><text class="terminal-3553883049-r5" x="36.6" y="1410.8" textLength="85.4" clip-path="url(#terminal-3553883049-line-57)">-github</text><text class="terminal-3553883049-r5" x="122" y="1410.8" textLength="134.2" clip-path="url(#term [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-58)">│</text><text class="terminal-3553883049-r4" x="463.6" y="1435.2" textLength="585.6" clip-path="url(#terminal-3553883049-line-58)">[default:&#160;apache/airflow]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3553883049-r4" x="1451.8" y="1435.2" te [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-59)">│</text><text class="terminal-3553883049-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-59)">-</text><text class="terminal-3553883049-r5" x="36.6" y="1459.6" textLength="97.6" clip-path="url(#terminal-3553883049-line-59)">-verbose</text><text class="terminal-3553883049-r6" x="414.8" y="1459.6" textLength="24.4" clip-path="url(#te [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-3553883049-line-60)">│</text><text class="terminal-3553883049-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-3553883049-line-60)">-</text><text class="terminal-3553883049-r5" x="36.6" y="1484" textLength="48.8" clip-path="url(#terminal-3553883049-line-60)">-dry</text><text class="terminal-3553883049-r5" x="85.4" y="1484" textLength="48.8" clip-path="url(#terminal-355388 [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-61)">│</text><text class="terminal-3553883049-r5" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-61)">-</text><text class="terminal-3553883049-r5" x="36.6" y="1508.4" textLength="85.4" clip-path="url(#terminal-3553883049-line-61)">-answer</text><text class="terminal-3553883049-r6" x="414.8" y="1508.4" textLength="24.4" clip-path="url(#ter [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1532.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-62)">│</text><text class="terminal-3553883049-r5" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-62)">-</text><text class="terminal-3553883049-r5" x="36.6" y="1532.8" textLength="97.6" clip-path="url(#terminal-3553883049-line-62)">-builder</text><text class="terminal-3553883049-r2" x="463.6" y="1532.8" textLength="744.2" clip-path="url(#t [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1557.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-63)">│</text><text class="terminal-3553883049-r5" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#terminal-3553883049-line-63)">-</text><text class="terminal-3553883049-r5" x="36.6" y="1557.2" textLength="134.2" clip-path="url(#terminal-3553883049-line-63)">-additional</text><text class="terminal-3553883049-r5" x="170.8" y="1557.2" textLength="219.6" clip-path="ur [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1581.6" textLength="12.2" clip-path="url(#terminal-3553883049-line-64)">│</text><text class="terminal-3553883049-r2" x="463.6" y="1581.6" textLength="976" clip-path="url(#terminal-3553883049-line-64)">itself).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-3553883049-line-65)">│</text><text class="terminal-3553883049-r7" x="463.6" y="1606" textLength="976" clip-path="url(#terminal-3553883049-line-65)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1630.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-66)">│</text><text class="terminal-3553883049-r5" x="24.4" y="1630.4" textLength="12.2" clip-path="url(#terminal-3553883049-line-66)">-</text><text class="terminal-3553883049-r5" x="36.6" y="1630.4" textLength="61" clip-path="url(#terminal-3553883049-line-66)">-help</text><text class="terminal-3553883049-r6" x="414.8" y="1630.4" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-3553883049-r4" x="0" y="1654.8" textLength="1464" clip-path="url(#terminal-3553883049-line-67)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3553883049-r2" x="1464" y="1654.8" textLength="12.2" clip-path="url(#terminal-3553883049-line-67)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output-build-prod-image.svg b/images/breeze/output-build-prod-image.svg
deleted file mode 100644
index 32e4d19ef4..0000000000
--- a/images/breeze/output-build-prod-image.svg
+++ /dev/null
@@ -1,396 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 2099.6" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-3264172227-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-3264172227-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-3264172227-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-3264172227-r2 { fill: #c5c8c6 }
-.terminal-3264172227-r3 { fill: #d0b344;font-weight: bold }
-.terminal-3264172227-r4 { fill: #868887 }
-.terminal-3264172227-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-3264172227-r6 { fill: #98a84b;font-weight: bold }
-.terminal-3264172227-r7 { fill: #8d7b39 }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-3264172227-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="2048.6" />
-    </clipPath>
-    <clipPath id="terminal-3264172227-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-9">
-    <rect x="0" y="221.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-10">
-    <rect x="0" y="245.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-11">
-    <rect x="0" y="269.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-12">
-    <rect x="0" y="294.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-13">
-    <rect x="0" y="318.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-14">
-    <rect x="0" y="343.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-15">
-    <rect x="0" y="367.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-16">
-    <rect x="0" y="391.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-17">
-    <rect x="0" y="416.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-18">
-    <rect x="0" y="440.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-19">
-    <rect x="0" y="465.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-20">
-    <rect x="0" y="489.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-21">
-    <rect x="0" y="513.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-22">
-    <rect x="0" y="538.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-23">
-    <rect x="0" y="562.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-24">
-    <rect x="0" y="587.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-25">
-    <rect x="0" y="611.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-26">
-    <rect x="0" y="635.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-27">
-    <rect x="0" y="660.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-28">
-    <rect x="0" y="684.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-29">
-    <rect x="0" y="709.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-30">
-    <rect x="0" y="733.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-31">
-    <rect x="0" y="757.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-32">
-    <rect x="0" y="782.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-33">
-    <rect x="0" y="806.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-34">
-    <rect x="0" y="831.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-35">
-    <rect x="0" y="855.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-36">
-    <rect x="0" y="879.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-37">
-    <rect x="0" y="904.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-38">
-    <rect x="0" y="928.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-39">
-    <rect x="0" y="953.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-40">
-    <rect x="0" y="977.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-41">
-    <rect x="0" y="1001.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-42">
-    <rect x="0" y="1026.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-43">
-    <rect x="0" y="1050.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-44">
-    <rect x="0" y="1075.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-45">
-    <rect x="0" y="1099.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-46">
-    <rect x="0" y="1123.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-47">
-    <rect x="0" y="1148.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-48">
-    <rect x="0" y="1172.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-49">
-    <rect x="0" y="1197.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-50">
-    <rect x="0" y="1221.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-51">
-    <rect x="0" y="1245.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-52">
-    <rect x="0" y="1270.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-53">
-    <rect x="0" y="1294.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-54">
-    <rect x="0" y="1319.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-55">
-    <rect x="0" y="1343.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-56">
-    <rect x="0" y="1367.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-57">
-    <rect x="0" y="1392.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-58">
-    <rect x="0" y="1416.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-59">
-    <rect x="0" y="1441.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-60">
-    <rect x="0" y="1465.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-61">
-    <rect x="0" y="1489.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-62">
-    <rect x="0" y="1514.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-63">
-    <rect x="0" y="1538.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-64">
-    <rect x="0" y="1563.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-65">
-    <rect x="0" y="1587.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-66">
-    <rect x="0" y="1611.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-67">
-    <rect x="0" y="1636.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-68">
-    <rect x="0" y="1660.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-69">
-    <rect x="0" y="1685.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-70">
-    <rect x="0" y="1709.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-71">
-    <rect x="0" y="1733.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-72">
-    <rect x="0" y="1758.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-73">
-    <rect x="0" y="1782.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-74">
-    <rect x="0" y="1807.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-75">
-    <rect x="0" y="1831.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-76">
-    <rect x="0" y="1855.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-77">
-    <rect x="0" y="1880.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-78">
-    <rect x="0" y="1904.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-79">
-    <rect x="0" y="1929.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-80">
-    <rect x="0" y="1953.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-81">
-    <rect x="0" y="1977.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3264172227-line-82">
-    <rect x="0" y="2002.3" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="2097.6" rx="8"/><text class="terminal-3264172227-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;build-prod-image</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#terminal-3264172227-clip-terminal)">
-    
-    <g class="terminal-3264172227-matrix">
-    <text class="terminal-3264172227-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3264172227-line-0)">
-</text><text class="terminal-3264172227-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3264172227-line-1)">Usage:&#160;</text><text class="terminal-3264172227-r1" x="97.6" y="44.4" textLength="402.6" clip-path="url(#terminal-3264172227-line-1)">breeze&#160;build-prod-image&#160;[OPTIONS]</text><text class="terminal-3264172227-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-1)">
-</text><text class="terminal-3264172227-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-2)">
-</text><text class="terminal-3264172227-r2" x="12.2" y="93.2" textLength="1293.2" clip-path="url(#terminal-3264172227-line-3)">Build&#160;Production&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;for&#160;all&#160;or&#160;selected&#160;Python&#160;versions&#160;sequentially.</text><text class="terminal-3264172227-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-3)">
-</text><text class="terminal-3264172227-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-4)">
-</text><text class="terminal-3264172227-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3264172227-line-5)">╭─</text><text class="terminal-3264172227-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3264172227-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3264172227-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-326417 [...]
-</text><text class="terminal-3264172227-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-6)">│</text><text class="terminal-3264172227-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-6)">-</text><text class="terminal-3264172227-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-3264172227-line-6)">-python</text><text class="terminal-3264172227-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-326 [...]
-</text><text class="terminal-3264172227-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-7)">│</text><text class="terminal-3264172227-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-3264172227-line-7)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-3264172227-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-8)">│</text><text class="terminal-3264172227-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-3264172227-line-8)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-3264172227-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-9)">│</text><text class="terminal-3264172227-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-9)">-</text><text class="terminal-3264172227-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-3264172227-line-9)">-install</text><text class="terminal-3264172227-r5" x="134.2" y="239.6" textLength="195.2" clip-path="url(#terminal [...]
-</text><text class="terminal-3264172227-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3264172227-line-10)">│</text><text class="terminal-3264172227-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-3264172227-line-10)">-</text><text class="terminal-3264172227-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-3264172227-line-10)">-upgrade</text><text class="terminal-3264172227-r5" x="134.2" y="264" textLength="268.4" clip-path="url(#terminal-3264 [...]
-</text><text class="terminal-3264172227-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-11)">│</text><text class="terminal-3264172227-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-11)">-</text><text class="terminal-3264172227-r5" x="36.6" y="288.4" textLength="85.4" clip-path="url(#terminal-3264172227-line-11)">-debian</text><text class="terminal-3264172227-r5" x="122" y="288.4" textLength="97.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-3264172227-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-12)">│</text><text class="terminal-3264172227-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-12)">-</text><text class="terminal-3264172227-r5" x="36.6" y="312.8" textLength="73.2" clip-path="url(#terminal-3264172227-line-12)">-image</text><text class="terminal-3264172227-r5" x="109.8" y="312.8" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-3264172227-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-13)">│</text><text class="terminal-3264172227-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-13)">-</text><text class="terminal-3264172227-r5" x="36.6" y="337.2" textLength="48.8" clip-path="url(#terminal-3264172227-line-13)">-tag</text><text class="terminal-3264172227-r5" x="85.4" y="337.2" textLength="122" clip-path="url(#terminal-326 [...]
-</text><text class="terminal-3264172227-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-14)">│</text><text class="terminal-3264172227-r2" x="475.8" y="361.6" textLength="414.8" clip-path="url(#terminal-3264172227-line-14)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-3264172227-r5" x="890.6" y="361.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-14)">-</text><text class="terminal-3264172227- [...]
-</text><text class="terminal-3264172227-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3264172227-line-15)">│</text><text class="terminal-3264172227-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-3264172227-line-15)">-</text><text class="terminal-3264172227-r5" x="36.6" y="386" textLength="85.4" clip-path="url(#terminal-3264172227-line-15)">-docker</text><text class="terminal-3264172227-r5" x="122" y="386" textLength="73.2" clip-path="url(#terminal-32641722 [...]
-</text><text class="terminal-3264172227-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-16)">│</text><text class="terminal-3264172227-r4" x="475.8" y="410.4" textLength="549" clip-path="url(#terminal-3264172227-line-16)">[default:&#160;registry]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3264172227-r4" x="1451.8" y="41 [...]
-</text><text class="terminal-3264172227-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-3264172227-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3264172227-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-17)">
-</text><text class="terminal-3264172227-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-3264172227-line-18)">╭─</text><text class="terminal-3264172227-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-3264172227-line-18)">&#160;Building&#160;images&#160;in&#160;parallel&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3264172227-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="ur [...]
-</text><text class="terminal-3264172227-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-19)">│</text><text class="terminal-3264172227-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-19)">-</text><text class="terminal-3264172227-r5" x="36.6" y="483.6" textLength="48.8" clip-path="url(#terminal-3264172227-line-19)">-run</text><text class="terminal-3264172227-r5" x="85.4" y="483.6" textLength="146.4" clip-path="url(#terminal-3 [...]
-</text><text class="terminal-3264172227-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3264172227-line-20)">│</text><text class="terminal-3264172227-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-3264172227-line-20)">-</text><text class="terminal-3264172227-r5" x="36.6" y="508" textLength="146.4" clip-path="url(#terminal-3264172227-line-20)">-parallelism</text><text class="terminal-3264172227-r2" x="280.6" y="508" textLength="915" clip-path="url(#terminal-3 [...]
-</text><text class="terminal-3264172227-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-21)">│</text><text class="terminal-3264172227-r4" x="280.6" y="532.4" textLength="915" clip-path="url(#terminal-3264172227-line-21)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-3264172227-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-22)">│</text><text class="terminal-3264172227-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-22)">-</text><text class="terminal-3264172227-r5" x="36.6" y="556.8" textLength="85.4" clip-path="url(#terminal-3264172227-line-22)">-python</text><text class="terminal-3264172227-r5" x="122" y="556.8" textLength="109.8" clip-path="url(#terminal [...]
-</text><text class="terminal-3264172227-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-23)">│</text><text class="terminal-3264172227-r4" x="280.6" y="581.2" textLength="951.6" clip-path="url(#terminal-3264172227-line-23)">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-3264172227-r4" x="0" y="605.6" textLength="1464" clip-path="url(#terminal-3264172227-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3264172227-r2" x="1464" y="605.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-24)">
-</text><text class="terminal-3264172227-r4" x="0" y="630" textLength="24.4" clip-path="url(#terminal-3264172227-line-25)">╭─</text><text class="terminal-3264172227-r4" x="24.4" y="630" textLength="1415.2" clip-path="url(#terminal-3264172227-line-25)">&#160;Options&#160;for&#160;customizing&#160;images&#160;────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3264172227-r4" x="1439.6" y="630" textLength="24.4" clip-path="url(#ter [...]
-</text><text class="terminal-3264172227-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-26)">│</text><text class="terminal-3264172227-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-26)">-</text><text class="terminal-3264172227-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-3264172227-line-26)">-install</text><text class="terminal-3264172227-r5" x="134.2" y="654.4" textLength="280.6" clip-path="url(#termi [...]
-</text><text class="terminal-3264172227-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-27)">│</text><text class="terminal-3264172227-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-27)">-</text><text class="terminal-3264172227-r5" x="36.6" y="678.8" textLength="97.6" clip-path="url(#terminal-3264172227-line-27)">-airflow</text><text class="terminal-3264172227-r5" x="134.2" y="678.8" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-3264172227-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-28)">│</text><text class="terminal-3264172227-r7" x="463.6" y="703.2" textLength="976" clip-path="url(#terminal-3264172227-line-28)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-3264172227-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-29)">│</text><text class="terminal-3264172227-r4" x="463.6" y="727.6" textLength="976" clip-path="url(#terminal-3264172227-line-29)">[default:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="terminal-3264172227-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3264172227-line-30)">│</text><text class="terminal-3264172227-r4" x="463.6" y="752" textLength="976" clip-path="url(#terminal-3264172227-line-30)">amazon,async,celery,cncf.kubernetes,dask,docker,elasticsearch,ftp,google,google…</text><text class="terminal-3264172227-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-3264172227-line-30)">│</text><text class="terminal-3264172 [...]
-</text><text class="terminal-3264172227-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-31)">│</text><text class="terminal-3264172227-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-31)">-</text><text class="terminal-3264172227-r5" x="36.6" y="776.4" textLength="97.6" clip-path="url(#terminal-3264172227-line-31)">-airflow</text><text class="terminal-3264172227-r5" x="134.2" y="776.4" textLength="207.4" clip-path="url(#termi [...]
-</text><text class="terminal-3264172227-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-32)">│</text><text class="terminal-3264172227-r7" x="463.6" y="800.8" textLength="866.2" clip-path="url(#terminal-3264172227-line-32)">(constraints&#160;|&#160;constraints-no-providers&#160;|&#160;constraints-source-providers)</text><text class="terminal-3264172227-r4" x="1451.8" y="800.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-32)">│</text><text clas [...]
-</text><text class="terminal-3264172227-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-33)">│</text><text class="terminal-3264172227-r4" x="463.6" y="825.2" textLength="866.2" clip-path="url(#terminal-3264172227-line-33)">[default:&#160;constraints]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-3264172227-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-34)">│</text><text class="terminal-3264172227-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-34)">-</text><text class="terminal-3264172227-r5" x="36.6" y="849.6" textLength="97.6" clip-path="url(#terminal-3264172227-line-34)">-airflow</text><text class="terminal-3264172227-r5" x="134.2" y="849.6" textLength="268.4" clip-path="url(#termi [...]
-</text><text class="terminal-3264172227-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-3264172227-line-35)">│</text><text class="terminal-3264172227-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-3264172227-line-35)">-</text><text class="terminal-3264172227-r5" x="36.6" y="874" textLength="85.4" clip-path="url(#terminal-3264172227-line-35)">-python</text><text class="terminal-3264172227-r5" x="122" y="874" textLength="73.2" clip-path="url(#terminal-32641722 [...]
-</text><text class="terminal-3264172227-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-36)">│</text><text class="terminal-3264172227-r2" x="463.6" y="898.4" textLength="976" clip-path="url(#terminal-3264172227-line-36)">something&#160;like:&#160;python:VERSION-slim-bullseye&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-3264172227-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-37)">│</text><text class="terminal-3264172227-r7" x="463.6" y="922.8" textLength="976" clip-path="url(#terminal-3264172227-line-37)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-3264172227-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-38)">│</text><text class="terminal-3264172227-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-38)">-</text><text class="terminal-3264172227-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-3264172227-line-38)">-additional</text><text class="terminal-3264172227-r5" x="170.8" y="947.2" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-3264172227-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-39)">│</text><text class="terminal-3264172227-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-39)">-</text><text class="terminal-3264172227-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-3264172227-line-39)">-additional</text><text class="terminal-3264172227-r5" x="170.8" y="971.6" textLength="85.4" clip-path="url(#te [...]
-</text><text class="terminal-3264172227-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-3264172227-line-40)">│</text><text class="terminal-3264172227-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-3264172227-line-40)">-</text><text class="terminal-3264172227-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-3264172227-line-40)">-additional</text><text class="terminal-3264172227-r5" x="170.8" y="996" textLength="207.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-41)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-41)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-3264172227-line-41)">-additional</text><text class="terminal-3264172227-r5" x="170.8" y="1020.4" textLength="195.2" clip-path="ur [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-42)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-42)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-3264172227-line-42)">-additional</text><text class="terminal-3264172227-r5" x="170.8" y="1044.8" textLength="244" clip-path="url( [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-43)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-43)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1069.2" textLength="134.2" clip-path="url(#terminal-3264172227-line-43)">-additional</text><text class="terminal-3264172227-r5" x="170.8" y="1069.2" textLength="158.6" clip-path="ur [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-44)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-44)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1093.6" textLength="134.2" clip-path="url(#terminal-3264172227-line-44)">-additional</text><text class="terminal-3264172227-r5" x="170.8" y="1093.6" textLength="146.4" clip-path="ur [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-3264172227-line-45)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-3264172227-line-45)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1118" textLength="134.2" clip-path="url(#terminal-3264172227-line-45)">-additional</text><text class="terminal-3264172227-r5" x="170.8" y="1118" textLength="195.2" clip-path="url(#termi [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-46)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-46)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1142.4" textLength="97.6" clip-path="url(#terminal-3264172227-line-46)">-runtime</text><text class="terminal-3264172227-r5" x="134.2" y="1142.4" textLength="109.8" clip-path="url(#t [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-47)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-47)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1166.8" textLength="97.6" clip-path="url(#terminal-3264172227-line-47)">-runtime</text><text class="terminal-3264172227-r5" x="134.2" y="1166.8" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-48)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-48)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1191.2" textLength="48.8" clip-path="url(#terminal-3264172227-line-48)">-dev</text><text class="terminal-3264172227-r5" x="85.4" y="1191.2" textLength="109.8" clip-path="url(#termin [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-49)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-49)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1215.6" textLength="48.8" clip-path="url(#terminal-3264172227-line-49)">-dev</text><text class="terminal-3264172227-r5" x="85.4" y="1215.6" textLength="146.4" clip-path="url(#termin [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1240" textLength="1464" clip-path="url(#terminal-3264172227-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3264172227-r2" x="1464" y="1240" textLength="12.2" clip-path="url(#terminal-3264172227-line-50)">
-</text><text class="terminal-3264172227-r4" x="0" y="1264.4" textLength="24.4" clip-path="url(#terminal-3264172227-line-51)">╭─</text><text class="terminal-3264172227-r4" x="24.4" y="1264.4" textLength="1415.2" clip-path="url(#terminal-3264172227-line-51)">&#160;Customization&#160;options&#160;(for&#160;specific&#160;customization&#160;needs)&#160;──────────────────────────────────────────────────────────</text><text class="terminal-3264172227-r4" x="1439.6" y="1264.4" textLength="24.4"  [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-52)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-52)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1288.8" textLength="97.6" clip-path="url(#terminal-3264172227-line-52)">-install</text><text class="terminal-3264172227-r5" x="134.2" y="1288.8" textLength="268.4" clip-path="url(#t [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-53)">│</text><text class="terminal-3264172227-r2" x="536.8" y="1313.2" textLength="97.6" clip-path="url(#terminal-3264172227-line-53)">Implies&#160;</text><text class="terminal-3264172227-r5" x="634.4" y="1313.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-53)">-</text><text class="terminal-3264172227-r5" x="646.6" y="1313.2" textLength="97.6" clip-path=" [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-54)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-54)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1337.6" textLength="97.6" clip-path="url(#terminal-3264172227-line-54)">-cleanup</text><text class="terminal-3264172227-r5" x="134.2" y="1337.6" textLength="97.6" clip-path="url(#te [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-3264172227-line-55)">│</text><text class="terminal-3264172227-r2" x="536.8" y="1362" textLength="170.8" clip-path="url(#terminal-3264172227-line-55)">together&#160;with&#160;</text><text class="terminal-3264172227-r5" x="707.6" y="1362" textLength="12.2" clip-path="url(#terminal-3264172227-line-55)">-</text><text class="terminal-3264172227-r5" x="719.8" y="1362" textLength="97.6" clip-pa [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-56)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-56)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1386.4" textLength="97.6" clip-path="url(#terminal-3264172227-line-56)">-disable</text><text class="terminal-3264172227-r5" x="134.2" y="1386.4" textLength="317.2" clip-path="url(#t [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-57)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-57)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1410.8" textLength="97.6" clip-path="url(#terminal-3264172227-line-57)">-disable</text><text class="terminal-3264172227-r5" x="134.2" y="1410.8" textLength="317.2" clip-path="url(#t [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-58)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-58)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1435.2" textLength="97.6" clip-path="url(#terminal-3264172227-line-58)">-disable</text><text class="terminal-3264172227-r5" x="134.2" y="1435.2" textLength="353.8" clip-path="url(#t [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-59)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-59)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1459.6" textLength="97.6" clip-path="url(#terminal-3264172227-line-59)">-disable</text><text class="terminal-3264172227-r5" x="134.2" y="1459.6" textLength="231.8" clip-path="url(#t [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-3264172227-line-60)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-3264172227-line-60)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1484" textLength="97.6" clip-path="url(#terminal-3264172227-line-60)">-install</text><text class="terminal-3264172227-r5" x="134.2" y="1484" textLength="219.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-61)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-61)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1508.4" textLength="158.6" clip-path="url(#terminal-3264172227-line-61)">-installation</text><text class="terminal-3264172227-r5" x="195.2" y="1508.4" textLength="85.4" clip-path="u [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1532.8" textLength="1464" clip-path="url(#terminal-3264172227-line-62)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3264172227-r2" x="1464" y="1532.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-62)">
-</text><text class="terminal-3264172227-r4" x="0" y="1557.2" textLength="24.4" clip-path="url(#terminal-3264172227-line-63)">╭─</text><text class="terminal-3264172227-r4" x="24.4" y="1557.2" textLength="1415.2" clip-path="url(#terminal-3264172227-line-63)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-3264172227-r4" x="1439.6" y="1557.2" textLeng [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1581.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-64)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-64)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1581.6" textLength="85.4" clip-path="url(#terminal-3264172227-line-64)">-github</text><text class="terminal-3264172227-r5" x="122" y="1581.6" textLength="73.2" clip-path="url(#termi [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-3264172227-line-65)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1606" textLength="12.2" clip-path="url(#terminal-3264172227-line-65)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1606" textLength="85.4" clip-path="url(#terminal-3264172227-line-65)">-github</text><text class="terminal-3264172227-r5" x="122" y="1606" textLength="109.8" clip-path="url(#terminal-326 [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1630.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-66)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1630.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-66)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1630.4" textLength="109.8" clip-path="url(#terminal-3264172227-line-66)">-platform</text><text class="terminal-3264172227-r2" x="341.6" y="1630.4" textLength="329.4" clip-path="url( [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1654.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-67)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1654.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-67)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1654.8" textLength="61" clip-path="url(#terminal-3264172227-line-67)">-push</text><text class="terminal-3264172227-r5" x="97.6" y="1654.8" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1679.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-68)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1679.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-68)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1679.2" textLength="73.2" clip-path="url(#terminal-3264172227-line-68)">-empty</text><text class="terminal-3264172227-r5" x="109.8" y="1679.2" textLength="73.2" clip-path="url(#term [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1703.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-69)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1703.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-69)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1703.6" textLength="97.6" clip-path="url(#terminal-3264172227-line-69)">-prepare</text><text class="terminal-3264172227-r5" x="134.2" y="1703.6" textLength="158.6" clip-path="url(#t [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-3264172227-line-70)">│</text><text class="terminal-3264172227-r2" x="341.6" y="1728" textLength="1098" clip-path="url(#terminal-3264172227-line-70)">image).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1752.4" textLength="1464" clip-path="url(#terminal-3264172227-line-71)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3264172227-r2" x="1464" y="1752.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-71)">
-</text><text class="terminal-3264172227-r4" x="0" y="1776.8" textLength="24.4" clip-path="url(#terminal-3264172227-line-72)">╭─</text><text class="terminal-3264172227-r4" x="24.4" y="1776.8" textLength="1415.2" clip-path="url(#terminal-3264172227-line-72)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3264172227-r4" x="1439.6" y="1776.8" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1801.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-73)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1801.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-73)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1801.2" textLength="85.4" clip-path="url(#terminal-3264172227-line-73)">-github</text><text class="terminal-3264172227-r5" x="122" y="1801.2" textLength="134.2" clip-path="url(#term [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1825.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-74)">│</text><text class="terminal-3264172227-r4" x="463.6" y="1825.6" textLength="585.6" clip-path="url(#terminal-3264172227-line-74)">[default:&#160;apache/airflow]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3264172227-r4" x="1451.8" y="1825.6" te [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1850" textLength="12.2" clip-path="url(#terminal-3264172227-line-75)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1850" textLength="12.2" clip-path="url(#terminal-3264172227-line-75)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1850" textLength="97.6" clip-path="url(#terminal-3264172227-line-75)">-builder</text><text class="terminal-3264172227-r2" x="463.6" y="1850" textLength="744.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1874.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-76)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1874.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-76)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1874.4" textLength="134.2" clip-path="url(#terminal-3264172227-line-76)">-additional</text><text class="terminal-3264172227-r5" x="170.8" y="1874.4" textLength="219.6" clip-path="ur [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-77)">│</text><text class="terminal-3264172227-r2" x="463.6" y="1898.8" textLength="976" clip-path="url(#terminal-3264172227-line-77)">itself).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1923.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-78)">│</text><text class="terminal-3264172227-r7" x="463.6" y="1923.2" textLength="976" clip-path="url(#terminal-3264172227-line-78)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1947.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-79)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1947.6" textLength="12.2" clip-path="url(#terminal-3264172227-line-79)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1947.6" textLength="85.4" clip-path="url(#terminal-3264172227-line-79)">-answer</text><text class="terminal-3264172227-r6" x="414.8" y="1947.6" textLength="24.4" clip-path="url(#ter [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1972" textLength="12.2" clip-path="url(#terminal-3264172227-line-80)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1972" textLength="12.2" clip-path="url(#terminal-3264172227-line-80)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1972" textLength="48.8" clip-path="url(#terminal-3264172227-line-80)">-dry</text><text class="terminal-3264172227-r5" x="85.4" y="1972" textLength="48.8" clip-path="url(#terminal-326417 [...]
-</text><text class="terminal-3264172227-r4" x="0" y="1996.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-81)">│</text><text class="terminal-3264172227-r5" x="24.4" y="1996.4" textLength="12.2" clip-path="url(#terminal-3264172227-line-81)">-</text><text class="terminal-3264172227-r5" x="36.6" y="1996.4" textLength="97.6" clip-path="url(#terminal-3264172227-line-81)">-verbose</text><text class="terminal-3264172227-r6" x="414.8" y="1996.4" textLength="24.4" clip-path="url(#te [...]
-</text><text class="terminal-3264172227-r4" x="0" y="2020.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-82)">│</text><text class="terminal-3264172227-r5" x="24.4" y="2020.8" textLength="12.2" clip-path="url(#terminal-3264172227-line-82)">-</text><text class="terminal-3264172227-r5" x="36.6" y="2020.8" textLength="61" clip-path="url(#terminal-3264172227-line-82)">-help</text><text class="terminal-3264172227-r6" x="414.8" y="2020.8" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-3264172227-r4" x="0" y="2045.2" textLength="1464" clip-path="url(#terminal-3264172227-line-83)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3264172227-r2" x="1464" y="2045.2" textLength="12.2" clip-path="url(#terminal-3264172227-line-83)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output-cleanup.svg b/images/breeze/output-cleanup.svg
deleted file mode 100644
index 9bd373b98b..0000000000
--- a/images/breeze/output-cleanup.svg
+++ /dev/null
@@ -1,120 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 416.0" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-111002006-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-111002006-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-111002006-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-111002006-r2 { fill: #c5c8c6 }
-.terminal-111002006-r3 { fill: #d0b344;font-weight: bold }
-.terminal-111002006-r4 { fill: #868887 }
-.terminal-111002006-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-111002006-r6 { fill: #98a84b;font-weight: bold }
-.terminal-111002006-r7 { fill: #8d7b39 }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-111002006-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="365.0" />
-    </clipPath>
-    <clipPath id="terminal-111002006-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-111002006-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-111002006-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-111002006-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-111002006-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-111002006-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-111002006-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-111002006-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-111002006-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-111002006-line-9">
-    <rect x="0" y="221.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-111002006-line-10">
-    <rect x="0" y="245.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-111002006-line-11">
-    <rect x="0" y="269.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-111002006-line-12">
-    <rect x="0" y="294.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-111002006-line-13">
-    <rect x="0" y="318.7" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="414" rx="8"/><text class="terminal-111002006-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;cleanup</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#terminal-111002006-clip-terminal)">
-    
-    <g class="terminal-111002006-matrix">
-    <text class="terminal-111002006-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-111002006-line-0)">
-</text><text class="terminal-111002006-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-111002006-line-1)">Usage:&#160;</text><text class="terminal-111002006-r1" x="97.6" y="44.4" textLength="292.8" clip-path="url(#terminal-111002006-line-1)">breeze&#160;cleanup&#160;[OPTIONS]</text><text class="terminal-111002006-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-111002006-line-1)">
-</text><text class="terminal-111002006-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-111002006-line-2)">
-</text><text class="terminal-111002006-r2" x="12.2" y="93.2" textLength="1098" clip-path="url(#terminal-111002006-line-3)">Cleans&#160;the&#160;cache&#160;of&#160;parameters,&#160;docker&#160;cache&#160;and&#160;optionally&#160;-&#160;currently&#160;downloaded&#160;images.</text><text class="terminal-111002006-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-111002006-line-3)">
-</text><text class="terminal-111002006-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-111002006-line-4)">
-</text><text class="terminal-111002006-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-111002006-line-5)">╭─</text><text class="terminal-111002006-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-111002006-line-5)">&#160;Cleanup&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-111002006-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-111002006-l [...]
-</text><text class="terminal-111002006-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-111002006-line-6)">│</text><text class="terminal-111002006-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-111002006-line-6)">-</text><text class="terminal-111002006-r5" x="36.6" y="166.4" textLength="48.8" clip-path="url(#terminal-111002006-line-6)">-all</text><text class="terminal-111002006-r2" x="134.2" y="166.4" textLength="573.4" clip-path="url(#terminal-111002006- [...]
-</text><text class="terminal-111002006-r4" x="0" y="190.8" textLength="1464" clip-path="url(#terminal-111002006-line-7)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-111002006-r2" x="1464" y="190.8" textLength="12.2" clip-path="url(#terminal-111002006-line-7)">
-</text><text class="terminal-111002006-r4" x="0" y="215.2" textLength="24.4" clip-path="url(#terminal-111002006-line-8)">╭─</text><text class="terminal-111002006-r4" x="24.4" y="215.2" textLength="1415.2" clip-path="url(#terminal-111002006-line-8)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-111002006-r4" x="1439.6" y="215.2" textLength="24.4" clip-path="url(#terminal-111002006- [...]
-</text><text class="terminal-111002006-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-111002006-line-9)">│</text><text class="terminal-111002006-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-111002006-line-9)">-</text><text class="terminal-111002006-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-111002006-line-9)">-verbose</text><text class="terminal-111002006-r6" x="280.6" y="239.6" textLength="24.4" clip-path="url(#terminal-1110020 [...]
-</text><text class="terminal-111002006-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-111002006-line-10)">│</text><text class="terminal-111002006-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-111002006-line-10)">-</text><text class="terminal-111002006-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-111002006-line-10)">-answer</text><text class="terminal-111002006-r6" x="280.6" y="264" textLength="24.4" clip-path="url(#terminal-111002006-lin [...]
-</text><text class="terminal-111002006-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-111002006-line-11)">│</text><text class="terminal-111002006-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-111002006-line-11)">-</text><text class="terminal-111002006-r5" x="36.6" y="288.4" textLength="48.8" clip-path="url(#terminal-111002006-line-11)">-dry</text><text class="terminal-111002006-r5" x="85.4" y="288.4" textLength="48.8" clip-path="url(#terminal-111002006 [...]
-</text><text class="terminal-111002006-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-111002006-line-12)">│</text><text class="terminal-111002006-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-111002006-line-12)">-</text><text class="terminal-111002006-r5" x="36.6" y="312.8" textLength="85.4" clip-path="url(#terminal-111002006-line-12)">-github</text><text class="terminal-111002006-r5" x="122" y="312.8" textLength="134.2" clip-path="url(#terminal-111002 [...]
-</text><text class="terminal-111002006-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-111002006-line-13)">│</text><text class="terminal-111002006-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-111002006-line-13)">-</text><text class="terminal-111002006-r5" x="36.6" y="337.2" textLength="61" clip-path="url(#terminal-111002006-line-13)">-help</text><text class="terminal-111002006-r6" x="280.6" y="337.2" textLength="24.4" clip-path="url(#terminal-111002006 [...]
-</text><text class="terminal-111002006-r4" x="0" y="361.6" textLength="1464" clip-path="url(#terminal-111002006-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-111002006-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-111002006-line-14)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output-command-hash-export.svg b/images/breeze/output-command-hash-export.svg
deleted file mode 100644
index 789317d724..0000000000
--- a/images/breeze/output-command-hash-export.svg
+++ /dev/null
@@ -1,95 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 269.6" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-161448336-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-161448336-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-161448336-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-161448336-r2 { fill: #c5c8c6 }
-.terminal-161448336-r3 { fill: #d0b344;font-weight: bold }
-.terminal-161448336-r4 { fill: #868887 }
-.terminal-161448336-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-161448336-r6 { fill: #98a84b;font-weight: bold }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-161448336-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="218.6" />
-    </clipPath>
-    <clipPath id="terminal-161448336-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-161448336-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-161448336-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-161448336-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-161448336-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-161448336-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-161448336-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-161448336-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="267.6" rx="8"/><text class="terminal-161448336-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;command-hash-export</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#terminal-161448336-clip-terminal)">
-    
-    <g class="terminal-161448336-matrix">
-    <text class="terminal-161448336-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-161448336-line-0)">
-</text><text class="terminal-161448336-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-161448336-line-1)">Usage:&#160;</text><text class="terminal-161448336-r1" x="97.6" y="44.4" textLength="524.6" clip-path="url(#terminal-161448336-line-1)">breeze&#160;command-hash-export&#160;[OPTIONS]&#160;OUTPUT</text><text class="terminal-161448336-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-161448336-line-1)">
-</text><text class="terminal-161448336-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-161448336-line-2)">
-</text><text class="terminal-161448336-r2" x="12.2" y="93.2" textLength="1415.2" clip-path="url(#terminal-161448336-line-3)">Outputs&#160;hash&#160;of&#160;all&#160;click&#160;commands&#160;to&#160;file&#160;or&#160;stdout&#160;if&#160;`-`&#160;is&#160;used&#160;(useful&#160;to&#160;see&#160;if&#160;images&#160;should&#160;be&#160;regenerated).</text><text class="terminal-161448336-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-161448336-line-3)">
-</text><text class="terminal-161448336-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-161448336-line-4)">
-</text><text class="terminal-161448336-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-161448336-line-5)">╭─</text><text class="terminal-161448336-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-161448336-line-5)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-161448336-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-161448336-line-5 [...]
-</text><text class="terminal-161448336-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-161448336-line-6)">│</text><text class="terminal-161448336-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-161448336-line-6)">-</text><text class="terminal-161448336-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-161448336-line-6)">-verbose</text><text class="terminal-161448336-r6" x="158.6" y="166.4" textLength="24.4" clip-path="url(#terminal-1614483 [...]
-</text><text class="terminal-161448336-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-161448336-line-7)">│</text><text class="terminal-161448336-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-161448336-line-7)">-</text><text class="terminal-161448336-r5" x="36.6" y="190.8" textLength="61" clip-path="url(#terminal-161448336-line-7)">-help</text><text class="terminal-161448336-r6" x="158.6" y="190.8" textLength="24.4" clip-path="url(#terminal-161448336-li [...]
-</text><text class="terminal-161448336-r4" x="0" y="215.2" textLength="1464" clip-path="url(#terminal-161448336-line-8)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-161448336-r2" x="1464" y="215.2" textLength="12.2" clip-path="url(#terminal-161448336-line-8)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index b889b05211..345579f7b4 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -1,38 +1,67 @@
 
 # This file is automatically generated by pre-commit. If you have a conflict with this file
-# Please do not solve it but run `breeze regenerate-command-images`.
+# Please do not solve it but run `breeze setup regenerate-command-images`.
 # This command should fix the conflict and regenerate help images that you have conflict with.
-main:fa4319079b275ce966502346f083f2e3
+main:b9b784d13daf2ab79e4242cdba476018
 build-docs:20b1a171a93c8ae1a62a0f3a804501f2
-build-image:0e539da40e65f94a040ff40d2557c82f
-build-prod-image:9cefa22fe54047ac4d3df195908ac60b
-cleanup:9a94bd1063296ea86e895f671db0b330
-command-hash-export:83bc6a4a8c60b62da3d0f00e81d2c3ea
+ci:chain:68934a3e9455fa72420237eb05902327
+ci:commands:5b9ce5d0d37072ad65e8585e7cbfcc9d
+ci:deprecated:68934a3e9455fa72420237eb05902327
+ci:epilog:37a6259cc0c1dae299a7866489dff0bd
+ci:help:e2dc4bf71f1ab9683c0848693f4470ff
+ci:hidden:68934a3e9455fa72420237eb05902327
+ci:name:acfd600dd00e51cb9aee63a773ea796f
+ci:params:bc6b726d05240c22ac8522edc4a200ee
+ci:short_help:37a6259cc0c1dae299a7866489dff0bd
+ci-image:chain:68934a3e9455fa72420237eb05902327
+ci-image:commands:077e44c7af0722b33ab56a2fc744c968
+ci-image:deprecated:68934a3e9455fa72420237eb05902327
+ci-image:epilog:37a6259cc0c1dae299a7866489dff0bd
+ci-image:help:c72b2b4bb402fe4168d23dacd879cf68
+ci-image:hidden:68934a3e9455fa72420237eb05902327
+ci-image:name:b05efacaf44e34e2023a9619df0a868c
+ci-image:params:bc6b726d05240c22ac8522edc4a200ee
+ci-image:short_help:37a6259cc0c1dae299a7866489dff0bd
+cleanup:9bf46a1dfd9db4fe13a1c233ad1bb96b
 compile-www-assets:23675c1862d0968cbff6ab6f1d93d488
-config:92653afc11889e1b78e3a2e38f41107f
-docker-compose-tests:8ae3b6211fd31db81a750d1c6b96ec3d
-exec:e4329909b8b2a610fa4fad5116c4b896
-find-newer-dependencies:5c9c5e568a930960a25ece6039e03e5c
-fix-ownership:84902165a54467564fbdd3598fa273e2
-free-space:bb8e7ac63d12ab3ede272a898de2f527
-generate-constraints:a5120e79439f30eb7fbee929dca23156
-prepare-airflow-package:cff9d88ca313db10f3cc464c6798f6be
-prepare-provider-documentation:520ffb789ef7174252c8ed3c710f6ae2
-prepare-provider-packages:ada68a213aef9890e4b3e0b9187e449d
-pull-image:a9bb83372b5da5212f48e2affeedc551
-pull-prod-image:6e8467a2b8c833a392c8bdd65189363e
-regenerate-command-images:4fd2e7ecbfd6eebb18b854f3eb0f29c8
-release-prod-images:8858fe5a13989c7c65a79dc97a880928
-resource-check:0fb929ac3496dbbe97acfe99e35accd7
-selective-check:46db58b67a3441d39a62ae23c1082f09
-self-upgrade:b5437c0a1a91533a11ee9d0a9692369c
-setup-autocomplete:355b72dee171c2fcba46fc90ac7c97b0
-shell:ab7955da71048b3a695485c152d06786
-start-airflow:30caa077555bef44e5bdf76dfeca092c
+exec:89b81bc34d45b0fe6653a6db5482258c
+prod-image:chain:68934a3e9455fa72420237eb05902327
+prod-image:commands:331a4d03fc5bd76709d6ba842ea5c18d
+prod-image:deprecated:68934a3e9455fa72420237eb05902327
+prod-image:epilog:37a6259cc0c1dae299a7866489dff0bd
+prod-image:help:57b6db594b341bc5d22a1195db4fbae9
+prod-image:hidden:68934a3e9455fa72420237eb05902327
+prod-image:name:8b97e28b5f9256845909c677a9187216
+prod-image:params:bc6b726d05240c22ac8522edc4a200ee
+prod-image:short_help:37a6259cc0c1dae299a7866489dff0bd
+release-management:chain:68934a3e9455fa72420237eb05902327
+release-management:commands:99f06aa070b4c22f0af2c37e5cd1c108
+release-management:deprecated:68934a3e9455fa72420237eb05902327
+release-management:epilog:37a6259cc0c1dae299a7866489dff0bd
+release-management:help:b1ca9edf1caadef8f13fc806c1261332
+release-management:hidden:68934a3e9455fa72420237eb05902327
+release-management:name:23bcbf95c4ca34de89a367669f7274c1
+release-management:params:bc6b726d05240c22ac8522edc4a200ee
+release-management:short_help:37a6259cc0c1dae299a7866489dff0bd
+setup:chain:68934a3e9455fa72420237eb05902327
+setup:commands:c95a46d890baef83220804e613c55542
+setup:deprecated:68934a3e9455fa72420237eb05902327
+setup:epilog:37a6259cc0c1dae299a7866489dff0bd
+setup:help:53e8d17d2f9a677f11cc08495a7a5012
+setup:hidden:68934a3e9455fa72420237eb05902327
+setup:name:2e5fb4b1fd75f804556bdf9c033f9086
+setup:params:bc6b726d05240c22ac8522edc4a200ee
+setup:short_help:37a6259cc0c1dae299a7866489dff0bd
+shell:d428b276d95616d00863e2174ee13428
+start-airflow:b78fcd7fca2c5819b06470cda64c0d12
 static-checks:d70a46e0c663e9a633665fe87b4ece0e
 stop:8ebd8a42f1003495d37b884de5ac7ce6
-tests:e39111ecbd33a65ababb3cbfbac2b069
-verify-image:a6b3c70957aea96a5d4d261f23359a2d
-verify-prod-image:bf3cf39200e010e3015ef071fd387c6f
-verify-provider-packages:ce22b3617436bbe7f48597b2964b9c32
-version:d11da4c17a23179830079b646160149c
+testing:chain:68934a3e9455fa72420237eb05902327
+testing:commands:52beb8911b727d83e048cec69ba1f4a6
+testing:deprecated:68934a3e9455fa72420237eb05902327
+testing:epilog:37a6259cc0c1dae299a7866489dff0bd
+testing:help:590a1f3d30c4015a1df4acb1a622c66d
+testing:hidden:68934a3e9455fa72420237eb05902327
+testing:name:fa0f2235fd10b78d61fbcc2177c5b2b8
+testing:params:bc6b726d05240c22ac8522edc4a200ee
+testing:short_help:37a6259cc0c1dae299a7866489dff0bd
diff --git a/images/breeze/output-commands.svg b/images/breeze/output-commands.svg
index 77e487bfd1..92b328dfec 100644
--- a/images/breeze/output-commands.svg
+++ b/images/breeze/output-commands.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 2221.6" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1050.4" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,397 +19,205 @@
         font-weight: 700;
     }
 
-    .terminal-4069008649-matrix {
+    .terminal-612373463-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-4069008649-title {
+    .terminal-612373463-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-4069008649-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-4069008649-r2 { fill: #c5c8c6 }
-.terminal-4069008649-r3 { fill: #d0b344;font-weight: bold }
-.terminal-4069008649-r4 { fill: #868887 }
-.terminal-4069008649-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-4069008649-r6 { fill: #98a84b;font-weight: bold }
-.terminal-4069008649-r7 { fill: #8d7b39 }
+    .terminal-612373463-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-612373463-r2 { fill: #c5c8c6 }
+.terminal-612373463-r3 { fill: #d0b344;font-weight: bold }
+.terminal-612373463-r4 { fill: #868887 }
+.terminal-612373463-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-612373463-r6 { fill: #98a84b;font-weight: bold }
+.terminal-612373463-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-4069008649-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="2170.6" />
+    <clipPath id="terminal-612373463-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="999.4" />
     </clipPath>
-    <clipPath id="terminal-4069008649-line-0">
+    <clipPath id="terminal-612373463-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-1">
+<clipPath id="terminal-612373463-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-2">
+<clipPath id="terminal-612373463-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-3">
+<clipPath id="terminal-612373463-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-4">
+<clipPath id="terminal-612373463-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-5">
+<clipPath id="terminal-612373463-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-6">
+<clipPath id="terminal-612373463-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-7">
+<clipPath id="terminal-612373463-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-8">
+<clipPath id="terminal-612373463-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-9">
+<clipPath id="terminal-612373463-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-10">
+<clipPath id="terminal-612373463-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-11">
+<clipPath id="terminal-612373463-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-12">
+<clipPath id="terminal-612373463-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-13">
+<clipPath id="terminal-612373463-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-14">
+<clipPath id="terminal-612373463-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-15">
+<clipPath id="terminal-612373463-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-16">
+<clipPath id="terminal-612373463-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-17">
+<clipPath id="terminal-612373463-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-18">
+<clipPath id="terminal-612373463-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-19">
+<clipPath id="terminal-612373463-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-20">
+<clipPath id="terminal-612373463-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-21">
+<clipPath id="terminal-612373463-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-22">
+<clipPath id="terminal-612373463-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-23">
+<clipPath id="terminal-612373463-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-24">
+<clipPath id="terminal-612373463-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-25">
+<clipPath id="terminal-612373463-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-26">
+<clipPath id="terminal-612373463-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-27">
+<clipPath id="terminal-612373463-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-28">
+<clipPath id="terminal-612373463-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-29">
+<clipPath id="terminal-612373463-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-30">
+<clipPath id="terminal-612373463-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-31">
+<clipPath id="terminal-612373463-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-32">
+<clipPath id="terminal-612373463-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-33">
+<clipPath id="terminal-612373463-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-34">
+<clipPath id="terminal-612373463-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-35">
+<clipPath id="terminal-612373463-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-36">
+<clipPath id="terminal-612373463-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-37">
+<clipPath id="terminal-612373463-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-38">
+<clipPath id="terminal-612373463-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-39">
+<clipPath id="terminal-612373463-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4069008649-line-40">
-    <rect x="0" y="977.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-41">
-    <rect x="0" y="1001.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-42">
-    <rect x="0" y="1026.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-43">
-    <rect x="0" y="1050.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-44">
-    <rect x="0" y="1075.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-45">
-    <rect x="0" y="1099.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-46">
-    <rect x="0" y="1123.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-47">
-    <rect x="0" y="1148.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-48">
-    <rect x="0" y="1172.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-49">
-    <rect x="0" y="1197.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-50">
-    <rect x="0" y="1221.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-51">
-    <rect x="0" y="1245.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-52">
-    <rect x="0" y="1270.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-53">
-    <rect x="0" y="1294.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-54">
-    <rect x="0" y="1319.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-55">
-    <rect x="0" y="1343.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-56">
-    <rect x="0" y="1367.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-57">
-    <rect x="0" y="1392.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-58">
-    <rect x="0" y="1416.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-59">
-    <rect x="0" y="1441.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-60">
-    <rect x="0" y="1465.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-61">
-    <rect x="0" y="1489.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-62">
-    <rect x="0" y="1514.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-63">
-    <rect x="0" y="1538.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-64">
-    <rect x="0" y="1563.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-65">
-    <rect x="0" y="1587.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-66">
-    <rect x="0" y="1611.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-67">
-    <rect x="0" y="1636.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-68">
-    <rect x="0" y="1660.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-69">
-    <rect x="0" y="1685.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-70">
-    <rect x="0" y="1709.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-71">
-    <rect x="0" y="1733.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-72">
-    <rect x="0" y="1758.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-73">
-    <rect x="0" y="1782.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-74">
-    <rect x="0" y="1807.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-75">
-    <rect x="0" y="1831.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-76">
-    <rect x="0" y="1855.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-77">
-    <rect x="0" y="1880.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-78">
-    <rect x="0" y="1904.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-79">
-    <rect x="0" y="1929.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-80">
-    <rect x="0" y="1953.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-81">
-    <rect x="0" y="1977.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-82">
-    <rect x="0" y="2002.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-83">
-    <rect x="0" y="2026.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-84">
-    <rect x="0" y="2051.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-85">
-    <rect x="0" y="2075.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-86">
-    <rect x="0" y="2099.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4069008649-line-87">
-    <rect x="0" y="2124.3" width="1464" height="24.65"/>
-            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="2219.6" rx="8"/><text class="terminal-4069008649-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Breeze&#160;commands</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1048.4" rx="8"/><text class="terminal-612373463-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Breeze&#160;commands</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
             <circle cx="44" cy="0" r="7" fill="#28c840"/>
             </g>
         
-    <g transform="translate(9, 41)" clip-path="url(#terminal-4069008649-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-612373463-clip-terminal)">
     
-    <g class="terminal-4069008649-matrix">
-    <text class="terminal-4069008649-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-4069008649-line-0)">
-</text><text class="terminal-4069008649-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-4069008649-line-1)">Usage:&#160;</text><text class="terminal-4069008649-r1" x="97.6" y="44.4" textLength="414.8" clip-path="url(#terminal-4069008649-line-1)">breeze&#160;[OPTIONS]&#160;COMMAND&#160;[ARGS]...</text><text class="terminal-4069008649-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-1)">
-</text><text class="terminal-4069008649-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-2)">
-</text><text class="terminal-4069008649-r4" x="0" y="93.2" textLength="24.4" clip-path="url(#terminal-4069008649-line-3)">╭─</text><text class="terminal-4069008649-r4" x="24.4" y="93.2" textLength="1415.2" clip-path="url(#terminal-4069008649-line-3)">&#160;Basic&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;───────────────────────────────────────────────────────────────────────</text><text class="terminal-4069008649-r4" x="1439.6" y="93.2" textLength="24.4" cli [...]
-</text><text class="terminal-4069008649-r4" x="0" y="117.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-4)">│</text><text class="terminal-4069008649-r5" x="24.4" y="117.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-4)">-</text><text class="terminal-4069008649-r5" x="36.6" y="117.6" textLength="85.4" clip-path="url(#terminal-4069008649-line-4)">-python</text><text class="terminal-4069008649-r6" x="305" y="117.6" textLength="24.4" clip-path="url(#terminal-406 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="142" textLength="12.2" clip-path="url(#terminal-4069008649-line-5)">│</text><text class="terminal-4069008649-r4" x="353.8" y="142" textLength="732" clip-path="url(#terminal-4069008649-line-5)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-6)">│</text><text class="terminal-4069008649-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-6)">-</text><text class="terminal-4069008649-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-4069008649-line-6)">-backend</text><text class="terminal-4069008649-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-40 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-7)">│</text><text class="terminal-4069008649-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-7)">-</text><text class="terminal-4069008649-r5" x="36.6" y="190.8" textLength="109.8" clip-path="url(#terminal-4069008649-line-7)">-postgres</text><text class="terminal-4069008649-r5" x="146.4" y="190.8" textLength="97.6" clip-path="url(#termina [...]
-</text><text class="terminal-4069008649-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-4069008649-line-8)">│</text><text class="terminal-4069008649-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-4069008649-line-8)">-</text><text class="terminal-4069008649-r5" x="36.6" y="215.2" textLength="73.2" clip-path="url(#terminal-4069008649-line-8)">-mysql</text><text class="terminal-4069008649-r5" x="109.8" y="215.2" textLength="97.6" clip-path="url(#terminal-40 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-9)">│</text><text class="terminal-4069008649-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-9)">-</text><text class="terminal-4069008649-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-4069008649-line-9)">-mssql</text><text class="terminal-4069008649-r5" x="109.8" y="239.6" textLength="97.6" clip-path="url(#terminal-40 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-4069008649-line-10)">│</text><text class="terminal-4069008649-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-4069008649-line-10)">-</text><text class="terminal-4069008649-r5" x="36.6" y="264" textLength="146.4" clip-path="url(#terminal-4069008649-line-10)">-integration</text><text class="terminal-4069008649-r2" x="353.8" y="264" textLength="1085.8" clip-path="url(#termina [...]
-</text><text class="terminal-4069008649-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-11)">│</text><text class="terminal-4069008649-r7" x="353.8" y="288.4" textLength="1085.8" clip-path="url(#terminal-4069008649-line-11)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;&#160;&#160;</text><text class="terminal-4069008649-r4" x="1 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-12)">│</text><text class="terminal-4069008649-r7" x="353.8" y="312.8" textLength="1085.8" clip-path="url(#terminal-4069008649-line-12)">all)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-4069008649-line-13)">│</text><text class="terminal-4069008649-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-4069008649-line-13)">-</text><text class="terminal-4069008649-r5" x="36.6" y="337.2" textLength="97.6" clip-path="url(#terminal-4069008649-line-13)">-forward</text><text class="terminal-4069008649-r5" x="134.2" y="337.2" textLength="146.4" clip-path="url(#termi [...]
-</text><text class="terminal-4069008649-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-14)">│</text><text class="terminal-4069008649-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-14)">-</text><text class="terminal-4069008649-r5" x="36.6" y="361.6" textLength="36.6" clip-path="url(#terminal-4069008649-line-14)">-db</text><text class="terminal-4069008649-r5" x="73.2" y="361.6" textLength="73.2" clip-path="url(#terminal-406 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="386" textLength="1464" clip-path="url(#terminal-4069008649-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4069008649-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-4069008649-line-15)">
-</text><text class="terminal-4069008649-r4" x="0" y="410.4" textLength="24.4" clip-path="url(#terminal-4069008649-line-16)">╭─</text><text class="terminal-4069008649-r4" x="24.4" y="410.4" textLength="1415.2" clip-path="url(#terminal-4069008649-line-16)">&#160;Advanced&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;────────────────────────────────────────────────────────────────────</text><text class="terminal-4069008649-r4" x="1439.6" y="410.4" textLength="24.4 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-17)">│</text><text class="terminal-4069008649-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-17)">-</text><text class="terminal-4069008649-r5" x="36.6" y="434.8" textLength="48.8" clip-path="url(#terminal-4069008649-line-17)">-use</text><text class="terminal-4069008649-r5" x="85.4" y="434.8" textLength="195.2" clip-path="url(#terminal-4 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-4069008649-line-18)">│</text><text class="terminal-4069008649-r2" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-4069008649-line-18)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;&#160;&#160;</text><text class="terminal-4069008649-r4" x="1451.8" y="459.2" textLength= [...]
-</text><text class="terminal-4069008649-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-19)">│</text><text class="terminal-4069008649-r2" x="366" y="483.6" textLength="573.4" clip-path="url(#terminal-4069008649-line-19)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-4069008649-r5" x="939.4" y="483.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-19)">-</text><text class="terminal-40690 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-4069008649-line-20)">│</text><text class="terminal-4069008649-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-4069008649-line-20)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-21)">│</text><text class="terminal-4069008649-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-21)">-</text><text class="terminal-4069008649-r5" x="36.6" y="532.4" textLength="97.6" clip-path="url(#terminal-4069008649-line-21)">-airflow</text><text class="terminal-4069008649-r5" x="134.2" y="532.4" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-4069008649-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-22)">│</text><text class="terminal-4069008649-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-22)">-</text><text class="terminal-4069008649-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-4069008649-line-22)">-use</text><text class="terminal-4069008649-r5" x="85.4" y="556.8" textLength="231.8" clip-path="url(#terminal-4 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-4069008649-line-23)">│</text><text class="terminal-4069008649-r2" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-4069008649-line-23)">entering&#160;breeze.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="terminal-4069008649-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-24)">│</text><text class="terminal-4069008649-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-24)">-</text><text class="terminal-4069008649-r5" x="36.6" y="605.6" textLength="97.6" clip-path="url(#terminal-4069008649-line-24)">-package</text><text class="terminal-4069008649-r5" x="134.2" y="605.6" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-4069008649-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-4069008649-line-25)">│</text><text class="terminal-4069008649-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-4069008649-line-25)">-</text><text class="terminal-4069008649-r5" x="36.6" y="630" textLength="73.2" clip-path="url(#terminal-4069008649-line-25)">-force</text><text class="terminal-4069008649-r5" x="109.8" y="630" textLength="73.2" clip-path="url(#terminal-4069008 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-26)">│</text><text class="terminal-4069008649-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-26)">-</text><text class="terminal-4069008649-r5" x="36.6" y="654.4" textLength="73.2" clip-path="url(#terminal-4069008649-line-26)">-mount</text><text class="terminal-4069008649-r5" x="109.8" y="654.4" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-4069008649-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-27)">│</text><text class="terminal-4069008649-r2" x="366" y="678.8" textLength="1073.6" clip-path="url(#terminal-4069008649-line-27)">selected).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-4069008649-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-4069008649-line-28)">│</text><text class="terminal-4069008649-r7" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-4069008649-line-28)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-29)">│</text><text class="terminal-4069008649-r4" x="366" y="727.6" textLength="1073.6" clip-path="url(#terminal-4069008649-line-29)">[default:&#160;selected]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-4069008649-line-30)">│</text><text class="terminal-4069008649-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-4069008649-line-30)">-</text><text class="terminal-4069008649-r5" x="36.6" y="752" textLength="85.4" clip-path="url(#terminal-4069008649-line-30)">-debian</text><text class="terminal-4069008649-r5" x="122" y="752" textLength="97.6" clip-path="url(#terminal-40690086 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="776.4" textLength="1464" clip-path="url(#terminal-4069008649-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4069008649-r2" x="1464" y="776.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-31)">
-</text><text class="terminal-4069008649-r4" x="0" y="800.8" textLength="24.4" clip-path="url(#terminal-4069008649-line-32)">╭─</text><text class="terminal-4069008649-r4" x="24.4" y="800.8" textLength="1415.2" clip-path="url(#terminal-4069008649-line-32)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4069008649-r4" x="1439.6" y="800.8" textLength="24.4" clip-path="url(#terminal-406 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-4069008649-line-33)">│</text><text class="terminal-4069008649-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-4069008649-line-33)">-</text><text class="terminal-4069008649-r5" x="36.6" y="825.2" textLength="97.6" clip-path="url(#terminal-4069008649-line-33)">-verbose</text><text class="terminal-4069008649-r6" x="280.6" y="825.2" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-4069008649-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-34)">│</text><text class="terminal-4069008649-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-34)">-</text><text class="terminal-4069008649-r5" x="36.6" y="849.6" textLength="48.8" clip-path="url(#terminal-4069008649-line-34)">-dry</text><text class="terminal-4069008649-r5" x="85.4" y="849.6" textLength="48.8" clip-path="url(#terminal-40 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-4069008649-line-35)">│</text><text class="terminal-4069008649-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-4069008649-line-35)">-</text><text class="terminal-4069008649-r5" x="36.6" y="874" textLength="85.4" clip-path="url(#terminal-4069008649-line-35)">-github</text><text class="terminal-4069008649-r5" x="122" y="874" textLength="134.2" clip-path="url(#terminal-4069008 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-36)">│</text><text class="terminal-4069008649-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-36)">-</text><text class="terminal-4069008649-r5" x="36.6" y="898.4" textLength="85.4" clip-path="url(#terminal-4069008649-line-36)">-answer</text><text class="terminal-4069008649-r6" x="280.6" y="898.4" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-4069008649-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-37)">│</text><text class="terminal-4069008649-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-37)">-</text><text class="terminal-4069008649-r5" x="36.6" y="922.8" textLength="61" clip-path="url(#terminal-4069008649-line-37)">-help</text><text class="terminal-4069008649-r6" x="280.6" y="922.8" textLength="24.4" clip-path="url(#terminal-40 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="947.2" textLength="1464" clip-path="url(#terminal-4069008649-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4069008649-r2" x="1464" y="947.2" textLength="12.2" clip-path="url(#terminal-4069008649-line-38)">
-</text><text class="terminal-4069008649-r4" x="0" y="971.6" textLength="24.4" clip-path="url(#terminal-4069008649-line-39)">╭─</text><text class="terminal-4069008649-r4" x="24.4" y="971.6" textLength="1415.2" clip-path="url(#terminal-4069008649-line-39)">&#160;Developer&#160;tools&#160;───────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4069008649-r4" x="1439.6" y="971.6" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-4069008649-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-4069008649-line-40)">│</text><text class="terminal-4069008649-r5" x="24.4" y="996" textLength="244" clip-path="url(#terminal-4069008649-line-40)">shell&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="292.8" y="996" textLength="1146.8" clip-path="url(#terminal-4069008649-line-40)">Enter&#160;breeze.py&# [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-41)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1020.4" textLength="244" clip-path="url(#terminal-4069008649-line-41)">start-airflow&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="292.8" y="1020.4" textLength="1146.8" clip-path="url(#terminal-4069008649-line-41)">Enter&#160;breeze.py&#160;environment&#160;and&#160;s [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-42)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1044.8" textLength="244" clip-path="url(#terminal-4069008649-line-42)">compile-www-assets&#160;&#160;</text><text class="terminal-4069008649-r2" x="292.8" y="1044.8" textLength="1146.8" clip-path="url(#terminal-4069008649-line-42)">Compiles&#160;www&#160;assets.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-4069008649-line-43)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1069.2" textLength="244" clip-path="url(#terminal-4069008649-line-43)">exec&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="292.8" y="1069.2" textLength="1146.8" clip-path="url(#terminal-4069008649-line-43)">Joins&#1 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-44)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1093.6" textLength="244" clip-path="url(#terminal-4069008649-line-44)">stop&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="292.8" y="1093.6" textLength="1146.8" clip-path="url(#terminal-4069008649-line-44)">Stop&#16 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-4069008649-line-45)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1118" textLength="244" clip-path="url(#terminal-4069008649-line-45)">build-docs&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="292.8" y="1118" textLength="1146.8" clip-path="url(#terminal-4069008649-line-45)">Build&#160;documentation&#160;in&#160;the&#1 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-46)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1142.4" textLength="244" clip-path="url(#terminal-4069008649-line-46)">static-checks&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="292.8" y="1142.4" textLength="1146.8" clip-path="url(#terminal-4069008649-line-46)">Run&#160;static&#160;checks.&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1166.8" textLength="1464" clip-path="url(#terminal-4069008649-line-47)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4069008649-r2" x="1464" y="1166.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-47)">
-</text><text class="terminal-4069008649-r4" x="0" y="1191.2" textLength="24.4" clip-path="url(#terminal-4069008649-line-48)">╭─</text><text class="terminal-4069008649-r4" x="24.4" y="1191.2" textLength="1415.2" clip-path="url(#terminal-4069008649-line-48)">&#160;Testing&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4069008649-r4" x="1439.6" y="1191.2" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-49)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1215.6" textLength="256.2" clip-path="url(#terminal-4069008649-line-49)">docker-compose-tests&#160;</text><text class="terminal-4069008649-r2" x="305" y="1215.6" textLength="1134.6" clip-path="url(#terminal-4069008649-line-49)">Run&#160;docker-compose&#160;tests.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-4069008649-line-50)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1240" textLength="256.2" clip-path="url(#terminal-4069008649-line-50)">tests&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="305" y="1240" textLength="1134.6" clip-path="url(#terminal-4069008649-line-50)">Run&#160;the& [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1264.4" textLength="1464" clip-path="url(#terminal-4069008649-line-51)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4069008649-r2" x="1464" y="1264.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-51)">
-</text><text class="terminal-4069008649-r4" x="0" y="1288.8" textLength="24.4" clip-path="url(#terminal-4069008649-line-52)">╭─</text><text class="terminal-4069008649-r4" x="24.4" y="1288.8" textLength="1415.2" clip-path="url(#terminal-4069008649-line-52)">&#160;Configuration&#160;&amp;&#160;maintenance&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4069008649-r4" x="1439.6" y="1288.8" textLength="24.4" clip-path=" [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-4069008649-line-53)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1313.2" textLength="305" clip-path="url(#terminal-4069008649-line-53)">cleanup&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="353.8" y="1313.2" textLength="1085.8" clip-path="url(#terminal-4069008649-lin [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-54)">│</text><text class="terminal-4069008649-r2" x="353.8" y="1337.6" textLength="1085.8" clip-path="url(#terminal-4069008649-line-54)">images.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-4069008649-line-55)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1362" textLength="305" clip-path="url(#terminal-4069008649-line-55)">self-upgrade&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="353.8" y="1362" textLength="1085.8" clip-path="url(#terminal-4069008649-line-55)">Self&#160;upgrade&#160;B [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-56)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1386.4" textLength="305" clip-path="url(#terminal-4069008649-line-56)">setup-autocomplete&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="353.8" y="1386.4" textLength="1085.8" clip-path="url(#terminal-4069008649-line-56)">Enables&#160;autocompletion&#160;of&#160;breeze& [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-57)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1410.8" textLength="305" clip-path="url(#terminal-4069008649-line-57)">config&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="353.8" y="1410.8" textLength="1085.8" clip-path="url(#terminal-406900864 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-4069008649-line-58)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1435.2" textLength="305" clip-path="url(#terminal-4069008649-line-58)">regenerate-command-images</text><text class="terminal-4069008649-r2" x="353.8" y="1435.2" textLength="1085.8" clip-path="url(#terminal-4069008649-line-58)">Regenerate&#160;breeze&#160;command&#160;images.&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-59)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1459.6" textLength="305" clip-path="url(#terminal-4069008649-line-59)">command-hash-export&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="353.8" y="1459.6" textLength="1085.8" clip-path="url(#terminal-4069008649-line-59)">Outputs&#160;hash&#160;of&#160;all&#160;click&#160;co [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-4069008649-line-60)">│</text><text class="terminal-4069008649-r2" x="353.8" y="1484" textLength="1085.8" clip-path="url(#terminal-4069008649-line-60)">images&#160;should&#160;be&#160;regenerated).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-61)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1508.4" textLength="305" clip-path="url(#terminal-4069008649-line-61)">version&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="353.8" y="1508.4" textLength="1085.8" clip-path="url(#terminal-4069008649-lin [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1532.8" textLength="1464" clip-path="url(#terminal-4069008649-line-62)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4069008649-r2" x="1464" y="1532.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-62)">
-</text><text class="terminal-4069008649-r4" x="0" y="1557.2" textLength="24.4" clip-path="url(#terminal-4069008649-line-63)">╭─</text><text class="terminal-4069008649-r4" x="24.4" y="1557.2" textLength="1415.2" clip-path="url(#terminal-4069008649-line-63)">&#160;CI&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4069008649-r4" x="1439.6" y="1557.2" textLength="24.4" clip-path="url( [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1581.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-64)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1581.6" textLength="170.8" clip-path="url(#terminal-4069008649-line-64)">build-image&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="219.6" y="1581.6" textLength="1220" clip-path="url(#terminal-4069008649-line-64)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images& [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-4069008649-line-65)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1606" textLength="170.8" clip-path="url(#terminal-4069008649-line-65)">pull-image&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="219.6" y="1606" textLength="1220" clip-path="url(#terminal-4069008649-line-65)">Pull&#160;and&#160;optionally&#160;verify&#160;CI&#160;images&#160;-&#160;possib [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1630.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-66)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1630.4" textLength="170.8" clip-path="url(#terminal-4069008649-line-66)">verify-image&#160;&#160;</text><text class="terminal-4069008649-r2" x="219.6" y="1630.4" textLength="1220" clip-path="url(#terminal-4069008649-line-66)">Verify&#160;CI&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1654.8" textLength="1464" clip-path="url(#terminal-4069008649-line-67)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4069008649-r2" x="1464" y="1654.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-67)">
-</text><text class="terminal-4069008649-r4" x="0" y="1679.2" textLength="24.4" clip-path="url(#terminal-4069008649-line-68)">╭─</text><text class="terminal-4069008649-r4" x="24.4" y="1679.2" textLength="1415.2" clip-path="url(#terminal-4069008649-line-68)">&#160;Production&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4069008649-r4" x="1439.6" y="1679.2" textLength="24.4" clip-path="url( [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1703.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-69)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1703.6" textLength="207.4" clip-path="url(#terminal-4069008649-line-69)">build-prod-image&#160;</text><text class="terminal-4069008649-r2" x="256.2" y="1703.6" textLength="1183.4" clip-path="url(#terminal-4069008649-line-69)">Build&#160;Production&#160;image.&#160;Include&#160;building&#160;multiple&#160;imag [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-4069008649-line-70)">│</text><text class="terminal-4069008649-r2" x="256.2" y="1728" textLength="1183.4" clip-path="url(#terminal-4069008649-line-70)">sequentially.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-71)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1752.4" textLength="207.4" clip-path="url(#terminal-4069008649-line-71)">pull-prod-image&#160;&#160;</text><text class="terminal-4069008649-r2" x="256.2" y="1752.4" textLength="1183.4" clip-path="url(#terminal-4069008649-line-71)">Pull&#160;and&#160;optionally&#160;verify&#160;Production&#160;images&#160;-&#1 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1776.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-72)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1776.8" textLength="207.4" clip-path="url(#terminal-4069008649-line-72)">verify-prod-image</text><text class="terminal-4069008649-r2" x="256.2" y="1776.8" textLength="1183.4" clip-path="url(#terminal-4069008649-line-72)">Verify&#160;Production&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1801.2" textLength="1464" clip-path="url(#terminal-4069008649-line-73)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4069008649-r2" x="1464" y="1801.2" textLength="12.2" clip-path="url(#terminal-4069008649-line-73)">
-</text><text class="terminal-4069008649-r4" x="0" y="1825.6" textLength="24.4" clip-path="url(#terminal-4069008649-line-74)">╭─</text><text class="terminal-4069008649-r4" x="24.4" y="1825.6" textLength="1415.2" clip-path="url(#terminal-4069008649-line-74)">&#160;CI&#160;commands&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4069008649-r4" x="1439.6" y="1825.6" textLength="24.4" clip-path="url(#term [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1850" textLength="12.2" clip-path="url(#terminal-4069008649-line-75)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1850" textLength="378.2" clip-path="url(#terminal-4069008649-line-75)">fix-ownership&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="427" y="1850" textLength="1012.6" clip-path="url(#terminal-4069008649-lin [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1874.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-76)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1874.4" textLength="378.2" clip-path="url(#terminal-4069008649-line-76)">free-space&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="427" y="1874.4" textLength="1012.6" clip-path="url(#te [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-77)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1898.8" textLength="378.2" clip-path="url(#terminal-4069008649-line-77)">resource-check&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="427" y="1898.8" textLength="1012.6" clip-path="url(#terminal-4069008649-li [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1923.2" textLength="12.2" clip-path="url(#terminal-4069008649-line-78)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1923.2" textLength="378.2" clip-path="url(#terminal-4069008649-line-78)">selective-check&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="427" y="1923.2" textLength="1012.6" clip-path="url(#terminal-4069008649-line-78 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1947.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-79)">│</text><text class="terminal-4069008649-r5" x="24.4" y="1947.6" textLength="378.2" clip-path="url(#terminal-4069008649-line-79)">find-newer-dependencies&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="427" y="1947.6" textLength="1012.6" clip-path="url(#terminal-4069008649-line-79)">Finds&#160;which&#160;dependencies&#1 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="1972" textLength="1464" clip-path="url(#terminal-4069008649-line-80)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4069008649-r2" x="1464" y="1972" textLength="12.2" clip-path="url(#terminal-4069008649-line-80)">
-</text><text class="terminal-4069008649-r4" x="0" y="1996.4" textLength="24.4" clip-path="url(#terminal-4069008649-line-81)">╭─</text><text class="terminal-4069008649-r4" x="24.4" y="1996.4" textLength="1415.2" clip-path="url(#terminal-4069008649-line-81)">&#160;Release&#160;management&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4069008649-r4" x="1439.6" y="1996.4" textLength="24.4" clip-path="url(#term [...]
-</text><text class="terminal-4069008649-r4" x="0" y="2020.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-82)">│</text><text class="terminal-4069008649-r5" x="24.4" y="2020.8" textLength="402.6" clip-path="url(#terminal-4069008649-line-82)">verify-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="451.4" y="2020.8" textLength="988.2" clip-path="url(#terminal-4069008649-line-82)">Verifies&#160;if&#160;all&#16 [...]
-</text><text class="terminal-4069008649-r4" x="0" y="2045.2" textLength="12.2" clip-path="url(#terminal-4069008649-line-83)">│</text><text class="terminal-4069008649-r5" x="24.4" y="2045.2" textLength="402.6" clip-path="url(#terminal-4069008649-line-83)">prepare-provider-documentation&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="451.4" y="2045.2" textLength="988.2" clip-path="url(#terminal-4069008649-line-83)">Prepare&#160;CHANGELOG,&#160;README&#160;and&#160;COMMITS&# [...]
-</text><text class="terminal-4069008649-r4" x="0" y="2069.6" textLength="12.2" clip-path="url(#terminal-4069008649-line-84)">│</text><text class="terminal-4069008649-r5" x="24.4" y="2069.6" textLength="402.6" clip-path="url(#terminal-4069008649-line-84)">prepare-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="451.4" y="2069.6" textLength="988.2" clip-path="url(#terminal-4069008649-line-84)">Prepare&#160;sdist/whl&#160;packag [...]
-</text><text class="terminal-4069008649-r4" x="0" y="2094" textLength="12.2" clip-path="url(#terminal-4069008649-line-85)">│</text><text class="terminal-4069008649-r5" x="24.4" y="2094" textLength="402.6" clip-path="url(#terminal-4069008649-line-85)">prepare-airflow-package&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="451.4" y="2094" textLength="988.2" clip-path="url(#terminal-4069008649-line-85)">Prepare&#160;sdist/whl&#160;pa [...]
-</text><text class="terminal-4069008649-r4" x="0" y="2118.4" textLength="12.2" clip-path="url(#terminal-4069008649-line-86)">│</text><text class="terminal-4069008649-r5" x="24.4" y="2118.4" textLength="402.6" clip-path="url(#terminal-4069008649-line-86)">release-prod-images&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="451.4" y="2118.4" textLength="988.2" clip-path="url(#terminal-4069008649-line-86)">Rele [...]
-</text><text class="terminal-4069008649-r4" x="0" y="2142.8" textLength="12.2" clip-path="url(#terminal-4069008649-line-87)">│</text><text class="terminal-4069008649-r5" x="24.4" y="2142.8" textLength="402.6" clip-path="url(#terminal-4069008649-line-87)">generate-constraints&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4069008649-r2" x="451.4" y="2142.8" textLength="988.2" clip-path="url(#terminal-4069008649-line-87)">Generates [...]
-</text><text class="terminal-4069008649-r4" x="0" y="2167.2" textLength="1464" clip-path="url(#terminal-4069008649-line-88)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4069008649-r2" x="1464" y="2167.2" textLength="12.2" clip-path="url(#terminal-4069008649-line-88)">
+    <g class="terminal-612373463-matrix">
+    <text class="terminal-612373463-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-612373463-line-0)">
+</text><text class="terminal-612373463-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-612373463-line-1)">Usage:&#160;</text><text class="terminal-612373463-r1" x="97.6" y="44.4" textLength="414.8" clip-path="url(#terminal-612373463-line-1)">breeze&#160;[OPTIONS]&#160;COMMAND&#160;[ARGS]...</text><text class="terminal-612373463-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-612373463-line-1)">
+</text><text class="terminal-612373463-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-612373463-line-2)">
+</text><text class="terminal-612373463-r4" x="0" y="93.2" textLength="24.4" clip-path="url(#terminal-612373463-line-3)">╭─</text><text class="terminal-612373463-r4" x="24.4" y="93.2" textLength="1415.2" clip-path="url(#terminal-612373463-line-3)">&#160;Basic&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-612373463-r4" x="1439.6" y="93.2" textLength="24.4" clip-path="url(#terminal-61237346 [...]
+</text><text class="terminal-612373463-r4" x="0" y="117.6" textLength="12.2" clip-path="url(#terminal-612373463-line-4)">│</text><text class="terminal-612373463-r5" x="24.4" y="117.6" textLength="12.2" clip-path="url(#terminal-612373463-line-4)">-</text><text class="terminal-612373463-r5" x="36.6" y="117.6" textLength="85.4" clip-path="url(#terminal-612373463-line-4)">-python</text><text class="terminal-612373463-r6" x="305" y="117.6" textLength="24.4" clip-path="url(#terminal-612373463- [...]
+</text><text class="terminal-612373463-r4" x="0" y="142" textLength="12.2" clip-path="url(#terminal-612373463-line-5)">│</text><text class="terminal-612373463-r4" x="353.8" y="142" textLength="732" clip-path="url(#terminal-612373463-line-5)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="terminal-612373463-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-612373463-line-6)">│</text><text class="terminal-612373463-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-612373463-line-6)">-</text><text class="terminal-612373463-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-612373463-line-6)">-backend</text><text class="terminal-612373463-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-612373463 [...]
+</text><text class="terminal-612373463-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-612373463-line-7)">│</text><text class="terminal-612373463-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-612373463-line-7)">-</text><text class="terminal-612373463-r5" x="36.6" y="190.8" textLength="109.8" clip-path="url(#terminal-612373463-line-7)">-postgres</text><text class="terminal-612373463-r5" x="146.4" y="190.8" textLength="97.6" clip-path="url(#terminal-61237 [...]
+</text><text class="terminal-612373463-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-612373463-line-8)">│</text><text class="terminal-612373463-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-612373463-line-8)">-</text><text class="terminal-612373463-r5" x="36.6" y="215.2" textLength="73.2" clip-path="url(#terminal-612373463-line-8)">-mysql</text><text class="terminal-612373463-r5" x="109.8" y="215.2" textLength="97.6" clip-path="url(#terminal-612373463 [...]
+</text><text class="terminal-612373463-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-612373463-line-9)">│</text><text class="terminal-612373463-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-612373463-line-9)">-</text><text class="terminal-612373463-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-612373463-line-9)">-mssql</text><text class="terminal-612373463-r5" x="109.8" y="239.6" textLength="97.6" clip-path="url(#terminal-612373463 [...]
+</text><text class="terminal-612373463-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-612373463-line-10)">│</text><text class="terminal-612373463-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-612373463-line-10)">-</text><text class="terminal-612373463-r5" x="36.6" y="264" textLength="146.4" clip-path="url(#terminal-612373463-line-10)">-integration</text><text class="terminal-612373463-r2" x="353.8" y="264" textLength="1085.8" clip-path="url(#terminal-61237 [...]
+</text><text class="terminal-612373463-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-612373463-line-11)">│</text><text class="terminal-612373463-r7" x="353.8" y="288.4" textLength="1085.8" clip-path="url(#terminal-612373463-line-11)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;&#160;&#160;</text><text class="terminal-612373463-r4" x="1451.8 [...]
+</text><text class="terminal-612373463-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-612373463-line-12)">│</text><text class="terminal-612373463-r7" x="353.8" y="312.8" textLength="1085.8" clip-path="url(#terminal-612373463-line-12)">all)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="terminal-612373463-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-612373463-line-13)">│</text><text class="terminal-612373463-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-612373463-line-13)">-</text><text class="terminal-612373463-r5" x="36.6" y="337.2" textLength="97.6" clip-path="url(#terminal-612373463-line-13)">-forward</text><text class="terminal-612373463-r5" x="134.2" y="337.2" textLength="146.4" clip-path="url(#terminal-612 [...]
+</text><text class="terminal-612373463-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-612373463-line-14)">│</text><text class="terminal-612373463-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-612373463-line-14)">-</text><text class="terminal-612373463-r5" x="36.6" y="361.6" textLength="36.6" clip-path="url(#terminal-612373463-line-14)">-db</text><text class="terminal-612373463-r5" x="73.2" y="361.6" textLength="73.2" clip-path="url(#terminal-612373463- [...]
+</text><text class="terminal-612373463-r4" x="0" y="386" textLength="1464" clip-path="url(#terminal-612373463-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-612373463-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-612373463-line-15)">
+</text><text class="terminal-612373463-r4" x="0" y="410.4" textLength="24.4" clip-path="url(#terminal-612373463-line-16)">╭─</text><text class="terminal-612373463-r4" x="24.4" y="410.4" textLength="1415.2" clip-path="url(#terminal-612373463-line-16)">&#160;Common&#160;options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-612373463-r4" x="1439.6" y="410.4" textLength="24.4" clip-path="url(#terminal-612 [...]
+</text><text class="terminal-612373463-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-612373463-line-17)">│</text><text class="terminal-612373463-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-612373463-line-17)">-</text><text class="terminal-612373463-r5" x="36.6" y="434.8" textLength="97.6" clip-path="url(#terminal-612373463-line-17)">-verbose</text><text class="terminal-612373463-r6" x="280.6" y="434.8" textLength="24.4" clip-path="url(#terminal-6123 [...]
+</text><text class="terminal-612373463-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-612373463-line-18)">│</text><text class="terminal-612373463-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-612373463-line-18)">-</text><text class="terminal-612373463-r5" x="36.6" y="459.2" textLength="48.8" clip-path="url(#terminal-612373463-line-18)">-dry</text><text class="terminal-612373463-r5" x="85.4" y="459.2" textLength="48.8" clip-path="url(#terminal-612373463 [...]
+</text><text class="terminal-612373463-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-612373463-line-19)">│</text><text class="terminal-612373463-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-612373463-line-19)">-</text><text class="terminal-612373463-r5" x="36.6" y="483.6" textLength="85.4" clip-path="url(#terminal-612373463-line-19)">-github</text><text class="terminal-612373463-r5" x="122" y="483.6" textLength="134.2" clip-path="url(#terminal-612373 [...]
+</text><text class="terminal-612373463-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-612373463-line-20)">│</text><text class="terminal-612373463-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-612373463-line-20)">-</text><text class="terminal-612373463-r5" x="36.6" y="508" textLength="85.4" clip-path="url(#terminal-612373463-line-20)">-answer</text><text class="terminal-612373463-r6" x="280.6" y="508" textLength="24.4" clip-path="url(#terminal-612373463-lin [...]
+</text><text class="terminal-612373463-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-612373463-line-21)">│</text><text class="terminal-612373463-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-612373463-line-21)">-</text><text class="terminal-612373463-r5" x="36.6" y="532.4" textLength="61" clip-path="url(#terminal-612373463-line-21)">-help</text><text class="terminal-612373463-r6" x="280.6" y="532.4" textLength="24.4" clip-path="url(#terminal-612373463 [...]
+</text><text class="terminal-612373463-r4" x="0" y="556.8" textLength="1464" clip-path="url(#terminal-612373463-line-22)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-612373463-r2" x="1464" y="556.8" textLength="12.2" clip-path="url(#terminal-612373463-line-22)">
+</text><text class="terminal-612373463-r4" x="0" y="581.2" textLength="24.4" clip-path="url(#terminal-612373463-line-23)">╭─</text><text class="terminal-612373463-r4" x="24.4" y="581.2" textLength="1415.2" clip-path="url(#terminal-612373463-line-23)">&#160;Basic&#160;developer&#160;commands&#160;──────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-612373463-r4" x="1439.6" y="581.2" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-612373463-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-612373463-line-24)">│</text><text class="terminal-612373463-r5" x="24.4" y="605.6" textLength="256.2" clip-path="url(#terminal-612373463-line-24)">start-airflow&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-612373463-r2" x="305" y="605.6" textLength="1134.6" clip-path="url(#terminal-612373463-line-24)">Enter&#160;breeze&#160;environment&#160;and&#160;starts& [...]
+</text><text class="terminal-612373463-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-612373463-line-25)">│</text><text class="terminal-612373463-r5" x="24.4" y="630" textLength="256.2" clip-path="url(#terminal-612373463-line-25)">static-checks&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-612373463-r2" x="305" y="630" textLength="1134.6" clip-path="url(#terminal-612373463-line-25)">Run&#160;static&#160;checks.&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="terminal-612373463-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-612373463-line-26)">│</text><text class="terminal-612373463-r5" x="24.4" y="654.4" textLength="256.2" clip-path="url(#terminal-612373463-line-26)">build-docs&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-612373463-r2" x="305" y="654.4" textLength="1134.6" clip-path="url(#terminal-612373463-line-26)">Build&#160;documentation&#160;in&#160;the [...]
+</text><text class="terminal-612373463-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-612373463-line-27)">│</text><text class="terminal-612373463-r5" x="24.4" y="678.8" textLength="256.2" clip-path="url(#terminal-612373463-line-27)">stop&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-612373463-r2" x="305" y="678.8" textLength="1134.6" clip-path="url(#terminal-612373463-line-27)">Stop&#160;r [...]
+</text><text class="terminal-612373463-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-612373463-line-28)">│</text><text class="terminal-612373463-r5" x="24.4" y="703.2" textLength="256.2" clip-path="url(#terminal-612373463-line-28)">shell&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-612373463-r2" x="305" y="703.2" textLength="1134.6" clip-path="url(#terminal-612373463-line-28)">Enter&#160;breez [...]
+</text><text class="terminal-612373463-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-612373463-line-29)">│</text><text class="terminal-612373463-r5" x="24.4" y="727.6" textLength="256.2" clip-path="url(#terminal-612373463-line-29)">exec&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-612373463-r2" x="305" y="727.6" textLength="1134.6" clip-path="url(#terminal-612373463-line-29)">Joins&#160; [...]
+</text><text class="terminal-612373463-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-612373463-line-30)">│</text><text class="terminal-612373463-r5" x="24.4" y="752" textLength="256.2" clip-path="url(#terminal-612373463-line-30)">compile-www-assets&#160;&#160;&#160;</text><text class="terminal-612373463-r2" x="305" y="752" textLength="1134.6" clip-path="url(#terminal-612373463-line-30)">Compiles&#160;www&#160;assets.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="terminal-612373463-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-612373463-line-31)">│</text><text class="terminal-612373463-r5" x="24.4" y="776.4" textLength="256.2" clip-path="url(#terminal-612373463-line-31)">cleanup&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-612373463-r2" x="305" y="776.4" textLength="1134.6" clip-path="url(#terminal-612373463-line-31)">Cleans&#160;the&#160;cache [...]
+</text><text class="terminal-612373463-r4" x="0" y="800.8" textLength="1464" clip-path="url(#terminal-612373463-line-32)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-612373463-r2" x="1464" y="800.8" textLength="12.2" clip-path="url(#terminal-612373463-line-32)">
+</text><text class="terminal-612373463-r4" x="0" y="825.2" textLength="24.4" clip-path="url(#terminal-612373463-line-33)">╭─</text><text class="terminal-612373463-r4" x="24.4" y="825.2" textLength="1415.2" clip-path="url(#terminal-612373463-line-33)">&#160;Advanced&#160;command&#160;groups&#160;───────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-612373463-r4" x="1439.6" y="825.2" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-612373463-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-612373463-line-34)">│</text><text class="terminal-612373463-r5" x="24.4" y="849.6" textLength="280.6" clip-path="url(#terminal-612373463-line-34)">testing&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-612373463-r2" x="329.4" y="849.6" textLength="1110.2" clip-path="url(#terminal-612373463-line-34)">Tools&#160;t [...]
+</text><text class="terminal-612373463-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-612373463-line-35)">│</text><text class="terminal-612373463-r5" x="24.4" y="874" textLength="280.6" clip-path="url(#terminal-612373463-line-35)">ci-image&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-612373463-r2" x="329.4" y="874" textLength="1110.2" clip-path="url(#terminal-612373463-line-35)">Tools&#160;that&#160;de [...]
+</text><text class="terminal-612373463-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-612373463-line-36)">│</text><text class="terminal-612373463-r5" x="24.4" y="898.4" textLength="280.6" clip-path="url(#terminal-612373463-line-36)">prod-image&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-612373463-r2" x="329.4" y="898.4" textLength="1110.2" clip-path="url(#terminal-612373463-line-36)">Tools&#160;that&#160;develo [...]
+</text><text class="terminal-612373463-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-612373463-line-37)">│</text><text class="terminal-612373463-r5" x="24.4" y="922.8" textLength="280.6" clip-path="url(#terminal-612373463-line-37)">setup&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-612373463-r2" x="329.4" y="922.8" textLength="1110.2" clip-path="url(#terminal-612373463-line-37)">To [...]
+</text><text class="terminal-612373463-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-612373463-line-38)">│</text><text class="terminal-612373463-r5" x="24.4" y="947.2" textLength="280.6" clip-path="url(#terminal-612373463-line-38)">release-management&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-612373463-r2" x="329.4" y="947.2" textLength="1110.2" clip-path="url(#terminal-612373463-line-38)">Tools&#160;that&#160;release&#160;managers&#160;can&#160;use&#160;t [...]
+</text><text class="terminal-612373463-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-612373463-line-39)">│</text><text class="terminal-612373463-r5" x="24.4" y="971.6" textLength="280.6" clip-path="url(#terminal-612373463-line-39)">ci&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-612373463-r2" x="329.4" y="971.6" textLength="1110.2" clip-path="url(#terminal-6123734 [...]
+</text><text class="terminal-612373463-r4" x="0" y="996" textLength="1464" clip-path="url(#terminal-612373463-line-40)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-612373463-r2" x="1464" y="996" textLength="12.2" clip-path="url(#terminal-612373463-line-40)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-compile-www-assets.svg b/images/breeze/output-compile-www-assets.svg
deleted file mode 100644
index da06d16782..0000000000
--- a/images/breeze/output-compile-www-assets.svg
+++ /dev/null
@@ -1,115 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 391.59999999999997" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-1606255584-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-1606255584-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-1606255584-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1606255584-r2 { fill: #c5c8c6 }
-.terminal-1606255584-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1606255584-r4 { fill: #868887 }
-.terminal-1606255584-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1606255584-r6 { fill: #98a84b;font-weight: bold }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-1606255584-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="340.59999999999997" />
-    </clipPath>
-    <clipPath id="terminal-1606255584-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1606255584-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1606255584-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1606255584-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1606255584-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1606255584-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1606255584-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1606255584-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1606255584-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1606255584-line-9">
-    <rect x="0" y="221.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1606255584-line-10">
-    <rect x="0" y="245.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1606255584-line-11">
-    <rect x="0" y="269.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1606255584-line-12">
-    <rect x="0" y="294.3" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="389.6" rx="8"/><text class="terminal-1606255584-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;compile-www-assets</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#terminal-1606255584-clip-terminal)">
-    
-    <g class="terminal-1606255584-matrix">
-    <text class="terminal-1606255584-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1606255584-line-0)">
-</text><text class="terminal-1606255584-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1606255584-line-1)">Usage:&#160;</text><text class="terminal-1606255584-r1" x="97.6" y="44.4" textLength="427" clip-path="url(#terminal-1606255584-line-1)">breeze&#160;compile-www-assets&#160;[OPTIONS]</text><text class="terminal-1606255584-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1606255584-line-1)">
-</text><text class="terminal-1606255584-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1606255584-line-2)">
-</text><text class="terminal-1606255584-r2" x="12.2" y="93.2" textLength="244" clip-path="url(#terminal-1606255584-line-3)">Compiles&#160;www&#160;assets.</text><text class="terminal-1606255584-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1606255584-line-3)">
-</text><text class="terminal-1606255584-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1606255584-line-4)">
-</text><text class="terminal-1606255584-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1606255584-line-5)">╭─</text><text class="terminal-1606255584-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1606255584-line-5)">&#160;Compile&#160;www&#160;assets&#160;flag&#160;───────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1606255584-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#termi [...]
-</text><text class="terminal-1606255584-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1606255584-line-6)">│</text><text class="terminal-1606255584-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1606255584-line-6)">-</text><text class="terminal-1606255584-r5" x="36.6" y="166.4" textLength="48.8" clip-path="url(#terminal-1606255584-line-6)">-dev</text><text class="terminal-1606255584-r2" x="134.2" y="166.4" textLength="1305.4" clip-path="url(#terminal-16 [...]
-</text><text class="terminal-1606255584-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1606255584-line-7)">│</text><text class="terminal-1606255584-r2" x="134.2" y="190.8" textLength="1305.4" clip-path="url(#terminal-1606255584-line-7)">on-the-fly&#160;when&#160;they&#160;are&#160;changed.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-1606255584-r4" x="0" y="215.2" textLength="1464" clip-path="url(#terminal-1606255584-line-8)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1606255584-r2" x="1464" y="215.2" textLength="12.2" clip-path="url(#terminal-1606255584-line-8)">
-</text><text class="terminal-1606255584-r4" x="0" y="239.6" textLength="24.4" clip-path="url(#terminal-1606255584-line-9)">╭─</text><text class="terminal-1606255584-r4" x="24.4" y="239.6" textLength="1415.2" clip-path="url(#terminal-1606255584-line-9)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1606255584-r4" x="1439.6" y="239.6" textLength="24.4" clip-path="url(#terminal-16062 [...]
-</text><text class="terminal-1606255584-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1606255584-line-10)">│</text><text class="terminal-1606255584-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1606255584-line-10)">-</text><text class="terminal-1606255584-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-1606255584-line-10)">-verbose</text><text class="terminal-1606255584-r6" x="158.6" y="264" textLength="24.4" clip-path="url(#terminal-16062 [...]
-</text><text class="terminal-1606255584-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1606255584-line-11)">│</text><text class="terminal-1606255584-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1606255584-line-11)">-</text><text class="terminal-1606255584-r5" x="36.6" y="288.4" textLength="48.8" clip-path="url(#terminal-1606255584-line-11)">-dry</text><text class="terminal-1606255584-r5" x="85.4" y="288.4" textLength="48.8" clip-path="url(#terminal-16 [...]
-</text><text class="terminal-1606255584-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1606255584-line-12)">│</text><text class="terminal-1606255584-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1606255584-line-12)">-</text><text class="terminal-1606255584-r5" x="36.6" y="312.8" textLength="61" clip-path="url(#terminal-1606255584-line-12)">-help</text><text class="terminal-1606255584-r6" x="158.6" y="312.8" textLength="24.4" clip-path="url(#terminal-16 [...]
-</text><text class="terminal-1606255584-r4" x="0" y="337.2" textLength="1464" clip-path="url(#terminal-1606255584-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1606255584-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#terminal-1606255584-line-13)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output-config.svg b/images/breeze/output-config.svg
deleted file mode 100644
index 4f161b859f..0000000000
--- a/images/breeze/output-config.svg
+++ /dev/null
@@ -1,144 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 562.4" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-1878418540-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-1878418540-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-1878418540-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1878418540-r2 { fill: #c5c8c6 }
-.terminal-1878418540-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1878418540-r4 { fill: #868887 }
-.terminal-1878418540-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1878418540-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1878418540-r7 { fill: #8d7b39 }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-1878418540-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="511.4" />
-    </clipPath>
-    <clipPath id="terminal-1878418540-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-9">
-    <rect x="0" y="221.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-10">
-    <rect x="0" y="245.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-11">
-    <rect x="0" y="269.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-12">
-    <rect x="0" y="294.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-13">
-    <rect x="0" y="318.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-14">
-    <rect x="0" y="343.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-15">
-    <rect x="0" y="367.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-16">
-    <rect x="0" y="391.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-17">
-    <rect x="0" y="416.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-18">
-    <rect x="0" y="440.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1878418540-line-19">
-    <rect x="0" y="465.1" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="560.4" rx="8"/><text class="terminal-1878418540-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;config</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#terminal-1878418540-clip-terminal)">
-    
-    <g class="terminal-1878418540-matrix">
-    <text class="terminal-1878418540-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1878418540-line-0)">
-</text><text class="terminal-1878418540-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1878418540-line-1)">Usage:&#160;</text><text class="terminal-1878418540-r1" x="97.6" y="44.4" textLength="280.6" clip-path="url(#terminal-1878418540-line-1)">breeze&#160;config&#160;[OPTIONS]</text><text class="terminal-1878418540-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1878418540-line-1)">
-</text><text class="terminal-1878418540-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1878418540-line-2)">
-</text><text class="terminal-1878418540-r2" x="12.2" y="93.2" textLength="805.2" clip-path="url(#terminal-1878418540-line-3)">Show/update&#160;configuration&#160;(Python,&#160;Backend,&#160;Cheatsheet,&#160;ASCIIART).</text><text class="terminal-1878418540-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1878418540-line-3)">
-</text><text class="terminal-1878418540-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1878418540-line-4)">
-</text><text class="terminal-1878418540-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1878418540-line-5)">╭─</text><text class="terminal-1878418540-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1878418540-line-5)">&#160;Config&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1878418540-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-187841 [...]
-</text><text class="terminal-1878418540-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1878418540-line-6)">│</text><text class="terminal-1878418540-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1878418540-line-6)">-</text><text class="terminal-1878418540-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-1878418540-line-6)">-python</text><text class="terminal-1878418540-r6" x="390.4" y="166.4" textLength="24.4" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1878418540-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1878418540-line-7)">│</text><text class="terminal-1878418540-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-1878418540-line-7)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-1878418540-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1878418540-line-8)">│</text><text class="terminal-1878418540-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-1878418540-line-8)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-1878418540-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1878418540-line-9)">│</text><text class="terminal-1878418540-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1878418540-line-9)">-</text><text class="terminal-1878418540-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-1878418540-line-9)">-backend</text><text class="terminal-1878418540-r6" x="390.4" y="239.6" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-1878418540-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1878418540-line-10)">│</text><text class="terminal-1878418540-r4" x="475.8" y="264" textLength="292.8" clip-path="url(#terminal-1878418540-line-10)">[default:&#160;sqlite]&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1878418540-r4" x="1451.8" y="264" textLength="12.2" clip-path="url(#terminal-1878418540-line-10)">│</text><text class="terminal-1878418540-r2" x="146 [...]
-</text><text class="terminal-1878418540-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1878418540-line-11)">│</text><text class="terminal-1878418540-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1878418540-line-11)">-</text><text class="terminal-1878418540-r5" x="36.6" y="288.4" textLength="134.2" clip-path="url(#terminal-1878418540-line-11)">-cheatsheet</text><text class="terminal-1878418540-r2" x="170.8" y="288.4" textLength="12.2" clip-path="url(#te [...]
-</text><text class="terminal-1878418540-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1878418540-line-12)">│</text><text class="terminal-1878418540-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1878418540-line-12)">-</text><text class="terminal-1878418540-r5" x="36.6" y="312.8" textLength="109.8" clip-path="url(#terminal-1878418540-line-12)">-asciiart</text><text class="terminal-1878418540-r2" x="146.4" y="312.8" textLength="12.2" clip-path="url(#term [...]
-</text><text class="terminal-1878418540-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1878418540-line-13)">│</text><text class="terminal-1878418540-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-1878418540-line-13)">-</text><text class="terminal-1878418540-r5" x="36.6" y="337.2" textLength="85.4" clip-path="url(#terminal-1878418540-line-13)">-colour</text><text class="terminal-1878418540-r2" x="122" y="337.2" textLength="12.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-1878418540-r4" x="0" y="361.6" textLength="1464" clip-path="url(#terminal-1878418540-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1878418540-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-1878418540-line-14)">
-</text><text class="terminal-1878418540-r4" x="0" y="386" textLength="24.4" clip-path="url(#terminal-1878418540-line-15)">╭─</text><text class="terminal-1878418540-r4" x="24.4" y="386" textLength="1415.2" clip-path="url(#terminal-1878418540-line-15)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1878418540-r4" x="1439.6" y="386" textLength="24.4" clip-path="url(#terminal-187841854 [...]
-</text><text class="terminal-1878418540-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1878418540-line-16)">│</text><text class="terminal-1878418540-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-1878418540-line-16)">-</text><text class="terminal-1878418540-r5" x="36.6" y="410.4" textLength="109.8" clip-path="url(#terminal-1878418540-line-16)">-postgres</text><text class="terminal-1878418540-r5" x="146.4" y="410.4" textLength="97.6" clip-path="url(#term [...]
-</text><text class="terminal-1878418540-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1878418540-line-17)">│</text><text class="terminal-1878418540-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1878418540-line-17)">-</text><text class="terminal-1878418540-r5" x="36.6" y="434.8" textLength="73.2" clip-path="url(#terminal-1878418540-line-17)">-mysql</text><text class="terminal-1878418540-r5" x="109.8" y="434.8" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-1878418540-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1878418540-line-18)">│</text><text class="terminal-1878418540-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-1878418540-line-18)">-</text><text class="terminal-1878418540-r5" x="36.6" y="459.2" textLength="73.2" clip-path="url(#terminal-1878418540-line-18)">-mssql</text><text class="terminal-1878418540-r5" x="109.8" y="459.2" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-1878418540-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1878418540-line-19)">│</text><text class="terminal-1878418540-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1878418540-line-19)">-</text><text class="terminal-1878418540-r5" x="36.6" y="483.6" textLength="61" clip-path="url(#terminal-1878418540-line-19)">-help</text><text class="terminal-1878418540-r6" x="268.4" y="483.6" textLength="24.4" clip-path="url(#terminal-18 [...]
-</text><text class="terminal-1878418540-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-1878418540-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1878418540-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-1878418540-line-20)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output-docker-compose-tests.svg b/images/breeze/output-docker-compose-tests.svg
deleted file mode 100644
index 424d3cda29..0000000000
--- a/images/breeze/output-docker-compose-tests.svg
+++ /dev/null
@@ -1,128 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 464.79999999999995" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-4060083131-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-4060083131-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-4060083131-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-4060083131-r2 { fill: #c5c8c6 }
-.terminal-4060083131-r3 { fill: #d0b344;font-weight: bold }
-.terminal-4060083131-r4 { fill: #868887 }
-.terminal-4060083131-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-4060083131-r6 { fill: #98a84b;font-weight: bold }
-.terminal-4060083131-r7 { fill: #8d7b39 }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-4060083131-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="413.79999999999995" />
-    </clipPath>
-    <clipPath id="terminal-4060083131-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4060083131-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4060083131-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4060083131-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4060083131-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4060083131-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4060083131-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4060083131-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4060083131-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4060083131-line-9">
-    <rect x="0" y="221.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4060083131-line-10">
-    <rect x="0" y="245.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4060083131-line-11">
-    <rect x="0" y="269.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4060083131-line-12">
-    <rect x="0" y="294.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4060083131-line-13">
-    <rect x="0" y="318.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4060083131-line-14">
-    <rect x="0" y="343.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4060083131-line-15">
-    <rect x="0" y="367.5" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="462.8" rx="8"/><text class="terminal-4060083131-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;docker-compose-tests</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#terminal-4060083131-clip-terminal)">
-    
-    <g class="terminal-4060083131-matrix">
-    <text class="terminal-4060083131-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-4060083131-line-0)">
-</text><text class="terminal-4060083131-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-4060083131-line-1)">Usage:&#160;</text><text class="terminal-4060083131-r1" x="97.6" y="44.4" textLength="732" clip-path="url(#terminal-4060083131-line-1)">breeze&#160;docker-compose-tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-4060083131-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-4060083131-line-1)">
-</text><text class="terminal-4060083131-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-4060083131-line-2)">
-</text><text class="terminal-4060083131-r2" x="12.2" y="93.2" textLength="305" clip-path="url(#terminal-4060083131-line-3)">Run&#160;docker-compose&#160;tests.</text><text class="terminal-4060083131-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-4060083131-line-3)">
-</text><text class="terminal-4060083131-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-4060083131-line-4)">
-</text><text class="terminal-4060083131-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-4060083131-line-5)">╭─</text><text class="terminal-4060083131-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-4060083131-line-5)">&#160;Docker-compose&#160;tests&#160;flag&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4060083131-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-4 [...]
-</text><text class="terminal-4060083131-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-4060083131-line-6)">│</text><text class="terminal-4060083131-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-4060083131-line-6)">-</text><text class="terminal-4060083131-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-4060083131-line-6)">-image</text><text class="terminal-4060083131-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-4060 [...]
-</text><text class="terminal-4060083131-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-4060083131-line-7)">│</text><text class="terminal-4060083131-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-4060083131-line-7)">-</text><text class="terminal-4060083131-r5" x="36.6" y="190.8" textLength="73.2" clip-path="url(#terminal-4060083131-line-7)">-image</text><text class="terminal-4060083131-r5" x="109.8" y="190.8" textLength="48.8" clip-path="url(#terminal-40 [...]
-</text><text class="terminal-4060083131-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-4060083131-line-8)">│</text><text class="terminal-4060083131-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-4060083131-line-8)">-</text><text class="terminal-4060083131-r5" x="36.6" y="215.2" textLength="85.4" clip-path="url(#terminal-4060083131-line-8)">-python</text><text class="terminal-4060083131-r6" x="195.2" y="215.2" textLength="24.4" clip-path="url(#terminal-4 [...]
-</text><text class="terminal-4060083131-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-4060083131-line-9)">│</text><text class="terminal-4060083131-r4" x="244" y="239.6" textLength="732" clip-path="url(#terminal-4060083131-line-9)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="terminal-4060083131-r4" x="0" y="264" textLength="1464" clip-path="url(#terminal-4060083131-line-10)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4060083131-r2" x="1464" y="264" textLength="12.2" clip-path="url(#terminal-4060083131-line-10)">
-</text><text class="terminal-4060083131-r4" x="0" y="288.4" textLength="24.4" clip-path="url(#terminal-4060083131-line-11)">╭─</text><text class="terminal-4060083131-r4" x="24.4" y="288.4" textLength="1415.2" clip-path="url(#terminal-4060083131-line-11)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4060083131-r4" x="1439.6" y="288.4" textLength="24.4" clip-path="url(#terminal-406 [...]
-</text><text class="terminal-4060083131-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-4060083131-line-12)">│</text><text class="terminal-4060083131-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-4060083131-line-12)">-</text><text class="terminal-4060083131-r5" x="36.6" y="312.8" textLength="97.6" clip-path="url(#terminal-4060083131-line-12)">-verbose</text><text class="terminal-4060083131-r6" x="280.6" y="312.8" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-4060083131-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-4060083131-line-13)">│</text><text class="terminal-4060083131-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-4060083131-line-13)">-</text><text class="terminal-4060083131-r5" x="36.6" y="337.2" textLength="48.8" clip-path="url(#terminal-4060083131-line-13)">-dry</text><text class="terminal-4060083131-r5" x="85.4" y="337.2" textLength="48.8" clip-path="url(#terminal-40 [...]
-</text><text class="terminal-4060083131-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-4060083131-line-14)">│</text><text class="terminal-4060083131-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-4060083131-line-14)">-</text><text class="terminal-4060083131-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-4060083131-line-14)">-github</text><text class="terminal-4060083131-r5" x="122" y="361.6" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-4060083131-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-4060083131-line-15)">│</text><text class="terminal-4060083131-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-4060083131-line-15)">-</text><text class="terminal-4060083131-r5" x="36.6" y="386" textLength="61" clip-path="url(#terminal-4060083131-line-15)">-help</text><text class="terminal-4060083131-r6" x="280.6" y="386" textLength="24.4" clip-path="url(#terminal-4060083131 [...]
-</text><text class="terminal-4060083131-r4" x="0" y="410.4" textLength="1464" clip-path="url(#terminal-4060083131-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4060083131-r2" x="1464" y="410.4" textLength="12.2" clip-path="url(#terminal-4060083131-line-16)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output-exec.svg b/images/breeze/output-exec.svg
deleted file mode 100644
index b8e69cd3ad..0000000000
--- a/images/breeze/output-exec.svg
+++ /dev/null
@@ -1,99 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 294.0" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-4239167265-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-4239167265-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-4239167265-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-4239167265-r2 { fill: #c5c8c6 }
-.terminal-4239167265-r3 { fill: #d0b344;font-weight: bold }
-.terminal-4239167265-r4 { fill: #868887 }
-.terminal-4239167265-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-4239167265-r6 { fill: #98a84b;font-weight: bold }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-4239167265-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="243.0" />
-    </clipPath>
-    <clipPath id="terminal-4239167265-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4239167265-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4239167265-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4239167265-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4239167265-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4239167265-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4239167265-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4239167265-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4239167265-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="292" rx="8"/><text class="terminal-4239167265-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;exec</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#terminal-4239167265-clip-terminal)">
-    
-    <g class="terminal-4239167265-matrix">
-    <text class="terminal-4239167265-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-4239167265-line-0)">
-</text><text class="terminal-4239167265-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-4239167265-line-1)">Usage:&#160;</text><text class="terminal-4239167265-r1" x="97.6" y="44.4" textLength="439.2" clip-path="url(#terminal-4239167265-line-1)">breeze&#160;exec&#160;[OPTIONS]&#160;[EXEC_ARGS]...</text><text class="terminal-4239167265-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-4239167265-line-1)">
-</text><text class="terminal-4239167265-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-4239167265-line-2)">
-</text><text class="terminal-4239167265-r2" x="12.2" y="93.2" textLength="683.2" clip-path="url(#terminal-4239167265-line-3)">Joins&#160;the&#160;interactive&#160;shell&#160;of&#160;running&#160;airflow&#160;container</text><text class="terminal-4239167265-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-4239167265-line-3)">
-</text><text class="terminal-4239167265-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-4239167265-line-4)">
-</text><text class="terminal-4239167265-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-4239167265-line-5)">╭─</text><text class="terminal-4239167265-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-4239167265-line-5)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4239167265-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-4239167265- [...]
-</text><text class="terminal-4239167265-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-4239167265-line-6)">│</text><text class="terminal-4239167265-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-4239167265-line-6)">-</text><text class="terminal-4239167265-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-4239167265-line-6)">-verbose</text><text class="terminal-4239167265-r6" x="158.6" y="166.4" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-4239167265-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-4239167265-line-7)">│</text><text class="terminal-4239167265-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-4239167265-line-7)">-</text><text class="terminal-4239167265-r5" x="36.6" y="190.8" textLength="48.8" clip-path="url(#terminal-4239167265-line-7)">-dry</text><text class="terminal-4239167265-r5" x="85.4" y="190.8" textLength="48.8" clip-path="url(#terminal-42391 [...]
-</text><text class="terminal-4239167265-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-4239167265-line-8)">│</text><text class="terminal-4239167265-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-4239167265-line-8)">-</text><text class="terminal-4239167265-r5" x="36.6" y="215.2" textLength="61" clip-path="url(#terminal-4239167265-line-8)">-help</text><text class="terminal-4239167265-r6" x="158.6" y="215.2" textLength="24.4" clip-path="url(#terminal-42391 [...]
-</text><text class="terminal-4239167265-r4" x="0" y="239.6" textLength="1464" clip-path="url(#terminal-4239167265-line-9)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4239167265-r2" x="1464" y="239.6" textLength="12.2" clip-path="url(#terminal-4239167265-line-9)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output-find-newer-dependencies.svg b/images/breeze/output-find-newer-dependencies.svg
deleted file mode 100644
index 43fc632ead..0000000000
--- a/images/breeze/output-find-newer-dependencies.svg
+++ /dev/null
@@ -1,132 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 489.2" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-3402563700-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-3402563700-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-3402563700-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-3402563700-r2 { fill: #c5c8c6 }
-.terminal-3402563700-r3 { fill: #d0b344;font-weight: bold }
-.terminal-3402563700-r4 { fill: #868887 }
-.terminal-3402563700-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-3402563700-r6 { fill: #98a84b;font-weight: bold }
-.terminal-3402563700-r7 { fill: #8d7b39 }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-3402563700-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="438.2" />
-    </clipPath>
-    <clipPath id="terminal-3402563700-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3402563700-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3402563700-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3402563700-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3402563700-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3402563700-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3402563700-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3402563700-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3402563700-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3402563700-line-9">
-    <rect x="0" y="221.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3402563700-line-10">
-    <rect x="0" y="245.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3402563700-line-11">
-    <rect x="0" y="269.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3402563700-line-12">
-    <rect x="0" y="294.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3402563700-line-13">
-    <rect x="0" y="318.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3402563700-line-14">
-    <rect x="0" y="343.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3402563700-line-15">
-    <rect x="0" y="367.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3402563700-line-16">
-    <rect x="0" y="391.9" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="487.2" rx="8"/><text class="terminal-3402563700-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;find-newer-dependencies</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#terminal-3402563700-clip-terminal)">
-    
-    <g class="terminal-3402563700-matrix">
-    <text class="terminal-3402563700-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3402563700-line-0)">
-</text><text class="terminal-3402563700-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3402563700-line-1)">Usage:&#160;</text><text class="terminal-3402563700-r1" x="97.6" y="44.4" textLength="488" clip-path="url(#terminal-3402563700-line-1)">breeze&#160;find-newer-dependencies&#160;[OPTIONS]</text><text class="terminal-3402563700-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3402563700-line-1)">
-</text><text class="terminal-3402563700-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3402563700-line-2)">
-</text><text class="terminal-3402563700-r2" x="12.2" y="93.2" textLength="536.8" clip-path="url(#terminal-3402563700-line-3)">Finds&#160;which&#160;dependencies&#160;are&#160;being&#160;upgraded.</text><text class="terminal-3402563700-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3402563700-line-3)">
-</text><text class="terminal-3402563700-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3402563700-line-4)">
-</text><text class="terminal-3402563700-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3402563700-line-5)">╭─</text><text class="terminal-3402563700-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3402563700-line-5)">&#160;Find&#160;newer&#160;dependencies&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3402563700-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#termi [...]
-</text><text class="terminal-3402563700-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3402563700-line-6)">│</text><text class="terminal-3402563700-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3402563700-line-6)">-</text><text class="terminal-3402563700-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-3402563700-line-6)">-python</text><text class="terminal-3402563700-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-340 [...]
-</text><text class="terminal-3402563700-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3402563700-line-7)">│</text><text class="terminal-3402563700-r4" x="353.8" y="190.8" textLength="732" clip-path="url(#terminal-3402563700-line-7)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-3402563700-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3402563700-line-8)">│</text><text class="terminal-3402563700-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-3402563700-line-8)">-</text><text class="terminal-3402563700-r5" x="36.6" y="215.2" textLength="109.8" clip-path="url(#terminal-3402563700-line-8)">-timezone</text><text class="terminal-3402563700-r2" x="353.8" y="215.2" textLength="390.4" clip-path="url(#termin [...]
-</text><text class="terminal-3402563700-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3402563700-line-9)">│</text><text class="terminal-3402563700-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3402563700-line-9)">-</text><text class="terminal-3402563700-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-3402563700-line-9)">-updated</text><text class="terminal-3402563700-r5" x="134.2" y="239.6" textLength="146.4" clip-path="url(#terminal [...]
-</text><text class="terminal-3402563700-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3402563700-line-10)">│</text><text class="terminal-3402563700-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-3402563700-line-10)">-</text><text class="terminal-3402563700-r5" x="36.6" y="264" textLength="48.8" clip-path="url(#terminal-3402563700-line-10)">-max</text><text class="terminal-3402563700-r5" x="85.4" y="264" textLength="48.8" clip-path="url(#terminal-3402563700 [...]
-</text><text class="terminal-3402563700-r4" x="0" y="288.4" textLength="1464" clip-path="url(#terminal-3402563700-line-11)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3402563700-r2" x="1464" y="288.4" textLength="12.2" clip-path="url(#terminal-3402563700-line-11)">
-</text><text class="terminal-3402563700-r4" x="0" y="312.8" textLength="24.4" clip-path="url(#terminal-3402563700-line-12)">╭─</text><text class="terminal-3402563700-r4" x="24.4" y="312.8" textLength="1415.2" clip-path="url(#terminal-3402563700-line-12)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3402563700-r4" x="1439.6" y="312.8" textLength="24.4" clip-path="url(#terminal-340 [...]
-</text><text class="terminal-3402563700-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3402563700-line-13)">│</text><text class="terminal-3402563700-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-3402563700-line-13)">-</text><text class="terminal-3402563700-r5" x="36.6" y="337.2" textLength="97.6" clip-path="url(#terminal-3402563700-line-13)">-airflow</text><text class="terminal-3402563700-r5" x="134.2" y="337.2" textLength="268.4" clip-path="url(#termi [...]
-</text><text class="terminal-3402563700-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3402563700-line-14)">│</text><text class="terminal-3402563700-r2" x="475.8" y="361.6" textLength="963.8" clip-path="url(#terminal-3402563700-line-14)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;</text><text class="terminal-3402563700-r4" x="1451.8" y="361.6" textLength="12.2" clip-path=" [...]
-</text><text class="terminal-3402563700-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3402563700-line-15)">│</text><text class="terminal-3402563700-r7" x="475.8" y="386" textLength="963.8" clip-path="url(#terminal-3402563700-line-15)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="terminal-3402563700-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3402563700-line-16)">│</text><text class="terminal-3402563700-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-3402563700-line-16)">-</text><text class="terminal-3402563700-r5" x="36.6" y="410.4" textLength="61" clip-path="url(#terminal-3402563700-line-16)">-help</text><text class="terminal-3402563700-r6" x="427" y="410.4" textLength="24.4" clip-path="url(#terminal-3402 [...]
-</text><text class="terminal-3402563700-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-3402563700-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3402563700-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-3402563700-line-17)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output-fix-ownership.svg b/images/breeze/output-fix-ownership.svg
deleted file mode 100644
index f7208613b1..0000000000
--- a/images/breeze/output-fix-ownership.svg
+++ /dev/null
@@ -1,116 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 391.59999999999997" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-1020697717-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-1020697717-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-1020697717-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1020697717-r2 { fill: #c5c8c6 }
-.terminal-1020697717-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1020697717-r4 { fill: #868887 }
-.terminal-1020697717-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1020697717-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1020697717-r7 { fill: #8d7b39 }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-1020697717-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="340.59999999999997" />
-    </clipPath>
-    <clipPath id="terminal-1020697717-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1020697717-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1020697717-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1020697717-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1020697717-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1020697717-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1020697717-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1020697717-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1020697717-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1020697717-line-9">
-    <rect x="0" y="221.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1020697717-line-10">
-    <rect x="0" y="245.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1020697717-line-11">
-    <rect x="0" y="269.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1020697717-line-12">
-    <rect x="0" y="294.3" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="389.6" rx="8"/><text class="terminal-1020697717-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;fix-ownership</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#terminal-1020697717-clip-terminal)">
-    
-    <g class="terminal-1020697717-matrix">
-    <text class="terminal-1020697717-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1020697717-line-0)">
-</text><text class="terminal-1020697717-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1020697717-line-1)">Usage:&#160;</text><text class="terminal-1020697717-r1" x="97.6" y="44.4" textLength="366" clip-path="url(#terminal-1020697717-line-1)">breeze&#160;fix-ownership&#160;[OPTIONS]</text><text class="terminal-1020697717-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1020697717-line-1)">
-</text><text class="terminal-1020697717-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1020697717-line-2)">
-</text><text class="terminal-1020697717-r2" x="12.2" y="93.2" textLength="658.8" clip-path="url(#terminal-1020697717-line-3)">Fix&#160;ownership&#160;of&#160;source&#160;files&#160;to&#160;be&#160;same&#160;as&#160;host&#160;user.</text><text class="terminal-1020697717-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1020697717-line-3)">
-</text><text class="terminal-1020697717-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1020697717-line-4)">
-</text><text class="terminal-1020697717-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1020697717-line-5)">╭─</text><text class="terminal-1020697717-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1020697717-line-5)">&#160;Fix&#160;ownership&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1020697717-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1020697717-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1020697717-line-6)">│</text><text class="terminal-1020697717-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1020697717-line-6)">-</text><text class="terminal-1020697717-r5" x="36.6" y="166.4" textLength="48.8" clip-path="url(#terminal-1020697717-line-6)">-use</text><text class="terminal-1020697717-r5" x="85.4" y="166.4" textLength="61" clip-path="url(#terminal-1020697 [...]
-</text><text class="terminal-1020697717-r4" x="0" y="190.8" textLength="1464" clip-path="url(#terminal-1020697717-line-7)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1020697717-r2" x="1464" y="190.8" textLength="12.2" clip-path="url(#terminal-1020697717-line-7)">
-</text><text class="terminal-1020697717-r4" x="0" y="215.2" textLength="24.4" clip-path="url(#terminal-1020697717-line-8)">╭─</text><text class="terminal-1020697717-r4" x="24.4" y="215.2" textLength="1415.2" clip-path="url(#terminal-1020697717-line-8)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1020697717-r4" x="1439.6" y="215.2" textLength="24.4" clip-path="url(#terminal-10206 [...]
-</text><text class="terminal-1020697717-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1020697717-line-9)">│</text><text class="terminal-1020697717-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1020697717-line-9)">-</text><text class="terminal-1020697717-r5" x="36.6" y="239.6" textLength="85.4" clip-path="url(#terminal-1020697717-line-9)">-github</text><text class="terminal-1020697717-r5" x="122" y="239.6" textLength="134.2" clip-path="url(#terminal-10 [...]
-</text><text class="terminal-1020697717-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1020697717-line-10)">│</text><text class="terminal-1020697717-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1020697717-line-10)">-</text><text class="terminal-1020697717-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-1020697717-line-10)">-verbose</text><text class="terminal-1020697717-r6" x="280.6" y="264" textLength="24.4" clip-path="url(#terminal-10206 [...]
-</text><text class="terminal-1020697717-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1020697717-line-11)">│</text><text class="terminal-1020697717-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1020697717-line-11)">-</text><text class="terminal-1020697717-r5" x="36.6" y="288.4" textLength="48.8" clip-path="url(#terminal-1020697717-line-11)">-dry</text><text class="terminal-1020697717-r5" x="85.4" y="288.4" textLength="48.8" clip-path="url(#terminal-10 [...]
-</text><text class="terminal-1020697717-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1020697717-line-12)">│</text><text class="terminal-1020697717-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1020697717-line-12)">-</text><text class="terminal-1020697717-r5" x="36.6" y="312.8" textLength="61" clip-path="url(#terminal-1020697717-line-12)">-help</text><text class="terminal-1020697717-r6" x="280.6" y="312.8" textLength="24.4" clip-path="url(#terminal-10 [...]
-</text><text class="terminal-1020697717-r4" x="0" y="337.2" textLength="1464" clip-path="url(#terminal-1020697717-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1020697717-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#terminal-1020697717-line-13)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output-free-space.svg b/images/breeze/output-free-space.svg
deleted file mode 100644
index e0e4296201..0000000000
--- a/images/breeze/output-free-space.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 318.4" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-1942333903-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-1942333903-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-1942333903-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1942333903-r2 { fill: #c5c8c6 }
-.terminal-1942333903-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1942333903-r4 { fill: #868887 }
-.terminal-1942333903-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1942333903-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1942333903-r7 { fill: #8d7b39 }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-1942333903-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="267.4" />
-    </clipPath>
-    <clipPath id="terminal-1942333903-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1942333903-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1942333903-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1942333903-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1942333903-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1942333903-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1942333903-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1942333903-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1942333903-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1942333903-line-9">
-    <rect x="0" y="221.1" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="316.4" rx="8"/><text class="terminal-1942333903-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;free-space</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#terminal-1942333903-clip-terminal)">
-    
-    <g class="terminal-1942333903-matrix">
-    <text class="terminal-1942333903-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1942333903-line-0)">
-</text><text class="terminal-1942333903-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1942333903-line-1)">Usage:&#160;</text><text class="terminal-1942333903-r1" x="97.6" y="44.4" textLength="329.4" clip-path="url(#terminal-1942333903-line-1)">breeze&#160;free-space&#160;[OPTIONS]</text><text class="terminal-1942333903-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1942333903-line-1)">
-</text><text class="terminal-1942333903-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1942333903-line-2)">
-</text><text class="terminal-1942333903-r2" x="12.2" y="93.2" textLength="366" clip-path="url(#terminal-1942333903-line-3)">Free&#160;space&#160;for&#160;jobs&#160;run&#160;in&#160;CI.</text><text class="terminal-1942333903-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1942333903-line-3)">
-</text><text class="terminal-1942333903-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1942333903-line-4)">
-</text><text class="terminal-1942333903-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1942333903-line-5)">╭─</text><text class="terminal-1942333903-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1942333903-line-5)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1942333903-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-1942333903- [...]
-</text><text class="terminal-1942333903-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1942333903-line-6)">│</text><text class="terminal-1942333903-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1942333903-line-6)">-</text><text class="terminal-1942333903-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-1942333903-line-6)">-verbose</text><text class="terminal-1942333903-r6" x="158.6" y="166.4" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-1942333903-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1942333903-line-7)">│</text><text class="terminal-1942333903-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-1942333903-line-7)">-</text><text class="terminal-1942333903-r5" x="36.6" y="190.8" textLength="48.8" clip-path="url(#terminal-1942333903-line-7)">-dry</text><text class="terminal-1942333903-r5" x="85.4" y="190.8" textLength="48.8" clip-path="url(#terminal-19423 [...]
-</text><text class="terminal-1942333903-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1942333903-line-8)">│</text><text class="terminal-1942333903-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-1942333903-line-8)">-</text><text class="terminal-1942333903-r5" x="36.6" y="215.2" textLength="85.4" clip-path="url(#terminal-1942333903-line-8)">-answer</text><text class="terminal-1942333903-r6" x="158.6" y="215.2" textLength="24.4" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1942333903-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1942333903-line-9)">│</text><text class="terminal-1942333903-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1942333903-line-9)">-</text><text class="terminal-1942333903-r5" x="36.6" y="239.6" textLength="61" clip-path="url(#terminal-1942333903-line-9)">-help</text><text class="terminal-1942333903-r6" x="158.6" y="239.6" textLength="24.4" clip-path="url(#terminal-19423 [...]
-</text><text class="terminal-1942333903-r4" x="0" y="264" textLength="1464" clip-path="url(#terminal-1942333903-line-10)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1942333903-r2" x="1464" y="264" textLength="12.2" clip-path="url(#terminal-1942333903-line-10)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output-generate-constraints.svg b/images/breeze/output-generate-constraints.svg
deleted file mode 100644
index 24663d4bc7..0000000000
--- a/images/breeze/output-generate-constraints.svg
+++ /dev/null
@@ -1,180 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 782.0" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-3187609785-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-3187609785-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-3187609785-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-3187609785-r2 { fill: #c5c8c6 }
-.terminal-3187609785-r3 { fill: #d0b344;font-weight: bold }
-.terminal-3187609785-r4 { fill: #868887 }
-.terminal-3187609785-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-3187609785-r6 { fill: #98a84b;font-weight: bold }
-.terminal-3187609785-r7 { fill: #8d7b39 }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-3187609785-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="731.0" />
-    </clipPath>
-    <clipPath id="terminal-3187609785-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-9">
-    <rect x="0" y="221.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-10">
-    <rect x="0" y="245.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-11">
-    <rect x="0" y="269.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-12">
-    <rect x="0" y="294.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-13">
-    <rect x="0" y="318.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-14">
-    <rect x="0" y="343.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-15">
-    <rect x="0" y="367.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-16">
-    <rect x="0" y="391.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-17">
-    <rect x="0" y="416.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-18">
-    <rect x="0" y="440.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-19">
-    <rect x="0" y="465.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-20">
-    <rect x="0" y="489.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-21">
-    <rect x="0" y="513.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-22">
-    <rect x="0" y="538.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-23">
-    <rect x="0" y="562.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-24">
-    <rect x="0" y="587.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-25">
-    <rect x="0" y="611.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-26">
-    <rect x="0" y="635.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-27">
-    <rect x="0" y="660.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3187609785-line-28">
-    <rect x="0" y="684.7" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="780" rx="8"/><text class="terminal-3187609785-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;generate-constraints</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#terminal-3187609785-clip-terminal)">
-    
-    <g class="terminal-3187609785-matrix">
-    <text class="terminal-3187609785-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3187609785-line-0)">
-</text><text class="terminal-3187609785-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3187609785-line-1)">Usage:&#160;</text><text class="terminal-3187609785-r1" x="97.6" y="44.4" textLength="451.4" clip-path="url(#terminal-3187609785-line-1)">breeze&#160;generate-constraints&#160;[OPTIONS]</text><text class="terminal-3187609785-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3187609785-line-1)">
-</text><text class="terminal-3187609785-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3187609785-line-2)">
-</text><text class="terminal-3187609785-r2" x="12.2" y="93.2" textLength="927.2" clip-path="url(#terminal-3187609785-line-3)">Generates&#160;pinned&#160;constraint&#160;files&#160;with&#160;all&#160;extras&#160;from&#160;setup.py&#160;in&#160;parallel.</text><text class="terminal-3187609785-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3187609785-line-3)">
-</text><text class="terminal-3187609785-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3187609785-line-4)">
-</text><text class="terminal-3187609785-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3187609785-line-5)">╭─</text><text class="terminal-3187609785-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3187609785-line-5)">&#160;Generate&#160;constraints&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3187609785-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-3 [...]
-</text><text class="terminal-3187609785-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3187609785-line-6)">│</text><text class="terminal-3187609785-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3187609785-line-6)">-</text><text class="terminal-3187609785-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-3187609785-line-6)">-image</text><text class="terminal-3187609785-r5" x="109.8" y="166.4" textLength="48.8" clip-path="url(#terminal-31 [...]
-</text><text class="terminal-3187609785-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3187609785-line-7)">│</text><text class="terminal-3187609785-r7" x="414.8" y="190.8" textLength="951.6" clip-path="url(#terminal-3187609785-line-7)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-3187609785-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3187609785-line-8)">│</text><text class="terminal-3187609785-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-3187609785-line-8)">-</text><text class="terminal-3187609785-r5" x="36.6" y="215.2" textLength="85.4" clip-path="url(#terminal-3187609785-line-8)">-python</text><text class="terminal-3187609785-r6" x="366" y="215.2" textLength="24.4" clip-path="url(#terminal-318 [...]
-</text><text class="terminal-3187609785-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3187609785-line-9)">│</text><text class="terminal-3187609785-r7" x="414.8" y="239.6" textLength="732" clip-path="url(#terminal-3187609785-line-9)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-3187609785-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3187609785-line-10)">│</text><text class="terminal-3187609785-r4" x="414.8" y="264" textLength="732" clip-path="url(#terminal-3187609785-line-10)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="terminal-3187609785-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3187609785-line-11)">│</text><text class="terminal-3187609785-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-3187609785-line-11)">-</text><text class="terminal-3187609785-r5" x="36.6" y="288.4" textLength="97.6" clip-path="url(#terminal-3187609785-line-11)">-airflow</text><text class="terminal-3187609785-r5" x="134.2" y="288.4" textLength="207.4" clip-path="url(#termi [...]
-</text><text class="terminal-3187609785-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3187609785-line-12)">│</text><text class="terminal-3187609785-r7" x="414.8" y="312.8" textLength="866.2" clip-path="url(#terminal-3187609785-line-12)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="terminal-3187609785-r4" x="1451.8" y="312.8" textLength="12.2" clip-path="url(#terminal-3187609785-line-12)">│</text><text clas [...]
-</text><text class="terminal-3187609785-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3187609785-line-13)">│</text><text class="terminal-3187609785-r4" x="414.8" y="337.2" textLength="866.2" clip-path="url(#terminal-3187609785-line-13)">[default:&#160;constraints-source-providers]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</ [...]
-</text><text class="terminal-3187609785-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3187609785-line-14)">│</text><text class="terminal-3187609785-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-3187609785-line-14)">-</text><text class="terminal-3187609785-r5" x="36.6" y="361.6" textLength="73.2" clip-path="url(#terminal-3187609785-line-14)">-debug</text><text class="terminal-3187609785-r2" x="414.8" y="361.6" textLength="878.4" clip-path="url(#termina [...]
-</text><text class="terminal-3187609785-r4" x="0" y="386" textLength="1464" clip-path="url(#terminal-3187609785-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3187609785-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-3187609785-line-15)">
-</text><text class="terminal-3187609785-r4" x="0" y="410.4" textLength="24.4" clip-path="url(#terminal-3187609785-line-16)">╭─</text><text class="terminal-3187609785-r4" x="24.4" y="410.4" textLength="1415.2" clip-path="url(#terminal-3187609785-line-16)">&#160;Parallel&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3187609785-r4" x="1439.6" y="410.4" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-3187609785-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3187609785-line-17)">│</text><text class="terminal-3187609785-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-3187609785-line-17)">-</text><text class="terminal-3187609785-r5" x="36.6" y="434.8" textLength="48.8" clip-path="url(#terminal-3187609785-line-17)">-run</text><text class="terminal-3187609785-r5" x="85.4" y="434.8" textLength="146.4" clip-path="url(#terminal-3 [...]
-</text><text class="terminal-3187609785-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-3187609785-line-18)">│</text><text class="terminal-3187609785-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-3187609785-line-18)">-</text><text class="terminal-3187609785-r5" x="36.6" y="459.2" textLength="146.4" clip-path="url(#terminal-3187609785-line-18)">-parallelism</text><text class="terminal-3187609785-r2" x="280.6" y="459.2" textLength="915" clip-path="url(#te [...]
-</text><text class="terminal-3187609785-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3187609785-line-19)">│</text><text class="terminal-3187609785-r4" x="280.6" y="483.6" textLength="915" clip-path="url(#terminal-3187609785-line-19)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-3187609785-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3187609785-line-20)">│</text><text class="terminal-3187609785-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-3187609785-line-20)">-</text><text class="terminal-3187609785-r5" x="36.6" y="508" textLength="85.4" clip-path="url(#terminal-3187609785-line-20)">-python</text><text class="terminal-3187609785-r5" x="122" y="508" textLength="109.8" clip-path="url(#terminal-3187609 [...]
-</text><text class="terminal-3187609785-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3187609785-line-21)">│</text><text class="terminal-3187609785-r4" x="280.6" y="532.4" textLength="951.6" clip-path="url(#terminal-3187609785-line-21)">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-3187609785-r4" x="0" y="556.8" textLength="1464" clip-path="url(#terminal-3187609785-line-22)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3187609785-r2" x="1464" y="556.8" textLength="12.2" clip-path="url(#terminal-3187609785-line-22)">
-</text><text class="terminal-3187609785-r4" x="0" y="581.2" textLength="24.4" clip-path="url(#terminal-3187609785-line-23)">╭─</text><text class="terminal-3187609785-r4" x="24.4" y="581.2" textLength="1415.2" clip-path="url(#terminal-3187609785-line-23)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3187609785-r4" x="1439.6" y="581.2" textLength="24.4" clip-path="url(#terminal-318 [...]
-</text><text class="terminal-3187609785-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3187609785-line-24)">│</text><text class="terminal-3187609785-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-3187609785-line-24)">-</text><text class="terminal-3187609785-r5" x="36.6" y="605.6" textLength="97.6" clip-path="url(#terminal-3187609785-line-24)">-verbose</text><text class="terminal-3187609785-r6" x="280.6" y="605.6" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-3187609785-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3187609785-line-25)">│</text><text class="terminal-3187609785-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-3187609785-line-25)">-</text><text class="terminal-3187609785-r5" x="36.6" y="630" textLength="48.8" clip-path="url(#terminal-3187609785-line-25)">-dry</text><text class="terminal-3187609785-r5" x="85.4" y="630" textLength="48.8" clip-path="url(#terminal-3187609785 [...]
-</text><text class="terminal-3187609785-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3187609785-line-26)">│</text><text class="terminal-3187609785-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-3187609785-line-26)">-</text><text class="terminal-3187609785-r5" x="36.6" y="654.4" textLength="85.4" clip-path="url(#terminal-3187609785-line-26)">-github</text><text class="terminal-3187609785-r5" x="122" y="654.4" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-3187609785-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-3187609785-line-27)">│</text><text class="terminal-3187609785-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-3187609785-line-27)">-</text><text class="terminal-3187609785-r5" x="36.6" y="678.8" textLength="85.4" clip-path="url(#terminal-3187609785-line-27)">-answer</text><text class="terminal-3187609785-r6" x="280.6" y="678.8" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-3187609785-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-3187609785-line-28)">│</text><text class="terminal-3187609785-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-3187609785-line-28)">-</text><text class="terminal-3187609785-r5" x="36.6" y="703.2" textLength="61" clip-path="url(#terminal-3187609785-line-28)">-help</text><text class="terminal-3187609785-r6" x="280.6" y="703.2" textLength="24.4" clip-path="url(#terminal-31 [...]
-</text><text class="terminal-3187609785-r4" x="0" y="727.6" textLength="1464" clip-path="url(#terminal-3187609785-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3187609785-r2" x="1464" y="727.6" textLength="12.2" clip-path="url(#terminal-3187609785-line-29)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output-prepare-airflow-package.svg b/images/breeze/output-prepare-airflow-package.svg
deleted file mode 100644
index 996151f94c..0000000000
--- a/images/breeze/output-prepare-airflow-package.svg
+++ /dev/null
@@ -1,124 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 440.4" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-2766663456-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-2766663456-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-2766663456-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2766663456-r2 { fill: #c5c8c6 }
-.terminal-2766663456-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2766663456-r4 { fill: #868887 }
-.terminal-2766663456-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2766663456-r6 { fill: #8d7b39 }
-.terminal-2766663456-r7 { fill: #98a84b;font-weight: bold }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-2766663456-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="389.4" />
-    </clipPath>
-    <clipPath id="terminal-2766663456-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2766663456-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2766663456-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2766663456-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2766663456-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2766663456-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2766663456-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2766663456-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2766663456-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2766663456-line-9">
-    <rect x="0" y="221.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2766663456-line-10">
-    <rect x="0" y="245.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2766663456-line-11">
-    <rect x="0" y="269.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2766663456-line-12">
-    <rect x="0" y="294.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2766663456-line-13">
-    <rect x="0" y="318.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2766663456-line-14">
-    <rect x="0" y="343.1" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="438.4" rx="8"/><text class="terminal-2766663456-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;prepare-airflow-package</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#terminal-2766663456-clip-terminal)">
-    
-    <g class="terminal-2766663456-matrix">
-    <text class="terminal-2766663456-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2766663456-line-0)">
-</text><text class="terminal-2766663456-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2766663456-line-1)">Usage:&#160;</text><text class="terminal-2766663456-r1" x="97.6" y="44.4" textLength="488" clip-path="url(#terminal-2766663456-line-1)">breeze&#160;prepare-airflow-package&#160;[OPTIONS]</text><text class="terminal-2766663456-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2766663456-line-1)">
-</text><text class="terminal-2766663456-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2766663456-line-2)">
-</text><text class="terminal-2766663456-r2" x="12.2" y="93.2" textLength="451.4" clip-path="url(#terminal-2766663456-line-3)">Prepare&#160;sdist/whl&#160;package&#160;of&#160;Airflow.</text><text class="terminal-2766663456-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2766663456-line-3)">
-</text><text class="terminal-2766663456-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2766663456-line-4)">
-</text><text class="terminal-2766663456-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2766663456-line-5)">╭─</text><text class="terminal-2766663456-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2766663456-line-5)">&#160;Package&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2766663456-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-276666 [...]
-</text><text class="terminal-2766663456-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2766663456-line-6)">│</text><text class="terminal-2766663456-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2766663456-line-6)">-</text><text class="terminal-2766663456-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-2766663456-line-6)">-package</text><text class="terminal-2766663456-r5" x="134.2" y="166.4" textLength="85.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-2766663456-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2766663456-line-7)">│</text><text class="terminal-2766663456-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2766663456-line-7)">-</text><text class="terminal-2766663456-r5" x="36.6" y="190.8" textLength="97.6" clip-path="url(#terminal-2766663456-line-7)">-version</text><text class="terminal-2766663456-r5" x="134.2" y="190.8" textLength="195.2" clip-path="url(#terminal [...]
-</text><text class="terminal-2766663456-r4" x="0" y="215.2" textLength="1464" clip-path="url(#terminal-2766663456-line-8)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2766663456-r2" x="1464" y="215.2" textLength="12.2" clip-path="url(#terminal-2766663456-line-8)">
-</text><text class="terminal-2766663456-r4" x="0" y="239.6" textLength="24.4" clip-path="url(#terminal-2766663456-line-9)">╭─</text><text class="terminal-2766663456-r4" x="24.4" y="239.6" textLength="1415.2" clip-path="url(#terminal-2766663456-line-9)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2766663456-r4" x="1439.6" y="239.6" textLength="24.4" clip-path="url(#terminal-27666 [...]
-</text><text class="terminal-2766663456-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2766663456-line-10)">│</text><text class="terminal-2766663456-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-2766663456-line-10)">-</text><text class="terminal-2766663456-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-2766663456-line-10)">-verbose</text><text class="terminal-2766663456-r7" x="280.6" y="264" textLength="24.4" clip-path="url(#terminal-27666 [...]
-</text><text class="terminal-2766663456-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2766663456-line-11)">│</text><text class="terminal-2766663456-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2766663456-line-11)">-</text><text class="terminal-2766663456-r5" x="36.6" y="288.4" textLength="48.8" clip-path="url(#terminal-2766663456-line-11)">-dry</text><text class="terminal-2766663456-r5" x="85.4" y="288.4" textLength="48.8" clip-path="url(#terminal-27 [...]
-</text><text class="terminal-2766663456-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2766663456-line-12)">│</text><text class="terminal-2766663456-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2766663456-line-12)">-</text><text class="terminal-2766663456-r5" x="36.6" y="312.8" textLength="85.4" clip-path="url(#terminal-2766663456-line-12)">-github</text><text class="terminal-2766663456-r5" x="122" y="312.8" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-2766663456-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2766663456-line-13)">│</text><text class="terminal-2766663456-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2766663456-line-13)">-</text><text class="terminal-2766663456-r5" x="36.6" y="337.2" textLength="73.2" clip-path="url(#terminal-2766663456-line-13)">-debug</text><text class="terminal-2766663456-r2" x="329.4" y="337.2" textLength="878.4" clip-path="url(#termina [...]
-</text><text class="terminal-2766663456-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2766663456-line-14)">│</text><text class="terminal-2766663456-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2766663456-line-14)">-</text><text class="terminal-2766663456-r5" x="36.6" y="361.6" textLength="61" clip-path="url(#terminal-2766663456-line-14)">-help</text><text class="terminal-2766663456-r7" x="280.6" y="361.6" textLength="24.4" clip-path="url(#terminal-27 [...]
-</text><text class="terminal-2766663456-r4" x="0" y="386" textLength="1464" clip-path="url(#terminal-2766663456-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2766663456-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-2766663456-line-15)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output-prepare-provider-documentation.svg b/images/breeze/output-prepare-provider-documentation.svg
deleted file mode 100644
index 49e1dd54b6..0000000000
--- a/images/breeze/output-prepare-provider-documentation.svg
+++ /dev/null
@@ -1,164 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 684.4" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-2632715719-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-2632715719-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-2632715719-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2632715719-r2 { fill: #c5c8c6 }
-.terminal-2632715719-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2632715719-r4 { fill: #868887 }
-.terminal-2632715719-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2632715719-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2632715719-r7 { fill: #8d7b39 }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-2632715719-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="633.4" />
-    </clipPath>
-    <clipPath id="terminal-2632715719-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-9">
-    <rect x="0" y="221.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-10">
-    <rect x="0" y="245.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-11">
-    <rect x="0" y="269.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-12">
-    <rect x="0" y="294.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-13">
-    <rect x="0" y="318.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-14">
-    <rect x="0" y="343.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-15">
-    <rect x="0" y="367.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-16">
-    <rect x="0" y="391.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-17">
-    <rect x="0" y="416.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-18">
-    <rect x="0" y="440.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-19">
-    <rect x="0" y="465.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-20">
-    <rect x="0" y="489.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-21">
-    <rect x="0" y="513.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-22">
-    <rect x="0" y="538.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-23">
-    <rect x="0" y="562.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2632715719-line-24">
-    <rect x="0" y="587.1" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="682.4" rx="8"/><text class="terminal-2632715719-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;prepare-provider-documentation</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#terminal-2632715719-clip-terminal)">
-    
-    <g class="terminal-2632715719-matrix">
-    <text class="terminal-2632715719-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2632715719-line-0)">
-</text><text class="terminal-2632715719-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2632715719-line-1)">Usage:&#160;</text><text class="terminal-2632715719-r1" x="97.6" y="44.4" textLength="1342" clip-path="url(#terminal-2632715719-line-1)">breeze&#160;prepare-provider-documentation&#160;[OPTIONS]&#160;[airbyte&#160;|&#160;alibaba&#160;|&#160;amazon&#160;|&#160;apache.beam&#160;|&#160;apache.cassandra&#160;|</text><text class="terminal-2632715719-r2" x="1464" y="44.4 [...]
-</text><text class="terminal-2632715719-r1" x="12.2" y="68.8" textLength="1427.4" clip-path="url(#terminal-2632715719-line-2)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;apache.drill&#160;|&#160;apache.druid&#160;|&#160;apache.hdfs&#160;|&#160;apache.hive&#160;|&#1 [...]
-</text><text class="terminal-2632715719-r1" x="12.2" y="93.2" textLength="1415.2" clip-path="url(#terminal-2632715719-line-3)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;apache.livy&#160;|&#160;apache.pig&#160;|&#160;apache.pinot&#160;|&#160;apache.spark&#160;|&#16 [...]
-</text><text class="terminal-2632715719-r1" x="12.2" y="117.6" textLength="1390.8" clip-path="url(#terminal-2632715719-line-4)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;arangodb&#160;|&#160;asana&#160;|&#160;celery&#160;|&#160;cloudant&#160;|&#160;cncf.kubernetes [...]
-</text><text class="terminal-2632715719-r1" x="12.2" y="142" textLength="1366.4" clip-path="url(#terminal-2632715719-line-5)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;datadog&#160;|&#160;dbt.cloud&#160;|&#160;dingding&#160;|&#160;discord&#160;|&#160;docker&#160;| [...]
-</text><text class="terminal-2632715719-r1" x="12.2" y="166.4" textLength="1390.8" clip-path="url(#terminal-2632715719-line-6)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;exasol&#160;|&#160;facebook&#160;|&#160;ftp&#160;|&#160;github&#160;|&#160;google&#160;|&#160; [...]
-</text><text class="terminal-2632715719-r1" x="12.2" y="190.8" textLength="1268.8" clip-path="url(#terminal-2632715719-line-7)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;imap&#160;|&#160;influxdb&#160;|&#160;jdbc&#160;|&#160;jenkins&#160;|&#160;jira&#160;|&#160;mi [...]
-</text><text class="terminal-2632715719-r1" x="12.2" y="215.2" textLength="1378.6" clip-path="url(#terminal-2632715719-line-8)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;microsoft.mssql&#160;|&#160;microsoft.psrp&#160;|&#160;microsoft.winrm&#160;|&#160;mongo&#160; [...]
-</text><text class="terminal-2632715719-r1" x="12.2" y="239.6" textLength="1390.8" clip-path="url(#terminal-2632715719-line-9)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;neo4j&#160;|&#160;odbc&#160;|&#160;openfaas&#160;|&#160;opsgenie&#160;|&#160;oracle&#160;|&#16 [...]
-</text><text class="terminal-2632715719-r1" x="12.2" y="264" textLength="1354.2" clip-path="url(#terminal-2632715719-line-10)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;plexus&#160;|&#160;postgres&#160;|&#160;presto&#160;|&#160;qubole&#160;|&#160;redis&#160;|&#160 [...]
-</text><text class="terminal-2632715719-r1" x="12.2" y="288.4" textLength="1403" clip-path="url(#terminal-2632715719-line-11)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;segment&#160;|&#160;sendgrid&#160;|&#160;sftp&#160;|&#160;singularity&#160;|&#160;slack&#160;|& [...]
-</text><text class="terminal-2632715719-r1" x="12.2" y="312.8" textLength="1342" clip-path="url(#terminal-2632715719-line-12)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ssh&#160;|&#160;tableau&#160;|&#160;telegram&#160;|&#160;trino&#160;|&#160;vertica&#160;|&#160; [...]
-</text><text class="terminal-2632715719-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#terminal-2632715719-line-13)">
-</text><text class="terminal-2632715719-r2" x="12.2" y="361.6" textLength="780.8" clip-path="url(#terminal-2632715719-line-14)">Prepare&#160;CHANGELOG,&#160;README&#160;and&#160;COMMITS&#160;information&#160;for&#160;providers.</text><text class="terminal-2632715719-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-2632715719-line-14)">
-</text><text class="terminal-2632715719-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-2632715719-line-15)">
-</text><text class="terminal-2632715719-r4" x="0" y="410.4" textLength="24.4" clip-path="url(#terminal-2632715719-line-16)">╭─</text><text class="terminal-2632715719-r4" x="24.4" y="410.4" textLength="1415.2" clip-path="url(#terminal-2632715719-line-16)">&#160;Provider&#160;documentation&#160;preparation&#160;flags&#160;──────────────────────────────────────────────────────────────────────────</text><text class="terminal-2632715719-r4" x="1439.6" y="410.4" textLength="24.4" clip-path="ur [...]
-</text><text class="terminal-2632715719-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2632715719-line-17)">│</text><text class="terminal-2632715719-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-2632715719-line-17)">-</text><text class="terminal-2632715719-r5" x="36.6" y="434.8" textLength="73.2" clip-path="url(#terminal-2632715719-line-17)">-debug</text><text class="terminal-2632715719-r2" x="158.6" y="434.8" textLength="878.4" clip-path="url(#termina [...]
-</text><text class="terminal-2632715719-r4" x="0" y="459.2" textLength="1464" clip-path="url(#terminal-2632715719-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2632715719-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#terminal-2632715719-line-18)">
-</text><text class="terminal-2632715719-r4" x="0" y="483.6" textLength="24.4" clip-path="url(#terminal-2632715719-line-19)">╭─</text><text class="terminal-2632715719-r4" x="24.4" y="483.6" textLength="1415.2" clip-path="url(#terminal-2632715719-line-19)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2632715719-r4" x="1439.6" y="483.6" textLength="24.4" clip-path="url(#terminal-263 [...]
-</text><text class="terminal-2632715719-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2632715719-line-20)">│</text><text class="terminal-2632715719-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-2632715719-line-20)">-</text><text class="terminal-2632715719-r5" x="36.6" y="508" textLength="97.6" clip-path="url(#terminal-2632715719-line-20)">-verbose</text><text class="terminal-2632715719-r6" x="280.6" y="508" textLength="24.4" clip-path="url(#terminal-26327 [...]
-</text><text class="terminal-2632715719-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2632715719-line-21)">│</text><text class="terminal-2632715719-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2632715719-line-21)">-</text><text class="terminal-2632715719-r5" x="36.6" y="532.4" textLength="48.8" clip-path="url(#terminal-2632715719-line-21)">-dry</text><text class="terminal-2632715719-r5" x="85.4" y="532.4" textLength="48.8" clip-path="url(#terminal-26 [...]
-</text><text class="terminal-2632715719-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2632715719-line-22)">│</text><text class="terminal-2632715719-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-2632715719-line-22)">-</text><text class="terminal-2632715719-r5" x="36.6" y="556.8" textLength="85.4" clip-path="url(#terminal-2632715719-line-22)">-github</text><text class="terminal-2632715719-r5" x="122" y="556.8" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-2632715719-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2632715719-line-23)">│</text><text class="terminal-2632715719-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-2632715719-line-23)">-</text><text class="terminal-2632715719-r5" x="36.6" y="581.2" textLength="85.4" clip-path="url(#terminal-2632715719-line-23)">-answer</text><text class="terminal-2632715719-r6" x="280.6" y="581.2" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-2632715719-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2632715719-line-24)">│</text><text class="terminal-2632715719-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-2632715719-line-24)">-</text><text class="terminal-2632715719-r5" x="36.6" y="605.6" textLength="61" clip-path="url(#terminal-2632715719-line-24)">-help</text><text class="terminal-2632715719-r6" x="280.6" y="605.6" textLength="24.4" clip-path="url(#terminal-26 [...]
-</text><text class="terminal-2632715719-r4" x="0" y="630" textLength="1464" clip-path="url(#terminal-2632715719-line-25)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2632715719-r2" x="1464" y="630" textLength="12.2" clip-path="url(#terminal-2632715719-line-25)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output-prepare-provider-packages.svg b/images/breeze/output-prepare-provider-packages.svg
deleted file mode 100644
index 1da53c7d56..0000000000
--- a/images/breeze/output-prepare-provider-packages.svg
+++ /dev/null
@@ -1,172 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 733.1999999999999" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-3636495061-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-3636495061-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-3636495061-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-3636495061-r2 { fill: #c5c8c6 }
-.terminal-3636495061-r3 { fill: #d0b344;font-weight: bold }
-.terminal-3636495061-r4 { fill: #868887 }
-.terminal-3636495061-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-3636495061-r6 { fill: #8d7b39 }
-.terminal-3636495061-r7 { fill: #98a84b;font-weight: bold }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-3636495061-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="682.1999999999999" />
-    </clipPath>
-    <clipPath id="terminal-3636495061-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-9">
-    <rect x="0" y="221.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-10">
-    <rect x="0" y="245.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-11">
-    <rect x="0" y="269.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-12">
-    <rect x="0" y="294.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-13">
-    <rect x="0" y="318.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-14">
-    <rect x="0" y="343.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-15">
-    <rect x="0" y="367.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-16">
-    <rect x="0" y="391.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-17">
-    <rect x="0" y="416.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-18">
-    <rect x="0" y="440.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-19">
-    <rect x="0" y="465.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-20">
-    <rect x="0" y="489.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-21">
-    <rect x="0" y="513.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-22">
-    <rect x="0" y="538.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-23">
-    <rect x="0" y="562.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-24">
-    <rect x="0" y="587.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-25">
-    <rect x="0" y="611.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3636495061-line-26">
-    <rect x="0" y="635.9" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="731.2" rx="8"/><text class="terminal-3636495061-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;prepare-provider-packages</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#terminal-3636495061-clip-terminal)">
-    
-    <g class="terminal-3636495061-matrix">
-    <text class="terminal-3636495061-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3636495061-line-0)">
-</text><text class="terminal-3636495061-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3636495061-line-1)">Usage:&#160;</text><text class="terminal-3636495061-r1" x="97.6" y="44.4" textLength="1281" clip-path="url(#terminal-3636495061-line-1)">breeze&#160;prepare-provider-packages&#160;[OPTIONS]&#160;[airbyte&#160;|&#160;alibaba&#160;|&#160;amazon&#160;|&#160;apache.beam&#160;|&#160;apache.cassandra&#160;|</text><text class="terminal-3636495061-r2" x="1464" y="44.4" tex [...]
-</text><text class="terminal-3636495061-r1" x="12.2" y="68.8" textLength="1366.4" clip-path="url(#terminal-3636495061-line-2)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;apache.drill&#160;|&#160;apache.druid&#160;|&#160;apache.hdfs&#160;|&#160;apache.hive&#160;|&#160;apache.kylin&#160;|</text>< [...]
-</text><text class="terminal-3636495061-r1" x="12.2" y="93.2" textLength="1354.2" clip-path="url(#terminal-3636495061-line-3)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;apache.livy&#160;|&#160;apache.pig&#160;|&#160;apache.pinot&#160;|&#160;apache.spark&#160;|&#160;apache.sqoop&#160;|</text><t [...]
-</text><text class="terminal-3636495061-r1" x="12.2" y="117.6" textLength="1427.4" clip-path="url(#terminal-3636495061-line-4)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;arangodb&#160;|&#160;asana&#160;|&#160;celery&#160;|&#160;cloudant&#160;|&#160;cncf.kubernetes&#160;|&#160;databricks&#160;| [...]
-</text><text class="terminal-3636495061-r1" x="12.2" y="142" textLength="1427.4" clip-path="url(#terminal-3636495061-line-5)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;dbt.cloud&#160;|&#160;dingding&#160;|&#160;discord&#160;|&#160;docker&#160;|&#160;elasticsearch&#160;|&#160;exasol&#160 [...]
-</text><text class="terminal-3636495061-r1" x="12.2" y="166.4" textLength="1415.2" clip-path="url(#terminal-3636495061-line-6)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;ftp&#160;|&#160;github&#160;|&#160;google&#160;|&#160;grpc&#160;|&#160;hashicorp&#160;|&#160;http&#160;|&#160;imap&#1 [...]
-</text><text class="terminal-3636495061-r1" x="12.2" y="190.8" textLength="1329.8" clip-path="url(#terminal-3636495061-line-7)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;jenkins&#160;|&#160;jira&#160;|&#160;microsoft.azure&#160;|&#160;microsoft.mssql&#160;|&#160;microsoft.psrp&#160;|</text><te [...]
-</text><text class="terminal-3636495061-r1" x="12.2" y="215.2" textLength="1427.4" clip-path="url(#terminal-3636495061-line-8)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;microsoft.winrm&#160;|&#160;mongo&#160;|&#160;mysql&#160;|&#160;neo4j&#160;|&#160;odbc&#160;|&#160;openfaas&#160;|&#160;opsg [...]
-</text><text class="terminal-3636495061-r1" x="12.2" y="239.6" textLength="1354.2" clip-path="url(#terminal-3636495061-line-9)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;pagerduty&#160;|&#160;papermill&#160;|&#160;plexus&#160;|&#160;postgres&#160;|&#160;presto&#160;|&#160;qubole&#160;|& [...]
-</text><text class="terminal-3636495061-r1" x="12.2" y="264" textLength="1342" clip-path="url(#terminal-3636495061-line-10)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;salesforce&#160;|&#160;samba&#160;|&#160;segment&#160;|&#160;sendgrid&#160;|&#160;sftp&#160;|&#160;singularity&#160;|&#160;slac [...]
-</text><text class="terminal-3636495061-r1" x="12.2" y="288.4" textLength="1390.8" clip-path="url(#terminal-3636495061-line-11)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;snowflake&#160;|&#160;sqlite&#160;|&#160;ssh&#160;|&#160;tableau&#160;|&#160;telegram&#160;|&#160;trino&#160;|&#160;vertica [...]
-</text><text class="terminal-3636495061-r1" x="12.2" y="312.8" textLength="622.2" clip-path="url(#terminal-3636495061-line-12)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;zendesk]...</text><text class="terminal-3636495061-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#terminal-3636495 [...]
-</text><text class="terminal-3636495061-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#terminal-3636495061-line-13)">
-</text><text class="terminal-3636495061-r2" x="12.2" y="361.6" textLength="585.6" clip-path="url(#terminal-3636495061-line-14)">Prepare&#160;sdist/whl&#160;packages&#160;of&#160;Airflow&#160;Providers.</text><text class="terminal-3636495061-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-3636495061-line-14)">
-</text><text class="terminal-3636495061-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-3636495061-line-15)">
-</text><text class="terminal-3636495061-r4" x="0" y="410.4" textLength="24.4" clip-path="url(#terminal-3636495061-line-16)">╭─</text><text class="terminal-3636495061-r4" x="24.4" y="410.4" textLength="1415.2" clip-path="url(#terminal-3636495061-line-16)">&#160;Package&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3636495061-r4" x="1439.6" y="410.4" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-3636495061-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3636495061-line-17)">│</text><text class="terminal-3636495061-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-3636495061-line-17)">-</text><text class="terminal-3636495061-r5" x="36.6" y="434.8" textLength="97.6" clip-path="url(#terminal-3636495061-line-17)">-package</text><text class="terminal-3636495061-r5" x="134.2" y="434.8" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-3636495061-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-3636495061-line-18)">│</text><text class="terminal-3636495061-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-3636495061-line-18)">-</text><text class="terminal-3636495061-r5" x="36.6" y="459.2" textLength="97.6" clip-path="url(#terminal-3636495061-line-18)">-version</text><text class="terminal-3636495061-r5" x="134.2" y="459.2" textLength="195.2" clip-path="url(#termi [...]
-</text><text class="terminal-3636495061-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3636495061-line-19)">│</text><text class="terminal-3636495061-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-3636495061-line-19)">-</text><text class="terminal-3636495061-r5" x="36.6" y="483.6" textLength="97.6" clip-path="url(#terminal-3636495061-line-19)">-package</text><text class="terminal-3636495061-r5" x="134.2" y="483.6" textLength="122" clip-path="url(#termina [...]
-</text><text class="terminal-3636495061-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3636495061-line-20)">│</text><text class="terminal-3636495061-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-3636495061-line-20)">-</text><text class="terminal-3636495061-r5" x="36.6" y="508" textLength="73.2" clip-path="url(#terminal-3636495061-line-20)">-debug</text><text class="terminal-3636495061-r2" x="378.2" y="508" textLength="878.4" clip-path="url(#terminal-363649 [...]
-</text><text class="terminal-3636495061-r4" x="0" y="532.4" textLength="1464" clip-path="url(#terminal-3636495061-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3636495061-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#terminal-3636495061-line-21)">
-</text><text class="terminal-3636495061-r4" x="0" y="556.8" textLength="24.4" clip-path="url(#terminal-3636495061-line-22)">╭─</text><text class="terminal-3636495061-r4" x="24.4" y="556.8" textLength="1415.2" clip-path="url(#terminal-3636495061-line-22)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3636495061-r4" x="1439.6" y="556.8" textLength="24.4" clip-path="url(#terminal-363 [...]
-</text><text class="terminal-3636495061-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3636495061-line-23)">│</text><text class="terminal-3636495061-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-3636495061-line-23)">-</text><text class="terminal-3636495061-r5" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-3636495061-line-23)">-verbose</text><text class="terminal-3636495061-r7" x="280.6" y="581.2" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-3636495061-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3636495061-line-24)">│</text><text class="terminal-3636495061-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-3636495061-line-24)">-</text><text class="terminal-3636495061-r5" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-3636495061-line-24)">-dry</text><text class="terminal-3636495061-r5" x="85.4" y="605.6" textLength="48.8" clip-path="url(#terminal-36 [...]
-</text><text class="terminal-3636495061-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3636495061-line-25)">│</text><text class="terminal-3636495061-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-3636495061-line-25)">-</text><text class="terminal-3636495061-r5" x="36.6" y="630" textLength="85.4" clip-path="url(#terminal-3636495061-line-25)">-github</text><text class="terminal-3636495061-r5" x="122" y="630" textLength="134.2" clip-path="url(#terminal-3636495 [...]
-</text><text class="terminal-3636495061-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3636495061-line-26)">│</text><text class="terminal-3636495061-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-3636495061-line-26)">-</text><text class="terminal-3636495061-r5" x="36.6" y="654.4" textLength="61" clip-path="url(#terminal-3636495061-line-26)">-help</text><text class="terminal-3636495061-r7" x="280.6" y="654.4" textLength="24.4" clip-path="url(#terminal-36 [...]
-</text><text class="terminal-3636495061-r4" x="0" y="678.8" textLength="1464" clip-path="url(#terminal-3636495061-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3636495061-r2" x="1464" y="678.8" textLength="12.2" clip-path="url(#terminal-3636495061-line-27)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output-pull-image.svg b/images/breeze/output-pull-image.svg
deleted file mode 100644
index 7ebae02e45..0000000000
--- a/images/breeze/output-pull-image.svg
+++ /dev/null
@@ -1,174 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 733.1999999999999" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-668722442-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-668722442-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-668722442-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-668722442-r2 { fill: #c5c8c6 }
-.terminal-668722442-r3 { fill: #d0b344;font-weight: bold }
-.terminal-668722442-r4 { fill: #868887 }
-.terminal-668722442-r5 { fill: #cc555a }
-.terminal-668722442-r6 { fill: #68a0b3;font-weight: bold }
-.terminal-668722442-r7 { fill: #98a84b;font-weight: bold }
-.terminal-668722442-r8 { fill: #8d7b39 }
-.terminal-668722442-r9 { fill: #8a4346 }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-668722442-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="682.1999999999999" />
-    </clipPath>
-    <clipPath id="terminal-668722442-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-9">
-    <rect x="0" y="221.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-10">
-    <rect x="0" y="245.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-11">
-    <rect x="0" y="269.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-12">
-    <rect x="0" y="294.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-13">
-    <rect x="0" y="318.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-14">
-    <rect x="0" y="343.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-15">
-    <rect x="0" y="367.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-16">
-    <rect x="0" y="391.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-17">
-    <rect x="0" y="416.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-18">
-    <rect x="0" y="440.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-19">
-    <rect x="0" y="465.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-20">
-    <rect x="0" y="489.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-21">
-    <rect x="0" y="513.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-22">
-    <rect x="0" y="538.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-23">
-    <rect x="0" y="562.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-24">
-    <rect x="0" y="587.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-25">
-    <rect x="0" y="611.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-668722442-line-26">
-    <rect x="0" y="635.9" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="731.2" rx="8"/><text class="terminal-668722442-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;pull-image</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#terminal-668722442-clip-terminal)">
-    
-    <g class="terminal-668722442-matrix">
-    <text class="terminal-668722442-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-668722442-line-0)">
-</text><text class="terminal-668722442-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-668722442-line-1)">Usage:&#160;</text><text class="terminal-668722442-r1" x="97.6" y="44.4" textLength="610" clip-path="url(#terminal-668722442-line-1)">breeze&#160;pull-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-668722442-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-668722442-line-1)">
-</text><text class="terminal-668722442-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-668722442-line-2)">
-</text><text class="terminal-668722442-r2" x="12.2" y="93.2" textLength="1024.8" clip-path="url(#terminal-668722442-line-3)">Pull&#160;and&#160;optionally&#160;verify&#160;CI&#160;images&#160;-&#160;possibly&#160;in&#160;parallel&#160;for&#160;all&#160;Python&#160;versions.</text><text class="terminal-668722442-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-668722442-line-3)">
-</text><text class="terminal-668722442-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-668722442-line-4)">
-</text><text class="terminal-668722442-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-668722442-line-5)">╭─</text><text class="terminal-668722442-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-668722442-line-5)">&#160;Pull&#160;image&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-668722442-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-668722 [...]
-</text><text class="terminal-668722442-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-668722442-line-6)">│</text><text class="terminal-668722442-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-668722442-line-6)">*</text><text class="terminal-668722442-r6" x="61" y="166.4" textLength="12.2" clip-path="url(#terminal-668722442-line-6)">-</text><text class="terminal-668722442-r6" x="73.2" y="166.4" textLength="73.2" clip-path="url(#terminal-668722442-line-6) [...]
-</text><text class="terminal-668722442-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-668722442-line-7)">│</text><text class="terminal-668722442-r6" x="61" y="190.8" textLength="12.2" clip-path="url(#terminal-668722442-line-7)">-</text><text class="terminal-668722442-r6" x="73.2" y="190.8" textLength="85.4" clip-path="url(#terminal-668722442-line-7)">-python</text><text class="terminal-668722442-r7" x="280.6" y="190.8" textLength="24.4" clip-path="url(#terminal-668722442- [...]
-</text><text class="terminal-668722442-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-668722442-line-8)">│</text><text class="terminal-668722442-r4" x="329.4" y="215.2" textLength="732" clip-path="url(#terminal-668722442-line-8)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-668722442-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-668722442-line-9)">│</text><text class="terminal-668722442-r6" x="61" y="239.6" textLength="12.2" clip-path="url(#terminal-668722442-line-9)">-</text><text class="terminal-668722442-r6" x="73.2" y="239.6" textLength="85.4" clip-path="url(#terminal-668722442-line-9)">-github</text><text class="terminal-668722442-r6" x="158.6" y="239.6" textLength="73.2" clip-path="url(#terminal-668722442- [...]
-</text><text class="terminal-668722442-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-668722442-line-10)">│</text><text class="terminal-668722442-r6" x="61" y="264" textLength="12.2" clip-path="url(#terminal-668722442-line-10)">-</text><text class="terminal-668722442-r6" x="73.2" y="264" textLength="85.4" clip-path="url(#terminal-668722442-line-10)">-verify</text><text class="terminal-668722442-r6" x="158.6" y="264" textLength="73.2" clip-path="url(#terminal-668722442-line- [...]
-</text><text class="terminal-668722442-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-668722442-line-11)">│</text><text class="terminal-668722442-r6" x="61" y="288.4" textLength="12.2" clip-path="url(#terminal-668722442-line-11)">-</text><text class="terminal-668722442-r6" x="73.2" y="288.4" textLength="61" clip-path="url(#terminal-668722442-line-11)">-wait</text><text class="terminal-668722442-r6" x="134.2" y="288.4" textLength="122" clip-path="url(#terminal-668722442-li [...]
-</text><text class="terminal-668722442-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-668722442-line-12)">│</text><text class="terminal-668722442-r6" x="61" y="312.8" textLength="12.2" clip-path="url(#terminal-668722442-line-12)">-</text><text class="terminal-668722442-r6" x="73.2" y="312.8" textLength="48.8" clip-path="url(#terminal-668722442-line-12)">-tag</text><text class="terminal-668722442-r6" x="122" y="312.8" textLength="122" clip-path="url(#terminal-668722442-lin [...]
-</text><text class="terminal-668722442-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-668722442-line-13)">│</text><text class="terminal-668722442-r2" x="329.4" y="337.2" textLength="305" clip-path="url(#terminal-668722442-line-13)">build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-668722442-r6" x="634.4" y="337.2" textLength="12.2" clip-path="url(#terminal-668722442-line-13)">-</text><text class="terminal-668722442-r6" x="646.6" y="337.2" text [...]
-</text><text class="terminal-668722442-r4" x="0" y="361.6" textLength="1464" clip-path="url(#terminal-668722442-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-668722442-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-668722442-line-14)">
-</text><text class="terminal-668722442-r4" x="0" y="386" textLength="24.4" clip-path="url(#terminal-668722442-line-15)">╭─</text><text class="terminal-668722442-r4" x="24.4" y="386" textLength="1415.2" clip-path="url(#terminal-668722442-line-15)">&#160;Parallel&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-668722442-r4" x="1439.6" y="386" textLength="24.4" clip-path="url(#terminal-668722442 [...]
-</text><text class="terminal-668722442-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-668722442-line-16)">│</text><text class="terminal-668722442-r6" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-668722442-line-16)">-</text><text class="terminal-668722442-r6" x="36.6" y="410.4" textLength="48.8" clip-path="url(#terminal-668722442-line-16)">-run</text><text class="terminal-668722442-r6" x="85.4" y="410.4" textLength="146.4" clip-path="url(#terminal-66872244 [...]
-</text><text class="terminal-668722442-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-668722442-line-17)">│</text><text class="terminal-668722442-r6" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-668722442-line-17)">-</text><text class="terminal-668722442-r6" x="36.6" y="434.8" textLength="146.4" clip-path="url(#terminal-668722442-line-17)">-parallelism</text><text class="terminal-668722442-r2" x="280.6" y="434.8" textLength="915" clip-path="url(#terminal- [...]
-</text><text class="terminal-668722442-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-668722442-line-18)">│</text><text class="terminal-668722442-r4" x="280.6" y="459.2" textLength="915" clip-path="url(#terminal-668722442-line-18)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="terminal-668722442-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-668722442-line-19)">│</text><text class="terminal-668722442-r6" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-668722442-line-19)">-</text><text class="terminal-668722442-r6" x="36.6" y="483.6" textLength="85.4" clip-path="url(#terminal-668722442-line-19)">-python</text><text class="terminal-668722442-r6" x="122" y="483.6" textLength="109.8" clip-path="url(#terminal-668722 [...]
-</text><text class="terminal-668722442-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-668722442-line-20)">│</text><text class="terminal-668722442-r4" x="280.6" y="508" textLength="951.6" clip-path="url(#terminal-668722442-line-20)">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-668722442-r4" x="0" y="532.4" textLength="1464" clip-path="url(#terminal-668722442-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-668722442-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#terminal-668722442-line-21)">
-</text><text class="terminal-668722442-r4" x="0" y="556.8" textLength="24.4" clip-path="url(#terminal-668722442-line-22)">╭─</text><text class="terminal-668722442-r4" x="24.4" y="556.8" textLength="1415.2" clip-path="url(#terminal-668722442-line-22)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-668722442-r4" x="1439.6" y="556.8" textLength="24.4" clip-path="url(#terminal-66872244 [...]
-</text><text class="terminal-668722442-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-668722442-line-23)">│</text><text class="terminal-668722442-r6" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-668722442-line-23)">-</text><text class="terminal-668722442-r6" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-668722442-line-23)">-verbose</text><text class="terminal-668722442-r7" x="280.6" y="581.2" textLength="24.4" clip-path="url(#terminal-6687 [...]
-</text><text class="terminal-668722442-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-668722442-line-24)">│</text><text class="terminal-668722442-r6" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-668722442-line-24)">-</text><text class="terminal-668722442-r6" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-668722442-line-24)">-dry</text><text class="terminal-668722442-r6" x="85.4" y="605.6" textLength="48.8" clip-path="url(#terminal-668722442 [...]
-</text><text class="terminal-668722442-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-668722442-line-25)">│</text><text class="terminal-668722442-r6" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-668722442-line-25)">-</text><text class="terminal-668722442-r6" x="36.6" y="630" textLength="85.4" clip-path="url(#terminal-668722442-line-25)">-github</text><text class="terminal-668722442-r6" x="122" y="630" textLength="134.2" clip-path="url(#terminal-668722442-line [...]
-</text><text class="terminal-668722442-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-668722442-line-26)">│</text><text class="terminal-668722442-r6" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-668722442-line-26)">-</text><text class="terminal-668722442-r6" x="36.6" y="654.4" textLength="61" clip-path="url(#terminal-668722442-line-26)">-help</text><text class="terminal-668722442-r7" x="280.6" y="654.4" textLength="24.4" clip-path="url(#terminal-668722442 [...]
-</text><text class="terminal-668722442-r4" x="0" y="678.8" textLength="1464" clip-path="url(#terminal-668722442-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-668722442-r2" x="1464" y="678.8" textLength="12.2" clip-path="url(#terminal-668722442-line-27)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output-pull-prod-image.svg b/images/breeze/output-pull-prod-image.svg
deleted file mode 100644
index 6cb1051d80..0000000000
--- a/images/breeze/output-pull-prod-image.svg
+++ /dev/null
@@ -1,174 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 733.1999999999999" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-1189735113-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-1189735113-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-1189735113-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1189735113-r2 { fill: #c5c8c6 }
-.terminal-1189735113-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1189735113-r4 { fill: #868887 }
-.terminal-1189735113-r5 { fill: #cc555a }
-.terminal-1189735113-r6 { fill: #68a0b3;font-weight: bold }
-.terminal-1189735113-r7 { fill: #98a84b;font-weight: bold }
-.terminal-1189735113-r8 { fill: #8d7b39 }
-.terminal-1189735113-r9 { fill: #8a4346 }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-1189735113-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="682.1999999999999" />
-    </clipPath>
-    <clipPath id="terminal-1189735113-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-9">
-    <rect x="0" y="221.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-10">
-    <rect x="0" y="245.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-11">
-    <rect x="0" y="269.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-12">
-    <rect x="0" y="294.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-13">
-    <rect x="0" y="318.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-14">
-    <rect x="0" y="343.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-15">
-    <rect x="0" y="367.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-16">
-    <rect x="0" y="391.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-17">
-    <rect x="0" y="416.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-18">
-    <rect x="0" y="440.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-19">
-    <rect x="0" y="465.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-20">
-    <rect x="0" y="489.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-21">
-    <rect x="0" y="513.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-22">
-    <rect x="0" y="538.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-23">
-    <rect x="0" y="562.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-24">
-    <rect x="0" y="587.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-25">
-    <rect x="0" y="611.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1189735113-line-26">
-    <rect x="0" y="635.9" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="731.2" rx="8"/><text class="terminal-1189735113-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;pull-prod-image</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#terminal-1189735113-clip-terminal)">
-    
-    <g class="terminal-1189735113-matrix">
-    <text class="terminal-1189735113-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1189735113-line-0)">
-</text><text class="terminal-1189735113-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1189735113-line-1)">Usage:&#160;</text><text class="terminal-1189735113-r1" x="97.6" y="44.4" textLength="671" clip-path="url(#terminal-1189735113-line-1)">breeze&#160;pull-prod-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-1189735113-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-1)">
-</text><text class="terminal-1189735113-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1189735113-line-2)">
-</text><text class="terminal-1189735113-r2" x="12.2" y="93.2" textLength="1122.4" clip-path="url(#terminal-1189735113-line-3)">Pull&#160;and&#160;optionally&#160;verify&#160;Production&#160;images&#160;-&#160;possibly&#160;in&#160;parallel&#160;for&#160;all&#160;Python&#160;versions.</text><text class="terminal-1189735113-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1189735113-line-3)">
-</text><text class="terminal-1189735113-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1189735113-line-4)">
-</text><text class="terminal-1189735113-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1189735113-line-5)">╭─</text><text class="terminal-1189735113-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1189735113-line-5)">&#160;Pull&#160;image&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1189735113-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1189735113-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-6)">│</text><text class="terminal-1189735113-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-6)">*</text><text class="terminal-1189735113-r6" x="61" y="166.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-6)">-</text><text class="terminal-1189735113-r6" x="73.2" y="166.4" textLength="73.2" clip-path="url(#terminal-1189735113 [...]
-</text><text class="terminal-1189735113-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1189735113-line-7)">│</text><text class="terminal-1189735113-r6" x="61" y="190.8" textLength="12.2" clip-path="url(#terminal-1189735113-line-7)">-</text><text class="terminal-1189735113-r6" x="73.2" y="190.8" textLength="85.4" clip-path="url(#terminal-1189735113-line-7)">-python</text><text class="terminal-1189735113-r7" x="280.6" y="190.8" textLength="24.4" clip-path="url(#terminal-118 [...]
-</text><text class="terminal-1189735113-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1189735113-line-8)">│</text><text class="terminal-1189735113-r4" x="329.4" y="215.2" textLength="732" clip-path="url(#terminal-1189735113-line-8)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-1189735113-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1189735113-line-9)">│</text><text class="terminal-1189735113-r6" x="61" y="239.6" textLength="12.2" clip-path="url(#terminal-1189735113-line-9)">-</text><text class="terminal-1189735113-r6" x="73.2" y="239.6" textLength="85.4" clip-path="url(#terminal-1189735113-line-9)">-github</text><text class="terminal-1189735113-r6" x="158.6" y="239.6" textLength="73.2" clip-path="url(#terminal-118 [...]
-</text><text class="terminal-1189735113-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1189735113-line-10)">│</text><text class="terminal-1189735113-r6" x="61" y="264" textLength="12.2" clip-path="url(#terminal-1189735113-line-10)">-</text><text class="terminal-1189735113-r6" x="73.2" y="264" textLength="85.4" clip-path="url(#terminal-1189735113-line-10)">-verify</text><text class="terminal-1189735113-r6" x="158.6" y="264" textLength="73.2" clip-path="url(#terminal-11897351 [...]
-</text><text class="terminal-1189735113-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-11)">│</text><text class="terminal-1189735113-r6" x="61" y="288.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-11)">-</text><text class="terminal-1189735113-r6" x="73.2" y="288.4" textLength="61" clip-path="url(#terminal-1189735113-line-11)">-wait</text><text class="terminal-1189735113-r6" x="134.2" y="288.4" textLength="122" clip-path="url(#terminal-11897 [...]
-</text><text class="terminal-1189735113-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1189735113-line-12)">│</text><text class="terminal-1189735113-r6" x="61" y="312.8" textLength="12.2" clip-path="url(#terminal-1189735113-line-12)">-</text><text class="terminal-1189735113-r6" x="73.2" y="312.8" textLength="48.8" clip-path="url(#terminal-1189735113-line-12)">-tag</text><text class="terminal-1189735113-r6" x="122" y="312.8" textLength="122" clip-path="url(#terminal-118973 [...]
-</text><text class="terminal-1189735113-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1189735113-line-13)">│</text><text class="terminal-1189735113-r2" x="329.4" y="337.2" textLength="305" clip-path="url(#terminal-1189735113-line-13)">build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-1189735113-r6" x="634.4" y="337.2" textLength="12.2" clip-path="url(#terminal-1189735113-line-13)">-</text><text class="terminal-1189735113-r6" x="646.6" y="337. [...]
-</text><text class="terminal-1189735113-r4" x="0" y="361.6" textLength="1464" clip-path="url(#terminal-1189735113-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1189735113-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-1189735113-line-14)">
-</text><text class="terminal-1189735113-r4" x="0" y="386" textLength="24.4" clip-path="url(#terminal-1189735113-line-15)">╭─</text><text class="terminal-1189735113-r4" x="24.4" y="386" textLength="1415.2" clip-path="url(#terminal-1189735113-line-15)">&#160;Parallel&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1189735113-r4" x="1439.6" y="386" textLength="24.4" clip-path="url(#terminal-1189 [...]
-</text><text class="terminal-1189735113-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-16)">│</text><text class="terminal-1189735113-r6" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-16)">-</text><text class="terminal-1189735113-r6" x="36.6" y="410.4" textLength="48.8" clip-path="url(#terminal-1189735113-line-16)">-run</text><text class="terminal-1189735113-r6" x="85.4" y="410.4" textLength="146.4" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1189735113-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1189735113-line-17)">│</text><text class="terminal-1189735113-r6" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1189735113-line-17)">-</text><text class="terminal-1189735113-r6" x="36.6" y="434.8" textLength="146.4" clip-path="url(#terminal-1189735113-line-17)">-parallelism</text><text class="terminal-1189735113-r2" x="280.6" y="434.8" textLength="915" clip-path="url(#te [...]
-</text><text class="terminal-1189735113-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1189735113-line-18)">│</text><text class="terminal-1189735113-r4" x="280.6" y="459.2" textLength="915" clip-path="url(#terminal-1189735113-line-18)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-1189735113-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1189735113-line-19)">│</text><text class="terminal-1189735113-r6" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1189735113-line-19)">-</text><text class="terminal-1189735113-r6" x="36.6" y="483.6" textLength="85.4" clip-path="url(#terminal-1189735113-line-19)">-python</text><text class="terminal-1189735113-r6" x="122" y="483.6" textLength="109.8" clip-path="url(#terminal [...]
-</text><text class="terminal-1189735113-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-1189735113-line-20)">│</text><text class="terminal-1189735113-r4" x="280.6" y="508" textLength="951.6" clip-path="url(#terminal-1189735113-line-20)">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="terminal-1189735113-r4" x="0" y="532.4" textLength="1464" clip-path="url(#terminal-1189735113-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1189735113-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-21)">
-</text><text class="terminal-1189735113-r4" x="0" y="556.8" textLength="24.4" clip-path="url(#terminal-1189735113-line-22)">╭─</text><text class="terminal-1189735113-r4" x="24.4" y="556.8" textLength="1415.2" clip-path="url(#terminal-1189735113-line-22)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1189735113-r4" x="1439.6" y="556.8" textLength="24.4" clip-path="url(#terminal-118 [...]
-</text><text class="terminal-1189735113-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1189735113-line-23)">│</text><text class="terminal-1189735113-r6" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-1189735113-line-23)">-</text><text class="terminal-1189735113-r6" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-1189735113-line-23)">-verbose</text><text class="terminal-1189735113-r7" x="280.6" y="581.2" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-1189735113-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1189735113-line-24)">│</text><text class="terminal-1189735113-r6" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-1189735113-line-24)">-</text><text class="terminal-1189735113-r6" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-1189735113-line-24)">-dry</text><text class="terminal-1189735113-r6" x="85.4" y="605.6" textLength="48.8" clip-path="url(#terminal-11 [...]
-</text><text class="terminal-1189735113-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1189735113-line-25)">│</text><text class="terminal-1189735113-r6" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-1189735113-line-25)">-</text><text class="terminal-1189735113-r6" x="36.6" y="630" textLength="85.4" clip-path="url(#terminal-1189735113-line-25)">-github</text><text class="terminal-1189735113-r6" x="122" y="630" textLength="134.2" clip-path="url(#terminal-1189735 [...]
-</text><text class="terminal-1189735113-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-26)">│</text><text class="terminal-1189735113-r6" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-26)">-</text><text class="terminal-1189735113-r6" x="36.6" y="654.4" textLength="61" clip-path="url(#terminal-1189735113-line-26)">-help</text><text class="terminal-1189735113-r7" x="280.6" y="654.4" textLength="24.4" clip-path="url(#terminal-11 [...]
-</text><text class="terminal-1189735113-r4" x="0" y="678.8" textLength="1464" clip-path="url(#terminal-1189735113-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1189735113-r2" x="1464" y="678.8" textLength="12.2" clip-path="url(#terminal-1189735113-line-27)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output-regenerate-command-images.svg b/images/breeze/output-regenerate-command-images.svg
deleted file mode 100644
index 0842e64fa1..0000000000
--- a/images/breeze/output-regenerate-command-images.svg
+++ /dev/null
@@ -1,99 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 294.0" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-311465089-matrix {
-        font-family: Fira Code, monospace;
... 8611 lines suppressed ...