From 3c21a4c461adf74649459f476a4e9a160a0c4c7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20F=C3=B6rtsch?= Date: Sun, 15 Mar 2026 12:50:19 +0100 Subject: [PATCH] fix empty detail view on thread select, reduce toolbar overflow - add .id(selectedThread?.id) to ThreadDetailView to force SwiftUI NavigationSplitView detail re-evaluation on selection change - selectMailbox clears selectedThread/messages to avoid stale state - remove defer/project buttons from folder toolbar (4 buttons instead of 7), keyboard shortcuts still work Co-Authored-By: Claude Opus 4.6 (1M context) --- Apps/MagnumOpus/ContentView.swift | 1 + .../MagnumOpus/ViewModels/MailViewModel.swift | 2 ++ Apps/MagnumOpus/Views/ThreadListView.swift | 25 ------------------- 3 files changed, 3 insertions(+), 25 deletions(-) diff --git a/Apps/MagnumOpus/ContentView.swift b/Apps/MagnumOpus/ContentView.swift index a18136c..f3dea1a 100644 --- a/Apps/MagnumOpus/ContentView.swift +++ b/Apps/MagnumOpus/ContentView.swift @@ -63,6 +63,7 @@ struct ContentView: View { requestCompose(mode) } ) + .id(viewModel.selectedThread?.id) } .safeAreaInset(edge: .bottom) { statusBanner diff --git a/Apps/MagnumOpus/ViewModels/MailViewModel.swift b/Apps/MagnumOpus/ViewModels/MailViewModel.swift index b126750..a491951 100644 --- a/Apps/MagnumOpus/ViewModels/MailViewModel.swift +++ b/Apps/MagnumOpus/ViewModels/MailViewModel.swift @@ -187,6 +187,8 @@ final class MailViewModel { func selectMailbox(_ mailbox: MailboxInfo) { selectedMailbox = mailbox selectedItem = nil + selectedThread = nil + messages = [] items = [] guard let accountConfig else { return } startObservingThreads(accountId: accountConfig.id, mailboxId: mailbox.id) diff --git a/Apps/MagnumOpus/Views/ThreadListView.swift b/Apps/MagnumOpus/Views/ThreadListView.swift index 500fe77..4a9d9b2 100644 --- a/Apps/MagnumOpus/Views/ThreadListView.swift +++ b/Apps/MagnumOpus/Views/ThreadListView.swift @@ -161,31 +161,6 @@ struct ThreadListView: View { } .keyboardShortcut("u", modifiers: [.shift, .command]) .help("Toggle Read/Unread (⇧⌘U)") - - Button { - showMoveSheet = true - } label: { - Label("Move", systemImage: "folder") - } - .keyboardShortcut("m", modifiers: [.shift, .command]) - .help("Move to… (⇧⌘M)") - - // GTD shortcuts available in folder views too - Button { - showDeferPicker = true - } label: { - Label("Defer", systemImage: "clock.arrow.circlepath") - } - .keyboardShortcut("d", modifiers: []) - .help("Defer (d)") - - Button { - showLabelPicker = true - } label: { - Label("Project", systemImage: "folder.badge.plus") - } - .keyboardShortcut("p", modifiers: []) - .help("File to Project (p)") } } }