1
0
mirror of https://github.com/chylex/IntelliJ-IdeaVim.git synced 2026-05-04 02:03:07 +02:00
Commit Graph

9697 Commits

Author SHA1 Message Date
Alex Plate
70305d2f0e Add id-token permission to UI test workflows for Claude Code action 2026-01-05 23:06:21 +02:00
Alex Plate
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 Plate
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 Plate
5c0d9569d9 Fix(VIM-4109): Configure test source sets for Gradle 9+ compatibility
After upgrading to Gradle 9.2.1, custom Test tasks no longer
automatically inherit test source set configuration. This caused
UI test tasks to show NO-SOURCE and not execute any tests.

The fix explicitly configures testClassesDirs and classpath for
all three UI test modules:
- tests/ui-ij-tests
- tests/ui-py-tests
- tests/ui-rd-tests

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 18:51:08 +02:00
Alex Plate
517bda93d1 Upgrade Gradle wrapper to 9.2.1
Update from 8.13 to 9.2.1 to ensure CI and local builds use the same
version, and to benefit from Gradle 9 improvements.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 18:14:26 +02:00
Alex Plate
a476583ea3 Fix(VIM-4108): Use default ANTLR output directory for Gradle 9+ compatibility
ANTLR generated files were being included twice in sourcesJar, causing
duplicate entry errors in Gradle 9+. Removed custom outputDirectory to
use the default build/generated-src/antlr/main/ location, following
Gradle best practices.

