Skip to content

Improve LSP Install UX #2101

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 19 commits into
base: main
Choose a base branch
from

Conversation

thecoolwinter
Copy link
Collaborator

@thecoolwinter thecoolwinter commented Aug 16, 2025

Description

Implements an installing progress view for language servers from the mason registry.

  • Package managers have been reworked to return a list of 'steps' to execute.
  • Created a model for running steps and waiting for confirmation if required before a step.
  • Added UI that observes the running model for executed steps and output, as well as errors.

Related Issues

Checklist

  • I read and understood the contributing guide as well as the code of conduct
  • The issues this PR addresses are related to each other
  • My changes generate no new warnings
  • My code builds and runs on my machine
  • My changes are all related to the related issue above
  • I documented my code

Screenshots

Screen.Recording.2025-08-18.at.2.16.53.PM.mov

@austincondiff
Copy link
Collaborator

Looks great! I wonder if we don't open this details sheet by default. Maybe it can be opened during/after installation for more details? We would still show simple progress similar to installing an app from the App Store. What are your thoughts?

@thecoolwinter
Copy link
Collaborator Author

Looks great! I wonder if we don't open this details sheet by default. Maybe it can be opened during/after installation for more details? We would still show simple progress similar to installing an app from the App Store. What are your thoughts?

That's a great idea. Then does the 'install' button change to a 'details' button?

@thecoolwinter
Copy link
Collaborator Author

Or is it "Install" to a second "Install" button in the details page

@thecoolwinter
Copy link
Collaborator Author

@austincondiff thoughts on this UI/UX? I like the implied confirm step after clicking install, and the chance to show a little more information before installing.

Screen.Recording.2025-08-18.at.1.46.07.PM.mov

@thecoolwinter thecoolwinter marked this pull request as ready for review August 18, 2025 19:19
@thecoolwinter thecoolwinter added enhancement New feature or request language server Issues or Pull Requests related to language servers. labels Aug 18, 2025
@austincondiff
Copy link
Collaborator

In my opinion it is too disruptive. Imagine the use-case. User comes in and thinks, "I use JavaScript, TypeScript, Rust, Python, and Swift."

Option A (the on in your video)

  1. Find JavaScript
  2. Click Install in row
  3. Click Install in sheet
  4. Click Continue
  5. Find TyoeScript
  6. Click Install in row
  7. Click Install in sheet
  8. Click Continue
  9. Find Rust
  10. Click Install in row
  11. Click Install in sheet
  12. Click Continue
  13. Find Python
  14. Click Install in row
  15. Click Install in sheet
  16. Click Continue
  17. Find Swift
  18. Click Install in row
  19. Click Install in sheet
  20. Click Continue

OR

Option B

  1. Find JavaScript
  2. Click Install in row
  3. Find TypeScript
  4. Click Install in row
  5. Find Rust
  6. Click Install in row
  7. Find Python
  8. Click Install in row
  9. Find Swift
  10. Click Install in row

If the user cares to see more details, they can click the circle "i" symbol next to the install button.

Maybe this info icon is there regardless of whether install has started or not. That way users can get more details before installing. Similar to the App Store.

@thecoolwinter
Copy link
Collaborator Author

That sounds like a good compromise. Install button initiates install immediately, info button presents the same view but doesn't start installing.

@thecoolwinter
Copy link
Collaborator Author

thecoolwinter commented Aug 18, 2025

Well wait, to be fair we're still forcing the longer UX because we want to make sure we're not running willy nilly running commands on the user's machine. So no matter what the UX is this for each language.

1. Find Swift
2. Install Swift
3. Wait for install dialogue to complete

@thecoolwinter
Copy link
Collaborator Author

Also a heads up, we may want to fork the mason repository in the future or see if they'd be interested in extending it. Right now there's no way to indicate that a package could be found on a user's machine without installing. Swift and Rust are good cases of that, where the language bundles the server executable in the tooling. For that reason Swift isn't in the Mason registry (you can't really install SourceKitLSP without the Swift toolchain)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request language server Issues or Pull Requests related to language servers.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants