Skip to content

Conversation

@fioan89
Copy link
Collaborator

@fioan89 fioan89 commented Dec 15, 2025

This PR adds support for the IDE placeholders in the URI build number parameter. This is a request
coming from Netflix, the placeholders provide an easier way to fill in the build number from the
web dashboard without having to know the available versions of IDE from Toolbox.

IDE launch flow is refactored to support dynamic build selectors, and it also improves the
install/launch logic. When latest_eap or latest_release is used:

  • prefer the newest matching version that is available for install
  • install it only if it isn’t already installed
  • fall back to the latest available version if no match exists
  • show an error if none of the above happens

When latest_installed is used:

  • launch the newest installed version
  • if none are installed, install and launch the latest available version
  • show an error if none of the above happens

When simply matching a build number:

  • check if it is already installed.
  • if not check in the available list and if it is found install and launch it.
  • otherwise show an error.

Besides the above behavior an IDE feed manager was added which depending on whether Toolbox
runs in offline mode or not - it loads the eap and release information from two local json files or from the https://data.services.jetbrains.com/products.

The feed manager is also able to intersect a list of available build versions (the IDE versions available for install
on a workspace) with the list of versions fetched from the feed and return the latest version available for install.
The intersection happens only after the feed was filtered by product code release type. All this is needed because we don't have a way in Toolbox to determine if a build number in the form 242.1234.567 is a release or an eap build. Which is why
we need to rely on data from https://data.services.jetbrains.com/products

Support for offline mode is WIP. The commit assumes that in offline mode Toolbox exposes a certain system property.

This is the IDE model from the https://data.services.jetbrains.com/products? feed.
Only `release` and `eap` IDEs will be supported for now.

This commit is in preparation for supporting placeholders like `last_release` or `last_eap`
in the URI handler. Unfortunately Toolbox does not expose a way to determine if a build like
251.2829.367 is an eap build or an actual release, so we have to look up the metadata in the
feed mentioned earlier.
This commit implements an IDE feed manager that depending on whether Toolbox runs in offline mode or
not loads the eap and release information from two local json files or from the https://data.services.jetbrains.com/products.
The feed manager is also able to intersect a list of available build versions (the IDE versions available for install
on a workspace) with the list of versions fetched from the feed and return the latest version available for install.
The intersection happens only after the feed was filtered by product code release type.

Support for offline mode is WIP. The commit assumes that in offline mode Toolbox exposes a certain system property.
To be used later for resolving the placeholders.
…d` placeholders

This PR adds support for the IDE placeholders in the URI build number parameter. This is a request
coming from Netflix, the placeholders provide an easier way to fill in the build number from the
web dashboard without having to know the available versions of IDE from Toolbox.

IDE launch flow is refactored to support dynamic build selectors, and it also improves the
install/launch logic. When latest_eap or latest_release is used:
- prefer the newest matching version that is available for install
- install it only if it isn’t already installed
- fall back to the latest available version if no match exists
- show an error if none of the above happens

When latest_installed is used:
- launch the newest installed version
- if none are installed, install and launch the latest available version
- show an error if none of the above happens
@fioan89 fioan89 marked this pull request as ready for review December 16, 2025 23:03
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.

1 participant