Commit Graph
309 Commits
Author SHA1 Message Date
1grzyb1andClaude Opus 5.5 c9bbb03f0c Push the recorded release commit with the workflow token
claude-code-action sets origin to its GitHub App token and revokes it at
the end of its step, so the following push in "Record the release commit
the page describes" failed with "Invalid username or token".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 12:12:27 +01:00
1grzyb1andClaude Opus 5.5 ac56c4b379 Fix(VIM-4350): Limit the YouTrack Area Claude run to its YouTrack scripts
The run reads untrusted ticket text, and `Bash(npx tsx:*)` allowed
`npx tsx -e` with YOUTRACK_TOKEN and the Anthropic key in the environment.

- Allow only the youtrack-cli scripts the prompt uses.
- Force every comment from this run to be private, so it can't publish
  anything it read.
- Pass the dispatch input via env instead of interpolating it into `run:`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 11:49:17 +01:00
1grzyb1andClaude Opus 5.5 a594a245c8 Fix(VIM-4350): Take GitHub write access away from the changelog Claude run
Claude reads untrusted text (PR comments, YouTrack tickets) while updating
the changelog, and its PRs were auto-merged, so a prompt injection could
reach master or leak secrets through `gh`.

- Claude can only edit CHANGES.md and use read-only git/gh commands; the
  push token is not persisted in .git/config.
- A separate step opens the PR with GITHUB_TOKEN only if CHANGES.md is the
  only changed file, dispatches PR verification for it and enables
  auto-merge.
- Remove mergeClaudeChangelogPR.yml, Claude no longer opens these PRs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 11:49:17 +01:00
1grzyb1andClaude Opus 5.5 186c2bf7f5 Fix(VIM-4350): Prevent shell injection and unchecked changelog auto-merge
- youtrackAutoAnalysis: pass step outputs (ticket summary, Claude-generated
  statuses and attention reasons) to run scripts via env instead of
  interpolating them into the script, so a crafted ticket summary can't
  execute shell commands on the runner.
- mergeClaudeChangelogPR: auto-merge only PRs that change CHANGES.md alone,
  and disable auto-merge if a later push touches other files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 11:49:16 +01:00
1grzyb1andClaude Opus 5.5 3580099c61 Fix(VIM-4350): Restrict What's New Claude workflow to maintainers and allowed files
Anyone could open a fork PR with the What's New title and inject a prompt
via a comment into a Claude run with repository write access.

- Run only for OWNER/MEMBER/COLLABORATOR comments, and verify the PR head is
  JetBrains/ideavim:whatsnew-tbr and the commenter has write access.
- Claude can only edit whatsnew-tbr.html and CHANGES.md and has no
  commit/push access; the push token is not persisted in .git/config.
- A separate step pushes the edits only if no other files changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 11:49:16 +01:00
1grzyb1 0efcd70c6f VIM-4228 Move Rider tests to teamcity 2026-10-14 16:28:42 +02:00
1grzyb1 5fd38b21b3 Improve release process
Our pipeline could mark issues on youtrack as fixed even if they were not in release branch.
Added single script for all pipelines to deremine which commits enetered given release so changelog, whats new and release itself are using exactly same logic
2026-10-09 10:13:18 +02:00
1grzyb1 c1d9ee7378 Generate the help file that :help opens from command annotations
Commands describe themselves in @ExCommand/@CommandOrMotion, generateHelp renders the Vim-style help file and a workflow keeps it up to date on master.
2026-10-05 10:57:50 +02:00
1grzyb1 719335d4cb Debug failing claude actions 2026-09-23 09:13:14 +02:00
1grzyb1andCursor 858055c6e4 Increase claude permissions in propertyTestsAutoFix
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-28 08:22:54 +02:00
1grzyb1 29be1994a9 Fix property-based workflow
Once a day github action will check failing property-based tests and run claude agent to try fix those failing cases and prepare PR with fix
2026-08-27 10:40:50 +02:00
Alex PlateandClaude Opus 5 3d0398c127 Set the YouTrack Area field with a Claude workflow
Moves the Area field agent from the JetBrains/vim-claude-robot repository
into this one, where the YouTrack tooling and the Claude proxy setup
already exist.

