Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
665 commits
Select commit Hold shift + click to select a range
cf465e1
IJPL-246329 prevent Codex sessions from auto-archiving on close
develar Jun 27, 2026
851b820
IJPL-248623 fix stale Codex activity counters
develar Jun 27, 2026
3f907ec
IJPL-248623 harden session source update events
develar Jun 27, 2026
b9e8b76
IJPL-248623 confirm closing running agent chats
develar Jun 27, 2026
4c632b9
IJPL-248623 simplify prompt launch settings control
develar Jun 27, 2026
fe58f73
IJPL-248623 improve deferred new-thread progress UI
develar Jun 27, 2026
70b5ca6
IJPL-248623 remove stale Codex rebind hints
develar Jun 27, 2026
809b625
IJPL-248623 clarify prompt launch settings defaults
develar Jun 27, 2026
06a9fe0
IJPL-248623 support pinned editor tabs in agent sessions
develar Jun 27, 2026
e327218
IJPL-248623 clear done status after chat focus loss
develar Jun 27, 2026
2678959
IJPL-248623 drop awb exp site
develar Jun 27, 2026
308ca18
IJPL-248623 Rebalance prompt composer tray controls
develar Jun 27, 2026
bee1a76
IJPL-248623 stabilize current project Agent Threads layout
develar Jun 27, 2026
f74cc5d
IJPL-248623 simplify agent session source API
develar Jun 27, 2026
8989c13
IJPL-248623 keep scoped Agent Threads rows flat
develar Jun 27, 2026
77c3894
IJPL-248623 Keep inline prompt input visible with context
develar Jun 27, 2026
f6b4fcf
IJPL-248623 verify Codex theme colors in real TUI
develar Jun 27, 2026
6932412
IJPL-248623 render prompt context as attachments
develar Jun 27, 2026
3c2dec5
IJPL-248623 open Agent Workbench tree popup from full row
develar Jun 27, 2026
8cdc503
IJPL-248623 align prompt composer content lane
develar Jun 27, 2026
1f619fb
IJPL-248623 shorten commit context chip title
develar Jun 27, 2026
76b7fcc
IJPL-248623 Fix flat pinned section rendering
develar Jun 27, 2026
4041a3c
IJPL-248623 simplify prompt composer layout
develar Jun 27, 2026
aea74c7
IJPL-248623 compact prompt context chips
develar Jun 27, 2026
66048b4
IJPL-248623 make active thread watch restarts deterministic
develar Jun 27, 2026
bc44452
IJPL-248623 document prompt composer model
develar Jun 27, 2026
03a94a2
IJPL-248623 simplify active thread watch requests
develar Jun 27, 2026
0387b74
IJPL-248623 compact prompt context chips (take 2)
develar Jun 28, 2026
e98f3d5
IJPL-246329 fix platform test compilation on 262
develar Jun 28, 2026
a75a3ff
IJPL-248623 docs agent-workbench: require spec impact review
IvanPashchenko May 27, 2026
6d43496
IJPL-241633 split Bazel project identity from session cwd
IvanPashchenko May 27, 2026
7653a8a
IJPL-248623 Use compact Plan mode header toggle
develar Jun 28, 2026
a3dae3a
IJPL-248623 add task folders to agent sessions
develar Jun 28, 2026
07f3a3d
IJPL-248623 preserve project directory for refresh hint rebinds
develar Jun 28, 2026
675370c
IJPL-248623 avoid leaking prompt editor UI
develar Jun 28, 2026
4397fdd
IJPL-248623 allow dropping threads into task folders
develar Jun 28, 2026
c94b55f
IJPL-248623 align agent sessions popup test with task folder actions
develar Jun 28, 2026
58dde4f
IJPL-248623 Avoid bold text in new-thread loading state
develar Jun 28, 2026
ec75dca
IJPL-248623 preserve attention for provisional activity updates
develar Jun 28, 2026
c21848d
IJPL-248623 decouple task folder identity from project paths
develar Jun 28, 2026
d1a7ce5
IJPL-241597 LSP: actually include lsp modules in Community build
tomblachut Jun 29, 2026
6ce902d
LLM-27149 [chat, jcp] fix done block for remote agents
Jun 26, 2026
b09cb30
PY-87879 `getQualifiedName`: include "builtins." for members from `bu…
Jun 11, 2026
009763a
Rename .java to .kt
Jun 16, 2026
4445374
refactor python: `PyInspectionVisitor` j2k
Jun 16, 2026
6a5d0fb
PY-90264 inspections: fully render names and types with links in insp…
Jun 13, 2026
cea72b4
misc platform: run `ElementLinkHandler` as non-blocking
Jun 13, 2026
ef021fd
IJPL-247030 Extend StatusBarWidgetClicked with input event and make s…
dmitrii-drobotov Jun 26, 2026
f528d00
IJPL-247634 get path to ijent binary from the ijent itself
mburyakov Jun 17, 2026
5b38864
[settings] IJPL-248274 acquire write-intent lock in SettingsNonModalD…
SiERic Jun 25, 2026
4146139
[settings] IJPL-248274 fix read-access threading violations in FileEn…
SiERic Jun 25, 2026
1caf03a
[settings] IJPL-246989 fix read-access threading violations in FileTe…
SiERic Jun 25, 2026
7de26c2
[settings] IJPL-248030 fix spurious "unsaved settings" popup after Ap…
SiERic Jun 25, 2026
63161a7
[settings] IJPL-247369 Adjust text for the "unsaved settings" alerts …
SiERic Jun 26, 2026
3296d66
[settings] IJPL-248672 fix AssertionError when navigating Settings tr…
SiERic Jun 28, 2026
f7cf45e
[threading] IJPL-242053: Do not forbid read lock in switcher initiali…
knisht Jun 29, 2026
44c0ea3
[rider][dfa] Fixed RIDER-139925. WithAttributesPresentation stopped w…
eterekhin Jun 17, 2026
19c8b1a
IDEA-390821: fix terminal closed bnecause of race condition in maven 4
zulkar Jun 26, 2026
183d45e
IDEA-390821: fix AbstractMethodError for maven 4.0.0 snapshots
zulkar Jun 26, 2026
0ba770a
IJPL-221382 High Contrast theme doesn't support islands
alexander-lobas Jun 23, 2026
51cb8e0
IJPL-221382 High Contrast theme doesn't support islands
alexander-lobas Jun 24, 2026
e141cb4
IJPL-221382 High Contrast theme doesn't support islands
alexander-lobas Jun 25, 2026
23432b9
IJPL-221382 High Contrast theme doesn't support islands
alexander-lobas Jun 26, 2026
c7faf46
IJPL-221382 High Contrast theme doesn't support islands
alexander-lobas Jun 29, 2026
d23e3c6
IJPL-248390 EelExecApiEnvironmentVariableCache doesn't cache results …
mburyakov Jun 25, 2026
9cc0339
[threading] IJPL-248255: Use less strict dispatcher for updating comp…
knisht Jun 26, 2026
8dfed2c
[threading] IJPL-237573: Do not forbid read lock for focusing editor …
knisht Jun 29, 2026
c902257
IJPL-248747 Remove ApiStatus.Internal for ProgressModel
chashnikov Jun 29, 2026
9b4885f
IJPL-248420 build scripts: take content of the core plugin descriptor…
chashnikov Jun 26, 2026
847c2bd
PY-90309 [debugger]: enable no-restart justMyCode debugger setting vi…
nomorehumor Jun 29, 2026
efed0ae
KMT-2403 [android] Merge AS Panda 1 2025.3.2 — sync `com.android.tool…
May 21, 2026
1254525
KMT-2403 [android] Merge AS Panda 1 2025.3.2 — sync `org.jetbrains.in…
May 21, 2026
245b474
FUS-8142 FUS-8176 [fus]: auto-update bundled metadata
Jun 29, 2026
7b6afff
FUS-8115 [fus]: auto-update bundled metadata
Jun 29, 2026
d20a4a0
FUS-8168 [fus]: auto-update bundled metadata
Jun 29, 2026
b6a0fce
PY-90540: make `project.name` mandatory in `pyproject.toml`: we do no…
throwable-one Jun 25, 2026
faad8c6
[kotlin] KTIJ-38044 Suggestion reusing existing AddContextParameterFix
Jun 12, 2026
5717c6f
[kotlin] KTIJ-38044 !fixup subclasses for variants, tests and merge
Jun 15, 2026
540e04e
[kotlin] KTIJ-38044 !fixup test data
Jun 19, 2026
54827bf
[kotlin] KTIJ-38044 !fixup compiler arguments in tests
Jun 22, 2026
e49a13d
[kotlin] KTIJ-38044 fix compiler arguments in context parameter tests
Jun 23, 2026
cf32494
[kotlin] KTIJ-39119 position of new context with KDoc
Jun 19, 2026
eaf3cd1
[kotlin] KTIJ-39119 fixup! qualified names
Jun 22, 2026
5456f60
[kotlin] KTIJ-39119 fix psi structure when adding new context paramet…
akozlova Jun 24, 2026
321381d
[kotlin] disable suggestion to add context parameters when the featur…
akozlova Jun 26, 2026
4fd7bf0
[RELEASE-1115] IDEA 2026.2 Beta artworks update
AnnaIvanovaA Jun 29, 2026
92af7cd
IJPL-247155 Preserve Linux accessibility FUS events across restart
tanya011 Jun 25, 2026
1e10abe
misc mcp server: increase client timeout for mcp server tests
batya239 Jun 16, 2026
a266f35
IJPL-247656 Add FUS collector to gather data on agent's attached to M…
batya239 Jun 17, 2026
c65b9e6
IJPL-246061 never add project path as header to project config, use r…
batya239 Jun 17, 2026
d4a2a12
IJPL-246061 MCP Server should provide project bound tools (use sessio…
batya239 Jun 18, 2026
60cc919
IJPL-247656 add one more possible codex client name
batya239 Jun 18, 2026
a48571a
IJPL-247656 Add FUS collector to gather data on agent's attached to M…
batya239 Jun 18, 2026
8ad4ea8
cleanup mcp server: drop unused parameter
batya239 Jun 19, 2026
4414d3b
cleanup mcp server: simplify conditional code
batya239 Jun 20, 2026
2d1fbe7
IJPL-248041 Memory leak via mcp ToolCallDetailPanel (cleanup deadcode)
batya239 Jun 23, 2026
f3e6def
IJPL-248041 Memory leak via mcp ToolCallDetailPanel
batya239 Jun 23, 2026
8ba933e
IJPL-248353 do not auto-open Services tool window on MCP session events
batya239 Jun 24, 2026
ef8e0da
platform: base build number set to 262.8665.SNAPSHOT
Jun 30, 2026
8689d88
FUS-8209 FUS-8211 [fus]: auto-update bundled metadata
Jun 30, 2026
d73e030
FUS-8106 FUS-8184 [fus]: auto-update bundled metadata
Jun 30, 2026
bd99476
[terminal] IJPL-245107 Add additional logging to diagnose the problem
KonstantinHudyakov Jun 29, 2026
691ec7b
KTIJ-38725 IJ-CR-210504 [kotlin] Provide a fix for DESTRUCTURING_SHOR…
vladimirdolzhenko Jun 26, 2026
db55eea
misc [VCS]: Enable `vcs.merge.conflict.iterative.resolution` and `vcs…
dustybluebird Jun 30, 2026
684fed9
PY-90232 [debugger]: show a message suggesting manual session restart…
nomorehumor Jun 26, 2026
7c283c6
IJPL-248502 LSP: Refactor LspDocumentAdapter.accept* API to be more f…
piotrtomiak Jun 25, 2026
0b8dda3
[terminal] IJPL-247542 Refactor: rename TerminalOpeningWay enum
KonstantinHudyakov Jun 22, 2026
42846c0
[terminal] IJPL-247542 Report tab opened FUS event in Reworked Terminal
KonstantinHudyakov Jun 22, 2026
3e2d91f
[terminal] IJPL-247542 Report tab opened FUS event when restoring tab…
KonstantinHudyakov Jun 22, 2026
7c1f124
[terminal] IJPL-247542 Distinguish DnD from IDE and external app in s…
KonstantinHudyakov Jun 22, 2026
50e3e8a
[terminal] IJPL-247542 Refactor TerminalDropData
KonstantinHudyakov Jun 25, 2026
b511471
[terminal] IJPL-247542 Refactor: extract scrolling model change from …
KonstantinHudyakov Jun 25, 2026
351d67a
[terminal] IJPL-247542 TerminalClipboard: do not send empty text
KonstantinHudyakov Jun 25, 2026
2a9f3d2
[terminal] IJPL-247542 Log info about content insertion via DnD and P…
KonstantinHudyakov Jun 25, 2026
41a0039
[terminal] IJPL-247542 Increment FUS group version
KonstantinHudyakov Jun 25, 2026
976f441
[terminal] IJPL-248295 Add new CLI agent commands to FUS allowlist
KonstantinHudyakov Jun 25, 2026
e6f5717
[terminal] IJPL-247542 Report opening way for Select in Terminal and …
KonstantinHudyakov Jun 29, 2026
642365f
[terminal] IJPL-247542 Specify correct opening way when starting sele…
KonstantinHudyakov Jun 29, 2026
48b6877
[vcs/diff]: fix diff header toolbar layout (IJPL-248454)
iasemenov Jun 26, 2026
f9b8dfd
IJPL-248476 fix and simplify JsonLazyParsing enabling
maxmedvedev Jun 24, 2026
af9b365
FUS-8227 FUS-8242 [fus]: auto-update bundled metadata
Jul 1, 2026
6048c55
FUS-8166 FUS-8192 [fus]: auto-update bundled metadata
Jul 1, 2026
652bad2
IJPL-247867 Record event to stats if enabled.screen.reader.support wa…
tanya011 Jun 19, 2026
68c582d
IJPL-247867 Record event to stats if enabled.screen.reader.support wa…
tanya011 Jun 22, 2026
1d7eb33
IJPL-248594 safe fix for bundling lang tool in grazie plugin
develar Jun 29, 2026
39a1189
test [test-framework] new: support flexible test tree assertions
HackerMadCat Jun 17, 2026
e518175
cleanup [build-event]: route file positions through issue event builder
HackerMadCat Jun 17, 2026
90a10dd
cleanup [build-event] MessageEventBuilder: route file positions throu…
HackerMadCat Jun 17, 2026
089f068
IDEA-390415 [gradle] fix: report all resilient model fetch failures
HackerMadCat Jun 17, 2026
0f76751
IDEA-390415 [gradle] cleanup: pass GradleExecutionContext to GradlePr…
HackerMadCat Jun 18, 2026
19874fe
IDEA-390415 [gradle] cleanup Message: replace unused FilePosition wit…
HackerMadCat Jun 19, 2026
c86dad0
IDEA-390415 [gradle] cleanup Message: preserve failure cause chain
HackerMadCat Jun 23, 2026
8993a7c
IDEA-390415 [gradle] cleanup: extract common GradleExecutionFailureHa…
HackerMadCat Jun 18, 2026
9c65bf6
IDEA-390415 [gradle] cleanup: propagate target for model fetch failure
HackerMadCat Jun 19, 2026
7004c9f
PY-90067 don't serialize resolved SDK in console settings
vlegchilkin Jul 1, 2026
b098c0c
PY-90680 expand path macros in test run configuration target
vlegchilkin Jul 1, 2026
ed40f86
FUS-8151 FUS-8169 [fus]: auto-update bundled metadata
Jul 1, 2026
53fa158
FUS-8170 FUS-8173 FUS-8179 FUS-8180 FUS-8203 [fus]: auto-update bundl…
Jul 1, 2026
b240748
FUS-8177 FUS-8224 FUS-8243 [fus]: auto-update bundled metadata
Jul 1, 2026
859aff3
FUS-8220 [fus]: auto-update bundled metadata
Jul 1, 2026
082f512
FUS-8215 [fus]: auto-update bundled metadata
Jul 1, 2026
3821654
PY-90400 don't drop SDK-owned CLASSES roots under a content root
vlegchilkin Jul 2, 2026
3dfa7b7
[github]: Skip loading teams for non-organization repositories
bartekjansz Jun 30, 2026
118c0c9
KTIJ-38748 IJ-CR-210500 [kotlin] Omit unused variables
vladimirdolzhenko Jun 26, 2026
727620f
KTIJ-38748 IJ-CR-210500 [kotlin] Fix omitting unused variables
vladimirdolzhenko Jun 30, 2026
e471b25
IJPL-248275 Make JCEF-dependent content modules optional
develar Jun 24, 2026
7b70988
RUST-20524 Add ability to override creating of test fixture
vlad20012 Jun 7, 2026
e87e219
RUST-20524 Make `DumbModeTestUtils.isEternalDumbTaskRunning()` public…
vlad20012 Jun 18, 2026
77ce04a
[problems-view] IJPL-248970 add more logs to the missing id errors
marinamdrs Jul 1, 2026
e49c897
[problems-view] IJPL-248970 accumulate missing problem id logs in a file
marinamdrs Jul 2, 2026
6f41b33
FUS-8252 [fus]: auto-update bundled metadata
Jul 2, 2026
d50c848
FUS-8130 FUS-8131 [fus]: auto-update bundled metadata
Jul 2, 2026
140112d
FUS-7805 [fus]: auto-update bundled metadata
Jul 2, 2026
6bd4f26
WEB-78521 Kolar: enable Angular code completion tests
piotrtomiak Jul 2, 2026
e39b994
[kotlin] KTIJ-39277 analyze smartCast in separate session
imbananko Jun 23, 2026
d3e88d1
[kotlin] KTIJ-39277 rework analyze smartCast in KotlinTypeDeclaration…
imbananko Jun 28, 2026
471105b
RELEASE-1115: IDEA IC 2026.2 adding RC suffix
kazaryankarina95 Jul 3, 2026
4902f9d
FUS-8103 [fus]: auto-update bundled metadata
Jul 3, 2026
dffd2ea
PY-90540: make `project.name` mandatory in `pyproject.toml`: we do no…
throwable-one Jul 1, 2026
f94806f
IJPL-248591 remote dev: support content modules with additional JARs …
chashnikov Jul 2, 2026
69575b4
IJPL-248591 move swingx library to a separate JAR in the distribution
chashnikov Jul 1, 2026
eb7c159
IJPL-248572 move java-atk-wrapper library to a separate JAR in the di…
chashnikov Jul 2, 2026
fc06355
[settings] IJPL-246768 fix FUS action_id for non-modal settings Pin/U…
SiERic Jun 26, 2026
31c95ec
[settings] IJPL-246768 tag non-modal settings unsaved-changes alert i…
SiERic Jun 26, 2026
e016dc4
[settings] IJPL-246768 restore ui.dialogs show/close FUS events for n…
SiERic Jun 26, 2026
37da8dd
[settings] IJPL-246768 add Settings.Paste action for FUS tracking of …
SiERic Jun 29, 2026
b4427d1
[settings] IJPL-246768 track max simultaneously opened projects per s…
SiERic Jun 29, 2026
42ddf68
PY-35844 [debugpy] Raise on exception with 'Ignore library files'
EliseevEgor Jun 17, 2026
749ebed
IJPL-249029: licensing: Add `JBAccountInfoService` global & org acces…
abusalimov Jul 3, 2026
d2d4aab
IJI-725 [fus]: auto-update bundled metadata
Jul 5, 2026
5f9c16d
IDEA-391121 [spring boot]: NPE in com.intellij.lang.properties.psi.im…
YannCebron Jul 1, 2026
cac1bcf
IJPL-249029: licensing: Reroute deprecated `getAccessToken()` via the…
denzakharov Jul 3, 2026
5eca29c
FUS-8217 [fus]: auto-update bundled metadata
Jul 6, 2026
2f20e99
GO-20675: change Go Performance Optimization TW name
nikitakuchur Jul 2, 2026
c85ec68
LLM-28904: remove legacy claude dep from llm-sandbox
fastasturtle Jun 19, 2026
6c21773
LLM-28904: drop all references to the claude.code modules
fastasturtle Jun 19, 2026
d911983
[mcp] Run MCP server tests as part of community aggregator LLM-28415
ishulgin Jun 25, 2026
8f085bf
LLM-29021 Remove obsolete AskAI and mini chat modules
Jun 23, 2026
3c8189c
LLM-28904: remove the A2A Gemini integration
fastasturtle Jun 29, 2026
9cd7164
[ai-ij-exp] LLM-27517 Add 'artifacts' to eval report
Jun 22, 2026
ec1c370
PY-39449 `PyUnusedLocalInspection`: suppress with `del x`
Jun 13, 2026
cf36c38
misc python: update agent context for code-insight tests
Jun 19, 2026
d506bab
PY-90411 inlay-hints: show hint for inferred type arguments
Jun 19, 2026
38fa775
tests python: fix `PyiTypeTest`
Jun 24, 2026
31e5c4c
PY-90391 injection: don't inject in class keyword arguments
Jun 23, 2026
ab79c6f
PY-90291 typing: support safe assignments for `TypedDict` to `dict`/`…
Jun 15, 2026
43bcc2e
PY-90293 inlay-hints: make types clickable
Jun 15, 2026
fb48060
PY-9687 `PyUnusedLocalInspection`: split into three separate inspections
Jun 15, 2026
fa1a88e
PY-9687 `PyUnusedLocalVariableInspection`: rename to address flakey test
Jun 23, 2026
d480327
refactor python: introduce `PyStringDunderUtil`
May 14, 2026
851d3a5
PY-89760 f-strings: warn when type doesn't implement `__format__` but…
Mar 9, 2026
9c949d1
PY-90265 inspections: new code format
Jun 14, 2026
b22b7a3
PY-90285 inspections: name enclosing declaration in suppress actions
Jun 14, 2026
6dc4746
IJI-725 [fus]: auto-update bundled metadata
Jul 7, 2026
1165510
FUS-8097 [fus]: auto-update bundled metadata
Jul 7, 2026
187c6dc
PY-89419 enable non-modal welcome screen only once the license is loaded
SprutSDM Jun 10, 2026
044b887
PY-89419 keep modal welcome screen for paying users
SprutSDM Jun 29, 2026
ee7e731
PY-89419: Check if properties component is initialized before modifyi…
SprutSDM Jul 1, 2026
42032b9
PY-89419: Keep previosly enabled non-modal welcome screen no matter o…
SprutSDM Jul 2, 2026
5dcdc9e
IJPL-244833 IJent process leaks after closing IDE backend: add parent…
stigger Jun 14, 2026
f344467
PY-89975 [debugger]: fix Docker pydevd debugger by properly resolving…
nomorehumor Jul 7, 2026
9eeb7ed
[maven] IDEA-391236 fix: autocompletion for Maven dependency version …
Jul 7, 2026
fbc9208
DO-4267 FUS-8248 FUS-8309 [fus]: auto-update bundled metadata
Jul 8, 2026
4010b4c
CPP-50833 [mcp] refactor search_symbol customization to use service
Smertig Jun 29, 2026
80f9c60
IJPL-247471 WEB-78626 HTML: do not implement PsiLinkedPolySymbol inte…
piotrtomiak Jul 6, 2026
9b20155
LLM-29397 [ai-next-edit] do not add runtime dependencies on FLCC modules
kkarnauk Jul 7, 2026
5019574
PY-90741 [debugger]: modify redirection parameter in pydevd_io
nomorehumor Jul 8, 2026
1c3d86f
KTIJ-39340 [kotlin] Improve quickfix for NO_CONTEXT_ARGUMENT when no …
vladimirdolzhenko Jun 25, 2026
2fcd4b7
KTIJ-39340 [kotlin] Address code review
vladimirdolzhenko Jun 27, 2026
dc37623
KTIJ-39340 [kotlin] Select inserted TODO placeholder
vladimirdolzhenko Jun 30, 2026
58ea4c8
RELEASE-1159: Update PyCharm 2026.2 RC ApplicationInfo XML version
Jul 6, 2026
2bb8cdd
RELEASE-1159: PyCharm 2026.2.0: set majorReleaseDate
g-torvald Jul 9, 2026
396ade1
RELEASE-1159: PyCharm 2026.2 RC: artworks
hlibsaliuk Jul 9, 2026
1256b2f
IJPL-248943 [platform]: setting the Windows app user model ID in a la…
trespasserw Jul 2, 2026
31a4425
IJPL-236846 LSP: fix range-outside-element exception on diagnostics b…
tomblachut Jul 7, 2026
fdc7550
IJPL-248655 LSP: skip reactive highlighting refresh for invalid files
tomblachut Jul 7, 2026
efb3a3e
FUS-8175 [fus]: auto-update bundled metadata
Jul 9, 2026
6dbacfc
PY-90789 gate notebook LSP support behind registry keys
qnox Jul 8, 2026
047419d
RELEASE-1158: IDEA IC 2026.2 removing RC suffix
kazaryankarina95 Jul 10, 2026
1c922fc
IJPL-248430 Fix Review Button background
a-krasilnikov Jul 9, 2026
f891346
IJPL-247208 Shift + Shift does nothing on 2026.2 EAP 4 with VSCode ke…
develar Jul 10, 2026
d1ce499
PY-90571 Don't attach the PyO3 auto-build to run configurations
vladimir-koshelev Jul 9, 2026
e8d352a
KTIJ-39375 [kotlin] Fix configuring kapt compiler plugin
vladimirdolzhenko Jul 1, 2026
1bc04a5
KTIJ-8775 [kotlin] Add Kapt Kotlin compiler plugin inspection
vladimirdolzhenko Jul 1, 2026
542b92a
KTIJ-8775 [kotlin] Improve test coverage
vladimirdolzhenko Jul 1, 2026
3a4f76a
PY-90881 Prevent crash on detached editors during queued scroll/layou…
jetmano Jul 10, 2026
6d59a09
IJ-CR-212933 [kotlin] KTIJ-39255 SpecifyRemainingArgumentsByNameUtil:…
OljaKli Jul 1, 2026
ce8fd3d
RELEASE-1168 - IDEA release artworks
liubov-polezhaeva-jb Jul 13, 2026
ec210e7
FUS-7118 [fus]: auto-update bundled metadata
Jul 13, 2026
4bc6d9f
IJ-CR-212876 [kotlin] KTIJ-37138 AddExplicitContextArgumentFixFactory…
OljaKli Jun 23, 2026
a63c503
IJPL-246638 [editor]: replace plain assertion with an exception that …
vobal-jb Jul 13, 2026
5718753
IJPL-246638 IJPL-246726 IJPL-246055 [editor]: include last soft wrap …
vobal-jb Jul 13, 2026
71eee55
AMPER-5440 Decouple Compose resources detection from Gradle with an EP
utikeev Jun 18, 2026
8675187
PY-90203 fix conda_packaging_tool.py compatibility with conda 26
TimurMalanin Jul 13, 2026
e4ec84c
FUS-8283 [fus]: auto-update bundled metadata
Jul 14, 2026
d1516a9
FUS-8218 FUS-8228 FUS-8317 FUS-8370 [fus]: auto-update bundled metadata
Jul 14, 2026
25d5283
FUS-8271 [fus]: auto-update bundled metadata
Jul 14, 2026
8231b56
FUS-8249 [fus]: auto-update bundled metadata
Jul 14, 2026
1df5faa
FUS-8216 [fus]: auto-update bundled metadata
Jul 14, 2026
a908497
FUS-8315 [fus]: auto-update bundled metadata
Jul 14, 2026
992b064
FUS-8368 [fus]: auto-update bundled metadata
Jul 14, 2026
b620f43
KTIJ-39543 [kotlin] Fix lombok:config option
vladimirdolzhenko Jul 14, 2026
880a74e
KTIJ-39543 [kotlin] Fix lombok:config relative path calculation
vladimirdolzhenko Jul 15, 2026
1822802
misc [bootstrap]: deprecating the problematic `StartupActionScriptMan…
trespasserw Jul 14, 2026
f1a3843
Merge tag 'idea/2026.2' into merge-2026.2
DetachHead Jul 17, 2026
86d43b1
fix from merge
DetachHead Jul 17, 2026
0b08857
fix newly added facet moment
DetachHead Jul 17, 2026
9f6cc7c
fix "Plugin 'Markdown' requires plugin 'intellij.platform.structureVi…
DetachHead Jul 17, 2026
12fb127
disable commit checks again, which were somehow re-enabled in 2026.2 …
DetachHead Jul 17, 2026
4e2ff68
remove `inspect` and `format` CLI commands (#290)
DetachHead Jul 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
62 changes: 62 additions & 0 deletions .agents/skills/compare-python-typecheckers/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
name: compare-python-typecheckers
description: Run a Python file or snippet through the real third-party type checkers (ty, pyrefly, basedpyright, mypy, zuban) via uvx and collate their output into one Markdown report. Use when evaluating how a type should be inferred, debugging PyCharm code-insight / type-engine behaviour, or checking where the external checkers agree or disagree on a snippet.
---

# Compare Python type checkers

When reasoning about how PyCharm *should* infer a type or whether something ought
to be a type error, cross-checking against the real third-party checkers is the
fastest way to gain insight — and to see where they disagree. This skill runs
them all on a scratch file or snippet and collates the output into a single
report.

## Run it

`${CLAUDE_SKILL_DIR}/scripts/compare_typecheckers.py` invokes each checker
through `uvx` (fetched on demand — no install; the network is used on first run)
and prints a Markdown report: a summary table (exit code / verdict / timing per
tool) followed by each tool's raw output.

```bash
# Inline snippet:
uv run ${CLAUDE_SKILL_DIR}/scripts/compare_typecheckers.py -c 'def f(x: int) -> int:
return x

f("a")'

# An existing file:
uv run ${CLAUDE_SKILL_DIR}/scripts/compare_typecheckers.py path/to/test.py

# A subset, written to a file:
uv run ${CLAUDE_SKILL_DIR}/scripts/compare_typecheckers.py test.py --tools ty,mypy -o /tmp/report.md
```

Flags: `-c/--code` (inline snippet), `-t/--tools ty,mypy,…` (subset), `-o/--output`
(write to file), `--timeout` (per-checker seconds, default 180). The script exits
0 whenever it produced a report — findings live in the report, not the exit code.

## Reading the result

- The summary table shows each tool's exit code (**0 = nothing flagged**,
non-zero = the checker reported an issue or failed to run), a verdict, and time.
- Output **formats differ** per tool, so read each section, not just the table:
- `ty` (Astral) and `pyrefly` (Meta) each have their own diagnostic style.
- `basedpyright` is pyright-based and also emits extra diagnostics such as
`reportUnusedCallResult`.
- `mypy` and `zuban` share the same message format (`zuban` is mypy-compatible).
- The checkers track their latest releases through `uvx`, so behaviour can shift
over time — record the date when capturing results in a YouTrack issue or test.

