Releases: kensa-dev/intellij-plugin
Releases · kensa-dev/intellij-plugin
Release list
0.8.3
Added
- Right-click a gutter icon to open the CI report. Left-click still opens the local report in a single click; when a CI report URL template is configured (Settings → Tools → Kensa), the gutter icon's right-click menu now offers "Open Local Report" and "Open CI Report", and its tooltip advertises the CI option. Previously the local/CI chooser lived only on the Alt+Enter intention menu, which devs rarely discovered, so a configured CI template appeared to do nothing — the gutter always jumped straight to the local report.
KensaGutterLineMarkerProvidersupplies the chooser through the gutter renderer'sgetPopupMenuActions(), so the fast local path is unchanged.
Fixed
- High idle CPU.
KensaOutputFileWatcherStartupActivitypolled for new reports by walking the entire project tree (includingbuild/,.git,node_modules) every 5 seconds, forever — continuous filesystem I/O even when the IDE was idle. The walk existed because reports written by terminal/external test runs land under an excludedbuild/dir that VFS never reports. It is replaced by three bounded layers: (1) a native file-watch (addRootToWatch) on each discovered report dir, so changes to known reports surface instantly with no polling; (2) a 3-second targeted probe of only the build/output dirs — read from the module model's excluded roots (Gradlebuild, Maventarget) — checking the fixed report shape (<buildDir>/<reportDir>/indices.jsonor…/sources/<id>/indices.json) so brand-new reports appear quickly without ever walking a build dir's contents; (3) a 60-second pruned safety walk for reports in unconventional locations, which also refreshes the build-root set and prunes stale entries. Idle CPU drops to near zero while a terminal test run still updates gutter icons within ~3 seconds (instantly for already-known reports). Site-mode bundles (build/<site>/sources/<id>/) are handled across all three layers.
0.8.2
Fixed
- Run-window "Open Kensa Report" toolbar icon now appears reliably after Gradle-delegated test runs.
KensaTestRunListenercaptured the run tab'sRunContentDescriptorinonTestingStarted— too early for Gradle delegation, where the Build window holds focus while Gradle ramps up, so classes were filed under a stale or empty descriptor that the toolbar'supdate()never resolved. The listener now accumulates the run's classes on the stable test-root proxy and binds them to the descriptor once, atonTestingFinished, when the test tab is reliably the selected content. - Toolbar icon no longer renders as a giant full-width button that opens the report when clicked anywhere on the toolbar. The shared action icon (
/icons/logo.svg) declared a 512×512 intrinsic size, so IntelliJ sized theActionButtonto fill the whole toolbar; it is now a normal 16×16 action icon. - Opening a report from the run-window toolbar icon or the test-tree menu now selects the test in single-source (non-site) reports.
buildKensaRouteomitted the source prefix for single-source bundles, producing#/test/<class>, but the report keys class nodes as<sourceId>::<class>and falls back to source iddefault; the route now always carries the prefix, so the report lands on the test instead of opening unselected.
0.8.2-eap.4
Fixed
- Run-window "Open Kensa Report" toolbar icon now appears reliably after Gradle-delegated test runs.
KensaTestRunListenercaptured the run tab'sRunContentDescriptorinonTestingStarted— too early for Gradle delegation, where the Build window holds focus while Gradle ramps up, so classes were filed under a stale or empty descriptor that the toolbar'supdate()never resolved. The listener now accumulates the run's classes on the stable test-root proxy and binds them to the descriptor once, atonTestingFinished, when the test tab is reliably the selected content. - Toolbar icon no longer renders as a giant full-width button that opens the report when clicked anywhere on the toolbar. The shared action icon (
/icons/logo.svg) declared a 512×512 intrinsic size, so IntelliJ sized theActionButtonto fill the whole toolbar; it is now a normal 16×16 action icon.
0.8.2.eap.1
Fix version number in CHANGELOG.md
0.8.2-eap.3
Fixed
- Run-window "Open Kensa Report" toolbar icon now appears reliably after Gradle-delegated test runs.
KensaTestRunListenercaptured the run tab'sRunContentDescriptorinonTestingStarted— too early for Gradle delegation, where the Build window holds focus while Gradle ramps up, so classes were filed under a stale or empty descriptor that the toolbar'supdate()never resolved. The listener now accumulates the run's classes on the stable test-root proxy and binds them to the descriptor once, atonTestingFinished, when the test tab is reliably the selected content. - Toolbar icon no longer renders as a giant full-width button that opens the report when clicked anywhere on the toolbar. The shared action icon (
/icons/logo.svg) declared a 512×512 intrinsic size, so IntelliJ sized theActionButtonto fill the whole toolbar; it is now a normal 16×16 action icon.
0.8.2-eap.2
Fixed
- Investigating why test window toolbar icon is not always displayed for Kensa tests.
0.8.1
Added
- Site-mode discovery: gutter icons and the test-tree context menu now recognise Kensa 0.8 site bundles (
build/kensa-site/sources/<id>/) in addition to the defaultkensa-output/layout. The plugin walks forindices.jsonwhose grandparent issources/and whose great-grandparent has amanifest.json. - Multi-source routing: when a test class lives in a Gradle source set whose name matches a Kensa source id (the default mapping), gutter clicks open the site shell with a
<sourceId>::<class>route, so the report sidebar lands on the correct source. Same class run in two source sets stays separated; the gutter icon for a file insrc/uiTest/...reflects theuiTestsource's status. - Tools → "Install Kensa Agent Skills…" action (also surfaced in Settings → Tools → Kensa) that writes the
kensa-developmentAI skill into a project. Targets: GitHub Copilot (path-scoped or always-loaded), JetBrains Junie, Cursor, and Claude Code. Skill files are bundled with the plugin and pinned to the Kensa version inversion.txt(sourced fromkensa-dev/agent-skills).
Fixed
KensaTestRunListenerfailed to instantiate on IntelliJ 2026.1+ (build 261+) withCannot find suitable constructor, breaking gutter status updates and the engagement notification on that build line. Added@JvmOverloadsso the platform's stricter constructor lookup finds the(Project)overload.- Possible fixes for unreliable display of test runner icon & Kensa Report bubble.
- Opening a report from a site-mode source bundle whose shell isn't on disk now produces a clear "run
./gradlew assembleKensaSite" warning, instead of silently failing. - Project-view "Open Kensa Report" group now lists site-mode reports (
build/kensa-site/index.html), not justkensa-output/bundles. Previously the group's children walker only matched the legacy parent name and rendered the menu disabled in site-mode projects. - "Kensa Report Ready" balloon no longer fires twice when a multi-sourceset site build completes. The notification debounce is now per-
index.htmlover a 60s window, so the twosources/<id>/indices.jsonwrites that share one site shell coalesce into a single balloon. - Run-tab "Open Kensa Report" toolbar icon stayed hidden after Gradle-delegated test runs.
KensaTestRunListener.onTestingStartedwas capturing the activeRunContentDescriptorviaRunContentManager.selectedContent, but for Gradle-delegated runs the Build tool window holds focus while Gradle ramps up — selected content isnull(or the previous tab) at that moment, soDESCRIPTOR_KEYnever gets written,rootDescriptor()returns null on every later event, andKensaRunTabRegistry.seenClassesstays empty for the whole session. The listener now lazy-captures: ifDESCRIPTOR_KEYis unset when an event arrives, it readsselectedContentthen and stores it back. - Clicking the run-tab toolbar icon now opens the report routed to a test from the just-completed run (using the recorded class's
sourceId), matching the gutter / test-tree right-click behaviour, instead of landing on the UI's default sidebar selection. - Site-mode discriminator no longer requires
manifest.jsonto be on disk — it matches the directory shape…/kensa-site/sources/<id>/indices.json, so reports load after running:uiTeststandalone without:assembleKensaSite. The "open" path still surfaces the missing-shell warning when the user clicks before assembling the site.
0.8.1-eap.1
Added
- Site-mode discovery: gutter icons and the test-tree context menu now recognise Kensa 0.8 site bundles (
build/kensa-site/sources/<id>/) in addition to the defaultkensa-output/layout. The plugin walks forindices.jsonwhose grandparent issources/and whose great-grandparent has amanifest.json. - Multi-source routing: when a test class lives in a Gradle source set whose name matches a Kensa source id (the default mapping), gutter clicks open the site shell with a
<sourceId>::<class>route, so the report sidebar lands on the correct source. Same class run in two source sets stays separated; the gutter icon for a file insrc/uiTest/...reflects theuiTestsource's status. - Tools → "Install Kensa Agent Skills…" action (also surfaced in Settings → Tools → Kensa) that writes the
kensa-developmentAI skill into a project. Targets: GitHub Copilot (path-scoped or always-loaded), JetBrains Junie, Cursor, and Claude Code. Skill files are bundled with the plugin and pinned to the Kensa version inversion.txt(sourced fromkensa-dev/agent-skills).
Fixed
KensaTestRunListenerfailed to instantiate on IntelliJ 2026.1+ (build 261+) withCannot find suitable constructor, breaking gutter status updates and the engagement notification on that build line. Added@JvmOverloadsso the platform's stricter constructor lookup finds the(Project)overload.- Possible fixes for unreliable display of test runner icon & Kensa Report bubble.
- Opening a report from a site-mode source bundle whose shell isn't on disk now produces a clear "run
./gradlew assembleKensaSite" warning, instead of silently failing. - Project-view "Open Kensa Report" group now lists site-mode reports (
build/kensa-site/index.html), not justkensa-output/bundles. Previously the group's children walker only matched the legacy parent name and rendered the menu disabled in site-mode projects. - "Kensa Report Ready" balloon no longer fires twice when a multi-sourceset site build completes. The notification debounce is now per-
index.htmlover a 60s window, so the twosources/<id>/indices.jsonwrites that share one site shell coalesce into a single balloon. - Run-tab "Open Kensa Report" toolbar icon stayed hidden after Gradle-delegated test runs.
KensaTestRunListener.onTestingStartedwas capturing the activeRunContentDescriptorviaRunContentManager.selectedContent, but for Gradle-delegated runs the Build tool window holds focus while Gradle ramps up — selected content isnull(or the previous tab) at that moment, soDESCRIPTOR_KEYnever gets written,rootDescriptor()returns null on every later event, andKensaRunTabRegistry.seenClassesstays empty for the whole session. The listener now lazy-captures: ifDESCRIPTOR_KEYis unset when an event arrives, it readsselectedContentthen and stores it back. - Clicking the run-tab toolbar icon now opens the report routed to a test from the just-completed run (using the recorded class's
sourceId), matching the gutter / test-tree right-click behaviour, instead of landing on the UI's default sidebar selection. - Site-mode discriminator no longer requires
manifest.jsonto be on disk — it matches the directory shape…/kensa-site/sources/<id>/indices.json, so reports load after running:uiTeststandalone without:assembleKensaSite. The "open" path still surfaces the missing-shell warning when the user clicks before assembling the site.
0.8.0
Added
- Site-mode discovery: gutter icons and the test-tree context menu now recognise Kensa 0.8 site bundles (
build/kensa-site/sources/<id>/) in addition to the defaultkensa-output/layout. The plugin walks forindices.jsonwhose grandparent issources/and whose great-grandparent has amanifest.json. - Multi-source routing: when a test class lives in a Gradle source set whose name matches a Kensa source id (the default mapping), gutter clicks open the site shell with a
<sourceId>::<class>route, so the report sidebar lands on the correct source. Same class run in two source sets stays separated; the gutter icon for a file insrc/uiTest/...reflects theuiTestsource's status. - Tools → "Install Kensa Agent Skills…" action (also surfaced in Settings → Tools → Kensa) that writes the
kensa-developmentAI skill into a project. Targets: GitHub Copilot (path-scoped or always-loaded), JetBrains Junie, Cursor, and Claude Code. Skill files are bundled with the plugin and pinned to the Kensa version inversion.txt(sourced fromkensa-dev/agent-skills).
Fixed
KensaTestRunListenerfailed to instantiate on IntelliJ 2026.1+ (build 261+) withCannot find suitable constructor, breaking gutter status updates and the engagement notification on that build line. Added@JvmOverloadsso the platform's stricter constructor lookup finds the(Project)overload.- Possible fixes for unreliable display of test runner icon & Kensa Report bubble.
- Opening a report from a site-mode source bundle whose shell isn't on disk now produces a clear "run
./gradlew assembleKensaSite" warning, instead of silently failing. - Project-view "Open Kensa Report" group now lists site-mode reports (
build/kensa-site/index.html), not justkensa-output/bundles. Previously the group's children walker only matched the legacy parent name and rendered the menu disabled in site-mode projects. - "Kensa Report Ready" balloon no longer fires twice when a multi-sourceset site build completes. The notification debounce is now per-
index.htmlover a 60s window, so the twosources/<id>/indices.jsonwrites that share one site shell coalesce into a single balloon. - Run-tab "Open Kensa Report" toolbar icon stayed hidden after Gradle-delegated test runs.
KensaTestRunListener.onTestingStartedwas capturing the activeRunContentDescriptorviaRunContentManager.selectedContent, but for Gradle-delegated runs the Build tool window holds focus while Gradle ramps up — selected content isnull(or the previous tab) at that moment, soDESCRIPTOR_KEYnever gets written,rootDescriptor()returns null on every later event, andKensaRunTabRegistry.seenClassesstays empty for the whole session. The listener now lazy-captures: ifDESCRIPTOR_KEYis unset when an event arrives, it readsselectedContentthen and stores it back. - Clicking the run-tab toolbar icon now opens the report routed to a test from the just-completed run (using the recorded class's
sourceId), matching the gutter / test-tree right-click behaviour, instead of landing on the UI's default sidebar selection. - Site-mode discriminator no longer requires
manifest.jsonto be on disk — it matches the directory shape…/kensa-site/sources/<id>/indices.json, so reports load after running:uiTeststandalone without:assembleKensaSite. The "open" path still surfaces the missing-shell warning when the user clicks before assembling the site.
0.8.0-eap.1
Added
- Site-mode discovery: gutter icons and the test-tree context menu now recognise Kensa 0.8 site bundles (
build/kensa-site/sources/<id>/) in addition to the defaultkensa-output/layout. The plugin walks forindices.jsonwhose grandparent issources/and whose great-grandparent has amanifest.json. - Multi-source routing: when a test class lives in a Gradle source set whose name matches a Kensa source id (the default mapping), gutter clicks open the site shell with a
<sourceId>::<class>route, so the report sidebar lands on the correct source. Same class run in two source sets stays separated; the gutter icon for a file insrc/uiTest/...reflects theuiTestsource's status. - Tools → "Install Kensa Agent Skills…" action (also surfaced in Settings → Tools → Kensa) that writes the
kensa-developmentAI skill into a project. Targets: GitHub Copilot (path-scoped or always-loaded), JetBrains Junie, Cursor, and Claude Code. Skill files are bundled with the plugin and pinned to the Kensa version inversion.txt(sourced fromkensa-dev/agent-skills).
Fixed
KensaTestRunListenerfailed to instantiate on IntelliJ 2026.1+ (build 261+) withCannot find suitable constructor, breaking gutter status updates and the engagement notification on that build line. Added@JvmOverloadsso the platform's stricter constructor lookup finds the(Project)overload.- Possible fixes for unreliable display of test runner icon & Kensa Report bubble.
- Opening a report from a site-mode source bundle whose shell isn't on disk now produces a clear "run
./gradlew assembleKensaSite" warning, instead of silently failing. - Project-view "Open Kensa Report" group now lists site-mode reports (
build/kensa-site/index.html), not justkensa-output/bundles. Previously the group's children walker only matched the legacy parent name and rendered the menu disabled in site-mode projects. - "Kensa Report Ready" balloon no longer fires twice when a multi-sourceset site build completes. The notification debounce is now per-
index.htmlover a 60s window, so the twosources/<id>/indices.jsonwrites that share one site shell coalesce into a single balloon. - Run-tab "Open Kensa Report" toolbar icon stayed hidden after Gradle-delegated test runs.
KensaTestRunListener.onTestingStartedwas capturing the activeRunContentDescriptorviaRunContentManager.selectedContent, but for Gradle-delegated runs the Build tool window holds focus while Gradle ramps up — selected content isnull(or the previous tab) at that moment, soDESCRIPTOR_KEYnever gets written,rootDescriptor()returns null on every later event, andKensaRunTabRegistry.seenClassesstays empty for the whole session. The listener now lazy-captures: ifDESCRIPTOR_KEYis unset when an event arrives, it readsselectedContentthen and stores it back. - Clicking the run-tab toolbar icon now opens the report routed to a test from the just-completed run (using the recorded class's
sourceId), matching the gutter / test-tree right-click behaviour, instead of landing on the UI's default sidebar selection. - Site-mode discriminator no longer requires
manifest.jsonto be on disk — it matches the directory shape…/kensa-site/sources/<id>/indices.json, so reports load after running:uiTeststandalone without:assembleKensaSite. The "open" path still surfaces the missing-shell warning when the user clicks before assembling the site.