Created attachment 138535 [details] screenshot STEPS TO REPRODUCE 1. launch a KDE app and close it (it appears in "History" section of kickoff, under "Applications") 2. uninstall the app launched in the step 1 3. see "History" section of kickoff OBSERVED RESULT as we can see in the attached screenshot, uninstalled app appears above "Applications" in History section EXPECTED RESULT uninstalled app should be removed from "History" section SOFTWARE/OS VERSIONS Operating System: KDE neon Unstable Edition KDE Plasma Version: 5.22.80 KDE Frameworks Version: 5.83.0 Qt Version: 5.15.2 Graphics Platform: Wayland
How did you uninstall it exactly?
sudo apt remove <application>
Then I'm not sure how we could easily fix this without checking whether or not every application is still installed right before we show the view.
History of old kickoff had a bug after uninstalling an app too. See bug 429088.
Currently the uninstalled app is replaced with an empty row in Places > History. Operating System: KDE neon Unstable Edition KDE Plasma Version: 6.6.80 KDE Frameworks Version: 6.24.0 Qt Version: 6.10.2 Graphics Platform: Wayland
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/6643
Git commit 9e2d25c84e13175555c258875e00e69a5705fe44 by Christoph Wolk. Committed on 27/05/2026 at 08:57. Pushed by cwo into branch 'master'. applets/kicker: invalidate stand-alone RecentUsageModel RecentUsageModel, on types that include apps, uses a proxy model to filter out invalid apps. When there is a change in which apps are invalid, we need to invalidate this filter, in particular after installing or uninstalling apps. With RecentUsageModels that are used in a RootModel, this happens automatically as the whole RootModel is refreshed in that situation. But when used standalone, as in Kickoff's History view, this currently does not happen. As a consequence, an uninstalled app will still be considered valid, but have no actual data in the model (as its KService can no longer be accessed), so there is an empty entry in the list (possibly with a description of "undefined", which doesn't help much either). Instead, we need to call the proxy model's invalidate() on KSycoca changes. We skip this if the RecentUsageModel's parent is a RootModel, as it happens anyway in that case, so to do it twice would be a waste. M +9 -0 applets/kicker/recentusagemodel.cpp https://invent.kde.org/plasma/plasma-workspace/-/commit/9e2d25c84e13175555c258875e00e69a5705fe44
Git commit 986292860e375757fe3bd4f9cc84cf2ebe5db16a by Christoph Wolk. Committed on 27/05/2026 at 09:39. Pushed by cwo into branch 'Plasma/6.7'. applets/kicker: invalidate stand-alone RecentUsageModel RecentUsageModel, on types that include apps, uses a proxy model to filter out invalid apps. When there is a change in which apps are invalid, we need to invalidate this filter, in particular after installing or uninstalling apps. With RecentUsageModels that are used in a RootModel, this happens automatically as the whole RootModel is refreshed in that situation. But when used standalone, as in Kickoff's History view, this currently does not happen. As a consequence, an uninstalled app will still be considered valid, but have no actual data in the model (as its KService can no longer be accessed), so there is an empty entry in the list (possibly with a description of "undefined", which doesn't help much either). Instead, we need to call the proxy model's invalidate() on KSycoca changes. We skip this if the RecentUsageModel's parent is a RootModel, as it happens anyway in that case, so to do it twice would be a waste. (cherry picked from commit 9e2d25c84e13175555c258875e00e69a5705fe44) Co-authored-by: Christoph Wolk <cwo.kde@posteo.net> M +9 -0 applets/kicker/recentusagemodel.cpp https://invent.kde.org/plasma/plasma-workspace/-/commit/986292860e375757fe3bd4f9cc84cf2ebe5db16a