Commit Graph
295 Commits
Author SHA1 Message Date
Alex Plate 5a9d1fd0a3 Fix YAML syntax in macOS workflow - use heredoc for Python code 2026-01-06 23:39:33 +02:00
Alex PlateandClaude Sonnet 4.5 c817436e2a Try multiple click methods and coordinates for macOS permission dialog
Attempts to auto-click the "Allow" button for screen recording permission using:
- cliclick (most reliable, installed via brew)
- AppleScript with coordinates
- Python CGEvent (low-level click simulation)

Tests multiple coordinate positions to handle different screen resolutions:
- 512,367 (standard dialog position)
- 960,540 (higher resolution)
- 640,400 and 800,450 (fallback positions)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 23:32:24 +02:00
Alex PlateandClaude Sonnet 4.5 7f0d24965f Add Linux UI test workflow with screen recording and AI analysis
Creates a separate workflow for running UI tests on Ubuntu with:
- Xvfb virtual display for headless GUI testing
- FFmpeg screen recording using x11grab
- Claude Code AI analysis of test failures
- Artifact upload for test reports and recordings

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 23:22:26 +02:00
Alex PlateandClaude Sonnet 4.5 0d5db19301 Fix Windows workflow to use bash shell instead of PowerShell
Changed Windows UI test workflow from PowerShell to bash:
- Run Idea: Now properly runs in background with `&`
- Screen recording: Uses bash syntax for background process and PID capture
- Stop recording: Uses standard bash kill command

Problem: PowerShell Start-Process completed immediately instead of
keeping gradle running in background, causing IntelliJ to never start
and health check to fail.

Solution: Use bash shell (available via Git Bash on Windows runners)
which properly handles background processes with `&` syntax.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 23:03:16 +02:00
Alex PlateandClaude Sonnet 4.5 66e682dd55 Auto-click Allow button for ffmpeg screen recording permission on macOS
Added AppleScript automation to automatically grant screen recording
permission when the macOS permission dialog appears:
- Waits 2 seconds after ffmpeg starts
- Tries up to 10 times (1 second intervals) to click Allow button
- Uses SecurityAgent process to interact with system permission dialog
- Fails gracefully if dialog doesn't appear

This eliminates the manual permission prompt that was blocking
automated screen recording on macOS GitHub Actions runners.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 22:48:26 +02:00
Alex PlateandClaude Sonnet 4.5 0c7323e4fa Add Windows UI tests workflow with screen recording
Created separate workflow for Windows UI tests:
- Runs on windows-latest
- FFmpeg installation via Chocolatey
- Screen recording using gdigrab (Windows GDI Grabber)
- No permission dialogs on Windows (unlike macOS)
- PowerShell for process management
- Gradle caching enabled
- Only runs IJ tests for now
- AI analysis on test failures
- Records at 30fps with H.264 codec

This provides an alternative platform for UI testing with
working screen recording capabilities.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 12:04:07 +02:00
Alex PlateandClaude Sonnet 4.5 c3486a6b4e Remove --no-configuration-cache flag from UI test workflows
Removed --no-configuration-cache flag from all runIdeForUiTests commands
to enable Gradle configuration cache and improve build performance.

This works together with the gradle/actions/setup-gradle@v4 action
to provide optimal caching.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 11:41:55 +02:00
Alex PlateandClaude Sonnet 4.5 41f6bd1782 Add Gradle caching to UI test workflows
Enabled gradle/actions/setup-gradle@v4 for all UI test workflows:
- runUiTests.yml
- runUiPyTests.yml
- runUiRdTests.yml
- runUiOctopusTests.yml

This action automatically caches:
- Gradle wrapper
- Dependencies
- Gradle build cache

This should significantly speed up the "Build Plugin" step on
subsequent runs.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 11:37:16 +02:00
Alex PlateandClaude Sonnet 4.5 77fbe1ae2b Replace Gradle video recorder with CI-level screen recording
Extended macOS CI screen recording to all UI test workflows:
- Added FFmpeg screen recording to PyCharm, Rider, and Octopus tests
- Removed Linux UI tests workflow (runUiTestsLinux.yml)

Removed video-recorder-junit5 library from codebase:
- Removed dependency from all UI test modules
- Removed video recorder system properties from Gradle configs
- Removed @Video annotations and imports from all test files
- Removed "Move video" steps from all workflows

Updated Claude AI analysis prompts:
- Changed from dual video sources to single CI recording
- Added helpful ffmpeg commands for video analysis:
  * Extract frames at specific times
  * Create thumbnail grids
  * Get video duration
  * Extract last N seconds

This simplifies the video recording setup by relying solely on
CI-level screen capture, which provides complete coverage of the
entire test run.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 11:21:46 +02:00
Alex PlateandClaude Sonnet 4.5 f6f4caaf5c Fix screen recording device index for macOS CI
Changed FFmpeg device from "1:0" to "0:none" for proper screen capture.
Added device listing step for debugging.