## Manual one-offs

The exact per-tool invocations, if you want to run just one by hand (note
`basedpyright` takes the file positionally — no `check` subcommand):

| Tool | Command |
|------|---------|
| ty | `uvx ty check test.py` |
| pyrefly | `uvx pyrefly check test.py` |
| basedpyright | `uvx basedpyright test.py` |
| mypy | `uvx mypy test.py` |
| zuban | `uvx zuban check test.py` |
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
#!/usr/bin/env python3
"""Run a Python file or snippet through several third-party type checkers and
collate their output into a single Markdown report.

Checkers (each fetched on demand with `uvx`, so no pre-install is needed; the
network is used on first run): ty, pyrefly, basedpyright, mypy, zuban.

Examples:
compare_typecheckers.py test.py
compare_typecheckers.py -c 'x: int = "a"'
compare_typecheckers.py test.py --tools ty,mypy -o report.md
"""
# Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.

from __future__ import annotations

import argparse
import shutil
import subprocess
import sys
import tempfile
import time
from datetime import datetime
from pathlib import Path

# name -> argv prefix; the target file path is appended. Order = report order.
# Quirks worth remembering: basedpyright takes the file positionally (no `check`
# subcommand); zuban emits mypy-compatible output.
CHECKERS: dict[str, list[str]] = {
"ty": ["uvx", "ty", "check"],
"pyrefly": ["uvx", "pyrefly", "check"],
"basedpyright": ["uvx", "basedpyright"],
"mypy": ["uvx", "mypy"],
"zuban": ["uvx", "zuban", "check"],
}


