262 - #315
Closed
DetachHead wants to merge 1053 commits into
Closed
Conversation
IJ-MR-184958 IJ-MR-184993 IJ-MR-179029 IJ-MR-184126 IJ-MR-181153 IJ-MR-146078 IJ-MR-175479 IJ-MR-186058 IJ-MR-193195 IJ-MR-196957 IJ-MR-199124 IJ-MR-197441 IJ-MR-204135 IJ-MR-204674 IJ-MR-205883 IJ-MR-208539 GitOrigin-RevId: bd113f901ef5e7abd0f5ccc923807f3069f680ca
IJ-MR-184958 IJ-MR-184993 IJ-MR-179029 IJ-MR-184126 IJ-MR-181153 IJ-MR-146078 IJ-MR-175479 IJ-MR-186058 IJ-MR-193195 IJ-MR-196957 IJ-MR-199124 IJ-MR-197441 IJ-MR-204135 IJ-MR-204674 IJ-MR-205883 IJ-MR-208539 GitOrigin-RevId: f85fe7af527038075bcdaa511a766a88588182a8
Move the remaining Agent Workbench shared libraries, prompt core, and sessions core modules out of the community agent-workbench tree and into the AIR plugin layout. The shared utility modules now live under plugins/air/shared, while prompt and sessions modules are packaged with the rest of AIR. Update module names, package prefixes, plugin descriptors, API dumps, specs, Patronus rules, and generated Bazel/JPS metadata so product packaging and project-structure checks use the AIR locations directly. IJ-MR-184958 IJ-MR-184993 IJ-MR-179029 IJ-MR-184126 IJ-MR-181153 IJ-MR-146078 IJ-MR-175479 IJ-MR-186058 IJ-MR-193195 IJ-MR-196957 IJ-MR-199124 IJ-MR-197441 IJ-MR-204135 IJ-MR-204674 IJ-MR-205883 IJ-MR-208539 GitOrigin-RevId: a389389e072d4f58b38cda84156b3e1fbd445ad3
Pi reports live session-id replacement through the authenticated control WebSocket, so AIR must be able to rebind the matching open concrete tab even though no terminal-side /new anchor exists. Add explicit provider-replacement authority to concrete rebind requests instead of overloading restartTerminal=false. The editor rebinder still rejects ordinary unanchored requests and only accepts no-restart provider replacement requests, preserving the anchored Codex path. Cover both sides with coordinator request assertions and a real editor-service PI regression that rejects an unauthorised request before accepting the authorised replacement and persisting the new snapshot. PI keeps the same control socket when /new switches to a fresh persisted session, so the IDE cannot rely on a process relaunch or pending tab anchor to reconnect the tree/editor state. Propagate provider-emitted replacement metadata through session source updates and let the refresh coordinator rebind matching concrete thread-view tabs in place. Concrete tab rebinding can now update presentation and persisted tab snapshots without restarting the terminal when the provider already moved the live session. GitOrigin-RevId: 16b1066cb2de5d69d920d96cc4a2d6f1ba811890
Backport the AIR/Agent Workbench module layout and the direct platform/model pieces needed by the 262 branch. This keeps the AIR runtime, engine transcript projection, thread refresh, AI review, and AI Code Review split modules aligned with the cherry-picked code while avoiding unrelated JLine and Problems View pluginization migrations. Refresh generated project model and plugin-content snapshots so the stable branch builds and product packaging validation reproduce the green state. GitOrigin-RevId: 6cb2917f0175b4d0ee70aec25b69d14523192926
Refresh the editor and platform-lang API dumps for APIs that are already present on the branch. This keeps ApiCheckTest aligned with the actual exported API surface after the AIR backports. GitOrigin-RevId: 1ae3b8a716e36794f7b3c7a01826786f8bd6e4f2
Refresh generated Bazel library metadata after rebasing the AIR backport stack onto the updated 262 branch. This removes a stale generated wrapper no longer present in the JPS model. GitOrigin-RevId: 81b2eeba264aab08e2828cf5fc682086f3854149
Keep the LLM configuration smoke test aligned with the 262 backport state: AIR ACP modules use ACP protocol libraries outside the LLM namespace, AskAI and legacy Claude/minichat modules still exist on 262, and the evaluation plugin LLM tests need to be reachable from the LLM test aggregator. Regenerate Bazel metadata after adding the missing test dependency. IJ-MR-184958 IJ-MR-184993 IJ-MR-179029 IJ-MR-184126 IJ-MR-181153 IJ-MR-146078 IJ-MR-175479 IJ-MR-186058 IJ-MR-193195 IJ-MR-196957 IJ-MR-199124 IJ-MR-197441 IJ-MR-204135 IJ-MR-204674 IJ-MR-205883 IJ-MR-208539 GitOrigin-RevId: 82922be86380c7ae52c3b52b710730bc8dce4b71
…sure fresh package data and prevent stale diagnostics PY-89761 Fix NPE in DeclaredButNotInstalledPackagesChecker when ignoredPackages contains null When PyPackageRequirementsInspection was converted from Java to Kotlin, the @JvmField annotation was missing from the ignoredPackages field. Without it, Kotlin compiles the property to a private backing field, which IntelliJ's XmlSerializer (PropertyCollector, collectPrivateFields=false) cannot discover. As a result, existing inspection profiles were not deserialized correctly, and the backing field could receive null elements from the Java-based XML deserialization layer — triggering NPE in normalizePackageName when the collection was iterated. (cherry picked from commit 12c8fb759c27a870f6e3cea4755e45710b33c454) IJ-MR-212541 GitOrigin-RevId: e2332eb79290b4196671313a9aa59cc14fd39780
…d highlights Merge-request: IJ-MR-212331 Merged-by: Ilia Permiashkin <ilia.permiashkin@jetbrains.com> Merge-request: IJ-MR-212508 Merged-by: Ilia Permiashkin <ilia.permiashkin@jetbrains.com> GitOrigin-RevId: b74f63a5f91e58fcde29610bad229e573397fefd
Merge-request: IJ-MR-212710 Merged-by: Ilia Permiashkin <ilia.permiashkin@jetbrains.com> GitOrigin-RevId: 0c57daaed1cee891845d30a869e63d017fef3d55
#IJPL-248430 Fixed GitOrigin-RevId: 2c533c6a82594504eb22efeb43b5a676e7535598
(cherry picked from commit 3b89838164b80547453374004e93ee5725735ee5) IJ-CR-211425 GitOrigin-RevId: d6c321625ee0d66f61d935081bb49d61ca47e19c
(cherry picked from commit da87b4ee934684138d25d8b2c832fca3a35a8132) IJ-CR-211425 GitOrigin-RevId: 684be65354dd194fa33a6b00589a9e913747e8bc
(cherry picked from commit ed7d8e93a5f21432a17a194d840c5368454f6ad4) IJ-CR-211425 GitOrigin-RevId: ee261abccde4cd22fe6e903dd52a5f3cc39c100a
…s and embedded HTML (cherry picked from commit 14f791adc84b89fda4b206e4b4b70dc5faf42301) IJ-CR-212892 GitOrigin-RevId: 220304f27a34c428ca231f4f060b28731b6b8b92
[pycharm] PY-89746 Add hints test [pycharm] PY-89746 Utilize DependenciesPsiProvider for DependenciesInlayHintsProvider * Rename `DependenciesInspectionProvider` -> `DependenciesPsiProvider`, due to it no longer being used for dependencies only. * Utilize `DependenciesPsiProvider` for `DependenciesInlayHintsProvider`, to make the inlay hint work for all package management files. [pycharm] PY-89694 Fix update to latest quick fix for uv/poetry Merge-request: IJ-MR-212277 Merged-by: David Lysenko <david.lysenko@jetbrains.com> (cherry picked from commit 699d7838c4d6c9c1c179389b13ab4869bc97ee05) IJ-MR-212277 GitOrigin-RevId: d8e46319f6157be54e8546486cce463c7ce99d18
(cherry picked from commit 63a3895f6f79fd0bca194e8fa1b024b613ff6744) IJ-MR-212725 GitOrigin-RevId: 25bb22ba2b9bb1307fddd66b188004883d4faa8c
Add fragmented inline completion rendering over the selected lookup item and wire it into the local FullLine provider. The implementation adds lookup-aware matching, cache keys, insertion behavior, and focused tests for fragment matching, skip offsets, and Rider Lookine lifecycle scenarios. RIDER-132747 fix GitOrigin-RevId: 0cd7f7f948823db15d1a2f250fddf33f7c748527
… allowlist Attacker-controlled Project-URL values (e.g. javascript:) reached HTMLEditorProvider.openEditor unchecked. Gate them once via a private projectUrls + safeProjectUrls getter so navigation and Quick Doc inherit the scheme check. (cherry picked from commit 129ca37e3f26306071dea6ca5a0e12301f29f581) IJ-MR-212873 GitOrigin-RevId: b5daf11e2de8e8cfdc54ad64a91ffc2b8eefb865
The enabled-by-default before-run task was auto-attached to every Python run configuration and serialized into each configuration's XML — even in pure-Python projects with no Rust code. Before-run tasks cannot avoid per-configuration storage, so the auto-build moves to a new internal EP (Pythonid.pyPreLaunchHook) invoked by the launch pipeline itself; the only user-facing control is the existing project-level autoBuildMode setting persisted in workspace.xml. Two call sites cover all four launch paths: PythonCommandLineState .startProcess (Run, pydevd debug, pytest) and PythonDebugpyBackendRunner (debugpy/DAP bypasses startProcess; hooks run on a background thread before the session starts on EDT, preserving ClientId). The before-run task provider stays registered as a deserialization sink: its null createTask makes RunManager silently drop the stale Pyo3RustAutoBuildBeforeRun entries written by 2026.2 EAP on project load and keeps the step out of templates and the before-launch UI. The attach migration is deleted. The sink is safe to remove after 2026.3. Merge-request: IJ-MR-212662 Merged-by: Vladimir Koshelev <Vladimir.Koshelev@jetbrains.com> (cherry picked from commit 8c7abd6edb39be5744f14190dea2adfe17c42806) IJ-CR-212801 GitOrigin-RevId: 84e902268ffcf388a2ff2488f2ebe3887546a02d
…in a second. (cherry picked from commit bb850b53033a1ad225c205db0c4b79bbef83f6fb) IJ-CR-212809 GitOrigin-RevId: 71233459c3d1ddd23603fbc1e6e9b379d05d9522
IJ-CR-211494 GitOrigin-RevId: cae07989948d756d34c93b582ba13eee03e5d726
IJ-CR-211494 GitOrigin-RevId: 25070f42e1b4a12debf08b0c02e6ba6629be2b15
IJ-CR-211494 GitOrigin-RevId: b1c45bc1bd0430b8f19cbe1b5c472f3ac2274045
…import path is null QualifiedNameFinder.findCanonicalImportPath is @nullable and returns null when the canonical import path of a stdlib symbol cannot be computed. The result was passed unchecked into getStdlibUrlFor -> webPageName, which dereferenced it via moduleName.toString(), throwing an NPE (reported by 78 users across IDEA/PyCharm). Return null (no external documentation URL) when the canonical import path is null, matching getExternalDocumentationUrl's existing contract of returning null when a stdlib URL cannot be produced. M-Session-Id: M-df4ac50c-7bbe-4d7a-954f-86a831b737cc (cherry picked from commit f3e9c0ae17b4b44e489029e4ce7a1c56e7f844e7) IJ-MR-212591 GitOrigin-RevId: 27792658ffdfb4b26ba7335066b8bf07419ea314
…s for incomplete augmented assignment getArguments dereferenced `value!!`, which threw a NullPointerException when an augmented assignment had no right-hand side (incomplete code such as `n +=`). During code analysis the type checker inspection evaluates such statements, so the crash surfaced widely (363 reports across IDEA/PyCharm/JetBrainsClient). Mirror PyAstBinaryExpression.getArguments, which already handles a missing operand via ContainerUtil.createMaybeSingletonList, and return an empty list (idiomatic Kotlin `listOfNotNull`) instead of throwing. The downstream argument-mapping code already tolerates an empty argument list (binary expressions with a missing operand produce one). Add a regression test to Py3TypeCheckerInspectionTest. M-Session-Id: M-693fd639-7692-4411-9c15-138ade9bcd22 (cherry picked from commit 670675aaf9b5aaeb7ace2b7a16db47e8fb7b4fed) IJ-MR-212498 GitOrigin-RevId: d55d80e16df8fb8b8b1e4dbbc9f1f24499125acd
…t events (cherry picked from commit 5b2da1f0c2b64ae0a4eb9e8c86cee0c8e8c71ddc) IJ-MR-213040 GitOrigin-RevId: 7b6ce45acb64aeb6b66120b3613c583fa1a41e56
^KTIJ-39395 fixed (cherry picked from commit 1f044e919c7c6a57bbb95bc072f46808d713d84c) IJ-CR-212602 GitOrigin-RevId: b7ad5aff7c58c542232179517dac2b9de1575591
… in case of ambiguity return the smallest overload GitOrigin-RevId: 663b9d37f5082f8c70317d75eb06d2ac52ef7bd7
…client The problem was in the incorrect socket symlink format we receive from the Linux host on Windows. The roots go deep into details how Unix paths are represented on Windows via EEL API: IJPL-213371. Fix it by mapping the incorrect file path back to the Linux representation. (cherry picked from commit 7411b02732b0aec6d6a5890ebb7e307024ec24a9) IJ-CR-213436 GitOrigin-RevId: a762373d03c956ef970de00af406f4df6ebacb20
It is a better solution that doesn't use internal path translations like `ijentToLocal` - EelPath is expected to contain the original path with correct characters. (cherry picked from commit a73b34075457f3f6dee27469535f24e19252d8f5) IJ-CR-213436 GitOrigin-RevId: a14cdf91e9cae7bffa7e6ab861d8a6190302a426
…c type alias A parameterized generic type alias whose value is `type[T]` (e.g. `Alias = type[T]`) lost the class-object wrapper during type-variable substitution: `Alias[int]` was inferred as `int` instead of `type[int]`, and call inference through such an alias bound the type variable to the whole `type[...]`. `type[T]` is represented as a definition-form type variable, but PyTypeChecker.substitute returned the matched substitution in instance form. Re-apply the class-object form when the substituted type variable is a definition. (cherry picked from commit 980090804b53aa52f6688912927e9a38208b7884) GitOrigin-RevId: 96874455827baba6fdbafea06d7cdb87a018898a
…itions in a type alias A type variable used both as a value (`T`) and as a class object (`type[T]`) was collected twice — in instance and definition form — so a parameterized generic type alias such as `Union[Role[T], type[T]]` appeared to have two type parameters. Subscripting it with a single argument mapped the surplus parameter to Any, which collapsed the `type[T]` arm and left the type variable unbound: e.g. `select(Model)` was inferred as `Select[tuple[Any]]` instead of `Select[tuple[Model]]`, losing element types (and completion) on query results. Normalize type variables to their instance form when counting a generic type's parameters in PyTypeChecker.parameterizeType, so the same variable is counted once. (cherry picked from commit 5ae8e727eef7168caafa269dc5fd64c0a38f36f8) GitOrigin-RevId: f7c58e89e561d1cbc70bee22821b7e62272fd545
…ator (cherry picked from commit 11725b2cbd96eb0d8074f85f4b4cc700a552f6bf) GitOrigin-RevId: cb38b7a3b094498d94b044f9369889dbb87b9066
A generic descriptor used as a decorator did not bind its type parameter from the decorated function, so instance access yielded the unbound type variable (or the wrapped function) instead of the value type. (cherry picked from commit bea29363527746251dc39a8f0d430c468796bd9a) GitOrigin-RevId: a361e87ab1f3c0ca57f745ce17aee55d979c36e3
When a generic decorator's expected parameter type is a free type variable, bind it by matching the decorator's return type against the type the surrounding decorators expect of its result, flowing the constraint inward through the chain (cherry picked from commit 6afb2e27cd84fe39d5f7fe8addf998a7c9fa422f) GitOrigin-RevId: dc3214b4dd6e77cdc96f9f589626ef8558015fea
(cherry picked from commit 6e762349fa759960d620d720b64c1daadd03ecde) GitOrigin-RevId: f32f34da2124b388f31f01a21cfcc52b90c1c1b9
(cherry picked from commit fb9d4793d2309192ff479af9973b7e97f74c12ab) GitOrigin-RevId: 74ba94b675a740cfee66c14e3b1ff8dcb92396ca
(cherry picked from commit f8851506317da03b6610c1f5f061b860107b30b2) GitOrigin-RevId: a58923c450d1810a3af02c2d6b92cbc9633c4f2f
(cherry picked from commit 1ffc67ca7831a7698161e2c51f1eaae4b1904777) GitOrigin-RevId: 5c19025f4a979cca31c45e042fe240eec57da594
PY-89838 Python Packages Tool Window redesign Remove unused packaging-related classes and redesign PPTW, Interpreter settings and Repository settings PY-88291 (WIP): Move hatch and poetry additional data to hatch and poetry modules to make it acessible outside of `community.impl` PY-88291 (WIP): Move `UvAdditionalData` to uv module to make it acessible outside of `community.impl` GitOrigin-RevId: bf795344c918e44208f7c02f2eb58246cf9f578b
…mode It is not required in this case, and also it is not possible - we don't have a connection to the backend to get the settings. (cherry picked from commit 58911a63531bcbf6dd8164ebfc76efb70e1e4506) IJ-CR-210406 GitOrigin-RevId: 80d94510d656faf8524da083f33702c9939c3a10
…en sessions after smart mode enabled in IJ Light When smart mode activates in IJ Light, the thin-client PortForwardingManager implementation replaces the EEL-based impl. Problem is that these implementations are stateful and can't be replaced in a running terminal session. So, we can avoid sudden replacement in 2 ways: 1. Cache the manager in a port forwarding session - so, terminal tabs opened before smart mode, will continue using the EEL-based impl. 2. Try to react on new port forwarding manager loading and move the current state to it. The second is quite complicated, so let's proceed with the first aproach. (cherry picked from commit 3e28e7f3a3f1cf4071dc5f5572c3001682b584c0) IJ-CR-210406 GitOrigin-RevId: e9a7748c8f78c3fe8aadf8693b4489c2502fea37
…anager implementation Use extension point instead of overridable service. (cherry picked from commit 015c826315a1384a2b95bb32371d72c2e9d58a19) IJ-CR-210406 GitOrigin-RevId: 2d1153e8f726414d4201d92242047abf5d74a10f
(cherry picked from commit 59599f139207be47e8441da4c1ed2df66da77a98) IJ-CR-214344 GitOrigin-RevId: d4a62e6a1c023e93ddc9a30fa82c84e3cc09094d
Fixed IJPL-249453 GitOrigin-RevId: 635a6c61289a33c60546f4066552ec58ab17dc4f
Use correct comparator for DiscussionIdAndMappedPosition to avoid missing drafts if they are attached to the same line Fixed IJPL-249453 GitOrigin-RevId: 9a48e9c9b10c9dde4e8db3a0ff47ecd00a5110d2
Two-sided comments (starts on one side, ends on another) should be visible in side-by-side diff on their end side to avoid missing comments and stucking during navigation by comments. Fixed IJPL-249453 GitOrigin-RevId: 01c24b238c5f37646e5fcd7127af651149d4a268
(cherry picked from commit 1b361710f57c5f33773cb5a8b0f6ba3b159e37ca) IJ-CR-214363 GitOrigin-RevId: c64d8fcaa2f40d5ec2df2c7065d0f0baa2dceee6
(cherry picked from commit 3e6223ea105758dd9d5bbfa3171eae9624362c3d) IJ-CR-214363 GitOrigin-RevId: 275fb88e3bd294cc5758904c08a63dbb1347dce8
(cherry picked from commit ae9680405704e68b37db25e2e2196c0feb1886a9) IJ-CR-214363 GitOrigin-RevId: 22e25531d545e3d41cf21de558cf5807e2c076b2
(cherry picked from commit e039ec22eafbffa277a650e3f9a3279ab7ceedf4) IJ-CR-214363 GitOrigin-RevId: 5b419d0e5222c1c86cb5615c7826e217a558a878
Initial idea of this change was to report the cursor position only when it is visible to protect from cursor position flickering when applications hide it for a moment to do some screen change. But the problem is that some applications may hide the cursor right from the start, so our UI logic doesn't receive the correct cursor position, so we can show composed text from input methods in the incorrect position. (cherry picked from commit 6f343aef47a5a9fb5b3fd9d6f5bf7ca7d04f40bf) IJ-CR-214329 GitOrigin-RevId: ec23dc959c62e6383c8cb5378b4dec3ac5c83541
(cherry picked from commit f29055b2e608becdcd5336e108de09233cefcce1) IJ-CR-213927 GitOrigin-RevId: 90162ff38260ef69e07d9eb97870dcaffacfcbf4
# Conflicts: # .github/workflows/jewel-checks.yml # .idea/modules.xml # BUILD.bazel # build/src/org/jetbrains/intellij/build/RebasedProperties.kt # images/resources/META-INF/plugin.xml # intellij.idea.community.main.tests.iml # lib/BUILD.bazel # lib/MODULE.bazel # platform/external-system-api/dependency-updater/BUILD.bazel # platform/platform-impl/src/com/intellij/ide/actions/CloseAllEditorsAction.java # platform/platform-impl/src/com/intellij/ide/actions/CloseEditorsActionBase.java # platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorEmptyTextPainter.java # platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.kt # plugins/compose/intellij.compose.ide.plugin.k2/BUILD.bazel # plugins/compose/intellij.compose.ide.plugin.resources/BUILD.bazel # plugins/compose/intellij.compose.ide.plugin.shared/BUILD.bazel # plugins/gradle/BUILD.bazel # plugins/gradle/completion/kotlin/tests/BUILD.bazel # plugins/gradle/gradle-declarative-sync/BUILD.bazel # plugins/gradle/java/BUILD.bazel # plugins/kotlin/base/fir/analysis-api-platform/BUILD.bazel # plugins/kotlin/base/fir/project-structure/BUILD.bazel # plugins/kotlin/code-insight/fixes-k2/tests/BUILD.bazel # plugins/kotlin/code-insight/inspections-k2/tests/BUILD.bazel # plugins/kotlin/code-insight/intentions-k2/tests/BUILD.bazel # plugins/kotlin/compiler-plugins/parcelize/tests/k2/BUILD.bazel # plugins/kotlin/fir/tests/BUILD.bazel # plugins/kotlin/gradle/gradle-java/k2/BUILD.bazel # plugins/kotlin/gradle/gradle-java/tests.shared/BUILD.bazel # plugins/kotlin/gradle/gradle/tests/BUILD.bazel # plugins/kotlin/gradle/multiplatform-tests-k2/BUILD.bazel # plugins/kotlin/gradle/scripting/kotlin.gradle.scripting.k2/BUILD.bazel # plugins/kotlin/grazie/intellij.kotlin.grazie.tests/BUILD.bazel # plugins/kotlin/injection/k2/tests/BUILD.bazel # plugins/kotlin/j2k/k2/tests/BUILD.bazel # plugins/kotlin/jvm-debugger/test/compose/BUILD.bazel # plugins/kotlin/jvm-debugger/test/compose/intellij.kotlin.jvm.debugger.test.compose.iml # plugins/kotlin/navigation/tests/BUILD.bazel # plugins/kotlin/project-wizard/tests/BUILD.bazel # plugins/kotlin/refactorings/kotlin.refactorings.tests.k2/BUILD.bazel # plugins/kotlin/util/test-generator-fir/BUILD.bazel
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.