Commit Graph
10430 Commits
Author SHA1 Message Date
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
Alex PlateandClaude Opus 4.5 8618cedb7c Add attention_required to triage step and allow cat command
- Added attention_required mechanism to Step 1 (Triage)
- Added Bash(cat:*) to allowed tools for triage step
- Updated parse-triage to extract attention_reason
- Updated workflow summary to show triage attention reasons
- Updated fail condition to include triage attention_required

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 10:32:58 +02:00
Alex PlateandClaude Opus 4.5 304eddf8d0 Refactor YouTrack auto-analysis into multi-step Claude workflow
Split the single monolithic Claude prompt (~200 lines) into 5 focused
steps to improve quality and debuggability:

1. Triage: Determines ticket type (bug/feature) and suitability
2. Bug Fix: TDD-based implementation with root cause analysis
3. Feature: Feature implementation with tests
4. Code Review: Uses code-reviewer subagent
5. Changelog & PR: Creates branch, commits, and PR

Key changes:
- Add analysis_state.json for state passing between steps
- Each step has focused prompt with single responsibility
- Conditional execution based on triage result (bug vs feature)
- Preserved attention_required mechanism for all impl steps
- Updated TypeScript scripts to read/write JSON state file

Benefits:
- Focused prompts reduce confusion
- Better debugging (see where pipeline fails)
- Early termination for unsuitable tickets
- Consistent code review (always happens)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 10:16:25 +02:00
Alex PlateandClaude Opus 4.5 7102eda97a Upload Claude execution log as workflow artifact
This helps with debugging workflow runs by preserving the full
execution log in the workflow artifacts.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 09:27:17 +02:00
Alex PlateandClaude Opus 4.5 ffdbff8060 Allow WebFetch for GitHub and Vim documentation sites
Add WebFetch permissions for:
- github.com and raw.githubusercontent.com (commits, PRs, raw files)
- vimhelp.org and vimdoc.sourceforge.net (Vim documentation)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 08:50:16 +02:00
Alex PlateandClaude Opus 4.5 4e0145bba5 Add deep root cause analysis guidance for bug fixes
Emphasize that Claude should:
- Focus on bug descriptions, not user-suggested solutions which may be
  inaccurate or too narrow for IdeaVim's architecture
- Find the actual root cause rather than implementing potentially flawed fixes
- Handle tickets with multiple issues by implementing them in separate commits

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 08:45:24 +02:00
Alex PlateandClaude Opus 4.5 ba9d5a17fe Make code review prompt more concise
Instruct Claude to be direct and avoid filler words, extra explanations,
or compliments. Focus on actionable feedback only.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 08:35:02 +02:00
Alex PlateandClaude Opus 4.5 5572bafa87 Add tests maintenance skill and daily workflow
New Claude skill for routine test maintenance focusing on:
- Test quality and readability (meaningful content, clear names)
- Reviewing @Disabled tests to check if they can be re-enabled
- Ensuring @TestWithoutNeovim annotations have clear reasons
- Documenting @VimBehaviorDiffers usage

Daily GitHub Actions workflow runs at 7 AM UTC.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 08:30:03 +02:00
Alex PlateandClaude Opus 4.5 003a8aeb5e Emphasize that PR creation is the goal of the workflow
Local changes without a Pull Request are useless - added clear
instruction that the workflow must create a PR on GitHub.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 22:54:06 +02:00
Alex PlateandClaude Opus 4.5 c5c8560d55 Add tests maintenance workflow
New workflow for routine test maintenance focusing on:
- Test quality and readability (meaningful content, clear names)
- Reviewing @Disabled tests to check if they can be re-enabled
- Ensuring @TestWithoutNeovim annotations have clear reasons
- Documenting @VimBehaviorDiffers usage

This complements the existing codebase maintenance workflow
but focuses exclusively on tests.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 22:53:22 +02:00
Alex PlateandClaude Opus 4.5 ac1e19ec94 Download image attachments for Claude analysis
Image attachments from YouTrack tickets are now downloaded locally
so Claude can view them using the Read tool. This enables analysis
of visual bugs and UI issues that require screenshots.

