@@ -168,7 +168,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
168168
169169 private func showContextMenu() {
170170 if popover.isShown {
171− closePopover()
171+ popover.performClose(nil)
172172 }
173173
174174 let menu = NSMenu()
@@ -209,18 +209,19 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
209209
210210 // MARK: - Popover
211211
212+ /// Shows the popover if it isn't already visible.
213+ ///
214+ /// We don't toggle: the popover has `.transient` behavior, which closes it
215+ /// automatically when the user clicks outside it — including on the status
216+ /// item. By the time our `.leftMouseUp` action fires, a previously-shown
217+ /// popover has already closed, so `isShown` is `false` and a toggle would
218+ /// reopen it instead of dismissing it. Always showing means the first click
219+ /// opens and `.transient` handles the rest.
212220 private func togglePopover() {
213221 guard let button = statusItem.button else { return }
214− if popover.isShown {
215− closePopover()
216− } else {
217− popover.show(relativeTo: button.bounds, of: button, preferredEdge: .minY)
218− NSApp.activate(ignoringOtherApps: true)
219− }
220− }
221−
222− private func closePopover() {
223− popover.performClose(nil)
222+ guard !popover.isShown else { return }
223+ popover.show(relativeTo: button.bounds, of: button, preferredEdge: .minY)
224+ NSApp.activate(ignoringOtherApps: true)
224225 }
225226}
226227