v4.0.2
Brew-TUI-Bar fixes
Popover responsiveness after upgrade
The popover would lock up after a sheet (settings, install progress, "what's new") closed and the user later reopened it. 4.0.1 covered the immediate post-dismiss case via onDismiss: restorePopoverKey; this release also recreates the SwiftUI hosting controller on every popover show, defers makeKey() to the next runloop, and conforms to NSPopoverDelegate so transient closes clean up the click-outside monitor.
Cask-aware upgrades
brew upgrade <name> without --cask/--formula is ambiguous for certain casks (auto-updates, version :latest, cask-metadata desync). Brew silently no-ops with Warning: Not upgrading X, the latest version is already installed but exits 0, so the modal showed "Done" over a package that immediately reappeared in the next refresh.
Now each outdated row carries its kind, and upgrade(package:) passes the right flag. We also parse the "Not upgrading" warning into a .failed stage and flip overall success to failure when all tracked seeds ended .failed despite brew exiting 0 — so you see a clear error with a hint to try brew reinstall instead of a false "Done".
Update
brew upgrade brew-tui
brew upgrade --cask brew-tui-bar