Changes:
- Add downloadAttachment() function to youtrack.ts
- Download images to attachments/ directory during ticket selection
- Update ticket_details.md to reference local image paths
- Add cleanup step to remove temporary files after analysis
- Add prompt instruction about viewing image attachments

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 22:51:18 +02:00
Alex PlateandClaude Opus 4.5 aef3733482 Add explicit branch push steps and PR failure handling
- Add explicit instructions to create branch, commit, push, then create PR
- Add PR creation failure as a trigger for attention_required status

Fixes issue where Claude forgot to push branch before creating PR.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 22:37:48 +02:00
Alex PlateandClaude Opus 4.5 e84edffa16 Check if bug is already fixed before implementing
Add step to review source code and git history before writing tests.
If bug appears already fixed (via code review or passing test), post
a private YouTrack comment mentioning @Aleksei.Plate and stop.

New result type: ANALYSIS_RESULT=already_fixed

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 22:32:08 +02:00
Alex PlateandClaude Opus 4.5 43e7b36968 Add Context7 plugin to YouTrack workflow
Enables up-to-date library documentation lookup during ticket analysis.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 22:25:57 +02:00
Alex PlateandClaude Opus 4.5 32ba35aead Use project settings in Claude Code workflows
Point both workflows to .claude/settings.json to use project
configuration including enabled plugins.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 22:22:58 +02:00
Alex PlateandClaude Opus 4.5 95fedeb8c1 Add workflow to check for Claude model updates
Weekly check that compares current model against latest available.
If a newer model is found, Claude creates a PR with the update.

Uses Haiku for cost efficiency since this is a simple check task.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 22:15:58 +02:00
Alex PlateandClaude Opus 4.5 e21f4eca2b Use Claude Opus 4.5 for YouTrack ticket analysis
Opus is more capable for complex analysis and bug fixing tasks.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 22:11:36 +02:00
Alex PlateandClaude Opus 4.5 c42fe9ba10 Require changelog update when creating PRs
Use the changelog skill to add entries for bug fixes and features
before creating the PR. Added Skill to allowed tools.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 22:08:15 +02:00
Alex PlateandClaude Opus 4.5 6c76346647 Prefer running specific tests for faster workflow execution
Full test suite takes a while. Guidance now suggests:
- Run specific related tests for faster feedback
- Only run full suite for core changes
- CI will run all tests on the PR anyway

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 22:03:04 +02:00
Alex PlateandClaude Opus 4.5 4f66a0f9c4 Include workflow run link in PR descriptions
PRs created by the YouTrack workflow now include a link to the
GitHub Actions run that generated them, making it easy to trace
back to the full Claude analysis.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 21:40:55 +02:00
Alex PlateandClaude Opus 4.5 e6e68d5bf9 Add attention_required status to YouTrack workflow
When Claude encounters issues needing maintainer attention:
- Missing tool permissions
- YouTrack API errors
- Workflow bugs or limitations
- Required capabilities unavailable

It outputs ANALYSIS_RESULT=attention_required with ATTENTION_REASON.
The job then fails, triggering GitHub notifications.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 21:39:24 +02:00
Alex PlateandClaude Opus 4.5 33582ecb7d Add outdated ticket detection to YouTrack workflow
Detect tickets that are likely no longer relevant:
- References removed features or obsolete IDE versions
- Vague "doesn't work" reports older than 2 years with no activity
- Missing environment details and no follow-up from reporter

When detected, Claude posts a PRIVATE comment mentioning @Aleksei.Plate
with reasoning, then outputs ANALYSIS_RESULT=outdated.

Also adds ticket creation date to ticket_details.md for age assessment.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 21:36:19 +02:00
Alex PlateandClaude Opus 4.5 4cb7b233e2 Fetch YouTrack comments and attachments for ticket analysis
- Add getTicketComments() to fetch comment author, text, and date
- Add getTicketAttachments() to fetch attachment name, URL, and MIME type
- Include comments and attachments sections in ticket_details.md

