mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[JEWEL-1411] Prepare release notes for Jewel 0.41
(cherry picked from commit 3393c897951c96a970a6765a86af56bc9fa6e9f0) IJ-MR-220560 GitOrigin-RevId: 6730bd969c7434e77511b639755aad3a8ae99e64
This commit is contained in:
committed by
intellij-monorepo-bot
parent
95fee5f88b
commit
281dbbc92d
@@ -1,5 +1,157 @@
|
||||
# Jewel Release Notes
|
||||
|
||||
## v0.41 (2026-09-15)
|
||||
|
||||
| Min supported IJP versions | Compose Multiplatform version |
|
||||
|----------------------------|-------------------------------|
|
||||
| 2026.2.3 | 1.12.0 |
|
||||
|
||||
Note that packaged Jewel Standalone apps can crash with `NoSuchMethodError: kotlinx.coroutines.BuildersKt.runBlockingK$default`
|
||||
if you compile against coroutines 1.11.0 or newer, because the Icons API modules pull in the IntelliJ Platform fork of
|
||||
`kotlinx-coroutines-core`. We're working with IJPL on a fix. Workaround until that is fixed upstream:
|
||||
|
||||
```kotlin
|
||||
dependencies {
|
||||
modules {
|
||||
module("org.jetbrains.intellij.deps.kotlinx:kotlinx-coroutines-core-jvm") {
|
||||
replacedBy("org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm", "The IJP fork lags upstream")
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### ⚠️ Important Changes
|
||||
|
||||
* **[JEWEL-1413](https://youtrack.jetbrains.com/issue/JEWEL-1413)** Jewel now builds against **Compose Multiplatform
|
||||
1.12.0** ([#3631](https://github.com/JetBrains/intellij-community/pull/3631))
|
||||
* **[JEWEL-1277](https://youtrack.jetbrains.com/issue/JEWEL-1277)** `TableBlock`, `TableRow`, `TableHeader`, and
|
||||
`TableCell` are now correctly annotated as experimental ([#3556](https://github.com/JetBrains/intellij-community/pull/3556))
|
||||
* **[JEWEL-1322](https://youtrack.jetbrains.com/issue/JEWEL-1322)** the `Markdown` composable now takes its default block
|
||||
renderer from `LocalMarkdownBlockRenderer` instead of creating a plain renderer with no extensions, and the block renderer
|
||||
is the single source of Markdown styling, including the spacing between blocks. ([#3591](https://github.com/JetBrains/intellij-community/pull/3591))
|
||||
* If you call `Markdown()` outside `ProvideMarkdownStyling` and relied on the old implicit default, it might now error out
|
||||
as it should have done from the beginning. To fix it, wrap the call in `ProvideMarkdownStyling` or pass a `blockRenderer`
|
||||
explicitly.
|
||||
* **[JEWEL-1323](https://youtrack.jetbrains.com/issue/JEWEL-1323)** Restored the deprecated APIs that were accidentally
|
||||
removed in 0.40. This broke binary compatibility for plugins already compiled against 0.39 or 0.40 — we are deeply
|
||||
sorry about this. We will remove them (and other long-deprecated APIs) definitively in 0.42, which will be the first
|
||||
Jewel release targeting exclusively the 2026.3 IJPL.
|
||||
* In the future, deprecated APIs will only be removed in Jewel versions targeting a new major IJPL, and only while it
|
||||
is in EAP. There will be no breaking API changes on Jewel versions landing in IJPL Beta, RC, or Stable versions.
|
||||
* That was already our policy, but due to a huge backlog in shippable PRs built since the beginning of 2026 due to
|
||||
various issues with the JetBrains infrastructure and a few organisational hurdles, it was shipped at the wrong time
|
||||
and cherry-picked into a Jewel version meant for a stable IJPL version. That was a mistake and we're trying to
|
||||
improve our processes to avoid this happening again.
|
||||
* The [readme](README.md) has also been updated to reflect the current policy and stability guarantees.
|
||||
* **[JEWEL-1396](https://youtrack.jetbrains.com/issue/JEWEL-1396)** Custom popup renderers now honor
|
||||
`PopupProperties.dismissOnBackPress`, which they previously ignored
|
||||
([#3622](https://github.com/JetBrains/intellij-community/pull/3622))
|
||||
* This only impacts users with the native popups flag enabled in `JewelFlags` (off by default)
|
||||
* A popup that sets it to `false` is no longer dismissed by Escape, and no longer consumes the key unless it is
|
||||
focusable.
|
||||
* Popups that relied on the previous unconditional Escape dismissal should set it explicitly.
|
||||
* **[JEWEL-1404](https://youtrack.jetbrains.com/issue/JEWEL-1404)** `ImageSourceResolver.ResolveCapability.AbsolutePath`
|
||||
and `RelativePath` now return `null` when a destination can't be parsed as a path, rather than letting
|
||||
`InvalidPathException` escape `resolve()`. ([#3624](https://github.com/JetBrains/intellij-community/pull/3624))
|
||||
* When available, now a failing resolution falls through to the next available capability in the chain.
|
||||
|
||||
### New features
|
||||
|
||||
* **[JEWEL-1050](https://youtrack.jetbrains.com/issue/JEWEL-1050)** Added `grayOrDefault`, `blueOrDefault`,
|
||||
`greenOrDefault`, `redOrDefault`, `yellowOrDefault`, `orangeOrDefault`, `purpleOrDefault`, and `tealOrDefault`
|
||||
accessors to `ThemeColorPalette`. They fall back to Jewel's built-in default palette when the current Look and Feel
|
||||
provides no color for the requested index, so third-party or incomplete themes no longer need their own copy of the
|
||||
default values just to get a sensible fallback. ([#3592](https://github.com/JetBrains/intellij-community/pull/3592))
|
||||
* **[JEWEL-1050](https://youtrack.jetbrains.com/issue/JEWEL-1050)** `ThemeColorPalette.isIslands` is now public, so you
|
||||
can tell whether a palette uses the Islands color key format ([#3592](https://github.com/JetBrains/intellij-community/pull/3592))
|
||||
* **[JEWEL-1150](https://youtrack.jetbrains.com/issue/JEWEL-1150)** Added the `GotItTooltip` component: a balloon popup
|
||||
with a rich body DSL (text, link, and shortcut segments), an optional header, primary and secondary buttons, a step
|
||||
indicator, timeout auto-dismiss, and keyboard escape support. ([#3451](https://github.com/JetBrains/intellij-community/pull/3451))
|
||||
* See the Jewel component showcase for the available customizations
|
||||
* **[JEWEL-1239](https://youtrack.jetbrains.com/issue/JEWEL-1239)** Markdown images that fail to load now render as
|
||||
clickable hyperlinks instead of falling back to raw Markdown syntax.
|
||||
([#3579](https://github.com/JetBrains/intellij-community/pull/3579))
|
||||
* **[JEWEL-1277](https://youtrack.jetbrains.com/issue/JEWEL-1277)** Added YAML front matter support for Markdown
|
||||
documents; front matter renders as a key-value table. ([#3556](https://github.com/JetBrains/intellij-community/pull/3556))
|
||||
* Note that nested tables are not supported yet.
|
||||
* If you notice issues with front matter parsing or rendering do let us know by filing an issue.
|
||||
* **[JEWEL-1313](https://youtrack.jetbrains.com/issue/JEWEL-1313)**, **[JEWEL-1391](https://youtrack.jetbrains.com/issue/JEWEL-1391)**
|
||||
in standalone, `ProvideMarkdownStyling` now defaults to `SimpleCodeHighlighter` instead of `NoOpCodeHighlighter`, so
|
||||
fenced code blocks are highlighted automatically. ([#3503](https://github.com/JetBrains/intellij-community/pull/3503),
|
||||
[#3617](https://github.com/JetBrains/intellij-community/pull/3617))
|
||||
* Supported languages: Kotlin, Java, C, CSS, HTML, JavaScript, JSX, JSON, Python, Shell, SQL and YAML — request more by
|
||||
filing a feature request on [YouTrack](https://youtrack.jetbrains.com), project `JEWEL`.
|
||||
* Pass an explicit `codeHighlighter` to opt out or to substitute another implementation.
|
||||
* Bridge implementation was already using the IDE's syntax highlight machinery, nothing changes there.
|
||||
* Custom grammars can be supplied through `additionalGrammars`, which are searched before the built-in
|
||||
ones and can therefore override them
|
||||
* **[JEWEL-1345](https://youtrack.jetbrains.com/issue/JEWEL-1345)** Custom Markdown block renderers can now override
|
||||
attributed HTML-block rendering through `RenderHtmlBlockWithAttributes`, and image-only paragraph rendering through
|
||||
`RenderImagesOnlyParagraph` ([#3547](https://github.com/JetBrains/intellij-community/pull/3547))
|
||||
|
||||
### Bug fixes
|
||||
|
||||
* **[JEWEL-1050](https://youtrack.jetbrains.com/issue/JEWEL-1050)** Fixed an issue looking up an entry in the LaF palette
|
||||
with a gap in the middle of its color sequence (for example, declaring `Gray1` and `Gray3` but not `Gray2`); it would
|
||||
return the wrong color for the missing index instead of falling back to a sensible default
|
||||
([#3592](https://github.com/JetBrains/intellij-community/pull/3592))
|
||||
* **[JEWEL-1193](https://youtrack.jetbrains.com/issue/JEWEL-1193)** Hoverable components without a dedicated active
|
||||
color now show their hover appearance correctly; a hovered but unfocused component used to fall back to its active
|
||||
appearance ([#3416](https://github.com/JetBrains/intellij-community/pull/3416))
|
||||
* **[JEWEL-1322](https://youtrack.jetbrains.com/issue/JEWEL-1322)** Bridge Markdown table stripes and alert colors now
|
||||
follow IDE theme switches instead of staying on the theme that the IDE/app started with
|
||||
([#3591](https://github.com/JetBrains/intellij-community/pull/3591))
|
||||
* **[JEWEL-1369](https://youtrack.jetbrains.com/issue/JEWEL-1369)** Fixed icon stroking rendering incorrectly: icons
|
||||
drawn from filled shapes were blanked out entirely, icons authored with `stroke` rather than `fill` were left in their
|
||||
authored gray, and stroking was silently skipped for icons carrying no explicit SVG patcher. Stroking now recolors
|
||||
both the `fill` and the `stroke` attribute, matches palette colors case-insensitively (including keyword spellings
|
||||
such as `black`), and renders identically in the Swing and Compose frontends
|
||||
([#3585](https://github.com/JetBrains/intellij-community/pull/3585))
|
||||
* **[JEWEL-1370](https://youtrack.jetbrains.com/issue/JEWEL-1370)** Writing a color into a color attribute from an
|
||||
`SvgPatcher` now also normalizes the paired opacity attribute — `fill-opacity` for `fill`, and likewise for `stroke`,
|
||||
`stop-color`, and `flood-color`: the written color's alpha moves onto it, and it is removed when that color is opaque.
|
||||
([#3588](https://github.com/JetBrains/intellij-community/pull/3588))
|
||||
* Custom patchers that relied on the document's authored opacity surviving will see it replaced.
|
||||
* This aligns the behaviour to the IntelliJ Platform's SVG patcher.
|
||||
* **[JEWEL-1370](https://youtrack.jetbrains.com/issue/JEWEL-1370)** Stroked icons rendered through the new
|
||||
cross-frontend icons API now behave like the legacy `IconLoader` path: icons shipping a hand-authored `_stroke.svg`
|
||||
variant are resolved and recolored in the Compose frontend too, a shape's authored `fill-opacity` or `stroke-opacity`
|
||||
no longer shades the stroke color, a translucent stroke color is no longer written into `fill` or `stroke` as
|
||||
`#RRGGBBAA`, and three-digit shorthands such as `#fff` now match the stroke palette
|
||||
([#3588](https://github.com/JetBrains/intellij-community/pull/3588))
|
||||
* **[JEWEL-1387](https://youtrack.jetbrains.com/issue/JEWEL-1387)** Fixed native macOS window-chrome color and
|
||||
full-screen-button updates for standalone Jewel applications running on JBR 25
|
||||
([#3598](https://github.com/JetBrains/intellij-community/pull/3598))
|
||||
* **[JEWEL-1388](https://youtrack.jetbrains.com/issue/JEWEL-1388)** The native macOS window handle is now resolved
|
||||
through Compose's `ComposeWindow.windowHandle` instead of `sun.misc.Unsafe` and reflection into the JDK-internal
|
||||
`sun.awt` and `sun.lwawt.macosx` classes ([#3604](https://github.com/JetBrains/intellij-community/pull/3604))
|
||||
* This resolves warnings about terminally-deprecated API usage when running on JBR 25
|
||||
* **[JEWEL-1389](https://youtrack.jetbrains.com/issue/JEWEL-1389)** Removed unnecessary redraws in
|
||||
`CircularProgressIndicator` ([#3599](https://github.com/JetBrains/intellij-community/pull/3599))
|
||||
* **[JEWEL-1396](https://youtrack.jetbrains.com/issue/JEWEL-1396)** The first Escape press in a speed-searchable
|
||||
ComboBox now clears the speed-search query, and the second closes the popup, matching IJPL's Swing behaviour
|
||||
([#3610](https://github.com/JetBrains/intellij-community/pull/3610))
|
||||
* **[JEWEL-1396](https://youtrack.jetbrains.com/issue/JEWEL-1396)** Standalone custom popups route Escape key to the
|
||||
appropriate popup renderer, preserving focusable menu behavior and preventing Escape from leaking to host dialogs
|
||||
([#3610](https://github.com/JetBrains/intellij-community/pull/3610))
|
||||
* **[JEWEL-1396](https://youtrack.jetbrains.com/issue/JEWEL-1396)** Fixed Escape not closing a `ComboBox` or
|
||||
`EditableComboBox` popup while the pointer was over the component; the key was also swallowed, so it could not
|
||||
reach the surrounding dialog ([#3622](https://github.com/JetBrains/intellij-community/pull/3622))
|
||||
* **[JEWEL-1396](https://youtrack.jetbrains.com/issue/JEWEL-1396)** Fixed `GotItTooltip` not closing on Escape in the
|
||||
IDE, where the key was consumed by the popup renderer before the tooltip's own handler could run
|
||||
([#3622](https://github.com/JetBrains/intellij-community/pull/3622))
|
||||
* **[JEWEL-1404](https://youtrack.jetbrains.com/issue/JEWEL-1404)** The IDE theme bridge no longer swallows
|
||||
`ProcessCanceledException` while retrying to read theme data ([#3624](https://github.com/JetBrains/intellij-community/pull/3624))
|
||||
|
||||
### Deprecated API
|
||||
|
||||
* **[JEWEL-1239](https://youtrack.jetbrains.com/issue/JEWEL-1239)** Deprecated
|
||||
`ImageRendererExtension.renderImageContent`; use `renderImage` instead, which provides explicit loading, success, and
|
||||
failed states ([#3579](https://github.com/JetBrains/intellij-community/pull/3579))
|
||||
* **[JEWEL-1322](https://youtrack.jetbrains.com/issue/JEWEL-1322)** Deprecated the `markdownStyling` parameter on
|
||||
`Markdown` and `LazyMarkdown`; pass a `MarkdownBlockRenderer` that already carries the styling instead, normally
|
||||
through `ProvideMarkdownStyling` ([#3591](https://github.com/JetBrains/intellij-community/pull/3591))
|
||||
|
||||
## v0.40 (2026-08-11)
|
||||
|
||||
| Min supported IJP versions | Compose Multiplatform version |
|
||||
|
||||
Reference in New Issue
Block a user