The previous agent passed a single prompt to `claude -p` with the ticket
summary, the ticket description, and the list of Area values. It had no
tools, so it could not read the ticket comments, see how an Area value is
used on other tickets, or look at the source. The new workflow runs an
agent that reads the ticket, searches comparable tickets when the right
value is not obvious, and greps the code when the ticket names a command
or an option.

A script selects the ticket, so a run with nothing to triage ends before
the agent starts.

Add to the YouTrack tools:
- searchTickets, which reports the Area values of the tickets it finds
- getAreaValues and setArea, which reject unknown value names before
  writing and verify the field afterwards
- setTagByName, so a tag no longer needs a hardcoded id

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 12:56:56 +03:00
1grzyb1 dd4d9b5a8a publish whatsnew pages on gh pages 2026-08-13 10:16:34 +02:00
1grzyb1 ef4f29ebc0 Run tests for EAP on java 25 2026-07-09 11:57:53 +02:00
1grzyb1 0f7d95a8c9 Add workflow to update What's from PR 2026-06-30 13:07:33 +02:00
1grzyb1 058b28afa3 Create preview of generated whats new page 2026-06-24 11:23:17 +02:00
1grzyb1 e8df8dacde Release pipeline for updating what's new
It's two-step process
1. manual run of prepare what's new that will generate html page with blogpost about what's new
2. promote current whatsnew-tbr.html to new version in release pipeline
2026-06-24 11:23:17 +02:00
1grzyb1 214c4be0f1 Migrate gh workflows to go through anthropic proxy 2026-06-13 08:23:31 +02:00
1grzyb1 269fb99983 Change way of authorization to claude in unpdate changelog action 2026-06-11 09:34:58 +00:00
Alex PlateandClaude Opus 4.7 60a0d67c0f Drop manual changeNotes sync from changelog skill and PR-review prompt
`build.gradle.kts` `changeNotes` is now auto-derived from CHANGES.md at
build time via the org.jetbrains.changelog plugin, so the skill and the
claude-code-review workflow note no longer need to mention syncing it
by hand.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 14:51:42 +03:00
1grzyb1 2cb5e5b658 VIM-4234 Rollback to java 21
It turns out platform 2025.3 doesn't work with java 25
2026-05-15 10:10:45 +00:00
Alex Plate d731961a86 Remove pull_request_review trigger from Claude Code workflow
The pull_request_review event check was failing on nearly every review,
adding noise without value. Other triggers (issue comments, PR review
comments, issues) still respond to @claude mentions.
2026-05-15 12:58:56 +03:00
1grzyb1 4225b32f55 Update java to version 25 2026-05-12 11:34:21 +00:00
Alex Plate b5d2f9c3d8 Fix(VIM-2974): Remove remaining octopus.handler references
Step 5/N of removing the octopus handler. Cleanup pass over build config,
CI workflows, and stale comments. No runtime behavior change.

- build.gradle.kts: drop systemProperty("octopus.handler", ...) from
  runIde, runPycharm, runWebstorm, runClion, and runIdeForUiTests.
  The runIde { } block becomes empty and is removed entirely.
- Delete .github/workflows/runUiOctopusTests.yml: this workflow ran the
  UI test suite with -Doctopus.handler=false to verify behavior without
  octopus. That is now the only behavior, so the workflow is redundant
  with runUiTestsIJ.yml.
- IdeaSpecifics.LookupTopicListener and RiderEscLookupListener: update
  comments that justified Rider/CLion Nova-specific handling as "octopus
  is disabled (VIM-3815)". The actual reason is unrelated to octopus:
  these IDEs' popup manager consumes Escape before the action system
  runs. The Rider/CLion Nova gating remains correct.
