Preview versions
Updates
Preview 11
IDE Services Core
Introduced user groups.
Implemented the licensing and activation mechanisms for IDE Services and suite products.
Implemented synchronization of IDE Services user groups with the identity provider's user groups.
Introduced SAML support.
Supported user group mapping between IDE Services and identity providers.
Supported user import from Microsoft Entra ID and Okta.
IDE Provisioner
Implemented automatic installation and updates for plugins from channels other than the stable channel.
Removed templates for deprecated XML settings from the Web UI.
Added the "Check for updates" frequency setting to Toolbox Settings.
Code With Me Enterprise
Improved the flow for joining a Code With Me session.
JetBrains IDE Services plugin
Added the ability to read a client machine configuration from disk.
Changed the placement of the organization's logo icon in IDEs.
Implemented the notification displayed in case of authentication issues.
Improved the UX of the Export IDE Configuration Changes action.
Added an option to prohibit users from disabling/enabling certain plugins.
Web UI
Redesigned the Login page.
Redesigned the header dropdown.
Added an option to assign profiles to user groups.
API changes
In Preview 11, we introduced a number of changes to the IDE Services API. The refactoring aimed to decrease the number of RPC-styled endpoints, unify collection formats, and move subcollections to separate controllers.
GET /api/configs
: added the required propertycodeWithMe
to the response with the200
status.PATCH /api/configs
: added the endpoint.GET /api/constituents
: added the endpoint.DELETE /api/constituents/ai
: added the endpoint.GET /api/constituents/ai
: added the endpoint.POST /api/constituents/ai
: added the endpoint.PUT /api/constituents/ai
: added the endpoint.DELETE /api/constituents/cwm
: added the endpoint.GET /api/constituents/cwm
: added the endpoint.POST /api/constituents/cwm
: added the endpoint.PUT /api/constituents/cwm
: added the endpoint.DELETE /api/constituents/idep
: added the endpoint.GET /api/constituents/idep
: added the endpoint.POST /api/constituents/idep
: added the endpoint.PUT /api/constituents/idep
: added the endpoint.GET /api/constituents/lv
: added the endpoint.GET /api/cwm-tbe/events
:Breaking change! Removed the required property
events
from the response with the200
status.Added the required property
items
to the response with the200
status.The response property
items
became required for the status200
.
GET /api/cwm-tbe/events-stats
:Breaking change! Removed the required property
eventsStats
from the response with the200
status.Added the required property
items
to the response with the200
status.Added the required property
total
to the response with the200
status.The response property
items
became required for the status200
.The response property
total
became required for the status200
.
GET /api/feed-filters/products
:Breaking change! Changed the response body format from
array
toobject
for the200
status.Added the required property
items
to the response with the200
status.Added the required property
total
to the response with the200
status.The response property
items
became required for the status200
.The response property
total
became required for the status200
.
GET /api/feed-filters/qualities
:Breaking change! Changed the response body format from
array
toobject
for the200
status.Added the required property
items
to the response with the200
status.Added the required property
total
to the response with the200
status.The response property
items
became required for the status200
.The response property
total
became required for the status200
.
GET /api/groups
: added the endpoint.GET /api/groups/{groupId}/profiles
: added the endpoint.DELETE /api/groups/{groupId}/profiles/{profileId}
: added the endpoint.PUT /api/groups/{groupId}/profiles/{profileId}
: added the endpoint.GET /api/groups/{groupId}/users
: added the endpoint.GET /api/groups/{id}
: added the endpoint.GET /api/ij-plugins
:Breaking change! This API has been deprecated.
Added the
deprecated-plugin-controller
API tag.Removed the
plugin-controller
API tag.
Breaking change!
GET /api/ij-plugins-extras/all-channels
: this API has been deprecated.Breaking change!
GET /api/ij-plugins-extras/audit-logs
: this API has been deprecated.POST /api/ij-plugins/upload
:Breaking change! This API has been deprecated.
Added the
deprecated-plugin-controller
API tag.Removed the
plugin-controller
API tag.
DELETE /api/ij-plugins/{pluginId}
:Breaking change! This API has been deprecated.
Added the
deprecated-plugin-controller
API tag.Removed the
plugin-controller
API tag.
GET /api/ij-plugins/{pluginId}
:Breaking change! This API has been deprecated.
Added the
deprecated-plugin-controller
API tag.Removed the
plugin-controller
API tag.
PATCH /api/ij-plugins/{pluginId}
:Breaking change! This API has been deprecated.
Added the
deprecated-plugin-controller
API tag.Removed the
plugin-controller
API tag.
POST /api/import/users
:Added the required request property
users/items/groups
.Removed the request property
users/items/profiles
.
Breaking change!
GET /api/machine-config/trusted-certificates
: this API has been deprecated.Breaking change!
PUT /api/machine-config/trusted-certificates
: this API has been deprecated.Breaking change!
DELETE /api/machine-config/trusted-certificates
: this API has been deprecated.GET /api/ping
:The response property
message
became required for the status200
.Added the required property
message
to the response with the200
status.
GET /api/plugins
: added the endpoint.POST /api/plugins
: added the endpoint.GET /api/plugins-audit-logs
: added the endpoint.GET /api/plugins-channels
: added the endpoint.DELETE /api/plugins/{pluginId}
: added the endpoint.GET /api/plugins/{pluginId}
: added the endpoint.PATCH /api/plugins/{pluginId}
: added the endpoint.GET /api/plugins/{pluginId}/channels
: added the endpoint.GET /api/plugins/{pluginId}/versions
: added the endpoint.DELETE /api/plugins/{pluginId}/versions/{version}
: added the endpoint.PATCH /api/plugins/{pluginId}/versions/{version}
: added the endpoint.GET /api/profiles
:Breaking change! Removed the required property
profiles
from the response with the200
status.The response property
items
became required for the status200
.Added the required property
items
to the response with the200
status.
POST /api/profiles
:Added a new optional request property
constituents
.Added a new optional request property
plugins/autoInstalled/items/content/items/channel
.Added the optional property
plugins/autoInstalled/items/content/items/channel
to the response with the200
status.The response property
constituents
became required for the status200
.Added the required property
constituents
to the response with the200
status.
POST /api/profiles/evaluate/profile-filters
:Breaking change! Added a new required request property
constituents
.Added a new optional request property
plugins/autoInstalled/items/content/items/channel
.Added the optional property
plugins/autoInstalled/items/content/items/channel
to the response with the200
status.The response property
constituents
became required for the status200
.Added the required property
constituents
to the response with the200
status.
GET /api/profiles/{id}
:Added a new optional request property
plugins/autoInstalled/items/content/items/channel
.The response property
constituents
became required for the status200
.Added the required property
constituents
to the response with the200
status.
PUT /api/profiles/{id}
:Added a new optional request property
constituents
.Added a new optional request property
plugins/autoInstalled/items/content/items/channel
.Added the optional property
plugins/autoInstalled/items/content/items/channel
to the response with the200
status.The response property
constituents
became required for the status200
.Added the required property
constituents
to the response with the200
status.
DELETE /api/profiles/{id}/users
: added the endpoint.GET /api/profiles/{id}/users
:Removed the required property
users
from the response with the200
status.Added the
profile-users-controller
API tag.Removed the
profile-controller
API tag.The response property
items
became required for the status200
.The response property
total
became required for the status200
.Added the required property
items
to the response with the200
status.
PUT /api/profiles/{id}/users
: added the endpoint.GET /api/profiles//audit-logs
Breaking change! Changed the response body format from
array/none
toobject/none
for the200
status.The response property
items
became required for the status200
.The response property
total
became required for the status200
.Added the required property
items
to the response with the200
status.Added the required property
total
to the response with the200
status.
GET /api/profiles/{profileId}/audit-logs/{eventId}
: added the endpoint.GET /api/profiles/{profileId}/groups
: added the endpoint.DELETE /api/profiles/{profileId}/users/{userId}
: added the endpoint.PUT /api/profiles/{profileId}/users/{userId}
: added the endpoint.GET /api/toolbox/installer/windows
: added the endpoint.POST /api/tools/settings
:Added the optional property
payload/tools/items/enabledPlugins/autoInstalled/items/channel
to the response with the200
status.Added the optional property
payload/tools/items/enabledPlugins/autoInstalled/items/source
to the response with the200
status.
POST /api/tools/settings/ide-configuration
:Added the optional property
payload/tools/items/enabledPlugins/autoInstalled/items/channel
to the response with the200
status.Added the optional property
payload/tools/items/enabledPlugins/autoInstalled/items/forced
to the response with the200
status.Added the required property
payload/notifications/plugins/disabledPlugins
to the response with the200
status.
POST /api/transparency/agreement
: added the endpoint.Breaking change!
POST /api/transparency/agreement/upload
: this API has been deprecated.GET /api/usage-stats/detailed
: added the endpoint.GET /api/usage-stats/events-stats-ai
: added the endpoint.GET /api/usage-stats/events-stats-ai-last
: added the endpoint.GET /api/usage-stats/events-stats-cwm
: added the endpoint.GET /api/usage-stats/events-stats-cwm-last
: added the endpoint.GET /api/usage-stats/events-stats-ide
: added the endpoint.GET /api/usage-stats/events-stats-ide-last
: added the endpoint.GET /api/usage-stats/recalculate
: added the endpoint.GET /api/usage-stats/report
: added the endpoint.POST /api/usage-stats/sending-status
: added the endpoint.GET /api/users
:Breaking change! Changed the response body format from
array/none
toobject/none
for the200
status.Breaking change! Removed the query request parameter
include-total-count
.Added a new optional query request parameter
filter-group-id
.The response property
items
became required for the status200
.The response property
total
became required for the status200
.Added the required property
items
to the response with the200
status.Added the required property
total
to the response with the200
status.
POST /api/users
: added the optional propertyprofiles/items/groups
to the response with the200
status.GET /api/users/products/{userId}
:Breaking change! This API has been deprecated.
Added the
deprecated-user-controller
API tag.Removed the
user-controller
API tag.
PUT /api/users/profile
:Breaking change! This API has been deprecated.
Added the
deprecated-user-controller
API tag.Removed the
user-controller
API tag.
POST /api/users/profiles/{profileId}/unassign
:Breaking change! This API has been deprecated.
Added the
deprecated-user-controller
API tag.Removed the
user-controller
API tag.
GET /api/users/{id}
: added the optional propertyprofiles/items/groups
to the response with the200
status.PATCH /api/users/{id}
: added the optional propertyprofiles/items/groups
to the response with the200
status.PUT /api/users/{id}
: added the optional propertyprofiles/items/groups
to the response with the200
status.GET /api/users/{id}/profiles
:Breaking change! Changed the response body format from
array/none
toobject/none
for the200
status.Added the
user-profiles-controller
API tag.Removed the
user-controller
API tag.The response property
items
became required for the status200
.The response property
total
became required for the status200
.Added the required property
items
to the response with the200
status.Added the required property
total
to the response with the200
status.
GET /api/users/{userId}/groups
: added the endpoint.GET /api/users/{userId}/products
: added the endpoint.DELETE /api/users/{userId}/profiles/{profileId}
: added the endpoint.PUT /api/users/{userId}/profiles/{profileId}
:Added the
user-profiles-controller
API tag.Removed the
user-controller
API tag.
Preview 10
IDE Provisioner
Improved performance of the plugin repository.
Introduced a possibility to disable the marketplace in IDEs.
Added a possibility to view the history of profile changes.
Switched to using XPath for setting templates instead of XML.
Added a possibility to configure automatically installed tools in profiles.
Added a possibility to configure Toolbox App settings in profiles.
Added a possibility to install plugins using
jetbrains://
links.Improved the logic of downloading feeds in offline mode. Now offline.json is not fully regenerated.
Introduced the ability to skip downloading tool distributions that have already been downloaded. Additionally, the
--force
option was implemented to forcibly re-download the tool.
JetBrains IDE Services plugin
Moved plugins hosted by IDE Services to the Plugins settings menu in IDEs.
Updated the action to collect settings from IDEs.
Web UI
Redesigned the Configuration page.
Updated login pages for different user roles.
Implemented the restricted mode UI, which becomes active when IDE Provisioner is disabled.
Introduced a number of fixes and improvements to polish the overall look and feel of the Web UI.
API changes
GET /api/automation-tokens
: replaced the operation idgetAll_3
withgetAll_2
.GET /api/configs
: added an endpoint.Breaking change!
POST /api/import/users
: changed the format/type of theusers/items/permissions
request property fromarray
toobject
.GET /api/plugin-repository/api/search/plugins
: added an endpoint.GET /api/profiles
: replaced the operation idgetAll_2
withgetAll_1
.POST /api/profiles
:Added a new optional request property
applications/content/items/autoinstalled
.Added a new optional request property
settings/autoinstalledTools
.Added a new optional request property
settings/autoinstalledToolsVersion
.Added a new optional request property
settings/toolbox
.Added a new optional request property
settings/toolboxVersion
.Added the optional property
applications/content/items/autoinstalled
to the response with the200
status.Added the optional property
settings/autoinstalledTools
to the response with the200
status.Added the optional property
settings/autoinstalledToolsVersion
to the response with the200
status.Added the optional property
settings/toolbox
to the response with the200
status.Added the optional property
settings/toolboxVersion
to the response with the200
status.
POST /api/profiles/evaluate/profile-filters
:Added a new optional request property
applications/content/items/autoinstalled
.Added a new optional request property
settings/autoinstalledTools
.Added a new optional request property
settings/autoinstalledToolsVersion
.Added a new optional request property
settings/toolbox
.Added a new optional request property
settings/toolboxVersion
.Added the optional property
applications/content/items/autoinstalled
to the response with the200
status.Added the optional property
settings/autoinstalledTools
to the response with the200
status.Added the optional property
settings/autoinstalledToolsVersion
to the response with the200
status.Added the optional property
settings/toolbox
to the response with the200
status.Added the optional property
settings/toolboxVersion
to the response with the200
status.
GET /api/profiles/{id}
:Added the optional property
applications/content/items/autoinstalled
to the response with the200
status.Added the optional property
settings/autoinstalledTools
to the response with the200
status.Added the optional property
settings/autoinstalledToolsVersion
to the response with the200
status.Added the optional property
settings/toolbox
to the response with the200
status.Added the optional property
settings/toolboxVersion
to the response with the200
status.
PUT /api/profiles/{id}
:Added a new optional request property
applications/content/items/autoinstalled
.Added a new optional request property
settings/autoinstalledTools
.Added a new optional request property
settings/autoinstalledToolsVersion
.Added a new optional request property
settings/toolbox
.Added a new optional request property
settings/toolboxVersion
.Added the optional property
applications/content/items/autoinstalled
to the response with the200
status.Added the optional property
settings/autoinstalledTools
to the response with the200
status.Added the optional property
settings/autoinstalledToolsVersion
to the response with the200
status.Added the optional property
settings/toolbox
to the response with the200
status.Added the optional property
settings/toolboxVersion
to the response with the200
status.
GET /api/profiles/{id}/users
:Breaking change! Changed the format/type of the
users/items/id
response property fromstring
/uuid
tostring
for status200
.Added a new optional query request parameter
limit
.Added a new optional query request parameter
offset
.Added a new optional query request parameter
order
.Added a new optional query request parameter
page
.Added a new optional query request parameter
sort
.Added the optional property
total
to the response with the200
status.
GET /api/profiles/{profileId}/audit-logs
:Breaking change! Changed the format/type of the
users/items/id
response property fromstring
/uuid
tostring
for status200
.Breaking change! Deleted the query request parameter
actionType
.Added a new optional query request parameter
type
.Added the optional property
applications/content/items/autoinstalled
to the response with the200
status.Added the optional property
items/autoinstalledTools
to the response with the200
status.Added the optional property
items/autoinstalledToolsVersion
to the response with the200
status.Added the optional property
items/toolbox
to the response with the200
status.Added the optional property
items/toolboxVersion
to the response with the200
status.Added the optional property
items/type
to the response with the200
status.
POST /api/schedule/reorder-plugins
: added an endpoint.POST /api/schedule/{pluginId}/reorder-plugin
: added an endpoint.GET /api/toolbox/version
: reactivated an endpoint.GET /api/tools
:Breaking change! Removed the required property
feeds
from the response with the200
status.Breaking change! Removed the required property
tools
from the response with the200
status.Added a new optional query request parameter
challenge
.Added the optional property
challenge
to the response with the200
status.Added the optional property
extraClaims
to the response with the200
status.Added the optional property
headers
to the response with the200
status.Added the optional property
payload
to the response with the200
status.
Breaking change!
POST /api/tools
: removed the api path without deprecation.Breaking change!
GET /api/usage-data-transfers
: removed the API path without deprecation.Breaking change!
POST /api/usage-data-transfers
: removed the API path without deprecation.Breaking change!
GET /api/usage-data-transfers/active
: removed the API path without deprecation.Breaking change!
POST /api/usage-data-transfers/{id}/cancel
: removed the API path without deprecation.
Preview 9.1
UI changes
Added the Dashboard page to the Web UI.
Code With Me Enterprise
Improved the UX of joining a Code With Me session for IDE Services users.
Introduced the Code With Me session log in the Web UI.
Improved the Code With Me session page UI.
IDE Services Demo
Migrated the demo to HTTP.
API changes
GET /api/cwm-tbe/events
: added an endpoint.GET /api/cwm-tbe/events-stats
: added an endpoint.POST /api/tools
: added the required propertyfeeds/items/relativeUrl
to the response with the200
status.Breaking change!
POST /api/tools/settings/ide-configuration
: removed the required propertyanalyticsMode
from the response with the200
status.
Preview 9
User management
Introduced an API for bulk creation of users and their permissions.
IDE Provisioner
Added the possibility to configure Bazel settings via profiles.
Implemented a possibility to install, update, downgrade, disable plugins, and send corresponding notifications to developers.
Offline mode
Added the possibility to use Nexus/Artifactory as a plugin storage.
Implemented prefix mapping and authentication for requests in the application.yaml file.
Unified the filter logic in TBE CLI and profiles.
Code With Me Enterprise
Implemented a verification process for each join request. Before granting access, the lobby server will check the policy stored on a TBE profile. This ensures that only authorized users are allowed to join the lobby.
JetBrains IDE Services plugin
Added an action to collect diagnostics data in IDEs.
Added IDE notifications on plugin updates.
Implemented the possibility to collect non-anonymous analytics.
UI changes
Redesigned the Plugins page.
Added notifications helping to fast-track profile changes.
Improved table elements.
Improved forms for user management inside profiles.
Preview.8.1
General
Changed the minimum required Toolbox App version to 2.5.1.34629.
Profiles
Introduced update channels for IDEs. Now you can select the minimum quality of IDEs available to developers.
Offline mode
Introduced expiration dates for the Toolbox App feed mappings in offline.json.
Supported offline mode for Code With Me.
Users
Added the possibility to check the latest date when the user was online.
UI changes
Redesigned the Users page.
Redesigned the list of profiles on the Profiles page.
Redesigned the Plugins page.
Supported the Markdown format for data collection agreement files on the Configuration page.
Added the Offline mode widget.
Supported profile deletion from the profile details page.
Preview.8
Offline Mode
Now you can run IDE Services in a network-isolated environment by enabling offline mode and bootstrapping the service with the new IDE Services CLI tool. For more details, see Offline mode.
Plugin Retention Policy
It is now possible to specify an expiration date when uploading a plugin. After this date, IDE Services will no longer publish the plugin and will remove it after the specified date. This is an opt-in feature, so unless specified explicitly, IDE Services will serve all plugins forever.
Beta Plugin Channels
It is now possible to specify channels for plugins distributed by IDE Services, so developers can receive beta or nightly builds. These channels exist on a per-plugin basis.
IDE Services-managed settings in IDEs
In the IDE settings, you can now find settings managed by your organization.
Now you can see notifications related to plugins and vm options in the IDE.
Bulk operations with plugins
On the Plugins page, you can quickly add and remove several plugin versions at once.
Support for Azure Blob Storage
You can configure your server to use Azure Blob Storage as an object storage. For more details, see Azure Blob Storage.
The local plugin repository uses the upload date and time to order plugins.
IDE Services now promotes only the latest plugin for a given plugin ID. To define which plugin is considered the latest, IDE Services uses its upload date.
Organization logo
On the IDE Services Server side, you can configure your organization's logo to be displayed in the IDEs.
New setting template to disable installing plugins from the disk.
UI changes
Added the list of profile users to profile details.
Added filters to the Plugins page, enabling you to search for plugins by name, vendor, and visibility status.
Redesigned the welcome screen.
Redesigned the Users page.
Enhanced the Available applications section in the profile editor.
Preview.7
Profiles
Implemented the new logic for application filters. The list of applications available for a particular profile influences the application filters that you configure when adding a new setting or plugin.
Redesigned the Profiles UI.
Plugins
Improved the API for working with plugins.
Added validation for plugin IDs and versions. Now, IDE Services will show an error if these values contain the
..
,/
, or\
symbols.
Analytics
Reduced the number of analytics logs delivered to the IDE Services Server for safety and better data compliance. This update improves the consistency of data delivery, making the process more transparent.
Preview.6
Notification mechanism for restricting and updating IDEs
Added a possibility to schedule a force update in the Web UI
Added force update notifications to JetBrains IDEs
UI improvements in the Web UI
Cleaned up the Home page
Redesigned the Configuration page
Added a link to the IDE Services help to the main menu
Cleaned up the Users page
Fixed a bunch of issues related to the analytics collection
Preview.5
More than 97 issues were resolved in this release, here are the most notable changes:
Propagate IDE Settings
Supported IDE settings configuration in the Web UI
Provided predefined templates for common scenarios. Would you like to see more templates? Let us know
Plugin Repository
Added plugin download events
Introduced the plugin repository audit log
Supported aarch64 platform for docker images, IDE Services Preview now runs on Apple Silicon computers
The license agreement is shown when you launch the server for the first time. It will ask you to add a configuration parameter to mark your agreement and to let the server start
The Toolbox App (1.26+) shows restart notifications in IDEs when new settings or plugins are applied
Preview.4
Plugin repository:
Configured the internal plugin repository to use the database. The IDE Services Server converts the current storage on the first start. It might take several minutes before you’ll be able to see all your plugins again. Furthermore, it is possible to trigger this synchronization manually should you see any inconsistencies.
Introduced stability channels for plugins
UI improvements:
Added a dark theme
Added a new filter to sort out users by their roles
Implemented a UI for editing available IDE plugins in profiles
Added the consent link to the Toolbox App
Fixed the way the data collection agreements are displayed
Added highlighting of unsupported VM options
Analytics:
Improved the collection of freeze analytics and introduced the possibility to view details of freeze reports
Introduced the ability to download collected exception reports from the UI
IDE Plugin:
Retired the support for 2020.3 IDEs
Fixed login flow and authentication for plugin repository in Android Studio
Notable improvements:
Added an ability to infer object storage credentials implicitly when IDE Services is deployed using the AWS stack
Updated the available filters for searching IDEs
IDE Services can now work in specific network setups where authentication is provided by a forward proxy
Preview.3
Added support for IntelliJ-based IDEs from the 2022.1 release
Improved Docker Image, JAR package, and docker-compose demo
Implemented analytics dashboard for:
IDE and plugin versions, OS, and options
Top exceptions dashboard
APDEX code completion performance
Updated profiles:
Management of VM Options
Management of disabled plugins
Automatic configuration of plugin force-installation
Plugin Repository:
Plugin page
Support for plugin channels
Authorization for plugin downloads
Plugin uploading from Gradle SDK
Notable improvements:
Default profile is correctly added to all new users
Fixed too frequent login notifications from the Toolbox App
Implemented better handling of OAuth 2.0 server error responses
Added the possibility to show profiles on the Users page
Added an option to disable selected bundled plugins from an IDE
Added instructions on how to list current HTTPS certificates
Improved how we collect exceptions and freezes from an IDE
Warn HTTPS has to be used
Show a plugin download link, size, and compatible IDEs