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/07/19 21:24:59 UTC

[airflow] 01/01: Move javascript compilation to host

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

potiuk pushed a commit to branch simplify-www-asset-compilation
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit d524989ec73768951117a9cbd4c57f450ff97eab
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Tue Jul 19 19:11:16 2022 +0200

    Move javascript compilation to host
    
    Previously, in order to keep consistent development environment
    we've compiled javascript in the CI image. However we can utilise
    power of pre-commmit for setting the node environment for all
    contributors automatically. Instead of compiling the javascript
    in the image, we can compile it via pre-commit in the host.
    
    This can be done thanks to the new python breeze which is far more
    flexible and can now add execution of compilation of the javascript when
    needed and using pre-commit environments.
    
    Thanks to that, we can vastly simplify the Dockerfiles and scripts that
    are used to automatically build or signal that the assets need
    recompilation. We can basically assume that the assets were prepared
    outside of the image building (and breeze makes sure it happens)
    
    The changes:
    
    * node.js is not needed in images (neither PROD build nor CI)
    * no need for multiple asset compilation scripts. All is done
      via pre-commit environment with `breeze compile-www-assets``
      command
    * lint checks for UI do not need the docker image any more
    * no more checks/warnings when you enter the image
    * start-airflow command builds the compilation before entering
    * prepare-airflow-package runs asset compilation before entering
      docker airflow building.
---
 .github/boring-cyborg.yml                          |   1 -
 .gitignore                                         |   2 +-
 .pre-commit-config.yaml                            |  55 +--
 BREEZE.rst                                         |  20 +-
 CONTRIBUTING.rst                                   |  21 --
 Dockerfile                                         | 128 +------
 Dockerfile.ci                                      | 133 +------
 STATIC_CODE_CHECKS.rst                             |   4 +-
 airflow/www/ask_for_recompile_assets_if_needed.sh  |  56 ---
 breeze-legacy                                      |   8 -
 dev/README_RELEASE_AIRFLOW.md                      |   2 +-
 .../airflow_breeze/commands/developer_commands.py  |  23 ++
 .../commands/release_management_commands.py        |   3 +-
 dev/breeze/src/airflow_breeze/global_constants.py  |   8 -
 .../src/airflow_breeze/params/build_prod_params.py |  10 -
 dev/breeze/src/airflow_breeze/pre_commit_ids.py    |   1 +
 dev/breeze/src/airflow_breeze/utils/run_utils.py   |  31 ++
 docs/docker-stack/build-arg-ref.rst                |  10 -
 images/breeze/output-commands-hash.txt             |   3 +-
 images/breeze/output-commands.svg                  | 392 +++++++++++----------
 images/breeze/output-compile-www-assets.svg        |  99 ++++++
 images/breeze/output-static-checks.svg             | 228 ++++++------
 scripts/ci/libraries/_initialization.sh            |  28 --
 .../ci/pre_commit/pre_commit_compile_www_assets.py |  28 +-
 scripts/ci/pre_commit/pre_commit_ui_lint.py        |  40 +--
 scripts/ci/pre_commit/pre_commit_www_lint.py       |  41 +--
 scripts/docker/compile_www_assets.sh               |  71 ----
 scripts/docker/entrypoint_ci.sh                    |   5 -
 scripts/docker/prepare_node_modules.sh             |  52 ---
 .../in_container/run_prepare_airflow_packages.sh   |   2 +-
 30 files changed, 553 insertions(+), 952 deletions(-)

diff --git a/.github/boring-cyborg.yml b/.github/boring-cyborg.yml
index e8ae68f971..e3e27e811b 100644
--- a/.github/boring-cyborg.yml
+++ b/.github/boring-cyborg.yml
@@ -119,7 +119,6 @@ labelPRBasedOnFilePath:
     - airflow/www/.eslintrc
     - airflow/www/.stylelintignore
     - airflow/www/.stylelintrc
-    - airflow/www/compile_assets.sh
     - airflow/www/package.json
     - airflow/www/webpack.config.js
     - airflow/www/yarn.lock
diff --git a/.gitignore b/.gitignore
index b9de02c90e..08f2692b28 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,7 +13,7 @@ unittests.db
 # Airflow temporary artifacts
 airflow/git_version
 airflow/www/static/coverage/
-airflow/www/static/dist
+airflow/www/*.log
 
 /logs/
 airflow-webserver.pid
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 9d80c2cfec..36bf483235 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -65,7 +65,7 @@ repos:
       - id: insert-license
         name: Add license for all CSS/JS/PUML/TS/TSX files
         files: \.(css|js|puml|ts|tsx|jsx)$
-        exclude: ^\.github/.*$|^airflow/_vendor/
+        exclude: ^\.github/.*$|^airflow/_vendor/|^airflow/www/static/dist/
         args:
           - --comment-style
           - "/*!| *| */"
@@ -180,10 +180,10 @@ repos:
         name: Detect if private key is added to the repository
       - id: end-of-file-fixer
         name: Make sure that there is an empty line at the end
-        exclude: ^airflow/_vendor/
+        exclude: ^airflow/_vendor/|^airflow/www/static/dist/
       - id: mixed-line-ending
         name: Detect if mixed line ending is used (\r vs. \r\n)
-        exclude: ^airflow/_vendor/
+        exclude: ^airflow/_vendor/|^airflow/www/static/dist/
       - id: check-executables-have-shebangs
         name: Check that executables have shebang
         exclude: ^airflow/_vendor/
@@ -192,7 +192,7 @@ repos:
         exclude: ^airflow/_vendor/
       - id: trailing-whitespace
         name: Remove trailing whitespace at end of line
-        exclude: ^airflow/_vendor/|^images/breeze/output.*$
+        exclude: ^airflow/_vendor/|^images/breeze/output.*$|^airflow/www/static/dist/
       - id: fix-encoding-pragma
         name: Remove encoding header from python files
         exclude: ^airflow/_vendor/
@@ -296,7 +296,7 @@ repos:
         exclude: ^airflow/_vendor/|^RELEASE_NOTES\.txt$|^airflow/www/static/css/material-icons\.css$|^images/.*$
         args:
           - --ignore-words=docs/spelling_wordlist.txt
-          - --skip=docs/*/commits.rst,airflow/providers/*/*.rst,*.lock,INTHEWILD.md,*.min.js,docs/apache-airflow/pipeline_example.csv
+          - --skip=docs/*/commits.rst,airflow/providers/*/*.rst,*.lock,INTHEWILD.md,*.min.js,docs/apache-airflow/pipeline_example.csv,airflow/www/static/dist/*,airflow/www/*.log
           - --exclude-file=.codespellignorelines
   - repo: local
     hooks:
@@ -305,7 +305,7 @@ repos:
         entry: ./scripts/ci/pre_commit/pre_commit_replace_bad_characters.py
         language: python
         types: [file, text]
-        exclude: ^airflow/_vendor/|^clients/gen/go\.sh$|^\.gitmodules$
+        exclude: ^airflow/_vendor/|^clients/gen/go\.sh$|^\.gitmodules$|^airflow/www/static/dist/
         additional_dependencies: ['rich>=12.4.4']
       - id: static-check-autoflake
         name: Remove all unused code
@@ -594,8 +594,19 @@ repos:
         entry: "stylelint"
         language: node
         files: ^airflow/www/.*\.(css|scss|sass)$
+        exclude: ^airflow/www/static/dist/
         # Keep dependency versions in sync w/ airflow/www/package.json
         additional_dependencies: ['stylelint@13.3.1', 'stylelint-config-standard@20.0.0']
+      - id: compile-www-assets
+        name: Compile www assets
+        language: node
+        stages: ['manual']
+        'types_or': [javascript, tsx, ts]
+        files: ^airflow/www/
+        exclude: ^airflow/www/static/dist/
+        entry: ./scripts/ci/pre_commit/pre_commit_compile_www_assets.py
+        pass_filenames: false
+        additional_dependencies: ['yarn']
       - id: check-providers-init-file-missing
         name: Provider init file is missing
         pass_filenames: false
@@ -813,6 +824,22 @@ repos:
         additional_dependencies: ['rich>=12.4.4']
         pass_filenames: false
         files: ^tests/.*\.py$
+      - id: lint-javascript
+        name: ESLint against airflow/ui
+        language: node
+        'types_or': [javascript, tsx, ts]
+        files: ^airflow/ui/
+        entry: ./scripts/ci/pre_commit/pre_commit_ui_lint.py
+        pass_filenames: false
+        additional_dependencies: ['yarn']
+      - id: lint-javascript
+        name: ESLint against current UI JavaScript files
+        language: node
+        'types_or': [javascript]
+        files: ^airflow/www/static/js/
+        entry: ./scripts/ci/pre_commit/pre_commit_www_lint.py
+        additional_dependencies: ['yarn']
+        pass_filenames: false
         ## ADD MOST PRE-COMMITS ABOVE THAT LINE
         # The below pre-commits are those requiring CI image to be built
       - id: run-mypy
@@ -853,22 +880,6 @@ repos:
         pass_filenames: true
         exclude: ^airflow/_vendor/
         additional_dependencies: ['rich>=12.4.4', 'inputimeout']
-      - id: lint-javascript
-        name: ESLint against airflow/ui
-        language: python
-        'types_or': [javascript, tsx, ts]
-        files: ^airflow/ui/
-        entry: ./scripts/ci/pre_commit/pre_commit_ui_lint.py
-        pass_filenames: false
-        additional_dependencies: ['rich>=12.4.4', 'inputimeout']
-      - id: lint-javascript
-        name: ESLint against current UI JavaScript files
-        language: python
-        'types_or': [javascript]
-        files: ^airflow/www/static/js/
-        entry: ./scripts/ci/pre_commit/pre_commit_www_lint.py
-        pass_filenames: false
-        additional_dependencies: ['rich>=12.4.4', 'inputimeout']
       - id: update-migration-references
         name: Update migration ref doc
         language: python
diff --git a/BREEZE.rst b/BREEZE.rst
index 5a1b03f14d..24c23c6b77 100644
--- a/BREEZE.rst
+++ b/BREEZE.rst
@@ -453,6 +453,17 @@ regenerate all those images (which might be needed in case new version of rich i
   :alt: Breeze regenerate-command-images
 
 
+Compiling www assets
+====================
+
+Airflow webserver needs to prepare www assets - compiled with node and yarn. This is needed when you want
+to run webserver inside of the breeze. It is also automatically executed when you run ``start-airflow``
+command.
+
+.. image:: ./images/breeze/output-compile-www-assets.svg
+  :width: 100%
+  :alt: Breeze compile-www-assets
+
 Starting complete Airflow installation
 ======================================
 
@@ -511,6 +522,7 @@ Those are commands mostly used by contributors:
 * 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
@@ -1590,9 +1602,8 @@ If you set these variables, next time when you enter the environment the new por
 Managing Dependencies
 ---------------------
 
-If you need to change apt dependencies in the ``Dockerfile.ci``, add Python packages in ``setup.py`` or
-add JavaScript dependencies in ``package.json``, you can either add dependencies temporarily for a single
-Breeze session or permanently in ``setup.py``, ``Dockerfile.ci``, or ``package.json`` files.
+If you need to change apt dependencies in the ``Dockerfile.ci``, add Python packages in ``setup.py``
+for airflow and in provider.yaml for packages.
 
 Installing Dependencies for a Single Breeze Session
 ...................................................
@@ -1606,8 +1617,7 @@ Therefore, if you want to retain a new dependency, follow the second option desc
 Adding Dependencies Permanently
 ...............................
 
-You can add dependencies to the ``Dockerfile.ci``, ``setup.py`` or ``package.json`` and rebuild the image.
-This should happen automatically if you modify any of these files.
+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
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 323172ad31..0004b1b914 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -1165,27 +1165,6 @@ To install yarn on macOS:
     export PATH="$HOME/.yarn/bin:$PATH"
 
 4.  Install third-party libraries defined in ``package.json`` by running the
-    following commands within the ``airflow/www/`` directory:
-
-
-.. code-block:: bash
-
-    # from the root of the repository, move to where our JS package.json lives
-    cd airflow/www/
-    # run yarn install to fetch all the dependencies
-    yarn install
-
-
-These commands install the libraries in a new ``node_modules/`` folder within
-``www/``.
-
-Should you add or upgrade a node package, run
-``yarn add --dev <package>`` for packages needed in development or
-``yarn add <package>`` for packages used by the code.
-Then push the newly generated ``package.json`` and ``yarn.lock`` file so that we
-could get a reproducible build. See the `Yarn docs
-<https://yarnpkg.com/en/docs/cli/add#adding-dependencies->`_ for more details.
-
 
 Generate Bundled Files with yarn
 --------------------------------
diff --git a/Dockerfile b/Dockerfile
index b4ddddef80..7fd6b8bbf6 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -397,101 +397,6 @@ function common::show_pip_version_and_location() {
 }
 EOF
 
-# The content below is automatically copied from scripts/docker/prepare_node_modules.sh
-COPY <<"EOF" /prepare_node_modules.sh
-set -euo pipefail
-
-COLOR_BLUE=$'\e[34m'
-readonly COLOR_BLUE
-COLOR_RESET=$'\e[0m'
-readonly COLOR_RESET
-
-function prepare_node_modules() {
-    echo
-    echo "${COLOR_BLUE}Preparing node modules${COLOR_RESET}"
-    echo
-    local www_dir
-    if [[ ${AIRFLOW_INSTALLATION_METHOD=} == "." ]]; then
-        # In case we are building from sources in production image, we should build the assets
-        www_dir="${AIRFLOW_SOURCES_TO=${AIRFLOW_SOURCES}}/airflow/www"
-    else
-        www_dir="$(python -m site --user-site)/airflow/www"
-    fi
-    pushd ${www_dir} || exit 1
-    set +e
-    yarn install --frozen-lockfile --no-cache 2>/tmp/out-yarn-install.txt
-    local res=$?
-    if [[ ${res} != 0 ]]; then
-        >&2 echo
-        >&2 echo "Error when running yarn install:"
-        >&2 echo
-        >&2 cat /tmp/out-yarn-install.txt && rm -f /tmp/out-yarn-install.txt
-        exit 1
-    fi
-    rm -f /tmp/out-yarn-install.txt
-    popd || exit 1
-}
-
-prepare_node_modules
-EOF
-
-# The content below is automatically copied from scripts/docker/compile_www_assets.sh
-COPY <<"EOF" /compile_www_assets.sh
-set -euo pipefail
-
-BUILD_TYPE=${BUILD_TYPE="prod"}
-REMOVE_ARTIFACTS=${REMOVE_ARTIFACTS="true"}
-
-COLOR_BLUE=$'\e[34m'
-readonly COLOR_BLUE
-COLOR_RESET=$'\e[0m'
-readonly COLOR_RESET
-
-function compile_www_assets() {
-    echo
-    echo "${COLOR_BLUE}Compiling www assets: running yarn ${BUILD_TYPE}${COLOR_RESET}"
-    echo
-    local www_dir
-    if [[ ${AIRFLOW_INSTALLATION_METHOD=} == "." ]]; then
-        # In case we are building from sources in production image, we should build the assets
-        www_dir="${AIRFLOW_SOURCES_TO=${AIRFLOW_SOURCES}}/airflow/www"
-    else
-        www_dir="$(python -m site --user-site)/airflow/www"
-    fi
-    pushd ${www_dir} || exit 1
-    set +e
-    yarn run "${BUILD_TYPE}" 2>/tmp/out-yarn-run.txt
-    res=$?
-    if [[ ${res} != 0 ]]; then
-        >&2 echo
-        >&2 echo "Error when running yarn run:"
-        >&2 echo
-        >&2 cat /tmp/out-yarn-run.txt && rm -rf /tmp/out-yarn-run.txt
-        exit 1
-    fi
-    rm -f /tmp/out-yarn-run.txt
-    set -e
-    local md5sum_file
-    md5sum_file="static/dist/sum.md5"
-    readonly md5sum_file
-    find package.json yarn.lock static/css static/js -type f | sort | xargs md5sum > "${md5sum_file}"
-    if [[ ${REMOVE_ARTIFACTS} == "true" ]]; then
-        echo
-        echo "${COLOR_BLUE}Removing generated node modules${COLOR_RESET}"
-        echo
-        rm -rf "${www_dir}/node_modules"
-        rm -vf "${www_dir}"/{package.json,yarn.lock,.eslintignore,.eslintrc,.stylelintignore,.stylelintrc,compile_assets.sh,webpack.config.js}
-    else
-        echo
-        echo "${COLOR_BLUE}Leaving generated node modules${COLOR_RESET}"
-        echo
-    fi
-    popd || exit 1
-}
-
-compile_www_assets
-EOF
-
 # The content below is automatically copied from scripts/docker/pip
 COPY <<"EOF" /pip
 #!/usr/bin/env bash
@@ -1120,7 +1025,6 @@ ARG DEV_APT_DEPS="\
      libssl-dev \
      locales  \
      lsb-release \
-     nodejs \
      openssh-client \
      sasl2-bin \
      software-properties-common \
@@ -1132,9 +1036,7 @@ ARG DEV_APT_DEPS="\
 
 ARG ADDITIONAL_DEV_APT_DEPS=""
 ARG DEV_APT_COMMAND="\
-    curl --silent --fail --location https://deb.nodesource.com/setup_14.x | \
-        bash -o pipefail -o errexit -o nolog - \
-    && curl --silent https://dl.yarnpkg.com/debian/pubkey.gpg | \
+    curl --silent https://dl.yarnpkg.com/debian/pubkey.gpg | \
     apt-key add - >/dev/null 2>&1\
     && echo 'deb https://dl.yarnpkg.com/debian/ stable main' > /etc/apt/sources.list.d/yarn.list"
 ARG ADDITIONAL_DEV_APT_COMMAND="echo"
@@ -1196,18 +1098,10 @@ ARG INSTALL_PROVIDERS_FROM_SOURCES="false"
 # But it also can be `.` from local installation or GitHub URL pointing to specific branch or tag
 # Of Airflow. Note That for local source installation you need to have local sources of
 # Airflow checked out together with the Dockerfile and AIRFLOW_SOURCES_FROM and AIRFLOW_SOURCES_TO
-# set to "." and "/opt/airflow" respectively. Similarly AIRFLOW_SOURCES_WWW_FROM/TO are set to right source
-# and destination
+# set to "." and "/opt/airflow" respectively.
 ARG AIRFLOW_INSTALLATION_METHOD="apache-airflow"
 # By default we do not upgrade to latest dependencies
 ARG UPGRADE_TO_NEWER_DEPENDENCIES="false"
-# By default we install latest airflow from PyPI so we do not need to copy sources of Airflow
-# www to compile the assets but in case of breeze/CI builds we use latest sources and we override those
-# those SOURCES_FROM/TO with "airflow/www" and "/opt/airflow/airflow/www" respectively.
-# This is to rebuild the assets only when any of the www sources change
-ARG AIRFLOW_SOURCES_WWW_FROM="Dockerfile"
-ARG AIRFLOW_SOURCES_WWW_TO="/Dockerfile"
-
 # By default we install latest airflow from PyPI so we do not need to copy sources of Airflow
 # but in case of breeze/CI builds we use latest sources and we override those
 # those SOURCES_FROM/TO with "." and "/opt/airflow" respectively
@@ -1303,26 +1197,8 @@ RUN bash /scripts/docker/install_pip_version.sh; \
         bash /scripts/docker/install_airflow_dependencies_from_branch_tip.sh; \
     fi
 
-COPY --from=scripts compile_www_assets.sh prepare_node_modules.sh /scripts/docker/
-COPY --chown=airflow:0 ${AIRFLOW_SOURCES_WWW_FROM} ${AIRFLOW_SOURCES_WWW_TO}
-
-# hadolint ignore=SC2086, SC2010
-RUN if [[ ${AIRFLOW_INSTALLATION_METHOD} == "." ]]; then \
-        # only prepare node modules and compile assets if the prod image is build from sources
-        # otherwise they are already compiled-in the package.
-        bash /scripts/docker/prepare_node_modules.sh; \
-        REMOVE_ARTIFACTS="true" BUILD_TYPE="prod" bash /scripts/docker/compile_www_assets.sh; \
-        # Copy generated dist folder (otherwise it will be overridden by the COPY step below)
-        mv -f /opt/airflow/airflow/www/static/dist /tmp/dist; \
-    fi;
-
 COPY --chown=airflow:0 ${AIRFLOW_SOURCES_FROM} ${AIRFLOW_SOURCES_TO}
 
-# Copy back the generated dist folder
-RUN if [[ ${AIRFLOW_INSTALLATION_METHOD} == "." ]]; then \
-        mv -f /tmp/dist /opt/airflow/airflow/www/static/dist; \
-    fi;
-
 # Add extra python dependencies
 ARG ADDITIONAL_PYTHON_DEPS=""
 
diff --git a/Dockerfile.ci b/Dockerfile.ci
index f95a5cedbf..0dd89175a5 100644
--- a/Dockerfile.ci
+++ b/Dockerfile.ci
@@ -384,101 +384,6 @@ common::get_colors
 install_pipx_tools
 EOF
 
