# Log for changes in the Navigation library
#
# `Added`: for new features
# `Changed`: for changes in existing functionality
# `Deprecated`: for soon to be removed functionality
# `Removed`: for now removed feature
# `Fixed`: for any bug fixes
# `Security`: in case of vulnerabilities
#
# Possible headings:
# API Changes
# Bug Fixes
# Dependency Updates
# Behavior Change
# External Contributions

## Unreleased

### Bug Fixes

- Updated the error message and exception type when navigating on a NavController with no
  navigation graph set.

### Dependency Updates

- Changed dependency of Activity library from version 1.6.1 to version 1.7.1.