The previous device index caused "Invalid device index" error.
Using "0:none" captures screen 0 without audio, which is the correct
format for avfoundation screen capture on macOS runners.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 10:48:52 +02:00
Alex PlateandClaude Sonnet 4.5 1424e200dc Add CI-level screen recording to macOS UI tests
Added FFmpeg screen recording at CI level using avfoundation:
- Captures full screen at 30fps starting when IntelliJ launches
- Saves to build/reports/ci-screen-recording/screen-recording.mp4
- Complements Gradle test video with full session recording
- Updated AI analysis prompt to reference both video sources

This provides a complete recording of the entire test run, which may
catch issues that occur outside the focused Gradle test recording.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 10:31:09 +02:00
Alex PlateandClaude Sonnet 4.5 ebc9840fb9 Add separate Linux UI tests workflow
Created new runUiTestsLinux.yml with modern Linux configuration:
- Uses ubuntu-latest with Xvfb for headless display
- FFmpeg for video recording
- Same test suite as macOS (ui-ij-tests only)
- AI analysis on test failures
- Updated to Java 21 and latest action versions

Removed old commented-out Linux job from runUiTests.yml.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 10:08:36 +02:00
Alex Plate 49ebe672cb Remove --auto-approve-tools flag, keep just --allowed-tools 2026-01-05 23:48:52 +02:00
Alex Plate 4a613b5c83 Add missing bash commands and auto-approve Write for build/reports 2026-01-05 23:45:57 +02:00
Alex Plate ba4913fb0a Add allowed tools to Claude Code AI analysis step 2026-01-05 23:39:54 +02:00
Alex Plate 70305d2f0e Add id-token permission to UI test workflows for Claude Code action 2026-01-05 23:06:21 +02:00
Alex PlateandClaude Sonnet 4.5 ed0c292736 Add Claude Code AI analysis step to UI test workflows
When UI tests fail, Claude Code now automatically analyzes the failure by examining test reports, video recordings, and IDE logs. The analysis is saved to build/reports/ai-analysis/analysis.txt and included in uploaded artifacts.

Requires ANTHROPIC_API_KEY secret to be configured in GitHub repository settings.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 22:36:09 +02:00
Alex PlateandClaude Sonnet 4.5 264ccd5119 Add Claude Code AI analysis step to UI test workflows
When UI tests fail, Claude Code now automatically analyzes the failure by examining test reports, video recordings, and IDE logs. The analysis is saved to build/reports/ai-analysis/analysis.txt and included in uploaded artifacts.

Requires ANTHROPIC_API_KEY secret to be configured in GitHub repository settings.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 19:23:38 +02:00
Alex PlateandClaude Sonnet 4.5 1d2b7b7be5 Add grep and ls commands to YouTrack auto-analysis allowed tools
Extend allowed bash tools in all workflow steps to include:
- Bash(grep:*) for text searching and filtering
- Bash(ls:*) for directory listing

This resolves permission denials when Claude needs to run compound
bash commands with grep or ls in the YouTrack auto-analysis workflow.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 17:37:24 +02:00
Alex PlateandClaude Sonnet 4.5 e4e59a1b50 Re-enable Claude Code action in changelog workflow
Uncomment the Claude Code action step now that we've migrated to
API-based tracking.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 10:14:21 +02:00
Alex PlateandClaude Sonnet 4.5 17ba420e16 Migrate changelog workflow to use GitHub API instead of tags
Replace tag-based tracking (workflow-changelog) with GitHub Actions API
to track last successful workflow run. This approach is more reliable and
eliminates the need to manage tags.

Changes:
- Use gh run list to get last successful run's commit SHA
- Remove tag creation/deletion step
- Delete workflow-changelog tag from repository
- Update changelog skill documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 10:13:53 +02:00
Alex PlateandClaude Sonnet 4.5 3c30b1e9a8 Test tag update without Claude action
Revert ssh-key addition and comment out Claude Code action step to
test if the tag push works in isolation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 10:09:25 +02:00
Alex PlateandClaude Sonnet 4.5 16627917e6 Fix authentication for tag push in updateChangelogClaude workflow
The workflow was failing with "Authentication failed" when attempting
to push the workflow-changelog tag. The anthropics/claude-code-action
modifies git configuration during PR creation, which breaks subsequent
tag pushes.

