From 19baed9291e9f2060e5ed60793eba7fa2e39d2cd Mon Sep 17 00:00:00 2001 From: Jean-Luc Makiola Date: Sun, 19 Jul 2026 11:30:00 +0200 Subject: [PATCH] fix(agenda): scope LazyColumn key by day for spanning events A multi-day event now appears under every day it spans, so keying its row by instanceId alone repeated the key across days and crashed the LazyColumn ("Key already used") on scroll. Scope the key by day. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../de/jeanlucmakiola/calendula/ui/agenda/AgendaScreen.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/de/jeanlucmakiola/calendula/ui/agenda/AgendaScreen.kt b/app/src/main/java/de/jeanlucmakiola/calendula/ui/agenda/AgendaScreen.kt index ebea45d..45e5f03 100644 --- a/app/src/main/java/de/jeanlucmakiola/calendula/ui/agenda/AgendaScreen.kt +++ b/app/src/main/java/de/jeanlucmakiola/calendula/ui/agenda/AgendaScreen.kt @@ -367,7 +367,10 @@ private fun AgendaList( } else { itemsIndexed( items = day.events, - key = { _, event -> event.instanceId }, + // Scope the key by day: a multi-day event appears under every + // day it spans, so its instanceId alone is not unique across + // the list (LazyColumn requires unique keys). + key = { _, event -> "${day.date}-${event.instanceId}" }, ) { index, event -> AgendaEventRow( event = event,