Skip to content

Releases: Kotlin/dokka

1.9.20

04 Mar 17:09
Compare
Choose a tag to compare

General bugfixes

  • Fixed sealed interfaces not having the sealed keyword in signatures (#2994)
  • Fixed incorrect links in multi-module projects with non-unique package names (#2272). Huge thanks to @EddieRingle!
  • Fixed member extensions not being shown on index pages in certain scenarios (#3187)
  • Fixed Java's inner classes not having the inner keyword in Kotlin signatures (#2793)
  • Fixed Java's @param tag not working with type parameters (#3199)
  • Fixed Dokka failing in KMP projects when the JVM source set is suppressed (#3209)

HTML format

  • Provide an ability to add a custom homepage link to the header, more details in #2948 (comment)
  • Fixed tab selection resetting after navigating to a different page (#2899)
  • Fixed inline code not always being aligned with the surrounding text (#3228)
  • Fixed the "No options found" text in search being barely visible (#3281)
  • Fixed empty HTML tags being rendered for no reason (#3343, #3095)

Runners

Gradle Plugin

  • Mark tasks as not compatible with Gradle configuration cache, second try (#3438). Thanks to @3flex for noticing and fixing the problem!

Maven Plugin

  • Fixed dokka:help being absent (#3035). Thanks to @aSemy!
  • Fixed the source links configuration not working (#3046). Thanks to @freya022 for fixing this one!

CLI runner

  • Allow using relative paths in the sourceRoots configuration option (#2571)

Plugin API

  • Provide an extension point to customize the rendering of code blocks in HTML format (#3244)

Other:

  • Make sure wasm-js and wasm-wasi targets introduced in Kotlin 1.9.20 are supported (#3310)
  • Avoid concurrent invocations of Kotlin compiler's API due to the compiler API itself not always being thread safe (#3151). No noticeable performance loss is expected.
  • Bump dependencies to the latest versions (#3231, #3206, #3204)
  • Fix a documentation link (#3213). Thanks to @SubhrajyotiSen for noticing and fixing it!
  • Various build and project structure improvements (#3174, #3132). Enormous thanks to @aSemy for the help!

See Dokka 1.9.20 milestone for the list of all changes.

1.9.10

16 Oct 16:55
Compare
Choose a tag to compare

General

  • Fix re-emerged code analysis concurrency issues which led to flaky builds (#1599, #3143)
  • Preserve the order of collection items when deserializing Dokka's configuration (#3006). Thanks to @eunwoop!

HTML format

  • Fix an indefinite loop in the script that resizes symbol signature blocks (#3116)

Gradle

  • Fix resolution of platform dependencies for Kotlin 1.9 / Gradle 8 (#3153, #3147)
  • Mark tasks as not compatible with the Gradle configuration cache (#3070). Thanks to @BoD!

Java

1.9.0

01 Sep 14:34
Compare
Choose a tag to compare

General improvements

  • Generate dedicated pages for type aliases and enhance their presentation (#2862, #2971)
  • Add documentation for Enum.entries introduced in Kotlin 1.9.0 (#2762)

HTML format

This release is packed with enhancements and bugfixes that make your API reference docs mobile-friendly!

You may find it a weird direction for improvement β€” we were just as surprised to find that almost 1/4 of Standard Library's API reference traffic is coming from mobile devices. Thanks to the Kotlin Website team, who contributed these improvements, Dokka now provides a solid experience to such visitors.

Improvements:

  • Significantly improve the mobile layout and overall responsiveness (#2836, #3021, #3082, #3018)
  • Use JetBrains Sans as the primary text font (#3017)
  • Improve the experience of reading the documentation when JavaScript is disabled in the browser (#3020, #2836)

Bugfixes

  • Fix a redundant dot in the path of search elements (#2289)
  • Fix unknown asset paths leaking into HTML body (#3061)
  • Fix invisible/hidden packages for modules with a space in the name (#3011)

Java interoperability

  • Fix multi-param methods being classified as field setters (#2992)

Javadoc format

  • Add basic support for @author, @since and @return tags (#1770). Thanks to @irina-turova!

Other

  • Decompose Kotlin/Java analysis (#3034)
  • Improve copying base-frontend files between subprojects (#2970). Thanks to @aSemy!

Known problems

Some Multiplatform Gradle 8 projects might experience build failures when resolving native/platform dependencies. Please, see #3153 for more details and workarounds.

Breaking changes

This release introduces some breaking changes that are expected to affect only a fraction of Dokka users.

HTML

Note: this section only applies to those customizing Dokka's HTML format by overriding styles or HTML templates. If you are not doing any customizations, you may skip this section.

To lay a solid foundation to making the HTML format responsive, some page layouts and many styles had to be changed in a backward-incompatible manner.

If you are overriding logo-styles.css to provide your own header logo, please update it to be in line with the new styles - there is significantly less position hardcoding now. See this example for how it can be done.

If you are overriding styles.css with your own file, please update the baseline styles to the latest, and see if anything is broken. If you get stuck with adapting your styles to the changes, the diff might help.

If you are overriding base.ftl or header.ftl templates, please update them to the latest, and adapt your changes.

CLI runner

Due to the analysis refactoring needed for the migration to K2 (#3099), the JARs required to run Dokka have slightly changed.

The following JARs are no longer supported or published:

Please, replace them with a single JAR:

Plugin API

An internal refactoring of Dokka's analysis API was much needed for the migration to K2, leading to breaking changes in some cases.

If your Dokka plugin compiles without any problems β€” you may ignore this information, you are likely not affected.

If something doesn't compile or doesn't work anymore, please see #3099 for more details.

1.8.20

06 Jun 12:53
Compare
Choose a tag to compare

Improvements

  • Update Kotlin Gradle Plugin to 1.8.10 and Android Gradle Plugin to 4.1.3.
  • Move the "Properties" block to be above functions inside the "Members" tab (#2908)
  • Make Javadoc tag parsing case-sensitive as per Javadoc specification (#2907)
  • Improve performance by reducing allocations and thus decreasing time spent in GC (#2729)

Bugfixes

  • Fix unresolved links leading to declarations from another source set #2878
  • Fix Dokka not failing the build if there are errors (#2934), regression from 1.8.10. Thanks to @jush!
  • Fix TypeNotPresentException thrown in projects without KGP (#2890), regression from 1.8.10.

Gradle plugin

  • Start using kotlin-dsl plugin (#2702, #2833). Thanks to @aSemy!
  • Use Gradle filesystem types for task properties and apply default values lazily (#2707, #2983). Thanks to @aSemy!

Plugin API

  • Change the default logging level of console apps (DokkaConsoleLogger) to PROGRESS (#2871)
  • Introduce @InternalDokkaApi annotation (#2904)
  • Mark various utility API as Dokka-internal (#2937)

Infrastructure

Big thanks to @aSemy, @Goooler and @3flex for their valuable contributions and for improving the internal
developer experience when working on Dokka!

Documentation

Security

  • Bump npm dependencies to address various vulnerabilities (#2894, #2923)

Other

  • Update publication POM links to https (#2931). Thanks to @aSemy!
  • Tidy up Gradle example projects and warning suppressions (#2916, #2975). Thanks to @aSemy!

1.8.10

06 Mar 12:10
Compare
Choose a tag to compare

Dokka's documentation has been entirely rewritten and can now be found on kotlinlang.org:

  • More examples, including Groovy DSL for Gradle project configuration
  • More guidelines to help beginners
  • More details for complex projects

Note: Version 1.8.0 was skipped due to a Metaspace memory leak in Kotlin's reflection (KT-56093). Dokka 1.8.10 should be fully compatible with Kotlin 1.8.0.

Improvements

  • Revise project documentation and examples (#2728, #2737, #2736). Thanks to @sarahhaggarty for helping!
  • Support generating documentation for Kotlin/Wasm projects (#2814). Thanks to @igoriakovlev!
  • Move the contents of Inheritors, Parameters, See also and Samples tabs into the main declaration description (#2688).
  • Add Members and Members & Extensions tabs to class-like declaration pages (#2764).
  • Display source set / platform indicators at all times, which should help identify the supported platform of single-platform libraries and modules. (#2847).
  • Generate the default no-arg constructor for Java declarations (#2765).

Bugfixes

  • Fixed analysis environment not being properly disposed (#2755).
  • Fixed nondeterministic sorting of function/property overloads (#2784).
  • Fixed inconsistent alphabetical order of element groups in index and navigation (#2861).
  • Fixed constructors being rendered as functions (#2689).
  • Fixed default values for var properties being displayed (#2717).
  • Fixed source links leading to the KDoc instead of the declaration (#2724).
  • Fixed thread-safety issues in DokkaLogger (#2827).
  • Fixed documentation not being inherited in case of diamond inheritance (#2686).

Gradle Plugin

  • Fixed NoSuchMethodError when running under Gradle 8 (#2796).
  • Fixed possible metaspace leaks due to external thread locals not being disposed (#2678).
  • Fixed premature initialization of outputDirectory input property (#556).
  • Fixed premature initialization of moduleVersion input property (#2799). Thanks to @JavierSegoviaCordoba!
  • Fixed unnecessary snapshotting of source link directory input which led to performance problems (#2807).
  • Fixed missing group and description for MultiModule tasks (#2806). Thanks to @TWiStErRob!

Javadoc

  • Fixed truncation of module and package description after the first sentence (#2055). Thanks to @BlackAnubis7!
  • Fixed rendering of empty/useless Kotlin companion objects (#200, #2086)
  • Fixed leaking configuration/environment details in generated links (#2803).
  • Fixed incorrect links when javadoc.jar produced by Dokka is imported into IntelliJ IDEA / Android Studio (#2734). Thanks to @bomberaya!

Plugin API

  • Mark Plugin API as experimental (#2716).

Infrastructure

  • Enable Gradle build cache, and add caching of Maven dependencies for GitHub Actions (#2711, #2722). Thanks to @aSemy!
  • Add concurrency cancellation for build/test GitHub Actions (#2710). Thanks to @aSemy!

Other

1.7.20

11 Oct 11:07
Compare
Choose a tag to compare

This release focuses primarily on improving user experience and HTML format in particular.

Improvements

General

  • Display inherited extensions (can be disabled by setting suppressInheritedMembers configuration property) (#2625)
  • Display details for @Deprecated declarations such as deprecation message, level and proposed replacement (#2622)
  • Display and document Enum's synthetic values() and valueOf() functions (#2650)
  • Do not render constructors for annotation classes (#2642)
  • Display values of Java constants (#2609)
  • Trim spaces inside indented code blocks (#2661, #2232, #2233)
  • Replace package name on the cover of package pages with "Package-level declarations" (#2586)

HTML format

  • Add IntelliJ icons to the navigation side menu (#2578)
  • Add auto-scrolling to selected navigation item (#2575)
  • Use OS color scheme to initialize light/dark mode, thanks to @pt2121! (#2611)
  • Update styling of all section tabs (including platform tabs) to match kotlinlang.org (#2589)
  • Format long signatures dynamically based on client width (#2659)
  • Add a horizontal divider between function overloads that are displayed on the same page (#2585)
  • Add Cmd + K / Ctrl + K hotkey for opening search dialog, thanks to @atyrin! (#2633)
  • Make current breadcrumb element not clickable and of default font color (#2588)
  • Update code highlighting colors (#2670)
  • Do not render platform tabs for common-only content (#2613)
  • Apply the same style to all KDoc tag headers, making it more consistent (#2587)
  • Move source links into signature, especially helpful on pages with many overloads (#2476)
  • Add inner/nested declarations to the navigation side menu (#2597)
  • Disable copy button for signatures (#2577)

Javadoc format

Kotlin-as-Java plugin

  • Render annotation blocks for transformed classes, previously ignored (#2549)

Gradle runner

  • Remove kotlin-stdlib dependency, which should fix errors like Module was compiled with an incompatible version of Kotlin, thanks to @martinbonnin! (#2570)

Bugfixes

  • Fixed missing spaces between adjacent Markdown elements, where _try_ *this* would be rendered as trythis (#2640)
  • Fixed dependency resolution errors when building documentation for multiplatform projects with enabled compatibility metadata variant (#2634)
  • Fixed a rare StackOverflowError related to type-aliased native references (#2664)
  • Fixed IllegalStateException that was caused by using JS's dynamic types (#2645)
  • Fixed a bug where certain private declarations were rendered as public (#2639)
  • Fixed incorrect handling of static declarations used within @see tag (#2627)
  • Fixed Java Enum types being rendered as Any (#2647)
  • Fixed incorrect signature generation that was caused by generic types caching (#2619)
  • Fixed incorrect parsing of static imports in Java annotation params (#2593)
  • Fixed sourceRoots configuration param not handling single .java files, thanks to @2017398956! (#2604)
  • Fixed unresponsive HTML anchor button (#2644)
  • Fixed dokka-customFormat-example project to use up-to-date logo styles (#2608)

Developer experience

  • Enable Gradle Enterprise build scans, thanks to @Goooler! (#2641)
  • Use GitHub Actions artifacts to store generated documentation snapshots, thanks to @StefMa! (#2630)

Other

  • Warn users that GFM, Javadoc and Jekyll formats are in early alpha stages by printing a build log message during execution (#2550)
  • Revise developer guides documentation that should help plugin authors and new contributors (#2523)
  • Bump Gradle to 7.5.1, thanks to @Goooler! (#2618)
  • Fix spelling errors, thanks to @FelixDombek! (#2594)

1.7.10

13 Jul 10:08
cfa433f
Compare
Choose a tag to compare

Bugfix release that addresses several blockers and regressions.

General

  • Support Kotlin 1.7.10

Gradle plugin

  • Do not expose Kotlin stdlib in plugin dependencies, this should fix errors like Module was compiled with an incompatible version of Kotlin when using Dokka. Thanks to @martinbonnin (#2543)

Java sources

  • Fixed build failure caused by having configured source links for Java code (#2544)
  • Fixed several exotic problems that led to build failures, all related to using annotation in Java sources (#2509, #2551, #2350)
  • Fixed IntelliJ platform WARN: Attempt to load key messages that appeared when analyzing Java sources (#2559)

1.7.0

20 Jun 14:37
Compare
Choose a tag to compare

Improvements

General

  • Update to Kotlin 1.7.0, IntelliJ Platform 213
  • Support definitely non-nullable types (#2520)
  • Don't expose enum entry constructor arguments, thanks to @ebraminio (#2497)
  • Preserve ordering of enum entries as in source code, previously reversed (#2469)
  • Improve support for inherited Java fields with accessors, now properly interpreted as val/var properties (#2481, #2532, #2540)
  • Skip @Deprecated members with HIDDEN level (#2486)
  • Make rendered default value dependent on source set for expect/actual declarations (#2449)

HTML format

Javadoc format

  • Make Javadoc pages generation deterministic (#2479)
  • Update shipped jQuery to avoid multiple CVEs, thanks to @ToppleTheNun (#1938)

GFM format

  • Support rendering of code blocks and inline code used in KDocs, thanks to @cosinekitty (#2485)

Kotlin-as-Java plugin

Gradle runner

  • Make dokka-analysis dependency compileOnly, this should help avoid compatibility problems if different versions of Kotlin are bundled in Gradle and Dokka (#2521)
  • Enable stricter validation for cacheable Gradle tasks, thanks to @3flex (#2500)
  • Remove unused & redundant dependencies for Gradle runner, thanks to @3flex (#2502)
  • Remove outdated suppression in Gradle runner, thanks to @3flex (#2501)

Fixes

General bugfixes

  • Fixed a compiler deadlock issue which led to stalling builds in some KMP projects (#2480)
  • Fixed incorrect argument names of functional type parameters (#2478)
  • Fixed missing external docs for AndroidX libraries, thanks to @EdricChan03 (#2456)
  • Fixed tests failing on Windows, thanks to @3flex (#2507)

Security

Plugin API

  • Decompose base.ftl template: now header.ftl, footer.ftl and page_metadata.ftl can be overridden individually (#2432)

Other

Thanks to all the contributors!

1.6.21

26 Apr 09:12
Compare
Choose a tag to compare

This is a bugfix release that mostly enables building documentation for multiplatform projects that utilize .klib libraries.

Changes

Bugfixes

  • Support KLIB libraries for common platform, previously led to ERROR CLASS instead of references in documentation (#2441)
  • Fixed a maven plugin build problem related to coroutines which only occurred in multi-module builds (#2461)

1.6.20

15 Apr 10:03
Compare
Choose a tag to compare

Features

  • Introduce documentedVisibilities setting that allows including/excluding any visibility modifier in documentation. This is a more flexible replacement for includeNonPublic, which has now been deprecated (#2270)
  • Make HTML pages customizable through FreeMarker HTML templates (#2374)
  • Add global settings to JSON dokka CLI input (#2292), thanks to @BarkingBad!

HTML format changes

  • Add vertical alignment (wrapping) of signatures when 3 and more parameters are present (#2309)
  • Enhance primary constructor signature, display val/var keywords and default values (#2313)
  • Add a level of indentation to childless items in navigation tree (#2291)
  • Add horizontal margin to breadcrumbs delimiter (#2285)
  • Fixed various CSS rendering issues (#2284, #2389)

Bugfixes

  • Fixed OutOfMemoryError: Metaspace-related issues for the majority of cases (#2216)
  • Fixed classpath issues for HMPP libraries (#2431)
  • Using @ symbol within code blocks in .md files doesn't lead to cropped documents anymore (#2418)
  • Fixed incorrect placement of HTML head tags, which led to missing favicon in multi-module projects (#2365)
  • Fixed resolution of ultralight methods that led to flaky signature generation (#2400)
  • Coroutines dispatchers are now shut down after each module pass to avoid resource leaks (#2325)
  • Suppressed property setters are now excluded from documentation (#2220)
  • Suppressing extensions doesn't fail builds anymore (#2348), thanks to @BarkingBad!
  • Fixed java getter / setter name generation for kotlin-java interop, now isBoolean instead of getBoolean (#2356), thanks to @CharlesG-Branch!
  • Fixed MathJax plugin, previously completely broken (#2342), thanks to @wyskoj!
  • Fixed Input/Output streams to minimize resource leaks (#2312, #2319)

Plugin API Changes

  • Add an extension point for rendering custom documentation tags (#2343)
  • Add an extension point for an external documentable provider (#2307), thanks to @Kordyjan!
  • Add filtering stategies extension point and fix constructors in Kotlin-as-Java (#2277), thanks to @BarkingBad!
  • Expose Kotlin-as-Java methods that could be used not only as part of transformers (#2351), thanks to @BarkingBad!
  • Refactor Ancestry Graphs (#2326), thanks to @BarkingBad!
  • Fixed resolving of DRIs for Enum Entries (#2305), thanks to @BarkingBad!

General Improvements

  • Collect annotations from package-info.java (#2331), thanks to @ember-rose!
  • Add support for header tags (<h1> / <h2> / <h3>) in Javadoc (#2345), thanks to @asfalcone!
  • Add an option to merge implicit expect-actual declarations, enables merging of pages for related declarations which are not connected via expect-actual keywords (#2316)
  • Add a note about using Dokka in a precompiled script plugin (#2303), thanks to @chkpnt!
  • Fixed wrong Groovy DSL example (#2302), thanks to @chkpnt!
  • Various code cleanups (#2165, #2360, #2364, #2385), thanks to @Goooler!

Known issues

  • Kotlin Multiplatform projects that use .klib libraries may experience problems. There will be a separate 1.6.21 release that will address this issue shortly.