Added ssh-key parameter to checkout step to use SSH authentication,
matching the approach in updateAuthors.yml and other workflows.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 09:59:58 +02:00
Alex PlateandClaude Sonnet 4.5 74fd5e7550 Include test reports in PR verification workflow artifacts
Updates artifact paths to use workspace-relative paths starting with
"ideavim" and includes entire reports directories from both main module
and java-tests module. This ensures test reports are available for
debugging failed PR checks.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-03 23:30:18 +02:00
Alex PlateandClaude Sonnet 4.5 f60ce5df8e Add note about changelog-only PRs to Claude Code review workflow
Informs the reviewer that PRs containing only CHANGES.md and
build.gradle.kts changeNotes are created automatically by
updateChangelogClaude.yml workflow, with actual implementation
in previous commits. Prevents false reports of missing implementation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-03 23:30:17 +02:00
Alex PlateandClaude Sonnet 4.5 375a8ec87e Add IDEAVIM_API_USED skip reason for Neovim tests
This skip reason is used when tests call IdeaVim API functions (both
public plugin API and internal API) that prevent proper Neovim state
synchronization. When these APIs are used directly in tests, we cannot
update the Neovim state accordingly, making test verification impossible.

Tests should only use VimTestCase functions for Neovim compatibility.

Updated the Tests Maintenance workflow to document this constraint,
clarifying that Neovim can only test methods using VimTestCase functions.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-03 01:09:48 +02:00
Alex PlateandClaude Opus 4.5 5a8299df27 Remove Kover code coverage integration
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 23:32:38 +02:00
Alex PlateandClaude Opus 4.5 679c1ccbc3 Add problems report artifact to PR verification workflow
Upload the Gradle problems report as an artifact so it can be
downloaded and viewed when tests fail.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 23:31:01 +02:00
Alex PlateandClaude Opus 4.5 9a9b846754 Add gradlew to allowed tools in all YouTrack workflow steps
Previously only bug-fix and feature-impl steps had Bash(./gradlew:*)
in their allowed tools. Now all 8 Claude steps can run gradle commands
without requiring manual approval.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 15:39:28 +02:00
Alex PlateandClaude Opus 4.5 b8d4d38253 Add YouTrack skill for Claude Code integration
Create a Claude skill for interacting with YouTrack issue tracker:
- Add CLI wrapper scripts in scripts-ts/src/youtrack-cli/
- Add release management functions to youtrack.ts (ported from Kotlin)
- Update youtrackAutoAnalysis.yml to use the skill instead of curl
- Document YouTrack usage in CLAUDE.md

CLI scripts:
- add-comment.ts, add-tag.ts, remove-tag.ts
- set-status.ts, get-ticket.ts, set-fix-version.ts
- create-version.ts, delete-version.ts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 13:44:27 +02:00
Alex PlateandClaude Opus 4.5 372d9535a6 Fix checkClaudeModel workflow OIDC authentication
Add missing permissions block with id-token: write required for
anthropics/claude-code-action to obtain OIDC token.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 12:58:41 +02:00
Alex PlateandClaude Opus 4.5 890efcb6e7 Refactor: Migrate updateAuthors to TypeScript
Move the author update script from Kotlin to TypeScript, including tests.

Changes:
- Create scripts-ts/src/updateAuthors.ts
- Create scripts-ts/src/updateAuthors.test.ts with vitest
- Add vitest to package.json
- Create scriptsTests.yml workflow for running tests
- Update updateAuthors.yml workflow to use Node.js
- Remove Kotlin implementation and test
- Remove unused github-api dependency

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 10:13:37 +02:00
Alex PlateandClaude Opus 4.5 a14c8a5ab8 Refactor: Migrate checkNewPluginDependencies to TypeScript
Move the plugin dependency checker from Kotlin to TypeScript for
consistency with other scripts.

- Create scripts-ts/src/checkNewPluginDependencies.ts
- Update workflow to use Node.js instead of JDK/Gradle
- Remove Kotlin implementation and Gradle task

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 10:05:57 +02:00
Alex PlateandClaude Opus 4.5 69691845bb Remove CI integrations test workflow and related code
Delete unused integration test infrastructure:
- .github/workflows/integrationsTest.yml
- scripts/src/main/kotlin/scripts/integrationsTest.kt
- Gradle task from build.gradle.kts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 10:02:00 +02:00
Alex PlateandClaude Opus 4.5 57d477199e Refactor: Migrate updateYoutrackOnCommit to TypeScript
Move the script from Kotlin (scripts/) to TypeScript (scripts-ts/)
for consistency with other YouTrack automation scripts.

