From cb1421d8e0ff7939c34f680e07f189bd76909a7e Mon Sep 17 00:00:00 2001
From: Ilya Muradyan <Ilya.Muradyan@jetbrains.com>
Date: Mon, 19 Jul 2021 22:33:04 +0300
Subject: [PATCH 1/2] Add auto-updating of CHANGELOG and update it

Fixes #253
---
 CHANGELOG.md                                  | 460 ++++++++++++++++--
 build.gradle.kts                              |   9 +
 gradle.properties                             |   3 +
 kotlin-jupyter-plugin/build.gradle.kts        |   1 +
 kotlin-jupyter-plugin/settings.gradle.kts     |   2 +
 .../jetbrains/kotlinx/jupyter/build/util.kt   |   5 +
 .../kotlinx/jupyter/build/versionUpdating.kt  |  96 +++-
 .../kotlinx/jupyter/plugin/options.kt         |   1 -
 settings.gradle.kts                           |   2 +
 9 files changed, 502 insertions(+), 77 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 86a8fc80e..ce1a3a627 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,54 +1,406 @@
-# 0.9.0
-### Features
-* Main feature of this release is an API for Kotlin libraries
-  that simplifies a kernel integration for them ([#99][p99]).
-  Special [Gradle plugin](https://plugins.gradle.org/plugin/org.jetbrains.kotlin.jupyter.api)
-  is provided for this purpose. It enables the dependency on `kotlin-jupyter-api` artifact
-  which allows a library writer to add a kernel integration by implementing one of
-  `LibraryDefinition` or `LibraryDefinitionProvider` interfaces. You may find a minimal example
-  in [docs](docs/libraries.md). For more "real-world" example see the integration for
-  [Kotlin dataframe library][integration-in-dataframe]
-* Add handling clients with `allow_stdin=false` ([#124][p124])
-* Update library descriptors for Lets-Plot, Kravis ([#118][p118]) and kaliningraph
-* Add enhanced support of typed dataframes (`dataframe` library)
-* Add jDSP library descriptor ([#114][p114])
-* Add possibility of kernel embedding ([#102][p102])
-* Provide completion and errors analysis for commands
-* Add support for minKernelVersion field in library descriptors
-* Formalise kernel versions format and ordering
-* Add possibility to provide shutdown hooks in library descriptors ([#87][i87])
-* Switch to the latest development version of Kotlin 1.5
-
-### Bugs
-* Fix completion bug in Notebook client ([#113][i113])
-* Fix irrelevant error popups in Notebook client ([#109][i109])
-* Improve and fix parsing of `%use` magic ([#110][i110])
-* Add resolution of transitive dependencies with runtime scope (previously only compile dependencies were resolved)
-* Fix "leaking" of kernel stdlib into script classpath ([#27][i27])
-* Fix added repositories ordering ([#107][i107])
-
-### Internal things / infrastructure
-* Add parallel testing
-* Upgrade Gradle
-* Add ktlint check
-* Add README generation from library descriptors
-  and magics/commands descriptions
-* Distribute `kotlin-jupyter-shared-compiler` artifact
-  which may be used for building scripting compilers
-  with Jupyter dialect, including compilers inside IDEA
-
-
-[integration-in-dataframe]: https://github.com/nikitinas/dataframe/blob/32a21398175029d68508e2129727c135b9a126b9/src/main/kotlin/org/jetbrains/dataframe/jupyter/Integration.kt
-
-[i27]: https://github.com/Kotlin/kotlin-jupyter/issues/27
-[i87]: https://github.com/Kotlin/kotlin-jupyter/issues/87
-[i107]: https://github.com/Kotlin/kotlin-jupyter/issues/107
-[i109]: https://github.com/Kotlin/kotlin-jupyter/issues/109
-[i110]: https://github.com/Kotlin/kotlin-jupyter/issues/110
-[i113]: https://github.com/Kotlin/kotlin-jupyter/issues/113
-
-[p99]: https://github.com/Kotlin/kotlin-jupyter/pull/99
-[p102]: https://github.com/Kotlin/kotlin-jupyter/pull/102
-[p114]: https://github.com/Kotlin/kotlin-jupyter/pull/114
-[p118]: https://github.com/Kotlin/kotlin-jupyter/pull/118
-[p124]: https://github.com/Kotlin/kotlin-jupyter/pull/124
+# Change Log
+
+## Unreleased (2021-07-19)
+
+**Closed issues:**
+
+- Update landing page screenshot [\#307](https://github.com/Kotlin/kotlin-jupyter/issues/307)
+- Display list of data classes as table [\#294](https://github.com/Kotlin/kotlin-jupyter/issues/294)
+- MIME does not allow binary data [\#293](https://github.com/Kotlin/kotlin-jupyter/issues/293)
+- Images are not displayed [\#292](https://github.com/Kotlin/kotlin-jupyter/issues/292)
+- Question about the proper way to add custom classes and files [\#280](https://github.com/Kotlin/kotlin-jupyter/issues/280)
+- Add Skija as a supported library [\#272](https://github.com/Kotlin/kotlin-jupyter/issues/272)
+
+**Fixed bugs:**
+
+- Fix Gradle plugin for Multiplatform project [\#255](https://github.com/Kotlin/kotlin-jupyter/issues/255)
+- Cannot find kernel [\#268](https://github.com/Kotlin/kotlin-jupyter/issues/268)
+- Completion of functions parameters works incorrectly [\#256](https://github.com/Kotlin/kotlin-jupyter/issues/256)
+- Dead kernel and couln't load notebook [\#271](https://github.com/Kotlin/kotlin-jupyter/issues/271)
+- Resolution errors with snapshot repo for dependency with classifier [\#285](https://github.com/Kotlin/kotlin-jupyter/issues/285)
+
+**Merged pull requests:**
+
+- Variables view feature [\#297](https://github.com/Kotlin/kotlin-jupyter/pull/297) ([@nikolay-egorov](https://github.com/nikolay-egorov))
+- Conditional Gradle plugin tasks initialization [\#298](https://github.com/Kotlin/kotlin-jupyter/pull/298) ([@ileasile](https://github.com/ileasile))
+- Create specialized kernels w/ JDK, JVM args, and environment variables [\#287](https://github.com/Kotlin/kotlin-jupyter/pull/287) ([@rnett](https://github.com/rnett))
+- Upgrade to Lets\-Plot v2.0.4, Lets\-Plot Kotlin API v3.0.1 [\#275](https://github.com/Kotlin/kotlin-jupyter/pull/275) ([@alshan](https://github.com/alshan))
+- Upgrade to Lets\-Plot v2.0.3, Lets\-Plot Kotlin API v3.0.0 [\#273](https://github.com/Kotlin/kotlin-jupyter/pull/273) ([@alshan](https://github.com/alshan))
+
+**New features:**
+
+- Allow setting JDK to use [\#284](https://github.com/Kotlin/kotlin-jupyter/issues/284)
+- Pass args on JVM startup [\#72](https://github.com/Kotlin/kotlin-jupyter/issues/72)
+
+## [0.10.0.40](https://github.com/Kotlin/kotlin-jupyter/tree/0.10.0.40) (2021-05-22)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.10.0.39...0.10.0.40)
+
+
+## [0.10.0.39](https://github.com/Kotlin/kotlin-jupyter/tree/0.10.0.39) (2021-05-22)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.10.0.38...0.10.0.39)
+
+
+## [0.10.0.38](https://github.com/Kotlin/kotlin-jupyter/tree/0.10.0.38) (2021-05-21)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.10.0.33...0.10.0.38)
+
+
+## [0.10.0.33](https://github.com/Kotlin/kotlin-jupyter/tree/0.10.0.33) (2021-05-20)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.10.0.30...0.10.0.33)
+
+
+## [0.10.0.30](https://github.com/Kotlin/kotlin-jupyter/tree/0.10.0.30) (2021-05-20)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.10.0.17...0.10.0.30)
+
+**Closed issues:**
+
+- Load library descriptor from URL with redirection [\#248](https://github.com/Kotlin/kotlin-jupyter/issues/248)
+
+**New features:**
+
+- Add more convenient ways of displaying data [\#112](https://github.com/Kotlin/kotlin-jupyter/issues/112)
+
+## [0.10.0.17](https://github.com/Kotlin/kotlin-jupyter/tree/0.10.0.17) (2021-05-14)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.9.1.51...0.10.0.17)
+
+**Fixed bugs:**
+
+- Add option to bypass ivy cache for dependencies [\#121](https://github.com/Kotlin/kotlin-jupyter/issues/121)
+- lets\-plot example fails to load dependency \(unknown resolver null\) [\#117](https://github.com/Kotlin/kotlin-jupyter/issues/117)
+
+**Merged pull requests:**
+
+- Switch to Maven dependencies resolver [\#230](https://github.com/Kotlin/kotlin-jupyter/pull/230) ([@ileasile](https://github.com/ileasile))
+- Add code preprocessors as a part of library API [\#226](https://github.com/Kotlin/kotlin-jupyter/pull/226) ([@ileasile](https://github.com/ileasile))
+
+**New features:**
+
+- Is it possible to define a custom \(cell\) magic [\#223](https://github.com/Kotlin/kotlin-jupyter/issues/223)
+- Complete named parameters in function [\#187](https://github.com/Kotlin/kotlin-jupyter/issues/187)
+- Add support for Kotlin @Deprecated annotation [\#185](https://github.com/Kotlin/kotlin-jupyter/issues/185)
+
+## [0.9.1.51](https://github.com/Kotlin/kotlin-jupyter/tree/0.9.1.51) (2021-05-05)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.9.1.42...0.9.1.51)
+
+**Fixed bugs:**
+
+- How to use a dynamic library? [\#214](https://github.com/Kotlin/kotlin-jupyter/issues/214)
+
+**Merged pull requests:**
+
+- Add hierarchies visualization API to lib\-ext [\#220](https://github.com/Kotlin/kotlin-jupyter/pull/220) ([@ileasile](https://github.com/ileasile))
+
+**New features:**
+
+- Add native libraries loading support [\#218](https://github.com/Kotlin/kotlin-jupyter/issues/218)
+
+## [0.9.1.42](https://github.com/Kotlin/kotlin-jupyter/tree/0.9.1.42) (2021-05-01)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.9.1.39...0.9.1.42)
+
+
+## [0.9.1.39](https://github.com/Kotlin/kotlin-jupyter/tree/0.9.1.39) (2021-04-30)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.9.1.9...0.9.1.39)
+
+**Merged pull requests:**
+
+- Add support for variables declarations in library API [\#215](https://github.com/Kotlin/kotlin-jupyter/pull/215) ([@ileasile](https://github.com/ileasile))
+- Update plotly.kt descriptors [\#213](https://github.com/Kotlin/kotlin-jupyter/pull/213) ([@altavir](https://github.com/altavir))
+- Update plotly descriptors [\#208](https://github.com/Kotlin/kotlin-jupyter/pull/208) ([@altavir](https://github.com/altavir))
+
+**New features:**
+
+- Allow defining notebook values in the Notebook API [\#206](https://github.com/Kotlin/kotlin-jupyter/issues/206)
+
+## [0.9.1.9](https://github.com/Kotlin/kotlin-jupyter/tree/0.9.1.9) (2021-04-24)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.9.1.5...0.9.1.9)
+
+**Merged pull requests:**
+
+- Add Multik library descriptor [\#198](https://github.com/Kotlin/kotlin-jupyter/pull/198) ([@devcrocod](https://github.com/devcrocod))
+
+## [0.9.1.5](https://github.com/Kotlin/kotlin-jupyter/tree/0.9.1.5) (2021-04-19)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.9.1.3...0.9.1.5)
+
+
+## [0.9.1.3](https://github.com/Kotlin/kotlin-jupyter/tree/0.9.1.3) (2021-04-19)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.9.1.1...0.9.1.3)
+
+
+## [0.9.1.1](https://github.com/Kotlin/kotlin-jupyter/tree/0.9.1.1) (2021-04-17)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.9.0.14...0.9.1.1)
+
+**Closed issues:**
+
+- Support rendering of an object dynamically inside CodeCell context [\#182](https://github.com/Kotlin/kotlin-jupyter/issues/182)
+
+**Merged pull requests:**
+
+- Update Lets\-Plot dependencies [\#196](https://github.com/Kotlin/kotlin-jupyter/pull/196) ([@alshan](https://github.com/alshan))
+- Add interruption [\#56](https://github.com/Kotlin/kotlin-jupyter/pull/56) ([@ileasile](https://github.com/ileasile))
+- Create londogard\-nlp\-toolkit.json [\#186](https://github.com/Kotlin/kotlin-jupyter/pull/186) ([@Lundez](https://github.com/Lundez))
+- Allow value rendering using renderers processor from API [\#183](https://github.com/Kotlin/kotlin-jupyter/pull/183) ([@ileasile](https://github.com/ileasile))
+
+**New features:**
+
+- Implement execution interruption [\#58](https://github.com/Kotlin/kotlin-jupyter/issues/58)
+- Logging options [\#54](https://github.com/Kotlin/kotlin-jupyter/issues/54)
+
+## [0.9.0.14](https://github.com/Kotlin/kotlin-jupyter/tree/0.9.0.14) (2021-04-01)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.9.0.6...0.9.0.14)
+
+
+## [0.9.0.7](https://github.com/Kotlin/kotlin-jupyter/tree/0.9.0.7) (2021-03-30)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.9.0.5...0.9.0.7)
+
+
+## [0.9.0.6](https://github.com/Kotlin/kotlin-jupyter/tree/0.9.0.6) (2021-03-30)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.9.0.7...0.9.0.6)
+
+
+## [0.9.0.5](https://github.com/Kotlin/kotlin-jupyter/tree/0.9.0.5) (2021-03-29)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.9.0.3...0.9.0.5)
+
+
+## [0.9.0.3](https://github.com/Kotlin/kotlin-jupyter/tree/0.9.0.3) (2021-03-29)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.8.3.122...0.9.0.3)
+
+**Closed issues:**
+
+- Gradle plugin [\#105](https://github.com/Kotlin/kotlin-jupyter/issues/105)
+- Kernel uses serialization runtime from itself, not the library [\#161](https://github.com/Kotlin/kotlin-jupyter/issues/161)
+- Use JVM\-IR compiler in scripts [\#131](https://github.com/Kotlin/kotlin-jupyter/issues/131)
+- Error when integrating with the Kotlin API [\#147](https://github.com/Kotlin/kotlin-jupyter/issues/147)
+- Problem starting kernel: org.zeromq.ZMQException: Errno 48 : Address already in use [\#136](https://github.com/Kotlin/kotlin-jupyter/issues/136)
+- Add Cell information to API render method [\#128](https://github.com/Kotlin/kotlin-jupyter/issues/128)
+- Why I cannot use xchart in notebook? [\#123](https://github.com/Kotlin/kotlin-jupyter/issues/123)
+
+**Fixed bugs:**
+
+- %use kmath fails with "module not found" [\#166](https://github.com/Kotlin/kotlin-jupyter/issues/166)
+- Attaching with console or qtconsole crashes kernel [\#133](https://github.com/Kotlin/kotlin-jupyter/issues/133)
+
+**Merged pull requests:**
+
+- Update Lets\-Plot dependencies: api \-\> 1.3.0, lib \-\> 2.0.1 [\#176](https://github.com/Kotlin/kotlin-jupyter/pull/176) ([@alshan](https://github.com/alshan))
+- Update kscience versions [\#167](https://github.com/Kotlin/kotlin-jupyter/pull/167) ([@altavir](https://github.com/altavir))
+- Update serialization version [\#162](https://github.com/Kotlin/kotlin-jupyter/pull/162) ([@altavir](https://github.com/altavir))
+- Feature/plugin mpp [\#159](https://github.com/Kotlin/kotlin-jupyter/pull/159) ([@altavir](https://github.com/altavir))
+- Feature/resource builders [\#158](https://github.com/Kotlin/kotlin-jupyter/pull/158) ([@altavir](https://github.com/altavir))
+- Make embedKernel arguments nullable [\#132](https://github.com/Kotlin/kotlin-jupyter/pull/132) ([@fmagin](https://github.com/fmagin))
+- Don't kill process when embedded [\#135](https://github.com/Kotlin/kotlin-jupyter/pull/135) ([@fmagin](https://github.com/fmagin))
+- Fill HistoryRequest fields [\#134](https://github.com/Kotlin/kotlin-jupyter/pull/134) ([@fmagin](https://github.com/fmagin))
+- Move notebook from onLoaded to Builder argument [\#130](https://github.com/Kotlin/kotlin-jupyter/pull/130) ([@ileasile](https://github.com/ileasile))
+- Fix publishing [\#127](https://github.com/Kotlin/kotlin-jupyter/pull/127) ([@ileasile](https://github.com/ileasile))
+- Notebook API [\#99](https://github.com/Kotlin/kotlin-jupyter/pull/99) ([@ileasile](https://github.com/ileasile))
+- Support clients without stdin support \(allow\_stdin=false\) [\#124](https://github.com/Kotlin/kotlin-jupyter/pull/124) ([@strangepleasures](https://github.com/strangepleasures))
+- Upgrade Lets\-Plot dependencies: api \-\> 1.2.0, lib: 1.5.6 [\#119](https://github.com/Kotlin/kotlin-jupyter/pull/119) ([@alshan](https://github.com/alshan))
+
+**New features:**
+
+- Support for custom type handlers [\#12](https://github.com/Kotlin/kotlin-jupyter/issues/12)
+- Publish the cell and display layout API as a separate artifact. [\#78](https://github.com/Kotlin/kotlin-jupyter/issues/78)
+
+## [0.8.3.122](https://github.com/Kotlin/kotlin-jupyter/tree/0.8.3.122) (2021-01-16)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.8.3.64...0.8.3.122)
+
+**Merged pull requests:**
+
+- Updated kravis.json [\#118](https://github.com/Kotlin/kotlin-jupyter/pull/118) ([@holgerbrandl](https://github.com/holgerbrandl))
+- Update kotlinVersion to 1.4.30\-M1 [\#116](https://github.com/Kotlin/kotlin-jupyter/pull/116) ([@breandan](https://github.com/breandan))
+- Update kaliningraph library descriptor [\#115](https://github.com/Kotlin/kotlin-jupyter/pull/115) ([@breandan](https://github.com/breandan))
+- Add jDSP library to supported libraries. [\#114](https://github.com/Kotlin/kotlin-jupyter/pull/114) ([@biranyucel](https://github.com/biranyucel))
+
+## [0.8.3.64](https://github.com/Kotlin/kotlin-jupyter/tree/0.8.3.64) (2020-12-16)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.8.3.1...0.8.3.64)
+
+**Fixed bugs:**
+
+- Completion bug [\#113](https://github.com/Kotlin/kotlin-jupyter/issues/113)
+
+**Merged pull requests:**
+
+- Update to Lets\-Plot Kotlin API v1.1.0, Lets\-Plot v1.5.4 [\#111](https://github.com/Kotlin/kotlin-jupyter/pull/111) ([@alshan](https://github.com/alshan))
+
+## [0.8.3.1](https://github.com/Kotlin/kotlin-jupyter/tree/0.8.3.1) (2020-11-18)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.8.2.61...0.8.3.1)
+
+**Closed issues:**
+
+- Run kotlin\-jupyter locally [\#104](https://github.com/Kotlin/kotlin-jupyter/issues/104)
+- Add \*mavenLocal to default repositories? [\#100](https://github.com/Kotlin/kotlin-jupyter/issues/100)
+- Add tested operating systems [\#98](https://github.com/Kotlin/kotlin-jupyter/issues/98)
+- Unable to import krangl [\#48](https://github.com/Kotlin/kotlin-jupyter/issues/48)
+- Exception in starting Kernel [\#52](https://github.com/Kotlin/kotlin-jupyter/issues/52)
+
+**Fixed bugs:**
+
+- Irrelevant 'Unresolved reference' popup. [\#109](https://github.com/Kotlin/kotlin-jupyter/issues/109)
+- The %use magic doesn't allow to specify version range. [\#110](https://github.com/Kotlin/kotlin-jupyter/issues/110)
+- Dependency not resolving in case pom existing but jar missing in repository [\#107](https://github.com/Kotlin/kotlin-jupyter/issues/107)
+
+**Merged pull requests:**
+
+- Change added repositories order [\#108](https://github.com/Kotlin/kotlin-jupyter/pull/108) ([@ileasile](https://github.com/ileasile))
+- Allow REPL/Kernel to be embedded and share classes/variables with its caller [\#102](https://github.com/Kotlin/kotlin-jupyter/pull/102) ([@fmagin](https://github.com/fmagin))
+- Add Kaliningraph library descriptor [\#106](https://github.com/Kotlin/kotlin-jupyter/pull/106) ([@breandan](https://github.com/breandan))
+- Add plotly descriptors [\#103](https://github.com/Kotlin/kotlin-jupyter/pull/103) ([@altavir](https://github.com/altavir))
+- Perhaps, the year number should be changed. [\#97](https://github.com/Kotlin/kotlin-jupyter/pull/97) ([@zhelenskiy](https://github.com/zhelenskiy))
+- Add automatic libraries list generation [\#96](https://github.com/Kotlin/kotlin-jupyter/pull/96) ([@ileasile](https://github.com/ileasile))
+- Refactor libraries handling, add handling of descriptors from different sources [\#89](https://github.com/Kotlin/kotlin-jupyter/pull/89) ([@ileasile](https://github.com/ileasile))
+- Update to Lets\-Plot Kotlin API v1.0.0 [\#95](https://github.com/Kotlin/kotlin-jupyter/pull/95) ([@alshan](https://github.com/alshan))
+- Update to Lets\-Plot to v1.5.2, Kotlin API v1.0.0\-rc1 [\#94](https://github.com/Kotlin/kotlin-jupyter/pull/94) ([@alshan](https://github.com/alshan))
+- Adds support for kotlin\-spark\-api [\#92](https://github.com/Kotlin/kotlin-jupyter/pull/92) ([@asm0dey](https://github.com/asm0dey))
+- Upgrade to Lets\-Plot 1.5.1\-SNAPSHOT [\#93](https://github.com/Kotlin/kotlin-jupyter/pull/93) ([@alshan](https://github.com/alshan))
+
+**New features:**
+
+- Add optional version tag to use directive [\#70](https://github.com/Kotlin/kotlin-jupyter/issues/70)
+
+## [0.8.2.61](https://github.com/Kotlin/kotlin-jupyter/tree/0.8.2.61) (2020-08-05)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.8.2.53...0.8.2.61)
+
+**Merged pull requests:**
+
+- Add long description to published packages [\#91](https://github.com/Kotlin/kotlin-jupyter/pull/91) ([@ileasile](https://github.com/ileasile))
+
+## [0.8.2.53](https://github.com/Kotlin/kotlin-jupyter/tree/0.8.2.53) (2020-08-03)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/0.8.2.5...0.8.2.53)
+
+**Fixed bugs:**
+
+- Provide correct completion and error analysis for commands \(:help and :classpath\) [\#90](https://github.com/Kotlin/kotlin-jupyter/issues/90)
+
+## [0.8.2.5](https://github.com/Kotlin/kotlin-jupyter/tree/0.8.2.5) (2020-07-17)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/build-0.8.2.4...0.8.2.5)
+
+
+## [build\-0.8.2.4](https://github.com/Kotlin/kotlin-jupyter/tree/build-0.8.2.4) (2020-07-17)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/build-0.8.2.2...build-0.8.2.4)
+
+**Fixed bugs:**
+
+- Exclude kernel magics from error analysis [\#57](https://github.com/Kotlin/kotlin-jupyter/issues/57)
+
+**New features:**
+
+- Add shutdown hook to the module descriptor [\#87](https://github.com/Kotlin/kotlin-jupyter/issues/87)
+
+## [build\-0.8.2.2](https://github.com/Kotlin/kotlin-jupyter/tree/build-0.8.2.2) (2020-07-16)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/build-0.8.2.1...build-0.8.2.2)
+
+
+## [build\-0.8.2.1](https://github.com/Kotlin/kotlin-jupyter/tree/build-0.8.2.1) (2020-07-15)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/build-0.8.1.121...build-0.8.2.1)
+
+**Fixed bugs:**
+
+- Kernel references leaked into script classpath [\#27](https://github.com/Kotlin/kotlin-jupyter/issues/27)
+
+## [build\-0.8.1.121](https://github.com/Kotlin/kotlin-jupyter/tree/build-0.8.1.121) (2020-07-15)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/build-0.8.1.120...build-0.8.1.121)
+
+**New features:**
+
+- Add import kotlin.math.\* to default imports [\#30](https://github.com/Kotlin/kotlin-jupyter/issues/30)
+
+## [build\-0.8.1.120](https://github.com/Kotlin/kotlin-jupyter/tree/build-0.8.1.120) (2020-07-14)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/demo-jan-nikitin...build-0.8.1.120)
+
+**Closed issues:**
+
+- Internal error for if expression [\#47](https://github.com/Kotlin/kotlin-jupyter/issues/47)
+- Syntax error but no clue [\#50](https://github.com/Kotlin/kotlin-jupyter/issues/50)
+- Installation issue on MacOs Mojave [\#21](https://github.com/Kotlin/kotlin-jupyter/issues/21)
+- How do I add a JAR file into the classpath? [\#49](https://github.com/Kotlin/kotlin-jupyter/issues/49)
+- Error when importing a dependency [\#53](https://github.com/Kotlin/kotlin-jupyter/issues/53)
+- Installing without Conda [\#51](https://github.com/Kotlin/kotlin-jupyter/issues/51)
+
+**Fixed bugs:**
+
+- Failed to load maven\-central dependency with @DependsOn [\#71](https://github.com/Kotlin/kotlin-jupyter/issues/71)
+- Code inlining and jvm\-target [\#81](https://github.com/Kotlin/kotlin-jupyter/issues/81)
+- readLine causing java.lang.ArrayIndexOutOfBoundsException [\#84](https://github.com/Kotlin/kotlin-jupyter/issues/84)
+- Kernel keeps crashing in Win10's Linux subsystem [\#16](https://github.com/Kotlin/kotlin-jupyter/issues/16)
+- Unable to resolve static functions from dependent libraries [\#24](https://github.com/Kotlin/kotlin-jupyter/issues/24)
+- Kotlin stdlib has greater resolution priority than jars added via @file:DependsOn annotation [\#25](https://github.com/Kotlin/kotlin-jupyter/issues/25)
+- Detect transitive dependencies for supported libraries [\#75](https://github.com/Kotlin/kotlin-jupyter/issues/75)
+- Unable to use kernel because of error in parserLibraryDescriptors [\#66](https://github.com/Kotlin/kotlin-jupyter/issues/66)
+
+**Merged pull requests:**
+
+- Upgrade Lets\-Plot Kotlin API to v. 0.0.22\-SNAPSHOT [\#85](https://github.com/Kotlin/kotlin-jupyter/pull/85) ([@alshan](https://github.com/alshan))
+- Optimize kernel performance [\#77](https://github.com/Kotlin/kotlin-jupyter/pull/77) ([@ileasile](https://github.com/ileasile))
+- Switch to Lets\-Plot Kotlin API 0.0.18\-SNAPSHOT [\#82](https://github.com/Kotlin/kotlin-jupyter/pull/82) ([@alshan](https://github.com/alshan))
+- Switch to api 0.0.17\-SNAPSHOT [\#80](https://github.com/Kotlin/kotlin-jupyter/pull/80) ([@alshan](https://github.com/alshan))
+- Upgrade lets\-plot version to 1.4.2 [\#79](https://github.com/Kotlin/kotlin-jupyter/pull/79) ([@alshan](https://github.com/alshan))
+- Move branch and formatVersion to runtime properties [\#67](https://github.com/Kotlin/kotlin-jupyter/pull/67) ([@ileasile](https://github.com/ileasile))
+- Fix syntax error in samples [\#65](https://github.com/Kotlin/kotlin-jupyter/pull/65) ([@breandan](https://github.com/breandan))
+- Adding deeplearning4j to the supported libraries [\#63](https://github.com/Kotlin/kotlin-jupyter/pull/63) ([@fbrunacci](https://github.com/fbrunacci))
+- add link to smile in supported libraries [\#64](https://github.com/Kotlin/kotlin-jupyter/pull/64) ([@haifengl](https://github.com/haifengl))
+- Add library of smile\-kotlin for machine learning [\#62](https://github.com/Kotlin/kotlin-jupyter/pull/62) ([@haifengl](https://github.com/haifengl))
+- Adding deeplearning4j to the supported libraries [\#61](https://github.com/Kotlin/kotlin-jupyter/pull/61) ([@fbrunacci](https://github.com/fbrunacci))
+- PSI completion with code generation [\#46](https://github.com/Kotlin/kotlin-jupyter/pull/46) ([@ileasile](https://github.com/ileasile))
+- adding deeplearning4j to the supported libraries [\#59](https://github.com/Kotlin/kotlin-jupyter/pull/59) ([@fbrunacci](https://github.com/fbrunacci))
+- kotlinVersion to 1.3.71 to make teamCity build great again \(or not\) [\#60](https://github.com/Kotlin/kotlin-jupyter/pull/60) ([@fbrunacci](https://github.com/fbrunacci))
+- WIP: PSI\-based completion [\#43](https://github.com/Kotlin/kotlin-jupyter/pull/43) ([@ileasile](https://github.com/ileasile))
+- Add interruption [\#55](https://github.com/Kotlin/kotlin-jupyter/pull/55) ([@ileasile](https://github.com/ileasile))
+
+**New features:**
+
+- Add mavenLocal resolver [\#86](https://github.com/Kotlin/kotlin-jupyter/issues/86)
+- Java 10 Support [\#39](https://github.com/Kotlin/kotlin-jupyter/issues/39)
+- Add full\-featured autocomplete [\#17](https://github.com/Kotlin/kotlin-jupyter/issues/17)
+
+## [demo\-jan\-nikitin](https://github.com/Kotlin/kotlin-jupyter/tree/demo-jan-nikitin) (2020-02-11)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/v0.7.3...demo-jan-nikitin)
+
+**Closed issues:**
+
+- When reading an image, the process doesn't end [\#45](https://github.com/Kotlin/kotlin-jupyter/issues/45)
+- println prints to console, but should print to output [\#32](https://github.com/Kotlin/kotlin-jupyter/issues/32)
+- Config editor / network based configuration [\#31](https://github.com/Kotlin/kotlin-jupyter/issues/31)
+
+**Fixed bugs:**
+
+- Kernel spec produced for Windows is invalid [\#19](https://github.com/Kotlin/kotlin-jupyter/issues/19)
+
+**Merged pull requests:**
+
+- Psi based completion: fixes [\#42](https://github.com/Kotlin/kotlin-jupyter/pull/42) ([@ileasile](https://github.com/ileasile))
+- WIP: PSI\-based completion [\#41](https://github.com/Kotlin/kotlin-jupyter/pull/41) ([@ileasile](https://github.com/ileasile))
+- Improved output capturing and added tests [\#35](https://github.com/Kotlin/kotlin-jupyter/pull/35) ([@ileasile](https://github.com/ileasile))
+- add library fuel [\#38](https://github.com/Kotlin/kotlin-jupyter/pull/38) ([@EVGENIYGUBAREV](https://github.com/EVGENIYGUBAREV))
+- Use gradle variables in kernel source [\#37](https://github.com/Kotlin/kotlin-jupyter/pull/37) ([@ileasile](https://github.com/ileasile))
+- Fix file extension in language\_info [\#36](https://github.com/Kotlin/kotlin-jupyter/pull/36) ([@mpcjanssen](https://github.com/mpcjanssen))
+- Add TeamCity integration [\#33](https://github.com/Kotlin/kotlin-jupyter/pull/33) ([@ileasile](https://github.com/ileasile))
+- Library configuration improvements [\#34](https://github.com/Kotlin/kotlin-jupyter/pull/34) ([@nikitinas](https://github.com/nikitinas))
+- Fixed windows path separator issues [\#29](https://github.com/Kotlin/kotlin-jupyter/pull/29) ([@ileasile](https://github.com/ileasile))
+- Improve completion in Jupyter Lab [\#28](https://github.com/Kotlin/kotlin-jupyter/pull/28) ([@ileasile](https://github.com/ileasile))
+
+## [v0.7.3](https://github.com/Kotlin/kotlin-jupyter/tree/v0.7.3) (2019-12-05)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/v0.7.2...v0.7.3)
+
+
+## [v0.7.2](https://github.com/Kotlin/kotlin-jupyter/tree/v0.7.2) (2019-12-04)
+[View commits](https://github.com/Kotlin/kotlin-jupyter/compare/e5987c6b8ef58a26a9a28cd8a7b2ec515fe9f9d4...v0.7.2)
+
+**Closed issues:**
+
+- protocol issue with 5.x protocol of Jupyter [\#11](https://github.com/Kotlin/kotlin-jupyter/issues/11)
+- Cannot start jupyther notebook  [\#15](https://github.com/Kotlin/kotlin-jupyter/issues/15)
+- Package level functions can not be used [\#13](https://github.com/Kotlin/kotlin-jupyter/issues/13)
+- resultOf is missing [\#10](https://github.com/Kotlin/kotlin-jupyter/issues/10)
+- After a a println command "Ok" is printed instead of the actual string to be printed. [\#3](https://github.com/Kotlin/kotlin-jupyter/issues/3)
+- The kernel crashes after running println twice [\#4](https://github.com/Kotlin/kotlin-jupyter/issues/4)
+- Fix stdout / stderr so they come back correctly as side effects and not as data values [\#6](https://github.com/Kotlin/kotlin-jupyter/issues/6)
+
+**Merged pull requests:**
+
+- Incremented lets\-plot version [\#26](https://github.com/Kotlin/kotlin-jupyter/pull/26) ([@ileasile](https://github.com/ileasile))
+- Fix jupyter\-lab issue [\#23](https://github.com/Kotlin/kotlin-jupyter/pull/23) ([@ileasile](https://github.com/ileasile))
+- Completion base support [\#22](https://github.com/Kotlin/kotlin-jupyter/pull/22) ([@ileasile](https://github.com/ileasile))
+- IPython is upper case I [\#8](https://github.com/Kotlin/kotlin-jupyter/pull/8) ([@Carreau](https://github.com/Carreau))
+- Update gradlew [\#2](https://github.com/Kotlin/kotlin-jupyter/pull/2) ([@oroszgy](https://github.com/oroszgy))
+- Create installation directory if it does not exist [\#9](https://github.com/Kotlin/kotlin-jupyter/pull/9) ([@nilsga](https://github.com/nilsga))
+- Fix the output for stdout, stderr, errors in general, and Unit return types [\#7](https://github.com/Kotlin/kotlin-jupyter/pull/7) ([@apatrida](https://github.com/apatrida))
+- Move to latest 1.1\-M04 and kotlin\-script\-util to lower code in this kernel [\#5](https://github.com/Kotlin/kotlin-jupyter/pull/5) ([@apatrida](https://github.com/apatrida))
+- add language\_info to kernel\_info\_reply [\#1](https://github.com/Kotlin/kotlin-jupyter/pull/1) ([@AndreyG](https://github.com/AndreyG))
diff --git a/build.gradle.kts b/build.gradle.kts
index 32d2f4b34..af350451c 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -16,6 +16,7 @@ plugins {
     id("org.jetbrains.kotlinx.jupyter.dependencies")
     id("ru.ileasile.kotlin.publisher")
     id("ru.ileasile.kotlin.doc")
+    id("org.hildan.github.changelog")
 }
 
 extra["isMainProject"] = true
@@ -28,6 +29,8 @@ val slf4jVersion: String by project
 val logbackVersion: String by project
 
 val docsRepo: String by project
+val githubRepoUser: String by project
+val githubRepoName: String by project
 
 val taskOptions = project.options()
 val deploy: Configuration by configurations.creating
@@ -231,6 +234,12 @@ tasks.publishDocs {
     email.set("robot@jetbrains.com")
 }
 
+changelog {
+    githubUser = githubRepoUser
+    githubRepository = githubRepoName
+    excludeLabels = listOf("wontfix", "duplicate", "no-changelog", "question")
+}
+
 kotlinPublications {
     packageGroup = "org.jetbrains.kotlinx"
 
diff --git a/gradle.properties b/gradle.properties
index 9058b924a..8577c7ca7 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -7,6 +7,7 @@ stableKotlinLanguageLevel=1.5
 jvmTarget=1.8
 
 shadowJarVersion=7.0.0
+changelogPluginVersion=1.7.0
 kotlinxSerializationVersion=1.1.0
 ktlintGradleVersion=10.0.0
 ktlintVersion=0.40.0
@@ -19,6 +20,8 @@ artifactsPath=build/artifacts
 
 baseVersion=0.10.0
 
+githubRepoUser=Kotlin
+githubRepoName=kotlin-jupyter
 projectRepoUrl=https://github.com/Kotlin/kotlin-jupyter
 docsRepo=git@github.com:ileasile/kotlin-jupyter-docs.git
 pushRepoUrl=git@github.com:Kotlin/kotlin-jupyter.git
diff --git a/kotlin-jupyter-plugin/build.gradle.kts b/kotlin-jupyter-plugin/build.gradle.kts
index 0c03598ef..65a61e335 100644
--- a/kotlin-jupyter-plugin/build.gradle.kts
+++ b/kotlin-jupyter-plugin/build.gradle.kts
@@ -2,6 +2,7 @@ plugins {
     id("org.jlleitschuh.gradle.ktlint")
     `java-gradle-plugin`
     `kotlin-dsl`
+    kotlin("plugin.serialization")
 }
 
 repositories {
diff --git a/kotlin-jupyter-plugin/settings.gradle.kts b/kotlin-jupyter-plugin/settings.gradle.kts
index eccdf2bdd..a1edf2ff5 100644
--- a/kotlin-jupyter-plugin/settings.gradle.kts
+++ b/kotlin-jupyter-plugin/settings.gradle.kts
@@ -25,6 +25,7 @@ pluginManagement {
 
     val ktlintGradleVersion = rootProperties["ktlintGradleVersion"] as String
     val publishPluginVersion = rootProperties["publishPluginVersion"] as String
+    val stableKotlinVersion = rootProperties["stableKotlinVersion"] as String
 
     repositories {
         gradlePluginPortal()
@@ -39,6 +40,7 @@ pluginManagement {
     }
 
     plugins {
+        kotlin("plugin.serialization") version stableKotlinVersion
         id("org.jlleitschuh.gradle.ktlint") version ktlintGradleVersion
         id("ru.ileasile.kotlin.publisher") version publishPluginVersion
     }
diff --git a/kotlin-jupyter-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/build/util.kt b/kotlin-jupyter-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/build/util.kt
index 45c2bd7fd..d5ad840c8 100644
--- a/kotlin-jupyter-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/build/util.kt
+++ b/kotlin-jupyter-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/build/util.kt
@@ -25,6 +25,11 @@ fun writeJson(json: Map<String, Any>, path: Path) {
 
 fun Path.deleteDir() = toFile().deleteRecursively()
 
+fun <T> Project.prop(name: String): T {
+    @Suppress("UNCHECKED_CAST")
+    return property(name) as T
+}
+
 fun Project.stringPropOrEmpty(name: String) = rootProject.findProperty(name) as String? ?: ""
 
 interface AllOptions : BuildOptions, InstallOptions, DistribOptions
diff --git a/kotlin-jupyter-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/build/versionUpdating.kt b/kotlin-jupyter-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/build/versionUpdating.kt
index ef11ec7b7..0ba8d677d 100644
--- a/kotlin-jupyter-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/build/versionUpdating.kt
+++ b/kotlin-jupyter-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/build/versionUpdating.kt
@@ -1,22 +1,50 @@
 package org.jetbrains.kotlinx.jupyter.build
 
+import kotlinx.serialization.Serializable
 import kotlinx.serialization.json.Json
 import kotlinx.serialization.json.JsonArray
+import kotlinx.serialization.json.JsonElement
 import kotlinx.serialization.json.JsonObject
 import kotlinx.serialization.json.JsonPrimitive
 import kotlinx.serialization.json.encodeToJsonElement
+import kotlinx.serialization.json.int
+import org.gradle.api.Project
 import org.gradle.process.ExecResult
 import org.gradle.process.ExecSpec
 import org.gradle.tooling.BuildException
-import java.io.File
-import java.io.OutputStream
 import org.http4k.core.Method
 import org.http4k.core.Request
-import org.jetbrains.kotlinx.jupyter.common.jsonObject
+import org.http4k.core.Response
+import org.jetbrains.kotlinx.jupyter.common.ResponseWrapper
 import org.jetbrains.kotlinx.jupyter.common.httpRequest
+import org.jetbrains.kotlinx.jupyter.common.jsonObject
 import org.jetbrains.kotlinx.jupyter.common.text
 import org.jetbrains.kotlinx.jupyter.common.withBasicAuth
 import org.jetbrains.kotlinx.jupyter.common.withJson
+import java.io.File
+import java.io.OutputStream
+
+private val Project.libName get() = prop<String>("jupyter.lib.name")
+private val Project.libParamName get() = prop<String>("jupyter.lib.param.name")
+private val Project.libParamValue get() = prop<String>("jupyter.lib.param.value")
+
+private val Project.prGithubUser get() = prop<String>("jupyter.github.user")
+private val Project.prGithubToken get() = prop<String>("jupyter.github.token")
+
+private val Project.githubRepoOwner get() = prop<String>("githubRepoUser")
+private val Project.githubRepoName get() = prop<String>("githubRepoName")
+
+@Serializable
+class NewPrData(
+    val title: String,
+    val head: String,
+    val base: String,
+)
+
+@Serializable
+class SetLabelsData(
+    val labels: List<String>,
+)
 
 fun ProjectWithInstallOptions.prepareKotlinVersionUpdateTasks() {
     tasks.register("updateKotlinVersion") {
@@ -49,9 +77,9 @@ fun ProjectWithInstallOptions.prepareKotlinVersionUpdateTasks() {
 
     val updateLibraryParamTask = tasks.register("updateLibraryParam") {
         doLast {
-            val libName = project.property("jupyter.lib.name") as String
-            val paramName = project.property("jupyter.lib.param.name") as String
-            val paramValue = project.property("jupyter.lib.param.value") as String
+            val libName = project.libName
+            val paramName = project.libParamName
+            val paramValue = project.libParamValue
 
             updateLibBranchName = "update-$libName-$paramName-$paramValue"
             updateLibraryParam(libName, paramName, paramValue)
@@ -79,8 +107,8 @@ fun ProjectWithInstallOptions.prepareKotlinVersionUpdateTasks() {
             execGit("commit", "-m", "[AUTO] Update library version")
 
             val repoUrl = rootProject.property("pushRepoUrl") as String
-            execGit("push", "--force", "-u", repoUrl, getCurrentBranch() + ":" + updateLibBranchName!!) {
-                this.standardOutput = object: OutputStream() {
+            execGit("push", "--force", "-u", repoUrl, getCurrentBranch() + ":refs/heads/" + updateLibBranchName!!) {
+                this.standardOutput = object : OutputStream() {
                     override fun write(b: Int) { }
                 }
             }
@@ -93,24 +121,48 @@ fun ProjectWithInstallOptions.prepareKotlinVersionUpdateTasks() {
         dependsOn(pushChangesTask)
 
         doLast {
-            val user = rootProject.property("jupyter.github.user") as String
-            val password = rootProject.property("jupyter.github.token") as String
-            fun githubRequest(method: Method, request: String, json: Map<String, String>? = null): Int {
-                val response = httpRequest(Request(method, "https://api.github.com/$request")
-                    .withJson(Json.encodeToJsonElement(json))
-                    .withBasicAuth(user, password)
+            val user = rootProject.prGithubUser
+            val password = rootProject.prGithubToken
+            fun githubRequest(
+                method: Method,
+                request: String,
+                json: JsonElement,
+                onFailure: (Response) -> Unit,
+            ): ResponseWrapper {
+                val response = httpRequest(
+                    Request(method, "https://api.github.com/$request")
+                        .withJson(json)
+                        .withBasicAuth(user, password)
                 )
                 println(response.text)
-                return response.status.code
+                if (!response.status.successful) {
+                    onFailure(response)
+                }
+                return response
             }
 
-            val code = githubRequest(Method.POST, "repos/Kotlin/kotlin-jupyter/pulls", mapOf(
-                "title" to "Update library versions",
-                "head" to updateLibBranchName!!,
-                "base" to "master"
-            ))
-            if(code != 200 && code != 201) {
-                throw BuildException("Creating PR failed with code $code", null)
+            val fullRepo = "${rootProject.githubRepoOwner}/${rootProject.githubRepoName}"
+            val prResponse = githubRequest(
+                Method.POST, "repos/$fullRepo/pulls",
+                Json.encodeToJsonElement(
+                    NewPrData(
+                        title = "Update `${rootProject.libName}` library to `${rootProject.libParamValue}`",
+                        head = updateLibBranchName!!,
+                        base = "master"
+                    )
+                )
+            ) { response ->
+                throw BuildException("Creating PR failed with code ${response.status.code}", null)
+            }
+
+            val prNumber = (prResponse.jsonObject["number"] as JsonPrimitive).int
+            githubRequest(
+                Method.POST, "repos/$fullRepo/issues/$prNumber/labels",
+                Json.encodeToJsonElement(
+                    SetLabelsData(listOf("no-changelog", "library-descriptors"))
+                )
+            ) { response ->
+                throw BuildException("Cannot setup labels for created PR: ${response.text}", null)
             }
         }
     }
diff --git a/kotlin-jupyter-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/plugin/options.kt b/kotlin-jupyter-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/plugin/options.kt
index 2e539d26c..782fe0e11 100644
--- a/kotlin-jupyter-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/plugin/options.kt
+++ b/kotlin-jupyter-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/plugin/options.kt
@@ -46,7 +46,6 @@ fun Project.options(): AllOptions {
 
                 project.extra.set("localPublicationsRepo", artifactsDir.resolve("maven"))
 
-
                 pythonVersion = detectVersion(baseVersion, artifactsDir, versionFileName)
                 val mavenVersion = pythonVersion.toMavenVersion()
                 project.version = mavenVersion
diff --git a/settings.gradle.kts b/settings.gradle.kts
index a0c72b611..eb296fc58 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -7,6 +7,7 @@ pluginManagement {
     val ktlintGradleVersion: String by settings
     val jupyterApiVersion: String by settings
     val publishPluginVersion: String by settings
+    val changelogPluginVersion: String by settings
 
     repositories {
         mavenLocal()
@@ -53,6 +54,7 @@ pluginManagement {
         id("org.jetbrains.kotlinx.jupyter.dependencies")
         id("ru.ileasile.kotlin.publisher") version publishPluginVersion
         id("ru.ileasile.kotlin.doc") version publishPluginVersion
+        id("org.hildan.github.changelog") version changelogPluginVersion
     }
 }
 

From 95fd6b7df49fbf2c78a90e548e65094a7b251f8f Mon Sep 17 00:00:00 2001
From: Ilya Muradyan <Ilya.Muradyan@jetbrains.com>
Date: Mon, 19 Jul 2021 22:47:08 +0300
Subject: [PATCH 2/2] Fix sources publication for Gradle plugin as mentioned in
 https://github.com/gradle/gradle/issues/17760#issuecomment-882703649

Fixes #310
---
 .../build.gradle.kts                             | 16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

diff --git a/jupyter-lib/kotlin-jupyter-api-gradle-plugin/build.gradle.kts b/jupyter-lib/kotlin-jupyter-api-gradle-plugin/build.gradle.kts
index b502aefab..4f3879f93 100644
--- a/jupyter-lib/kotlin-jupyter-api-gradle-plugin/build.gradle.kts
+++ b/jupyter-lib/kotlin-jupyter-api-gradle-plugin/build.gradle.kts
@@ -48,6 +48,11 @@ val saveVersion by tasks.registering {
     }
 }
 
+java {
+    withSourcesJar()
+    withJavadocJar()
+}
+
 tasks {
     processResources {
         dependsOn(saveVersion)
@@ -59,11 +64,6 @@ tasks {
             events("passed", "skipped", "failed")
         }
     }
-
-    register<Jar>("sourceJar") {
-        archiveClassifier.set("sources")
-        from(sourceSets.named("main").get().allSource)
-    }
 }
 
 val pluginName = "apiGradlePlugin"
@@ -97,12 +97,6 @@ pluginBundle {
 }
 
 publishing {
-    publications {
-        withType<MavenPublication> {
-            artifact(tasks["sourceJar"])
-        }
-    }
-
     repositories {
         (rootProject.findProperty("localPublicationsRepo") as? java.nio.file.Path)?.let {
             maven {