def run_checker(name: str, target: Path, timeout: float) -> dict:
# Run from the file's own directory with a relative name. Some checkers
# (notably zuban) reject an absolute path outside the cwd ("No Python files
# found to check"); this also keeps the displayed command readable and lets
# tools pick up a co-located config.
cmd = CHECKERS[name] + [target.name]
start = time.monotonic()
try:
proc = subprocess.run(cmd, cwd=str(target.parent), capture_output=True, text=True, timeout=timeout)
out = (proc.stdout or "") + (proc.stderr or "")
code: int | None = proc.returncode
status = "clean" if code == 0 else "issues"
except subprocess.TimeoutExpired:
out, code, status = f"(timed out after {timeout:.0f}s)", None, "timeout"
except FileNotFoundError:
out, code, status = "(uvx not found on PATH)", None, "error"
return {
"name": name,
"cmd": " ".join(cmd),
"out": out.strip(),
"code": code,
"status": status,
"dur": time.monotonic() - start,
}


def build_report(target: Path, results: list[dict], source: str | None, now: str) -> str:
lines: list[str] = [f"# Type-checker comparison — `{target.name}`", "", f"_Generated {now}_", ""]
if source is not None:
lines += ["Source under test:", "", "```python", source.rstrip("\n"), "```", ""]
lines += [
"## Summary",
"",
"| Checker | Command | Exit | Verdict | Time |",
"|---------|---------|------|---------|------|",
]
for r in results:
code = "-" if r["code"] is None else str(r["code"])
lines.append(f"| {r['name']} | `{r['cmd']}` | {code} | {r['status']} | {r['dur']:.1f}s |")
lines += [
"",
"> Exit 0 = nothing flagged; non-zero = the checker reported an issue or "
"failed to run. Output formats differ per tool — read each section below.",
"",
]
for r in results:
lines += [f"## {r['name']} — `{r['cmd']}`", "", "```", r["out"] or "(no output)", "```", ""]
return "\n".join(lines)


