diff --git a/platform/jewel/RELEASE NOTES.md b/platform/jewel/RELEASE NOTES.md index 6122af887eb4..70ee448f7662 100644 --- a/platform/jewel/RELEASE NOTES.md +++ b/platform/jewel/RELEASE NOTES.md @@ -1,5 +1,56 @@ # Jewel Release Notes +## v0.31 (ETA 2025-10-21) + +| Min supported IJP versions | Compose Multiplatform version | +|----------------------------|-------------------------------| +| 2025.2.4, 2025.3 EAP | 1.9.0 | + +### ⚠️ Important Changes + +* **IJP 251 is no longer supported** as of this release. Jewel policy remains to support the current stable version and the upcoming IJP version. +* **JEWEL-996** Updated Compose Multiplatform version to 1.9.0 stable ([#3241](https://github.com/JetBrains/intellij-community/pull/3241)) + +### New features + +* **JEWEL-146** Created `SpeedSearchArea` container to provide [speed search](https://www.jetbrains.com/help/idea/speed-search-in-the-tool-windows.html) functionality + * Speed search is implemented for `SelectableLazyColumn` (in ([#3214](https://github.com/JetBrains/intellij-community/pull/3214))) and `Tree` (in ([#3242](https://github.com/JetBrains/intellij-community/pull/3242))) components + * `ComboBox`es are not yet supported, but should be in 0.32 + * By default, it does IDE-like "smart matching", implemented by `SpeedSearchMatcher.patternMatcher()` + * A more classical substring matching behaviour is also optionally available via `SpeedSearchMatcher.substringMatcher()` + * You can implement `SpeedSearchMatcher` to provide your own matching logic +* **JEWEL-964** Added a `PopupMenu` variant that takes a `PopupPositionProvider` as parameter ([#3202](https://github.com/JetBrains/intellij-community/pull/3202)) + +### Bug fixes + +* **JEWEL-146** Fixed an issue in the `LazyListState.visibleItemsRange` and `SelectableLazyListState.visibleItemsRange` methods that were returning one more item than they should have ([#3214](https://github.com/JetBrains/intellij-community/pull/3214)) +* **JEWEL-146** Fixed potential crashes in the IDE when reading `ComboBox.padding`, `TabbedPane.tabInsets`, and `SpeedSearch.borderInsets` from the LaF ([#3235](https://github.com/JetBrains/intellij-community/pull/3235)) +* **JEWEL-174** Fixed toolwindows in the IDE not getting focused when clicking in an empty area or a non-focusable child composable ([#3228](https://github.com/JetBrains/intellij-community/pull/3228)) +* **JEWEL-857** Fixed `SimpleListItem`'s semantics to ensure screen readers will read the content description from the children elements ([#3227](https://github.com/JetBrains/intellij-community/pull/3227)) +* **JEWEL-857** Fixed `SelectableLazyColumn`'s semantics to ensure screen readers will read the content description from the children elements ([#3227](https://github.com/JetBrains/intellij-community/pull/3227)) +* **JEWEL-857** Fixed `SelectableLazyColumn`'s semantics to ensure screen readers will read the selected/unselected state of items correctly ([#3227](https://github.com/JetBrains/intellij-community/pull/3227)) + * If the list uses multiple selection mode, items will be considered as checkboxes + * If the list uses single selection mode, items will be considered as radio buttons +* **JEWEL-914** Fixed the `Chip` component's appearance in the IDE ([#3239](https://github.com/JetBrains/intellij-community/pull/3239)) +* **JEWEL-952** Fixed an issue with menus where multiple sub-menus could be opened at the same time ([#3201](https://github.com/JetBrains/intellij-community/pull/3201)) +* **JEWEL-953** Fixed keyboard navigation on custom native popups, in both standalone and the IDE ([#3208](https://github.com/JetBrains/intellij-community/pull/3208)) + * Now, clicking the left arrow only closes the top level + * Also fixes incorrect popup focus forcing in the IDE +* **JEWEL-953** Fixed keyboard navigation on custom native popups in standalone to cycle around like it does the IDE ([#3208](https://github.com/JetBrains/intellij-community/pull/3208)) +* **JEWEL-953** Fixed behaviour when `dismissOnClickOutside = false` for custom native popups in standalone ([#3208](https://github.com/JetBrains/intellij-community/pull/3208)) +* **JEWEL-961,JEWEL-984** Fixed issues where `ListComboBox`es were not making focused entries fully visible on keyboard navigation ([#3237](https://github.com/JetBrains/intellij-community/pull/3237)) +* **JEWEL-961,JEWEL-984** Fixed issues with string-based `ListComboBox`es not closing when pressing enter ([#3237](https://github.com/JetBrains/intellij-community/pull/3237)) +* **JEWEL-961,JEWEL-984** Fixed issues in `ListComboBox`es scrolling to only move by one item at a time, to match Swing implementations ([#3237](https://github.com/JetBrains/intellij-community/pull/3237)) +* **JEWEL-962** Fixed `ListComboBox` to properly scroll to ensure the selected item is visible when first opening the popup ([#3243](https://github.com/JetBrains/intellij-community/pull/3243)) +* **JEWEL-962** Fixed `ListComboBox` to properly reset the scroll position when the popup is dismissed ([#3234](https://github.com/JetBrains/intellij-community/pull/3234)) +* **JEWEL-1001** Fixed the text line height calculation in the IDE when the IDE zoom level is not 100% ([#3236](https://github.com/JetBrains/intellij-community/pull/3236)) +* **JEWEL-1002** Fixed an issue that required explicitly providing a theme `instanceUuid` in standalone themes and could cause crashing at startup ([#3216](https://github.com/JetBrains/intellij-community/pull/3216)) +* **JEWEL-1006** Fixed an issue in the custom popup renderer in standalone that was incorrectly triggering the "click outside" callback when a submenu was clicked ([#3238](https://github.com/JetBrains/intellij-community/pull/3238)) + +### Deprecated API + +* **JEWEL-146** Deprecated `SelectableLazyColumn` overload that does not accept an `interactionSource` as parameter ([#3214](https://github.com/JetBrains/intellij-community/pull/3214)) + ## v0.30 (2025-09-04) | Supported IJP versions | Compose Multiplatform version | @@ -90,13 +141,13 @@ * **JEWEL-967** Fixed the Images Markdown extension artifact to correctly declare it depends on Coil3 ([#3188](https://github.com/JetBrains/intellij-community/pull/3188)) * **JEWEL-968** Fixed the Markdown console font ligatures settings to match user's IDE settings with all fonts ([#3178](https://github.com/JetBrains/intellij-community/pull/3178)) * **JEWEL-976** Fixed a `ArrayIndexOutOfBoundsException` in `ListComboBox` when passing an out-of-bounds selected index ([#3184](https://github.com/JetBrains/intellij-community/pull/3184)) -* **JEWEL-989** Fixed `plugin.xml` dependencies for the Markdown styling modules — both standalone and bridge ([#3197](https://github.com/JetBrains/intellij-community/pull/3197)) * **JEWEL-985** Fixed a number of APIs that were missing the experimental annotations, or were improperly annotated as such: ([#3193](https://github.com/JetBrains/intellij-community/pull/3193)) * `LocalCodeHighlighter` and `NoOpCodeHighlighter` * `LocalPopupRenderer` * **JEWEL-986** Added missing CMP Resources transitive dependency to the `ui` module's POM ([#3195](https://github.com/JetBrains/intellij-community/pull/3195)) * Removed unnecessary dependency on the autolink, strikethrough, and images extensions from the bridge styling module * Added missing dependency on the tables extension to the standalone styling module +* **JEWEL-989** Fixed `plugin.xml` dependencies for the Markdown styling modules — both standalone and bridge ([#3197](https://github.com/JetBrains/intellij-community/pull/3197)) ### Deprecated API diff --git a/platform/jewel/scripts/extract-release-notes.main.kts b/platform/jewel/scripts/extract-release-notes.main.kts index 9d7da8010f30..c08ae680077f 100755 --- a/platform/jewel/scripts/extract-release-notes.main.kts +++ b/platform/jewel/scripts/extract-release-notes.main.kts @@ -11,6 +11,8 @@ import com.github.ajalt.clikt.core.main import com.github.ajalt.clikt.parameters.options.defaultLazy import com.github.ajalt.clikt.parameters.options.flag import com.github.ajalt.clikt.parameters.options.option +import java.io.File +import java.util.concurrent.ConcurrentHashMap import kotlin.system.exitProcess import kotlin.time.TimeSource.Monotonic.markNow import kotlinx.coroutines.Dispatchers @@ -24,8 +26,6 @@ import kotlinx.coroutines.runBlocking import kotlinx.serialization.json.Json import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive -import java.io.File -import java.util.concurrent.ConcurrentHashMap // --- Configuration --- private object Config { @@ -51,7 +51,7 @@ class ExtractReleaseNotesCommand : CliktCommand() { if (latestReleaseDate.isNullOrBlank()) { printlnErr( "Error: --start-date is required if ${Config.RELEASE_NOTES_FILE} " + - "does not exist or contain a release date." + "does not exist or contain a release date." ) exitProcess(1) } @@ -198,7 +198,9 @@ class ExtractReleaseNotesCommand : CliktCommand() { results.forEach { result -> processedPrs[result.prId] = result result.notes.forEach { (section, items) -> - allReleaseNotes.getOrPut(section) { mutableListOf() }.addAll(items) + allReleaseNotes + .getOrPut(section) { mutableListOf() } + .addAll(items.filter { it.description.isNotBlank() }) } } @@ -225,7 +227,7 @@ class ExtractReleaseNotesCommand : CliktCommand() { val sectionOrder = listOf("⚠️ Important Changes", "New features", "Bug fixes", "Deprecated API", "Other") val sortedSections = - allReleaseNotes.keys.sortedBy{ sectionKey -> + allReleaseNotes.keys.sortedBy { sectionKey -> sectionOrder.indexOf(sectionKey).takeIf { it >= 0 } ?: Int.MAX_VALUE }