2026-04-24 17:41:48 +03:00
Alex PlateandClaude Opus 4.7 81bf421436 Auto-merge Claude-generated changelog PRs
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 14:39:34 +03:00
1grzyb1 9f33320e66 Move split mode tests to team city 2026-04-09 14:21:18 +02:00
1grzyb1 527f612e75 VIM-3918 Run split mode tests using github actions
To make it work same way as ui tests I moved split mode tests to run on gh also
2026-03-26 09:51:15 +01:00
1grzyb1 7290a85166 Make Claude Code Review workflow manual and context-aware 2026-01-26 08:49:45 +01:00
Alex PlateandClaude Opus 4.5 2f83606662 Change UI tests schedule to every 30 minutes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 12:35:24 +02:00
Alex PlateandClaude Opus 4.5 9394788e34 Add UI test debugging principles to autofix prompt
Add general guidance for fixing flaky UI tests:
- Flaky = race condition, not timeout issue
- Wait for unique state identifiers, not shared elements
- Understand framework built-in waits (findText already waits)
- Trace causality backwards to find correct wait condition
- State transitions have intermediate states

These principles should improve autofix success rate for UI test failures.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 12:34:50 +02:00
Alex PlateandClaude Opus 4.5 b7607934a1 Change IntelliJ UI tests schedule from every 5 minutes to daily
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 11:50:28 +02:00
Alex PlateandClaude Opus 4.5 ed0f74d85c Run UI tests every 5 minutes to test stability
Testing the UI tests stability with more frequent runs.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 15:08:59 +02:00
Alex PlateandClaude Opus 4.5 add0c5b327 Run UI tests every 30 minutes instead of daily
Increase frequency to verify test stability.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 14:55:17 +02:00
Alex PlateandClaude Opus 4.5 9ef7ce1d36 Add Neovim installation to Claude Code workflows
Install Neovim in workflows that run tests:
- testsMaintenance.yml: deals with @TestWithoutNeovim annotations
- codebaseMaintenance.yml: can run gradle tests
- youtrackAutoAnalysis.yml: uses TDD for bug fixes and features

Also add guidance in testsMaintenance to verify actual Neovim behavior
when working with skip reasons, and allow nvim/echo bash commands.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 07:05:27 +02:00
Alex PlateandClaude Opus 4.5 64dfcdb9fa Remove clean task from PR verification workflow
Allows Gradle caching to be effective.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 19:05:34 +02:00
Alex PlateandClaude Opus 4.5 eaeb3eeb79 Fix artifact upload paths in PR verification workflow
Remove incorrect ideavim/ prefix from paths - the checkout is at repo root.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 17:22:09 +02:00
Alex PlateandClaude Opus 4.5 b24dd33e3b Temporarily disable macOS UI tests in IJ workflow
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 17:15:59 +02:00
Alex PlateandClaude Opus 4.5 0bdecdc4c2 Fix disk space issues in Linux UI test workflows
Add disk space cleanup and reduce video recording size for Linux runners:
- Add "Free up disk space" step to remove .NET, Android SDK, GHC, CodeQL
- Reduce Xvfb resolution from 1920x1080 to 1280x720
- Optimize ffmpeg: 15fps, ultrafast preset, crf 28

This aligns with the existing Rider Linux workflow settings.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 17:15:59 +02:00
Alex PlateandClaude Sonnet 4.5 64eca1ca11 Fix missing dependencies and git staging rule in UI test analysis jobs
Added missing dependencies:
- Java 21 setup (required for compilation verification)
- FFmpeg installation (required for ffprobe video analysis)

Added critical git staging rule to all UI test workflows:
- NEVER use `git add -A` or `git add .` when creating fix branches
- Always add modified files explicitly by path
- This prevents accidentally staging unrelated files that could cause
  push failures due to GitHub App workflow permission restrictions