def main(argv: list[str] | None = None) -> int:
p = argparse.ArgumentParser(
description="Compare Python type checkers (ty, pyrefly, basedpyright, mypy, zuban) via uvx.",
)
src = p.add_mutually_exclusive_group(required=True)
src.add_argument("file", nargs="?", help="Python file to check")
src.add_argument("-c", "--code", help="inline snippet to check (written to a temp file)")
p.add_argument("-t", "--tools", help=f"comma-separated subset of: {', '.join(CHECKERS)}")
p.add_argument("-o", "--output", help="write the report to this path instead of stdout")
p.add_argument("--timeout", type=float, default=180.0, help="per-checker timeout in seconds (default 180)")
args = p.parse_args(argv)

# Reports and progress lines contain non-ASCII (em dashes, ellipsis); force
# UTF-8 so printing to a non-UTF-8 console (e.g. Windows cp1252) can't crash.
for stream in (sys.stdout, sys.stderr):
if hasattr(stream, "reconfigure"):
stream.reconfigure(encoding="utf-8")

if shutil.which("uvx") is None:
print("error: `uvx` not found on PATH — install uv (https://docs.astral.sh/uv/).", file=sys.stderr)
return 2

tmp_dir: str | None = None
if args.code is not None:
tmp_dir = tempfile.mkdtemp(prefix="typecheck_")
target = Path(tmp_dir) / "snippet.py"
target.write_text(args.code if args.code.endswith("\n") else args.code + "\n", encoding="utf-8")
source_text = args.code
else:
target = Path(args.file)
if not target.is_file():
print(f"error: no such file: {target}", file=sys.stderr)
return 2
target = target.resolve()
try:
source_text = target.read_text(encoding="utf-8")
except OSError:
source_text = None

