Skip to content

Latest commit

 

History

History
263 lines (189 loc) · 11.8 KB

File metadata and controls

263 lines (189 loc) · 11.8 KB

Kotlin External FIR Support Changelog

0.3.12 - 2026-07-10

Added

  • Android Studio version 261.26222.65 support

0.3.11 - 2026-06-30

Fixed

  • File watcher no longer reports an unhandled exception when the OS runs out of inotify instances / open files (Linux); watching is disabled gracefully instead. State clears (Refresh/Clear Caches, external changes) now fully reset the watch service, letting it recover after a transient OS failure. Also fixed a race that could leak a watch service (inotify instance) during concurrent registration.

0.3.10 - 2026-06-13

Added

  • Android Studio version 261.25134.95 support

0.3.9 - 2026-06-10

Fixed

  • Issue with a self-update detection that entered an infinite loop of clearing the state.

0.3.8 - 2026-06-08

Added

  • Android Studio version 261.24374.151 support

0.3.7 - 2026-05-08

Added

  • IntelliJ 262 support

0.3.6 - 2026-05-07

Added

  • Android Studio version 261.23567.138 support

0.3.5 - 2026-04-19

Added

  • Android Studio version 261.22158.277 support

0.3.4 - 2026-03-19

Added

  • Android Studio Kotlin version support: detect Android Studio stub Kotlin versions (e.g. 2.2.255-dev-255) and resolve them to actual Kotlin versions using a bundled mapping from IntelliJ platform build numbers
  • Android Studio runIde build support via runAndroidStudio Gradle task
  • GitHub workflow to check Android Studio version mapping freshness daily

Fixed

  • Fix "not found" message in jar locator

0.3.3 - 2026-03-17

Fixed

  • Fix infinite loop on Windows where file watcher ENTRY_DELETE events during jar downloads triggered clearState(), cancelling the running locator and restarting it indefinitely
  • Fix orphaned .downloading temp files not being cleaned up when the locator coroutine is cancelled
  • Fix downloaded JAR files not being verified against their expected MD5 checksum, allowing corrupted transfers to be silently cached
  • Fix moved() rename failure for a single artifact (e.g., Windows file lock) aborting the entire bundle instead of falling through gracefully

Added

  • SNAPSHOT version support: requested -SNAPSHOT versions now resolve against timestamped versions in Maven repositories, with automatic version-level metadata resolution for download filenames

Changed

  • File watcher self-update suppression now uses a 2-second grace period after markSelfUpdateEnd() to absorb delayed OS event delivery

0.3.2 - 2026-03-13

Fixed

  • Fix replacement version patterns escaping regex metacharacters (e.g., . and + in version templates)
  • Fix lifecycle cache returning wrong JAR when the same plugin is requested with different versions
  • Fix watcher initialization order so local repository watchers work regardless of registration order at startup
  • Fix cache rediscovery for artifacts using replacement version patterns
  • Fix downloads from servers that omit Content-Length header (chunked/proxied responses)
  • Fix watch key leaks causing OS file handle exhaustion on deregister/cleanup
  • Fix AtomicMoveNotSupportedException with fallback to non-atomic move and REPLACE_EXISTING
  • Fix exception report file creation (inverted existence check)
  • Fix disk scanner crash on checksum computation I/O errors
  • Fix cross-platform path handling in file watcher and provider (use invariantSeparatorsPathString)
  • Fix service lookup in exception reporter

Changed

  • Plugin now requires IDE restart on install/update
  • Refactor KefsJarAnalyzer to use ZipInputStream instead of JarFile

0.3.1 - 2026-03-10

Fixed

  • Fix removing plugins from the settings page

Changed

  • Make until build range open for the latest IDE version

0.3.0 - 2026-02-24

Added

  • Support for IDE versions 251, 252, 253, and 261
  • KEFS: Copy Kotlin IDE Version action — copies the IDE's internal Kotlin compiler version to the clipboard
  • KEFS: Toggle Extended Debounce troubleshooting action — extends the cache invalidation debounce interval to work around analysis re-trigger issues

Changed

  • Improved file watching: monitors local repository directory trees recursively, automatically detecting new subdirectories and artifacts
  • Cache directory file watching now suppresses notifications during plugin self-updates, reducing unnecessary re-actualization
  • Renamed local disk cache directory from $USER_HOME/.kotlinPlugins to $USER_HOME/.kefs
  • Renamed action prefix from Kotlin FIR External Support: to KEFS:
  • Renamed settings page from Tools > Kotlin Plugins to Tools > Kotlin External FIR Support
  • Renamed diagnostics tool window from Kotlin Plugins Diagnostics to KEFS Diagnostics

0.2.0 - 2026-01-14