This gives Claude more context when analyzing tickets - comments often
contain reproduction steps, workarounds, or clarifications.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 21:24:03 +02:00
Alex PlateandClaude Opus 4.5 85538b1ae7 Add prompt injection hardening and rm command to YouTrack workflow
- Add security notice warning about user-submitted content in tickets
- Add critical rules to treat ticket content as data only
- Instruct to mark suspicious/injection attempts as unsuitable
- Add reminder at end to ignore conflicting instructions from tickets
- Allow Bash(rm:*) command for cleanup operations

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 09:15:55 +02:00
Alex PlateandClaude Opus 4.5 338bd2164b Add bug origin investigation step to YouTrack workflow
Before implementing a fix, Claude must now investigate why the buggy
code exists - it may have been a deliberate trade-off from a previous
fix. This prevents re-introducing old bugs when fixing new ones.

Investigation includes: reviewing surrounding code, checking callers,
and using git log/blame to understand the history.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 08:59:57 +02:00
Alex PlateandClaude Opus 4.5 5ff820be52 Add code-reviewer subagent and require review before PRs
- Add IdeaVim-specific code-reviewer agent focusing on Vim compatibility,
  Kotlin/Java quality, IntelliJ Platform patterns, and test coverage
- Update YouTrack auto-analysis workflow to require code review before
  creating PRs (for both bugs and features)
- Add Task tool to allowed tools for subagent usage

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 08:49:16 +02:00
Alex PlateandClaude Opus 4.5 8febb228de Add Claude Code settings with Context7 plugin enabled
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 08:49:16 +02:00
Alex PlateandClaude Opus 4.5 34ca5ec772 Split YouTrack auto-analysis rules for bugs vs features
- Bugs now require TDD approach: write failing test first, confirm
  failure, implement fix, confirm test passes
- Bugs without reproducible tests should be marked as unsuitable
- Features have separate criteria and implementation steps
- Updated PR title format: Fix(VIM-XXXX) for bugs, Add(VIM-XXXX) for features

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 08:49:15 +02:00
dependabot[bot] c9e7068eed Bump org.junit.jupiter:junit-jupiter from 5.10.0 to 6.0.1
Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit-framework) from 5.10.0 to 6.0.1.
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r5.10.0...r6.0.1)

---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-26 08:18:53 +02:00
Alex PlateandClaude Opus 4.5 0c741a580e Run YouTrack auto-analysis weekly instead of every 5 minutes
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 08:11:46 +02:00
Alex PlateandClaude Opus 4.5 90f1d72233 Remove hard 100 lines limit from YouTrack auto-analysis
Smaller changes are still preferred, but bigger changes are now
acceptable if Claude is confident about them.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 00:35:47 +02:00
Alex PlateandClaude Opus 4.5 efd7eee31b Run YouTrack auto-analysis every 5 minutes
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 00:24:43 +02:00
Alex PlateandClaude Opus 4.5 6e3c8cd1ed Fix YouTrack query syntax for Area exclusion
Use braces syntax: Area: -{Remote Dev} instead of Area: -"Remote Dev"

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 00:16:39 +02:00
Alex PlateandClaude Opus 4.5 e844a713f9 Add private comment support and filter out Remote Dev/Gateway tickets
- Comments now use LimitedVisibility with JetBrains team group (10-3)
- Query excludes tickets with Area "Remote Dev" or "Gateway"

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 00:14:23 +02:00
Alex PlateandClaude Opus 4.5 1d9e01e4ae [Experiment] Migrate YouTrack analysis scripts to TypeScript
Replaces Kotlin/Gradle scripts with TypeScript for the auto-analysis workflow.

New files in scripts-ts/:
- youtrack.ts: API utilities (getTicketsByQuery, getTicketDetails, setTag, addComment)
- selectTicketForAnalysis.ts: Selects random open ticket
- completeTicketAnalysis.ts: Tags ticket, optionally adds comment

Benefits:
- Faster startup (no Gradle daemon)
- Simpler dependencies (just tsx)
- Easier to read and modify