-# The content below is automatically copied from scripts/docker/prepare_node_modules.sh
-COPY <<"EOF" /prepare_node_modules.sh
-set -euo pipefail
-
-COLOR_BLUE=$'\e[34m'
-readonly COLOR_BLUE
-COLOR_RESET=$'\e[0m'
-readonly COLOR_RESET
-
-function prepare_node_modules() {
-    echo
-    echo "${COLOR_BLUE}Preparing node modules${COLOR_RESET}"
-    echo
-    local www_dir
-    if [[ ${AIRFLOW_INSTALLATION_METHOD=} == "." ]]; then
-        # In case we are building from sources in production image, we should build the assets
-        www_dir="${AIRFLOW_SOURCES_TO=${AIRFLOW_SOURCES}}/airflow/www"
-    else
-        www_dir="$(python -m site --user-site)/airflow/www"
-    fi
-    pushd ${www_dir} || exit 1
-    set +e
-    yarn install --frozen-lockfile --no-cache 2>/tmp/out-yarn-install.txt
-    local res=$?
-    if [[ ${res} != 0 ]]; then
-        >&2 echo
-        >&2 echo "Error when running yarn install:"
-        >&2 echo
-        >&2 cat /tmp/out-yarn-install.txt && rm -f /tmp/out-yarn-install.txt
-        exit 1
-    fi
-    rm -f /tmp/out-yarn-install.txt
-    popd || exit 1
-}
-
-prepare_node_modules
-EOF
-
-# The content below is automatically copied from scripts/docker/compile_www_assets.sh
-COPY <<"EOF" /compile_www_assets.sh
-set -euo pipefail
-
-BUILD_TYPE=${BUILD_TYPE="prod"}
-REMOVE_ARTIFACTS=${REMOVE_ARTIFACTS="true"}
-
-COLOR_BLUE=$'\e[34m'
-readonly COLOR_BLUE
-COLOR_RESET=$'\e[0m'
-readonly COLOR_RESET
-
-function compile_www_assets() {
-    echo
-    echo "${COLOR_BLUE}Compiling www assets: running yarn ${BUILD_TYPE}${COLOR_RESET}"
-    echo
-    local www_dir
-    if [[ ${AIRFLOW_INSTALLATION_METHOD=} == "." ]]; then
-        # In case we are building from sources in production image, we should build the assets
-        www_dir="${AIRFLOW_SOURCES_TO=${AIRFLOW_SOURCES}}/airflow/www"
-    else
-        www_dir="$(python -m site --user-site)/airflow/www"
-    fi
-    pushd ${www_dir} || exit 1
-    set +e
-    yarn run "${BUILD_TYPE}" 2>/tmp/out-yarn-run.txt
-    res=$?
-    if [[ ${res} != 0 ]]; then
-        >&2 echo
-        >&2 echo "Error when running yarn run:"
-        >&2 echo
-        >&2 cat /tmp/out-yarn-run.txt && rm -rf /tmp/out-yarn-run.txt
-        exit 1
-    fi
-    rm -f /tmp/out-yarn-run.txt
-    set -e
-    local md5sum_file
-    md5sum_file="static/dist/sum.md5"
-    readonly md5sum_file
-    find package.json yarn.lock static/css static/js -type f | sort | xargs md5sum > "${md5sum_file}"
-    if [[ ${REMOVE_ARTIFACTS} == "true" ]]; then
-        echo
-        echo "${COLOR_BLUE}Removing generated node modules${COLOR_RESET}"
-        echo
-        rm -rf "${www_dir}/node_modules"
-        rm -vf "${www_dir}"/{package.json,yarn.lock,.eslintignore,.eslintrc,.stylelintignore,.stylelintrc,compile_assets.sh,webpack.config.js}
-    else
-        echo
-        echo "${COLOR_BLUE}Leaving generated node modules${COLOR_RESET}"
-        echo
-    fi
-    popd || exit 1
-}
-
-compile_www_assets
-EOF
-
 # The content below is automatically copied from scripts/docker/install_airflow.sh
 COPY <<"EOF" /install_airflow.sh
 
@@ -663,11 +568,6 @@ if [[ ${SKIP_ENVIRONMENT_INITIALIZATION=} != "true" ]]; then
         echo
         echo "${COLOR_BLUE}Using airflow version from current sources${COLOR_RESET}"
         echo
