feat(chat): add animated GIF rendering with tap-to-play animation (#721) (#731)

* feat(chat): add animated GIF rendering with tap-to-play animation

Closes #721

* fix(#721): add missing GifImageThumbnail component and format ktlint

* fix(analytics): resolve ktlint indentation error in itemsIndexed

* feat(chat): add interactive play/pause toggle for animated GIFs

* fix(chat): control GIF playback via Animatable start and stop
This commit is contained in:
M57 authored and GitHub committed 2026-07-27 18:32:45 +03:00
1 parent c7f7d1dd45
commit 5c1492a80e
32 files changed
+370 -118

No files matched your search

@@ -210,12 +210,12 @@ private fun AnalyticsContent(
ModelRow(model = model)
}
} else if ((usage?.by_model ?: emptyList()).isNotEmpty()) {
itemsIndexed(usage?.by_model ?: emptyList(), key = {
index,
it,
->
"usage_${it.model}_$index"
}) { _, entry ->
itemsIndexed(
usage?.by_model ?: emptyList(),
key = { index, it ->
"usage_${it.model}_$index"
},
) { _, entry ->
ModelEntryRow(entry = entry)
}
} else {
@@ -232,12 +232,12 @@ private fun AnalyticsContent(
if (selectedSectionTab == 1) {
if ((usage?.skills?.top_skills ?: emptyList()).isNotEmpty()) {
itemsIndexed(usage?.skills?.top_skills ?: emptyList(), key = {
index,
it,
->
"skill_${it.skill}_$index"
}) { _, skill ->
itemsIndexed(
usage?.skills?.top_skills ?: emptyList(),
key = { index, it ->
"skill_${it.skill}_$index"
},
) { _, skill ->
SkillRow(skill = skill)
}
} else {