Releases: arunkumar9t2/scabbard
Releases · arunkumar9t2/scabbard
0.5.0 - Anvil, Hilt and Missing Binding Visualization support
Infra
- Migrated processor artifacts to
mavenCentral
atdev.arunkumar:scabbard-processor:0.5.0
coordinate. - Consuming projects no longer need to add
jcenter()
repository.
Processor
- Scabbard now generates images to
StandardLocation.SOURCE_OUTPUT
folder which is the same folder as dagger or other annotation processor generated code. This location is by default indexed by IntelliJ/Android Studio and fixes issues where gutter icons were not shown due to folder not getting indexed. The generated images also can be directly viewed underjava (generated)
source set in IDE.
Missing Binding Visualization.
Scabbard can add hyperlinks to generated full binding graph when Dagger's missing binding error is detected. This requires fullBindingGraphValidation
to be set to true
. Clicking the component name will open the full binding graph which would contain the missing binding visualization as shown below:
Dagger Hilt
- Updated to support latest generated code changes by Hilt.
- Fix Scabbard not working on a project when only
hilt-android-compiler
was applied.
Anvil support
- Scabbard will add gutter icons to generated code for
@MergeComponent
and@MergeSubcomponent
annotations samples/kotlin-anvil
added- No changes in gradle setup required to enable this feature.
SVG
Gutter icons now shows option to open the svg file in browser directly. From the browser, the svg file can be navigated using component hyperlinks
Dependencies
Update to Kotlin
1.5.0and
Dagger 2.37`
Misc
- Improved documentation.
0.4.0 - Dagger Hilt support and component hierarchy visualizations
New
Announcement post
IntelliJ Plugin
Dagger Hilt Support
- Gutter icons for
@AndroidEntryPoint
,@HiltAndroidApp
and@DefineComponent
.
- Gutters Open Component Hierarchy images - see below.
Processor
Component Hierarchy support
Scabbard generates a new tree_$component.$format
file that shows the component hierarchy and scopes.
- Fixed
StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J:
warning in build log
Gradle plugin
- Support hilt
- [Perf] Scabbard will lazily add required dependencies and only on projects that use dagger.
- Support
java
plugin
Documentation
- Added Maven sample. See guide here.
0.3.0 - Subcomponent inherited bindings, new gutter icon and minor IDEA plugin improvements
New
IntelliJ Plugin
- New modern Gutter icon aligned with design of native Dagger gutter icons present in Android Studio 4.1.
- When full binding graph validation is enabled, Scabbard generates multiple images (full and normal). Previously Gutter icon would only open the normal image, now it shows option to open the correct file as shown below:
Processor
@BindsInstance
nodes are now rendered differently in parallelogram shape.
- Scabbard will now show inherited bindings in a
Subcomponent
. This is helpful when we like to know which bindings are inherited and from which component.
- Nodes in Entry Points will have proper styling like Scope Colors applied to them (previously only dependency graph has styling applied).
0.2.0 - SVG, simple names and improved gradle plugin
New
- Scabbard now supports SVG output format. SVG helps in reducing file sizes and supports mild interactivity. For example, you could click on a subcomponent to navigate to it's sub graph as shown here when opened in a browser. Navigation is considered a beta and needs more work for multi-module projects.
- SVG can be enabled by
scabbard { enabled true outputFormat "svg" // default png }
- All examples are updated with
svgs
and are interactive.
- SVG can be enabled by
- Support for simple names. All graphs now use simple names instead of qualified names by default.
- To continue using qualified names:
scabbard { enabled true qualifiedNames true // default false }
- To continue using qualified names:
- When full binding graph validation is used, full binding graph images are generated seperated and prefixed with
full_
. - Generated images will have flat dir structure in
StandardLocation.CLASS_OUTPUT
.- Java :
build/classes/java/$sourceSet/scabbard
- Kotlin :
build/tmp/kapt3/classes/$sourceSet/scabbard
- Java :
IntelliJ plugin
- Gutter icons for
@ContributesAndroidInjector
. Previously whendagger.Android
was used, one has to manually navigate to the generated subcomponent to view the graph. Now it is possible to directly open the generated subcomponents' graph with this new icon. - Intellij plugins now recognize full binding graph validation images. i.e images prefixed with
full_
.
Gradle plugin
- [Breaking] Better support for Kotlin buildscripts. Previously the syntax for Kotlin scripts used to be unpleasant with
closure
s. Now that has been refactored to below.- New syntax
scabbard { // this : ScabbardPluginExtension enabled = true failOnError = false outputFormat = "svg" }
- Diff
- scabbard.configure(closureOf<ScabbardSpec> { + scabbard { // this : ScabbardPluginExtension enabled = true failOnError = false + } - })
- New syntax
- Simple multi module project setup. When Scabbard plugin is applied to a root
build.gradle
, it automatically configures allsubprojects
. - Plugin no longer relies on order of applied plugins (i.e after Java, Kotlin) to function properly.
Misc
- Add Dagger coffee app with thermosiphon to examples ☕.
- Remove red color from scope colors and use red only for
Missing Binding
. - Multibindings don't have repeated
SET
orMAP
labels. Now it is onlySet|Map<Type>
. - Fixed subcomponent creator to -> subcomponent edge labels were often getting overlapped.
- Fixed when both
failOnError
andfullBindingGraphValidation
are used, build fails withFilerException
. - Fixed build fails with
kapt
not found forjava
projects. - Scabbard now always generates
.dot
file even if image generation fails for any reason. (OOM etc.)
Initial Release
Scabbard initial release
- Visualize entry points, dependency graph, component relationship and scopes in your dagger setup.
- IDE integration.