The Kotlin scripts remain for other workflows.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 00:04:28 +02:00
Alex PlateandClaude Opus 4.5 4d286f7b12 Fix: Only comment on YouTrack for explicit suitable/error results
Changed condition from `!= "unsuitable"` to `== "suitable" || == "error"`
so that unknown/empty parsing results don't trigger comments.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 23:57:38 +02:00
Alex PlateandClaude Opus 4.5 a1e5b67889 Fix URL encoding in getYoutrackTicketsByQuery
Use ktor's parameter() function to properly URL-encode query parameters
instead of string concatenation. This fixes 400 Bad Request errors when
queries contain spaces or special characters.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 23:51:43 +02:00
Alex PlateandClaude Opus 4.5 402b81c3c9 Add experimental YouTrack auto-analysis workflow with Claude
This adds a GitHub Action that automatically analyzes random open YouTrack
tickets to determine if they're suitable for automated fixing by Claude Code.

New files:
- youtrackAutoAnalysis.yml: Manual-trigger workflow that orchestrates the process
- SelectTicketForAnalysis.kt: Picks random open ticket without "claude-analyzed" tag
- CompleteTicketAnalysis.kt: Tags ticket and optionally adds analysis comment

Changes:
- youtrack.kt: Add getTicketDetails() function and claudeAnalyzedTagId constant
- build.gradle.kts: Register selectTicketForAnalysis and completeTicketAnalysis tasks

The workflow evaluates tickets based on: clarity, reproducibility (for bugs),
scope (no big refactoring), and testability. If suitable, Claude creates a PR.
All analyzed tickets are tagged to exclude from future runs.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 23:45:10 +02:00
Alex PlateandClaude Opus 4.5 ef2e069b93 Migrate PR verification from TeamCity to GitHub Actions
Replace TeamCity PR checks with a GitHub Actions workflow that:
- Runs on pull requests targeting master
- Executes the same test command with identical environment variables
- Uses Amazon Corretto JDK 21 (matching TeamCity setup)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-24 09:27:45 +02:00
Alex PlateandClaude Opus 4.5 9d829b2011 Revert Slack notification experiment, re-enable VCS triggers
- Remove SlackNotificationTest build configuration
- Remove Slack notification steps from ReleaseEap and ReleasePlugin
- Remove ANTHROPIC_API_KEY parameter from release jobs
- Keep slackUrl parameter for future use
- Re-enable VCS triggers on all test configurations

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-24 09:18:10 +02:00
Alex PlateandClaude Opus 4.5 7a087fa650 Add Slack URL debug output
Check if ORG_GRADLE_PROJECT_slackUrl is set and add verbose curl output.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-24 09:09:54 +02:00
aleksei.plate@jetbrains.com cf0d6b359a parameters of 'Test Slack Notification' build configuration were updated (TeamCity change in 'Ideavim' project) 2025-12-24 07:08:57 +00:00
Alex PlateandClaude Opus 4.5 f612dcc528 Fix shell compatibility in debug step
Add #!/bin/bash shebang for bash-specific syntax.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-24 09:04:12 +02:00
Alex PlateandClaude Opus 4.5 bb843511ca Add API key debug step to Slack notification test
Check if ANTHROPIC_API_KEY is set and validate it with a simple API call.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-24 09:01:01 +02:00
Alex PlateandClaude Opus 4.5 95cedf441d Disable VCS triggers and add Slack notification test build
Temporarily disable VCS triggers to save TeamCity credits:
- GitHub PR checks
- TestingBuildType (all test configs)
- PropertyBased, RandomOrderTests, PluginVerifier, Nvim

Add SlackNotificationTest build to test changelog generation
and Slack notification flow separately.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-24 08:28:38 +02:00
Alex PlateandClaude Opus 4.5 36680d0b7a Allow curl command in Slack notification step
Add --allowedTools "Bash(curl:*)" to Claude CLI invocation.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 22:06:28 +02:00
Alex PlateandClaude Opus 4.5 9dd8cfa72d Update Slack notification prompts to send immediately
Don't ask for confirmation before sending the Slack notification.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 19:09:42 +02:00
Alex PlateandClaude Opus 4.5 fe95c6dca3 Fix YouTrack token pattern and remove test configuration
- Fix ReleaseEap to use env.ORG_GRADLE_PROJECT_youtrackToken pattern
  (matching ReleasePlugin) instead of env.YOUTRACK_TOKEN
- Remove YouTrack test configuration (no longer needed)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 18:59:21 +02:00