-        if [[ -d "${AIRFLOW_SOURCES}/airflow/www/" ]]; then
-            pushd "${AIRFLOW_SOURCES}/airflow/www/" >/dev/null
-            ./ask_for_recompile_assets_if_needed.sh
-            popd >/dev/null
-        fi
         # Cleanup the logs, tmp when entering the environment
         sudo rm -rf "${AIRFLOW_SOURCES}"/logs/*
         sudo rm -rf "${AIRFLOW_SOURCES}"/tmp/*
@@ -1025,16 +925,6 @@ COPY <<"EOF" /entrypoint_exec.sh
 exec /bin/bash "${@}"
 EOF
 
-##############################################################################################
-# This is the www image where we keep all inlined files needed to build ui
-# It is copied separately to volume to speed up building and avoid cache miss on changed
-# file permissions.
-# We use PYTHON_BASE_IMAGE to make sure that the scripts are different for different platforms.
-##############################################################################################
-FROM ${PYTHON_BASE_IMAGE} as www
-COPY airflow/www/package.json airflow/www/yarn.lock airflow/www/webpack.config.js /
-COPY airflow/www/static/ /static
-
 FROM ${PYTHON_BASE_IMAGE} as main
 
 # Nolog bash flag is currently ignored - but you can replace it with other flags (for example
@@ -1060,8 +950,7 @@ RUN echo "Base image version: ${PYTHON_BASE_IMAGE}"
 
 ARG ADDITIONAL_DEV_APT_DEPS=""
 ARG DEV_APT_COMMAND="\
-    curl --silent --fail --location https://deb.nodesource.com/setup_14.x | bash - \
-    && curl --silent --fail https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - >/dev/null 2>&1 \
+    curl --silent --fail https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - >/dev/null 2>&1 \
     && echo 'deb https://dl.yarnpkg.com/debian/ stable main' > /etc/apt/sources.list.d/yarn.list"
 ARG ADDITIONAL_DEV_APT_COMMAND=""
 ARG ADDITIONAL_DEV_ENV_VARS=""
@@ -1104,7 +993,6 @@ RUN apt-get update \
            "${DISTRO_LIBENCHANT}" \
            locales  \
            netcat \
-           nodejs \
            rsync \
            sasl2-bin \
            sudo \
@@ -1306,25 +1194,6 @@ COPY --from=scripts install_pipx_tools.sh /scripts/docker/
 # dependencies installed in Airflow
 RUN bash /scripts/docker/install_pipx_tools.sh
 
-# Copy package.json and yarn.lock to install node modules
-# this way even if other static check files change, node modules will not need to be installed
-# we want to keep node_modules so we can do this step separately from compiling assets
-COPY --from=www package.json yarn.lock ${AIRFLOW_SOURCES}/airflow/www/
-COPY --from=scripts prepare_node_modules.sh /scripts/docker/
-
-# Package JS/css for production
-RUN bash /scripts/docker/prepare_node_modules.sh
-
-# Copy all the needed www/ for assets compilation. Done as two separate COPY
-# commands so as otherwise it copies the _contents_ of static/ in to www/
-COPY --from=www webpack.config.js ${AIRFLOW_SOURCES}/airflow/www/
-COPY --from=www static ${AIRFLOW_SOURCES}/airflow/www/static/
-COPY --from=scripts compile_www_assets.sh /scripts/docker/
-
-# Build artifacts without removing temporary artifacts (we will need them for incremental changes)
-# in build  mode
-RUN REMOVE_ARTIFACTS="false" BUILD_TYPE="build" bash /scripts/docker/compile_www_assets.sh
-
 # Airflow sources change frequently but dependency configuration won't change that often
 # We copy setup.py and other files needed to perform setup of dependencies
 # So in case setup.py changes we can install latest dependencies required.
diff --git a/STATIC_CODE_CHECKS.rst b/STATIC_CODE_CHECKS.rst
index 1b18aa659d..6934919b95 100644
--- a/STATIC_CODE_CHECKS.rst
+++ b/STATIC_CODE_CHECKS.rst
@@ -215,6 +215,8 @@ require Breeze Docker image to be build locally.
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
 | codespell                                              | Run codespell to check for common misspellings in files          |         |
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
+| compile-www-assets                                     | Compile www assets                                               |         |
++--------------------------------------------------------+------------------------------------------------------------------+---------+
 | create-missing-init-py-files-tests                     | Create missing init.py files in tests                            |         |
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
 | debug-statements                                       | Detect accidentally committed debug statements                   |         |
@@ -252,7 +254,7 @@ require Breeze Docker image to be build locally.
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
 | lint-helm-chart                                        | Lint Helm Chart                                                  |         |
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
-| lint-javascript                                        | * ESLint against airflow/ui                                      | *       |
+| lint-javascript                                        | * ESLint against airflow/ui                                      |         |
 |                                                        | * ESLint against current UI JavaScript files                     |         |
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
 | lint-json-schema                                       | * Lint JSON Schema files with JSON Schema                        |         |
diff --git a/airflow/www/ask_for_recompile_assets_if_needed.sh b/airflow/www/ask_for_recompile_assets_if_needed.sh
deleted file mode 100755
index 8342ae7631..0000000000
--- a/airflow/www/ask_for_recompile_assets_if_needed.sh
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/env bash
-# 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.
-set -e
-
-if [[ ${GITHUB_ACTIONS:="false"} == "true" ]]; then
-    echo
-    echo -e "${BLUE}Skipping asset compilation check in CI.${NO_COLOR}"
-    echo
-    exit 0
-fi
-
-cd "$( dirname "${BASH_SOURCE[0]}" )"
-
-MD5SUM_FILE="static/dist/sum.md5"
-readonly MD5SUM_FILE
-
-GREEN='\033[1;32m'
-YELLOW='\033[1;33m'
-NO_COLOR='\033[0m'
-
-md5sum=$(find package.json yarn.lock static/css static/js -type f | sort | xargs md5sum)
-old_md5sum=$(cat "${MD5SUM_FILE}" 2>/dev/null || true)
-if [[ ${old_md5sum} != "${md5sum}" ]]; then
-    if [[ ( ${START_AIRFLOW:="false"} == "true" || ${START_AIRFLOW} == "True" )  && ${USE_AIRFLOW_VERSION:=} == "" ]]; then
-        echo
-        echo -e "${YELLOW}Recompiling assets as they have changed and you need them for 'start_airflow' command${NO_COLOR}"
-        echo
-        ./compile_assets.sh
-    else
-        echo
-        echo -e "${YELLOW}WARNING: It seems that the generated assets files do not match the content of the sources.${NO_COLOR}"
-        echo "To recompile assets, run:"
-        echo ""
-        echo "   ./airflow/www/compile_assets.sh"
-        echo ""
-    fi
-else
-    echo
-    echo -e "${GREEN}No need for www assets recompilation.${NO_COLOR}"
-    echo
-fi
diff --git a/breeze-legacy b/breeze-legacy
index 0bb257494c..b03f5ae18f 100755
--- a/breeze-legacy
+++ b/breeze-legacy
@@ -136,14 +136,6 @@ function breeze::setup_default_breeze_constants() {
     AIRFLOW_SOURCES_TO=${AIRFLOW_SOURCES_TO:="/opt/airflow"}
     export AIRFLOW_SOURCES_TO
 
-    # Sources by default are installed from local sources when using breeze
-    AIRFLOW_SOURCES_WWW_FROM=${AIRFLOW_SOURCES_WWW_FROM:="./airflow/www"}
-    export AIRFLOW_SOURCES_WWW_FROM
-
-    # They are copied to /opt/airflow by default in breeze
-    AIRFLOW_SOURCES_WWW_TO=${AIRFLOW_SOURCES_WWW_TO:="/opt/airflow/airflow/www"}
-    export AIRFLOW_SOURCES_WWW_TO
-
     # Unlike in CI scripts, in breeze by default production image is installed from sources
     export AIRFLOW_INSTALLATION_METHOD="."
 
diff --git a/dev/README_RELEASE_AIRFLOW.md b/dev/README_RELEASE_AIRFLOW.md
index c6cdf35331..435ff2a1ec 100644
--- a/dev/README_RELEASE_AIRFLOW.md
+++ b/dev/README_RELEASE_AIRFLOW.md
@@ -295,7 +295,7 @@ The Release Candidate artifacts we vote upon should be the exact ones we vote ag
 - If you aren't using Breeze for packaging, build the distribution and wheel files directly
 
     ```shell script
-    python setup.py compile_assets sdist bdist_wheel
+    python setup.py sdist bdist_wheel
     pushd dist
     ${AIRFLOW_REPO_ROOT}/dev/sign.sh *
     popd
diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands.py b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
index 268dad01a8..be0532ca2e 100644
--- a/dev/breeze/src/airflow_breeze/commands/developer_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
@@ -75,6 +75,7 @@ from airflow_breeze.utils.run_utils import (
     assert_pre_commit_installed,
     filter_out_none,
     run_command,
+    run_compile_www_assets,
 )
 from airflow_breeze.utils.visuals import ASCIIART, ASCIIART_STYLE, CHEATSHEET, CHEATSHEET_STYLE
 
@@ -357,6 +358,8 @@ def start_airflow(
     extra_args: Tuple,
 ):
     """Enter breeze.py environment and starts all Airflow components in the tmux session."""
+    if use_airflow_version is None:
+        run_compile_www_assets(verbose=verbose, dry_run=dry_run)
     enter_shell(
         verbose=verbose,
         dry_run=dry_run,
@@ -546,6 +549,26 @@ def static_checks(
     sys.exit(static_checks_result.returncode)
 
 
+@main.command(
+    name="compile-www-assets",
+    help="Compiles www assets.",
+    context_settings=dict(
+        ignore_unknown_options=True,
+        allow_extra_args=True,
+    ),
+)
+@option_verbose
+@option_dry_run
+def compile_www_assets(
+    verbose: bool,
+    dry_run: bool,
+):
+    compile_www_assets_result = run_compile_www_assets(verbose=verbose, dry_run=dry_run)
+    if compile_www_assets_result.returncode != 0:
+        get_console().print("[warn]New assets were generated[/]")
+    sys.exit(0)
+
+
 @main.command(name="stop", help="Stop running breeze environment.")
 @option_verbose
 @option_dry_run
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 6a2c331e6d..87dae0c9a2 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -65,7 +65,7 @@ from airflow_breeze.utils.docker_command_utils import (
 )
 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
+from airflow_breeze.utils.run_utils import RunCommandResult, run_command, run_compile_www_assets
 
 RELEASE_MANAGEMENT_PARAMETERS = {
     "breeze prepare-airflow-package": [
@@ -234,6 +234,7 @@ def prepare_airflow_packages(
     debug: bool,
 ):
     perform_environment_checks(verbose=verbose)
+    run_compile_www_assets(verbose=verbose, dry_run=dry_run)
     shell_params = ShellParams(
         verbose=verbose,
         github_repository=github_repository,
diff --git a/dev/breeze/src/airflow_breeze/global_constants.py b/dev/breeze/src/airflow_breeze/global_constants.py
index 6e2914a2d9..dba556b331 100644
--- a/dev/breeze/src/airflow_breeze/global_constants.py
+++ b/dev/breeze/src/airflow_breeze/global_constants.py
@@ -225,18 +225,12 @@ FILES_FOR_REBUILD_CHECK = [
     'setup.cfg',
     'Dockerfile.ci',
     '.dockerignore',
-    'scripts/docker/compile_www_assets.sh',
     'scripts/docker/common.sh',
     'scripts/docker/install_additional_dependencies.sh',
     'scripts/docker/install_airflow.sh',
     'scripts/docker/install_airflow_dependencies_from_branch_tip.sh',
     'scripts/docker/install_from_docker_context_files.sh',
     'scripts/docker/install_mysql.sh',
-    'airflow/www/package.json',
-    'airflow/www/yarn.lock',
-    'airflow/www/webpack.config.js',
-    'airflow/ui/package.json',
-    'airflow/ui/yarn.lock',
 ]
 
 ENABLED_SYSTEMS = ""
@@ -265,8 +259,6 @@ MIN_DOCKER_COMPOSE_VERSION = "1.29.0"
 
 AIRFLOW_SOURCES_FROM = "."
 AIRFLOW_SOURCES_TO = "/opt/airflow"
-AIRFLOW_SOURCES_WWW_FROM = "./airflow/www"
-AIRFLOW_SOURCES_WWW_TO = "/opt/airflow/airflow/www"
 
 DEFAULT_EXTRAS = [
     # BEGINNING OF EXTRAS LIST UPDATED BY PRE COMMIT
diff --git a/dev/breeze/src/airflow_breeze/params/build_prod_params.py b/dev/breeze/src/airflow_breeze/params/build_prod_params.py
index 86a25b6999..9e30b95f69 100644
--- a/dev/breeze/src/airflow_breeze/params/build_prod_params.py
+++ b/dev/breeze/src/airflow_breeze/params/build_prod_params.py
@@ -26,8 +26,6 @@ from airflow_breeze.branch_defaults import AIRFLOW_BRANCH, DEFAULT_AIRFLOW_CONST
 from airflow_breeze.global_constants import (
     AIRFLOW_SOURCES_FROM,
     AIRFLOW_SOURCES_TO,
-    AIRFLOW_SOURCES_WWW_FROM,
-    AIRFLOW_SOURCES_WWW_TO,
     get_airflow_extras,
     get_airflow_version,
 )
@@ -73,10 +71,6 @@ class BuildProdParams(CommonBuildParams):
         build_args = []
         build_args.extend(
             [
-                "--build-arg",
-                "AIRFLOW_SOURCES_WWW_FROM=empty",
-                "--build-arg",
-                "AIRFLOW_SOURCES_WWW_TO=/empty",
                 "--build-arg",
                 "AIRFLOW_SOURCES_FROM=empty",
                 "--build-arg",
@@ -159,10 +153,6 @@ class BuildProdParams(CommonBuildParams):
                     "--build-arg",
                     f"AIRFLOW_SOURCES_TO={AIRFLOW_SOURCES_TO}",
                     "--build-arg",
-                    f"AIRFLOW_SOURCES_WWW_FROM={AIRFLOW_SOURCES_WWW_FROM}",
-                    "--build-arg",
-                    f"AIRFLOW_SOURCES_WWW_TO={AIRFLOW_SOURCES_WWW_TO}",
-                    "--build-arg",
                     f"AIRFLOW_INSTALLATION_METHOD={self.installation_method}",
                     "--build-arg",
                     f"AIRFLOW_CONSTRAINTS_REFERENCE={self.airflow_constraints_reference}",
diff --git a/dev/breeze/src/airflow_breeze/pre_commit_ids.py b/dev/breeze/src/airflow_breeze/pre_commit_ids.py
index 4b36d48e33..35e0a1ba75 100644
--- a/dev/breeze/src/airflow_breeze/pre_commit_ids.py
+++ b/dev/breeze/src/airflow_breeze/pre_commit_ids.py
@@ -64,6 +64,7 @@ PRE_COMMIT_LIST = [
     'check-system-tests-tocs',
     'check-xml',
     'codespell',
+    'compile-www-assets',
     'create-missing-init-py-files-tests',
     'debug-statements',
     'detect-private-key',
diff --git a/dev/breeze/src/airflow_breeze/utils/run_utils.py b/dev/breeze/src/airflow_breeze/utils/run_utils.py
index 29268be8b3..36c5c6fa93 100644
--- a/dev/breeze/src/airflow_breeze/utils/run_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/run_utils.py
@@ -354,3 +354,34 @@ def get_runnable_ci_image(verbose: bool, dry_run: bool) -> str:
         instruction=f"breeze build-image --python {python_version}",
     )
     return airflow_image
+
+
+def run_compile_www_assets(
+    verbose: bool,
+    dry_run: bool,
+):
+    from airflow_breeze.utils.docker_command_utils import perform_environment_checks
+
+    assert_pre_commit_installed(verbose=verbose)
+    perform_environment_checks(verbose=verbose)
+    command_to_execute = [
+        sys.executable,
+        "-m",
+        "pre_commit",
+        'run',
+        "--hook-stage",
+        "manual",
+        'compile-www-assets',
+        '--all-files',
+    ]
+    env = os.environ.copy()
+    compile_www_assets_result = run_command(
+        command_to_execute,
+        verbose=verbose,
+        dry_run=dry_run,
+        check=False,
+        no_output_dump_on_exception=True,
+        text=True,
+        env=env,
+    )
+    return compile_www_assets_result
diff --git a/docs/docker-stack/build-arg-ref.rst b/docs/docker-stack/build-arg-ref.rst
index a1e4f1d9f0..9aa2f25544 100644
--- a/docs/docker-stack/build-arg-ref.rst
+++ b/docs/docker-stack/build-arg-ref.rst
@@ -208,16 +208,6 @@ You can see some examples of those in:
 |                                    |                                          | "/opt/airflow" when you install Airflow  |
 |                                    |                                          | from local sources.                      |
 +------------------------------------+------------------------------------------+------------------------------------------+
-| ``AIRFLOW_SOURCES_WWW_FROM``       | ``Dockerfile``                           | Sources of Airflow WWW files used for    |
-|                                    |                                          | asset compilation. Set it to             |
-|                                    |                                          | "./airflow/www" when                     |
-|                                    |                                          | you install Airflow from local sources   |
-+------------------------------------+------------------------------------------+------------------------------------------+
-| ``AIRFLOW_SOURCES_WWW_TO``         | ``/Dockerfile``                          | Target for Airflow files used for        |
-|                                    |                                          | asset compilation. Set it to             |
-|                                    |                                          | "/opt/airflow/airflow/www" when          |
-|                                    |                                          | you install Airflow from local sources.  |
-+------------------------------------+------------------------------------------+------------------------------------------+
 | ``AIRFLOW_VERSION_SPECIFICATION``  |                                          | Optional - might be used for using limit |
 |                                    |                                          | for Airflow version installation - for   |
 |                                    |                                          | example ``<2.0.2`` for automated builds. |
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index 2271f6eca7..b84eb16be8 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -8,6 +8,7 @@ build-image:b62509a59badf3aa230e4562df751002
 build-prod-image:b9aa5dcefcd7067a6698f68c05adc2b8
 cleanup:9a94bd1063296ea86e895f671db0b330
 command-hash-export:83bc6a4a8c60b62da3d0f00e81d2c3ea
+compile-www-assets:5f0d8af0a2a074f2ee577604662598c8
 config:92653afc11889e1b78e3a2e38f41107f
 docker-compose-tests:8ae3b6211fd31db81a750d1c6b96ec3d
 exec:e4329909b8b2a610fa4fad5116c4b896
@@ -28,7 +29,7 @@ self-upgrade:b5437c0a1a91533a11ee9d0a9692369c
 setup-autocomplete:355b72dee171c2fcba46fc90ac7c97b0
 shell:4680295fdd8a276d51518d29360c365c
 start-airflow:92cf775a952439a32d409cd2536da507
-static-checks:8b4c0a3891e1d65ddf832ec4f5b71491
+static-checks:6d29e34384ef071a6eea88cfcc2edb93
 stop:8ebd8a42f1003495d37b884de5ac7ce6
 tests:e39111ecbd33a65ababb3cbfbac2b069
 verify-image:a6b3c70957aea96a5d4d261f23359a2d
diff --git a/images/breeze/output-commands.svg b/images/breeze/output-commands.svg
index 2e21ac9804..2485ebeac8 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 2197.2" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 2270.4" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,393 +19,405 @@
         font-weight: 700;
     }
 
-    .terminal-460130354-matrix {
+    .terminal-1460595808-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-460130354-title {
+    .terminal-1460595808-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-460130354-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-460130354-r2 { fill: #c5c8c6 }
-.terminal-460130354-r3 { fill: #d0b344;font-weight: bold }
-.terminal-460130354-r4 { fill: #868887 }
-.terminal-460130354-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-460130354-r6 { fill: #98a84b;font-weight: bold }
-.terminal-460130354-r7 { fill: #8d7b39 }
+    .terminal-1460595808-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1460595808-r2 { fill: #c5c8c6 }
+.terminal-1460595808-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1460595808-r4 { fill: #868887 }
+.terminal-1460595808-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1460595808-r6 { fill: #98a84b;font-weight: bold }
+.terminal-1460595808-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-460130354-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="2146.2" />
+    <clipPath id="terminal-1460595808-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="2219.4" />
     </clipPath>
-    <clipPath id="terminal-460130354-line-0">
+    <clipPath id="terminal-1460595808-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-1">
+<clipPath id="terminal-1460595808-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-2">
+<clipPath id="terminal-1460595808-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-3">
+<clipPath id="terminal-1460595808-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-4">
+<clipPath id="terminal-1460595808-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-5">
+<clipPath id="terminal-1460595808-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-6">
+<clipPath id="terminal-1460595808-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-7">
+<clipPath id="terminal-1460595808-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-8">
+<clipPath id="terminal-1460595808-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-9">
+<clipPath id="terminal-1460595808-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-10">
+<clipPath id="terminal-1460595808-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-11">
+<clipPath id="terminal-1460595808-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-12">
+<clipPath id="terminal-1460595808-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-13">
+<clipPath id="terminal-1460595808-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-14">
+<clipPath id="terminal-1460595808-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-15">
+<clipPath id="terminal-1460595808-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-16">
+<clipPath id="terminal-1460595808-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-17">
+<clipPath id="terminal-1460595808-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-18">
+<clipPath id="terminal-1460595808-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-19">
+<clipPath id="terminal-1460595808-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-20">
+<clipPath id="terminal-1460595808-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-21">
+<clipPath id="terminal-1460595808-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-22">
+<clipPath id="terminal-1460595808-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-23">
+<clipPath id="terminal-1460595808-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-24">
+<clipPath id="terminal-1460595808-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-25">
+<clipPath id="terminal-1460595808-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-26">
+<clipPath id="terminal-1460595808-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-27">
+<clipPath id="terminal-1460595808-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-28">
+<clipPath id="terminal-1460595808-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-29">
+<clipPath id="terminal-1460595808-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-30">
+<clipPath id="terminal-1460595808-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-31">
+<clipPath id="terminal-1460595808-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-32">
+<clipPath id="terminal-1460595808-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-33">
+<clipPath id="terminal-1460595808-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-34">
+<clipPath id="terminal-1460595808-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-35">
+<clipPath id="terminal-1460595808-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-36">
+<clipPath id="terminal-1460595808-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-37">
+<clipPath id="terminal-1460595808-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-38">
+<clipPath id="terminal-1460595808-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-39">
+<clipPath id="terminal-1460595808-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-40">
+<clipPath id="terminal-1460595808-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-41">
+<clipPath id="terminal-1460595808-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-42">
+<clipPath id="terminal-1460595808-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-43">
+<clipPath id="terminal-1460595808-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-44">
+<clipPath id="terminal-1460595808-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-45">
+<clipPath id="terminal-1460595808-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-46">
+<clipPath id="terminal-1460595808-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-47">
+<clipPath id="terminal-1460595808-line-47">
     <rect x="0" y="1148.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-48">
+<clipPath id="terminal-1460595808-line-48">
     <rect x="0" y="1172.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-49">
+<clipPath id="terminal-1460595808-line-49">
     <rect x="0" y="1197.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-50">
+<clipPath id="terminal-1460595808-line-50">
     <rect x="0" y="1221.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-51">
+<clipPath id="terminal-1460595808-line-51">
     <rect x="0" y="1245.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-52">
+<clipPath id="terminal-1460595808-line-52">
     <rect x="0" y="1270.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-53">
+<clipPath id="terminal-1460595808-line-53">
     <rect x="0" y="1294.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-54">
+<clipPath id="terminal-1460595808-line-54">
     <rect x="0" y="1319.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-55">
+<clipPath id="terminal-1460595808-line-55">
     <rect x="0" y="1343.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-56">
+<clipPath id="terminal-1460595808-line-56">
     <rect x="0" y="1367.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-57">
+<clipPath id="terminal-1460595808-line-57">
     <rect x="0" y="1392.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-58">
+<clipPath id="terminal-1460595808-line-58">
     <rect x="0" y="1416.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-59">
+<clipPath id="terminal-1460595808-line-59">
     <rect x="0" y="1441.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-60">
+<clipPath id="terminal-1460595808-line-60">
     <rect x="0" y="1465.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-61">
+<clipPath id="terminal-1460595808-line-61">
     <rect x="0" y="1489.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-62">
+<clipPath id="terminal-1460595808-line-62">
     <rect x="0" y="1514.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-63">
+<clipPath id="terminal-1460595808-line-63">
     <rect x="0" y="1538.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-64">
+<clipPath id="terminal-1460595808-line-64">
     <rect x="0" y="1563.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-65">
+<clipPath id="terminal-1460595808-line-65">
     <rect x="0" y="1587.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-66">
+<clipPath id="terminal-1460595808-line-66">
     <rect x="0" y="1611.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-67">
+<clipPath id="terminal-1460595808-line-67">
     <rect x="0" y="1636.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-68">
+<clipPath id="terminal-1460595808-line-68">
     <rect x="0" y="1660.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-69">
+<clipPath id="terminal-1460595808-line-69">
     <rect x="0" y="1685.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-70">
+<clipPath id="terminal-1460595808-line-70">
     <rect x="0" y="1709.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-71">
+<clipPath id="terminal-1460595808-line-71">
     <rect x="0" y="1733.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-72">
+<clipPath id="terminal-1460595808-line-72">
     <rect x="0" y="1758.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-73">
+<clipPath id="terminal-1460595808-line-73">
     <rect x="0" y="1782.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-74">
+<clipPath id="terminal-1460595808-line-74">
     <rect x="0" y="1807.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-75">
+<clipPath id="terminal-1460595808-line-75">
     <rect x="0" y="1831.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-76">
+<clipPath id="terminal-1460595808-line-76">
     <rect x="0" y="1855.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-77">
+<clipPath id="terminal-1460595808-line-77">
     <rect x="0" y="1880.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-78">
+<clipPath id="terminal-1460595808-line-78">
     <rect x="0" y="1904.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-79">
+<clipPath id="terminal-1460595808-line-79">
     <rect x="0" y="1929.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-80">
+<clipPath id="terminal-1460595808-line-80">
     <rect x="0" y="1953.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-81">
+<clipPath id="terminal-1460595808-line-81">
     <rect x="0" y="1977.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-82">
+<clipPath id="terminal-1460595808-line-82">
     <rect x="0" y="2002.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-83">
+<clipPath id="terminal-1460595808-line-83">
     <rect x="0" y="2026.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-84">
+<clipPath id="terminal-1460595808-line-84">
     <rect x="0" y="2051.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-85">
+<clipPath id="terminal-1460595808-line-85">
     <rect x="0" y="2075.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-460130354-line-86">
+<clipPath id="terminal-1460595808-line-86">
     <rect x="0" y="2099.9" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-1460595808-line-87">
+    <rect x="0" y="2124.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1460595808-line-88">
+    <rect x="0" y="2148.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1460595808-line-89">
+    <rect x="0" y="2173.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="2195.2" rx="8"/><text class="terminal-460130354-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="2268.4" rx="8"/><text class="terminal-1460595808-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-460130354-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1460595808-clip-terminal)">
     
-    <g class="terminal-460130354-matrix">
-    <text class="terminal-460130354-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-460130354-line-0)">
-</text><text class="terminal-460130354-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-460130354-line-1)">Usage:&#160;</text><text class="terminal-460130354-r1" x="97.6" y="44.4" textLength="414.8" clip-path="url(#terminal-460130354-line-1)">breeze&#160;[OPTIONS]&#160;COMMAND&#160;[ARGS]...</text><text class="terminal-460130354-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-460130354-line-1)">
-</text><text class="terminal-460130354-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-460130354-line-2)">
-</text><text class="terminal-460130354-r4" x="0" y="93.2" textLength="24.4" clip-path="url(#terminal-460130354-line-3)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="93.2" textLength="1415.2" clip-path="url(#terminal-460130354-line-3)">&#160;Basic&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;───────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="93.2" textLength="24.4" clip-pat [...]
-</text><text class="terminal-460130354-r4" x="0" y="117.6" textLength="12.2" clip-path="url(#terminal-460130354-line-4)">│</text><text class="terminal-460130354-r5" x="24.4" y="117.6" textLength="12.2" clip-path="url(#terminal-460130354-line-4)">-</text><text class="terminal-460130354-r5" x="36.6" y="117.6" textLength="85.4" clip-path="url(#terminal-460130354-line-4)">-python</text><text class="terminal-460130354-r6" x="305" y="117.6" textLength="24.4" clip-path="url(#terminal-460130354- [...]
-</text><text class="terminal-460130354-r4" x="0" y="142" textLength="12.2" clip-path="url(#terminal-460130354-line-5)">│</text><text class="terminal-460130354-r4" x="353.8" y="142" textLength="732" clip-path="url(#terminal-460130354-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-460130354-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-460130354-line-6)">│</text><text class="terminal-460130354-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-460130354-line-6)">-</text><text class="terminal-460130354-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-460130354-line-6)">-backend</text><text class="terminal-460130354-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-460130354 [...]
-</text><text class="terminal-460130354-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-460130354-line-7)">│</text><text class="terminal-460130354-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-460130354-line-7)">-</text><text class="terminal-460130354-r5" x="36.6" y="190.8" textLength="109.8" clip-path="url(#terminal-460130354-line-7)">-postgres</text><text class="terminal-460130354-r5" x="146.4" y="190.8" textLength="97.6" clip-path="url(#terminal-46013 [...]
-</text><text class="terminal-460130354-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-460130354-line-8)">│</text><text class="terminal-460130354-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-460130354-line-8)">-</text><text class="terminal-460130354-r5" x="36.6" y="215.2" textLength="73.2" clip-path="url(#terminal-460130354-line-8)">-mysql</text><text class="terminal-460130354-r5" x="109.8" y="215.2" textLength="97.6" clip-path="url(#terminal-460130354 [...]
-</text><text class="terminal-460130354-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-460130354-line-9)">│</text><text class="terminal-460130354-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-460130354-line-9)">-</text><text class="terminal-460130354-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-460130354-line-9)">-mssql</text><text class="terminal-460130354-r5" x="109.8" y="239.6" textLength="97.6" clip-path="url(#terminal-460130354 [...]
-</text><text class="terminal-460130354-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-460130354-line-10)">│</text><text class="terminal-460130354-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-460130354-line-10)">-</text><text class="terminal-460130354-r5" x="36.6" y="264" textLength="146.4" clip-path="url(#terminal-460130354-line-10)">-integration</text><text class="terminal-460130354-r2" x="353.8" y="264" textLength="1085.8" clip-path="url(#terminal-46013 [...]
-</text><text class="terminal-460130354-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-460130354-line-11)">│</text><text class="terminal-460130354-r7" x="353.8" y="288.4" textLength="1085.8" clip-path="url(#terminal-460130354-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-460130354-r4" x="1451.8 [...]
-</text><text class="terminal-460130354-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-460130354-line-12)">│</text><text class="terminal-460130354-r7" x="353.8" y="312.8" textLength="1085.8" clip-path="url(#terminal-460130354-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-460130354-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-460130354-line-13)">│</text><text class="terminal-460130354-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-460130354-line-13)">-</text><text class="terminal-460130354-r5" x="36.6" y="337.2" textLength="97.6" clip-path="url(#terminal-460130354-line-13)">-forward</text><text class="terminal-460130354-r5" x="134.2" y="337.2" textLength="146.4" clip-path="url(#terminal-460 [...]
-</text><text class="terminal-460130354-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-460130354-line-14)">│</text><text class="terminal-460130354-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-460130354-line-14)">-</text><text class="terminal-460130354-r5" x="36.6" y="361.6" textLength="36.6" clip-path="url(#terminal-460130354-line-14)">-db</text><text class="terminal-460130354-r5" x="73.2" y="361.6" textLength="73.2" clip-path="url(#terminal-460130354- [...]
-</text><text class="terminal-460130354-r4" x="0" y="386" textLength="1464" clip-path="url(#terminal-460130354-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-460130354-line-15)">
-</text><text class="terminal-460130354-r4" x="0" y="410.4" textLength="24.4" clip-path="url(#terminal-460130354-line-16)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="410.4" textLength="1415.2" clip-path="url(#terminal-460130354-line-16)">&#160;Advanced&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="410.4" textLength="24.4" cli [...]
-</text><text class="terminal-460130354-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-460130354-line-17)">│</text><text class="terminal-460130354-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-460130354-line-17)">-</text><text class="terminal-460130354-r5" x="36.6" y="434.8" textLength="48.8" clip-path="url(#terminal-460130354-line-17)">-use</text><text class="terminal-460130354-r5" x="85.4" y="434.8" textLength="195.2" clip-path="url(#terminal-46013035 [...]
-</text><text class="terminal-460130354-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-460130354-line-18)">│</text><text class="terminal-460130354-r2" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-460130354-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-460130354-r4" x="1451.8" y="459.2" textLength="12.2 [...]
-</text><text class="terminal-460130354-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-460130354-line-19)">│</text><text class="terminal-460130354-r2" x="366" y="483.6" textLength="573.4" clip-path="url(#terminal-460130354-line-19)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-460130354-r5" x="939.4" y="483.6" textLength="12.2" clip-path="url(#terminal-460130354-line-19)">-</text><text class="terminal-460130354-r [...]
-</text><text class="terminal-460130354-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-460130354-line-20)">│</text><text class="terminal-460130354-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-460130354-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;&#160;& [...]
-</text><text class="terminal-460130354-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-460130354-line-21)">│</text><text class="terminal-460130354-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-460130354-line-21)">-</text><text class="terminal-460130354-r5" x="36.6" y="532.4" textLength="97.6" clip-path="url(#terminal-460130354-line-21)">-airflow</text><text class="terminal-460130354-r5" x="134.2" y="532.4" textLength="85.4" clip-path="url(#terminal-4601 [...]
-</text><text class="terminal-460130354-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-460130354-line-22)">│</text><text class="terminal-460130354-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-460130354-line-22)">-</text><text class="terminal-460130354-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-460130354-line-22)">-use</text><text class="terminal-460130354-r5" x="85.4" y="556.8" textLength="231.8" clip-path="url(#terminal-46013035 [...]
-</text><text class="terminal-460130354-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-460130354-line-23)">│</text><text class="terminal-460130354-r2" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-460130354-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;&#160; [...]
-</text><text class="terminal-460130354-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-460130354-line-24)">│</text><text class="terminal-460130354-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-460130354-line-24)">-</text><text class="terminal-460130354-r5" x="36.6" y="605.6" textLength="97.6" clip-path="url(#terminal-460130354-line-24)">-package</text><text class="terminal-460130354-r5" x="134.2" y="605.6" textLength="85.4" clip-path="url(#terminal-4601 [...]
-</text><text class="terminal-460130354-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-460130354-line-25)">│</text><text class="terminal-460130354-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-460130354-line-25)">-</text><text class="terminal-460130354-r5" x="36.6" y="630" textLength="73.2" clip-path="url(#terminal-460130354-line-25)">-force</text><text class="terminal-460130354-r5" x="109.8" y="630" textLength="73.2" clip-path="url(#terminal-460130354-line [...]
-</text><text class="terminal-460130354-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-460130354-line-26)">│</text><text class="terminal-460130354-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-460130354-line-26)">-</text><text class="terminal-460130354-r5" x="36.6" y="654.4" textLength="73.2" clip-path="url(#terminal-460130354-line-26)">-mount</text><text class="terminal-460130354-r5" x="109.8" y="654.4" textLength="97.6" clip-path="url(#terminal-460130 [...]
-</text><text class="terminal-460130354-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-460130354-line-27)">│</text><text class="terminal-460130354-r2" x="366" y="678.8" textLength="1073.6" clip-path="url(#terminal-460130354-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;&#160 [...]
-</text><text class="terminal-460130354-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-460130354-line-28)">│</text><text class="terminal-460130354-r7" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-460130354-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;&#160;& [...]
-</text><text class="terminal-460130354-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-460130354-line-29)">│</text><text class="terminal-460130354-r4" x="366" y="727.6" textLength="1073.6" clip-path="url(#terminal-460130354-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;&#1 [...]
-</text><text class="terminal-460130354-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-460130354-line-30)">│</text><text class="terminal-460130354-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-460130354-line-30)">-</text><text class="terminal-460130354-r5" x="36.6" y="752" textLength="85.4" clip-path="url(#terminal-460130354-line-30)">-debian</text><text class="terminal-460130354-r5" x="122" y="752" textLength="97.6" clip-path="url(#terminal-460130354-line- [...]
-</text><text class="terminal-460130354-r4" x="0" y="776.4" textLength="1464" clip-path="url(#terminal-460130354-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="776.4" textLength="12.2" clip-path="url(#terminal-460130354-line-31)">
-</text><text class="terminal-460130354-r4" x="0" y="800.8" textLength="24.4" clip-path="url(#terminal-460130354-line-32)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="800.8" textLength="1415.2" clip-path="url(#terminal-460130354-line-32)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="800.8" textLength="24.4" clip-path="url(#terminal-46013035 [...]
-</text><text class="terminal-460130354-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-460130354-line-33)">│</text><text class="terminal-460130354-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-460130354-line-33)">-</text><text class="terminal-460130354-r5" x="36.6" y="825.2" textLength="97.6" clip-path="url(#terminal-460130354-line-33)">-verbose</text><text class="terminal-460130354-r6" x="280.6" y="825.2" textLength="24.4" clip-path="url(#terminal-4601 [...]
-</text><text class="terminal-460130354-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-460130354-line-34)">│</text><text class="terminal-460130354-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-460130354-line-34)">-</text><text class="terminal-460130354-r5" x="36.6" y="849.6" textLength="48.8" clip-path="url(#terminal-460130354-line-34)">-dry</text><text class="terminal-460130354-r5" x="85.4" y="849.6" textLength="48.8" clip-path="url(#terminal-460130354 [...]
-</text><text class="terminal-460130354-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-460130354-line-35)">│</text><text class="terminal-460130354-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-460130354-line-35)">-</text><text class="terminal-460130354-r5" x="36.6" y="874" textLength="85.4" clip-path="url(#terminal-460130354-line-35)">-github</text><text class="terminal-460130354-r5" x="122" y="874" textLength="134.2" clip-path="url(#terminal-460130354-line [...]
-</text><text class="terminal-460130354-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-460130354-line-36)">│</text><text class="terminal-460130354-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-460130354-line-36)">-</text><text class="terminal-460130354-r5" x="36.6" y="898.4" textLength="85.4" clip-path="url(#terminal-460130354-line-36)">-answer</text><text class="terminal-460130354-r6" x="280.6" y="898.4" textLength="24.4" clip-path="url(#terminal-46013 [...]
-</text><text class="terminal-460130354-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-460130354-line-37)">│</text><text class="terminal-460130354-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-460130354-line-37)">-</text><text class="terminal-460130354-r5" x="36.6" y="922.8" textLength="61" clip-path="url(#terminal-460130354-line-37)">-help</text><text class="terminal-460130354-r6" x="280.6" y="922.8" textLength="24.4" clip-path="url(#terminal-460130354 [...]
-</text><text class="terminal-460130354-r4" x="0" y="947.2" textLength="1464" clip-path="url(#terminal-460130354-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="947.2" textLength="12.2" clip-path="url(#terminal-460130354-line-38)">
-</text><text class="terminal-460130354-r4" x="0" y="971.6" textLength="24.4" clip-path="url(#terminal-460130354-line-39)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="971.6" textLength="1415.2" clip-path="url(#terminal-460130354-line-39)">&#160;Developer&#160;tools&#160;───────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="971.6" textLength="24.4" clip-path="url(#terminal-460 [...]
-</text><text class="terminal-460130354-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-460130354-line-40)">│</text><text class="terminal-460130354-r5" x="24.4" y="996" textLength="183" clip-path="url(#terminal-460130354-line-40)">shell&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="231.8" y="996" textLength="1207.8" clip-path="url(#terminal-460130354-line-40)">Enter&#160;breeze.py&#160;environment.&#160;this&#160;is&# [...]
-</text><text class="terminal-460130354-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-460130354-line-41)">│</text><text class="terminal-460130354-r5" x="24.4" y="1020.4" textLength="183" clip-path="url(#terminal-460130354-line-41)">start-airflow&#160;&#160;</text><text class="terminal-460130354-r2" x="231.8" y="1020.4" textLength="1207.8" clip-path="url(#terminal-460130354-line-41)">Enter&#160;breeze.py&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#160;com [...]
-</text><text class="terminal-460130354-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-460130354-line-42)">│</text><text class="terminal-460130354-r5" x="24.4" y="1044.8" textLength="183" clip-path="url(#terminal-460130354-line-42)">exec&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="231.8" y="1044.8" textLength="1207.8" clip-path="url(#terminal-460130354-line-42)">Joins&#160;the&#160;interactive&#160;shell&# [...]
-</text><text class="terminal-460130354-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-460130354-line-43)">│</text><text class="terminal-460130354-r5" x="24.4" y="1069.2" textLength="183" clip-path="url(#terminal-460130354-line-43)">stop&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="231.8" y="1069.2" textLength="1207.8" clip-path="url(#terminal-460130354-line-43)">Stop&#160;running&#160;breeze&#160;environme [...]
-</text><text class="terminal-460130354-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-460130354-line-44)">│</text><text class="terminal-460130354-r5" x="24.4" y="1093.6" textLength="183" clip-path="url(#terminal-460130354-line-44)">build-docs&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="231.8" y="1093.6" textLength="1207.8" clip-path="url(#terminal-460130354-line-44)">Build&#160;documentation&#160;in&#160;the&#160;container.&#160;&#160;&#160 [...]
-</text><text class="terminal-460130354-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-460130354-line-45)">│</text><text class="terminal-460130354-r5" x="24.4" y="1118" textLength="183" clip-path="url(#terminal-460130354-line-45)">static-checks&#160;&#160;</text><text class="terminal-460130354-r2" x="231.8" y="1118" textLength="1207.8" clip-path="url(#terminal-460130354-line-45)">Run&#160;static&#160;checks.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-460130354-r4" x="0" y="1142.4" textLength="1464" clip-path="url(#terminal-460130354-line-46)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="1142.4" textLength="12.2" clip-path="url(#terminal-460130354-line-46)">
-</text><text class="terminal-460130354-r4" x="0" y="1166.8" textLength="24.4" clip-path="url(#terminal-460130354-line-47)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="1166.8" textLength="1415.2" clip-path="url(#terminal-460130354-line-47)">&#160;Testing&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="1166.8" textLength="24.4" clip-path="url(#terminal-46013 [...]
-</text><text class="terminal-460130354-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-460130354-line-48)">│</text><text class="terminal-460130354-r5" x="24.4" y="1191.2" textLength="256.2" clip-path="url(#terminal-460130354-line-48)">docker-compose-tests&#160;</text><text class="terminal-460130354-r2" x="305" y="1191.2" textLength="1134.6" clip-path="url(#terminal-460130354-line-48)">Run&#160;docker-compose&#160;tests.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-460130354-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-460130354-line-49)">│</text><text class="terminal-460130354-r5" x="24.4" y="1215.6" textLength="256.2" clip-path="url(#terminal-460130354-line-49)">tests&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="305" y="1215.6" textLength="1134.6" clip-path="url(#terminal-460130354-line-49)">Run&#160;the& [...]
-</text><text class="terminal-460130354-r4" x="0" y="1240" textLength="1464" clip-path="url(#terminal-460130354-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="1240" textLength="12.2" clip-path="url(#terminal-460130354-line-50)">
-</text><text class="terminal-460130354-r4" x="0" y="1264.4" textLength="24.4" clip-path="url(#terminal-460130354-line-51)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="1264.4" textLength="1415.2" clip-path="url(#terminal-460130354-line-51)">&#160;Configuration&#160;&amp;&#160;maintenance&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="1264.4" textLength="24.4" clip-path="url(# [...]
-</text><text class="terminal-460130354-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-460130354-line-52)">│</text><text class="terminal-460130354-r5" x="24.4" y="1288.8" textLength="305" clip-path="url(#terminal-460130354-line-52)">cleanup&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="353.8" y="1288.8" textLength="1085.8" clip-path="url(#terminal-460130354-line-52)" [...]
-</text><text class="terminal-460130354-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-460130354-line-53)">│</text><text class="terminal-460130354-r2" x="353.8" y="1313.2" textLength="1085.8" clip-path="url(#terminal-460130354-line-53)">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;&#16 [...]
-</text><text class="terminal-460130354-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-460130354-line-54)">│</text><text class="terminal-460130354-r5" x="24.4" y="1337.6" textLength="305" clip-path="url(#terminal-460130354-line-54)">self-upgrade&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="353.8" y="1337.6" textLength="1085.8" clip-path="url(#terminal-460130354-line-54)">Self&#160;upgrade&#160;B [...]
-</text><text class="terminal-460130354-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-460130354-line-55)">│</text><text class="terminal-460130354-r5" x="24.4" y="1362" textLength="305" clip-path="url(#terminal-460130354-line-55)">setup-autocomplete&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="353.8" y="1362" textLength="1085.8" clip-path="url(#terminal-460130354-line-55)">Enables&#160;autocompletion&#160;of&#160;breeze&#160;command [...]
-</text><text class="terminal-460130354-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-460130354-line-56)">│</text><text class="terminal-460130354-r5" x="24.4" y="1386.4" textLength="305" clip-path="url(#terminal-460130354-line-56)">config&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="353.8" y="1386.4" textLength="1085.8" clip-path="url(#terminal-460130354-line [...]
-</text><text class="terminal-460130354-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-460130354-line-57)">│</text><text class="terminal-460130354-r5" x="24.4" y="1410.8" textLength="305" clip-path="url(#terminal-460130354-line-57)">regenerate-command-images</text><text class="terminal-460130354-r2" x="353.8" y="1410.8" textLength="1085.8" clip-path="url(#terminal-460130354-line-57)">Regenerate&#160;breeze&#160;command&#160;images.&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-460130354-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-460130354-line-58)">│</text><text class="terminal-460130354-r5" x="24.4" y="1435.2" textLength="305" clip-path="url(#terminal-460130354-line-58)">command-hash-export&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="353.8" y="1435.2" textLength="1085.8" clip-path="url(#terminal-460130354-line-58)">Outputs&#160;hash&#160;of&#160;all&#160;click&#160;commands [...]
-</text><text class="terminal-460130354-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-460130354-line-59)">│</text><text class="terminal-460130354-r2" x="353.8" y="1459.6" textLength="1085.8" clip-path="url(#terminal-460130354-line-59)">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-460130354-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-460130354-line-60)">│</text><text class="terminal-460130354-r5" x="24.4" y="1484" textLength="305" clip-path="url(#terminal-460130354-line-60)">version&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="353.8" y="1484" textLength="1085.8" clip-path="url(#terminal-460130354-line-60)">Print [...]
-</text><text class="terminal-460130354-r4" x="0" y="1508.4" textLength="1464" clip-path="url(#terminal-460130354-line-61)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="1508.4" textLength="12.2" clip-path="url(#terminal-460130354-line-61)">
-</text><text class="terminal-460130354-r4" x="0" y="1532.8" textLength="24.4" clip-path="url(#terminal-460130354-line-62)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="1532.8" textLength="1415.2" clip-path="url(#terminal-460130354-line-62)">&#160;CI&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="1532.8" textLength="24.4" clip-path="url(#term [...]
-</text><text class="terminal-460130354-r4" x="0" y="1557.2" textLength="12.2" clip-path="url(#terminal-460130354-line-63)">│</text><text class="terminal-460130354-r5" x="24.4" y="1557.2" textLength="170.8" clip-path="url(#terminal-460130354-line-63)">build-image&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="219.6" y="1557.2" textLength="1220" clip-path="url(#terminal-460130354-line-63)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;f [...]
-</text><text class="terminal-460130354-r4" x="0" y="1581.6" textLength="12.2" clip-path="url(#terminal-460130354-line-64)">│</text><text class="terminal-460130354-r5" x="24.4" y="1581.6" textLength="170.8" clip-path="url(#terminal-460130354-line-64)">pull-image&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="219.6" y="1581.6" textLength="1220" clip-path="url(#terminal-460130354-line-64)">Pull&#160;and&#160;optionally&#160;verify&#160;CI&#160;images&#160;-&#160;possib [...]
-</text><text class="terminal-460130354-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-460130354-line-65)">│</text><text class="terminal-460130354-r5" x="24.4" y="1606" textLength="170.8" clip-path="url(#terminal-460130354-line-65)">verify-image&#160;&#160;</text><text class="terminal-460130354-r2" x="219.6" y="1606" textLength="1220" clip-path="url(#terminal-460130354-line-65)">Verify&#160;CI&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="terminal-460130354-r4" x="0" y="1630.4" textLength="1464" clip-path="url(#terminal-460130354-line-66)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="1630.4" textLength="12.2" clip-path="url(#terminal-460130354-line-66)">
-</text><text class="terminal-460130354-r4" x="0" y="1654.8" textLength="24.4" clip-path="url(#terminal-460130354-line-67)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="1654.8" textLength="1415.2" clip-path="url(#terminal-460130354-line-67)">&#160;Production&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="1654.8" textLength="24.4" clip-path="url(#term [...]
-</text><text class="terminal-460130354-r4" x="0" y="1679.2" textLength="12.2" clip-path="url(#terminal-460130354-line-68)">│</text><text class="terminal-460130354-r5" x="24.4" y="1679.2" textLength="207.4" clip-path="url(#terminal-460130354-line-68)">build-prod-image&#160;</text><text class="terminal-460130354-r2" x="256.2" y="1679.2" textLength="1183.4" clip-path="url(#terminal-460130354-line-68)">Build&#160;Production&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#16 [...]
-</text><text class="terminal-460130354-r4" x="0" y="1703.6" textLength="12.2" clip-path="url(#terminal-460130354-line-69)">│</text><text class="terminal-460130354-r2" x="256.2" y="1703.6" textLength="1183.4" clip-path="url(#terminal-460130354-line-69)">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-460130354-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-460130354-line-70)">│</text><text class="terminal-460130354-r5" x="24.4" y="1728" textLength="207.4" clip-path="url(#terminal-460130354-line-70)">pull-prod-image&#160;&#160;</text><text class="terminal-460130354-r2" x="256.2" y="1728" textLength="1183.4" clip-path="url(#terminal-460130354-line-70)">Pull&#160;and&#160;optionally&#160;verify&#160;Production&#160;images&#160;-&#160;possibly& [...]
-</text><text class="terminal-460130354-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-460130354-line-71)">│</text><text class="terminal-460130354-r5" x="24.4" y="1752.4" textLength="207.4" clip-path="url(#terminal-460130354-line-71)">verify-prod-image</text><text class="terminal-460130354-r2" x="256.2" y="1752.4" textLength="1183.4" clip-path="url(#terminal-460130354-line-71)">Verify&#160;Production&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-460130354-r4" x="0" y="1776.8" textLength="1464" clip-path="url(#terminal-460130354-line-72)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="1776.8" textLength="12.2" clip-path="url(#terminal-460130354-line-72)">
-</text><text class="terminal-460130354-r4" x="0" y="1801.2" textLength="24.4" clip-path="url(#terminal-460130354-line-73)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="1801.2" textLength="1415.2" clip-path="url(#terminal-460130354-line-73)">&#160;CI&#160;commands&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="1801.2" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-460130354-r4" x="0" y="1825.6" textLength="12.2" clip-path="url(#terminal-460130354-line-74)">│</text><text class="terminal-460130354-r5" x="24.4" y="1825.6" textLength="378.2" clip-path="url(#terminal-460130354-line-74)">fix-ownership&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="427" y="1825.6" textLength="1012.6" clip-path="url(#terminal-460130354-lin [...]
-</text><text class="terminal-460130354-r4" x="0" y="1850" textLength="12.2" clip-path="url(#terminal-460130354-line-75)">│</text><text class="terminal-460130354-r5" x="24.4" y="1850" textLength="378.2" clip-path="url(#terminal-460130354-line-75)">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-460130354-r2" x="427" y="1850" textLength="1012.6" clip-path="url(#terminal-4601 [...]
-</text><text class="terminal-460130354-r4" x="0" y="1874.4" textLength="12.2" clip-path="url(#terminal-460130354-line-76)">│</text><text class="terminal-460130354-r5" x="24.4" y="1874.4" textLength="378.2" clip-path="url(#terminal-460130354-line-76)">resource-check&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="427" y="1874.4" textLength="1012.6" clip-path="url(#terminal-460130354-line-76) [...]
-</text><text class="terminal-460130354-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-460130354-line-77)">│</text><text class="terminal-460130354-r5" x="24.4" y="1898.8" textLength="378.2" clip-path="url(#terminal-460130354-line-77)">selective-check&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="427" y="1898.8" textLength="1012.6" clip-path="url(#terminal-460130354-line-77)">Che [...]
-</text><text class="terminal-460130354-r4" x="0" y="1923.2" textLength="12.2" clip-path="url(#terminal-460130354-line-78)">│</text><text class="terminal-460130354-r5" x="24.4" y="1923.2" textLength="378.2" clip-path="url(#terminal-460130354-line-78)">find-newer-dependencies&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="427" y="1923.2" textLength="1012.6" clip-path="url(#terminal-460130354-line-78)">Finds&#160;which&#160;dependencies&#160;are [...]
-</text><text class="terminal-460130354-r4" x="0" y="1947.6" textLength="1464" clip-path="url(#terminal-460130354-line-79)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="1947.6" textLength="12.2" clip-path="url(#terminal-460130354-line-79)">
-</text><text class="terminal-460130354-r4" x="0" y="1972" textLength="24.4" clip-path="url(#terminal-460130354-line-80)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="1972" textLength="1415.2" clip-path="url(#terminal-460130354-line-80)">&#160;Release&#160;management&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="1972" textLength="24.4" clip-path="url(#terminal-460130 [...]
-</text><text class="terminal-460130354-r4" x="0" y="1996.4" textLength="12.2" clip-path="url(#terminal-460130354-line-81)">│</text><text class="terminal-460130354-r5" x="24.4" y="1996.4" textLength="402.6" clip-path="url(#terminal-460130354-line-81)">verify-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="451.4" y="1996.4" textLength="988.2" clip-path="url(#terminal-460130354-line-81)">Verifies&#160;if&#160;all&#160;prov [...]
-</text><text class="terminal-460130354-r4" x="0" y="2020.8" textLength="12.2" clip-path="url(#terminal-460130354-line-82)">│</text><text class="terminal-460130354-r5" x="24.4" y="2020.8" textLength="402.6" clip-path="url(#terminal-460130354-line-82)">prepare-provider-documentation&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="451.4" y="2020.8" textLength="988.2" clip-path="url(#terminal-460130354-line-82)">Prepare&#160;CHANGELOG,&#160;README&#160;and&#160;COMMITS&#160;in [...]
-</text><text class="terminal-460130354-r4" x="0" y="2045.2" textLength="12.2" clip-path="url(#terminal-460130354-line-83)">│</text><text class="terminal-460130354-r5" x="24.4" y="2045.2" textLength="402.6" clip-path="url(#terminal-460130354-line-83)">prepare-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="451.4" y="2045.2" textLength="988.2" clip-path="url(#terminal-460130354-line-83)">Prepare&#160;sdist/whl&#160;packages&#16 [...]
-</text><text class="terminal-460130354-r4" x="0" y="2069.6" textLength="12.2" clip-path="url(#terminal-460130354-line-84)">│</text><text class="terminal-460130354-r5" x="24.4" y="2069.6" textLength="402.6" clip-path="url(#terminal-460130354-line-84)">prepare-airflow-package&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="451.4" y="2069.6" textLength="988.2" clip-path="url(#terminal-460130354-line-84)">Prepare&#160;sdist/whl&#160;pa [...]
-</text><text class="terminal-460130354-r4" x="0" y="2094" textLength="12.2" clip-path="url(#terminal-460130354-line-85)">│</text><text class="terminal-460130354-r5" x="24.4" y="2094" textLength="402.6" clip-path="url(#terminal-460130354-line-85)">release-prod-images&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="451.4" y="2094" textLength="988.2" clip-path="url(#terminal-460130354-line-85)">Release&#160;pro [...]
-</text><text class="terminal-460130354-r4" x="0" y="2118.4" textLength="12.2" clip-path="url(#terminal-460130354-line-86)">│</text><text class="terminal-460130354-r5" x="24.4" y="2118.4" textLength="402.6" clip-path="url(#terminal-460130354-line-86)">generate-constraints&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="451.4" y="2118.4" textLength="988.2" clip-path="url(#terminal-460130354-line-86)">Generates&#160; [...]
-</text><text class="terminal-460130354-r4" x="0" y="2142.8" textLength="1464" clip-path="url(#terminal-460130354-line-87)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="2142.8" textLength="12.2" clip-path="url(#terminal-460130354-line-87)">
+    <g class="terminal-1460595808-matrix">
+    <text class="terminal-1460595808-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1460595808-line-0)">
+</text><text class="terminal-1460595808-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1460595808-line-1)">Usage:&#160;</text><text class="terminal-1460595808-r1" x="97.6" y="44.4" textLength="414.8" clip-path="url(#terminal-1460595808-line-1)">breeze&#160;[OPTIONS]&#160;COMMAND&#160;[ARGS]...</text><text class="terminal-1460595808-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-1)">
+</text><text class="terminal-1460595808-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1460595808-line-2)">
+</text><text class="terminal-1460595808-r4" x="0" y="93.2" textLength="24.4" clip-path="url(#terminal-1460595808-line-3)">╭─</text><text class="terminal-1460595808-r4" x="24.4" y="93.2" textLength="1415.2" clip-path="url(#terminal-1460595808-line-3)">&#160;Basic&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;───────────────────────────────────────────────────────────────────────</text><text class="terminal-1460595808-r4" x="1439.6" y="93.2" textLength="24.4" cli [...]
+</text><text class="terminal-1460595808-r4" x="0" y="117.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-4)">│</text><text class="terminal-1460595808-r5" x="24.4" y="117.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-4)">-</text><text class="terminal-1460595808-r5" x="36.6" y="117.6" textLength="85.4" clip-path="url(#terminal-1460595808-line-4)">-python</text><text class="terminal-1460595808-r6" x="305" y="117.6" textLength="24.4" clip-path="url(#terminal-146 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="142" textLength="12.2" clip-path="url(#terminal-1460595808-line-5)">│</text><text class="terminal-1460595808-r4" x="353.8" y="142" textLength="732" clip-path="url(#terminal-1460595808-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-1460595808-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-6)">│</text><text class="terminal-1460595808-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-6)">-</text><text class="terminal-1460595808-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-1460595808-line-6)">-backend</text><text class="terminal-1460595808-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-14 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1460595808-line-7)">│</text><text class="terminal-1460595808-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-1460595808-line-7)">-</text><text class="terminal-1460595808-r5" x="36.6" y="190.8" textLength="109.8" clip-path="url(#terminal-1460595808-line-7)">-postgres</text><text class="terminal-1460595808-r5" x="146.4" y="190.8" textLength="97.6" clip-path="url(#termina [...]
+</text><text class="terminal-1460595808-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1460595808-line-8)">│</text><text class="terminal-1460595808-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-1460595808-line-8)">-</text><text class="terminal-1460595808-r5" x="36.6" y="215.2" textLength="73.2" clip-path="url(#terminal-1460595808-line-8)">-mysql</text><text class="terminal-1460595808-r5" x="109.8" y="215.2" textLength="97.6" clip-path="url(#terminal-14 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-9)">│</text><text class="terminal-1460595808-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-9)">-</text><text class="terminal-1460595808-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-1460595808-line-9)">-mssql</text><text class="terminal-1460595808-r5" x="109.8" y="239.6" textLength="97.6" clip-path="url(#terminal-14 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1460595808-line-10)">│</text><text class="terminal-1460595808-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1460595808-line-10)">-</text><text class="terminal-1460595808-r5" x="36.6" y="264" textLength="146.4" clip-path="url(#terminal-1460595808-line-10)">-integration</text><text class="terminal-1460595808-r2" x="353.8" y="264" textLength="1085.8" clip-path="url(#termina [...]
+</text><text class="terminal-1460595808-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-11)">│</text><text class="terminal-1460595808-r7" x="353.8" y="288.4" textLength="1085.8" clip-path="url(#terminal-1460595808-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-1460595808-r4" x="1 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1460595808-line-12)">│</text><text class="terminal-1460595808-r7" x="353.8" y="312.8" textLength="1085.8" clip-path="url(#terminal-1460595808-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-1460595808-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1460595808-line-13)">│</text><text class="terminal-1460595808-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-1460595808-line-13)">-</text><text class="terminal-1460595808-r5" x="36.6" y="337.2" textLength="97.6" clip-path="url(#terminal-1460595808-line-13)">-forward</text><text class="terminal-1460595808-r5" x="134.2" y="337.2" textLength="146.4" clip-path="url(#termi [...]
+</text><text class="terminal-1460595808-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-14)">│</text><text class="terminal-1460595808-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-14)">-</text><text class="terminal-1460595808-r5" x="36.6" y="361.6" textLength="36.6" clip-path="url(#terminal-1460595808-line-14)">-db</text><text class="terminal-1460595808-r5" x="73.2" y="361.6" textLength="73.2" clip-path="url(#terminal-146 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="386" textLength="1464" clip-path="url(#terminal-1460595808-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1460595808-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-1460595808-line-15)">
+</text><text class="terminal-1460595808-r4" x="0" y="410.4" textLength="24.4" clip-path="url(#terminal-1460595808-line-16)">╭─</text><text class="terminal-1460595808-r4" x="24.4" y="410.4" textLength="1415.2" clip-path="url(#terminal-1460595808-line-16)">&#160;Advanced&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;────────────────────────────────────────────────────────────────────</text><text class="terminal-1460595808-r4" x="1439.6" y="410.4" textLength="24.4 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1460595808-line-17)">│</text><text class="terminal-1460595808-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1460595808-line-17)">-</text><text class="terminal-1460595808-r5" x="36.6" y="434.8" textLength="48.8" clip-path="url(#terminal-1460595808-line-17)">-use</text><text class="terminal-1460595808-r5" x="85.4" y="434.8" textLength="195.2" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1460595808-line-18)">│</text><text class="terminal-1460595808-r2" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-1460595808-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-1460595808-r4" x="1451.8" y="459.2" textLength= [...]
+</text><text class="terminal-1460595808-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-19)">│</text><text class="terminal-1460595808-r2" x="366" y="483.6" textLength="573.4" clip-path="url(#terminal-1460595808-line-19)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-1460595808-r5" x="939.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-19)">-</text><text class="terminal-14605 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-1460595808-line-20)">│</text><text class="terminal-1460595808-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-1460595808-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-1460595808-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-21)">│</text><text class="terminal-1460595808-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-21)">-</text><text class="terminal-1460595808-r5" x="36.6" y="532.4" textLength="97.6" clip-path="url(#terminal-1460595808-line-21)">-airflow</text><text class="terminal-1460595808-r5" x="134.2" y="532.4" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-1460595808-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1460595808-line-22)">│</text><text class="terminal-1460595808-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-1460595808-line-22)">-</text><text class="terminal-1460595808-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-1460595808-line-22)">-use</text><text class="terminal-1460595808-r5" x="85.4" y="556.8" textLength="231.8" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1460595808-line-23)">│</text><text class="terminal-1460595808-r2" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-1460595808-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-1460595808-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-24)">│</text><text class="terminal-1460595808-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-24)">-</text><text class="terminal-1460595808-r5" x="36.6" y="605.6" textLength="97.6" clip-path="url(#terminal-1460595808-line-24)">-package</text><text class="terminal-1460595808-r5" x="134.2" y="605.6" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-1460595808-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1460595808-line-25)">│</text><text class="terminal-1460595808-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-1460595808-line-25)">-</text><text class="terminal-1460595808-r5" x="36.6" y="630" textLength="73.2" clip-path="url(#terminal-1460595808-line-25)">-force</text><text class="terminal-1460595808-r5" x="109.8" y="630" textLength="73.2" clip-path="url(#terminal-1460595 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-26)">│</text><text class="terminal-1460595808-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-26)">-</text><text class="terminal-1460595808-r5" x="36.6" y="654.4" textLength="73.2" clip-path="url(#terminal-1460595808-line-26)">-mount</text><text class="terminal-1460595808-r5" x="109.8" y="654.4" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-1460595808-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1460595808-line-27)">│</text><text class="terminal-1460595808-r2" x="366" y="678.8" textLength="1073.6" clip-path="url(#terminal-1460595808-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-1460595808-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1460595808-line-28)">│</text><text class="terminal-1460595808-r7" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-1460595808-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-1460595808-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-29)">│</text><text class="terminal-1460595808-r4" x="366" y="727.6" textLength="1073.6" clip-path="url(#terminal-1460595808-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-1460595808-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1460595808-line-30)">│</text><text class="terminal-1460595808-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-1460595808-line-30)">-</text><text class="terminal-1460595808-r5" x="36.6" y="752" textLength="85.4" clip-path="url(#terminal-1460595808-line-30)">-debian</text><text class="terminal-1460595808-r5" x="122" y="752" textLength="97.6" clip-path="url(#terminal-14605958 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="776.4" textLength="1464" clip-path="url(#terminal-1460595808-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1460595808-r2" x="1464" y="776.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-31)">
+</text><text class="terminal-1460595808-r4" x="0" y="800.8" textLength="24.4" clip-path="url(#terminal-1460595808-line-32)">╭─</text><text class="terminal-1460595808-r4" x="24.4" y="800.8" textLength="1415.2" clip-path="url(#terminal-1460595808-line-32)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1460595808-r4" x="1439.6" y="800.8" textLength="24.4" clip-path="url(#terminal-146 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1460595808-line-33)">│</text><text class="terminal-1460595808-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-1460595808-line-33)">-</text><text class="terminal-1460595808-r5" x="36.6" y="825.2" textLength="97.6" clip-path="url(#terminal-1460595808-line-33)">-verbose</text><text class="terminal-1460595808-r6" x="280.6" y="825.2" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-1460595808-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-34)">│</text><text class="terminal-1460595808-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-34)">-</text><text class="terminal-1460595808-r5" x="36.6" y="849.6" textLength="48.8" clip-path="url(#terminal-1460595808-line-34)">-dry</text><text class="terminal-1460595808-r5" x="85.4" y="849.6" textLength="48.8" clip-path="url(#terminal-14 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1460595808-line-35)">│</text><text class="terminal-1460595808-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-1460595808-line-35)">-</text><text class="terminal-1460595808-r5" x="36.6" y="874" textLength="85.4" clip-path="url(#terminal-1460595808-line-35)">-github</text><text class="terminal-1460595808-r5" x="122" y="874" textLength="134.2" clip-path="url(#terminal-1460595 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-36)">│</text><text class="terminal-1460595808-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-36)">-</text><text class="terminal-1460595808-r5" x="36.6" y="898.4" textLength="85.4" clip-path="url(#terminal-1460595808-line-36)">-answer</text><text class="terminal-1460595808-r6" x="280.6" y="898.4" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-1460595808-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1460595808-line-37)">│</text><text class="terminal-1460595808-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-1460595808-line-37)">-</text><text class="terminal-1460595808-r5" x="36.6" y="922.8" textLength="61" clip-path="url(#terminal-1460595808-line-37)">-help</text><text class="terminal-1460595808-r6" x="280.6" y="922.8" textLength="24.4" clip-path="url(#terminal-14 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="947.2" textLength="1464" clip-path="url(#terminal-1460595808-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1460595808-r2" x="1464" y="947.2" textLength="12.2" clip-path="url(#terminal-1460595808-line-38)">
+</text><text class="terminal-1460595808-r4" x="0" y="971.6" textLength="24.4" clip-path="url(#terminal-1460595808-line-39)">╭─</text><text class="terminal-1460595808-r4" x="24.4" y="971.6" textLength="1415.2" clip-path="url(#terminal-1460595808-line-39)">&#160;Developer&#160;tools&#160;───────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1460595808-r4" x="1439.6" y="971.6" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-1460595808-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-1460595808-line-40)">│</text><text class="terminal-1460595808-r5" x="24.4" y="996" textLength="183" clip-path="url(#terminal-1460595808-line-40)">shell&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="231.8" y="996" textLength="1207.8" clip-path="url(#terminal-1460595808-line-40)">Enter&#160;breeze.py&#160;environment.&#160;this&#16 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-41)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1020.4" textLength="183" clip-path="url(#terminal-1460595808-line-41)">start-airflow&#160;&#160;</text><text class="terminal-1460595808-r2" x="231.8" y="1020.4" textLength="1207.8" clip-path="url(#terminal-1460595808-line-41)">Enter&#160;breeze.py&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#1 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1460595808-line-42)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1044.8" textLength="183" clip-path="url(#terminal-1460595808-line-42)">exec&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="231.8" y="1044.8" textLength="1207.8" clip-path="url(#terminal-1460595808-line-42)">Joins&#160;the&#160;interactive&#160;s [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1460595808-line-43)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1069.2" textLength="183" clip-path="url(#terminal-1460595808-line-43)">stop&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="231.8" y="1069.2" textLength="1207.8" clip-path="url(#terminal-1460595808-line-43)">Stop&#160;running&#160;breeze&#160;env [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-44)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1093.6" textLength="183" clip-path="url(#terminal-1460595808-line-44)">build-docs&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="231.8" y="1093.6" textLength="1207.8" clip-path="url(#terminal-1460595808-line-44)">Build&#160;documentation&#160;in&#160;the&#160;container.&#160;&#160 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1460595808-line-45)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1118" textLength="183" clip-path="url(#terminal-1460595808-line-45)">static-checks&#160;&#160;</text><text class="terminal-1460595808-r2" x="231.8" y="1118" textLength="1207.8" clip-path="url(#terminal-1460595808-line-45)">Run&#160;static&#160;checks.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1142.4" textLength="1464" clip-path="url(#terminal-1460595808-line-46)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1460595808-r2" x="1464" y="1142.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-46)">
+</text><text class="terminal-1460595808-r4" x="0" y="1166.8" textLength="24.4" clip-path="url(#terminal-1460595808-line-47)">╭─</text><text class="terminal-1460595808-r4" x="24.4" y="1166.8" textLength="1415.2" clip-path="url(#terminal-1460595808-line-47)">&#160;Testing&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1460595808-r4" x="1439.6" y="1166.8" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-1460595808-line-48)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1191.2" textLength="256.2" clip-path="url(#terminal-1460595808-line-48)">docker-compose-tests&#160;</text><text class="terminal-1460595808-r2" x="305" y="1191.2" textLength="1134.6" clip-path="url(#terminal-1460595808-line-48)">Run&#160;docker-compose&#160;tests.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-49)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1215.6" textLength="256.2" clip-path="url(#terminal-1460595808-line-49)">tests&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="305" y="1215.6" textLength="1134.6" clip-path="url(#terminal-1460595808-line-49)">Run&#16 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1240" textLength="1464" clip-path="url(#terminal-1460595808-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1460595808-r2" x="1464" y="1240" textLength="12.2" clip-path="url(#terminal-1460595808-line-50)">
+</text><text class="terminal-1460595808-r4" x="0" y="1264.4" textLength="24.4" clip-path="url(#terminal-1460595808-line-51)">╭─</text><text class="terminal-1460595808-r4" x="24.4" y="1264.4" textLength="1415.2" clip-path="url(#terminal-1460595808-line-51)">&#160;Configuration&#160;&amp;&#160;maintenance&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1460595808-r4" x="1439.6" y="1264.4" textLength="24.4" clip-path=" [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-1460595808-line-52)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1288.8" textLength="305" clip-path="url(#terminal-1460595808-line-52)">cleanup&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="353.8" y="1288.8" textLength="1085.8" clip-path="url(#terminal-1460595808-lin [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-1460595808-line-53)">│</text><text class="terminal-1460595808-r2" x="353.8" y="1313.2" textLength="1085.8" clip-path="url(#terminal-1460595808-line-53)">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-1460595808-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-54)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1337.6" textLength="305" clip-path="url(#terminal-1460595808-line-54)">self-upgrade&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="353.8" y="1337.6" textLength="1085.8" clip-path="url(#terminal-1460595808-line-54)">Self&#160;upgrade& [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-1460595808-line-55)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1362" textLength="305" clip-path="url(#terminal-1460595808-line-55)">setup-autocomplete&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="353.8" y="1362" textLength="1085.8" clip-path="url(#terminal-1460595808-line-55)">Enables&#160;autocompletion&#160;of&#160;breeze&#160;c [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-56)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1386.4" textLength="305" clip-path="url(#terminal-1460595808-line-56)">config&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="353.8" y="1386.4" textLength="1085.8" clip-path="url(#terminal-146059580 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-1460595808-line-57)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1410.8" textLength="305" clip-path="url(#terminal-1460595808-line-57)">regenerate-command-images</text><text class="terminal-1460595808-r2" x="353.8" y="1410.8" textLength="1085.8" clip-path="url(#terminal-1460595808-line-57)">Regenerate&#160;breeze&#160;command&#160;images.&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-1460595808-line-58)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1435.2" textLength="305" clip-path="url(#terminal-1460595808-line-58)">command-hash-export&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="353.8" y="1435.2" textLength="1085.8" clip-path="url(#terminal-1460595808-line-58)">Outputs&#160;hash&#160;of&#160;all&#160;click&#160;co [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-59)">│</text><text class="terminal-1460595808-r2" x="353.8" y="1459.6" textLength="1085.8" clip-path="url(#terminal-1460595808-line-59)">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;&#16 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-1460595808-line-60)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1484" textLength="305" clip-path="url(#terminal-1460595808-line-60)">version&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="353.8" y="1484" textLength="1085.8" clip-path="url(#terminal-1460595808-line-60)" [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1508.4" textLength="1464" clip-path="url(#terminal-1460595808-line-61)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1460595808-r2" x="1464" y="1508.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-61)">
+</text><text class="terminal-1460595808-r4" x="0" y="1532.8" textLength="24.4" clip-path="url(#terminal-1460595808-line-62)">╭─</text><text class="terminal-1460595808-r4" x="24.4" y="1532.8" textLength="1415.2" clip-path="url(#terminal-1460595808-line-62)">&#160;CI&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1460595808-r4" x="1439.6" y="1532.8" textLength="24.4" clip-path="url( [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1557.2" textLength="12.2" clip-path="url(#terminal-1460595808-line-63)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1557.2" textLength="170.8" clip-path="url(#terminal-1460595808-line-63)">build-image&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="219.6" y="1557.2" textLength="1220" clip-path="url(#terminal-1460595808-line-63)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images& [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1581.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-64)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1581.6" textLength="170.8" clip-path="url(#terminal-1460595808-line-64)">pull-image&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="219.6" y="1581.6" textLength="1220" clip-path="url(#terminal-1460595808-line-64)">Pull&#160;and&#160;optionally&#160;verify&#160;CI&#160;images&#160;-&#160; [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-1460595808-line-65)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1606" textLength="170.8" clip-path="url(#terminal-1460595808-line-65)">verify-image&#160;&#160;</text><text class="terminal-1460595808-r2" x="219.6" y="1606" textLength="1220" clip-path="url(#terminal-1460595808-line-65)">Verify&#160;CI&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1630.4" textLength="1464" clip-path="url(#terminal-1460595808-line-66)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1460595808-r2" x="1464" y="1630.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-66)">
+</text><text class="terminal-1460595808-r4" x="0" y="1654.8" textLength="24.4" clip-path="url(#terminal-1460595808-line-67)">╭─</text><text class="terminal-1460595808-r4" x="24.4" y="1654.8" textLength="1415.2" clip-path="url(#terminal-1460595808-line-67)">&#160;Production&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1460595808-r4" x="1439.6" y="1654.8" textLength="24.4" clip-path="url( [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1679.2" textLength="12.2" clip-path="url(#terminal-1460595808-line-68)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1679.2" textLength="207.4" clip-path="url(#terminal-1460595808-line-68)">build-prod-image&#160;</text><text class="terminal-1460595808-r2" x="256.2" y="1679.2" textLength="1183.4" clip-path="url(#terminal-1460595808-line-68)">Build&#160;Production&#160;image.&#160;Include&#160;building&#160;multiple&#160;imag [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1703.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-69)">│</text><text class="terminal-1460595808-r2" x="256.2" y="1703.6" textLength="1183.4" clip-path="url(#terminal-1460595808-line-69)">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; [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-1460595808-line-70)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1728" textLength="207.4" clip-path="url(#terminal-1460595808-line-70)">pull-prod-image&#160;&#160;</text><text class="terminal-1460595808-r2" x="256.2" y="1728" textLength="1183.4" clip-path="url(#terminal-1460595808-line-70)">Pull&#160;and&#160;optionally&#160;verify&#160;Production&#160;images&#160;-&#160;pos [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-71)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1752.4" textLength="207.4" clip-path="url(#terminal-1460595808-line-71)">verify-prod-image</text><text class="terminal-1460595808-r2" x="256.2" y="1752.4" textLength="1183.4" clip-path="url(#terminal-1460595808-line-71)">Verify&#160;Production&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1776.8" textLength="1464" clip-path="url(#terminal-1460595808-line-72)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1460595808-r2" x="1464" y="1776.8" textLength="12.2" clip-path="url(#terminal-1460595808-line-72)">
+</text><text class="terminal-1460595808-r4" x="0" y="1801.2" textLength="24.4" clip-path="url(#terminal-1460595808-line-73)">╭─</text><text class="terminal-1460595808-r4" x="24.4" y="1801.2" textLength="1415.2" clip-path="url(#terminal-1460595808-line-73)">&#160;CI&#160;commands&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1460595808-r4" x="1439.6" y="1801.2" textLength="24.4" clip-path="url(#term [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1825.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-74)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1825.6" textLength="378.2" clip-path="url(#terminal-1460595808-line-74)">fix-ownership&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="427" y="1825.6" textLength="1012.6" clip-path="url(#terminal-14605958 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1850" textLength="12.2" clip-path="url(#terminal-1460595808-line-75)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1850" textLength="378.2" clip-path="url(#terminal-1460595808-line-75)">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-1460595808-r2" x="427" y="1850" textLength="1012.6" clip-path="url(#terminal [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1874.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-76)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1874.4" textLength="378.2" clip-path="url(#terminal-1460595808-line-76)">resource-check&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="427" y="1874.4" textLength="1012.6" clip-path="url(#terminal-1460595808-li [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-1460595808-line-77)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1898.8" textLength="378.2" clip-path="url(#terminal-1460595808-line-77)">selective-check&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="427" y="1898.8" textLength="1012.6" clip-path="url(#terminal-1460595808-line-77 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1923.2" textLength="12.2" clip-path="url(#terminal-1460595808-line-78)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1923.2" textLength="378.2" clip-path="url(#terminal-1460595808-line-78)">find-newer-dependencies&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="427" y="1923.2" textLength="1012.6" clip-path="url(#terminal-1460595808-line-78)">Finds&#160;which&#160;dependencies&#1 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1947.6" textLength="1464" clip-path="url(#terminal-1460595808-line-79)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1460595808-r2" x="1464" y="1947.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-79)">
+</text><text class="terminal-1460595808-r4" x="0" y="1972" textLength="24.4" clip-path="url(#terminal-1460595808-line-80)">╭─</text><text class="terminal-1460595808-r4" x="24.4" y="1972" textLength="1415.2" clip-path="url(#terminal-1460595808-line-80)">&#160;Release&#160;management&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1460595808-r4" x="1439.6" y="1972" textLength="24.4" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="1996.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-81)">│</text><text class="terminal-1460595808-r5" x="24.4" y="1996.4" textLength="402.6" clip-path="url(#terminal-1460595808-line-81)">verify-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="451.4" y="1996.4" textLength="988.2" clip-path="url(#terminal-1460595808-line-81)">Verifies&#160;if&#160;all&#16 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="2020.8" textLength="12.2" clip-path="url(#terminal-1460595808-line-82)">│</text><text class="terminal-1460595808-r5" x="24.4" y="2020.8" textLength="402.6" clip-path="url(#terminal-1460595808-line-82)">prepare-provider-documentation&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="451.4" y="2020.8" textLength="988.2" clip-path="url(#terminal-1460595808-line-82)">Prepare&#160;CHANGELOG,&#160;README&#160;and&#160;COMMITS&# [...]
+</text><text class="terminal-1460595808-r4" x="0" y="2045.2" textLength="12.2" clip-path="url(#terminal-1460595808-line-83)">│</text><text class="terminal-1460595808-r5" x="24.4" y="2045.2" textLength="402.6" clip-path="url(#terminal-1460595808-line-83)">prepare-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="451.4" y="2045.2" textLength="988.2" clip-path="url(#terminal-1460595808-line-83)">Prepare&#160;sdist/whl&#160;packag [...]
+</text><text class="terminal-1460595808-r4" x="0" y="2069.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-84)">│</text><text class="terminal-1460595808-r5" x="24.4" y="2069.6" textLength="402.6" clip-path="url(#terminal-1460595808-line-84)">prepare-airflow-package&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="451.4" y="2069.6" textLength="988.2" clip-path="url(#terminal-1460595808-line-84)">Prepare&#160;sdist/whl&# [...]
+</text><text class="terminal-1460595808-r4" x="0" y="2094" textLength="12.2" clip-path="url(#terminal-1460595808-line-85)">│</text><text class="terminal-1460595808-r5" x="24.4" y="2094" textLength="402.6" clip-path="url(#terminal-1460595808-line-85)">release-prod-images&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="451.4" y="2094" textLength="988.2" clip-path="url(#terminal-1460595808-line-85)">Release&#1 [...]
+</text><text class="terminal-1460595808-r4" x="0" y="2118.4" textLength="12.2" clip-path="url(#terminal-1460595808-line-86)">│</text><text class="terminal-1460595808-r5" x="24.4" y="2118.4" textLength="402.6" clip-path="url(#terminal-1460595808-line-86)">generate-constraints&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1460595808-r2" x="451.4" y="2118.4" textLength="988.2" clip-path="url(#terminal-1460595808-line-86)">Generates [...]
+</text><text class="terminal-1460595808-r4" x="0" y="2142.8" textLength="1464" clip-path="url(#terminal-1460595808-line-87)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1460595808-r2" x="1464" y="2142.8" textLength="12.2" clip-path="url(#terminal-1460595808-line-87)">
+</text><text class="terminal-1460595808-r4" x="0" y="2167.2" textLength="24.4" clip-path="url(#terminal-1460595808-line-88)">╭─</text><text class="terminal-1460595808-r4" x="24.4" y="2167.2" textLength="1415.2" clip-path="url(#terminal-1460595808-line-88)">&#160;Commands&#160;──────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1460595808-r4" x="1439.6" y="2167.2" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-1460595808-r4" x="0" y="2191.6" textLength="12.2" clip-path="url(#terminal-1460595808-line-89)">│</text><text class="terminal-1460595808-r5" x="24.4" y="2191.6" textLength="671" clip-path="url(#terminal-1460595808-line-89)">compile-www-assets&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#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-1460595808-r4" x="0" y="2216" textLength="1464" clip-path="url(#terminal-1460595808-line-90)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1460595808-r2" x="1464" y="2216" textLength="12.2" clip-path="url(#terminal-1460595808-line-90)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-compile-www-assets.svg b/images/breeze/output-compile-www-assets.svg
new file mode 100644
index 0000000000..5ffd5d828f
--- /dev/null
+++ b/images/breeze/output-compile-www-assets.svg
@@ -0,0 +1,99 @@
+<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-2464517397-matrix {
+        font-family: Fira Code, monospace;
+        font-size: 20px;
+        line-height: 24.4px;
+        font-variant-east-asian: full-width;
+    }
+
+    .terminal-2464517397-title {
+        font-size: 18px;
+        font-weight: bold;
+        font-family: arial;
+    }
+
+    .terminal-2464517397-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2464517397-r2 { fill: #c5c8c6 }
+.terminal-2464517397-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2464517397-r4 { fill: #868887 }
+.terminal-2464517397-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2464517397-r6 { fill: #98a84b;font-weight: bold }
+    </style>
+
+    <defs>
+    <clipPath id="terminal-2464517397-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="243.0" />
+    </clipPath>
+    <clipPath id="terminal-2464517397-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2464517397-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2464517397-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2464517397-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2464517397-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2464517397-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2464517397-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2464517397-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2464517397-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-2464517397-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-2464517397-clip-terminal)">
+    
+    <g class="terminal-2464517397-matrix">
+    <text class="terminal-2464517397-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2464517397-line-0)">
+</text><text class="terminal-2464517397-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2464517397-line-1)">Usage:&#160;</text><text class="terminal-2464517397-r1" x="97.6" y="44.4" textLength="427" clip-path="url(#terminal-2464517397-line-1)">breeze&#160;compile-www-assets&#160;[OPTIONS]</text><text class="terminal-2464517397-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2464517397-line-1)">
+</text><text class="terminal-2464517397-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2464517397-line-2)">
+</text><text class="terminal-2464517397-r2" x="12.2" y="93.2" textLength="244" clip-path="url(#terminal-2464517397-line-3)">Compiles&#160;www&#160;assets.</text><text class="terminal-2464517397-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2464517397-line-3)">
+</text><text class="terminal-2464517397-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2464517397-line-4)">
+</text><text class="terminal-2464517397-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2464517397-line-5)">╭─</text><text class="terminal-2464517397-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2464517397-line-5)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2464517397-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-2464517397- [...]
+</text><text class="terminal-2464517397-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2464517397-line-6)">│</text><text class="terminal-2464517397-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2464517397-line-6)">-</text><text class="terminal-2464517397-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-2464517397-line-6)">-verbose</text><text class="terminal-2464517397-r6" x="158.6" y="166.4" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-2464517397-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2464517397-line-7)">│</text><text class="terminal-2464517397-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2464517397-line-7)">-</text><text class="terminal-2464517397-r5" x="36.6" y="190.8" textLength="48.8" clip-path="url(#terminal-2464517397-line-7)">-dry</text><text class="terminal-2464517397-r5" x="85.4" y="190.8" textLength="48.8" clip-path="url(#terminal-24645 [...]
+</text><text class="terminal-2464517397-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2464517397-line-8)">│</text><text class="terminal-2464517397-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2464517397-line-8)">-</text><text class="terminal-2464517397-r5" x="36.6" y="215.2" textLength="61" clip-path="url(#terminal-2464517397-line-8)">-help</text><text class="terminal-2464517397-r6" x="158.6" y="215.2" textLength="24.4" clip-path="url(#terminal-24645 [...]
+</text><text class="terminal-2464517397-r4" x="0" y="239.6" textLength="1464" clip-path="url(#terminal-2464517397-line-9)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2464517397-r2" x="1464" y="239.6" textLength="12.2" clip-path="url(#terminal-2464517397-line-9)">
+</text>
+    </g>
+    </g>
+</svg>
diff --git a/images/breeze/output-static-checks.svg b/images/breeze/output-static-checks.svg
index 1a1d0b17ac..5b4254e0bb 100644
--- a/images/breeze/output-static-checks.svg
+++ b/images/breeze/output-static-checks.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1245.6" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1270.0" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,237 +19,241 @@
         font-weight: 700;
     }
 
-    .terminal-1899075791-matrix {
+    .terminal-3781734624-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1899075791-title {
+    .terminal-3781734624-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1899075791-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1899075791-r2 { fill: #c5c8c6 }
-.terminal-1899075791-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1899075791-r4 { fill: #868887 }
-.terminal-1899075791-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1899075791-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1899075791-r7 { fill: #8d7b39 }
+    .terminal-3781734624-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-3781734624-r2 { fill: #c5c8c6 }
+.terminal-3781734624-r3 { fill: #d0b344;font-weight: bold }
+.terminal-3781734624-r4 { fill: #868887 }
+.terminal-3781734624-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-3781734624-r6 { fill: #98a84b;font-weight: bold }
+.terminal-3781734624-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-1899075791-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1194.6" />
+    <clipPath id="terminal-3781734624-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1219.0" />
     </clipPath>
-    <clipPath id="terminal-1899075791-line-0">
+    <clipPath id="terminal-3781734624-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-1">
+<clipPath id="terminal-3781734624-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-2">
+<clipPath id="terminal-3781734624-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-3">
+<clipPath id="terminal-3781734624-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-4">
+<clipPath id="terminal-3781734624-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-5">
+<clipPath id="terminal-3781734624-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-6">
+<clipPath id="terminal-3781734624-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-7">
+<clipPath id="terminal-3781734624-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-8">
+<clipPath id="terminal-3781734624-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-9">
+<clipPath id="terminal-3781734624-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-10">
+<clipPath id="terminal-3781734624-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-11">
+<clipPath id="terminal-3781734624-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-12">
+<clipPath id="terminal-3781734624-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-13">
+<clipPath id="terminal-3781734624-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-14">
+<clipPath id="terminal-3781734624-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-15">
+<clipPath id="terminal-3781734624-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-16">
+<clipPath id="terminal-3781734624-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-17">
+<clipPath id="terminal-3781734624-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-18">
+<clipPath id="terminal-3781734624-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-19">
+<clipPath id="terminal-3781734624-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-20">
+<clipPath id="terminal-3781734624-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-21">
+<clipPath id="terminal-3781734624-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-22">
+<clipPath id="terminal-3781734624-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-23">
+<clipPath id="terminal-3781734624-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-24">
+<clipPath id="terminal-3781734624-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-25">
+<clipPath id="terminal-3781734624-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-26">
+<clipPath id="terminal-3781734624-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-27">
+<clipPath id="terminal-3781734624-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-28">
+<clipPath id="terminal-3781734624-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-29">
+<clipPath id="terminal-3781734624-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-30">
+<clipPath id="terminal-3781734624-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-31">
+<clipPath id="terminal-3781734624-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-32">
+<clipPath id="terminal-3781734624-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-33">
+<clipPath id="terminal-3781734624-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-34">
+<clipPath id="terminal-3781734624-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-35">
+<clipPath id="terminal-3781734624-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-36">
+<clipPath id="terminal-3781734624-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-37">
+<clipPath id="terminal-3781734624-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-38">
+<clipPath id="terminal-3781734624-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-39">
+<clipPath id="terminal-3781734624-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-40">
+<clipPath id="terminal-3781734624-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-41">
+<clipPath id="terminal-3781734624-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-42">
+<clipPath id="terminal-3781734624-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-43">
+<clipPath id="terminal-3781734624-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-44">
+<clipPath id="terminal-3781734624-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-45">
+<clipPath id="terminal-3781734624-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-46">
+<clipPath id="terminal-3781734624-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1899075791-line-47">
+<clipPath id="terminal-3781734624-line-47">
     <rect x="0" y="1148.3" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-3781734624-line-48">
+    <rect x="0" y="1172.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="1243.6" rx="8"/><text class="terminal-1899075791-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;static-checks</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1268" rx="8"/><text class="terminal-3781734624-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;static-checks</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-1899075791-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-3781734624-clip-terminal)">
     
-    <g class="terminal-1899075791-matrix">
-    <text class="terminal-1899075791-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1899075791-line-0)">
-</text><text class="terminal-1899075791-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1899075791-line-1)">Usage:&#160;</text><text class="terminal-1899075791-r1" x="97.6" y="44.4" textLength="610" clip-path="url(#terminal-1899075791-line-1)">breeze&#160;static-checks&#160;[OPTIONS]&#160;[PRECOMMIT_ARGS]...</text><text class="terminal-1899075791-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1899075791-line-1)">
-</text><text class="terminal-1899075791-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1899075791-line-2)">
-</text><text class="terminal-1899075791-r2" x="12.2" y="93.2" textLength="219.6" clip-path="url(#terminal-1899075791-line-3)">Run&#160;static&#160;checks.</text><text class="terminal-1899075791-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1899075791-line-3)">
-</text><text class="terminal-1899075791-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1899075791-line-4)">
-</text><text class="terminal-1899075791-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1899075791-line-5)">╭─</text><text class="terminal-1899075791-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1899075791-line-5)">&#160;Pre-commit&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1899075791-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-189907 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1899075791-line-6)">│</text><text class="terminal-1899075791-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1899075791-line-6)">-</text><text class="terminal-1899075791-r5" x="36.6" y="166.4" textLength="61" clip-path="url(#terminal-1899075791-line-6)">-type</text><text class="terminal-1899075791-r6" x="317.2" y="166.4" textLength="24.4" clip-path="url(#terminal-18990 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1899075791-line-7)">│</text><text class="terminal-1899075791-r7" x="366" y="190.8" textLength="1073.6" clip-path="url(#terminal-1899075791-line-7)">(all&#160;|&#160;black&#160;|&#160;blacken-docs&#160;|&#160;check-airflow-2-2-compatibility&#160;|&#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-1899075791-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1899075791-line-8)">│</text><text class="terminal-1899075791-r7" x="366" y="215.2" textLength="1073.6" clip-path="url(#terminal-1899075791-line-8)">check-airflow-config-yaml-consistent&#160;|&#160;check-apache-license-rat&#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="ter [...]
-</text><text class="terminal-1899075791-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1899075791-line-9)">│</text><text class="terminal-1899075791-r7" x="366" y="239.6" textLength="1073.6" clip-path="url(#terminal-1899075791-line-9)">check-base-operator-partial-arguments&#160;|&#160;check-base-operator-usage&#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-1899 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1899075791-line-10)">│</text><text class="terminal-1899075791-r7" x="366" y="264" textLength="1073.6" clip-path="url(#terminal-1899075791-line-10)">check-boring-cyborg-configuration&#160;|&#160;check-breeze-top-dependencies-limited&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1899075791-r4" x="1451.8" y="264" textLength=" [...]
-</text><text class="terminal-1899075791-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1899075791-line-11)">│</text><text class="terminal-1899075791-r7" x="366" y="288.4" textLength="1073.6" clip-path="url(#terminal-1899075791-line-11)">check-builtin-literals&#160;|&#160;check-changelog-has-no-duplicates&#160;|&#160;&#160;&#160;&#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-1899075791-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1899075791-line-12)">│</text><text class="terminal-1899075791-r7" x="366" y="312.8" textLength="1073.6" clip-path="url(#terminal-1899075791-line-12)">check-daysago-import-from-utils&#160;|&#160;check-docstring-param-types&#160;|&#160;check-example-dags-urls&#160;</text><text class="terminal-1899075791-r4" x="1451.8" y="312.8" textLength="12.2" clip-path="url(#terminal-1899075791-line-12 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1899075791-line-13)">│</text><text class="terminal-1899075791-r7" x="366" y="337.2" textLength="1073.6" clip-path="url(#terminal-1899075791-line-13)">|&#160;check-executables-have-shebangs&#160;|&#160;check-extra-packages-references&#160;|&#160;check-extras-order</text><text class="terminal-1899075791-r4" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#terminal-1899075791-line-13 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1899075791-line-14)">│</text><text class="terminal-1899075791-r7" x="366" y="361.6" textLength="1073.6" clip-path="url(#terminal-1899075791-line-14)">|&#160;check-for-inclusive-language&#160;|&#160;check-hooks-apply&#160;|&#160;check-incorrect-use-of-LoggingMixin</text><text class="terminal-1899075791-r4" x="1451.8" y="361.6" textLength="12.2" clip-path="url(#terminal-1899075791-line-14 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1899075791-line-15)">│</text><text class="terminal-1899075791-r7" x="366" y="386" textLength="1073.6" clip-path="url(#terminal-1899075791-line-15)">|&#160;check-integrations-are-consistent&#160;|&#160;check-lazy-logging&#160;|&#160;check-merge-conflict&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1899075791-r4" x="1451.8" y="386" textLength="12.2" clip-path [...]
-</text><text class="terminal-1899075791-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1899075791-line-16)">│</text><text class="terminal-1899075791-r7" x="366" y="410.4" textLength="1073.6" clip-path="url(#terminal-1899075791-line-16)">check-newsfragments-are-valid&#160;|&#160;check-no-providers-in-core-examples&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1899075791-r [...]
-</text><text class="terminal-1899075791-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1899075791-line-17)">│</text><text class="terminal-1899075791-r7" x="366" y="434.8" textLength="1073.6" clip-path="url(#terminal-1899075791-line-17)">check-no-relative-imports&#160;|&#160;check-persist-credentials-disabled-in-github-workflows&#160;|&#160;&#160;&#160;&#160;</text><text class="terminal-1899075791-r4" x="1451.8" y="434.8" textLength="12.2" clip-path="url(#terminal-18990757 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1899075791-line-18)">│</text><text class="terminal-1899075791-r7" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-1899075791-line-18)">check-pre-commit-information-consistent&#160;|&#160;check-provide-create-sessions-imports&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1899075791-r4" x="1451.8" y="459.2" textLength="12.2" clip-path="url(#te [...]
-</text><text class="terminal-1899075791-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1899075791-line-19)">│</text><text class="terminal-1899075791-r7" x="366" y="483.6" textLength="1073.6" clip-path="url(#terminal-1899075791-line-19)">check-provider-yaml-valid&#160;|&#160;check-providers-init-file-missing&#160;|&#160;&#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><tex [...]
-</text><text class="terminal-1899075791-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-1899075791-line-20)">│</text><text class="terminal-1899075791-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-1899075791-line-20)">check-providers-subpackages-init-file-exist&#160;|&#160;check-pydevd-left-in-code&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1899075791-r4" x="1451.8" y="508" te [...]
-</text><text class="terminal-1899075791-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1899075791-line-21)">│</text><text class="terminal-1899075791-r7" x="366" y="532.4" textLength="1073.6" clip-path="url(#terminal-1899075791-line-21)">check-revision-heads-map&#160;|&#160;check-safe-filter-usage-in-html&#160;|&#160;check-setup-order&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1899075791-r4" x="1451.8" y="532.4" textLength="12.2" cli [...]
-</text><text class="terminal-1899075791-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1899075791-line-22)">│</text><text class="terminal-1899075791-r7" x="366" y="556.8" textLength="1073.6" clip-path="url(#terminal-1899075791-line-22)">check-start-date-not-used-in-defaults&#160;|&#160;check-system-tests-present&#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-1899075 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1899075791-line-23)">│</text><text class="terminal-1899075791-r7" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-1899075791-line-23)">check-system-tests-tocs&#160;|&#160;check-xml&#160;|&#160;codespell&#160;|&#160;create-missing-init-py-files-tests&#160;|&#160;&#160;</text><text class="terminal-1899075791-r4" x="1451.8" y="581.2" textLength="12.2" clip-path="url(#termina [...]
-</text><text class="terminal-1899075791-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1899075791-line-24)">│</text><text class="terminal-1899075791-r7" x="366" y="605.6" textLength="1073.6" clip-path="url(#terminal-1899075791-line-24)">debug-statements&#160;|&#160;detect-private-key&#160;|&#160;doctoc&#160;|&#160;end-of-file-fixer&#160;|&#160;fix-encoding-pragma</text><text class="terminal-1899075791-r4" x="1451.8" y="605.6" textLength="12.2" clip-path="url(#terminal-189 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1899075791-line-25)">│</text><text class="terminal-1899075791-r7" x="366" y="630" textLength="1073.6" clip-path="url(#terminal-1899075791-line-25)">|&#160;flynt&#160;|&#160;identity&#160;|&#160;insert-license&#160;|&#160;isort&#160;|&#160;lint-chart-schema&#160;|&#160;lint-css&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-189907 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1899075791-line-26)">│</text><text class="terminal-1899075791-r7" x="366" y="654.4" textLength="1073.6" clip-path="url(#terminal-1899075791-line-26)">lint-dockerfile&#160;|&#160;lint-helm-chart&#160;|&#160;lint-javascript&#160;|&#160;lint-json-schema&#160;|&#160;lint-markdown&#160;|</text><text class="terminal-1899075791-r4" x="1451.8" y="654.4" textLength="12.2" clip-path="url(#termina [...]
-</text><text class="terminal-1899075791-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1899075791-line-27)">│</text><text class="terminal-1899075791-r7" x="366" y="678.8" textLength="1073.6" clip-path="url(#terminal-1899075791-line-27)">lint-openapi&#160;|&#160;mixed-line-ending&#160;|&#160;pretty-format-json&#160;|&#160;pydocstyle&#160;|&#160;python-no-log-warn&#160;</text><text class="terminal-1899075791-r4" x="1451.8" y="678.8" textLength="12.2" clip-path="url(#termina [...]
-</text><text class="terminal-1899075791-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1899075791-line-28)">│</text><text class="terminal-1899075791-r7" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-1899075791-line-28)">|&#160;pyupgrade&#160;|&#160;replace-bad-characters&#160;|&#160;rst-backticks&#160;|&#160;run-flake8&#160;|&#160;run-mypy&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1899075791-r4" x="1451 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1899075791-line-29)">│</text><text class="terminal-1899075791-r7" x="366" y="727.6" textLength="1073.6" clip-path="url(#terminal-1899075791-line-29)">run-shellcheck&#160;|&#160;static-check-autoflake&#160;|&#160;trailing-whitespace&#160;|&#160;update-breeze-cmd-output</text><text class="terminal-1899075791-r4" x="1451.8" y="727.6" textLength="12.2" clip-path="url(#terminal-1899075791-li [...]
-</text><text class="terminal-1899075791-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1899075791-line-30)">│</text><text class="terminal-1899075791-r7" x="366" y="752" textLength="1073.6" clip-path="url(#terminal-1899075791-line-30)">|&#160;update-breeze-readme-config-hash&#160;|&#160;update-extras&#160;|&#160;update-in-the-wild-to-be-sorted&#160;|&#160;&#160;</text><text class="terminal-1899075791-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-189907579 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-1899075791-line-31)">│</text><text class="terminal-1899075791-r7" x="366" y="776.4" textLength="1073.6" clip-path="url(#terminal-1899075791-line-31)">update-inlined-dockerfile-scripts&#160;|&#160;update-local-yml-file&#160;|&#160;update-migration-references&#160;</text><text class="terminal-1899075791-r4" x="1451.8" y="776.4" textLength="12.2" clip-path="url(#terminal-1899075791-line-31 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-1899075791-line-32)">│</text><text class="terminal-1899075791-r7" x="366" y="800.8" textLength="1073.6" clip-path="url(#terminal-1899075791-line-32)">|&#160;update-providers-dependencies&#160;|&#160;update-setup-cfg-file&#160;|&#160;&#160;&#160;&#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-1899075791-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1899075791-line-33)">│</text><text class="terminal-1899075791-r7" x="366" y="825.2" textLength="1073.6" clip-path="url(#terminal-1899075791-line-33)">update-spelling-wordlist-to-be-sorted&#160;|&#160;update-supported-versions&#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-18 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1899075791-line-34)">│</text><text class="terminal-1899075791-r7" x="366" y="849.6" textLength="1073.6" clip-path="url(#terminal-1899075791-line-34)">update-vendored-in-k8s-json-schema&#160;|&#160;update-version&#160;|&#160;yamllint&#160;|&#160;yesqa)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1899075 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1899075791-line-35)">│</text><text class="terminal-1899075791-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-1899075791-line-35)">-</text><text class="terminal-1899075791-r5" x="36.6" y="874" textLength="61" clip-path="url(#terminal-1899075791-line-35)">-file</text><text class="terminal-1899075791-r6" x="317.2" y="874" textLength="24.4" clip-path="url(#terminal-1899075791 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1899075791-line-36)">│</text><text class="terminal-1899075791-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-1899075791-line-36)">-</text><text class="terminal-1899075791-r5" x="36.6" y="898.4" textLength="48.8" clip-path="url(#terminal-1899075791-line-36)">-all</text><text class="terminal-1899075791-r5" x="85.4" y="898.4" textLength="73.2" clip-path="url(#terminal-18 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1899075791-line-37)">│</text><text class="terminal-1899075791-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-1899075791-line-37)">-</text><text class="terminal-1899075791-r5" x="36.6" y="922.8" textLength="61" clip-path="url(#terminal-1899075791-line-37)">-show</text><text class="terminal-1899075791-r5" x="97.6" y="922.8" textLength="195.2" clip-path="url(#terminal-18 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-1899075791-line-38)">│</text><text class="terminal-1899075791-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-1899075791-line-38)">-</text><text class="terminal-1899075791-r5" x="36.6" y="947.2" textLength="61" clip-path="url(#terminal-1899075791-line-38)">-last</text><text class="terminal-1899075791-r5" x="97.6" y="947.2" textLength="85.4" clip-path="url(#terminal-189 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="971.6" textLength="1464" clip-path="url(#terminal-1899075791-line-39)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1899075791-r2" x="1464" y="971.6" textLength="12.2" clip-path="url(#terminal-1899075791-line-39)">
-</text><text class="terminal-1899075791-r4" x="0" y="996" textLength="24.4" clip-path="url(#terminal-1899075791-line-40)">╭─</text><text class="terminal-1899075791-r4" x="24.4" y="996" textLength="1415.2" clip-path="url(#terminal-1899075791-line-40)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1899075791-r4" x="1439.6" y="996" textLength="24.4" clip-path="url(#terminal-189907579 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-1899075791-line-41)">│</text><text class="terminal-1899075791-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-1899075791-line-41)">-</text><text class="terminal-1899075791-r5" x="36.6" y="1020.4" textLength="85.4" clip-path="url(#terminal-1899075791-line-41)">-commit</text><text class="terminal-1899075791-r5" x="122" y="1020.4" textLength="48.8" clip-path="url(#termi [...]
-</text><text class="terminal-1899075791-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1899075791-line-42)">│</text><text class="terminal-1899075791-r2" x="329.4" y="1044.8" textLength="183" clip-path="url(#terminal-1899075791-line-42)">exclusive&#160;with&#160;</text><text class="terminal-1899075791-r5" x="512.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-1899075791-line-42)">-</text><text class="terminal-1899075791-r5" x="524.6" y="1044.8" textLength="61" cl [...]
-</text><text class="terminal-1899075791-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1899075791-line-43)">│</text><text class="terminal-1899075791-r7" x="329.4" y="1069.2" textLength="1110.2" clip-path="url(#terminal-1899075791-line-43)">(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;& [...]
-</text><text class="terminal-1899075791-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1899075791-line-44)">│</text><text class="terminal-1899075791-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-1899075791-line-44)">-</text><text class="terminal-1899075791-r5" x="36.6" y="1093.6" textLength="97.6" clip-path="url(#terminal-1899075791-line-44)">-verbose</text><text class="terminal-1899075791-r6" x="280.6" y="1093.6" textLength="24.4" clip-path="url(#te [...]
-</text><text class="terminal-1899075791-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1899075791-line-45)">│</text><text class="terminal-1899075791-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-1899075791-line-45)">-</text><text class="terminal-1899075791-r5" x="36.6" y="1118" textLength="48.8" clip-path="url(#terminal-1899075791-line-45)">-dry</text><text class="terminal-1899075791-r5" x="85.4" y="1118" textLength="48.8" clip-path="url(#terminal-189907 [...]
-</text><text class="terminal-1899075791-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-1899075791-line-46)">│</text><text class="terminal-1899075791-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-1899075791-line-46)">-</text><text class="terminal-1899075791-r5" x="36.6" y="1142.4" textLength="85.4" clip-path="url(#terminal-1899075791-line-46)">-github</text><text class="terminal-1899075791-r5" x="122" y="1142.4" textLength="134.2" clip-path="url(#term [...]
-</text><text class="terminal-1899075791-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-1899075791-line-47)">│</text><text class="terminal-1899075791-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-1899075791-line-47)">-</text><text class="terminal-1899075791-r5" x="36.6" y="1166.8" textLength="61" clip-path="url(#terminal-1899075791-line-47)">-help</text><text class="terminal-1899075791-r6" x="280.6" y="1166.8" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-1899075791-r4" x="0" y="1191.2" textLength="1464" clip-path="url(#terminal-1899075791-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1899075791-r2" x="1464" y="1191.2" textLength="12.2" clip-path="url(#terminal-1899075791-line-48)">
+    <g class="terminal-3781734624-matrix">
+    <text class="terminal-3781734624-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3781734624-line-0)">
+</text><text class="terminal-3781734624-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3781734624-line-1)">Usage:&#160;</text><text class="terminal-3781734624-r1" x="97.6" y="44.4" textLength="610" clip-path="url(#terminal-3781734624-line-1)">breeze&#160;static-checks&#160;[OPTIONS]&#160;[PRECOMMIT_ARGS]...</text><text class="terminal-3781734624-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3781734624-line-1)">
+</text><text class="terminal-3781734624-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3781734624-line-2)">
+</text><text class="terminal-3781734624-r2" x="12.2" y="93.2" textLength="219.6" clip-path="url(#terminal-3781734624-line-3)">Run&#160;static&#160;checks.</text><text class="terminal-3781734624-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3781734624-line-3)">
+</text><text class="terminal-3781734624-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3781734624-line-4)">
+</text><text class="terminal-3781734624-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3781734624-line-5)">╭─</text><text class="terminal-3781734624-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3781734624-line-5)">&#160;Pre-commit&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3781734624-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-378173 [...]
+</text><text class="terminal-3781734624-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3781734624-line-6)">│</text><text class="terminal-3781734624-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3781734624-line-6)">-</text><text class="terminal-3781734624-r5" x="36.6" y="166.4" textLength="61" clip-path="url(#terminal-3781734624-line-6)">-type</text><text class="terminal-3781734624-r6" x="317.2" y="166.4" textLength="24.4" clip-path="url(#terminal-37817 [...]
+</text><text class="terminal-3781734624-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3781734624-line-7)">│</text><text class="terminal-3781734624-r7" x="366" y="190.8" textLength="1073.6" clip-path="url(#terminal-3781734624-line-7)">(all&#160;|&#160;black&#160;|&#160;blacken-docs&#160;|&#160;check-airflow-2-2-compatibility&#160;|&#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-3781734624-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3781734624-line-8)">│</text><text class="terminal-3781734624-r7" x="366" y="215.2" textLength="1073.6" clip-path="url(#terminal-3781734624-line-8)">check-airflow-config-yaml-consistent&#160;|&#160;check-apache-license-rat&#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="ter [...]
+</text><text class="terminal-3781734624-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3781734624-line-9)">│</text><text class="terminal-3781734624-r7" x="366" y="239.6" textLength="1073.6" clip-path="url(#terminal-3781734624-line-9)">check-base-operator-partial-arguments&#160;|&#160;check-base-operator-usage&#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-3781 [...]
+</text><text class="terminal-3781734624-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3781734624-line-10)">│</text><text class="terminal-3781734624-r7" x="366" y="264" textLength="1073.6" clip-path="url(#terminal-3781734624-line-10)">check-boring-cyborg-configuration&#160;|&#160;check-breeze-top-dependencies-limited&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3781734624-r4" x="1451.8" y="264" textLength=" [...]
+</text><text class="terminal-3781734624-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3781734624-line-11)">│</text><text class="terminal-3781734624-r7" x="366" y="288.4" textLength="1073.6" clip-path="url(#terminal-3781734624-line-11)">check-builtin-literals&#160;|&#160;check-changelog-has-no-duplicates&#160;|&#160;&#160;&#160;&#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-3781734624-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3781734624-line-12)">│</text><text class="terminal-3781734624-r7" x="366" y="312.8" textLength="1073.6" clip-path="url(#terminal-3781734624-line-12)">check-daysago-import-from-utils&#160;|&#160;check-docstring-param-types&#160;|&#160;check-example-dags-urls&#160;</text><text class="terminal-3781734624-r4" x="1451.8" y="312.8" textLength="12.2" clip-path="url(#terminal-3781734624-line-12 [...]
+</text><text class="terminal-3781734624-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3781734624-line-13)">│</text><text class="terminal-3781734624-r7" x="366" y="337.2" textLength="1073.6" clip-path="url(#terminal-3781734624-line-13)">|&#160;check-executables-have-shebangs&#160;|&#160;check-extra-packages-references&#160;|&#160;check-extras-order</text><text class="terminal-3781734624-r4" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#terminal-3781734624-line-13 [...]
+</text><text class="terminal-3781734624-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3781734624-line-14)">│</text><text class="terminal-3781734624-r7" x="366" y="361.6" textLength="1073.6" clip-path="url(#terminal-3781734624-line-14)">|&#160;check-for-inclusive-language&#160;|&#160;check-hooks-apply&#160;|&#160;check-incorrect-use-of-LoggingMixin</text><text class="terminal-3781734624-r4" x="1451.8" y="361.6" textLength="12.2" clip-path="url(#terminal-3781734624-line-14 [...]
+</text><text class="terminal-3781734624-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3781734624-line-15)">│</text><text class="terminal-3781734624-r7" x="366" y="386" textLength="1073.6" clip-path="url(#terminal-3781734624-line-15)">|&#160;check-integrations-are-consistent&#160;|&#160;check-lazy-logging&#160;|&#160;check-merge-conflict&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3781734624-r4" x="1451.8" y="386" textLength="12.2" clip-path [...]
+</text><text class="terminal-3781734624-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3781734624-line-16)">│</text><text class="terminal-3781734624-r7" x="366" y="410.4" textLength="1073.6" clip-path="url(#terminal-3781734624-line-16)">check-newsfragments-are-valid&#160;|&#160;check-no-providers-in-core-examples&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3781734624-r [...]
+</text><text class="terminal-3781734624-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3781734624-line-17)">│</text><text class="terminal-3781734624-r7" x="366" y="434.8" textLength="1073.6" clip-path="url(#terminal-3781734624-line-17)">check-no-relative-imports&#160;|&#160;check-persist-credentials-disabled-in-github-workflows&#160;|&#160;&#160;&#160;&#160;</text><text class="terminal-3781734624-r4" x="1451.8" y="434.8" textLength="12.2" clip-path="url(#terminal-37817346 [...]
+</text><text class="terminal-3781734624-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-3781734624-line-18)">│</text><text class="terminal-3781734624-r7" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-3781734624-line-18)">check-pre-commit-information-consistent&#160;|&#160;check-provide-create-sessions-imports&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3781734624-r4" x="1451.8" y="459.2" textLength="12.2" clip-path="url(#te [...]
+</text><text class="terminal-3781734624-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3781734624-line-19)">│</text><text class="terminal-3781734624-r7" x="366" y="483.6" textLength="1073.6" clip-path="url(#terminal-3781734624-line-19)">check-provider-yaml-valid&#160;|&#160;check-providers-init-file-missing&#160;|&#160;&#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><tex [...]
+</text><text class="terminal-3781734624-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3781734624-line-20)">│</text><text class="terminal-3781734624-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-3781734624-line-20)">check-providers-subpackages-init-file-exist&#160;|&#160;check-pydevd-left-in-code&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3781734624-r4" x="1451.8" y="508" te [...]
+</text><text class="terminal-3781734624-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3781734624-line-21)">│</text><text class="terminal-3781734624-r7" x="366" y="532.4" textLength="1073.6" clip-path="url(#terminal-3781734624-line-21)">check-revision-heads-map&#160;|&#160;check-safe-filter-usage-in-html&#160;|&#160;check-setup-order&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3781734624-r4" x="1451.8" y="532.4" textLength="12.2" cli [...]
+</text><text class="terminal-3781734624-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-3781734624-line-22)">│</text><text class="terminal-3781734624-r7" x="366" y="556.8" textLength="1073.6" clip-path="url(#terminal-3781734624-line-22)">check-start-date-not-used-in-defaults&#160;|&#160;check-system-tests-present&#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-3781734 [...]
+</text><text class="terminal-3781734624-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3781734624-line-23)">│</text><text class="terminal-3781734624-r7" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-3781734624-line-23)">check-system-tests-tocs&#160;|&#160;check-xml&#160;|&#160;codespell&#160;|&#160;compile-www-assets&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="termin [...]
+</text><text class="terminal-3781734624-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3781734624-line-24)">│</text><text class="terminal-3781734624-r7" x="366" y="605.6" textLength="1073.6" clip-path="url(#terminal-3781734624-line-24)">create-missing-init-py-files-tests&#160;|&#160;debug-statements&#160;|&#160;detect-private-key&#160;|&#160;doctoc&#160;|&#160;&#160;&#160;</text><text class="terminal-3781734624-r4" x="1451.8" y="605.6" textLength="12.2" clip-path="url(#te [...]
+</text><text class="terminal-3781734624-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3781734624-line-25)">│</text><text class="terminal-3781734624-r7" x="366" y="630" textLength="1073.6" clip-path="url(#terminal-3781734624-line-25)">end-of-file-fixer&#160;|&#160;fix-encoding-pragma&#160;|&#160;flynt&#160;|&#160;identity&#160;|&#160;insert-license&#160;|&#160;isort&#160;|&#160;&#160;&#160;</text><text class="terminal-3781734624-r4" x="1451.8" y="630" textLength="12.2" clip [...]
+</text><text class="terminal-3781734624-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3781734624-line-26)">│</text><text class="terminal-3781734624-r7" x="366" y="654.4" textLength="1073.6" clip-path="url(#terminal-3781734624-line-26)">lint-chart-schema&#160;|&#160;lint-css&#160;|&#160;lint-dockerfile&#160;|&#160;lint-helm-chart&#160;|&#160;lint-javascript&#160;|&#160;&#160;&#160;&#160;</text><text class="terminal-3781734624-r4" x="1451.8" y="654.4" textLength="12.2" cli [...]
+</text><text class="terminal-3781734624-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-3781734624-line-27)">│</text><text class="terminal-3781734624-r7" x="366" y="678.8" textLength="1073.6" clip-path="url(#terminal-3781734624-line-27)">lint-json-schema&#160;|&#160;lint-markdown&#160;|&#160;lint-openapi&#160;|&#160;mixed-line-ending&#160;|&#160;pretty-format-json</text><text class="terminal-3781734624-r4" x="1451.8" y="678.8" textLength="12.2" clip-path="url(#terminal-378 [...]
+</text><text class="terminal-3781734624-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-3781734624-line-28)">│</text><text class="terminal-3781734624-r7" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-3781734624-line-28)">|&#160;pydocstyle&#160;|&#160;python-no-log-warn&#160;|&#160;pyupgrade&#160;|&#160;replace-bad-characters&#160;|&#160;rst-backticks&#160;|</text><text class="terminal-3781734624-r4" x="1451.8" y="703.2" textLength="12.2" clip-path="url(#te [...]
+</text><text class="terminal-3781734624-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-3781734624-line-29)">│</text><text class="terminal-3781734624-r7" x="366" y="727.6" textLength="1073.6" clip-path="url(#terminal-3781734624-line-29)">run-flake8&#160;|&#160;run-mypy&#160;|&#160;run-shellcheck&#160;|&#160;static-check-autoflake&#160;|&#160;trailing-whitespace&#160;|&#160;</text><text class="terminal-3781734624-r4" x="1451.8" y="727.6" textLength="12.2" clip-path="url(#te [...]
+</text><text class="terminal-3781734624-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3781734624-line-30)">│</text><text class="terminal-3781734624-r7" x="366" y="752" textLength="1073.6" clip-path="url(#terminal-3781734624-line-30)">update-breeze-cmd-output&#160;|&#160;update-breeze-readme-config-hash&#160;|&#160;update-extras&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3781734624-r4" x="1451.8" y="752" textLength=" [...]
+</text><text class="terminal-3781734624-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-3781734624-line-31)">│</text><text class="terminal-3781734624-r7" x="366" y="776.4" textLength="1073.6" clip-path="url(#terminal-3781734624-line-31)">update-in-the-wild-to-be-sorted&#160;|&#160;update-inlined-dockerfile-scripts&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3781734624-r [...]
+</text><text class="terminal-3781734624-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-3781734624-line-32)">│</text><text class="terminal-3781734624-r7" x="366" y="800.8" textLength="1073.6" clip-path="url(#terminal-3781734624-line-32)">update-local-yml-file&#160;|&#160;update-migration-references&#160;|&#160;update-providers-dependencies&#160;|&#160;&#160;&#160;</text><text class="terminal-3781734624-r4" x="1451.8" y="800.8" textLength="12.2" clip-path="url(#terminal-378 [...]
+</text><text class="terminal-3781734624-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-3781734624-line-33)">│</text><text class="terminal-3781734624-r7" x="366" y="825.2" textLength="1073.6" clip-path="url(#terminal-3781734624-line-33)">update-setup-cfg-file&#160;|&#160;update-spelling-wordlist-to-be-sorted&#160;|&#160;&#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><tex [...]
+</text><text class="terminal-3781734624-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-3781734624-line-34)">│</text><text class="terminal-3781734624-r7" x="366" y="849.6" textLength="1073.6" clip-path="url(#terminal-3781734624-line-34)">update-supported-versions&#160;|&#160;update-vendored-in-k8s-json-schema&#160;|&#160;update-version&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3781734624-r4" x="1451.8" y="849.6" textLength="12.2" clip-pat [...]
+</text><text class="terminal-3781734624-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-3781734624-line-35)">│</text><text class="terminal-3781734624-r7" x="366" y="874" textLength="1073.6" clip-path="url(#terminal-3781734624-line-35)">yamllint&#160;|&#160;yesqa)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#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-3781734624-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-3781734624-line-36)">│</text><text class="terminal-3781734624-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-3781734624-line-36)">-</text><text class="terminal-3781734624-r5" x="36.6" y="898.4" textLength="61" clip-path="url(#terminal-3781734624-line-36)">-file</text><text class="terminal-3781734624-r6" x="317.2" y="898.4" textLength="24.4" clip-path="url(#terminal-37 [...]
+</text><text class="terminal-3781734624-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-3781734624-line-37)">│</text><text class="terminal-3781734624-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-3781734624-line-37)">-</text><text class="terminal-3781734624-r5" x="36.6" y="922.8" textLength="48.8" clip-path="url(#terminal-3781734624-line-37)">-all</text><text class="terminal-3781734624-r5" x="85.4" y="922.8" textLength="73.2" clip-path="url(#terminal-37 [...]
+</text><text class="terminal-3781734624-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-3781734624-line-38)">│</text><text class="terminal-3781734624-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-3781734624-line-38)">-</text><text class="terminal-3781734624-r5" x="36.6" y="947.2" textLength="61" clip-path="url(#terminal-3781734624-line-38)">-show</text><text class="terminal-3781734624-r5" x="97.6" y="947.2" textLength="195.2" clip-path="url(#terminal-37 [...]
+</text><text class="terminal-3781734624-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-3781734624-line-39)">│</text><text class="terminal-3781734624-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-3781734624-line-39)">-</text><text class="terminal-3781734624-r5" x="36.6" y="971.6" textLength="61" clip-path="url(#terminal-3781734624-line-39)">-last</text><text class="terminal-3781734624-r5" x="97.6" y="971.6" textLength="85.4" clip-path="url(#terminal-378 [...]
+</text><text class="terminal-3781734624-r4" x="0" y="996" textLength="1464" clip-path="url(#terminal-3781734624-line-40)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3781734624-r2" x="1464" y="996" textLength="12.2" clip-path="url(#terminal-3781734624-line-40)">
+</text><text class="terminal-3781734624-r4" x="0" y="1020.4" textLength="24.4" clip-path="url(#terminal-3781734624-line-41)">╭─</text><text class="terminal-3781734624-r4" x="24.4" y="1020.4" textLength="1415.2" clip-path="url(#terminal-3781734624-line-41)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3781734624-r4" x="1439.6" y="1020.4" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-3781734624-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-3781734624-line-42)">│</text><text class="terminal-3781734624-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-3781734624-line-42)">-</text><text class="terminal-3781734624-r5" x="36.6" y="1044.8" textLength="85.4" clip-path="url(#terminal-3781734624-line-42)">-commit</text><text class="terminal-3781734624-r5" x="122" y="1044.8" textLength="48.8" clip-path="url(#termi [...]
+</text><text class="terminal-3781734624-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-3781734624-line-43)">│</text><text class="terminal-3781734624-r2" x="329.4" y="1069.2" textLength="183" clip-path="url(#terminal-3781734624-line-43)">exclusive&#160;with&#160;</text><text class="terminal-3781734624-r5" x="512.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-3781734624-line-43)">-</text><text class="terminal-3781734624-r5" x="524.6" y="1069.2" textLength="61" cl [...]
+</text><text class="terminal-3781734624-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-3781734624-line-44)">│</text><text class="terminal-3781734624-r7" x="329.4" y="1093.6" textLength="1110.2" clip-path="url(#terminal-3781734624-line-44)">(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;& [...]
+</text><text class="terminal-3781734624-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-3781734624-line-45)">│</text><text class="terminal-3781734624-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-3781734624-line-45)">-</text><text class="terminal-3781734624-r5" x="36.6" y="1118" textLength="97.6" clip-path="url(#terminal-3781734624-line-45)">-verbose</text><text class="terminal-3781734624-r6" x="280.6" y="1118" textLength="24.4" clip-path="url(#terminal-3 [...]
+</text><text class="terminal-3781734624-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-3781734624-line-46)">│</text><text class="terminal-3781734624-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-3781734624-line-46)">-</text><text class="terminal-3781734624-r5" x="36.6" y="1142.4" textLength="48.8" clip-path="url(#terminal-3781734624-line-46)">-dry</text><text class="terminal-3781734624-r5" x="85.4" y="1142.4" textLength="48.8" clip-path="url(#termina [...]
+</text><text class="terminal-3781734624-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-3781734624-line-47)">│</text><text class="terminal-3781734624-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-3781734624-line-47)">-</text><text class="terminal-3781734624-r5" x="36.6" y="1166.8" textLength="85.4" clip-path="url(#terminal-3781734624-line-47)">-github</text><text class="terminal-3781734624-r5" x="122" y="1166.8" textLength="134.2" clip-path="url(#term [...]
+</text><text class="terminal-3781734624-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-3781734624-line-48)">│</text><text class="terminal-3781734624-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-3781734624-line-48)">-</text><text class="terminal-3781734624-r5" x="36.6" y="1191.2" textLength="61" clip-path="url(#terminal-3781734624-line-48)">-help</text><text class="terminal-3781734624-r6" x="280.6" y="1191.2" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-3781734624-r4" x="0" y="1215.6" textLength="1464" clip-path="url(#terminal-3781734624-line-49)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3781734624-r2" x="1464" y="1215.6" textLength="12.2" clip-path="url(#terminal-3781734624-line-49)">
 </text>
     </g>
     </g>
diff --git a/scripts/ci/libraries/_initialization.sh b/scripts/ci/libraries/_initialization.sh
index a5292e4bef..6916e6b9eb 100644
--- a/scripts/ci/libraries/_initialization.sh
+++ b/scripts/ci/libraries/_initialization.sh
@@ -217,26 +217,12 @@ function initialization::initialize_available_integrations() {
 FILES_FOR_REBUILD_CHECK=()
 
 # Determine which files trigger rebuild check
-#
-# !!!!!!!!!! IMPORTANT NOTE !!!!!!!!!!
-#  When you add files here, please make sure to not add files
-#  with the same name. And if you do - make sure that files with the
-#  same name are stored in directories with different name. For
-#  example we have two package.json files here, but they are in
-#  directories with different names (`www` and `ui`).
-#  The problem is that md5 hashes of those files are stored in
-#  `./build/directory` in the same directory as <PARENT_DIR>-<FILE>.md5sum.
-#  For example md5sum of the `airflow/www/package.json` file is stored
-#  as `www-package.json` and `airflow/ui/package.json` as `ui-package.json`,
-#  The file list here changes extremely rarely.
-# !!!!!!!!!! IMPORTANT NOTE !!!!!!!!!!
 function initialization::initialize_files_for_rebuild_check() {
     FILES_FOR_REBUILD_CHECK+=(
         "setup.py"
         "setup.cfg"
         "Dockerfile.ci"
         ".dockerignore"
-        "scripts/docker/compile_www_assets.sh"
         "scripts/docker/common.sh"
         "scripts/docker/install_additional_dependencies.sh"
         "scripts/docker/install_airflow.sh"
@@ -244,11 +230,6 @@ function initialization::initialize_files_for_rebuild_check() {
         "scripts/docker/install_from_docker_context_files.sh"
         "scripts/docker/install_mysql.sh"
         "scripts/docker/install_postgres.sh"
-        "airflow/www/package.json"
-        "airflow/www/yarn.lock"
-        "airflow/www/webpack.config.js"
-        "airflow/ui/package.json"
-        "airflow/ui/yarn.lock"
     )
 }
 
@@ -440,13 +421,6 @@ function initialization::initialize_image_build_variables() {
     AIRFLOW_SOURCES_TO=${AIRFLOW_SOURCES_TO:="/Dockerfile"}
     export AIRFLOW_SOURCES_TO
 
-    # By default no sources are copied to image
-    AIRFLOW_SOURCES_WWW_FROM=${AIRFLOW_SOURCES_WWW_FROM:="Dockerfile"}
-    export AIRFLOW_SOURCES_WWW_FROM
-
-    AIRFLOW_SOURCES_WWW_TO=${AIRFLOW_SOURCES_WWW_TO:="/Dockerfile"}
-    export AIRFLOW_SOURCES_WWW_TO
-
     # By default in scripts production docker image is installed from PyPI package
     export AIRFLOW_INSTALLATION_METHOD=${AIRFLOW_INSTALLATION_METHOD:="apache-airflow"}
 
@@ -735,8 +709,6 @@ Production image build variables:
     AIRFLOW_VERSION_SPECIFICATION: '${AIRFLOW_VERSION_SPECIFICATION}'
     AIRFLOW_SOURCES_FROM: '${AIRFLOW_SOURCES_FROM}'
     AIRFLOW_SOURCES_TO: '${AIRFLOW_SOURCES_TO}'
-    AIRFLOW_SOURCES_WWW_FROM: '${AIRFLOW_SOURCES_WWW_FROM}'
-    AIRFLOW_SOURCES_WWW_TO: '${AIRFLOW_SOURCES_WWW_TO}'
 
 Detected GitHub environment:
 
diff --git a/airflow/www/compile_assets.sh b/scripts/ci/pre_commit/pre_commit_compile_www_assets.py
similarity index 60%
rename from airflow/www/compile_assets.sh
rename to scripts/ci/pre_commit/pre_commit_compile_www_assets.py
index ba4576614d..c7dfae9936 100755
--- a/airflow/www/compile_assets.sh
+++ b/scripts/ci/pre_commit/pre_commit_compile_www_assets.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/usr/bin/env python
 # 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,20 +15,16 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
+import subprocess
+from pathlib import Path
 
-set -e
+if __name__ not in ("__main__", "__mp_main__"):
+    raise SystemExit(
+        "This file is intended to be executed as an executable program. You cannot use it as a module."
+        f"To run this script, run the ./{__file__} command"
+    )
 
-cd "$( dirname "${BASH_SOURCE[0]}" )"
-
-MD5SUM_FILE="static/dist/sum.md5"
-readonly MD5SUM_FILE
-
-# first bump up package.json manually, commit and tag
-if [[ -d ./static/dist ]]; then
-  rm -f ./static/dist/*
-fi
-
-yarn install --frozen-lockfile
-yarn run build
-
-find package.json yarn.lock static/css static/js -type f | sort | xargs md5sum > "${MD5SUM_FILE}"
+if __name__ == '__main__':
+    dir = Path("airflow") / "www"
+    subprocess.check_call(['yarn', 'install', '--frozen-lockfile'], cwd=str(dir))
+    subprocess.check_call(['yarn', 'run', 'build'], cwd=str(dir))
diff --git a/scripts/ci/pre_commit/pre_commit_ui_lint.py b/scripts/ci/pre_commit/pre_commit_ui_lint.py
index eb8084285b..6cffea919b 100755
--- a/scripts/ci/pre_commit/pre_commit_ui_lint.py
+++ b/scripts/ci/pre_commit/pre_commit_ui_lint.py
@@ -15,8 +15,7 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-import os
-import sys
+import subprocess
 from pathlib import Path
 
 if __name__ not in ("__main__", "__mp_main__"):
@@ -25,38 +24,7 @@ if __name__ not in ("__main__", "__mp_main__"):
         f"To run this script, run the ./{__file__} command"
     )
 
-AIRFLOW_SOURCES = Path(__file__).parents[3].resolve()
-# allow "False", "false", "True", "true", "f", "F", "t", "T" and the like
-VERBOSE = os.environ.get('VERBOSE', "false")[0].lower() == "t"
-DRY_RUN = os.environ.get('DRY_RUN', "false")[0].lower() == "t"
-
 if __name__ == '__main__':
-    sys.path.insert(0, str(AIRFLOW_SOURCES / "dev" / "breeze" / "src"))
-    from airflow_breeze.global_constants import MOUNT_SELECTED
-    from airflow_breeze.utils.docker_command_utils import get_extra_docker_flags
-    from airflow_breeze.utils.path_utils import create_static_check_volumes
-    from airflow_breeze.utils.run_utils import get_runnable_ci_image, run_command
-
-    airflow_image = get_runnable_ci_image(verbose=VERBOSE, dry_run=DRY_RUN)
-    create_static_check_volumes()
-    cmd_result = run_command(
-        [
-            "docker",
-            "run",
-            "-t",
-            *get_extra_docker_flags(MOUNT_SELECTED),
-            "-e",
-            "SKIP_ENVIRONMENT_INITIALIZATION=true",
-            "-e",
-            "PRINT_INFO_FROM_SCRIPTS=false",
-            "--pull",
-            "never",
-            airflow_image,
-            "-c",
-            'cd airflow/ui && yarn --frozen-lockfile --non-interactive && yarn run lint',
-        ],
-        check=False,
-        verbose=VERBOSE,
-        dry_run=DRY_RUN,
-    )
-    sys.exit(cmd_result.returncode)
+    dir = Path("airflow") / "ui"
+    subprocess.check_call(['yarn', '--frozen-lockfile', '--non-interactive'], cwd=str(dir))
+    subprocess.check_call(['yarn', 'run', 'lint'], cwd=str(dir))
diff --git a/scripts/ci/pre_commit/pre_commit_www_lint.py b/scripts/ci/pre_commit/pre_commit_www_lint.py
index da8dc63426..9b77ef56fb 100755
--- a/scripts/ci/pre_commit/pre_commit_www_lint.py
+++ b/scripts/ci/pre_commit/pre_commit_www_lint.py
@@ -15,8 +15,7 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-import os
-import sys
+import subprocess
 from pathlib import Path
 
 if __name__ not in ("__main__", "__mp_main__"):
@@ -25,39 +24,7 @@ if __name__ not in ("__main__", "__mp_main__"):
         f"To run this script, run the ./{__file__} command"
     )
 
-AIRFLOW_SOURCES = Path(__file__).parents[3].resolve()
-GITHUB_REPOSITORY = os.environ.get('GITHUB_REPOSITORY', "apache/airflow")
-# allow "False", "false", "True", "true", "f", "F", "t", "T" and the like
-VERBOSE = os.environ.get('VERBOSE', "false")[0].lower() == "t"
-DRY_RUN = os.environ.get('DRY_RUN', "false")[0].lower() == "t"
-
 if __name__ == '__main__':
-    sys.path.insert(0, str(AIRFLOW_SOURCES / "dev" / "breeze" / "src"))
-    from airflow_breeze.global_constants import MOUNT_SELECTED
-    from airflow_breeze.utils.docker_command_utils import get_extra_docker_flags
-    from airflow_breeze.utils.path_utils import create_static_check_volumes
-    from airflow_breeze.utils.run_utils import get_runnable_ci_image, run_command
-
-    airflow_image = get_runnable_ci_image(verbose=VERBOSE, dry_run=DRY_RUN)
-    create_static_check_volumes()
-    cmd_result = run_command(
-        [
-            "docker",
-            "run",
-            "-t",
-            *get_extra_docker_flags(MOUNT_SELECTED),
-            "-e",
-            "SKIP_ENVIRONMENT_INITIALIZATION=true",
-            "-e",
-            "PRINT_INFO_FROM_SCRIPTS=false",
-            "--pull",
-            "never",
-            airflow_image,
-            "-c",
-            'cd airflow/www && yarn --frozen-lockfile --non-interactive && yarn run lint',
-        ],
-        check=False,
-        verbose=VERBOSE,
-        dry_run=DRY_RUN,
-    )
-    sys.exit(cmd_result.returncode)
+    dir = Path("airflow") / "www"
+    subprocess.check_call(['yarn', '--frozen-lockfile', '--non-interactive'], cwd=dir)
+    subprocess.check_call(['yarn', 'run', 'lint'], cwd=dir)
diff --git a/scripts/docker/compile_www_assets.sh b/scripts/docker/compile_www_assets.sh
deleted file mode 100644
index 7bc87d85e9..0000000000
--- a/scripts/docker/compile_www_assets.sh
+++ /dev/null
@@ -1,71 +0,0 @@
-# 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.
-# shellcheck shell=bash disable=SC2086
-set -euo pipefail
-
-BUILD_TYPE=${BUILD_TYPE="prod"}
-REMOVE_ARTIFACTS=${REMOVE_ARTIFACTS="true"}
-
-COLOR_BLUE=$'\e[34m'
-readonly COLOR_BLUE
-COLOR_RESET=$'\e[0m'
-readonly COLOR_RESET
-
-# Installs additional dependencies passed as Argument to the Docker build command
-function compile_www_assets() {
-    echo
-    echo "${COLOR_BLUE}Compiling www assets: running yarn ${BUILD_TYPE}${COLOR_RESET}"
-    echo
-    local www_dir
-    if [[ ${AIRFLOW_INSTALLATION_METHOD=} == "." ]]; then
-        # In case we are building from sources in production image, we should build the assets
-        www_dir="${AIRFLOW_SOURCES_TO=${AIRFLOW_SOURCES}}/airflow/www"
-    else
-        www_dir="$(python -m site --user-site)/airflow/www"
-    fi
-    pushd ${www_dir} || exit 1
-    set +e
-    yarn run "${BUILD_TYPE}" 2>/tmp/out-yarn-run.txt
-    res=$?
-    if [[ ${res} != 0 ]]; then
-        >&2 echo
-        >&2 echo "Error when running yarn run:"
-        >&2 echo
-        >&2 cat /tmp/out-yarn-run.txt && rm -rf /tmp/out-yarn-run.txt
-        exit 1
-    fi
-    rm -f /tmp/out-yarn-run.txt
-    set -e
-    local md5sum_file
-    md5sum_file="static/dist/sum.md5"
-    readonly md5sum_file
-    find package.json yarn.lock static/css static/js -type f | sort | xargs md5sum > "${md5sum_file}"
-    if [[ ${REMOVE_ARTIFACTS} == "true" ]]; then
-        echo
-        echo "${COLOR_BLUE}Removing generated node modules${COLOR_RESET}"
-        echo
-        rm -rf "${www_dir}/node_modules"
-        rm -vf "${www_dir}"/{package.json,yarn.lock,.eslintignore,.eslintrc,.stylelintignore,.stylelintrc,compile_assets.sh,webpack.config.js}
-    else
-        echo
-        echo "${COLOR_BLUE}Leaving generated node modules${COLOR_RESET}"
-        echo
-    fi
-    popd || exit 1
-}
-
-compile_www_assets
diff --git a/scripts/docker/entrypoint_ci.sh b/scripts/docker/entrypoint_ci.sh
index ae4961ea64..f4941d15ef 100755
--- a/scripts/docker/entrypoint_ci.sh
+++ b/scripts/docker/entrypoint_ci.sh
@@ -71,11 +71,6 @@ if [[ ${SKIP_ENVIRONMENT_INITIALIZATION=} != "true" ]]; then
         echo
         echo "${COLOR_BLUE}Using airflow version from current sources${COLOR_RESET}"
         echo
-        if [[ -d "${AIRFLOW_SOURCES}/airflow/www/" ]]; then
-            pushd "${AIRFLOW_SOURCES}/airflow/www/" >/dev/null
-            ./ask_for_recompile_assets_if_needed.sh
-            popd >/dev/null
-        fi
         # Cleanup the logs, tmp when entering the environment
         sudo rm -rf "${AIRFLOW_SOURCES}"/logs/*
         sudo rm -rf "${AIRFLOW_SOURCES}"/tmp/*
diff --git a/scripts/docker/prepare_node_modules.sh b/scripts/docker/prepare_node_modules.sh
deleted file mode 100644
index 6c39de9c4d..0000000000
--- a/scripts/docker/prepare_node_modules.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-# 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.
-# shellcheck shell=bash disable=SC2086
-set -euo pipefail
-
-COLOR_BLUE=$'\e[34m'
-readonly COLOR_BLUE
-COLOR_RESET=$'\e[0m'
-readonly COLOR_RESET
-
-# Prepares node modules needed to compile WWW assets
-function prepare_node_modules() {
-    echo
-    echo "${COLOR_BLUE}Preparing node modules${COLOR_RESET}"
-    echo
-    local www_dir
-    if [[ ${AIRFLOW_INSTALLATION_METHOD=} == "." ]]; then
-        # In case we are building from sources in production image, we should build the assets
-        www_dir="${AIRFLOW_SOURCES_TO=${AIRFLOW_SOURCES}}/airflow/www"
-    else
-        www_dir="$(python -m site --user-site)/airflow/www"
-    fi
-    pushd ${www_dir} || exit 1
-    set +e
-    yarn install --frozen-lockfile --no-cache 2>/tmp/out-yarn-install.txt
-    local res=$?
-    if [[ ${res} != 0 ]]; then
-        >&2 echo
-        >&2 echo "Error when running yarn install:"
-        >&2 echo
-        >&2 cat /tmp/out-yarn-install.txt && rm -f /tmp/out-yarn-install.txt
-        exit 1
-    fi
-    rm -f /tmp/out-yarn-install.txt
-    popd || exit 1
-}
-
-prepare_node_modules
diff --git a/scripts/in_container/run_prepare_airflow_packages.sh b/scripts/in_container/run_prepare_airflow_packages.sh
index 791724d2bb..50d4fb8f8a 100755
--- a/scripts/in_container/run_prepare_airflow_packages.sh
+++ b/scripts/in_container/run_prepare_airflow_packages.sh
@@ -63,7 +63,7 @@ function prepare_airflow_packages() {
     fi
 
     # Prepare airflow's wheel
-    PYTHONUNBUFFERED=1 python setup.py compile_assets "${tag_build[@]}" "${packages[@]}"
+    PYTHONUNBUFFERED=1 python setup.py "${tag_build[@]}" "${packages[@]}"
 
     # clean-up
     rm -rf -- *egg-info*