feat(kanban): render markdown in task description, summary, and comments

This commit is contained in:
M57 committed 2026-09-14 23:40:16 +03:00
1 parent 11512aeed4
commit 6e94fa0be2
1 file changed
+20 -9
@@ -16,6 +16,7 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.Send import androidx.compose.material.icons.automirrored.filled.Send
import androidx.compose.material.icons.filled.ChatBubbleOutline import androidx.compose.material.icons.filled.ChatBubbleOutline
@@ -56,6 +57,7 @@ import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.viewmodel.compose.viewModel import androidx.lifecycle.viewmodel.compose.viewModel
import com.m57.hermescontrol.theme.LocalHermesStatusColors import com.m57.hermescontrol.theme.LocalHermesStatusColors
import com.m57.hermescontrol.ui.chat.MarkdownText
import com.m57.hermescontrol.ui.common.ErrorState import com.m57.hermescontrol.ui.common.ErrorState
import com.m57.hermescontrol.ui.common.HermesScaffold import com.m57.hermescontrol.ui.common.HermesScaffold
import com.m57.hermescontrol.ui.common.NavIcon import com.m57.hermescontrol.ui.common.NavIcon
@@ -322,10 +324,12 @@ private fun TaskOverviewTab(
} }
} }
} else { } else {
Text( SelectionContainer {
text = task.body?.ifBlank { "No description provided." } ?: "No description provided.", MarkdownText(
style = MaterialTheme.typography.bodyMedium, text = task.body?.ifBlank { "No description provided." } ?: "No description provided.",
) textColor = MaterialTheme.colorScheme.onSurface,
)
}
} }
} }
} }
@@ -348,10 +352,12 @@ private fun TaskOverviewTab(
color = MaterialTheme.colorScheme.primary, color = MaterialTheme.colorScheme.primary,
) )
Spacer(modifier = Modifier.height(6.dp)) Spacer(modifier = Modifier.height(6.dp))
Text( SelectionContainer {
text = summary, MarkdownText(
style = MaterialTheme.typography.bodyMedium, text = summary,
) textColor = MaterialTheme.colorScheme.onSurface,
)
}
} }
} }
} }
@@ -406,7 +412,12 @@ private fun TaskDiscussionTab(
) )
} }
Spacer(modifier = Modifier.height(4.dp)) Spacer(modifier = Modifier.height(4.dp))
Text(text = comment.body, style = MaterialTheme.typography.bodySmall) SelectionContainer {
MarkdownText(
text = comment.body,
textColor = MaterialTheme.colorScheme.onSurface,
)
}
} }
} }
} }