names = list(CHECKERS)
if args.tools:
names = [t.strip() for t in args.tools.split(",") if t.strip()]
unknown = [t for t in names if t not in CHECKERS]
if unknown:
print(f"error: unknown tool(s): {', '.join(unknown)} (known: {', '.join(CHECKERS)})", file=sys.stderr)
return 2

results = []
for name in names:
print(f"running {name} …", file=sys.stderr)
results.append(run_checker(name, target, args.timeout))

report = build_report(target, results, source_text, f"{datetime.now():%Y-%m-%d %H:%M:%S}")
if args.output:
Path(args.output).write_text(report, encoding="utf-8")
print(f"wrote {args.output}", file=sys.stderr)
else:
print(report)

if tmp_dir is not None:
shutil.rmtree(tmp_dir, ignore_errors=True)
# Non-zero only on harness failure, not on findings: a clean exit lets callers
# treat "report produced" as success regardless of what the checkers found.
return 0


if __name__ == "__main__":
raise SystemExit(main())
1 change: 1 addition & 0 deletions .ai/partials/module-specific.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@ Special handling applies to the directories below. If a file you touch lives und
- **Toolbox** (`toolbox/`):
- Tests: never use `./tests.cmd`; see `toolbox/.ai/index.md` for Gradle/Bazel test commands.
- Build: use `./bazel.cmd build //toolbox/...` instead of `./bazel-build-all.cmd`.
<!-- IF_EDITION:ULTIMATE -->- **PyCharm** (`python/` and `community/python/`): use `/community/python/.ai/index.md`.<!-- /IF_EDITION:ULTIMATE --><!-- IF_EDITION:COMMUNITY -->- **PyCharm** (`./python`): use `./python/.ai/index.md`.<!-- /IF_EDITION:COMMUNITY -->
63 changes: 63 additions & 0 deletions .claude/skills/compare-python-typecheckers/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
---
name: compare-python-typecheckers
description: Run a Python file or snippet through the real third-party type checkers (ty, pyrefly, basedpyright, mypy, zuban) via uvx and collate their output into one Markdown report. Use when evaluating how a type should be inferred, debugging PyCharm code-insight / type-engine behaviour, or checking where the external checkers agree or disagree on a snippet.
---
<!-- Generated by community/.ai/render-guides.mjs; edit community/.agents/skills/compare-python-typecheckers/SKILL.md -->

