.. _omnigraph_versioning_extensions:

Versioning OmniGraph Extensions
###############################

The version numbers used by our extensions will follow the :ref:`omnigraph_semantic_versioning` model. Updates to the
version numbers will occur in every MR that modifies the extension. This will entail two changes. The first is an
update to the *config/extension.toml* file with the appropriate portion of the semantic version updated. The second
is an update to the *docs/CHANGELOG.md* file with a description of the changes that appear in that update.

For example if a new node was added to the `omni.graph.nodes` extension then it's *extension.toml* file would change
this section:

.. code-block:: toml

    [package]
    title = "OmniGraph Nodes"
    version = "1.23.8"

to this, as an addition is a MINOR version change:

.. code-block:: toml
    :emphasize-lines: 3

    [package]
    title = "OmniGraph Nodes"
    version = "1.24.0"

And these lines would be added at the top of the *CHANGELOG.md*:

.. code-block:: md

    ## [1.24.0] - 2112-03-04
    ### Added
    - Added the node type "Rush"


Inter-Extension Versions
************************
For now all of the extensions that live inside of Kit will always be set to use the "latest" version, so in an
`extension.toml` file they will appear like this:

.. code-block:: toml

    [dependencies]
    "omni.graph" = {}
    "omni.graph.scriptnode" = {}
    "omni.graph.tools" = {}

Extensions that live downstream of the Kit repo will be versioned explicitly. For example in the
`kit-extensions/kit-graphs` repo there is the extension *omni.graph.window.action* whose .toml includes this, where
the version of dependent extensions are explicit.

.. code-block:: toml

    [dependencies]
    "omni.graph.window.core" = {version="1.16"}
    "omni.graph.ui" = {version="1.5"}