Affected workflows:
- runUiTestsIJ.yml (unified IntelliJ IDEA tests)
- runUiPyTests.yml (PyCharm macOS tests)
- runUiPyTestsLinux.yml (PyCharm Linux tests)
- runUiRdTests.yml (Rider macOS tests)
- runUiRdTestsLinux.yml (Rider Linux tests)
- runUiOctopusTests.yml (Non-Octopus tests)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-08 07:32:43 +02:00
Alex PlateandClaude Sonnet 4.5 54ec06ecf2 Fix Gradle cache for macOS Rider and PyCharm UI tests
Add explicit cache-read-only: false to ensure Gradle cache
is properly written and read on macOS builds, matching the
configuration used in the unified IntelliJ workflow.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-07 23:32:36 +02:00
Alex Plate 59696e1b75 Add UI test best practices to prompts: prefer cause-effect over timeouts 2026-01-07 23:24:36 +02:00
Alex Plate d7d9774dca Add java and which commands to allowed tools in UI test workflows 2026-01-07 23:14:07 +02:00
Alex Plate e1c7301802 Fix PyCharm IDE type from PU to PY in UI test workflows 2026-01-07 23:11:44 +02:00
Alex Plate 5543790620 Fix Gradle cache for Linux in unified IntelliJ IDEA workflow 2026-01-07 23:01:26 +02:00
Alex Plate 1df726e510 Change PyCharm IDE type from PC to PU 2026-01-07 22:54:17 +02:00
Alex Plate 4944053e51 Add mandatory compilation and test verification to UI test workflows 2026-01-07 22:54:17 +02:00
Alex Plate a819f84dc5 Replace separate UI test workflows with unified IntelliJ IDEA workflow 2026-01-07 18:39:32 +02:00
Alex Plate fe55795f71 Add disk cleanup and reduce screen recording size for Rider Linux tests 2026-01-07 18:22:02 +02:00
Alex PlateandClaude Sonnet 4.5 8be630ed68 Add full tool permissions for automated PR creation in UI tests
Added Edit, Bash(git:*), Bash(gh:*), Bash(gradle:*), and Bash(./gradlew:*)
to the allowed-tools list in all UI test workflows.

This enables Claude Code to fully automate the PR creation process:
- Edit: Modify source files to apply fixes
- Bash(git:*): Create branches, add files, commit, push
- Bash(gh:*): Create pull requests
- Bash(gradle:*) & Bash(./gradlew:*): Run tests to verify fixes

Without these permissions, Claude Code would get "command requires approval"
errors when trying to create branches or edit files, preventing automated
PR creation.

Updated workflows:
- runUiTests.yml (IntelliJ macOS)
- runUiTestsLinux.yml (IntelliJ Linux)
- runUiTestsUnified.yml (IntelliJ unified)
- runUiRdTests.yml (Rider macOS)
- runUiRdTestsLinux.yml (Rider Linux)
- runUiPyTests.yml (PyCharm macOS)
- runUiPyTestsLinux.yml (PyCharm Linux)
- runUiOctopusTests.yml (Octopus macOS)

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-07 18:00:45 +02:00
Alex PlateandClaude Sonnet 4.5 45525ea215 Enable Gradle configuration cache for Linux UI tests
Added --configuration-cache flag to buildPlugin task in all Linux
UI test workflows to significantly improve build performance.

The configuration cache stores the result of the configuration phase
and reuses it for subsequent builds, avoiding the need to re-evaluate
build scripts when inputs haven't changed. This is particularly
beneficial for UI tests that run frequently on schedule.

Note on "Gradle User Home cache not found" message: This is expected
when the commit SHA changes, as the gradle-home cache key includes it
for security. However, the more important dependency and transform
caches use content-based hashing and are restored correctly across
commits, which is why builds still benefit from caching.

Updated workflows:
- runUiTestsLinux.yml
- runUiRdTestsLinux.yml
- runUiPyTestsLinux.yml
- runUiTestsUnified.yml (both jobs)

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-07 17:57:20 +02:00