Added

  • Onboarding guide: https://github.com/Mr3zee/kotlin-external-fir-support/blob/main/GUIDE.md
  • For compiler plugin developers guide: https://github.com/Mr3zee/kotlin-external-fir-support/blob/main/PLUGIN_AUTHORS.md
  • Plugin Replacement Engine: Added the core mechanism to intercept Kotlin compiler plugin requests within the IDE. This allows KEFS to replace a project's plugin version (e.g. built for Kotlin 2.2.20) with a version compatible with the IDE's internal compiler (e.g., 2.2.0-ij251-78).
  • Plugin Bundles: Added support for "bundles", which group multiple artifacts (e.g., cli, k2, backend, common) to be treated as a single compiler plugin.
  • Version Resolution Strategies: Implemented three strategies for finding compatible plugin versions:
    • Exact: The library version must be identical to the one requested.
    • Same Major: Finds the latest version with the same major version number.
    • Latest: Finds the latest available version of the plugin.
  • Maven Repository Support: Added support for configuring Maven repositories on a per-plugin basis. Two types of repositories are supported:
    • Remote: A repository specified by a URL.
    • Local: A local directory on the file system structured as a Maven repository.
  • Background Processing & Caching: All plugin resolution, network access, and indexing now run in the background to ensure the UI and analysis remain responsive.
  • Local Disk Cache: Resolved plugins are now cached locally in $USER_HOME/.kotlinPlugins to provide fast, on-demand access without repeated downloads.
  • Periodic Updates: Implemented a background "Actualization" job that runs every 2 minutes to check for new versions of plugins.
  • Checksum Verification: KEFS now calculates and compares MD5 checksums to avoid re-downloading jars that are already present and are up to date.
  • File Watching & Hot-Reload: Added file watchers for all cached jars. For local repositories, KEFS uses symlinks to watch the original file, enabling automatic hot-reloading of a plugin in the IDE when it's re-published locally.
  • Project-Level Configuration: All plugin and repository settings are now stored in the project's .idea/kotlin-plugins.xml file.
  • User Actions: Added three new actions available from the "Find Action" (Ctrl/Cmd+Shift+A) menu:
    • Kotlin FIR External Support: Update Plugins
    • Kotlin FIR External Support: Refresh Plugins
    • Kotlin FIR External Support: Clear Caches
  • Project Sync Hook: KEFS now hooks into project reloads (like a Gradle sync) to clear its state and adapt to configuration changes.
  • Runtime Exception Tracking: Added a new feature to analyze all exceptions reported to the IDE's root logger.
  • Fault Detection: KEFS analyzes the class FQ names of all loaded plugin jars. If an exception's stack trace matches a class from a known plugin, KEFS identifies that plugin as the source of the failure.
  • Editor Banner Notification: When a plugin throws an exception, a banner now appears at the top of the editor. This banner allows you to:
    • Disable the plugin: Immediately stops the failing plugin and restores IDE analysis.
    • Auto-disable: Enable a setting to automatically disable any plugin that throws an exception.
    • Open diagnostics: Jump to the new diagnostics tool window.
  • Auto-Disable: Added an "Automatically disable throwing plugins" setting. When enabled, KEFS will disable failing plugins and show a balloon notification.
  • Global Toggle: Exception Analysis can be enabled or disabled in the workspace settings.
  • "Kotlin Plugins Diagnostics" Tool Window: Added a new tool window to provide a complete real-time overview of all configured compiler plugins and their artifacts.
  • Status & Error Reporting: The diagnostics window shows the runtime status for all plugin versions:
    • Success: Plugin loaded successfully.
    • Partial Success: Some artifacts in a bundle loaded, but not all.
    • Failed To Fetch / Not Found: Shows detailed error messages if a plugin could not be resolved.
    • Exception in runtime: Shows a detailed report for any plugin that failed during execution.
    • Skipped: The plugin has not been requested by the project yet.
    • Disabled: The user disabled the plugin.
  • Exception & Jar Inspection: The diagnostics panel can display the full list of analyzed classes in a jar.
  • Settings Page: Added a new settings page under Tools > Kotlin Plugins.
    • General Tab: Toggle the Exception Analyzer and auto-disable feature.
    • Artifacts Tab: Manage all Maven repositories and Kotlin plugin configurations.
  • Confirmation Dialog: Added a confirmation dialog for the "Clear Caches" action.

0.1.2 - 2025-04-17

Fixed

  • Rewrite file download lock
  • Fix the infinite download cycle

0.1.1 - 2025-04-11

Fixed

  • File downloading race condition

0.1.0 - 2025-02-21

Added

  • Clear 'Kotlin FIR External Support' Cache IDE Action
  • 251 IDE Versions Support

Fixed

  • Project-specific version resolution fixed
  • "Container 'ProjectImpl@ services' was disposed" exception

Fixed

  • Exception for disposed projects

Added