diff --git a/app/src/main/java/dev/kaizen/app/chat/Sidebar.kt b/app/src/main/java/dev/kaizen/app/chat/Sidebar.kt index 66a4d42..0b7712e 100644 --- a/app/src/main/java/dev/kaizen/app/chat/Sidebar.kt +++ b/app/src/main/java/dev/kaizen/app/chat/Sidebar.kt @@ -218,7 +218,10 @@ fun KaizenSidebar( // ── Conversation list ── val filteredConversations = remember(conversations, searchQuery) { if (searchQuery.isBlank()) conversations - else conversations.filter { it.title.contains(searchQuery, ignoreCase = true) } + else conversations.filter { + if (it.locked) false + else it.title.contains(searchQuery, ignoreCase = true) + } } Box(Modifier.weight(1f).fillMaxWidth()) { @@ -512,11 +515,13 @@ private fun HistoryItemRow( if (!item.locked) { MenuRow(KaizenIcons.Pencil, stringResource(R.string.sidebar_rename), cs.onBackground) { showMenu = false; onRename() } } - if (!item.titleGenerated) { + if (!item.titleGenerated && !item.locked) { MenuRow(KaizenIcons.Sparkles, stringResource(R.string.sidebar_generate_title), cs.onBackground) { showMenu = false; onGenerateTitle() } } MenuRow(KaizenIcons.Pin, stringResource(if (item.pinned) R.string.sidebar_unpin else R.string.sidebar_pin), cs.onBackground) { showMenu = false; onTogglePin() } - MenuRow(KaizenIcons.Copy, stringResource(R.string.sidebar_duplicate), cs.onBackground) { showMenu = false; onDuplicate() } + if (!item.locked) { + MenuRow(KaizenIcons.Copy, stringResource(R.string.sidebar_duplicate), cs.onBackground) { showMenu = false; onDuplicate() } + } MenuRow( if (item.locked) KaizenIcons.LockOpen else KaizenIcons.Lock, stringResource(if (item.locked) R.string.sidebar_unlock else R.string.sidebar_lock),