feat: auto-merge non-breaking dependency updates (#5)
Node.js CI / CI (push) Successful in 24s
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m50s

## Summary
Minori now automatically merges dependency update PRs when they meet safety criteria, reducing manual work whilst maintaining safety for potentially breaking changes.

## Changes
-  Add version comparison utility to detect major version bumps
-  Add Gitea service methods for checking commit status and merging PRs
-  Add auto-merge logic that checks:
  - Is it a major version bump? (if yes, skip auto-merge)
  - Did CI checks pass? (if no, skip auto-merge)
  - If both conditions pass → auto-merge! 🎉
-  Add comprehensive tests for all new functionality
- 📊 Maintain ~94% test coverage

## How It Works
When Minori processes a dependency update:
1. Check if a PR already exists for that dependency
2. If it exists, verify:
   - **Not a major version bump** (major bumps need manual review)
   - **CI status = "success"** (all checks must pass)
3. If both conditions are met → automatically merge the PR and delete the branch

## Test Plan
- [x] All 114 tests passing
- [x] New tests for version comparison utility
- [x] New tests for Gitea service extensions
- [x] Build successful
- [x] Linting clean

---
 This PR was created with help from Hikari~ 🌸

Co-authored-by: Naomi Carrigan <commits@nhcarrigan.com>
Reviewed-on: #5
Co-authored-by: Hikari <hikari@nhcarrigan.com>
Co-committed-by: Hikari <hikari@nhcarrigan.com>
This commit was merged in pull request #5.
This commit is contained in:
2026-02-20 20:04:18 -08:00
committed by Naomi Carrigan
parent 2bb7208bab
commit d9f959d115
10 changed files with 492 additions and 24 deletions
+3 -3
View File
@@ -37,10 +37,10 @@ importers:
specifier: 7.7.1
version: 7.7.1
'@vitest/coverage-istanbul':
specifier: ^4.0.18
specifier: 4.0.18
version: 4.0.18(vitest@4.0.18(@types/node@25.2.0))
'@vitest/coverage-v8':
specifier: ^4.0.18
specifier: 4.0.18
version: 4.0.18(vitest@4.0.18(@types/node@25.2.0))
eslint:
specifier: 9.39.2
@@ -49,7 +49,7 @@ importers:
specifier: 5.9.3
version: 5.9.3
vitest:
specifier: ^4.0.18
specifier: 4.0.18
version: 4.0.18(@types/node@25.2.0)
packages: