Skip to content

5.0.1

Latest

Choose a tag to compare

@github-actions github-actions released this 27 Jul 04:41
6e662e9

Added

  • ide_find_references echoes the resolved symbol. Positions on comments or whitespace silently snap to the nearest enclosing named element; the new optional resolvedSymbol field (name, kind, container, file, line) lets clients verify which declaration was actually searched. A new totalIsExact field distinguishes an exact totalCount from a lower bound when collection hit the internal cap.
  • ide_replace_text_in_file returns affectedLines — the 1-based line numbers touched by replacements (capped at 100), which its description had always promised.

Fixed

  • ide_create_file no longer triggers the IDE's "Add File to Git" confirmation. Files were created through direct VFS calls, which the VCS listener processes under the "When files are created" setting — an app-modal dialog when set to Ask (freezing the EDT and hanging every in-flight MCP call until someone clicks it), or a silent git add when set to Add silently (the staging surprise from the field report). Files are now written to disk and imported via a synchronous VFS refresh, which the VCS listener ignores by design — still indexed in the same call, but never prompted for and never auto-staged. The tool description now states this; run git add yourself when you want the file tracked.
  • ide_find_file no longer silently drops results on broad queries. Candidate-name enumeration was capped at 1500 names over a scope-blind index stream (the filename index enumerates library and JDK keys too), so queries like Dao, *.java or *.properties filled the window with out-of-scope names and returned a fraction of the real matches — with hasMore: false claiming completeness. Enumeration is now uncapped (matching the IDE's own Goto File), candidates are resolved best-match-first, and cancellation is no longer swallowed as a silently-truncated result.
  • ide_find_symbol no longer drops override implementations that share a name with their super method. IntelliJ's Go to Symbol popup suppresses a method when any super signature matches the same unqualified query; the search now complements those suppressed methods via PsiShortNamesCache, so querying getAllPublishers returns both TRCDao.getAllPublishers and TRCDaoImpl.getAllPublishers.
  • ide_diagnostics no longer reports a false clean bill on open files when the highlighting daemon is inactive. With Power Save Mode on (or the daemon otherwise idle), the open-editor path returned an empty highlight set stamped analysisFresh: true, problemCount: 0 for files with real compile errors. Power Save Mode now routes open files to batch analysis directly, and an empty daemon result that cannot be proven to come from a completed pass falls back to batch analysis, with distinct analysisMessage texts for "daemon did not run" vs "timed out".
  • ide_refactor_rename with targetType: "file" no longer corrupts Java sources. Renaming Foo.java renamed the file but not the public class inside, producing guaranteed-uncompilable code reported as success: true. When the file's top-level class name matches the filename, the rename is now retargeted to the class (which renames the file and updates all references); non-matching and non-Java files keep plain file rename.
  • ide_find_class reports real kind values. Interfaces, enums, annotations and records all reported CLASS because kind was inferred from the PSI implementation class name (PsiClassImpl for every Java declaration form). Kind is now determined by semantic probes (isInterface/isEnum/isAnnotationType/isRecord via reflection, working for Java, Kotlin, PHP and JS/TS), with the name heuristic as fallback.
  • ide_project_status and ide_get_project_modes now agree on what "managed" means. ide_project_status zeroed the managed list whenever lifecycle automation was globally disabled, while ide_get_project_modes read the persisted enrollment registry — the same project could report managed: 0 and 10 managed projects simultaneously. ide_project_status now reports persisted enrollment unconditionally, plus a lifecycle_enabled flag and an explanatory note when automation is off.
  • ide_find_implementations no longer silently truncates at 100 results. Every language handler capped implementations at 100 with hasMore: false presented as completeness; the caps now match the pagination cache bound (5000) so the "cache holds the complete set" invariant actually holds.
  • ide_refactor_safe_delete no longer misreports outcomes. A stale PSI element detected inside the write action silently skipped the delete but still reported "Successfully deleted"; that is now an explicit retry error. A failed usage search (index churn, stale stubs) was swallowed and treated as "no usages", letting the delete proceed as safe; the tool now refuses with an explicit error (dumb-mode/cancellation propagate to the standard retry handling).
  • ide_change_signature no longer reports success on a silently aborted refactoring (read-only file, unwritable elements). A post-run check verifies at least one requested aspect actually applied before reporting success.
  • ide_move_file surfaces move conflicts as warnings instead of discarding them — a forced headless move (e.g. a package-private class moved away from its users) previously reported clean success.
  • ide_insert_member re-validates its insertion point inside the write action — a document modified between preparation and write previously threw a raw out-of-bounds error or silently inserted at the wrong position.
  • ide_read_file rejects startLine beyond end-of-file with an error naming the real line count, and echoes the effective (clamped) endLine instead of the requested one, so an overhanging range no longer masquerades as fulfilled.
  • Refactoring conflict messages no longer leak IDE-dialog HTML. Rename conflict errors carried raw <b><code>…</code></b> markup and XML entities from the IDE's conflicts dialog; messages are now sanitized to plain text.
  • The bundled skill doc described ide_search_text as "exact word occurrences"; it is a substring search with optional regex, and the doc now says so.