Skip to content

fix(gui): drop deleted apps from the start menu (#4228) - #4243

Open
kunaaaalcodes wants to merge 1 commit into
HeyPuter:mainfrom
kunaaaalcodes:fix/4228-devcenter-app-startmenu
Open

kunaaaalcodes wants to merge 1 commit into
HeyPuter:mainfrom
kunaaaalcodes:fix/4228-devcenter-app-startmenu

Conversation

@kunaaaalcodes

Copy link
Copy Markdown

Summary

An app deleted after the desktop has loaded stays visible in the start menu's
Recent and Recommended lists, and in the dashboard's recently-used grid,
until the page is reloaded. The start menu renders from a session-cached
window.launch_apps list that only refreshed when its recent list was already
empty, so a deletion that happens later in the same session never reaches the
desktop.

What changed

  • The start menu now refetches GET /get-launch-apps?icon_size=64 every time it
    opens, not only when the cached recent list is empty. This matches the existing
    pattern in TabHome.loadRecentApps, which already always refetches.
  • Adds src/gui/src/helpers/launchAppsList.js with filterLaunchableApps(apps),
    a pure helper that drops entries the backend marks unlaunchable
    (privateAccess.hasAccess === false) and nullish entries.

A deleted app is simply absent from the fresh response, so the refetch is what
removes it. The filter additionally covers apps that stay in the list but cannot
launch, such as a reclaimed hosting, where the backend nulls index_url and sets
privateAccess.hasAccess to false.

Files changed

File Change
src/gui/src/helpers/launchAppsList.js New pure filter filterLaunchableApps.
src/gui/src/helpers/launchAppsList.test.js New unit tests for the filter.
src/gui/src/UI/UITaskbar.js Refetch launch apps on open; render Recent and Recommended from the filtered lists (heading spacing keyed on the filtered recent length).
src/gui/src/UI/Dashboard/TabHome.js buildRecentAppsHTML renders from the filtered list and shows the empty state when every recent entry is filtered out.

No backend change: /get-launch-apps already excludes deleted apps, and the
delete path already tombstones the store and cache.

Testing

  • New unit test: npm test -- src/helpers/launchAppsList.test.js in src/gui →
    6 passed.
  • Full GUI suite: npm test in src/gui → 918 passed | 10 skipped, with 2
    failures that are pre-existing and unrelated (they fail identically with these
    changes stashed): src/UI/Dashboard/TabTeams.render.test.js (an i18n string
    expectation) and src/services/pdfThumbnails/browser.test.js (suite-level).
  • node --check passes on all four files.

Manual verification

  1. npm start, sign in at http://puter.localhost:4100.
  2. Create an app in Dev Center, open it once so it appears under Recent in the
    start menu.
  3. Delete it in Dev Center, then open the start menu without reloading.
  4. Expected: the app is gone from Recent, Recommended and search, and from the
    dashboard's recently-used grid.
  5. In DevTools → Network (filter get-launch-apps), a fresh request fires on each
    start-menu open.

Notes

@CLAassistant

CLAassistant commented Oct 14, 2026 •

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

The start menu read a session-cached launch-apps list and only refetched when it was empty, so an app deleted after page load (for example in Dev Center) stayed in Recent and Recommended until a reload. Refetch on every open, and filter out entries the backend marks unlaunchable, so a reclaimed or inaccessible app leaves the list too. Apply the same filter to the dashboard's Recent apps. Adds helpers/launchAppsList.js with filterLaunchableApps and its unit test.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Deleting a Custom Dev Centre app doesn't remove it from the start menu

2 participants