Sort folders alphabetically; let users pick the merge model directly

Folders now list alphabetically (case-insensitive) everywhere they're
shown — sidebar, advanced conversation list, and the "Move to Folder"
menu — rather than creation order. listFolders() does the sort at the
DB layer; in-memory folder arrays are re-sorted after local
create/rename so newly added or renamed folders don't fall out of
order until the next reload.

Combine Conversations' AI-Assisted Merge no longer silently assumes
settings.defaultModel — added a model picker (reusing ModelSelectorView,
defaulting to the current default model/provider) so users can pick
which model performs the merge per-combine. ConversationMergeService.merge
takes optional mergeModelId/mergeProvider overrides.
This commit is contained in:
2026-07-28 14:39:18 +02:00
parent 8dee77541f
commit e898d4b6db
6 changed files with 75 additions and 17 deletions
+6
View File
@@ -357,6 +357,7 @@ struct SidebarView: View {
do {
let folder = try DatabaseService.shared.createFolder(name: name)
folders.append(folder)
sortFolders()
if let conversation = conversation {
moveConversation(conversation, toFolder: folder.id)
}
@@ -366,6 +367,10 @@ struct SidebarView: View {
#endif
}
private func sortFolders() {
folders.sort { $0.name.localizedCaseInsensitiveCompare($1.name) == .orderedAscending }
}
private func renameFolderPrompt(_ folder: Folder) {
#if os(macOS)
let alert = NSAlert()
@@ -385,6 +390,7 @@ struct SidebarView: View {
if let i = folders.firstIndex(where: { $0.id == folder.id }) {
folders[i].name = newName
}
sortFolders()
} catch {
Log.db.error("Failed to rename folder: \(error.localizedDescription)")
}