Let a project be removed from the launcher - #112
Merged
Merged
Conversation
added 2 commits
September 24, 2026 18:50
…removal "Removed" There was no way to remove a project from the launcher screen, and the command line's way did not do what it said. The project list is read from the shared workspace registry (ProjectService.ListAsync), so 'loadout project remove x' without --from-workspace forgets only this machine's path: the project stays on the list, shown as "not on this machine", while the command reports "Removed x" and exits 0. Reproduced in a sandboxed APPDATA/LOCALAPPDATA: add, remove, list - still listed. The command line: a removal without --from-workspace now says it forgot where the project is on this machine, that it is still in the shared registry and so still listed, and gives the --from-workspace command. Behaviour is unchanged; only the report was wrong. The launcher: Delete on the project list, and Registry > Remove the selected project, ask first and then hand back 'project remove <slug> --from-workspace --non-interactive' through the same parser as the command line, as the teams screen's forget key does. From the workspace because that is what taking it off the list means; non-interactive because the dialog has already asked, and the command would otherwise ask again. The question says it reaches every machine sharing the workspace, and that the repository, instructions and memory are not touched. Bound on the list only, so the filter keeps Delete. Tests: LauncherRemoveTests drives the real keys (Delete asks, names the project under the cursor, hands back the command; a no hands back nothing). ProjectRemoveContractTests runs the built CLI: a local removal leaves the project listed and says so; --from-workspace takes it off. Each was mutation-checked - removing the binding, ignoring the answer, and restoring the old wording each fail the covering test. A test that Delete in the filter does not remove was dropped: the text field consumes Delete before any window binding, so it passed even with the key bound window-wide and guarded nothing. Not verified: the confirmation dialog itself (a dialog waiting on a keypress cannot be driven headlessly, as on the teams screen), and Delete in a real Windows console.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You couldn't remove a project from the launcher, and
loadout project removedidn't really remove one either.What was wrong
The project list is read from the shared workspace registry.
loadout project remove xwithout--from-workspaceonly forgets this machine's path, so the project stayed on the list, marked "not on this machine", while the command printedRemoved xand exited 0. Reproduced in a sandboxed home:The launcher screen had no remove at all. The teams screen and the manager both have one.
What this changes
project remove <slug> --from-workspace --non-interactivethrough the same parser as the command line. It removes from the workspace because that's what taking it off the list means. The question says this reaches every machine sharing the workspace, and that the repository, instructions and memory aren't touched. Delete is bound to the list only, so it still deletes characters in the filter. It's also listed on the?panel.--from-workspacenow says what actually happened: it forgot where the project is on this machine, the project is still in the shared registry and so still listed, and here's the--from-workspacecommand. The behaviour hasn't changed; only the report was wrong.Evidence
origin/mainplus this change: 3338 passed, 0 failed, 22 skipped.LauncherRemoveTestspresses the real keys.ProjectRemoveContractTestsruns the built CLI and checksproject list --jsonafterwards.Not verified