- Remove custom outputDirectory from generateGrammarSource task
- Update .gitignore (remove obsolete src/main/java generated paths)

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 18:14:19 +02:00
Alex Plate
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 Plate
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 Plate
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 Plate
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 Plate
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 Plate
8805ddac37 Update tests with refined skip reasons and add @VimBehaviorDiffers annotations
- Use `INTELLIJ_PLATFORM_INHERITED_DIFFERENCE` for skip reasons where IntelliJ Platform constraints lead to behavioral differences with Neovim.
- Introduce `@VimBehaviorDiffers` for reverse search test, providing a detailed description of the behavior and marking it for investigation.
2026-01-05 09:43:59 +02:00
Alex Plate
bde8ac3a36 Remove YouTrack skill
The skill is no longer needed - YouTrack operations can be done
directly via CLI scripts in scripts-ts/src/youtrack-cli/

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-04 00:22:18 +02:00
Alex Plate
1f9528a38a Add marks verification to Neovim tests
- Implement comprehensive marks verification checking local (a-z),
  global (A-Z), numbered (0-9), and special marks (<>'^")
- Add ignoredMarks configuration to allow test-specific exclusions
- Exclude '[' and ']' (change marks) from verification due to
  VIM-4107: undo behavior differs between IdeaVim and Neovim
- Add test documenting the change marks undo behavior difference

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-04 00:19:27 +02:00
Alex Plate
db3eb3a006 Add SEE_DESCRIPTION skip reason and remove PLUG
Introduces SEE_DESCRIPTION as a catch-all SkipNeovimReason for
case-specific differences that don't fit standard categories. This
reason requires a mandatory description parameter explaining why
the test cannot be compared with Neovim.

Removes the PLUG reason and replaces its only usage in testPlugMapping
with SEE_DESCRIPTION, explaining that Neovim represents <Plug> as a
single character, causing map state comparison failures.

Updates tests-maintenance skill documentation to reflect the new reason
and its usage guidelines.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-03 23:45:22 +02:00
Alex Plate
21d72b150f Use INTELLIJ_PLATFORM_INHERITED_DIFFERENCE for testAllLinesRange
The test verifies behavior where deleting all lines results in an empty
buffer in IdeaVim, while Neovim always maintains at least one newline
character. This difference is inherited from the IntelliJ Platform's
editor implementation, which allows completely empty editors.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-03 23:31:53 +02:00
Alex Plate
46b4e1f600 Clarify description in @TestWithoutNeovim annotation to specify deleted line range 2026-01-03 23:30:50 +02:00
Alex Plate
e2c86e9eda Add INTELLIJ_PLATFORM_INHERITED_DIFFERENCE skip reason for Neovim tests
This skip reason is for cases where IdeaVim behavior differs from Neovim due
to constraints or design decisions inherited from the IntelliJ Platform.

Examples include:
- Empty buffer handling: Platform editors can be empty while Neovim buffers
  always contain at least one newline character
- Position/offset calculations for newline characters
- Line/column indexing differences

The description parameter is mandatory and must explain what Platform behavior
causes the difference and how it manifests in the test.

🤖 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 Plate
969b1a29aa Add IDEAVIM_WORKS_INTENTIONALLY_DIFFERENT skip reason for Neovim tests
This skip reason is for cases where IdeaVim intentionally deviates from
Neovim behavior to provide better user experience or IntelliJ integration.

The skip reason includes strict usage guidelines requiring clear evidence
(commit messages, code comments, or obvious cases) and mandatory description
explaining the intentional difference.

🤖 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 Plate
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 Plate
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 Plate
5dcb345973 Set clipboard explicitly in tests test notification exists if no ideaput and test no notification if already was. 2026-01-03 23:30:17 +02:00
claude[bot]
868967fbed tests: Improve @TestWithoutNeovim descriptions in AddressTest
Replaced unclear "idk" description with specific explanation of the
behavioral difference between IdeaVim and Vim/Neovim. Added description
to testAllLinesRange to clarify the empty buffer handling difference.

These annotations now clearly document why the tests are excluded from
Neovim verification, making it easier for future maintainers to
understand the intentional behavioral differences.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-03 23:30:01 +02:00
claude[bot]
900a645a72 tests: Improve test content readability in MultipleCaretsTest
Replace meaningless "asdf", "qwer" strings with more descriptive words
like "code", "text", "value", "outer", "inner", etc. This makes the tests
more readable and easier to understand what's being tested.

Changes made:
- Inner/outer block angle tests: asdf -> name/type/value
- Inner/outer block backtick tests: asdf -> code
- Inner/outer block brace tests: asdf -> outer/inner/deep
- Inner/outer block bracket tests: asdf -> outer/inner/item
- Inner/outer block quote tests: asdf -> text/word
- Inner/outer block paren tests: asdf -> outer/inner/value
- Inner/outer block tag tests: asdf1/asdf2/asdf3/qwer -> div/span/em/text
- Outer paragraph test: asdf -> para
- Outer sentence test: asdf -> Sent

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-03 23:07:36 +02:00
claude[bot]
4b4641b874 Update changelog: Fix quote text object whitespace
Added VIM-4105 to changelog for fix to a" a' a` text objects now including surrounding whitespace per Vim specification.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-03 22:56:50 +02:00
Alex Plate
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
claude[bot]
f3abb2a34b Add clearConditions() to gradle steps in build types
Adds clearConditions() call to gradle build steps in LongRunning, Nvim,
PluginVerifier, and RandomOrderTests for consistency with PropertyBased
and TestingBuildType configurations.

The clearConditions() call was previously added to PropertyBased
(deca256e1) and TestingBuildType (152066b73) via TeamCity patches.
This change applies the same pattern to other gradle-based build types
to ensure consistent behavior across all test configurations.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-03 01:09:31 +02:00
claude[bot]
8e9d52c6df Add descriptions to PropertyBased and LongRunning build types
Adds missing description fields to PropertyBased and LongRunning build
configurations for consistency with other build types (RandomOrderTests,
Nvim, TypeScriptTest, etc.).

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-03 01:09:31 +02:00
Alex Plate
d3981be9ba Remove beads integration 2026-01-03 00:56:58 +02:00
Alex Plate
ae03184968 Remove @OptionTest mechanism from test infrastructure
The @OptionTest annotation system was designed to run tests with
multiple option combinations automatically. However, this mechanism
didn't gain popularity and didn't meet the desired criteria for
improving test coverage with different option values.

Tests now set options explicitly using enterCommand() calls, which
provides clearer test intent and simpler debugging.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 00:56:00 +02:00
Alex Plate
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 Plate
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 Plate
09fe3c7e58 Fix: Return computed value in isNeovimTestingEnabled
The function was always returning true instead of the computed
neovimTestingEnabled value.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 23:27:55 +02:00
Alex Plate
071c36db14 Fix: Use testClass instead of javaClass in neovimEnabled
The neovimEnabled function was incorrectly using test.javaClass which
returns the class of the TestInfo object itself, not the actual test
class. This caused annotations like @TestWithoutNeovim on test classes
to be ignored.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 23:26:55 +02:00
Alex Plate
a6db9acd74 Refactor: Migrate VimIndentObject extension to new VimApi
Replace old ExtensionHandler/TextObjectActionHandler pattern with the
new api.textObjects {} DSL. The indentation-based text object algorithm
is preserved but now uses VimApi extension function.

- Use api.textObjects { register() } for ai, aI, ii text objects
- Replace TextRange with TextObjectRange.LineWise
- Remove IndentObject and IndentObjectHandler classes
- Reduce code from ~280 to ~188 lines

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 17:24:55 +02:00
Alex Plate
4624883df6 Refactor: Migrate VimIndentObject to Kotlin 2026-01-02 17:24:55 +02:00
Alex Plate
dfc82d59d4 Rename .java to .kt 2026-01-02 17:24:55 +02:00
Alex Plate
3e0b3f5598 Refactor: Migrate MiniAI extension to new VimApi
- Replace old VimExtensionFacade/ExtensionHandler pattern with
  VimApi.textObjects { register(...) } API
- Use Range.Simple from API module instead of internal TextRange
- Remove PortedMiniAiAction, addAction helper, and PLUG/KEY constants
- Simplify findQuoteRange and findBracketRange as VimApi extensions

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 17:24:54 +02:00
Alex Plate
5c0ca43cf0 Refactor: Replace FLAG_TEXT_BLOCK with preserveSelectionAnchor property
Replace the FLAG_TEXT_BLOCK command flag with a more descriptive
`preserveSelectionAnchor` property in TextObjectActionHandler.

This property controls what happens when the selection anchor is outside
the target text object range in visual mode:
- true (default): extends selection from current anchor
- false: jumps to select only the text object

Commands like iw/aw preserve anchor (extend), while structural text
objects like i(/a(, i"/a", is/as reset anchor (jump).

Also adds comprehensive documentation with examples to both the
internal handler and the public API.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 16:28:22 +02:00
Alex Plate
3852b0b737 Fix(VIM-4105): a" a' a` text objects now include surrounding whitespace
Per Vim docs: "Any trailing white space is included, unless there is
none, then leading white space is included."

Previously IdeaVim only selected the quotes and content without any
surrounding whitespace.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 15:38:47 +02:00
Alex Plate
850c2272b7 Add optional lambda and return scope for chaining in VimApi
Make lambda parameters optional and return scope objects in:
- mappings(), textObjects(), outputPanel(), commandLine(), digraph()

This enables both lambda style and chained style usage:
- Lambda: mappings { nmap("jk", "<Esc>") }
- Chained: mappings().nmap("jk", "<Esc>")

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 11:11:18 +02:00
Alex Plate
76bd4387ac Add text object registration API to VimApi
Introduce TextObjectScope for registering custom text objects via the
plugin API. Text objects can be used with operators (d, c, y) or in
visual mode.

- Add TextObjectScope interface with register() method
- Add TextObjectRange sealed interface (CharacterWise/LineWise)
- Implement TextObjectScopeImpl using IdeaVim's internal mechanisms
- Migrate VimTextObjEntireExtension from Java to Kotlin using new API
- Add textObjects() function to VimApi

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 10:59:07 +02:00
Alex Plate
8cfe31a080 Add Beads configuration and integration files
Introduce Beads for issue tracking:
- Add configuration files: `.beads/config.yaml` and `.beads/metadata.json`.
- Provide documentation in `.beads/README.md`.
- Configure `.beads/.gitignore` for Beads-related exclusions.
- Prepare the repository for AI-native, git-integrated issue tracking workflows.
2026-01-02 10:22:00 +02:00
Alex Plate
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 Plate
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 Plate
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 Plate
7db507bc7f Update vitest to 4.0.16
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 10:30:33 +02:00
Alex Plate
646ed564e9 Add TeamCity build for TypeScript scripts test
Add a simple TypeScript test script and TeamCity configuration to verify
that TS scripts can run on TeamCity agents. The build downloads Node.js
20.18.1 and runs the test script.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 10:24:39 +02:00
Alex Plate
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 Plate
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