All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
This changelog is managed with commitizen tool, don't update it manually.
- Do not expand environment variables when validating example manifests
- Disable caching of task status endpoint
- cli: add validations for CLI options
- Get all information about Forbidden error from the server
- set local_storage_url as breaking change from 1.x to 2.x
- support
compote registry sync --resolution [all,latest]
- Add in-memory cache for API and storage requests
- add debug logging for HTTP requests
- add esp32h21 to known target list
- Add ruamel.yaml dependency
- Improve add-dependency output and help
- Add an option to specify registry url when using add-dependency
- Add git source to add-dependency command
- increase HTTP timeouts, use custom timeout for uploads
- Add support of
.gitignore
file while uploading / packaging component - Add
use_gitignore
option to the manifest - validate manifest of examples when uploading a component
- hash value of ComponentRequirement for register_url
- compote registry sync keep same folder structure as the registry
- Fix caching during uploading of components
- default storage url without fetching from registry
- only show debug hints when version solver failed
- unify 1.x 2.x generated parital sync metatdata file
- accept registry_url from api
- Use utf-8 encoding for all text file operations
- recreate lock file when missing env var
- drop current solution if requirement source is different
- ignore local storage urls when generating partial mirror
- rewrite partial mirror sync
- use logging module instead of warnings
- accept registry_url from api
- increase HTTP timeouts, use custom timeout for uploads
- recreate lock file when missing env var
- drop current solution if requirement source is different
- ignore local storage urls when generating partial mirror
- Use utf-8 encoding for all text file operations
- get_storage_client includes component registry_url
- wrong root_managed_components_lock_path
- Fix applying include / exclude lists in GitSource versions method
- Exclude custom dest_dir from component archive
- Refactor core.py, change os.path to pathlib.Path
- dependency with registry_url unrecognized correctly
- Fix filtering of files with default exclude filter patterns
- filterwarning "Running in an environment without IDF" while uploading
- drop support of root level
commit_sha
in the manifest file - Add more descriptive error message for authentication
- compare .component_hash by default, support optionally strict checksum
- Make environment variables in if rules required to have a value
- Revoke token on logout CLI command
- Use compote CLI when executed as module
- support debug mode by setting env var IDF_COMPONENT_MANAGER_DEBUG_MODE
- use current solution while changing target or idf version if it works
- Drop support of Python 2.7
- remove redundant option --namespace from component pack CLI
- pack and upload components without manifests
- Fix login command with non-existing directory
- union of constraints of unequal clauses
- Wrong version returned by
compote version
- Add upload mode to the pack_component
- optional dependencies always skipped when "version" undefined
- skip optional dependencies while solving dependencies
- api response string could be empty
- revert name slug re changes
- correct error message when manifest file is not a dict
- docs: fix render of '--'
- support env var in git source fields
git
,path
- support env var in local source fields
path
,override_path
- assume false when exceptions raised in if clause
- reset version solver states when the old solution not working
- test_check_for_newer_component_versions wrong component_hash
- store download_url only in storage client
- cleanup dependencies, lift version restrictions
- Consistent naming convention for ESP Component Registry
- local components in lock file not exist
- re-trigger version solver when optional dependency now meet conditions
- skip the optional dependencies while version solving
- Fix 'default' profile not loading from the config file
- Invalid component name on upload
- Handle missing files/broken symlinks when calculating hash
- unify env var with pydantic-settings
- rename service_url to registry_url in manifest files
- remove api cache with file
- remove poetry and do project cleanup
- rewrite with pydantic
- Change comment types to regular ones
- Replace format() with f-strings
- manifest dump always adds empty fields
- remove redundant option --namespace from component pack CLI
- pack and upload components without manifests
- Fix login command with non-existing directory
- union of constraints of unequal clauses
- Wrong version returned by
compote version
- Add upload mode to the pack_component
- drop support of root level
commit_sha
in the manifest file
- pass CLI arguments while uploading packed components
- calculate manifest hash based on set values
- remove unused attr
component_hash_required
- Add more descriptive error message for authentication
- compare .component_hash by default, support optionally strict checksum
- Make environment variables in if rules required to have a value
- store images on dockerhub
- optional dependencies always skipped when "version" undefined
- skip optional dependencies while solving dependencies
- api response string could be empty
- revert name slug re changes
- correct error message when manifest file is not a dict
- docs: fix render of '--'
- support env var in git source fields
git
,path
- support env var in local source fields
path
,override_path
- assume false when exceptions raised in if clause
- Revoke token on logout CLI command
- Use compote CLI when executed as module
- support debug mode by setting env var IDF_COMPONENT_MANAGER_DEBUG_MODE
- support reuse local existing versions while version solving
- Set COMPONENT_VERSION in CMake from manifests in requirements file
- use current solution while changing target or idf version if it works
- reset version solver states when the old solution not working
- test_check_for_newer_component_versions wrong component_hash
- store download_url only in storage client
compote registry login
url- cleanup dependencies, lift version restrictions
- Consistent naming convention for ESP Component Registry
- local components in lock file not exist
- local dep with '__' can be treated as namespace separator correctly
- re-trigger version solver when optional dependency now meet conditions
- skip the optional dependencies while version solving
- Fix 'default' profile not loading from the config file
- Invalid component name on upload
- unify env var with pydantic-settings
- rename service_url to registry_url in manifest files
- remove api cache with file
- remove poetry and do project cleanup
- add esp32c61 to the list of known targets
- Drop support of Python 2.7
- Handle missing files/broken symlinks when calculating hash
- fix the order of managed_components
- rewrite with pydantic
- Change comment types to regular ones
- Replace format() with f-strings
- wrongly terminate the version solver when versions not been found at the first round
- support boolean type for require field
- Handle git compatible version with revision in CLI
- add sync command to synchronize local mirror
- used callback to deprecate msg
- add alias for default_namespace and registry_url
- optimize import list in .py files, drop unused imports
- fix packing and uploading of the components with lightweight tags
- cli: create test for updated login flags
- Delete log typo
- add missing commitizen config to pyproject.toml
- Add environment variable to disable TLS verification
- add repository_info block to the manifest
- add commitizen for changelog management
- add missing commitizen config to pyproject.toml
- filter versions when api_client getting versions
- local components should override dependencies with same short name
- move tqdm progress_bar from api_client.py to core.py
- project_components priority should be higher than project_extra_components
- rename component_type to component_source
- Support overriding components according to the component types
- Included the use of include/exclude filters from the manifest that is used for calculating the component hash.
- Added a user-friendly message to handle a 413 HTTP error triggered by sending large component archive.
- Add esp32c5 target
- Add URL and status code to network error messages
- Added --repository and --commit-sha parameters for packing and uploading component
- Added aliases for '--default_namespace' as '--default-namespace' and '--registry_url' as '--registry-url'. The previous versions have been marked as deprecated.
- Added CLI command
compote registry sync
to download components and synchronize a local mirror
- Fixed message formatting and progress bar displays during user component upload
- Fixed a problem when the local source created by the override_path parameter doesn't support web_service source keys
- Only expand environment variables in the manifest files during CMake execution
- Manifest dumping with non-expanded environment variables
- Fix typo in gitlab CI user agent
- Fix issue with creating a profile in
idf_component_manager.yml
if it does not exist, when executingcompote registry login
command with--service-profile
specified - Remove warnings of the unknown root keys in the manifest files
- Fix schema validation of
idf_component_manager.yml
, for an empty profile name value - Fix manifest schema validation message for an empty field value
- Fix processing of
rules
andmatches
for components from the registry - Fix processing handling of
require
field for components from the registry
- Add CI environment information to the component manager requests user agent
- if-clause supported boolean operator
&&
,||
, with nested parentheses - support set
version
besides if-clause, to override the default dependency version - support
matches
for declaring optional dependencies. The first if-clause that matches the condition will be used - Support
license
field in the manifest files - Allow unknown fields in the idf_component_manager.yml config file
- More descriptive manifest validation error messages
- Add
default_namespace
,registry_url
parameters tocompote registry login
command - Create a profile in
idf_component_manager.yml
if it does not exist when executingcompote registry login
command - Option to check for new versions of components each time CMake is triggered (IDF_COMPONENT_CHECK_NEW_VERSION env variable)
- Support multiple storage urls in IDF_COMPONENT_STORAGE_URL environment variable (“;” separated) or from configuration file.
- Don't require token for
--dry-run
ofcompote component upload
command - Fix incorrect message suggestion to check upload status if non-default profile is used
- Add support for non-default registries to
compote project create-from-example
command through the--service-profile
option - Fix issue with dependencies on local components without a version set
- Skip solving solved component requirements. Speed up version solving
- Support revision in git tags by replacing
~
with.
in the version, i.e.1.0.0.1
- Components under
components/
will be treated with higher priority while solving dependencies - Add component property
REQUIRED_IDF_TARGET
if the component supports specific targets - Fixed issue where
compote component upload
command ignoreddefault_namespace
parameter from the profile - The component manager no longer accesses the API to get the storage URL for the default registry URL
- Keep original if statement in the
IfClause
object - Git source dependencies with
version
field work again
- Fetch the same version as the lock file does while checking solved dependencies
- Extend the behavior of
compote manifest create
andcompote manifest add-dependency
to create a manifest file based on the context of the current working directory (context of a project or a component) - Disable API cache by default
- Updated error message if override_path is not a folder
- Add documentation for compote CLI
- Add a check for the existence of a dependency in the registry when using the
compote manifest add-dependency
command - Add
-W | --warnings-as-errors
flag tocompote
to treat warnings as errors - Add
-p | --path
flag tocompote manifest create
andcompote manifest add-dependency
to specify the path to the manifest file - Add
compote manifest schema
to generate the json schema file of theidf_component.yml
- Add
compote cache clear
to drop system-wide cache of components and API cache - Make file cache path configurable via
IDF_COMPONENT_CACHE_PATH
environment variable - Add
compote cache path
command to print the path to the cache directory - Add
compote cache size
command to print the size of the cached data - Add
compote version
command to print the version of the component manager - Add
IDF_COMPONENT_OVERWRITE_MANAGED_COMPONENTS
environment variable to allow overwrite files in the managed_component directory, even if they have been modified by the user - Add documentation project for the component manager and Espressif component registry
- Treat local source dependency priority higher
- Add
--install
flag tocompote autocomplete
to create the completion files and append the sourcing code into the rc files. By default, print the completion functions to the console. - Add
--dry-run
flag tocompote autocomplete --install
to simulate the install script. - Add
--dry-run
flag tocompote component upload
to simulate the upload process - Print message with the reason why the component manager desided to solve dependencies again
- Add
update-dependencies
command toidf.py
for updating dependencies of the project - Add manifest format reference to the documentation
- Add
compote component yank
CLI command to yank version of the component from the registry - Show warnings from the component registry during uploading components
- Add config for ReadTheDocs
- Add
dest-dir
option tocompote component pack
command to specify the destination directory for the archive - Add
compote registry login
CLI command to login to the component registry and store the token in the config file
- Fix deprecation warnings not showing up in the terminal
- Fix regular expression for repository URL validation
- Stop injecting shell config files by default in
compote autocomplete
- Prevent possible DNS spoof when
dependencies.lock
file exists and no need to be updated. - Always add
idf
as a dependency todependencies.lock
file even without explict declaration. - Fix git submodule update error when using submodule exists in the
path
field specified in the corresponding git dependency - Fixed a bug where dependencies of the component weren't updating when local component changed
- Fix mixed slashes in paths on Windows
- Make different error messages for non-existing Version and Component
- Fixed a bug where it was required to set IDF version and target for non-IDF dependent actions
- Fix checks for targets in manifest validator, to make sure newer targets don't cause errors on older ESP-IDF versions
- Pin urllib version to <2 to avoid incompatibility with older python versions
- Components with optional dependencies could be uploaded normally
- Relative path in
override_path
now based on the directory of itsidf_component.yml
- Correct spelling of error message for unsatisfied dependency
- Fix manifest hash calculation for dependencies from git repositories
- Keep local components non-hashable
- Fix name and namespace regex used in create project from example command
- Fix
compote autocomplete
incompatible with click 7.x issue - Fix
compote autocomplete
failed when .zshrc has nocompinit
set - Fix nondeterministic order of components passed to IDF build system (espressif/esp-idf#10419)
- Fix hash validation for components uploaded with older versions of the component manager
- Fix
idf.py add-dependency
crash for any argument - Fix regression in
python -m idf_component_manager upload-component
command
- Make cache path shorter (important on Windows)
- Set default API responses cache time to 5 minutes
- Fix support of python 3.4
- Add the
repository
,documentation
,issues
, anddiscussion
fields for the URLs in the root of the manifest - Cache request to the API component registry
- Add
require
field for dependencies. Add possibility to download dependencies without building them. - Default revision number change from 1 to 0
- Warn users when the
override_path
point to a non-component directory - Load component details from pre-rendered JSON files from the static endpoint
- Use local file system like
file://
as a Component storage URL - Record managed component version in component property
COMPONENT_VERSION
- Disable API interaction if only storage URL is set
- Add warnings for build files in component version archives
- Add hints for user printed to stderr
- New CLI: compote
- Add
create-project-from-example
command to theidf.py
- Add the
pre_release
flag for the dependency to control downloads of pre-release versions - Print a note with the list of alternative targets when the solver cannot find a suitable component version for the current target but there are some candidates for other targets.
- Add the
examples
field for the custom examples paths - Add new environment variables
IDF_COMPONENT_REGISTRY_URL
andIDF_COMPONENT_REGISTRY_PROFILE
for configuring the component manager - Exclude build artefacts from the examples
- Hide stack trace after solver dependency error
- Fix packing archives with version from git tag
- Validate case-insensitive duplicate items in the manifest file
- Provide better error message when no network connection
- Improve the error message when failed to solve the dependencies specified in manifest files
- Fix crash on use of local components and
override_path
for namespaced components - Mixing stdout and stderr of git command
- Dump manifest file inconsistency with escaped dollar sign
- Fix schema validation of the
idf_component_manager.yml
config file
- Loose the restrictions for pyyaml on python 2.7 and 3.4
- error when revision number equals to 1
- colorama version incompatible with python 3.4
- pyyaml version incompatible with python 3.4
- Add constraints for dependencies in setup.py
- Fix crash on malformed env variables
- Support revision numbers in
version
anddependencies
->version
- Print suggestion to update the component manager on manifest errors
- Fix expansion of environment variables in manifest for
rules
- Fix inject optional dependencies even if they are excluded
- Tracking modifications of the managed components
- Add CLI method to create a project from a component's example
- Print a warning when the name of the local component doesn't match the directory name.
- Optional dependencies for the
idf_component.yml
based on two keywords,idf_version
andtarget
.idf_version
supports allSimpleSpec
grammar, andtarget
supports==
,!=
,in
,not in
. - Revision number support in component manifest file
- Add
override_path
field for dependencies. Add possibility to change component from component registry to the local one. Can be used for examples of the component to change that component to the local one. - Support environment variables in
idf_component.yml
yaml values. Substrings of the form$name
or${name}
are replaced by the value of environment variable name. - Send custom User-Agent with client version to registry API
- Add OS, platform and python version to API client user agent
- Provide list of managed components to ESP-IDF build system
- Use bare repositories for caching components sourced from git
idf.py fullclean
command also delete unchanged dependency components frommanaged_components
folder- Printing information about selected profile using
--service-profile
flag, error message if profile didn't find in idf_component_manager.yml file - Printing warnings and errors to stderr
- Fix use of project's components with higher priority than ones delivered by the component manager
- Delete unused components from the
managed_components
directory - Fix include/exclude filters for nested paths in
idf_component.yml
manifest - Update lock file if new version of the idf was detected
- Fix checkout error when depends on git source without
path
- Fix solve version error when using local components with git source.
- Fix solve version error when using caret (
^
) with prerelease version - Fix relative path in the manifest for local components
- Fix bug with the progress bar during uploading components
- Fix error messages when there's self-dependent package during version solving
- Fix support of REQUIRES by the project's main component
- Allow transient dependencies for the main component
- Fix relative path in manifest with a local component
- Fix the case when some dependencies don't have any versions
- Fix error message when the directory didn't find in a git repository
- Get the list of known targets from ESP-IDF, when possible
- Add version to CLI help
- Add . and + as allowed chars in component names
- Add tags block into manifest file
- Allow passing version during component upload
- Add esp32h2 and linux targets
- Add loading of version from git tag
- Fix possibility to use a branch as a git version
- Fix downloading dependencies from a git source
- Copy filtered paths for git source
- Fix local source missing dependencies