- improves change type detection for parameter type changes (widening types is now considered non-breaking)
- ignores enum constructors and elements marked with @override
- fixes an issue with required interface detection on property and field usage
- default behavior of
--ignore-prerelease
is nowon
- improved pre-release handling. Now dart_apitool plays well in scenarios where released pre-release versions are compared to the new stable release
- fall back to system Flutter executable if no matching Flutter executable can be found
- move package from devmil to bmw-tech 🚀
- extend handling of change types to include "breaking", "non-breaking-minor" and "non-breaking-patch" changes
- only output sub process output in a "window" if stdout is a terminal
- fixes parsing of local package references
- replaces
--check-versions
with--version-check-mode
- reduces the amount of directories to copy in a path-dependency-context
- prints sub process output
--remove-example
option (defaults to true) that deletes the "example" directory of the package to analyze (in the temporary directory) to avoid issues with the example project
- fixes an issue with cache location and Flutter 3.7.0
- fixes an issue with projects having path dependencies to projects inside their folder structure
- adds include-path-dependencies parameters
- dependencies are ignored if one side of the diff is a path dependency
- use the relative path only for top level entities
- use a more stable way of getting the relative path
- Adds detection and consideration of @experimental flag
- Increases robustness regarding
- analysis_options: Those get now removed (in a temporary copy) to not limit the scope of dart_apitool
- Duplicate names: Detection of interfaces now considers the relative path of the library file to avoid crashes on duplicate names
- Improves handling of elements without root
- Changing required interfaces (even adding things) is now considered a breaking change interfaces are considered 'required' if they are abstract and used in a public method or field. This indicates that this interfaces is intended to be implemented by the user and therefore adding things also is breaking the API.
- Detect changes in package dependencies
- Adds codes for API diff reasons that point to an explanation here
- BREAKING: renamed "Class" model elements to "Interface" to reflect the abstraction it represents
- Fixes Extension handling (are now treated as interfaces)
- BREAKING: removes capability to use stored models in diffs
- BREAKING: CommandMixin's "analyze" no longer does clean up preparation results. For this the newly introduced "cleanUp" method has to be called
- Fixes major issue with equal class names (or top-level variables, functions or type aliases) imported in different namespaces
- Improve diff tree output
- Analyzes and diffs platform constraints
- Analyzes and diffs SDK versions
- Fixes Analyzer problem when visiting elements multiple times
- PackageAPI semantics are now an enum
- Fixes issues with entry points for fields and executables (differ ignored them)
- API changes for the diff command are now printed as a proper tree
- adds type aliases to Package API model
- fixes missing entry points for root level fields and functions
- fixed typo in
PackageApiDiffResult
- fixes base class merge (root level elements)
- fixes base class merge (override duplicates)
- BREAKING: by default base class elements get now merged with the derived class. This makes previously saved models incompatible.
"dart_apitool" will detect that, but it is not possible to diff an old model with a new one. (can only happen if you saved the model, doesn't affect live analysis of pub or directory references).
To deactivate that behavior you can use the--no-merge-base-classes
option. - fixes entry point handling
- fixes minimum version handling for versions with major == 0
- fixes getting own version in
pub global
context
- Command cleanup
- Calls
dart pub
orflutter pub
depending on the package dependencies - Refactor Dart and Pub Interaction helpers
- Entry points are now analyzed and diffed as well (List of publicly available import destinations that this element can be reached with)
- Adds
--ignore-prerelease
to diff command
- Fixes pre-release handling (old version was checked)
- Fixes pre-release handling: in case of a pre-release version there is no differentiation between breaking and non-breaking changes
- Fixes some issues with the analyzer and pub package references
- loosened strictness on pre-release versions
- Initial version