# Compare Python type checkers

When reasoning about how PyCharm *should* infer a type or whether something ought
to be a type error, cross-checking against the real third-party checkers is the
fastest way to gain insight — and to see where they disagree. This skill runs
them all on a scratch file or snippet and collates the output into a single
report.

## Run it

`${CLAUDE_SKILL_DIR}/scripts/compare_typecheckers.py` invokes each checker
through `uvx` (fetched on demand — no install; the network is used on first run)
and prints a Markdown report: a summary table (exit code / verdict / timing per
tool) followed by each tool's raw output.

```bash
# Inline snippet:
uv run ${CLAUDE_SKILL_DIR}/scripts/compare_typecheckers.py -c 'def f(x: int) -> int:
return x

f("a")'

# An existing file:
uv run ${CLAUDE_SKILL_DIR}/scripts/compare_typecheckers.py path/to/test.py

# A subset, written to a file:
uv run ${CLAUDE_SKILL_DIR}/scripts/compare_typecheckers.py test.py --tools ty,mypy -o /tmp/report.md
```

Flags: `-c/--code` (inline snippet), `-t/--tools ty,mypy,…` (subset), `-o/--output`
(write to file), `--timeout` (per-checker seconds, default 180). The script exits
0 whenever it produced a report — findings live in the report, not the exit code.

## Reading the result

- The summary table shows each tool's exit code (**0 = nothing flagged**,
non-zero = the checker reported an issue or failed to run), a verdict, and time.
- Output **formats differ** per tool, so read each section, not just the table:
- `ty` (Astral) and `pyrefly` (Meta) each have their own diagnostic style.
- `basedpyright` is pyright-based and also emits extra diagnostics such as
`reportUnusedCallResult`.
- `mypy` and `zuban` share the same message format (`zuban` is mypy-compatible).
- The checkers track their latest releases through `uvx`, so behaviour can shift
over time — record the date when capturing results in a YouTrack issue or test.

## Manual one-offs

The exact per-tool invocations, if you want to run just one by hand (note
`basedpyright` takes the file positionally — no `check` subcommand):

| Tool | Command |
|------|---------|
| ty | `uvx ty check test.py` |
| pyrefly | `uvx pyrefly check test.py` |
| basedpyright | `uvx basedpyright test.py` |
| mypy | `uvx mypy test.py` |
| zuban | `uvx zuban check test.py` |
Loading
Loading