Changes:
- Add setStatus() function to youtrack.ts
- Create updateYoutrackOnCommit.ts with git log parsing
- Update GitHub workflow to use Node.js instead of JDK/Gradle
- Remove Kotlin implementation and changelogUtils.kt

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 10:01:59 +02:00
Alex PlateandClaude Opus 4.5 e8ead1fe88 Add context7 MCP tools to allowed-tools list
The context7 plugin tools need to be explicitly listed in claude_args
allowed-tools for Claude to use them without permission prompts.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 15:00:04 +02:00
Alex PlateandClaude Opus 4.5 dd030701f1 Add context7 plugin reminder to workflow prompts
Added a reminder about the available context7 MCP plugin to all Claude
prompts that have it enabled (triage, planning, bug-fix, feature-impl).
This helps Claude know it can look up Vim documentation when needed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 14:23:33 +02:00
Alex PlateandClaude Opus 4.5 aaf3e75821 Fix: Add Edit and Write tools to planning step
The planning step needs to update analysis_state.json with the plan.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 14:19:46 +02:00
Alex PlateandClaude Opus 4.5 1ba8ddab1d Add planning step and smart clarification handling to YouTrack workflow
Introduces a planning phase between triage and implementation that:
- Explores the codebase to understand what needs to be implemented
- Creates a detailed implementation plan for bug fixes/features
- Asks for clarification when genuinely ambiguous (posts YouTrack comment)

Smart ticket selection with automatic answer detection:
- Prioritizes tickets with pending clarifications
- Uses AI to check if owner has answered questions
- Automatically removes pending tag when answered
- Falls back to random selection if no pending answers

Key changes:
- youtrack.ts: Add pending clarification tag constant and removeTag()
- selectTicketForAnalysis.ts: Query pending tickets first, add state fields
- completeTicketAnalysis.ts: Skip tagging for needs_clarification/no_answer
- Workflow: Add Step 0 (check answers) and Step 2 (planning)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 14:06:35 +02:00
Alex Plate fb562267fb Fix workflow run link in PR body using GitHub context
Use ${{ github.* }} context instead of shell env vars so the
URL is properly expanded before being passed to Claude.
2025-12-27 13:24:43 +02:00
Alex Plate c6fad01ffb Add attention_reason to code review step
- Added attention_reason to review prompt
- Added review.attention_reason to JSON structure
- Added permission denial detection to parse-review
- Added review attention to workflow summary
- Added review attention to fail condition
2025-12-27 13:21:52 +02:00
Alex Plate d0a7199dde Clarify outdated ticket criteria: age alone is not a factor
Age is NEVER a reason to mark a ticket as outdated. Many 10-15+ year
old tickets are still valid. A ticket is outdated only when it has
BOTH vague/environment-specific description AND references to
features/APIs that no longer exist.
2025-12-27 11:48:54 +02:00
Alex Plate 40997f4da7 Allow curl -X POST in triage step for YouTrack comments 2025-12-27 11:39:38 +02:00
Alex Plate 242b9106ee Auto-detect permission denials from execution log
Parse the execution_file JSON to find permission_denials array
and automatically report them as attention_reason, even if Claude
doesn't self-report them. This ensures we catch tool permission
issues even when Claude works around them.
2025-12-27 11:38:38 +02:00
Alex Plate 7ed8b1321d Refactor to JSON-only communication between workflow steps
- All Claude steps now only update analysis_state.json (no text flags)
- All parse steps read from analysis_state.json using jq
- Added triage_attention_reason and changelog object to JSON structure
- Simpler and more consistent data flow
2025-12-27 11:36:30 +02:00
Alex Plate 23118a4610 Make attention_reason orthogonal to main workflow results
- attention_reason is now a separate flag that doesn't replace main status
- Workflow continues with main task even when issues are encountered
- Issues are reported alongside the main result (bug/feature/success/etc)
- Workflow fails at the end if any attention_reason was set
2025-12-27 11:23:24 +02:00
Alex Plate 2ef99e7d05 Improve workflow: add tools, split changelog/PR steps
- Add WebSearch and WebFetch to triage, bug-fix, feature, review steps
- Split Step 4 into 4A (Changelog) and 4B (Create PR)
- Add changelog status to workflow summary
- Track changelog attention reasons
2025-12-27 11:20:14 +02:00
Alex Plate a358641659 Add debug info to parse-triage step
This will help understand:
- What outputs claude-code-action provides
- What the execution_file contains
- Whether the TRIAGE_RESULT pattern can be found
2025-12-27 10:49:56 +02:00
Alex PlateandClaude Opus 4.5 abb5fe1537 Fix: Read from execution_file instead of non-existent response output
The claude-code-action does not have a 'response' output. Instead, it
provides 'execution_file' which is a path to the execution output file.

Changes:
- All parse steps now read from execution_file instead of response
- Added explicit git subcommand patterns to review and PR steps
- Added gh pr pattern for PR creation step

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 10:43:15 +02:00
Alex PlateandClaude Opus 4.5 0eb97727d3 Allow specific git subcommands in bug-fix and feature steps
Add explicit patterns for git branch, git log, git blame, git diff,
and git show to ensure these commands are allowed during implementation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 10:38:52 +02:00