0.3.12 - 2026-07-10
- Android Studio version 261.26222.65 support
0.3.11 - 2026-06-30
- 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
- Android Studio version 261.25134.95 support
0.3.9 - 2026-06-10
- Issue with a self-update detection that entered an infinite loop of clearing the state.
0.3.8 - 2026-06-08
- Android Studio version 261.24374.151 support
0.3.7 - 2026-05-08
- IntelliJ 262 support
0.3.6 - 2026-05-07
- Android Studio version 261.23567.138 support
0.3.5 - 2026-04-19
- Android Studio version 261.22158.277 support
0.3.4 - 2026-03-19
- 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
runIdebuild support viarunAndroidStudioGradle task - GitHub workflow to check Android Studio version mapping freshness daily
- Fix "not found" message in jar locator
0.3.3 - 2026-03-17
- 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
.downloadingtemp 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
- SNAPSHOT version support: requested
-SNAPSHOTversions now resolve against timestamped versions in Maven repositories, with automatic version-level metadata resolution for download filenames
- 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
- 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-Lengthheader (chunked/proxied responses) - Fix watch key leaks causing OS file handle exhaustion on deregister/cleanup
- Fix
AtomicMoveNotSupportedExceptionwith fallback to non-atomic move andREPLACE_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
- Plugin now requires IDE restart on install/update
- Refactor
KefsJarAnalyzerto useZipInputStreaminstead ofJarFile
0.3.1 - 2026-03-10
- Fix removing plugins from the settings page
- Make until build range open for the latest IDE version
0.3.0 - 2026-02-24
- Support for IDE versions 251, 252, 253, and 261
KEFS: Copy Kotlin IDE Versionaction — copies the IDE's internal Kotlin compiler version to the clipboardKEFS: Toggle Extended Debouncetroubleshooting action — extends the cache invalidation debounce interval to work around analysis re-trigger issues
- 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/.kotlinPluginsto$USER_HOME/.kefs - Renamed action prefix from
Kotlin FIR External Support:toKEFS: - Renamed settings page from
Tools > Kotlin PluginstoTools > Kotlin External FIR Support - Renamed diagnostics tool window from
Kotlin Plugins DiagnosticstoKEFS Diagnostics
0.2.0 - 2026-01-14
- 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/.kotlinPluginsto 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.xmlfile. - User Actions: Added three new actions available from the "Find Action" (Ctrl/Cmd+Shift+A)
menu:
Kotlin FIR External Support: Update PluginsKotlin FIR External Support: Refresh PluginsKotlin 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
- Rewrite file download lock
- Fix the infinite download cycle
0.1.1 - 2025-04-11
- File downloading race condition
0.1.0 - 2025-02-21
Clear 'Kotlin FIR External Support' CacheIDE Action- 251 IDE Versions Support
- Project-specific version resolution fixed
- "Container 'ProjectImpl@ services' was disposed" exception
- Exception for disposed projects
- Initial implementation
- Initial scaffold created from IntelliJ Platform Plugin Template