diff --git a/plugins/gitlab/intellij.vcs.gitlab.iml b/plugins/gitlab/intellij.vcs.gitlab.iml
index c7dd9b16010e..d75262559102 100644
--- a/plugins/gitlab/intellij.vcs.gitlab.iml
+++ b/plugins/gitlab/intellij.vcs.gitlab.iml
@@ -57,5 +57,7 @@
+
+
\ No newline at end of file
diff --git a/plugins/gitlab/src/org/jetbrains/plugins/gitlab/mergerequest/ui/timeline/GitLabMergeRequestTimelineComponentFactory.kt b/plugins/gitlab/src/org/jetbrains/plugins/gitlab/mergerequest/ui/timeline/GitLabMergeRequestTimelineComponentFactory.kt
index 61a1e70722ac..41ee0f5ac305 100644
--- a/plugins/gitlab/src/org/jetbrains/plugins/gitlab/mergerequest/ui/timeline/GitLabMergeRequestTimelineComponentFactory.kt
+++ b/plugins/gitlab/src/org/jetbrains/plugins/gitlab/mergerequest/ui/timeline/GitLabMergeRequestTimelineComponentFactory.kt
@@ -9,6 +9,7 @@ import com.intellij.collaboration.ui.codereview.CodeReviewChatItemUIUtil
import com.intellij.collaboration.ui.codereview.timeline.StatusMessageComponentFactory
import com.intellij.collaboration.ui.codereview.timeline.StatusMessageType
import com.intellij.collaboration.ui.icon.IconsProvider
+import com.intellij.openapi.diagnostic.thisLogger
import com.intellij.openapi.editor.colors.EditorColorsManager
import com.intellij.openapi.util.text.HtmlBuilder
import com.intellij.openapi.util.text.HtmlChunk
@@ -25,6 +26,7 @@ import org.jetbrains.annotations.Nls
import org.jetbrains.plugins.gitlab.api.dto.*
import org.jetbrains.plugins.gitlab.mergerequest.data.GitLabMergeRequestTimelineItem
import org.jetbrains.plugins.gitlab.mergerequest.ui.timeline.GitLabMergeRequestTimelineViewModel.LoadingState
+import org.jetbrains.plugins.gitlab.ui.GitLabUIUtil
import org.jetbrains.plugins.gitlab.util.GitLabBundle
import java.util.*
import javax.swing.JComponent
@@ -95,11 +97,27 @@ object GitLabMergeRequestTimelineComponentFactory {
private fun createDiscussionContent(item: GitLabMergeRequestTimelineItem.Discussion): JComponent {
val firstNote = item.discussion.notes.first()
- return if (firstNote.system) {
- StatusMessageComponentFactory.create(SimpleHtmlPane(firstNote.body))
+
+ if (firstNote.system) {
+ val body = firstNote.body
+ if (body.contains("Compare with previous version")) {
+ try {
+ val lines = body.lines()
+ val title = lines[0]
+ val commits = lines[2]
+ return VerticalListPanel().apply {
+ add(SimpleHtmlPane(title))
+ add(StatusMessageComponentFactory.create(SimpleHtmlPane(commits)))
+ }
+ }
+ catch (e: Exception) {
+ thisLogger().warn("Error occurred while parsing the note with added commits", e)
+ }
+ }
+ return StatusMessageComponentFactory.create(SimpleHtmlPane(GitLabUIUtil.convertToHtml(body)))
}
else {
- SimpleHtmlPane(firstNote.body)
+ return SimpleHtmlPane(GitLabUIUtil.convertToHtml(firstNote.body))
}
}
diff --git a/plugins/gitlab/src/org/jetbrains/plugins/gitlab/ui/GitLabUIUtil.kt b/plugins/gitlab/src/org/jetbrains/plugins/gitlab/ui/GitLabUIUtil.kt
new file mode 100644
index 000000000000..b37a1412d936
--- /dev/null
+++ b/plugins/gitlab/src/org/jetbrains/plugins/gitlab/ui/GitLabUIUtil.kt
@@ -0,0 +1,15 @@
+// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
+package org.jetbrains.plugins.gitlab.ui
+
+import com.intellij.markdown.utils.MarkdownToHtmlConverter
+import com.intellij.openapi.util.NlsSafe
+import org.intellij.markdown.flavours.gfm.GFMFlavourDescriptor
+
+object GitLabUIUtil {
+
+ private val mdConverter = MarkdownToHtmlConverter(GFMFlavourDescriptor())
+
+ internal fun convertToHtml(markdownSource: String): @NlsSafe String {
+ return mdConverter.convertMarkdownToHtml(markdownSource)
+ }
+}
\ No newline at end of file