Compare commits

...

251 commits

Author SHA1 Message Date
davrot
384fbd843d modules/setting/service.go aktualisiert 2025-01-26 02:11:16 +00:00
davrot
fad7397516 Dateien nach „modules/setting“ hochladen 2025-01-26 02:10:49 +00:00
davrot
50d316ffee modules/setting/service.go aktualisiert 2025-01-24 12:08:47 +00:00
davrot
6852de6962 modules/setting/service.go aktualisiert 2025-01-24 12:08:28 +00:00
davrot
b7a6c22c7a Dateien nach „modules/setting“ hochladen 2025-01-24 12:07:26 +00:00
Gusted
8f8856dcb8 fix: code review alt repository (#6663)
I was not able to properly review this specific file from #6351 in time.

- Remove unnecessary second Close call to xz writer.
- Removed unused values.
- Partition packages by architecture in the first loop to reduce the
amount of iterations.
- Don't compile regex, use `path.Split`.
- Pass structs around.
- Remove usage of bytes.buffer when there's no buffering.
- Use a better data structure for building package lists.

TL;DR no functional changes.

---

Review this with "Ignore whitespace when comparing lines" enabled.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6663
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-committed-by: Gusted <postmaster@gusted.xyz>
2025-01-24 08:29:30 +00:00
Renovate Bot
c4d8f62673 Update dependency codespell to v2.4.0 (forgejo) (#6652)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [codespell](https://github.com/codespell-project/codespell) | dev | minor | `2.3.0` -> `2.4.0` |

---

### Release Notes

<details>
<summary>codespell-project/codespell (codespell)</summary>

### [`v2.4.0`](https://github.com/codespell-project/codespell/releases/tag/v2.4.0)

[Compare Source](https://github.com/codespell-project/codespell/compare/v2.3.0...v2.4.0)

<!-- Release notes generated using configuration in .github/release.yml at main -->

#### What's Changed

-   Exclude bots from generated release notes by [@&#8203;hugovk](https://github.com/hugovk) in https://github.com/codespell-project/codespell/pull/3432
-   Refactor: Move some code to new files for reuse by [@&#8203;nthykier](https://github.com/nthykier) in https://github.com/codespell-project/codespell/pull/3434
-   Add `equipmnet->equipment` by [@&#8203;korverdev](https://github.com/korverdev) in https://github.com/codespell-project/codespell/pull/3438
-   Set better project description by [@&#8203;mtelka](https://github.com/mtelka) in https://github.com/codespell-project/codespell/pull/3435
-   Additional en-GB → en-US entries by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3058
-   Consistent error messages by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3440
-   Add 'driven' as 'drivin' variant by [@&#8203;korverdev](https://github.com/korverdev) in https://github.com/codespell-project/codespell/pull/3441
-   More typos by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3439
-   Add reusing misspelling and variants by [@&#8203;korverdev](https://github.com/korverdev) in https://github.com/codespell-project/codespell/pull/3445
-   Add typos found in Emacs and elsewhere by [@&#8203;skangas](https://github.com/skangas) in https://github.com/codespell-project/codespell/pull/3447
-   MAINT: Fix codecov by [@&#8203;larsoner](https://github.com/larsoner) in https://github.com/codespell-project/codespell/pull/3451
-   Add typos found in GNU Guile by [@&#8203;skangas](https://github.com/skangas) in https://github.com/codespell-project/codespell/pull/3448
-   Add corrections from Aspell (fix [#&#8203;3356](https://github.com/codespell-project/codespell/issues/3356)) by [@&#8203;skangas](https://github.com/skangas) in https://github.com/codespell-project/codespell/pull/3453
-   Add entries to dictionary_informal.txt by [@&#8203;skangas](https://github.com/skangas) in https://github.com/codespell-project/codespell/pull/3456
-   Add rare typo `lien->line` by [@&#8203;skangas](https://github.com/skangas) in https://github.com/codespell-project/codespell/pull/3460
-   Add rare typo `firs->first` by [@&#8203;skangas](https://github.com/skangas) in https://github.com/codespell-project/codespell/pull/3459
-   Add rare typo `hep->heap, help,` by [@&#8203;skangas](https://github.com/skangas) in https://github.com/codespell-project/codespell/pull/3461
-   Add rare typo `brunch->branch` by [@&#8203;skangas](https://github.com/skangas) in https://github.com/codespell-project/codespell/pull/3458
-   Add corrections from `typos` dictionary (A1) by [@&#8203;skangas](https://github.com/skangas) in https://github.com/codespell-project/codespell/pull/3450
-   Add timestmp->timestamp and its variations by [@&#8203;fkmy](https://github.com/fkmy) in https://github.com/codespell-project/codespell/pull/3464
-   Add .venv to .gitignore by [@&#8203;skangas](https://github.com/skangas) in https://github.com/codespell-project/codespell/pull/3466
-   Only accept documented choices after `-i` and `-q` by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3344
-   Move assertIn to the code dictionary as it's a Python test function by [@&#8203;peternewman](https://github.com/peternewman) in https://github.com/codespell-project/codespell/pull/3469
-   Add some more typos by [@&#8203;skangas](https://github.com/skangas) in https://github.com/codespell-project/codespell/pull/3468
-   Add some typos from Emacs by [@&#8203;skangas](https://github.com/skangas) in https://github.com/codespell-project/codespell/pull/3471
-   Add corrections from `typos` dictionary (A2) by [@&#8203;skangas](https://github.com/skangas) in https://github.com/codespell-project/codespell/pull/3454
-   Add variations for words starting with `non-` by [@&#8203;skangas](https://github.com/skangas) in https://github.com/codespell-project/codespell/pull/3467
-   Update "Using a config file" README entry  by [@&#8203;oddhack](https://github.com/oddhack) in https://github.com/codespell-project/codespell/pull/3478
-   Add two choices for verision typo fix by [@&#8203;yarikoptic](https://github.com/yarikoptic) in https://github.com/codespell-project/codespell/pull/3252
-   fix typo by [@&#8203;spaette](https://github.com/spaette) in https://github.com/codespell-project/codespell/pull/3479
-   \[pre-commit.ci] pre-commit manual update (ruff 0.5.0) by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3481
-   Add trusthworth(y|iness)->trustworth(y|iness) correction. by [@&#8203;cfi-gb](https://github.com/cfi-gb) in https://github.com/codespell-project/codespell/pull/3482
-   Add thrustworth(y|iness)->trustworth(y|iness). by [@&#8203;cfi-gb](https://github.com/cfi-gb) in https://github.com/codespell-project/codespell/pull/3483
-   New typos by [@&#8203;gforcada](https://github.com/gforcada) in https://github.com/codespell-project/codespell/pull/3484
-   add enrol->enroll to en-GB to en-US dictionary by [@&#8203;slitvackwinkler](https://github.com/slitvackwinkler) in https://github.com/codespell-project/codespell/pull/3485
-   Add --ignore-multiline-regex option. by [@&#8203;julian-smith-artifex-com](https://github.com/julian-smith-artifex-com) in https://github.com/codespell-project/codespell/pull/3476
-   Add spelling correction for separately. by [@&#8203;cfi-gb](https://github.com/cfi-gb) in https://github.com/codespell-project/codespell/pull/3487
-   Start testing with Python 3.13 by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3488
-   Missing typo in dictionary by [@&#8203;matlupi](https://github.com/matlupi) in https://github.com/codespell-project/codespell/pull/3497
-   Add enterpris->enterprise spelling correction. by [@&#8203;cfi-gb](https://github.com/cfi-gb) in https://github.com/codespell-project/codespell/pull/3498
-   Add spelling correction for proir and variant. by [@&#8203;cfi-gb](https://github.com/cfi-gb) in https://github.com/codespell-project/codespell/pull/3499
-   fix issue [#&#8203;3220](https://github.com/codespell-project/codespell/issues/3220): interactive model & write-changes by [@&#8203;MercuryDemo](https://github.com/MercuryDemo) in https://github.com/codespell-project/codespell/pull/3340
-   infastructure typo (15.6k hits on github) by [@&#8203;yarikoptic](https://github.com/yarikoptic) in https://github.com/codespell-project/codespell/pull/3501
-   Add several spelling corrections by [@&#8203;luzpaz](https://github.com/luzpaz) in https://github.com/codespell-project/codespell/pull/3500
-   Add "releaseds->released, releases," spelling correction by [@&#8203;cfi-gb](https://github.com/cfi-gb) in https://github.com/codespell-project/codespell/pull/3503
-   Several spelling suggestions by [@&#8203;mdeweerd](https://github.com/mdeweerd) in https://github.com/codespell-project/codespell/pull/3504
-   Add favilitate->facilitate and its variations by [@&#8203;luzpaz](https://github.com/luzpaz) in https://github.com/codespell-project/codespell/pull/3505
-   Add seemd -> seemed by [@&#8203;fishilico](https://github.com/fishilico) in https://github.com/codespell-project/codespell/pull/3508
-   feat: add typo spelling for capabilities by [@&#8203;IndexSeek](https://github.com/IndexSeek) in https://github.com/codespell-project/codespell/pull/3507
-   entirerly -> entirely by [@&#8203;matlupi](https://github.com/matlupi) in https://github.com/codespell-project/codespell/pull/3512
-   Add stuty -> study and variations by [@&#8203;fishilico](https://github.com/fishilico) in https://github.com/codespell-project/codespell/pull/3514
-   readibly->readably by [@&#8203;claydugo](https://github.com/claydugo) in https://github.com/codespell-project/codespell/pull/3518
-   Add clapse->collapse to dictionary.txt by [@&#8203;Runtemund](https://github.com/Runtemund) in https://github.com/codespell-project/codespell/pull/3513
-   fix(rare): remove loath->loathe, as loath is as common as loathe by [@&#8203;corneliusroemer](https://github.com/corneliusroemer) in https://github.com/codespell-project/codespell/pull/3523
-   Add variations of 'symetriy' typo by [@&#8203;luzpaz](https://github.com/luzpaz) in https://github.com/codespell-project/codespell/pull/3528
-   Add distriute->distribute (and variations) to dictionary.txt by [@&#8203;corneliusroemer](https://github.com/corneliusroemer) in https://github.com/codespell-project/codespell/pull/3517
-   Some extra spelling suggestions for the dictionnary (aumatically, ...) by [@&#8203;mdeweerd](https://github.com/mdeweerd) in https://github.com/codespell-project/codespell/pull/3516
-   More typos by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3465
-   Add a spelling correction by [@&#8203;fxlb](https://github.com/fxlb) in https://github.com/codespell-project/codespell/pull/3533
-   Move `hom` to code dictionary by [@&#8203;skangas](https://github.com/skangas) in https://github.com/codespell-project/codespell/pull/3490
-   Add `realtd->related`, `prediced->predicted` by [@&#8203;janosh](https://github.com/janosh) in https://github.com/codespell-project/codespell/pull/3536
-   Handle CTRL+C by showing a better message by [@&#8203;mwtoews](https://github.com/mwtoews) in https://github.com/codespell-project/codespell/pull/3511
-   Move crate->create to code dictionary by [@&#8203;luzpaz](https://github.com/luzpaz) in https://github.com/codespell-project/codespell/pull/3537
-   More typos by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3535
-   Add cirumvent -> circumvent suggestion by [@&#8203;algonell](https://github.com/algonell) in https://github.com/codespell-project/codespell/pull/3540
-   More typos found in numpy by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3541
-   Add spelling correction for appliance and variants. by [@&#8203;cfi-gb](https://github.com/cfi-gb) in https://github.com/codespell-project/codespell/pull/3544
-   Workaround for Python issue by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3546
-   Partially undo [`293bec1`](https://github.com/codespell-project/codespell/commit/293bec1) / [#&#8203;3465](https://github.com/codespell-project/codespell/issues/3465) by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3548
-   master → main by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3555
-   Add a spelling correction by [@&#8203;fxlb](https://github.com/fxlb) in https://github.com/codespell-project/codespell/pull/3552
-   Add spelling corrections for remote and variants. by [@&#8203;cfi-gb](https://github.com/cfi-gb) in https://github.com/codespell-project/codespell/pull/3551
-   Add spelling correction for revert and variants. by [@&#8203;cfi-gb](https://github.com/cfi-gb) in https://github.com/codespell-project/codespell/pull/3553
-   workdlow->workflow by [@&#8203;peterjc](https://github.com/peterjc) in https://github.com/codespell-project/codespell/pull/3556
-   More typos found in Scipy by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3547
-   Update ruff settings by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3558
-   Improve config file documentation in README by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3495
-   Support Python 3.13 by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3560
-   feat: add typo for override and overridden by [@&#8203;IndexSeek](https://github.com/IndexSeek) in https://github.com/codespell-project/codespell/pull/3564
-   feat: add strring entry for string and stirring by [@&#8203;IndexSeek](https://github.com/IndexSeek) in https://github.com/codespell-project/codespell/pull/3565
-   Add spelling correction for credential and variant. by [@&#8203;cfi-gb](https://github.com/cfi-gb) in https://github.com/codespell-project/codespell/pull/3567
-   Typo from filesystem_spec by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3559
-   Add zarr as a fix for zar. by [@&#8203;yarikoptic](https://github.com/yarikoptic) in https://github.com/codespell-project/codespell/pull/3568
-   Add multiple spellings by [@&#8203;mdeweerd](https://github.com/mdeweerd) in https://github.com/codespell-project/codespell/pull/3569
-   acceleratored->accelerated by [@&#8203;SpookyYomo](https://github.com/SpookyYomo) in https://github.com/codespell-project/codespell/pull/3571
-   Add correction for seens->seems, seen, scenes, by [@&#8203;cfi-gb](https://github.com/cfi-gb) in https://github.com/codespell-project/codespell/pull/3572
-   Add generaml->general spelling correction. by [@&#8203;cfi-gb](https://github.com/cfi-gb) in https://github.com/codespell-project/codespell/pull/3573
-   Add forach->foreach, orach, spelling correction by [@&#8203;cfi-gb](https://github.com/cfi-gb) in https://github.com/codespell-project/codespell/pull/3576
-   Add spelling correction for leadin. by [@&#8203;cfi-gb](https://github.com/cfi-gb) in https://github.com/codespell-project/codespell/pull/3578
-   Minor typo fix in README  by [@&#8203;DanielYang59](https://github.com/DanielYang59) in https://github.com/codespell-project/codespell/pull/3580
-   Add pauload->payload and friend by [@&#8203;peternewman](https://github.com/peternewman) in https://github.com/codespell-project/codespell/pull/3581
-   These typos do not belong to code, do they? by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3470
-   Add spelling correction for "agos". by [@&#8203;cfi-gb](https://github.com/cfi-gb) in https://github.com/codespell-project/codespell/pull/3586
-   If `writeable` is OK, so is `overwriteable` by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in https://github.com/codespell-project/codespell/pull/3593
-   Add `atfer`->`after` and variations by [@&#8203;fishilico](https://github.com/fishilico) in https://github.com/codespell-project/codespell/pull/3598
-   Add poduce->produce and friends by [@&#8203;peternewman](https://github.com/peternewman) in https://github.com/codespell-project/codespell/pull/3599
-   Add variations for correction: reurn->return by [@&#8203;jdufresne](https://github.com/jdufresne) in https://github.com/codespell-project/codespell/pull/3600
-   Add spelling correction for various variants of everything. by [@&#8203;cfi-gb](https://github.com/cfi-gb) in https://github.com/codespell-project/codespell/pull/3601
-   Add "sems->seems, stems, semis, sens, seams," correction by [@&#8203;cfi-gb](https://github.com/cfi-gb) in https://github.com/codespell-project/codespell/pull/3603
-   Add replacements for complasance and complisance by [@&#8203;TheGiraffe3](https://github.com/TheGiraffe3) in https://github.com/codespell-project/codespell/pull/3597
-   Add typos found in software projects by [@&#8203;mwtoews](https://github.com/mwtoews) in https://github.com/codespell-project/codespell/pull/3595
-   Add distinghish->distinguish and variations by [@&#8203;fishilico](https://github.com/fishilico) in https://github.com/codespell-project/codespell/pull/3604
-   docs: typo in an example by [@&#8203;12rambau](https://github.com/12rambau) in https://github.com/codespell-project/codespell/pull/3610
-   Add typos found in various software projects by [@&#8203;luzpaz](https://github.com/luzpaz) in https://github.com/codespell-project/codespell/pull/3612
-   Add spelling correction for denila and variant. by [@&#8203;cfi-gb](https://github.com/cfi-gb) in https://github.com/codespell-project/codespell/pull/3616
-   Remove socioeconomic entries by [@&#8203;isaak654](https://github.com/isaak654) in https://github.com/codespell-project/codespell/pull/3353
-   Run pytest GitHub Action on an ARM processor by [@&#8203;cclauss](https://github.com/cclauss) in https://github.com/codespell-project/codespell/pull/3619

#### New Contributors

-   [@&#8203;nthykier](https://github.com/nthykier) made their first contribution in https://github.com/codespell-project/codespell/pull/3434
-   [@&#8203;mtelka](https://github.com/mtelka) made their first contribution in https://github.com/codespell-project/codespell/pull/3435
-   [@&#8203;fkmy](https://github.com/fkmy) made their first contribution in https://github.com/codespell-project/codespell/pull/3464
-   [@&#8203;oddhack](https://github.com/oddhack) made their first contribution in https://github.com/codespell-project/codespell/pull/3478
-   [@&#8203;spaette](https://github.com/spaette) made their first contribution in https://github.com/codespell-project/codespell/pull/3479
-   [@&#8203;slitvackwinkler](https://github.com/slitvackwinkler) made their first contribution in https://github.com/codespell-project/codespell/pull/3485
-   [@&#8203;julian-smith-artifex-com](https://github.com/julian-smith-artifex-com) made their first contribution in https://github.com/codespell-project/codespell/pull/3476
-   [@&#8203;Runtemund](https://github.com/Runtemund) made their first contribution in https://github.com/codespell-project/codespell/pull/3513
-   [@&#8203;corneliusroemer](https://github.com/corneliusroemer) made their first contribution in https://github.com/codespell-project/codespell/pull/3523
-   [@&#8203;mwtoews](https://github.com/mwtoews) made their first contribution in https://github.com/codespell-project/codespell/pull/3511
-   [@&#8203;algonell](https://github.com/algonell) made their first contribution in https://github.com/codespell-project/codespell/pull/3540
-   [@&#8203;peterjc](https://github.com/peterjc) made their first contribution in https://github.com/codespell-project/codespell/pull/3556
-   [@&#8203;SpookyYomo](https://github.com/SpookyYomo) made their first contribution in https://github.com/codespell-project/codespell/pull/3571
-   [@&#8203;DanielYang59](https://github.com/DanielYang59) made their first contribution in https://github.com/codespell-project/codespell/pull/3580
-   [@&#8203;TheGiraffe3](https://github.com/TheGiraffe3) made their first contribution in https://github.com/codespell-project/codespell/pull/3597

**Full Changelog**: https://github.com/codespell-project/codespell/compare/v2.3.0...v2.4.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDYuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNi4wIiwidGFyZ2V0QnJhbmNoIjoiZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6652
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-24 05:43:51 +00:00
0ko
8178b4e98b chore: fix typos, decap a few i18n strings (#6666)
A few typos, some from spell checker, some from grepping `the the`, `the a `, ` a the`. Some in comments and some in changelogs.

Decapped a few remaining annoying strings, and one new from https://codeberg.org/forgejo/forgejo/pulls/6351 which was introduced by copy-pasting on a slightly out-of-date branch, causing Weblate to issue "reused translation" alerts again. Ref #6439.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6666
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Co-committed-by: 0ko <0ko@noreply.codeberg.org>
2025-01-24 05:41:59 +00:00
Gusted
a9c97110f9 feat: add configurable cooldown to claim usernames (#6422)
Add a new option that allows instances to set a cooldown period to claim
old usernames. In the context of public instances this can be used to
prevent old usernames to be claimed after they are free and allow
graceful migration (by making use of the redirect feature) to a new
username. The granularity of this cooldown is a day. By default this
feature is disabled and thus no cooldown period.

The `CreatedUnix` column is added the `user_redirect` table, for
existing redirects the timestamp is simply zero as we simply do not know
when they were created and are likely already over the cooldown period
if the instance configures one.

Users can always reclaim their 'old' user name again within the cooldown
period. Users can also always reclaim 'old' names of organization they
currently own within the cooldown period.

Creating and renaming users as an admin user are not affected by the
cooldown period for moderation and user support reasons.

To avoid abuse of the cooldown feature, such that a user holds a lot of
usernames, a new option is added `MAX_USER_REDIRECTS` which sets a limit
to the amount of user redirects a user may have, by default this is
disabled. If a cooldown period is set then the default is 5. This
feature operates independently of the cooldown period feature.

Added integration and unit testing.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6422
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-committed-by: Gusted <postmaster@gusted.xyz>
2025-01-24 04:16:56 +00:00
Renovate Bot
a9c4a25fb1 Update module google.golang.org/grpc to v1.69.4 (forgejo) (#6560)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [google.golang.org/grpc](https://github.com/grpc/grpc-go) | require | patch | `v1.69.2` -> `v1.69.4` |

---

### Release Notes

<details>
<summary>grpc/grpc-go (google.golang.org/grpc)</summary>

### [`v1.69.4`](https://github.com/grpc/grpc-go/releases/tag/v1.69.4): Release 1.69.4

[Compare Source](https://github.com/grpc/grpc-go/compare/v1.69.2...v1.69.4)

### Bug Fixes

-   rbac: fix support for :path header matchers, which would previously never successfully match ([#&#8203;7965](https://github.com/grpc/grpc-go/issues/7965)).

### Documentation

-   examples/features/csm_observability: update example client and server to use the helloworld service instead of echo service ([#&#8203;7945](https://github.com/grpc/grpc-go/issues/7945)).

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDYuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNi4wIiwidGFyZ2V0QnJhbmNoIjoiZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6560
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-23 18:33:24 +00:00
0ko
439d68b908 chore(security): update security.txt with new expiration date (#6655)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6655
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Reviewed-by: Otto <otto@codeberg.org>
2025-01-23 16:20:04 +00:00
Codeberg Translate
dac7d5e73b i18n: update of translations from Codeberg Translate (#6565)
Co-authored-by: 0ko <0ko@users.noreply.translate.codeberg.org>
Co-authored-by: mahlzahn <mahlzahn@posteo.de>
Co-authored-by: Edgarsons <edgarsons@users.noreply.translate.codeberg.org>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Atul_Eterno <atul_eterno@users.noreply.translate.codeberg.org>
Co-authored-by: tacaly <frederick@tacaly.com>
Co-authored-by: artnay <artnay@users.noreply.translate.codeberg.org>
Co-authored-by: xtex <xtexchooser@duck.com>
Co-authored-by: killawabbit <killawabbit@users.noreply.translate.codeberg.org>
Co-authored-by: Fjuro <fjuro@users.noreply.translate.codeberg.org>
Co-authored-by: SomeTr <sometr@users.noreply.translate.codeberg.org>
Co-authored-by: Dirk <dirk@users.noreply.translate.codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-authored-by: Ikuyo Mita <searinminecraft@outlook.ph>
Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6565
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: Codeberg Translate <translate@noreply.codeberg.org>
Co-committed-by: Codeberg Translate <translate@noreply.codeberg.org>
2025-01-23 14:53:36 +00:00
Renovate Bot
14cb862790 Update module github.com/go-git/go-git/v5 to v5.13.2 (forgejo) (#6659)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) | require | patch | `v5.13.1` -> `v5.13.2` |

---

### Release Notes

<details>
<summary>go-git/go-git (github.com/go-git/go-git/v5)</summary>

### [`v5.13.2`](https://github.com/go-git/go-git/releases/tag/v5.13.2)

[Compare Source](https://github.com/go-git/go-git/compare/v5.13.1...v5.13.2)

#### What's Changed

-   plumbing: use the correct user agent string. Fixes [#&#8203;883](https://github.com/go-git/go-git/issues/883) by [@&#8203;uragirii](https://github.com/uragirii) in https://github.com/go-git/go-git/pull/1364
-   build: bump golang.org/x/sys from 0.28.0 to 0.29.0 in the golang-org group by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1365
-   build: bump the golang-org group with 2 updates by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1367
-   build: bump github.com/ProtonMail/go-crypto from 1.1.3 to 1.1.4 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1368
-   build: bump github.com/go-git/go-billy/v5 from 5.6.1 to 5.6.2 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1378
-   build: bump github/codeql-action from 3.28.0 to 3.28.1 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1376
-   build: bump github.com/elazarl/goproxy from 1.2.3 to 1.4.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1377
-   git: worktree, fix restoring dot slash files (backported to v5). Fixes [#&#8203;1176](https://github.com/go-git/go-git/issues/1176) by [@&#8203;BeChris](https://github.com/BeChris) in https://github.com/go-git/go-git/pull/1361
-   build: bump github.com/pjbgf/sha1cd from 0.3.0 to 0.3.2 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1392
-   git: worktree_status, fix adding dot slash files to working tree (backported to v5). Fixes [#&#8203;1150](https://github.com/go-git/go-git/issues/1150) by [@&#8203;BeChris](https://github.com/BeChris) in https://github.com/go-git/go-git/pull/1359
-   build: bump github.com/ProtonMail/go-crypto from 1.1.4 to 1.1.5 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1383

**Full Changelog**: https://github.com/go-git/go-git/compare/v5.13.1...v5.13.2

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDYuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNi4wIiwidGFyZ2V0QnJhbmNoIjoiZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Co-authored-by: Earl Warren <contact@earl-warren.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6659
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-23 12:32:39 +00:00
Alex619829
89dfabdc9f Release-note and file rename for Alt Linux Apt-RPM support (#6656)
https://codeberg.org/forgejo/forgejo/pulls/6351#issuecomment-2585484 was fixed

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

- I added test coverage for Go changes...
  - [ ] in their respective `*_test.go` for unit tests.
  - [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [ ] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [ ] I do not want this change to show in the release notes.
- [ ] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

<!--start release-notes-assistant-->

## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- Other changes without a feature or bug label
  - [PR](https://codeberg.org/forgejo/forgejo/pulls/6656): <!--number 6656 --><!--line 0 --><!--description UmVsZWFzZS1ub3RlIGZvciBQUiAjNjM1MSB3YXMgYWRkZWQuIGh0dHBzOi8vY29kZWJlcmcub3JnL2Zvcmdlam8vZm9yZ2Vqby9wdWxscy82MzUxI2lzc3VlY29tbWVudC0yNTg1NDg0IHdhcyBmaXhlZA==-->Release-note for PR #6351 was added. https://codeberg.org/forgejo/forgejo/pulls/6351#issuecomment-2585484 was fixed<!--description-->
<!--end release-notes-assistant-->

Co-authored-by: gamzinav <gamzinav@basealt.ru>
Co-authored-by: Aleksandr Gamzin <gamzin@altlinux.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6656
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Alex619829 <alex619829@noreply.codeberg.org>
Co-committed-by: Alex619829 <alex619829@noreply.codeberg.org>
2025-01-23 07:22:05 +00:00
Alex619829
7ae5376573 Alt Linux Apt-Rpm repository support for Forgejo packages. (#6351)
Co-authored-by: Aleksandr Gamzin alexgamz1119@gmail.com

Adds support for the Apt-Rpm registry of the Alt Lunux distribution.

Alt Linux uses RPM packages to store and distribute software to its users. But the logic of the Alt Linux package registry is different from the Red Hat package registry.
I have added support for the Alt Linux package registry.

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

- I added test coverage for Go changes...
  - [ ] in their respective `*_test.go` for unit tests.
  - [x] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

### Documentation

- [x] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [ ] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [ ] I do not want this change to show in the release notes.
- [x] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

Co-authored-by: Aleksandr Gamzin <gamzin@altlinux.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6351
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Alex619829 <alex619829@noreply.codeberg.org>
Co-committed-by: Alex619829 <alex619829@noreply.codeberg.org>
2025-01-22 14:01:49 +00:00
Earl Warren
955f99b6a4
chore(security): update security.txt with new expiration date
Same as https://forgejo.org/.well-known/security.txt
2025-01-22 14:52:04 +01:00
0ko
a40284bec4 fix(tests): prevent frontend test dependency on system locale (#6649)
This test depended on system locale. It always failed with `LANG=fr_FR make test-frontend` and always passed with `LANG=C make test-frontend`.

- prevent this dependency by explicitly passing 'en-US'
- avoid process.env.TZ boilerplate with vi.stubEnv

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6649
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: Beowulf <beowulf@beocode.eu>
2025-01-22 03:56:36 +00:00
Earl Warren
c92fe83c40 fix: teach the doctor about orphaned two_factor rows (#6639)
If a row in the two_factor table references a non existent user, it may contain a secret that has an invalid format. Such an orphaned row is never used and should be removed.

Improve the error message to suggest using the doctor to remove it.

Fixes: https://codeberg.org/forgejo/forgejo/issues/6637

## Testing

- make TAGS='sqlite sqlite_unlock_notify' watch
- make TAGS='sqlite  sqlite_unlock_notify' forgejo
- sqlite3 data/gitea.db 'INSERT INTO two_factor VALUES( 0, 500, "", "", "", "", 0, 0)'
- ./forgejo doctor check --run check-db-consistency
  ```
   [1] Check consistency of database
    - [W] Found 1 Orphaned TwoFactor without existing User
   OK

   All done (checks: 1).
   ```
-  ./forgejo doctor check --run check-db-consistency --fix
   ```
   [1] Check consistency of database
    - [I] Deleted 1 Orphaned TwoFactor without existing User
   OK

   All done (checks: 1).
   ```

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

- I added test coverage for Go changes...
  - [ ] in their respective `*_test.go` for unit tests.
  - [x] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [ ] I do not want this change to show in the release notes.
- [x] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

<!--start release-notes-assistant-->

## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- Bug fixes
  - [PR](https://codeberg.org/forgejo/forgejo/pulls/6639): <!--number 6639 --><!--line 0 --><!--description VGVhY2ggdGhlIGRvY3RvciB0byByZW1vdmUgb3JwaGFuZWQgdHdvX2ZhY3RvciB3aXRoIGBmb3JnZWpvIGRvY3RvciBjaGVjayAtLXJ1biBjaGVjay1kYi1jb25zaXN0ZW5jeSAtLWZpeGAuIFN1Y2ggcm93cyBtYXkgY29udGFpbiBpbnZhbGlkIGRhdGEgYW5kIFtibG9jayB0aGUgbWlncmF0aW9uIHRvIHYxMF0oaHR0cHM6Ly9jb2RlYmVyZy5vcmcvZm9yZ2Vqby9mb3JnZWpvL2lzc3Vlcy82NjM3KSB3aXRoIGEgbWVzc2FnZSBzdWNoIGFzIGBmYWlsZWQ6IEFlc0RlY3J5cHQgaW52YWxpZCBkZWNyeXB0ZWQgYmFzZTY0IHN0cmluZzogaWxsZWdhbCBiYXNlNjQgZGF0YSBhdCBpbnB1dCBieXRlIDBgLg==-->Teach the doctor to remove orphaned two_factor with `forgejo doctor check --run check-db-consistency --fix`. Such rows may contain invalid data and [block the migration to v10](https://codeberg.org/forgejo/forgejo/issues/6637) with a message such as `failed: AesDecrypt invalid decrypted base64 string: illegal base64 data at input byte 0`.<!--description-->
<!--end release-notes-assistant-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6639
Reviewed-by: Mathieu Fenniak <mfenniak@noreply.codeberg.org>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-01-21 17:30:08 +00:00
Renovate Bot
1508d13cf3 Update dependency go to v1.23.5 (forgejo) (#6590)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6590
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-21 15:22:41 +00:00
Michael Kriese
8770ee3a99 ci: fix go version check (#6646)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6646
2025-01-21 14:42:04 +00:00
Michael Kriese
b68f772a15
ci: fix go version check 2025-01-21 14:25:27 +01:00
Renovate Bot
6a5dc12732 Update module github.com/minio/minio-go/v7 to v7.0.84 (forgejo) (#6629)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [github.com/minio/minio-go/v7](https://github.com/minio/minio-go) | require | patch | `v7.0.83` -> `v7.0.84` |

---

### Release Notes

<details>
<summary>minio/minio-go (github.com/minio/minio-go/v7)</summary>

### [`v7.0.84`](https://github.com/minio/minio-go/releases/tag/v7.0.84): Bugfix Release

[Compare Source](https://github.com/minio/minio-go/compare/v7.0.83...v7.0.84)

#### What's Changed

-   fix: use Hostname instead of Host in s3utils.GetRegionFromURL by [@&#8203;huanghaoyuanhhy](https://github.com/huanghaoyuanhhy) in https://github.com/minio/minio-go/pull/2046
-   feat: CopyObject md demo update by [@&#8203;767829413](https://github.com/767829413) in https://github.com/minio/minio-go/pull/2017
-   fix: get ETag from resp.Body rather than resp.Header by [@&#8203;xiangcheng09](https://github.com/xiangcheng09) in https://github.com/minio/minio-go/pull/2019
-   move to go1.23 CI by [@&#8203;harshavardhana](https://github.com/harshavardhana) in https://github.com/minio/minio-go/pull/2050
-   Use default STS endpoints when using empty STS endpoint with IAM by [@&#8203;ramondeklein](https://github.com/ramondeklein) in https://github.com/minio/minio-go/pull/2051

#### New Contributors

-   [@&#8203;huanghaoyuanhhy](https://github.com/huanghaoyuanhhy) made their first contribution in https://github.com/minio/minio-go/pull/2046
-   [@&#8203;767829413](https://github.com/767829413) made their first contribution in https://github.com/minio/minio-go/pull/2017
-   [@&#8203;xiangcheng09](https://github.com/xiangcheng09) made their first contribution in https://github.com/minio/minio-go/pull/2019

**Full Changelog**: https://github.com/minio/minio-go/compare/v7.0.83...v7.0.84

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDYuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNi4wIiwidGFyZ2V0QnJhbmNoIjoiZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6629
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-21 10:48:06 +00:00
Earl Warren
8a9da6ab1b fix: listing tokens must not require basic auth (#6633)
When the change is reverted, the test fails as follows:

```sh
=== TestAPIGetTokens (tests/integration/api_token_test.go:34)
--- FAIL: TestAPIGetTokens (0.17s)
    testlogger.go:405: 2025/01/20 14:05:22 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /home/earl-warren/software/forgejo/tests/gitea-lfs-meta
    testlogger.go:405: 2025/01/20 14:05:22 ...eb/routing/logger.go:102:func1() [I] router: completed GET /api/v1/users/user2/tokens for test-mock:12345, 200 OK in 2.5ms @ user/app.go:24(user.ListAccessTokens)
    testlogger.go:405: 2025/01/20 14:05:22 ...eb/routing/logger.go:102:func1() [I] router: completed POST /api/v1/users/user1/tokens for test-mock:12345, 201 Created in 4.7ms @ user/app.go:75(user.CreateAccessToken)
    testlogger.go:405: 2025/01/20 14:05:22 ...eb/routing/logger.go:102:func1() [I] router: completed GET /api/v1/users/user2/tokens for test-mock:12345, 401 Unauthorized in 4.9ms @ v1/api.go:413(v1.Routes.func2.5.1.reqBasicOrRevProxyAuth.6)
    api_token_test.go:46:
        	Error Trace:	/home/earl-warren/software/forgejo/tests/integration/integration_test.go:556
        	            				/home/earl-warren/software/forgejo/tests/integration/api_token_test.go:46
        	Error:      	Not equal:
        	            	expected: 200
        	            	actual  : 401
        	Test:       	TestAPIGetTokens
        	Messages:   	Request: GET /api/v1/users/user2/tokens
    api_token_test.go:46: Response:  {"message":"auth required","url":"http://localhost:3003/api/swagger"}

    testlogger.go:405: 2025/01/20 14:05:22 ...eb/routing/logger.go:102:func1() [I] router: completed DELETE /api/v1/users/user1/tokens/94 for test-mock:12345, 204 No Content in 1.4ms @ user/app.go:145(user.DeleteAccessToken)
```

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

- I added test coverage for Go changes...
  - [ ] in their respective `*_test.go` for unit tests.
  - [x] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [x] I do not want this change to show in the release notes.
- [ ] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

<!--start release-notes-assistant-->

## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- Bug fixes
  - [PR](https://codeberg.org/forgejo/forgejo/pulls/6633): <!--number 6633 --><!--line 0 --><!--description bGlzdGluZyB0b2tlbnMgbXVzdCBub3QgcmVxdWlyZSBiYXNpYyBhdXRo-->listing tokens must not require basic auth<!--description-->
<!--end release-notes-assistant-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6633
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-01-21 07:58:16 +00:00
Renovate Bot
966b845e39 Lock file maintenance (forgejo) (#6630)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6630
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-20 21:33:56 +00:00
Otto
aa986ef1a6 fix(ui): prevent overflow of branch selector in commit graph (#6617)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6617
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Reviewed-by: Otto <otto@codeberg.org>
2025-01-20 15:26:49 +00:00
0ko
0379739ac9 Fix mention and emoji expansion & Improve leaving list completion (#6597)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6597
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
2025-01-20 12:51:39 +00:00
ThomasBoom89
5be7c6cbd8 feat: implement migration of website field from gogs/gitea/github (#6474)
* cleanup: remove not used properties
* feat: implement migration of website field from gogs
* feat: implement dumping and restoring website field
* feat: implement migration of website field from gitea
* feat: implement migration of homepage/website field from github
* feat: implement website properties for repository migration

Gogs migration is untested for now.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6474
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: ThomasBoom89 <thomasboom89@noreply.codeberg.org>
Co-committed-by: ThomasBoom89 <thomasboom89@noreply.codeberg.org>
2025-01-20 12:18:19 +00:00
Beowulf
3d3ffaf5cb
fix(ui): prevent overflow of branch selector in commit graph 2025-01-19 21:50:12 +01:00
Otto
243fdb60d0 enh(ui): Remove DiffFileList component (#6619)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6619
Reviewed-by: Otto <otto@codeberg.org>
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
2025-01-19 19:18:49 +00:00
Beowulf
86c8949d9c
Remove DiffFileList component
The benefit / functionality provided by DiffFileList is already (better)
integrated in the header of the files.
If you want an overview, you can collapse all files via the same
overflow menu (where the stats were available).
To reduce the maintenance effort, the DiffFileList component is
therefore removed.
2025-01-19 18:56:18 +01:00
Otto
ce4730f9d7 fix(ui): add triangle down octicon to code search options dropdown (#6620)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6620
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: Otto <otto@codeberg.org>
2025-01-19 15:06:15 +00:00
Beowulf
5f2d445d00
fix(ui): add triangle down octicon to code search options dropdown
This adds the triangle down oction to the code search options dropdown
to match the other search option dropdowns (issue, pull).
2025-01-19 01:48:37 +01:00
Beowulf
d68e0d3e39 fix(ui): hide git note add button for commit if commit already has a note (#6613)
Regression from f5c0570533

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6613
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: Beowulf <beowulf@beocode.eu>
Co-committed-by: Beowulf <beowulf@beocode.eu>
2025-01-18 19:39:42 +00:00
Beowulf
7ea62c5ce4
Leave list/quote expanison with double enter
When editing a list or similar syntax elements, pressing enter starts a
new line with the line introducer (e.g. `- ` for a plain list).
But currently it's uncomfortable when someone wants to leave the list.
Pressing enter again simply adds more and more lines with the prefix.

With this change the list is terminated if enter is pressed on a line
which contains the introducer but nothing else. This behavior is known
from other markdown editors like the on used by GitLab or GitHub.

Additionally I changed the regex for detecting a prefix.
- Why: With the change you can add a single whitespace at the end if you
  want to keep an "empty" line. So if you want to write:
  ```
  - First
  -
  - Third
  ```
  You just need to add a whitespace in the second line to prevent that
  the prefix will be removed.
- Changes in detail:
  - ordered bullet list prefix detection:
    nothing changed
  - todo list and unordered list prefix detection:
    have been split up:
    - todo list: Changed that only 1 to 4 whitespaces can be between the
      list char (`-`,`*`,`+`) and the checkbox (`[ ]`,`[x]`) - Why? If
      more then 4 spaces are between the list char and the checkbox,
      this is no longer detected as a prefix for a todo item based on
      the markdown standard. Due to the amount of spaces it is instead
      parsed as code.
    - unordered list: The prefix now needs to have exactly one space
      after the list char (`-`,`*`,`+`). More spaces will not be taken
      into account for detecting the prefix.
  - quote prefix detection:
    nothing changed

The current e2e-tests where simplified and duplicated tests where
removed. Test cases for the new functionality where added.
2025-01-18 19:00:41 +01:00
Beowulf
276ef10dd5
Prevent prefix continuation if currently a text expander popup is open
This fixes that mentions and emoji autocompletion was broken in e.g. a
list, because the list handling take presidency over the text expansion.
2025-01-18 18:39:53 +01:00
Renovate Bot
e35afe475a Update renovate Docker tag to v39.115.4 (forgejo) (#6606)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6606
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-18 14:56:11 +00:00
Michael Kriese
d2bb86407f chore(renovate): fix self-update config [skip ci] (#6610)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6610
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
2025-01-18 14:54:06 +00:00
Michael Kriese
f2e63495e7
chore(renovate): fix self-update config [skip-ci] 2025-01-18 15:19:53 +01:00
0ko
244ee64c30 fix(i18n): flatten next locales (#6607)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6607
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
2025-01-18 07:35:28 +00:00
Renovate Bot
f1a92de4e6 Update postcss (forgejo) (#6562)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [postcss](https://postcss.org/) ([source](https://github.com/postcss/postcss)) | dependencies | minor | [`8.4.49` -> `8.5.1`](https://renovatebot.com/diffs/npm/postcss/8.4.49/8.5.1) |
| [postcss-html](https://github.com/ota-meshi/postcss-html) | devDependencies | minor | [`1.7.0` -> `1.8.0`](https://renovatebot.com/diffs/npm/postcss-html/1.7.0/1.8.0) |

---

### Release Notes

<details>
<summary>postcss/postcss (postcss)</summary>

### [`v8.5.1`](https://github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#851)

[Compare Source](https://github.com/postcss/postcss/compare/8.5.0...8.5.1)

-   Fixed backwards compatibility for complex cases (by [@&#8203;romainmenke](https://github.com/romainmenke)).

### [`v8.5.0`](https://github.com/postcss/postcss/releases/tag/8.5.0): 8.5 “Duke Alloces”

[Compare Source](https://github.com/postcss/postcss/compare/8.4.49...8.5.0)

<img src="https://github.com/user-attachments/assets/6ef654a0-d675-4ba0-a670-e28ef27062f5" align="right" width="200" height="200" alt="President Alloces seal">

PostCSS 8.5 brought API to work better with non-CSS sources like HTML, Vue.js/Svelte sources or CSS-in-JS.

[@&#8203;romainmenke](https://github.com/romainmenke) during [his work](https://github.com/postcss/postcss/issues/1995) on [Stylelint](https://stylelint.io) added `Input#document` in additional to `Input#css`.

```js
root.source.input.document //=> "<p>Hello</p>
                           //    <style>
                           //    p {
                           //      color: green;
                           //    }
                           //    </style>"
root.source.input.css      //=> "p {
                           //      color: green;
                           //    }"

```

#### Thanks to Sponsors

This release was possible thanks to our community.

If your company wants to support the sustainability of front-end infrastructure or wants to give some love to PostCSS, you can join our supporters by:

-   [**Tidelift**](https://tidelift.com/) with a Spotify-like subscription model supporting all projects from your lock file.
-   Direct donations at [**GitHub Sponsors**](https://github.com/sponsors/ai) or [**Open Collective**](https://opencollective.com/postcss#section-contributors).

</details>

<details>
<summary>ota-meshi/postcss-html (postcss-html)</summary>

### [`v1.8.0`](https://github.com/ota-meshi/postcss-html/releases/tag/v1.8.0)

[Compare Source](https://github.com/ota-meshi/postcss-html/compare/v1.7.0...v1.8.0)

#### What's Changed

-   update to latest PostCSS by [@&#8203;romainmenke](https://github.com/romainmenke) in https://github.com/ota-meshi/postcss-html/pull/134

**Full Changelog**: https://github.com/ota-meshi/postcss-html/compare/v1.7.0...v1.8.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDYuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNi4wIiwidGFyZ2V0QnJhbmNoIjoiZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6562
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-18 06:39:17 +00:00
0ko
4c746ec653 Initial support for localization and pluralization with go-i18n-JSON-v2 format (#6203)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6203
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
2025-01-18 05:51:19 +00:00
Renovate Bot
401906b88e Update module google.golang.org/protobuf to v1.36.3 (forgejo) (#6581)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [google.golang.org/protobuf](https://github.com/protocolbuffers/protobuf-go) | require | patch | `v1.36.2` -> `v1.36.3` |

---

### Release Notes

<details>
<summary>protocolbuffers/protobuf-go (google.golang.org/protobuf)</summary>

### [`v1.36.3`](https://github.com/protocolbuffers/protobuf-go/releases/tag/v1.36.3)

[Compare Source](https://github.com/protocolbuffers/protobuf-go/compare/v1.36.2...v1.36.3)

**Full Changelog**: https://github.com/protocolbuffers/protobuf-go/compare/v1.36.2...v1.36.3

Bug fixes:
[CL/642575](https://go-review.googlesource.com/c/protobuf/+/642575): reflect/protodesc: fix panic when working with dynamicpb
[CL/641036](https://go-review.googlesource.com/c/protobuf/+/641036): cmd/protoc-gen-go: remove json struct tags from unexported fields

User-visible changes:
[CL/641876](https://go-review.googlesource.com/c/protobuf/+/641876): proto: add example for GetExtension, SetExtension
[CL/642015](https://go-review.googlesource.com/c/protobuf/+/642015): runtime/protolazy: replace internal doc link with external link

Maintenance:
[CL/641635](https://go-review.googlesource.com/c/protobuf/+/641635): all: split flags.ProtoLegacyWeak out of flags.ProtoLegacy
[CL/641019](https://go-review.googlesource.com/c/protobuf/+/641019): internal/impl: remove unused exporter parameter
[CL/641018](https://go-review.googlesource.com/c/protobuf/+/641018): internal/impl: switch to reflect.Value.IsZero
[CL/641035](https://go-review.googlesource.com/c/protobuf/+/641035): internal/impl: clean up unneeded Go<1.12 MapRange() alternative
[CL/641017](https://go-review.googlesource.com/c/protobuf/+/641017): types/dynamicpb: switch atomicExtFiles to atomic.Uint64 type

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDYuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNi4wIiwidGFyZ2V0QnJhbmNoIjoiZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6581
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-18 05:33:34 +00:00
Renovate Bot
dbec2ed350 Update module github.com/caddyserver/certmagic to v0.21.7 (forgejo) (#6604)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [github.com/caddyserver/certmagic](https://github.com/caddyserver/certmagic) | require | patch | `v0.21.6` -> `v0.21.7` |

---

### Release Notes

<details>
<summary>caddyserver/certmagic (github.com/caddyserver/certmagic)</summary>

### [`v0.21.7`](https://github.com/caddyserver/certmagic/compare/v0.21.6...v0.21.7)

[Compare Source](https://github.com/caddyserver/certmagic/compare/v0.21.6...v0.21.7)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDYuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNi4wIiwidGFyZ2V0QnJhbmNoIjoiZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6604
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-18 05:31:17 +00:00
Renovate Bot
5c8db43447 Update dependency katex to v0.16.21 (forgejo) (#6603)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [katex](https://katex.org) ([source](https://github.com/KaTeX/KaTeX)) | dependencies | patch | [`0.16.20` -> `0.16.21`](https://renovatebot.com/diffs/npm/katex/0.16.20/0.16.21) |

---

### Release Notes

<details>
<summary>KaTeX/KaTeX (katex)</summary>

### [`v0.16.21`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01621-2025-01-17)

[Compare Source](https://github.com/KaTeX/KaTeX/compare/v0.16.20...v0.16.21)

##### Bug Fixes

-   escape \htmlData attribute name ([57914ad](57914ad91e))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDYuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNi4wIiwidGFyZ2V0QnJhbmNoIjoiZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6603
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-18 05:30:16 +00:00
Beowulf
34e1100ae2 fix(ui): reset content of text field for comments when cancelling (#6595)
Currently, the content of the text field is not reset when you cancel editing. This change resets the content of the text field when editing is canceled.

If this is not done and you click on cancel and then on edit again, you can no longer return to the initial content without completely reloading the page.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6595
Reviewed-by: Otto <otto@codeberg.org>
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Beowulf <beowulf@beocode.eu>
Co-committed-by: Beowulf <beowulf@beocode.eu>
2025-01-17 20:14:28 +00:00
Benedikt Straub
a2787bb09e
Initial support for localization and pluralization with go-i18n-JSON-v2 format 2025-01-17 11:21:28 +01:00
Earl Warren
376a2e19ea fix: reduce noise for the v303 migration (#6591)
Using SELECT `%s` FROM `%s` WHERE 0 = 1 to assert the existence of a column is simple but noisy: it shows errors in the migrations that are confusing for Forgejo admins because they are not actual errors.

Use introspection instead, which is more complicated but leads to the same result.

Add a test that ensures it works as expected, for all database types. Although the migration is run for all database types, it does not account for various scenarios and is never tested in the case a column does not exist.

Refs: https://codeberg.org/forgejo/forgejo/issues/6583

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6591
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-01-17 07:42:20 +00:00
Gusted
b2a3a0411c [PORT] Remove SHA1 for support for ssh rsa signing (#31857) (#5303)
https://github.com/go-fed/httpsig seems to be unmaintained.

Switch to github.com/42wim/httpsig which has removed deprecated crypto
and default sha256 signing for ssh rsa.

No impact for those that use ed25519 ssh certificates.

This is a breaking change for:
- gitea.com/gitea/tea (go-sdk) - I'll be sending a PR there too
- activitypub using deprecated crypto (is this actually used?)

(cherry picked from commit 01dec7577a051d9bb30e91f6cf6653dc51a37d06)

---
Conflict resolution: trivial

Co-authored-by: Wim <wim@42.be>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/5303
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2025-01-17 03:17:10 +00:00
Earl Warren
387f590d9c [gitea] week 2025-03 cherry pick (gitea/main -> forgejo) (#6539)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6539
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
2025-01-17 01:58:00 +00:00
Robert Wolff
cefd786685 Remove source branch from pr list, fix #5009, #6080 (#6522)
### What?
It removes the source branch that is not necessary in the PR list (see #5009). It adds a little chevron to the right in front of the target branch. That could be replaced by words (“into”), or removed, if preferred. But, I think it looks decent like that.
### Screenshots
#### Before
![image](/attachments/be3c9817-2207-4610-b6bd-70304436f81d)
#### After
![image](/attachments/a7c84d2f-1592-4a82-aecc-d038f9495ef7)
### Testing
Run the development version of forgejo from the PR. For any existing repository with PRs, open the pulls list.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6522
Reviewed-by: Otto <otto@codeberg.org>
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Robert Wolff <mahlzahn@posteo.de>
Co-committed-by: Robert Wolff <mahlzahn@posteo.de>
2025-01-16 23:59:21 +00:00
Renovate Bot
907ab8bdef Update dependency @github/relative-time-element to v4.4.5 (forgejo) (#6559)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [@github/relative-time-element](https://github.com/github/relative-time-element) | dependencies | patch | [`4.4.4` -> `4.4.5`](https://renovatebot.com/diffs/npm/@github%2frelative-time-element/4.4.4/4.4.5) |

---

### Release Notes

<details>
<summary>github/relative-time-element (@&#8203;github/relative-time-element)</summary>

### [`v4.4.5`](https://github.com/github/relative-time-element/releases/tag/v4.4.5)

[Compare Source](https://github.com/github/relative-time-element/compare/v4.4.4...v4.4.5)

#### What's Changed

-   fix: wrap Intl.<>() calls in try/catch by [@&#8203;francinelucca](https://github.com/francinelucca) in https://github.com/github/relative-time-element/pull/297
-   get main branch green by [@&#8203;keithamus](https://github.com/keithamus) in https://github.com/github/relative-time-element/pull/302
-   Make `applyDuration` reversible by [@&#8203;leduyquang753](https://github.com/leduyquang753) in https://github.com/github/relative-time-element/pull/298
-   Use node v22 by [@&#8203;camertron](https://github.com/camertron) in https://github.com/github/relative-time-element/pull/303

#### New Contributors

-   [@&#8203;francinelucca](https://github.com/francinelucca) made their first contribution in https://github.com/github/relative-time-element/pull/297
-   [@&#8203;leduyquang753](https://github.com/leduyquang753) made their first contribution in https://github.com/github/relative-time-element/pull/298
-   [@&#8203;camertron](https://github.com/camertron) made their first contribution in https://github.com/github/relative-time-element/pull/303

**Full Changelog**: https://github.com/github/relative-time-element/compare/v4.4.4...v4.4.5

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDYuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNi4wIiwidGFyZ2V0QnJhbmNoIjoiZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6559
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-16 22:51:49 +00:00
0ko
4fd56a11c8 tests(e2e): Various fixes to visual testing (#6569)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6569
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
2025-01-16 18:06:47 +00:00
Renovate Bot
909738e6f6 Update renovate Docker tag to v39.111.0 (forgejo) (#6570)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6570
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-16 15:20:57 +00:00
Earl Warren
3003812477 fix: avoid Gitea migration warnings (take 2) (#6577)
274bc480b4 introduced a regression in https://codeberg.org/forgejo/forgejo/pulls/6343

Trying to remove fields that have already been removed by

dd1523c72e/models/forgejo_migrations/v14.go

Is a noop for SQLite and went undetected by the upgrade tests.

Fixes: https://codeberg.org/forgejo/forgejo/issues/6575
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6577
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-01-15 22:06:38 +00:00
Earl Warren
4c7bfedf55 chore(ci): upgrade forgejo-build-publish/build@v5.3.1 (#6573)
So that it does not use docker.io

The test happens at `.forgejo/workflows/build-release-integration.yml`

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6573
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-01-15 21:47:32 +00:00
0ko
dd1523c72e fix(ui): correct switch ordering (#6576)
Regressions of #6459 and #6542:

`templates/repo/issue/navbar.tmpl`:
* `issue-list-navbar` is the ordering class which was incorrectly removed
* and then it was incorrectly replaced with `list-header-toggle`

`templates/repo/issue/openclose.tmpl`:
* it did not have ordering rules in the first place
* but then `list-header-toggle` was incorrectly applied to it

Thanks to @fnetX for spotting and notifying!

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6576
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Co-committed-by: 0ko <0ko@noreply.codeberg.org>
2025-01-15 19:56:17 +00:00
Otto Richter
e7299eb0fb tests(e2e): Mask user heatmap in screenshots
It depends on both relative activity and date the test is run on
2025-01-15 19:16:28 +01:00
Otto Richter
f7ba8f0e41 tests(e2e): Do not fail early when comparing screenshots
Also set a unique outputDir so that artifacts are preserved and not overwritten by the following tests.
2025-01-15 19:16:28 +01:00
Otto Richter
a975b6ab94 tests(e2e): Explicitly generate screenshots
As per https://codeberg.org/forgejo/forgejo/pulls/6400, the after hook runs for every test, resulting in duplicated screenshots.

Not all tests are supposed to generate screenshots, especially because they could be flaky (also see 206d4cfb7a ).
Additionally, the implicit behaviour might have caused confusion, so we now create screenshots explicitly, adding the statements from the tests that already generated screenshots.
2025-01-15 15:09:24 +01:00
Earl Warren
c81e5fe123 chore(release-notes): Forgejo v10.0.0 (#6408)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6408
2025-01-15 08:09:13 +00:00
0ko
92a5fe04c6 Squash translation updates 2025-01-15 07:40:18 +00:00
forgejo-release-manager
c30d13b97c chore(release-notes): Forgejo v10.0.0 2025-01-15 07:19:55 +00:00
Jaime merino
9f842f0dec Add search action jobs for API routes, repo, org and global level (#6300)
This PR wants to improve information of the tasks waiting to be executed on a global, organization, user and repository leve.
The main motivation is explained here https://codeberg.org/forgejo/discussions/issues/241

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

- I added test coverage for Go changes...
  - [x] in their respective `*_test.go` for unit tests.
  - [x] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [ ] I do not want this change to show in the release notes.
- [x] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

<!--start release-notes-assistant-->

## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- Features
  - [PR](https://codeberg.org/forgejo/forgejo/pulls/6300): <!--number 6300 --><!--line 0 --><!--description QWRkIHNlYXJjaCBhY3Rpb24gam9icyBmb3IgQVBJIHJvdXRlcywgcmVwbywgb3JnIGFuZCBnbG9iYWwgbGV2ZWw=-->Add search action jobs for API routes, repo, org and global level<!--description-->
<!--end release-notes-assistant-->

Co-authored-by: jaime merino <jaime.merino_mora@mail.schwarzª>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6300
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Jaime merino <cobak78@gmail.com>
Co-committed-by: Jaime merino <cobak78@gmail.com>
2025-01-14 11:17:42 +00:00
Renovate Bot
a013acb632 Update https://data.forgejo.org/infrastructure/issue-action action to v1.3.0 (forgejo) (#6563)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6563
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-14 07:07:49 +00:00
Codeberg Translate
d717c78ea0 i18n: update of translations from Codeberg Translate (#6515)
Co-authored-by: 0ko <0ko@users.noreply.translate.codeberg.org>
Co-authored-by: Edgarsons <edgarsons@users.noreply.translate.codeberg.org>
Co-authored-by: div72 <div72@users.noreply.translate.codeberg.org>
Co-authored-by: tkbremnes <tkbremnes@users.noreply.translate.codeberg.org>
Co-authored-by: artnay <artnay@users.noreply.translate.codeberg.org>
Co-authored-by: Outbreak2096 <outbreak2096@users.noreply.translate.codeberg.org>
Co-authored-by: Protestant <protestant@users.noreply.translate.codeberg.org>
Co-authored-by: micash <micash@users.noreply.translate.codeberg.org>
Co-authored-by: Ikuyo Mita <ikuyo@users.noreply.translate.codeberg.org>
Co-authored-by: tacaly <frederick@tacaly.com>
Co-authored-by: burakozaydin <burakozaydin@users.noreply.translate.codeberg.org>
Co-authored-by: kdh8219 <kdh8219@monamo.dev>
Co-authored-by: Juno Takano <jutty@users.noreply.translate.codeberg.org>
Co-authored-by: earl-warren <earl-warren@users.noreply.translate.codeberg.org>
Co-authored-by: justbispo <justbispo@users.noreply.translate.codeberg.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6515
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: Codeberg Translate <translate@noreply.codeberg.org>
Co-committed-by: Codeberg Translate <translate@noreply.codeberg.org>
2025-01-14 06:49:06 +00:00
Renovate Bot
a87d07f4d2 Update dependency katex to v0.16.20 (forgejo) (#6548)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [katex](https://katex.org) ([source](https://github.com/KaTeX/KaTeX)) | dependencies | patch | [`0.16.18` -> `0.16.20`](https://renovatebot.com/diffs/npm/katex/0.16.18/0.16.20) |

---

### Release Notes

<details>
<summary>KaTeX/KaTeX (katex)</summary>

### [`v0.16.20`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01620-2025-01-12)

[Compare Source](https://github.com/KaTeX/KaTeX/compare/v0.16.19...v0.16.20)

##### Bug Fixes

-   \providecommand does not overwrite existing macro ([#&#8203;4000](https://github.com/KaTeX/KaTeX/issues/4000)) ([6d30fe4](6d30fe47b0)), closes [#&#8203;3928](https://github.com/KaTeX/KaTeX/issues/3928)

### [`v0.16.19`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01619-2024-12-29)

[Compare Source](https://github.com/KaTeX/KaTeX/compare/v0.16.18...v0.16.19)

##### Bug Fixes

-   **types:** improve `strict` function type ([#&#8203;4009](https://github.com/KaTeX/KaTeX/issues/4009)) ([4228b4e](4228b4eb52))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45My4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTMuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6548
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-13 22:10:43 +00:00
0ko
30c7a0b947 Make switch larger on touchscreen devices (#6546)
Followup to https://codeberg.org/forgejo/forgejo/pulls/6459.

Usually it's quite hard to have inputs with balanced size that works for both desktop and mobile: it's either too large or too small for one of them. I think this can be a solution for this new element.

I tried it locally, it feels good on a phone. There's likely one downside which is that the switch will still be larger on touch devices even when they're wide, like on tablets. I think it can be resolved separately at some point. It isn't a problem on small devices because usually these elements go on separate rows.

## Preview

This change only affects touch devices.

|Before|After|
|-|-|
|![](/attachments/75311c3f-2e19-4b03-9596-7f78c78f0a70)|![](/attachments/74f987af-57c1-417d-89ed-f96666cb9bad)|

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6546
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Co-committed-by: 0ko <0ko@noreply.codeberg.org>
2025-01-13 17:28:36 +00:00
0ko
4e6f8dd57a Use redesigned switch on commit graph page (#6545)
[skip ci] no related tests (covered by visual testing only)

Followup to https://codeberg.org/forgejo/forgejo/pulls/5214 and https://codeberg.org/forgejo/forgejo/pulls/6459.

Resolves https://codeberg.org/forgejo/forgejo/issues/2852.

## Preview

|Before|After|
|-|-|
|![](/attachments/c871bcdd-f60c-460f-93d8-33550b409d25)|![](/attachments/e97e63d8-2917-408d-87ce-37ee31dedc93)|

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6545
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Co-committed-by: 0ko <0ko@noreply.codeberg.org>
2025-01-13 17:20:32 +00:00
0ko
03fe21d020 Use flex for switch items (#6544)
[skip ci] no related tests (covered by visual testing only)

Followup to https://codeberg.org/forgejo/forgejo/pulls/6459.

More specifically, to https://codeberg.org/forgejo/forgejo/pulls/6459#issuecomment-2562521. Thanks, @viceice!

I found a good reason to use `display: flex;` for the switch items: it prevents whitespaces between HTML tags from showing up between the icon and the text.

I was wondering why the new switch is wider, now I noticed why while playing with it. Lack of this additional whitespace looks better and is consistent with most of the UI.

## Preview

|Description|Image|
|-|-|
|The margin that's supposed to be (no whitespace)|![](https://codeberg.org/attachments/c0377eaa-7dec-4ef1-a4d6-70ad67608a8c)|
|Redesigned switch before|![](https://codeberg.org/attachments/d05bb17a-7e5f-4356-9840-2682f5b31f8a)|
|After|![](https://codeberg.org/attachments/b62c9373-395c-47a3-a8aa-b6905a22b11a)|

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6544
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Co-committed-by: 0ko <0ko@noreply.codeberg.org>
2025-01-13 17:10:43 +00:00
Earl Warren
9a608a034d feat: add a buffer writer to the logger, for internal use (#6551)
Identical to console, file or conn but writes to a buffer instead.

It is useful in two contexts:

- tests that need to assert the logs in a way that is simpler than
  LogChecker.
- capturing the logs of a given task to display in the web UI,
  return from the API, etc.

Since all logged events at a given level are written to the buffer by default, it is best used with WriterMode.Expression to only keep the log lines of interest.

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

- I added test coverage for Go changes...
  - [x] in their respective `*_test.go` for unit tests.
  - [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [x] I do not want this change to show in the release notes.
- [ ] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6551
Reviewed-by: Antonin Delpeuch <wetneb@noreply.codeberg.org>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-01-13 13:40:24 +00:00
0ko
0858a879e5 Prevent vertical stretching of the switch (#6543)
Followup to https://codeberg.org/forgejo/forgejo/pulls/6459 and https://codeberg.org/forgejo/forgejo/pulls/6542.

There are some edge cases where the UI would try to stretch the switch. Such inputs aren't really supposed to be dynamically stretched like this because it never looks good. So, I added a few rules to prevent this.

## Preview

This is the edge case with an artificially narrow screen.

|Before|After|
|-|-|
|![](/attachments/343d395c-54dd-4d86-a402-0c6b6a06237a)|![](/attachments/26b072a3-4056-4b1a-a08f-e903160609d9)|

No visual changes are expected outside of such edge case.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6543
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Co-committed-by: 0ko <0ko@noreply.codeberg.org>
2025-01-13 08:28:30 +00:00
0ko
2ff408c8c8 Apply switch redesign to more areas (#6542)
[skip ci] no relevant tests

Followup to https://codeberg.org/forgejo/forgejo/pulls/6459.

This PR applies the new switch design to areas where it is simple to apply and no other interventions are needed other than switching classes.

Also, added back the utility class `list-header-toggle` to a few places where it was removed in https://codeberg.org/forgejo/forgejo/pulls/6459. It is used for item reordering on smaller screens and it isn't actually needed in those areas (does nothing because of too wide elements), but it wasn't supposed to be removed.

The affected areas also include the menus in notifications. This is a followup to https://codeberg.org/forgejo/forgejo/pulls/3175 which should make the unchosen item look more obviously as an interactive element.

## Preview

|Area|Before|After|
|-|-|-|
|`projects/list.tmpl`|![](https://codeberg.org/attachments/e6977cbd-6fcc-400b-9f8a-1107b9ac5b54)|![](https://codeberg.org/attachments/8bd8ddb3-caf5-4f1b-aa3a-1942b9ea7f4a)|
|`repo/issue/navbar.tmp`||No visible change|
|`repo/issue/openclose.tmpl`||No visible change|
|`.../dashboard/issues.tmpl`|![](https://codeberg.org/attachments/5bc431aa-c522-4813-8d0f-b52e8c035dd0)|![](https://codeberg.org/attachments/a397be12-d8dc-434a-b109-2ba3521b36e6)|
|`.../dashboard/milestones.tmpl`|![](https://codeberg.org/attachments/211d76fc-c5e5-40f5-ade9-96e7bf56526e)|![](https://codeberg.org/attachments/760b0a3b-bd14-43ef-bb2b-21da426e91a3)|
|`.../notification_div.tmpl`|![](https://codeberg.org/attachments/822cfda7-e66d-47cf-9436-e20f392df2ce)|![](https://codeberg.org/attachments/07587fe5-454d-474c-8c39-e1331ff4deb5)|
|`.../notification_subscriptions.tmpl`|![](https://codeberg.org/attachments/960ac65a-f3a3-4385-b8fc-7bbf44c21bee)|![](https://codeberg.org/attachments/880bbcad-605b-4fbf-92e3-a0b270a40725)|

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6542
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Co-committed-by: 0ko <0ko@noreply.codeberg.org>
2025-01-13 08:28:06 +00:00
0ko
333f384bc8 Fix minor misalignment (#6541)
[skip ci] no relevant tests

It's been there for a while. `flex-start` causes all items to stick to one side and be misaligned if they have different heights.

`align-items` isn't actually needed in this area when the goal is centered vertical alignment, however, unsetting it _could_ break items' height. I couldn't make it do that, but to be safe I kept it and only replaced the value.

## Preview

|![](/attachments/5ccf3c2d-c468-4524-84b4-efa3b3d5a60a)|
|-|
|![](/attachments/5ad079e9-5e22-4118-b1cd-492ad51f0371)|

There's no difference when they're broken into two rows, on mobile.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6541
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Co-committed-by: 0ko <0ko@noreply.codeberg.org>
2025-01-13 08:27:42 +00:00
Renovate Bot
fc07b95d67 Update module code.gitea.io/sdk/gitea to v0.20.0 (forgejo) (#6528)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| code.gitea.io/sdk/gitea | require | minor | `v0.17.1` -> `v0.20.0` |

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45My4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTMuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6528
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-13 04:59:19 +00:00
Zsombor Gegesy
af5d96e2cc Do not report warning when git shows new reference (#6540)
## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

- I added test coverage for Go changes...
  - [X] in their respective `*_test.go` for unit tests.
  - [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [X] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [x] I do not want this change to show in the release notes.
- [ ] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6540
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Zsombor Gegesy <gzsombor@gmail.com>
Co-committed-by: Zsombor Gegesy <gzsombor@gmail.com>
2025-01-13 04:52:54 +00:00
Renovate Bot
011ac8df44 Update renovate Docker tag to v39.106.0 (forgejo) (#6550)
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-13 04:50:16 +00:00
Renovate Bot
dd063409e3 Update data.forgejo.org/renovate/renovate Docker tag to v39.106.0 (forgejo) (#6547)
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-13 04:45:47 +00:00
Lunny Xiao
f2feb34927
chore(performance): loadCommentsByType sets Issues
Keep the setting of comment.Issues from the refactor. It is cheap and
potentially saves loading the issue again.

Former title: Some small refactors (#33144)

(cherry picked from commit d3083d21981f9445cf7570956a1fdedfc8578b56)

Conflicts:
	models/issues/comment_list.go
	models/issues/issue_list.go
	routers/web/repo/issue_view.go
2025-01-12 17:52:38 +01:00
Thilina Jayanath
ed96852fdb fix: enable releases and/or wiki if user set the options in repo migration (#6051)
## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

- I added test coverage for Go changes...
  - [ ] in their respective `*_test.go` for unit tests.
  - [x] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [ ] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [ ] I do not want this change to show in the release notes.
- [ ] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6051
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Thilina Jayanath <thilina91@gmail.com>
Co-committed-by: Thilina Jayanath <thilina91@gmail.com>
2025-01-12 09:16:45 +00:00
Lunny Xiao
d09b8ba9cf
Fix fuzz test (#33156)
(cherry picked from commit ba5e3a5161a497aa8c73827774870fb94676e68b)
2025-01-12 09:02:47 +01:00
yp05327
f809052193
Support the new exit code for git remote subcommands for git version >=2.30.0 (#33129)
Fix #32889

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
(cherry picked from commit 0d7d2ed39d0c0435cdc6403ee7764850154dca5a)

Conflicts:
	modules/git/remote.go
  trivial context conflict
2025-01-12 08:52:51 +01:00
Renovate Bot
263b55fda8 Update x/tools (forgejo) (#6537)
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-12 06:11:58 +00:00
Renovate Bot
20b401601c Update module code.forgejo.org/forgejo/act to v1.23.1 (forgejo) (#6535)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [code.forgejo.org/forgejo/act](https://code.forgejo.org/forgejo/act) | replace | minor | `v1.22.0` -> `v1.23.1` |

---

### Release Notes

<details>
<summary>forgejo/act (code.forgejo.org/forgejo/act)</summary>

### [`v1.23.1`](https://code.forgejo.org/forgejo/act/compare/v1.23.0...v1.23.1)

[Compare Source](https://code.forgejo.org/forgejo/act/compare/v1.23.0...v1.23.1)

### [`v1.23.0`](https://code.forgejo.org/forgejo/act/compare/v1.22.2...v1.23.0)

[Compare Source](https://code.forgejo.org/forgejo/act/compare/v1.22.2...v1.23.0)

### [`v1.22.2`](https://code.forgejo.org/forgejo/act/compare/v1.22.1...v1.22.2)

[Compare Source](https://code.forgejo.org/forgejo/act/compare/v1.22.1...v1.22.2)

### [`v1.22.1`](https://code.forgejo.org/forgejo/act/compare/v1.22.0...v1.22.1)

[Compare Source](https://code.forgejo.org/forgejo/act/compare/v1.22.0...v1.22.1)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45My4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTMuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6535
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-12 06:08:05 +00:00
Renovate Bot
b3626f0208 Update dependency asciinema-player to v3.8.2 (forgejo) (#6518)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [asciinema-player](https://github.com/asciinema/asciinema-player) | dependencies | patch | [`3.8.0` -> `3.8.2`](https://renovatebot.com/diffs/npm/asciinema-player/3.8.0/3.8.2) |

---

### Release Notes

<details>
<summary>asciinema/asciinema-player (asciinema-player)</summary>

### [`v3.8.2`](https://github.com/asciinema/asciinema-player/releases/tag/v3.8.2): 3.8.2

[Compare Source](https://github.com/asciinema/asciinema-player/compare/v3.8.1...v3.8.2)

Notable changes:

-   fixed blinking of ascii drawing chars ([#&#8203;273](https://github.com/asciinema/asciinema-player/issues/273))
-   background color is no longer brightened (value + 8) when blink attribute is set - this caused ugly rendering in some scenarios, and no terminals I tested do this either

### [`v3.8.1`](https://github.com/asciinema/asciinema-player/releases/tag/v3.8.1): 3.8.1

[Compare Source](https://github.com/asciinema/asciinema-player/compare/v3.8.0...v3.8.1)

Notable changes:

-   upgraded avt to the latest version
-   added `dist/bundle/asciinema-player.min.js` to package exports to allow pre-3.8.0 usage ([#&#8203;263](https://github.com/asciinema/asciinema-player/issues/263))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45My4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTMuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6518
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-11 10:18:53 +00:00
Renovate Bot
f9e6b3e162 Update renovate Docker tag to v39.103.0 (forgejo) (#6529)
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-11 06:49:51 +00:00
Renovate Bot
98edc27088 Update module github.com/editorconfig-checker/editorconfig-checker/v3/cmd/editorconfig-checker to v3.1.1 (forgejo) (#6520)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [github.com/editorconfig-checker/editorconfig-checker/v3/cmd/editorconfig-checker](https://github.com/editorconfig-checker/editorconfig-checker) | minor | `v3.0.3` -> `v3.1.1` |

---

### Release Notes

<details>
<summary>editorconfig-checker/editorconfig-checker (github.com/editorconfig-checker/editorconfig-checker/v3/cmd/editorconfig-checker)</summary>

### [`v3.1.1`](https://github.com/editorconfig-checker/editorconfig-checker/releases/tag/v3.1.1)

[Compare Source](https://github.com/editorconfig-checker/editorconfig-checker/compare/v3.1.0...v3.1.1)

##### Bug Fixes

-   dockerfile expected binary at /, not /usr/bin/ [#&#8203;410](https://github.com/editorconfig-checker/editorconfig-checker/issues/410) ([#&#8203;411](https://github.com/editorconfig-checker/editorconfig-checker/issues/411)) ([2c82197](2c821979c0))

### [`v3.1.0`](https://github.com/editorconfig-checker/editorconfig-checker/releases/tag/v3.1.0)

[Compare Source](https://github.com/editorconfig-checker/editorconfig-checker/compare/v3.0.3...v3.1.0)

##### Features

-   add zip version when compressing all binaries ([#&#8203;321](https://github.com/editorconfig-checker/editorconfig-checker/issues/321)) ([#&#8203;362](https://github.com/editorconfig-checker/editorconfig-checker/issues/362)) ([f1bb625](f1bb625f25))
-   consolidate adjacent error messages ([#&#8203;360](https://github.com/editorconfig-checker/editorconfig-checker/issues/360)) ([cf4ae1c](cf4ae1cced))
-   editorconfig-checker-disable-next-line ([#&#8203;363](https://github.com/editorconfig-checker/editorconfig-checker/issues/363)) ([6116ec6](6116ec6685))
-   provide Codeclimate compatible report fromat ([#&#8203;367](https://github.com/editorconfig-checker/editorconfig-checker/issues/367)) ([282c315](282c315bd1))
-   support `.editorconfig-checker.json` config ([#&#8203;375](https://github.com/editorconfig-checker/editorconfig-checker/issues/375)) ([cb0039c](cb0039cfe6))

##### Bug Fixes

-   actually use the correct end marker ([#&#8203;405](https://github.com/editorconfig-checker/editorconfig-checker/issues/405)) ([3c03499](3c034994cb))
-   add `.ecrc` deprecation warning ([#&#8203;389](https://github.com/editorconfig-checker/editorconfig-checker/issues/389)) ([d33b81c](d33b81cc71))
-   this release-please marker ([#&#8203;403](https://github.com/editorconfig-checker/editorconfig-checker/issues/403)) ([617c6d4](617c6d44b5))
-   typo in config, `SpacesAftertabs` => `SpacesAfterTabs` ([#&#8203;386](https://github.com/editorconfig-checker/editorconfig-checker/issues/386)) ([25e3542](25e3542ee4))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45My4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTMuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6520
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-10 08:55:45 +00:00
Renovate Bot
8ac310bdfd Update module gitlab.com/gitlab-org/api/client-go to v0.119.0 (forgejo) (#6521)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [gitlab.com/gitlab-org/api/client-go](https://gitlab.com/gitlab-org/api/client-go) | require | minor | `v0.116.0` -> `v0.119.0` |

---

### Release Notes

<details>
<summary>gitlab-org/api/client-go (gitlab.com/gitlab-org/api/client-go)</summary>

### [`v0.119.0`](https://gitlab.com/gitlab-org/api/client-go/tags/v0.119.0)

[Compare Source](https://gitlab.com/gitlab-org/api/client-go/compare/v0.118.0...v0.119.0)

#### 0.119.0 (2025-01-07)

No changes.

### [`v0.118.0`](https://gitlab.com/gitlab-org/api/client-go/tags/v0.118.0)

[Compare Source](https://gitlab.com/gitlab-org/api/client-go/compare/v0.117.0...v0.118.0)

#### 0.118.0 (2024-12-20)

No changes.

### [`v0.117.0`](https://gitlab.com/gitlab-org/api/client-go/tags/v0.117.0)

[Compare Source](https://gitlab.com/gitlab-org/api/client-go/compare/v0.116.0...v0.117.0)

#### 0.117.0 (2024-12-16)

No changes.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45My4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTMuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6521
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-10 02:55:13 +00:00
Gusted
46e15e57f7 port(gitea#31954): Add lock for parallel maven upload (#6513)
Backport #31851
Fix #30171

---

Fixes https://github.com/go-gitea/gitea/issues/30171, this is also a
issue in Forgejo. Backport the implementation that uses the existing
sync module which does not work for multiple instances which is
perfectly fine for Forgejo for now.

(cherry picked from commit 9c990ac043a0167dc59f1c822988ed2316f7c1df)

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6513
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
2025-01-09 17:39:38 +00:00
Codeberg Translate
a22c8248a3 i18n: update of translations from Codeberg Translate (#6451)
Co-authored-by: earl-warren <earl-warren@users.noreply.translate.codeberg.org>
Co-authored-by: Edgarsons <edgarsons@users.noreply.translate.codeberg.org>
Co-authored-by: 0ko <0ko@users.noreply.translate.codeberg.org>
Co-authored-by: div72 <div72@users.noreply.translate.codeberg.org>
Co-authored-by: Outbreak2096 <outbreak2096@users.noreply.translate.codeberg.org>
Co-authored-by: Salif Mehmed <mail@salif.eu>
Co-authored-by: tacaly <frederick@tacaly.com>
Co-authored-by: revi <yewon@revi.email>
Co-authored-by: lordwektabyte <lordwektabyte@users.noreply.translate.codeberg.org>
Co-authored-by: xtex <xtexchooser@duck.com>
Co-authored-by: artnay <artnay@users.noreply.translate.codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-authored-by: Juno Takano <jutty@users.noreply.translate.codeberg.org>
Co-authored-by: justbispo <justbispo@users.noreply.translate.codeberg.org>
Co-authored-by: Atalanttore <atalanttore@users.noreply.translate.codeberg.org>
Co-authored-by: SomeTr <sometr@users.noreply.translate.codeberg.org>
Co-authored-by: Benedikt Straub <benedikt-straub@web.de>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: banaanihillo <banaanihillo@users.noreply.translate.codeberg.org>
Co-authored-by: emansije <emansije@users.noreply.translate.codeberg.org>
Co-authored-by: Caesar Schinas <caesar@caesarschinas.com>
Co-authored-by: Marti <marti@users.noreply.translate.codeberg.org>
Co-authored-by: mahlzahn <mahlzahn@posteo.de>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6451
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Codeberg Translate <translate@noreply.codeberg.org>
Co-committed-by: Codeberg Translate <translate@noreply.codeberg.org>
2025-01-09 07:33:38 +00:00
Renovate Bot
6980a87a08 Update module github.com/caddyserver/certmagic to v0.21.6 (forgejo) (#6510)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [github.com/caddyserver/certmagic](https://github.com/caddyserver/certmagic) | require | patch | `v0.21.5` -> `v0.21.6` |

---

### Release Notes

<details>
<summary>caddyserver/certmagic (github.com/caddyserver/certmagic)</summary>

### [`v0.21.6`](https://github.com/caddyserver/certmagic/releases/tag/v0.21.6)

[Compare Source](https://github.com/caddyserver/certmagic/compare/v0.21.5...v0.21.6)

Minor patch for ARI handshake maintenance.

#### What's Changed

-   Fix typos by [@&#8203;deining](https://github.com/deining) in https://github.com/caddyserver/certmagic/pull/324
-   Replace interface{} with any by [@&#8203;deining](https://github.com/deining) in https://github.com/caddyserver/certmagic/pull/325
-   ari: Only check if cert is not expired, and use proper context by [@&#8203;mholt](https://github.com/mholt) in https://github.com/caddyserver/certmagic/pull/328

#### New Contributors

-   [@&#8203;deining](https://github.com/deining) made their first contribution in https://github.com/caddyserver/certmagic/pull/324

**Full Changelog**: https://github.com/caddyserver/certmagic/compare/v0.21.5...v0.21.6

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45My4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTMuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6510
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-09 06:37:24 +00:00
Renovate Bot
d2d14ce4bb Update dependency monaco-editor to v0.52.2 (forgejo) (#6511)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [monaco-editor](https://github.com/microsoft/monaco-editor) | dependencies | minor | [`0.51.0` -> `0.52.2`](https://renovatebot.com/diffs/npm/monaco-editor/0.51.0/0.52.2) |

---

### Release Notes

<details>
<summary>microsoft/monaco-editor (monaco-editor)</summary>

### [`v0.52.2`](https://github.com/microsoft/monaco-editor/releases/tag/v0.52.2)

[Compare Source](https://github.com/microsoft/monaco-editor/compare/v0.52.0...v0.52.2)

#### Changes:

-   [#&#8203;4777](https://github.com/microsoft/monaco-editor/issues/4777): 0.52.2
-   [#&#8203;4774](https://github.com/microsoft/monaco-editor/issues/4774): Updates changelog

This list of changes was [auto generated](https://dev.azure.com/monacotools/Monaco/\_build/results?buildId=309119\&view=logs).

### [`v0.52.0`](https://github.com/microsoft/monaco-editor/blob/HEAD/CHANGELOG.md#0520)

[Compare Source](https://github.com/microsoft/monaco-editor/compare/v0.51.0...v0.52.0)

-   Comment added inside of `IModelContentChangedEvent`

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45My4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTMuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6511
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-09 06:26:12 +00:00
Renovate Bot
a99cd47081 Update dependency typescript to v5.7.3 (forgejo) (#6509)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [typescript](https://www.typescriptlang.org/) ([source](https://github.com/microsoft/TypeScript)) | devDependencies | patch | [`5.7.2` -> `5.7.3`](https://renovatebot.com/diffs/npm/typescript/5.7.2/5.7.3) |

---

### Release Notes

<details>
<summary>microsoft/TypeScript (typescript)</summary>

### [`v5.7.3`](https://github.com/microsoft/TypeScript/releases/tag/v5.7.3): TypeScript 5.7.3

[Compare Source](https://github.com/microsoft/TypeScript/compare/v5.7.2...v5.7.3)

For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-7/).

-   [fixed issues query for Typescript 5.7.0 (Beta)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.7.0%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.7.1 (RC)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.7.1%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.7.2 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.7.2%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.7.3 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.7.2%22+is%3Aclosed+).

Downloads are available on [npm](https://www.npmjs.com/package/typescript)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45My4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTMuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6509
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-09 06:24:29 +00:00
Michael Kriese
ac077302f1 chore(renovate): manual name replacement (#6504)
Renovate can't do it itself for regex managers by default. Especially in this edge case.

Please approve and admin merge 🤗 workflow already updated

7697254fe0/.forgejo/workflows/renovate.yml (L28)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6504
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
Co-committed-by: Michael Kriese <michael.kriese@visualon.de>
2025-01-08 09:53:50 +00:00
Renovate Bot
7697254fe0 Update data.forgejo.org/oci/alpine Docker tag to v3.21 (forgejo) (#6502)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [data.forgejo.org/oci/alpine](https://hub.docker.com/_/alpine) ([source](https://github.com/alpinelinux/docker-alpine)) | final | minor | `3.20` -> `3.21` |

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45Mi4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTIuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6502
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-08 07:30:51 +00:00
Renovate Bot
6a236099c8 Update data.forgejo.org/renovate/renovate Docker tag to v39.93.0 (forgejo) (#6503)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6503
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-08 05:56:44 +00:00
Renovate Bot
adf9172888 Update module google.golang.org/protobuf to v1.36.2 (forgejo) (#6500)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [google.golang.org/protobuf](https://github.com/protocolbuffers/protobuf-go) | require | patch | `v1.36.1` -> `v1.36.2` |

---

### Release Notes

<details>
<summary>protocolbuffers/protobuf-go (google.golang.org/protobuf)</summary>

### [`v1.36.2`](https://github.com/protocolbuffers/protobuf-go/releases/tag/v1.36.2)

[Compare Source](https://github.com/protocolbuffers/protobuf-go/compare/v1.36.1...v1.36.2)

**Full Changelog**: https://github.com/protocolbuffers/protobuf-go/compare/v1.36.1...v1.36.2

Bug fixes:
[CL/638515](https://go-review.googlesource.com/c/protobuf/+/638515): internal/impl: fix WhichOneof() to work with synthetic oneofs

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45Mi4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTIuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6500
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-08 03:39:05 +00:00
Renovate Bot
83aba057c2 Update module github.com/ProtonMail/go-crypto to v1.1.4 (forgejo) (#6499)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [github.com/ProtonMail/go-crypto](https://github.com/ProtonMail/go-crypto) | require | patch | `v1.1.3` -> `v1.1.4` |

---

### Release Notes

<details>
<summary>ProtonMail/go-crypto (github.com/ProtonMail/go-crypto)</summary>

### [`v1.1.4`](https://github.com/ProtonMail/go-crypto/releases/tag/v1.1.4)

[Compare Source](https://github.com/ProtonMail/go-crypto/compare/v1.1.3...v1.1.4)

#### What's Changed

-   Emit armor headers in sorted order by [@&#8203;andrewgdotcom](https://github.com/andrewgdotcom) in https://github.com/ProtonMail/go-crypto/pull/255
-   Reduce memory usage when AEAD en/decrypting large messages by [@&#8203;twiss](https://github.com/twiss) in https://github.com/ProtonMail/go-crypto/pull/259
-   Update artifact actions to v4 by [@&#8203;twiss](https://github.com/twiss) in https://github.com/ProtonMail/go-crypto/pull/260

**Full Changelog**: https://github.com/ProtonMail/go-crypto/compare/v1.1.3...v1.1.4

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45Mi4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTIuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6499
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-08 00:47:05 +00:00
Renovate Bot
cefd085f87 Update module github.com/go-git/go-git/v5 to v5.13.1 (forgejo) (#6495)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) | require | minor | `v5.11.0` -> `v5.13.1` |

---

### Release Notes

<details>
<summary>go-git/go-git (github.com/go-git/go-git/v5)</summary>

### [`v5.13.1`](https://github.com/go-git/go-git/releases/tag/v5.13.1)

[Compare Source](https://github.com/go-git/go-git/compare/v5.13.0...v5.13.1)

#### What's Changed

-   build: bump github.com/go-git/go-billy/v5 from 5.6.0 to 5.6.1 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1327
-   build: bump github.com/elazarl/goproxy from 1.2.1 to 1.2.2 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1329
-   build: bump github.com/elazarl/goproxy from 1.2.2 to 1.2.3 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1340
-   Revert "plumbing: transport/ssh, Add support for SSH [@&#8203;cert-authority](https://github.com/cert-authority)." by [@&#8203;pjbgf](https://github.com/pjbgf) in [#&#8203;1346](https://github.com/go-git/go-git/issues/1346)

**Full Changelog**: https://github.com/go-git/go-git/compare/v5.13.0...v5.13.1

### [`v5.13.0`](https://github.com/go-git/go-git/releases/tag/v5.13.0)

[Compare Source](https://github.com/go-git/go-git/compare/v5.12.0...v5.13.0)

#### What's Changed

-   build: bump github.com/go-git/go-git/v5 from 5.11.0 to 5.12.0 in /cli/go-git by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1065
-   build: bump golang.org/x/net from 0.22.0 to 0.23.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1068
-   build: bump golang.org/x/net from 0.23.0 to 0.24.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1071
-   Properly support skipping of non-mandatory extensions  by [@&#8203;codablock](https://github.com/codablock) in https://github.com/go-git/go-git/pull/1066
-   git: Refine some codes in test and non-test. by [@&#8203;onee-only](https://github.com/onee-only) in https://github.com/go-git/go-git/pull/1077
-   plumbing: protocol/packp, client-side filter capability support by [@&#8203;edigaryev](https://github.com/edigaryev) in https://github.com/go-git/go-git/pull/1000
-   build: bump golang.org/x/net from 0.22.0 to 0.23.0 in /cli/go-git by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1078
-   plumbing: fix sideband demux on flush by [@&#8203;aymanbagabas](https://github.com/aymanbagabas) in https://github.com/go-git/go-git/pull/1084
-   storage: dotgit, head reference usually comes first by [@&#8203;aymanbagabas](https://github.com/aymanbagabas) in https://github.com/go-git/go-git/pull/1085
-   build: bump golang.org/x/text from 0.14.0 to 0.15.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1091
-   build: bump golang.org/x/crypto from 0.22.0 to 0.23.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1094
-   build: bump golang.org/x/net from 0.24.0 to 0.25.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1093
-   git: Added an example for Repository.Branches by [@&#8203;johnmatthiggins](https://github.com/johnmatthiggins) in https://github.com/go-git/go-git/pull/1088
-   git: worktree_commit, Modify checking empty commit. Fixes [#&#8203;723](https://github.com/go-git/go-git/issues/723) by [@&#8203;onee-only](https://github.com/onee-only) in https://github.com/go-git/go-git/pull/1050
-   plumbing: transport/http, Wrap http errors to return reason. Fixes [#&#8203;1097](https://github.com/go-git/go-git/issues/1097) by [@&#8203;ggambetti](https://github.com/ggambetti) in https://github.com/go-git/go-git/pull/1100
-   build: bump golang.org/x/sys from 0.20.0 to 0.21.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1106
-   build: bump golang.org/x/text from 0.15.0 to 0.16.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1107
-   Bumps Go versions and go-billy by [@&#8203;pjbgf](https://github.com/pjbgf) in https://github.com/go-git/go-git/pull/1056
-   \_examples: Fixed a dead link COMPATIBILITY.md by [@&#8203;gecko655](https://github.com/gecko655) in https://github.com/go-git/go-git/pull/1109
-   build: bump github.com/jessevdk/go-flags from 1.5.0 to 1.6.1 in /cli/go-git by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1115
-   build: bump github.com/elazarl/goproxy from v0.0.0-20230808193330-2592e75ae04a to v0.0.0-20240618083138-03be62527ccb by [@&#8203;hbelmiro](https://github.com/hbelmiro) in https://github.com/go-git/go-git/pull/1124
-   build: bump golang.org/x/net from 0.25.0 to 0.26.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1104
-   Add option approximating `git clean -x` flag. by [@&#8203;msuozzo](https://github.com/msuozzo) in https://github.com/go-git/go-git/pull/995
-   Revert "Add option approximating `git clean -x` flag." by [@&#8203;pjbgf](https://github.com/pjbgf) in https://github.com/go-git/go-git/pull/1129
-   Fix reference updated concurrently error for the filesystem storer by [@&#8203;Javier-varez](https://github.com/Javier-varez) in https://github.com/go-git/go-git/pull/1116
-   build: bump golang.org/x/net from 0.26.0 to 0.27.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1134
-   utils: merkletrie, Align error message with upstream by [@&#8203;pjbgf](https://github.com/pjbgf) in https://github.com/go-git/go-git/pull/1142
-   plumbing: transport/file, Change paths to absolute by [@&#8203;pjbgf](https://github.com/pjbgf) in https://github.com/go-git/go-git/pull/1141
-   plumbing: gitignore, Fix loading of ignored .gitignore files. by [@&#8203;Achilleshiel](https://github.com/Achilleshiel) in https://github.com/go-git/go-git/pull/1114
-   build: bump github.com/skeema/knownhosts from 1.2.2 to 1.3.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1147
-   plumbing: transport/ssh, Add support for SSH [@&#8203;cert-authority](https://github.com/cert-authority). by [@&#8203;Javier-varez](https://github.com/Javier-varez) in https://github.com/go-git/go-git/pull/1157
-   build: run example tests during CI workflow by [@&#8203;crazybolillo](https://github.com/crazybolillo) in https://github.com/go-git/go-git/pull/1030
-   storage: filesystem, Fix object cache not working due to uninitialised objects being put into cache by [@&#8203;SatelliteMind](https://github.com/SatelliteMind) in https://github.com/go-git/go-git/pull/1138
-   git: Fix fetching missing commits by [@&#8203;AriehSchneier](https://github.com/AriehSchneier) in https://github.com/go-git/go-git/pull/1032
-   plumbing: format/packfile, remove duplicate checks in findMatch() by [@&#8203;edigaryev](https://github.com/edigaryev) in https://github.com/go-git/go-git/pull/1152
-   git: worktree, Fix file reported as `Untracked` while it is committed by [@&#8203;rodrigocam](https://github.com/rodrigocam) in https://github.com/go-git/go-git/pull/1023
-   build: bump golang.org/x/sys from 0.22.0 to 0.23.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1160
-   plumbing: filemode, Remove check for setting size of .git/index file  by [@&#8203;nicholasSUSE](https://github.com/nicholasSUSE) in https://github.com/go-git/go-git/pull/1159
-   build: bump golang.org/x/net from 0.27.0 to 0.28.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1163
-   Fix some lint warning and increase stalebot to 180 days by [@&#8203;pjbgf](https://github.com/pjbgf) in https://github.com/go-git/go-git/pull/1128
-   adjust path extracted from file: url on Windows by [@&#8203;tomqwpl](https://github.com/tomqwpl) in https://github.com/go-git/go-git/pull/416
-   build: bump golang.org/x/sys from 0.23.0 to 0.24.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1164
-   Add RestoreStaged to Worktree that mimics the behaviour of git restore --staged <file>... by [@&#8203;ben-tbotlabs](https://github.com/ben-tbotlabs) in https://github.com/go-git/go-git/pull/493
-   plumbing: signature, support the same x509 signature formats as git by [@&#8203;yoavamit](https://github.com/yoavamit) in https://github.com/go-git/go-git/pull/1169
-   fix: allow discovery of non bare repos in fsLoader by [@&#8203;jakobmoellerdev](https://github.com/jakobmoellerdev) in https://github.com/go-git/go-git/pull/1170
-   build: bump golang.org/x/sys from 0.24.0 to 0.25.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1178
-   build: bump golang.org/x/text from 0.17.0 to 0.18.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1179
-   build: bump golang.org/x/net from 0.28.0 to 0.29.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1184
-   Consume push URLs when they are provided by [@&#8203;mcepl](https://github.com/mcepl) in https://github.com/go-git/go-git/pull/1191
-   \*: use gocheck's MkDir instead of TempDir for tests. Fixes [#&#8203;807](https://github.com/go-git/go-git/issues/807) by [@&#8203;uragirii](https://github.com/uragirii) in https://github.com/go-git/go-git/pull/1194
-   build: bump golang.org/x/net from 0.29.0 to 0.30.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1200
-   worktree: .git/index not correctly generated when running on Windows by [@&#8203;BeChris](https://github.com/BeChris) in https://github.com/go-git/go-git/pull/1198
-   git: worktree, Fix sparse reset. Fixes [#&#8203;90](https://github.com/go-git/go-git/issues/90) by [@&#8203;onee-only](https://github.com/onee-only) in https://github.com/go-git/go-git/pull/1101
-   git: worktree, Pass context on updateSubmodules. Fixes [#&#8203;1098](https://github.com/go-git/go-git/issues/1098) by [@&#8203;onee-only](https://github.com/onee-only) in https://github.com/go-git/go-git/pull/1154
-   build: bump github.com/go-git/go-billy/v5 from 5.5.1-0.20240427054813-8453aa90c6ec to 5.6.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1211
-   Update contributing guidelines by [@&#8203;pjbgf](https://github.com/pjbgf) in https://github.com/go-git/go-git/pull/1217
-   build: bump github.com/ProtonMail/go-crypto from 1.0.0 to 1.1.1 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1222
-   build: bump golang.org/x/sys from 0.26.0 to 0.27.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1223
-   build: bump golang.org/x/crypto from 0.28.0 to 0.29.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1221
-   build: bump github.com/ProtonMail/go-crypto from 1.1.1 to 1.1.2 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1226
-   build: bump github.com/stretchr/testify from 1.9.0 to 1.10.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1232
-   build: bump github.com/ProtonMail/go-crypto from 1.1.2 to 1.1.3 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1231
-   build: General improvements around fuzzing by [@&#8203;pjbgf](https://github.com/pjbgf) in https://github.com/go-git/go-git/pull/1229
-   build: bump golang.org/x/net from 0.30.0 to 0.32.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1241
-   build: group dependabot updates for golang.org by [@&#8203;AriehSchneier](https://github.com/AriehSchneier) in https://github.com/go-git/go-git/pull/1243
-   build: bump github/codeql-action from 2.22.11 to 3.27.6 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1244
-   build: bump golang.org/x/crypto from 0.21.0 to 0.31.0 in /cli/go-git by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1246
-   build: bump golang.org/x/crypto from 0.30.0 to 0.31.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1247
-   build: bump github.com/gliderlabs/ssh from 0.3.7 to 0.3.8 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1248
-   add comment preventing people from creating invalid trees by [@&#8203;petar](https://github.com/petar) in https://github.com/go-git/go-git/pull/732
-   build: bump github/codeql-action from 3.27.6 to 3.27.9 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1250
-   plumbing: Properly encode index version 4 by [@&#8203;BeChris](https://github.com/BeChris) in https://github.com/go-git/go-git/pull/1251
-   Fix typos by [@&#8203;deining](https://github.com/deining) in https://github.com/go-git/go-git/pull/1148
-   Fix reset files in subfolders by [@&#8203;linglo](https://github.com/linglo) in https://github.com/go-git/go-git/pull/1177
-   git: update switch cases by [@&#8203;hezhizhen](https://github.com/hezhizhen) in https://github.com/go-git/go-git/pull/1182
-   build: bump golang.org/x/net from 0.32.0 to 0.33.0 in the golang-org group by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1256
-   fix(1212): Fix invalid reference name error while cloning branches containing /- by [@&#8203;varmakarthik12](https://github.com/varmakarthik12) in https://github.com/go-git/go-git/pull/1257
-   pktline : accept upercase hexadecimal value as pktline length information by [@&#8203;BeChris](https://github.com/BeChris) in https://github.com/go-git/go-git/pull/1220
-   build: bump github/codeql-action from 3.27.9 to 3.28.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1260
-   build: bump github.com/elazarl/goproxy from 0.0.0-20240618083138-03be62527ccb to 1.2.1 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/go-git/go-git/pull/1262
-   git: worktree_commit, sanitize author and commiter name and email before creating the commit object. Fixes [#&#8203;680](https://github.com/go-git/go-git/issues/680) by [@&#8203;BeChris](https://github.com/BeChris) in https://github.com/go-git/go-git/pull/1261

#### New Contributors

-   [@&#8203;johnmatthiggins](https://github.com/johnmatthiggins) made their first contribution in https://github.com/go-git/go-git/pull/1088
-   [@&#8203;ggambetti](https://github.com/ggambetti) made their first contribution in https://github.com/go-git/go-git/pull/1100
-   [@&#8203;gecko655](https://github.com/gecko655) made their first contribution in https://github.com/go-git/go-git/pull/1109
-   [@&#8203;hbelmiro](https://github.com/hbelmiro) made their first contribution in https://github.com/go-git/go-git/pull/1124
-   [@&#8203;msuozzo](https://github.com/msuozzo) made their first contribution in https://github.com/go-git/go-git/pull/995
-   [@&#8203;Javier-varez](https://github.com/Javier-varez) made their first contribution in https://github.com/go-git/go-git/pull/1116
-   [@&#8203;Achilleshiel](https://github.com/Achilleshiel) made their first contribution in https://github.com/go-git/go-git/pull/1114
-   [@&#8203;crazybolillo](https://github.com/crazybolillo) made their first contribution in https://github.com/go-git/go-git/pull/1030
-   [@&#8203;SatelliteMind](https://github.com/SatelliteMind) made their first contribution in https://github.com/go-git/go-git/pull/1138
-   [@&#8203;rodrigocam](https://github.com/rodrigocam) made their first contribution in https://github.com/go-git/go-git/pull/1023
-   [@&#8203;nicholasSUSE](https://github.com/nicholasSUSE) made their first contribution in https://github.com/go-git/go-git/pull/1159
-   [@&#8203;tomqwpl](https://github.com/tomqwpl) made their first contribution in https://github.com/go-git/go-git/pull/416
-   [@&#8203;ben-tbotlabs](https://github.com/ben-tbotlabs) made their first contribution in https://github.com/go-git/go-git/pull/493
-   [@&#8203;yoavamit](https://github.com/yoavamit) made their first contribution in https://github.com/go-git/go-git/pull/1169
-   [@&#8203;uragirii](https://github.com/uragirii) made their first contribution in https://github.com/go-git/go-git/pull/1194
-   [@&#8203;petar](https://github.com/petar) made their first contribution in https://github.com/go-git/go-git/pull/732
-   [@&#8203;deining](https://github.com/deining) made their first contribution in https://github.com/go-git/go-git/pull/1148
-   [@&#8203;linglo](https://github.com/linglo) made their first contribution in https://github.com/go-git/go-git/pull/1177
-   [@&#8203;varmakarthik12](https://github.com/varmakarthik12) made their first contribution in https://github.com/go-git/go-git/pull/1257

**Full Changelog**: https://github.com/go-git/go-git/compare/v5.12.0...v5.13.0

### [`v5.12.0`](https://github.com/go-git/go-git/releases/tag/v5.12.0)

[Compare Source](https://github.com/go-git/go-git/compare/v5.11.0...v5.12.0)

#### What's Changed

-   git: Worktree.AddWithOptions: add skipStatus option when providing a specific path by [@&#8203;moranCohen26](https://github.com/moranCohen26) in https://github.com/go-git/go-git/pull/994
-   git: Signer: fix usage of crypto.Signer interface by [@&#8203;wlynch](https://github.com/wlynch) in https://github.com/go-git/go-git/pull/1029
-   git: Remote, fetch, adds the prune option. by [@&#8203;juliens](https://github.com/juliens) in https://github.com/go-git/go-git/pull/366
-   git: Add crypto.Signer option to CommitOptions. by [@&#8203;wlynch](https://github.com/wlynch) in https://github.com/go-git/go-git/pull/996
-   git: Worktree checkout tag hash id ([#&#8203;959](https://github.com/go-git/go-git/issues/959)) by [@&#8203;aymanbagabas](https://github.com/aymanbagabas) in https://github.com/go-git/go-git/pull/966
-   git: Worktree, Don't panic on empty or root path when checking if it is valid by [@&#8203;tim775](https://github.com/tim775) in https://github.com/go-git/go-git/pull/1042
-   git: Add commit validation for Reset by [@&#8203;pjbgf](https://github.com/pjbgf) in https://github.com/go-git/go-git/pull/1048
-   git: worktree_commit, Fix amend commit to apply changes. Fixes [#&#8203;1024](https://github.com/go-git/go-git/issues/1024) by [@&#8203;onee-only](https://github.com/onee-only) in https://github.com/go-git/go-git/pull/1045
-   git: Implement Merge function with initial `FastForwardMerge` support by [@&#8203;pjbgf](https://github.com/pjbgf) in https://github.com/go-git/go-git/pull/1044
-   plumbing: object, Make first commit visible on logs filtered with filename. Fixes [#&#8203;191](https://github.com/go-git/go-git/issues/191) by [@&#8203;onee-only](https://github.com/onee-only) in https://github.com/go-git/go-git/pull/1036
-   plumbing: no panic in printStats function. Fixes [#&#8203;177](https://github.com/go-git/go-git/issues/177) by [@&#8203;nodivbyzero](https://github.com/nodivbyzero) in https://github.com/go-git/go-git/pull/971
-   plumbing: object, Optimize logging with file. by [@&#8203;onee-only](https://github.com/onee-only) in https://github.com/go-git/go-git/pull/1046
-   plumbing: object, check legitimacy in (\*Tree).Encode by [@&#8203;niukuo](https://github.com/niukuo) in https://github.com/go-git/go-git/pull/967
-   plumbing: format/gitattributes, close file in ReadAttributesFile by [@&#8203;prskr](https://github.com/prskr) in https://github.com/go-git/go-git/pull/1018
-   plumbing: check setAuth error. Fixes [#&#8203;185](https://github.com/go-git/go-git/issues/185) by [@&#8203;nodivbyzero](https://github.com/nodivbyzero) in https://github.com/go-git/go-git/pull/969
-   plumbing: object, fix variable  defaultUtf8CommitMessageEncoding name spell error by [@&#8203;Jerry-yz](https://github.com/Jerry-yz) in https://github.com/go-git/go-git/pull/987
-   utils: merkletrie, calculate filesystem node's hash lazily. by [@&#8203;candid82](https://github.com/candid82) in https://github.com/go-git/go-git/pull/825
-   utils: update comment in node.go's Hash() by [@&#8203;codablock](https://github.com/codablock) in https://github.com/go-git/go-git/pull/992
-   \_example: fix 404 link and added ssh-agent clone link by [@&#8203;grinish21](https://github.com/grinish21) in https://github.com/go-git/go-git/pull/1022
-   \_example: checkout-branch example by [@&#8203;dlambda](https://github.com/dlambda) in https://github.com/go-git/go-git/pull/446
-   \_example: example for git clone using ssh-agent by [@&#8203;pjbgf](https://github.com/pjbgf) in https://github.com/go-git/go-git/pull/998

#### New Contributors

-   [@&#8203;candid82](https://github.com/candid82) made their first contribution in https://github.com/go-git/go-git/pull/825
-   [@&#8203;codablock](https://github.com/codablock) made their first contribution in https://github.com/go-git/go-git/pull/992
-   [@&#8203;Jerry-yz](https://github.com/Jerry-yz) made their first contribution in https://github.com/go-git/go-git/pull/987
-   [@&#8203;wlynch](https://github.com/wlynch) made their first contribution in https://github.com/go-git/go-git/pull/996
-   [@&#8203;moranCohen26](https://github.com/moranCohen26) made their first contribution in https://github.com/go-git/go-git/pull/994
-   [@&#8203;grinish21](https://github.com/grinish21) made their first contribution in https://github.com/go-git/go-git/pull/1022
-   [@&#8203;prskr](https://github.com/prskr) made their first contribution in https://github.com/go-git/go-git/pull/1018
-   [@&#8203;dlambda](https://github.com/dlambda) made their first contribution in https://github.com/go-git/go-git/pull/446
-   [@&#8203;juliens](https://github.com/juliens) made their first contribution in https://github.com/go-git/go-git/pull/366
-   [@&#8203;onee-only](https://github.com/onee-only) made their first contribution in https://github.com/go-git/go-git/pull/1036
-   [@&#8203;tim775](https://github.com/tim775) made their first contribution in https://github.com/go-git/go-git/pull/1042
-   [@&#8203;niukuo](https://github.com/niukuo) made their first contribution in https://github.com/go-git/go-git/pull/967
-   [@&#8203;avoidalone](https://github.com/avoidalone) made their first contribution in https://github.com/go-git/go-git/pull/1047

**Full Changelog**: https://github.com/go-git/go-git/compare/v5.11.0...v5.12.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45Mi4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTIuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Co-authored-by: Earl Warren <contact@earl-warren.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6495
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-07 20:47:13 +00:00
Gusted
f0899d35c8 chore(deps): Update gitlab api to updated library (#6487)
- Per https://github.com/xanzy/go-gitlab?tab=readme-ov-file#go-gitlab-deprecated
- Move to https://gitlab.com/gitlab-org/api/client-go
- Use v0.116.0 because v0.117.0 has incorrect requirement of go 1.23.4, it will be fixed in v0.119.0 which is not yet released

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6487
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-committed-by: Gusted <postmaster@gusted.xyz>
2025-01-07 19:06:33 +00:00
Earl Warren
2a5e37bc8b fix: upgrade gof3 package and driver (#6491)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6491
Reviewed-by: Otto <otto@codeberg.org>
2025-01-07 17:33:46 +00:00
Gusted
8ed4b77f1f chore: remove illegal git usage (#6488)
This is no longer possible in future go-git versions, so lets hardcode it

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6488
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-committed-by: Gusted <postmaster@gusted.xyz>
2025-01-07 17:28:42 +00:00
Earl Warren
7189da15f2
fix: upgrade gof3 version 2025-01-07 17:59:31 +01:00
Renovate Bot
7973332035 Replace data.forgejo.org/forgejo-contrib/renovate Docker tag with data.forgejo.org/renovate/renovate (forgejo) (#6490)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6490
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-07 16:16:57 +00:00
limiting-factor
604c21ffd7
fix: f3: label color must start with # 2025-01-07 17:13:21 +01:00
limiting-factor
63204e8edf
fix: f3: update milestone is_closed & deadline_unix 2025-01-07 17:13:21 +01:00
limiting-factor
946b77115e
fix: f3: update issue is_locked 2025-01-07 17:13:21 +01:00
limiting-factor
168c1d806b
fix: f3: update issue labels 2025-01-07 17:13:21 +01:00
limiting-factor
d8f71b513c
fix: f3: update issue assignees
The ID must be obtained from the repository ID and the index,
otherwise it is zero and the assignees are not updated.
2025-01-07 17:13:21 +01:00
limiting-factor
16564fd9e8
fix: f3: support modify milestone 2025-01-07 17:13:21 +01:00
Renovate Bot
6169090c13 Update dependency happy-dom to v16 (forgejo) (#6454)
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-07 11:38:58 +00:00
Renovate Bot
7f9e313ec1 Update module github.com/minio/minio-go/v7 to v7.0.83 (forgejo) (#6479)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [github.com/minio/minio-go/v7](https://github.com/minio/minio-go) | require | patch | `v7.0.78` -> `v7.0.83` |

---

### Release Notes

<details>
<summary>minio/minio-go (github.com/minio/minio-go/v7)</summary>

### [`v7.0.83`](https://github.com/minio/minio-go/compare/v7.0.82...v7.0.83)

[Compare Source](https://github.com/minio/minio-go/compare/v7.0.82...v7.0.83)

### [`v7.0.82`](https://github.com/minio/minio-go/releases/tag/v7.0.82): Bugfix Release

[Compare Source](https://github.com/minio/minio-go/compare/v7.0.81...v7.0.82)

#### What's Changed

-   sts: Send the refresh token in the login redirect URL by [@&#8203;vadmeste](https://github.com/vadmeste) in https://github.com/minio/minio-go/pull/2025
-   Fix duplicate API call on `obj.Stat()` by [@&#8203;OrkhanAlikhanov](https://github.com/OrkhanAlikhanov) in https://github.com/minio/minio-go/pull/2028
-   Fix for tests running in mint vs locally by [@&#8203;marktheunissen](https://github.com/marktheunissen) in https://github.com/minio/minio-go/pull/2029
-   Add Full Object Checksum API by [@&#8203;klauspost](https://github.com/klauspost) in https://github.com/minio/minio-go/pull/2026
-   Read ChecksumAlgorithm and ChecksumType from ListParts by [@&#8203;klauspost](https://github.com/klauspost) in https://github.com/minio/minio-go/pull/2032
-   Bump golang.org/x/crypto from 0.28.0 to 0.31.0 in /examples/s3 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/minio/minio-go/pull/2033

#### New Contributors

-   [@&#8203;OrkhanAlikhanov](https://github.com/OrkhanAlikhanov) made their first contribution in https://github.com/minio/minio-go/pull/2028

**Full Changelog**: https://github.com/minio/minio-go/compare/v7.0.81...v7.0.82

### [`v7.0.81`](https://github.com/minio/minio-go/releases/tag/v7.0.81): Bugfix Release

[Compare Source](https://github.com/minio/minio-go/compare/v7.0.80...v7.0.81)

#### What's Changed

-   PromptObject API support by [@&#8203;sidharthrajaram](https://github.com/sidharthrajaram) in https://github.com/minio/minio-go/pull/2015
-   Fix new lint errors by [@&#8203;klauspost](https://github.com/klauspost) in https://github.com/minio/minio-go/pull/2020
-   functional tests: move client creation into a reusable function by [@&#8203;marktheunissen](https://github.com/marktheunissen) in https://github.com/minio/minio-go/pull/2022
-   Adjust testPresignedPostPolicy to ensure that GetObject... by [@&#8203;marktheunissen](https://github.com/marktheunissen) in https://github.com/minio/minio-go/pull/1996
-   Add refresh token to WebIdentity OpenID response by [@&#8203;vadmeste](https://github.com/vadmeste) in https://github.com/minio/minio-go/pull/2023

#### New Contributors

-   [@&#8203;sidharthrajaram](https://github.com/sidharthrajaram) made their first contribution in https://github.com/minio/minio-go/pull/2015

**Full Changelog**: https://github.com/minio/minio-go/compare/v7.0.80...v7.0.81

### [`v7.0.80`](https://github.com/minio/minio-go/releases/tag/v7.0.80): Bugfix Release

[Compare Source](https://github.com/minio/minio-go/compare/v7.0.79...v7.0.80)

#### What's Changed

-   Add support for AllVersionsExpiration ilm rule by [@&#8203;dhananjaykrutika](https://github.com/dhananjaykrutika) in https://github.com/minio/minio-go/pull/2014
-   retry: make max retries configurable by [@&#8203;ashwanthgoli](https://github.com/ashwanthgoli) in https://github.com/minio/minio-go/pull/2013

#### New Contributors

-   [@&#8203;dhananjaykrutika](https://github.com/dhananjaykrutika) made their first contribution in https://github.com/minio/minio-go/pull/2014
-   [@&#8203;ashwanthgoli](https://github.com/ashwanthgoli) made their first contribution in https://github.com/minio/minio-go/pull/2013

**Full Changelog**: https://github.com/minio/minio-go/compare/v7.0.79...v7.0.80

### [`v7.0.79`](https://github.com/minio/minio-go/releases/tag/v7.0.79): Bugfix Release

[Compare Source](https://github.com/minio/minio-go/compare/v7.0.78...v7.0.79)

#### What's Changed

-   Update remove bucket replication reference by [@&#8203;emmanuel-ferdman](https://github.com/emmanuel-ferdman) in https://github.com/minio/minio-go/pull/2006
-   Only retry multi-part upload as single-part upload on GCS endpoints by [@&#8203;ramondeklein](https://github.com/ramondeklein) in https://github.com/minio/minio-go/pull/2012

#### New Contributors

-   [@&#8203;emmanuel-ferdman](https://github.com/emmanuel-ferdman) made their first contribution in https://github.com/minio/minio-go/pull/2006

**Full Changelog**: https://github.com/minio/minio-go/compare/v7.0.78...v7.0.79

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45MS4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTEuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6479
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-07 06:18:04 +00:00
Earl Warren
4261301dfb [gitea] week 2025-02 cherry pick (gitea/main -> forgejo) (#6471)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6471
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
2025-01-07 06:17:49 +00:00
Renovate Bot
17e52c6019 Update forgejo/forgejo-build-publish action to v5.3.0 (forgejo) (#6480)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [forgejo/forgejo-build-publish](https://data.forgejo.org/forgejo/forgejo-build-publish) | action | minor | `v5.2.1` -> `v5.3.0` |

---

### Release Notes

<details>
<summary>forgejo/forgejo-build-publish (forgejo/forgejo-build-publish)</summary>

### [`v5.3.0`](https://data.forgejo.org/forgejo/forgejo-build-publish/compare/v5.2.1...v5.3.0)

[Compare Source](https://data.forgejo.org/forgejo/forgejo-build-publish/compare/v5.2.1...v5.3.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45MS4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTEuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6480
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-07 05:34:45 +00:00
Renovate Bot
9eaf40f7a8 Update module golang.org/x/net to v0.34.0 (forgejo) (#6482)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [golang.org/x/net](https://pkg.go.dev/golang.org/x/net) | require | minor | [`v0.33.0` -> `v0.34.0`](https://cs.opensource.google/go/x/net/+/refs/tags/v0.33.0...refs/tags/v0.34.0) |

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45MS4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTEuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6482
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-07 05:21:23 +00:00
Renovate Bot
69750e11d4 Update renovate to v39.91.0 (forgejo) (#6475)
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-06 06:51:31 +00:00
Renovate Bot
6449b6c01f Lock file maintenance (forgejo) (#6478)
This PR contains the following updates:

| Update | Change |
|---|---|
| lockFileMaintenance | All locks refreshed |

🔧 This Pull Request updates lock files to use the latest dependency versions.

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * 1" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45MC4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTAuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6478
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-06 06:47:42 +00:00
Renovate Bot
07d7c54d91 Update dependency fast-glob to v3.3.3 (forgejo) (#6476)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [fast-glob](https://github.com/mrmlnc/fast-glob) | dependencies | patch | [`3.3.2` -> `3.3.3`](https://renovatebot.com/diffs/npm/fast-glob/3.3.2/3.3.3) |

---

### Release Notes

<details>
<summary>mrmlnc/fast-glob (fast-glob)</summary>

### [`v3.3.3`](https://github.com/mrmlnc/fast-glob/releases/tag/3.3.3)

[Compare Source](https://github.com/mrmlnc/fast-glob/compare/3.3.2...3.3.3)

> **Full Changelog**: https://github.com/mrmlnc/fast-glob/compare/3.3.2...3.3.3

#### 💬 Common

-   Refer to micromatch@4.0.8 to avoid annoying npm audit spam ([#&#8203;443](https://github.com/mrmlnc/fast-glob/issues/443), [#&#8203;444](https://github.com/mrmlnc/fast-glob/issues/444), [#&#8203;454](https://github.com/mrmlnc/fast-glob/issues/454), [#&#8203;456](https://github.com/mrmlnc/fast-glob/issues/456), [#&#8203;457](https://github.com/mrmlnc/fast-glob/issues/457), [#&#8203;461](https://github.com/mrmlnc/fast-glob/issues/461))

#### 🐛 Bug fixes

-   Apply absolute negative patterns to full path instead of file path ([#&#8203;441](https://github.com/mrmlnc/fast-glob/issues/441), thanks [@&#8203;webpro](https://github.com/webpro))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45MC4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTAuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6476
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-06 06:43:52 +00:00
Renovate Bot
4b0d11976f Update module github.com/alecthomas/chroma/v2 to v2.15.0 (forgejo) (#6477)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [github.com/alecthomas/chroma/v2](https://github.com/alecthomas/chroma) | require | minor | `v2.14.0` -> `v2.15.0` |

---

### Release Notes

<details>
<summary>alecthomas/chroma (github.com/alecthomas/chroma/v2)</summary>

### [`v2.15.0`](https://github.com/alecthomas/chroma/releases/tag/v2.15.0)

[Compare Source](https://github.com/alecthomas/chroma/compare/v2.14.0...v2.15.0)

#### What's Changed

-   AQL: Add builtin functions introduced in v3.12 by [@&#8203;Simran-B](https://github.com/Simran-B) in https://github.com/alecthomas/chroma/pull/968
-   chore(styles): add evergarden inspired style by [@&#8203;comfysage](https://github.com/comfysage) in https://github.com/alecthomas/chroma/pull/970
-   chore(deps): update dependency svu to v2 by [@&#8203;renovate](https://github.com/renovate) in https://github.com/alecthomas/chroma/pull/971
-   chore(deps): update dependency watchexec to v2 by [@&#8203;renovate](https://github.com/renovate) in https://github.com/alecthomas/chroma/pull/962
-   chore(deps): update all non-major dependencies by [@&#8203;renovate](https://github.com/renovate) in https://github.com/alecthomas/chroma/pull/955
-   styles: Fix Gleam alias by [@&#8203;jmooring](https://github.com/jmooring) in https://github.com/alecthomas/chroma/pull/973
-   chore(deps): update all non-major dependencies by [@&#8203;renovate](https://github.com/renovate) in https://github.com/alecthomas/chroma/pull/974
-   chore(deps): update dependency python3 to v3.12.3 by [@&#8203;renovate](https://github.com/renovate) in https://github.com/alecthomas/chroma/pull/976
-   added the nordic theme via chroma/styles/nordic.xml by [@&#8203;avih7531](https://github.com/avih7531) in https://github.com/alecthomas/chroma/pull/977
-   Update the Materialize lexer by [@&#8203;arusahni](https://github.com/arusahni) in https://github.com/alecthomas/chroma/pull/978
-   feat(lexers/hare): add done keyword by [@&#8203;wackbyte](https://github.com/wackbyte) in https://github.com/alecthomas/chroma/pull/979
-   pygments2chroma: escape regex.words by [@&#8203;oliverpool](https://github.com/oliverpool) in https://github.com/alecthomas/chroma/pull/982
-   chore(deps): update all non-major dependencies by [@&#8203;renovate](https://github.com/renovate) in https://github.com/alecthomas/chroma/pull/981
-   Add JSONata Lexer by [@&#8203;DevDimov](https://github.com/DevDimov) in https://github.com/alecthomas/chroma/pull/983
-   Go lexer: single line comment without consuming endline, disable EnsureNL by [@&#8203;msorc](https://github.com/msorc) in https://github.com/alecthomas/chroma/pull/984
-   Update the Materialize lexer by [@&#8203;arusahni](https://github.com/arusahni) in https://github.com/alecthomas/chroma/pull/987
-   chore(deps): update all non-major dependencies by [@&#8203;renovate](https://github.com/renovate) in https://github.com/alecthomas/chroma/pull/985
-   Add Gleam to README by [@&#8203;Nicd](https://github.com/Nicd) in https://github.com/alecthomas/chroma/pull/990
-   Port Minecraft lexers from Pygments by [@&#8203;kofuk](https://github.com/kofuk) in https://github.com/alecthomas/chroma/pull/992
-   Don't output extra whitespace in YAML multiline by [@&#8203;Gusted](https://github.com/Gusted) in https://github.com/alecthomas/chroma/pull/993
-   chore(deps): update all non-major dependencies by [@&#8203;renovate](https://github.com/renovate) in https://github.com/alecthomas/chroma/pull/991
-   add beef syntax and tests by [@&#8203;Booklordofthedings](https://github.com/Booklordofthedings) in https://github.com/alecthomas/chroma/pull/995
-   Update GitHub light color palette by [@&#8203;konradreiche](https://github.com/konradreiche) in https://github.com/alecthomas/chroma/pull/998
-   chore(deps): update module github.com/alecthomas/kong to v1 by [@&#8203;renovate](https://github.com/renovate) in https://github.com/alecthomas/chroma/pull/999
-   Update the Materialize lexer by [@&#8203;arusahni](https://github.com/arusahni) in https://github.com/alecthomas/chroma/pull/1001
-   Update TypeScript lexer to allow nested generics by [@&#8203;fredrare](https://github.com/fredrare) in https://github.com/alecthomas/chroma/pull/1002
-   Pager friendly terminal formatting by [@&#8203;walles](https://github.com/walles) in https://github.com/alecthomas/chroma/pull/1006
-   chore(deps): update all non-major dependencies by [@&#8203;renovate](https://github.com/renovate) in https://github.com/alecthomas/chroma/pull/997
-   Add Typst Lexer by [@&#8203;oliverpool](https://github.com/oliverpool) in https://github.com/alecthomas/chroma/pull/1007
-   Add Jsonnet Lexer by [@&#8203;jolheiser](https://github.com/jolheiser) in https://github.com/alecthomas/chroma/pull/1011
-   fix: add underscore parsing in numbers for haskell by [@&#8203;Gusted](https://github.com/Gusted) in https://github.com/alecthomas/chroma/pull/1020
-   Add CSV lexer by [@&#8203;walles](https://github.com/walles) in https://github.com/alecthomas/chroma/pull/1005
-   fix(typescript): highlight string literal type parameters by [@&#8203;SKalt](https://github.com/SKalt) in https://github.com/alecthomas/chroma/pull/1010
-   add any as a builtin type for go by [@&#8203;quartercastle](https://github.com/quartercastle) in https://github.com/alecthomas/chroma/pull/1021
-   chore(deps): update all non-major dependencies by [@&#8203;renovate](https://github.com/renovate) in https://github.com/alecthomas/chroma/pull/1013
-   Remove whitespace tokenizing rule in markdown lexer by [@&#8203;cloudchamb3r](https://github.com/cloudchamb3r) in https://github.com/alecthomas/chroma/pull/1008
-   feat(JSON): support `.jsonc` extension by [@&#8203;CarterLi](https://github.com/CarterLi) in https://github.com/alecthomas/chroma/pull/1022
-   Add Eclipse ATL language (https://eclipse.dev/atl/) by [@&#8203;dwagelaar](https://github.com/dwagelaar) in https://github.com/alecthomas/chroma/pull/1024
-   Import NSIS Lexer from Pygments by [@&#8203;JakobDev](https://github.com/JakobDev) in https://github.com/alecthomas/chroma/pull/1026
-   chore(deps): update module github.com/alecthomas/kong to v1.5.1 by [@&#8203;renovate](https://github.com/renovate) in https://github.com/alecthomas/chroma/pull/1025
-   fix(nix): nix lexor missing '=' operator by [@&#8203;FlyingStitchman](https://github.com/FlyingStitchman) in https://github.com/alecthomas/chroma/pull/1031
-   Add WebVTT lexer ([#&#8203;707](https://github.com/alecthomas/chroma/issues/707)) by [@&#8203;dschuessler](https://github.com/dschuessler) in https://github.com/alecthomas/chroma/pull/1032

#### New Contributors

-   [@&#8203;comfysage](https://github.com/comfysage) made their first contribution in https://github.com/alecthomas/chroma/pull/970
-   [@&#8203;avih7531](https://github.com/avih7531) made their first contribution in https://github.com/alecthomas/chroma/pull/977
-   [@&#8203;wackbyte](https://github.com/wackbyte) made their first contribution in https://github.com/alecthomas/chroma/pull/979
-   [@&#8203;oliverpool](https://github.com/oliverpool) made their first contribution in https://github.com/alecthomas/chroma/pull/982
-   [@&#8203;DevDimov](https://github.com/DevDimov) made their first contribution in https://github.com/alecthomas/chroma/pull/983
-   [@&#8203;msorc](https://github.com/msorc) made their first contribution in https://github.com/alecthomas/chroma/pull/984
-   [@&#8203;Nicd](https://github.com/Nicd) made their first contribution in https://github.com/alecthomas/chroma/pull/990
-   [@&#8203;Booklordofthedings](https://github.com/Booklordofthedings) made their first contribution in https://github.com/alecthomas/chroma/pull/995
-   [@&#8203;konradreiche](https://github.com/konradreiche) made their first contribution in https://github.com/alecthomas/chroma/pull/998
-   [@&#8203;fredrare](https://github.com/fredrare) made their first contribution in https://github.com/alecthomas/chroma/pull/1002
-   [@&#8203;SKalt](https://github.com/SKalt) made their first contribution in https://github.com/alecthomas/chroma/pull/1010
-   [@&#8203;quartercastle](https://github.com/quartercastle) made their first contribution in https://github.com/alecthomas/chroma/pull/1021
-   [@&#8203;cloudchamb3r](https://github.com/cloudchamb3r) made their first contribution in https://github.com/alecthomas/chroma/pull/1008
-   [@&#8203;CarterLi](https://github.com/CarterLi) made their first contribution in https://github.com/alecthomas/chroma/pull/1022
-   [@&#8203;dwagelaar](https://github.com/dwagelaar) made their first contribution in https://github.com/alecthomas/chroma/pull/1024
-   [@&#8203;FlyingStitchman](https://github.com/FlyingStitchman) made their first contribution in https://github.com/alecthomas/chroma/pull/1031
-   [@&#8203;dschuessler](https://github.com/dschuessler) made their first contribution in https://github.com/alecthomas/chroma/pull/1032

**Full Changelog**: https://github.com/alecthomas/chroma/compare/v2.14.0...v2.15.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45MC4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTAuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6477
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-06 04:11:25 +00:00
Otto
5bfae7241c feat: improve Forgejo diagnostics (#6470)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6470
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Reviewed-by: Otto <otto@codeberg.org>
2025-01-05 21:25:58 +00:00
0ko
a23cf58d47 ui: switch redesign (#6459)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6459
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
2025-01-05 18:46:47 +00:00
Gusted
ba8ebcbd68
feat: improve 'download diagnosis report' ui
- Use `<label>`.
- Switch the order to ensure the action button is the last item in the form.
- Rename seconds to duration.
- Set `type="number"` to the duration input field.
2025-01-05 17:05:31 +01:00
Earl Warren
c14c2bbf35
chore(release-notes): notes for the week 2025-02 weekly cherry pick 2025-01-05 13:47:27 +00:00
Kemal Zebari
76a85d26c8
Use Project-URL metadata field to get a PyPI package's homepage URL (#33089)
Resolves #33085.

(cherry picked from commit 188e0ee8e40ad0b32f9db33a0a217043cfdf3610)

Conflicts:
	tests/integration/api_packages_pypi_test.go
  trivial context conflict
2025-01-05 13:46:20 +00:00
wxiaoguang
e507fa30df
Refactor env var related code (#33075)
And add more comments

(cherry picked from commit 4f386e2c5e39b860424faf4cbc02c16f641f956e)

Conflicts:
	cmd/main_test.go
	tests/integration/integration_test.go
  trivial context conflicts
2025-01-05 13:46:19 +00:00
JonRB
6208d5f5c2
unset XDG_HOME_CONFIG as gitea manages configuration locations (#33067)
unset XDG_CONFIG_HOME early to enable gitea to manage git configuration.
simple error checking to satisfy the linting. Closes #33039

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
(cherry picked from commit 233b7959e0518c47ef83c6a80c617546983433eb)
2025-01-05 13:46:19 +00:00
lonix1
e7bc13a0be
feat: link to nuget dependencies (#26554)
Add links to dependencies and their versions, as done in nuget site.
Makes it easier to use.

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
(cherry picked from commit d030cace1a6fc19874ab5a2ae20544c702fcb6c5)
2025-01-05 13:46:19 +00:00
Lunny Xiao
81f30218cf
Use project's redirect url instead of composing url (#33058)
Fix #32992

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
(cherry picked from commit 20c7fba60157067252af49da41b6f8929a5ae31a)

Conflicts:
	routers/web/repo/issue_new.go
  the function is at routers/web/repo/issue.go in Forgejo
2025-01-05 13:46:19 +00:00
Lunny Xiao
15ff226a5b
Fix issue comment number (#30556)
(cherry picked from commit a54cc05d2a19262a8d59f2b90fbcdd9ee5199ca8)

Conflicts:
	models/issues/comment_test.go
  trivial context conflicts
2025-01-05 12:21:39 +00:00
hiifong
af91f4e203
Fix duplicate co-author in squashed merge commit messages (#33020)
Fix: #31980

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
(cherry picked from commit a87168869a4ceffb2a3d84986640da357b0793cf)
2025-01-05 12:15:51 +00:00
cassio zareck
9b2f38261b
Fix settings not being loaded at CLI (#26402)
Closes #25898
The problem was that the default settings weren't being loaded

---------

Signed-off-by: cassiozareck <cassiomilczareck@gmail.com>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
(cherry picked from commit 1e2c8eb494ff5b8378653db5fed876d824ebca6f)

Conflicts:
	modules/setting/indexer.go
  trivial context conflict
2025-01-05 12:13:48 +00:00
Lunny Xiao
bc64b6f004
Use gitrepo.GetTreePathLatestCommit to get file lastest commit instead from latest commit cache (#32987)
The latest commit cache is currently used only for listing tree files.
However, a cold start may take longer than directly invoking the Git
command. This PR addresses the issue of slow response times when
accessing raw files, improving performance in such scenarios.

```log
gitea.log:105521:2024/12/23 08:22:18 ...eb/routing/logger.go:68:func1() [W] router: slow      GET /xxxx/xxxxxx/raw/commit/xxxxxxxxxxxxxxxxxxxxxxxxxxx/.editorconfig for 172.18.0.5:53252, elapsed 3526.8ms @ repo/download.go:117(repo.SingleDownload)
```

(cherry picked from commit f4ccbd38dca77b1515a08ddf927f4f20cf644d30)
2025-01-05 12:13:48 +00:00
wxiaoguang
e8c769d8e6
Test webhook email (#33033)
Close #27918

(cherry picked from commit 1dbf0d7f0822c10b379a21c192c2d63e34fd52f9)
2025-01-05 12:00:26 +00:00
Julian Schlarb
68d690b6b9 chore(e2e): simplify authentication setup (#6400)
Replaced manual login and context loading across tests with Playwright's `test.use` configuration for user authentication. This simplifies test setup, improves readability, and reduces repetition.

For #6362

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6400
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Julian Schlarb <julian.schlarb@denktmit.de>
Co-committed-by: Julian Schlarb <julian.schlarb@denktmit.de>
2025-01-05 05:17:04 +00:00
Gusted
ebe6ebe3f3
feat: Run garbage collection before profiling heap
- This avoids returning that some memory is allocated for something
that's actually no longer in used. Go's standard library also does this
for testing and benchmarking when returning memory profiles. A canonical
link that this recommended is the example "To add equivalent profiling
support to a standalone program" in https://pkg.go.dev/runtime/pprof
2025-01-05 04:07:49 +01:00
Gusted
3f44b97b5f
feat: add limited execution tracing support
- For every process that is spawned (every new non-trivial goroutine
such as http requests, queues or tasks) start a [execution
tracer](https://pkg.go.dev/runtime/trace). This allows very precise
diagnosis of how each individual process over a time period.
- It's safe and [fast](https://go.dev/blog/execution-traces-2024#low-overhead-tracing) to
be run in production, hence no setting to disable this. There's only
noticable overhead when tracing is actually performed and not continuous.
- Proper tracing support would mean the codebase would be full of
`trace.WithRegion` and `trace.Log`, which feels premature for this patch
as there's no real-world usage yet to indicate which places would need
this the most. So far only Git commands and SQL queries receive somewhat
proper tracing support given that these are used throughout the codebase.
- Make git commands a new process type.
- Add tracing to diagnosis zip file.
2025-01-05 04:07:49 +01:00
Gusted
a2e0dd829c
chore: avoid trying to stream data
`profile.Parse` always call `io.ReadAll` so avoid the trouble and a
goroutine and do it ourselves.

Add some limited testing (testing the parsed stack is volatile and not
really feasible).
2025-01-05 04:07:49 +01:00
Angel Nunez Mencias
a2eb249766 feat: add files to compare (#6461)
Add the changed files between two commits to the response of the compare API, part of forgejo/forgejo#6460

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6461
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Angel Nunez Mencias <git@angelnu.com>
Co-committed-by: Angel Nunez Mencias <git@angelnu.com>
2025-01-05 02:32:46 +00:00
0ko
339814f3bc fix(ui): show oauth divider on signup page (#6463)
Fix a minor UI bug introduced in https://codeberg.org/forgejo/forgejo/pulls/6112.

The condition `if .EnableInternalSignIn` was added to display of the divider, but it is only available when `oauth_container.tmpl` is called from signIn page, it is not relevant to signUp page.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6463
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2025-01-04 08:45:08 +00:00
Michael Kriese
959c902748 Merge pull request 'chore: update ignores' (#6462) from viceice/chore/ignores into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6462
Reviewed-by: Otto <otto@codeberg.org>
2025-01-03 13:45:55 +00:00
Michael Kriese
05a8dcf2be
chore: update ignores 2025-01-03 14:41:34 +01:00
Otto
b59522f0b3 Merge pull request 'Rewrite OpenGraph Header' (#6447) from JakobDev/forgejo:ogrewrite into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6447
Reviewed-by: Otto <otto@codeberg.org>
2025-01-03 13:41:32 +00:00
Earl Warren
b544243164 Merge pull request 'chore(ci): use mirror for obtaining go-xsd-duration' (#6458) from earl-warren/forgejo:wip-sr-mirror into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6458
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
2025-01-03 09:19:22 +00:00
Earl Warren
283843677e
chore(ci): use mirror for obtaining go-xsd-duration
sr.ht is currently less available than code.forgejo.org
2025-01-03 08:50:15 +00:00
Gusted
cfb18e2b6c Merge pull request 'feat(webhook): sourcehut: submit SSH URL for private repository (or when pre-filled)' (#6445) from oliverpool/forgejo:sourcehut-refactor into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6445
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
2025-01-03 00:22:33 +00:00
Michael Kriese
520a1ab586 Merge pull request 'chore: bump renovate to v39.90.0' (#6453) from viceice/chore/manual-renovate-bump into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6453
Reviewed-by: Otto <otto@codeberg.org>
2025-01-02 21:45:28 +00:00
Michael Kriese
3388d5fe31
chore: bump renovate to v39.90.0 2025-01-02 22:17:06 +01:00
Codeberg Translate
a33fe60bbe i18n: update of translations from Codeberg Translate (#6378)
Co-authored-by: tacaly <frederick@tacaly.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: artnay <artnay@users.noreply.translate.codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-authored-by: 0ko <0ko@users.noreply.translate.codeberg.org>
Co-authored-by: Edgarsons <edgarsons@users.noreply.translate.codeberg.org>
Co-authored-by: Benedikt Straub <benedikt-straub@web.de>
Co-authored-by: Atalanttore <atalanttore@users.noreply.translate.codeberg.org>
Co-authored-by: Wuzzy <wuzzy@disroot.org>
Co-authored-by: Juno Takano <jutty@users.noreply.translate.codeberg.org>
Co-authored-by: Dirk <dirk@users.noreply.translate.codeberg.org>
Co-authored-by: thodorisl <thodorisl@users.noreply.translate.codeberg.org>
Co-authored-by: jasonb <jasonb@users.noreply.translate.codeberg.org>
Co-authored-by: SomeTr <sometr@users.noreply.translate.codeberg.org>
Co-authored-by: Outbreak2096 <outbreak2096@users.noreply.translate.codeberg.org>
Co-authored-by: xtex <xtexchooser@duck.com>
Co-authored-by: Salif Mehmed <mail@salif.eu>
Co-authored-by: s-light <s-light@users.noreply.translate.codeberg.org>
Co-authored-by: earl-warren <earl-warren@users.noreply.translate.codeberg.org>
Co-authored-by: Kita Ikuyo <searinminecraft@courvix.com>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6378
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Codeberg Translate <translate@noreply.codeberg.org>
Co-committed-by: Codeberg Translate <translate@noreply.codeberg.org>
2025-01-02 07:47:18 +00:00
Gusted
da5445ac87 Merge pull request 'Permit to download patch and diff file between tags and branches' (#5385) from mirkoperillo/forgejo:issue-3728 into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/5385
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
2025-01-02 00:59:44 +00:00
JakobDev
e99bf7f16d
Rewrite OpenGraph Header 2025-01-01 20:43:20 +01:00
oliverpool
e1cdaf1f28 add release notes 2025-01-01 19:50:39 +01:00
oliverpool
3bea06f906 sourcehut: use ssh sources URL when appropriate
Co-authored-by: Jordan Anderson <jordan@jba.io>
2025-01-01 19:46:05 +01:00
Otto
e28bd3c4d6 Merge pull request 'Make new table modal work when editing a issue' (#6431) from JakobDev/forgejo:tablefix into forgejo
[skip ci] due to no related tests.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6431
Reviewed-by: Otto <otto@codeberg.org>
2025-01-01 17:59:28 +00:00
Otto
93cd2b724e Merge pull request 'Fix editing pr review' (#6432) from JakobDev/forgejo:reviewfix into forgejo
[skip ci] due to no related tests.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6432
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Reviewed-by: Otto <otto@codeberg.org>
2025-01-01 17:51:08 +00:00
Otto
b01f3b9b05 Merge pull request 'feat: Add summary card for repos and releases' (#6269) from JakobDev/forgejo:repocard into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6269
Reviewed-by: Mathieu Fenniak <mfenniak@noreply.codeberg.org>
Reviewed-by: Otto <otto@codeberg.org>
2025-01-01 17:48:28 +00:00
Otto
6cea7d7fa3 Merge pull request 'i18n(en): consistency improvements' (#6439) from 0ko/forgejo:i18n-base-2025-01 into forgejo [skip ci]
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6439
Reviewed-by: Otto <otto@codeberg.org>
2025-01-01 17:45:19 +00:00
0ko
13ea8296af Merge pull request 'fix(code search): empty mode dropdown when keyword is empty' (#6441) from snematoda/no-q-filter-fix into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6441
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
2025-01-01 13:04:22 +00:00
Shiny Nematoda
c53d21965a fix(code search): empty mode dropdown when keyword is empty 2025-01-01 12:32:41 +00:00
oliverpool
6e13ac4d5f add manifest tests 2025-01-01 11:31:49 +01:00
0ko
b9ed4c3325 i18n(en): consistency improvements 2025-01-01 15:16:27 +05:00
oliverpool
faf1c836eb refactor sourcehut manifest building 2025-01-01 11:01:51 +01:00
Renovate Bot
d5bd212d00 Update dependency @vitest/eslint-plugin to v1.1.22 (forgejo) (#6436)
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-01 08:51:37 +00:00
Renovate Bot
5f7a267e65 Update module github.com/PuerkitoBio/goquery to v1.10.1 (forgejo) (#6437)
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-01 08:03:04 +00:00
mirko
10067db6b0 Improve code 2025-01-01 08:08:12 +01:00
mirko
11a433ed1c Fix tests 2025-01-01 08:08:11 +01:00
mirko
f1bf489203 Fix formatting 2025-01-01 08:08:11 +01:00
mirko
b13ac5fcbf Fix formatting 2025-01-01 08:08:11 +01:00
mirko
4e819f1b3c Test compare patch download 2025-01-01 08:08:11 +01:00
mirko
d490738d5b Fix formatting 2025-01-01 08:08:11 +01:00
mirko
4a7ec0f9a8 Fix formatting 2025-01-01 08:08:11 +01:00
mirko
9195d6a318 Add patch/diff compare download 2025-01-01 08:08:11 +01:00
mirko
5132854603 Add support for diff and patch compare 2025-01-01 08:08:11 +01:00
mirko
4b69aa5c10 Add integration test for downloading a patch/diff file in compare page 2025-01-01 08:08:11 +01:00
JakobDev
13b6caa608
Fix editing pr review 2024-12-31 18:03:54 +01:00
JakobDev
1600255c26
Make new table modal work when editing a issue 2024-12-31 17:24:54 +01:00
0ko
a302506095 fix(ui): use primary color for button in table modal (#6427)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6427
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
2024-12-31 09:39:19 +00:00
Gusted
8ada1b93bb Merge pull request 'Update module github.com/caddyserver/certmagic to v0.21.5 (forgejo)' (#6425) from renovate/forgejo-github.com-caddyserver-certmagic-0.x into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6425
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
2024-12-31 04:05:03 +00:00
Gusted
7bae89770c
Update license 2024-12-31 03:28:34 +01:00
Otto
bd7db225e8 Merge pull request 'Fix edit cancel button' (#6421) from JakobDev/forgejo:cancelfix into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6421
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: Otto <otto@codeberg.org>
2024-12-31 02:10:32 +00:00
Renovate Bot
933e4e30d8 Update module github.com/caddyserver/certmagic to v0.21.5 2024-12-31 00:04:13 +00:00
Otto
ceee649086 Merge pull request 'Fix issue/comment menus' (#6419) from fnetx/issue-view-a11y into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6419
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-12-30 20:28:53 +00:00
Otto
7bb043ce9b Merge pull request 'Rework user profile settings' (#6407) from fnetx/profile-a11y into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6407
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
2024-12-30 20:28:36 +00:00
JakobDev
bc2f640a95
Update 2024-12-30 17:47:34 +01:00
JakobDev
29c59c96bd
Fix edit cancel button 2024-12-30 17:33:52 +01:00
Earl Warren
5e7981aa07 Merge pull request 'Update code.forgejo.org/oci/alpine Docker tag to v3.21 (forgejo)' (#6404) from renovate/forgejo-minor-3.21-alpine-packages into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6404
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
2024-12-30 16:07:16 +00:00
Otto Richter
2885ea8da2 Rework user profile settings
Accessibility:

- improved semantic layout
- Fixes unlabelled input for custom pronouns. CC @hazy
- Adds labels to dropdowns.
- Shortens certain texts for less verbose screen reader outputs and
  people with slow reading speed.
- Turned optional username rename helper text with low contrast into
  "normal" help text.

UI/UX:

- Removes section about primary email which is no longer managed in the
  profile section.
- Fixes section about primary email not displaying in user settings when notifications are
  not available.
- Removes primary email display, because it is not actually a form
  element here. (Alternatively, we could display it and link to the
account settings for managing the email)
2024-12-30 16:42:58 +01:00
Earl Warren
8e3c066b27 Merge pull request 'chore(branding): strip metadata information from the footer' (#6403) from earl-warren/forgejo:wip-footer into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6403
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
2024-12-30 15:29:21 +00:00
Earl Warren
e819f649aa
Update code.forgejo.org/oci/alpine Docker tag to v3.21 (followup) 2024-12-30 15:22:42 +00:00
Otto Richter
c67d63d88a Fix issue/comment menus
Closes https://codeberg.org/forgejo/forgejo/issues/1120

- Adds labels to reaction and context menu.
- Fixes taborder in markdown combobox buttons. They are now only one
  "tab" stop and can be navigated with arrow buttons and in the right
order (previously, it would skip the table button).
- Generates more verbose output for the reactio selectors to provide
  content for users who cannot identify the meaning of these buttons
visually. Explicit aria-labels are now preferred over auto-generated
ones.
2024-12-30 16:06:18 +01:00
Gusted
de4053db83 Merge pull request 'fix: use DateUtils for blocked users list' (#6410) from gusted/forgejo-datetime into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6410
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-12-30 10:54:00 +00:00
Gusted
57f7253610
fix: use DateUtils for blocked users list
- Should've been fixed with #5796 but seems I've overlooked.
2024-12-30 10:58:24 +01:00
Earl Warren
8d6f0d49c6 Merge pull request '[gitea] week 2024-53 cherry pick (gitea/main -> forgejo)' (#6391) from earl-warren/wcp/2024-53 into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6391
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
2024-12-30 08:26:15 +00:00
Earl Warren
a5dc315a64 Merge pull request 'feat: don't allow blocking the doer' (#6411) from gusted/forgejo-org-block-yourown into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6411
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
2024-12-30 08:14:17 +00:00
Renovate Bot
0569714439 Update renovate Docker tag to v39.86.0 (forgejo) (#6412)
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2024-12-30 08:10:09 +00:00
Gusted
e14f2d0c84
feat: don't allow blocking the doer
- In the case of organization blocking users, disallow blocking the doer.
- Resolves #5390
- Added integration test.
2024-12-30 00:09:07 +01:00
Gusted
db7be1a1db Merge pull request 'feat: add synchronization for SSH keys for OpenID Connect' (#6232) from Maks1mS/forgejo:feat/add-oidc-ssh-keys into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6232
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
2024-12-29 22:43:28 +00:00
Earl Warren
2c81893c76
chore(branding): strip metadata information from the footer
When the Forgejo version is displayed in the footer, the metadata
should not be displayed. It was once an indication that Forgejo
includes all of Gitea. But since the hard fork the codebase diverged
and this is no longer accurate.

The metadata is still displayed in the API, admin panels or headers
for the sake of backward compatibility.

Refs: https://codeberg.org/forgejo/discussions/issues/244
2024-12-29 22:40:13 +00:00
Gusted
d071c09bf7 Merge pull request 'cmd/dump: add option flag to skip repository archives' (#6387) from c8h4/forgejo:dump-skip-repo-archive into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6387
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
2024-12-29 22:31:28 +00:00
Christoph Heiss
e8a022ac9a
dump: add option to skip repository archives data
One might want to exclude this data when dumping, esp. since repository
archives are more of temporary data by nature.

Signed-off-by: Christoph Heiss <christoph@c8h4.io>
2024-12-29 19:59:22 +01:00
Christoph Heiss
4ed10f782b
dump: reword cli flag descriptions and log messages
Currently, they are pretty inconsistent in wording. Rewrite them to a
unified, coherent style.

Signed-off-by: Christoph Heiss <christoph@c8h4.io>
2024-12-29 19:59:22 +01:00
Gusted
3870acbdfd Merge pull request 'fix: xorm needs to be lowercase otherwise it is ignored' (#6405) from earl-warren/forgejo:wip-webauthn into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6405
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
2024-12-29 18:26:31 +00:00
Earl Warren
b03ecf584c
fix: xorm needs to be lowercase otherwise it is ignored
Fixes: https://codeberg.org/forgejo/forgejo/issues/6389
2024-12-29 16:25:51 +00:00
Renovate Bot
036426e230 Update code.forgejo.org/oci/alpine Docker tag to v3.21 2024-12-29 16:04:55 +00:00
Otto
b74406d82c Merge pull request 'Cosmetic changes and fixes around repo homepage' (#6401) from 0ko/forgejo:ui-repo-meta-2 into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6401
Reviewed-by: Otto <otto@codeberg.org>
2024-12-29 14:46:34 +00:00
0ko
02c34f9908 ui: cosmetic changes and fixes around repo homepage 2024-12-29 18:52:02 +05:00
Otto
6d61ae5cbe Merge pull request 'Rework new repo dialog' (#6386) from fnetx/new-repo-form into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6386
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
2024-12-29 13:22:48 +00:00
Otto Richter
8d829a97b2 tests(e2e): Test new repo dialog and behaviour
- screenshots and basic accessibility scan of collapsed and expanded sections
  - the dropdowns do not pass the accessibility checks, but I haven't found an easy fix
  - I manually confirmed the dropdown behaviour via orca and firefox, though
2024-12-29 13:49:28 +01:00
Otto
6723087a6e Merge pull request 'feat: When comparing in repos, mention that pull request creation requires sign-in' (#6286) from litchipi/forgejo:contrib/sign_in_pr_ui into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6286
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: Otto <otto@codeberg.org>
2024-12-29 12:17:41 +00:00
Otto Richter
8d32ca32c2 New repo: Rework initialization
- only show settings when ticked
- only offer README selection when there are multiple options
2024-12-29 13:05:30 +01:00
JakobDev
a82cd18d9a Merge branch 'forgejo' into repocard 2024-12-29 11:20:09 +00:00
JakobDev
b2a5b428a2
Change license of card.go 2024-12-29 12:19:48 +01:00
Earl Warren
37f05617a5
Improve Actions test (#32883) (followup) 2024-12-28 21:56:33 +00:00
Otto Richter
4cde56906e New repo: Rework advanced and template sections
- make sections collapsible
- only offer object format selection when there is an actual choice
2024-12-28 22:32:19 +01:00
Otto Richter
81599155e8 New repo: Rework basic settings
- separate template
- ensure correct labelling of elements
- drop additional required indicators for field that already have
  browser semantics (the icon has colour contrast issues anyway),
especially as the first dropdown cannot be left empty
2024-12-28 22:32:11 +01:00
Otto Richter
471e5b1975 New repo: Clean up and improve CSS
- drop custom layout rules for this page
- move form-related content to form.css
- extend new form CSS to add gap between labels and input fields
2024-12-28 22:31:12 +01:00
Earl Warren
9c43fa0644 Merge pull request 'Fix overflow in git notes' (#6390) from JakobDev/forgejo:noteoverflow into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6390
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-12-28 20:43:33 +00:00
JakobDev
b7d7431d05
Fix typos 2024-12-28 21:20:55 +01:00
Zettat123
b18dcd69f2
Improve Actions test (#32883)
This PR adds a mock runner to test more actions features.

(cherry picked from commit df98452c0de9d01338f00aa5d85757623523b1fc)
2024-12-28 19:33:53 +00:00
Zettat123
92ac337263
Support org labels when adding labels by label names (#32988)
Fix #32891

(cherry picked from commit 44b4fb21a4e99f327303f66cc7e48f7ca7ba09e1)
2024-12-28 19:32:09 +00:00
Lunny Xiao
2ffa9a5e6e
demilestone should not include milestone (#32923)
Fix #32887

(cherry picked from commit f44712f22bc7bfce049c64c27f60453ff1e41a5c)

Conflicts:
	services/issue/milestone_test.go
  trivial conflicts (require vs assert)
2024-12-28 19:24:24 +00:00
JakobDev
dcdeb23cc3
Fix overflow in git notes 2024-12-28 20:19:58 +01:00
katsu
0efd7130f0
fix trailing comma not matched in the case of alphanumeric issue (#32945)
Fix #32428.

Patch the regex to match `,`besides `.` `"` `'` `:` and space.

(cherry picked from commit fb75151fb14e866cab8d893c588f5673902b278b)
2024-12-28 19:00:07 +00:00
Earl Warren
234b57b00c Merge pull request 'chore(release): v10.0 is cut, v9.0 is soon to be EOL' (#6370) from earl-warren/forgejo:wip-renovate-v10 into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6370
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
2024-12-27 08:41:29 +00:00
Maxim Slipenko
af88ddae8c Merge branch 'feat/add-oidc-ssh-keys' of codeberg.org:Maks1mS/forgejo into feat/add-oidc-ssh-keys 2024-12-27 11:18:27 +03:00
Maxim Slipenko
666654a5ef fix: return empty slice if AttributeSSHPublicKey is missing in RawData 2024-12-27 11:17:27 +03:00
Maks1mS
8a3fb4885e Merge branch 'forgejo' into feat/add-oidc-ssh-keys 2024-12-26 14:33:09 +00:00
Codeberg Translate
e94134def6 i18n: update of translations from Codeberg Translate (#6331)
Co-authored-by: 0ko <0ko@users.noreply.translate.codeberg.org>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: tacaly <tacaly@users.noreply.translate.codeberg.org>
Co-authored-by: tacaly <frederick@tacaly.com>
Co-authored-by: artnay <artnay@users.noreply.translate.codeberg.org>
Co-authored-by: WithLithum <withlithum@users.noreply.translate.codeberg.org>
Co-authored-by: Wuzzy <wuzzy@disroot.org>
Co-authored-by: Atalanttore <atalanttore@users.noreply.translate.codeberg.org>
Co-authored-by: Juno Takano <jutty@users.noreply.translate.codeberg.org>
Co-authored-by: emansije <emansije@users.noreply.translate.codeberg.org>
Co-authored-by: earl-warren <earl-warren@users.noreply.translate.codeberg.org>
Co-authored-by: Edgarsons <edgarsons@users.noreply.translate.codeberg.org>
Co-authored-by: Benedikt Straub <benedikt-straub@web.de>
Co-authored-by: SomeTr <sometr@users.noreply.translate.codeberg.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6331
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Codeberg Translate <translate@noreply.codeberg.org>
Co-committed-by: Codeberg Translate <translate@noreply.codeberg.org>
2024-12-26 09:26:46 +00:00
Earl Warren
410c8b913f Merge pull request 'chore(i18n): user/label translations in danish/latvian' (#6375) from earl-warren/forgejo:wip-lint-locale into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6375
2024-12-26 08:46:33 +00:00
Earl Warren
5eb0877381
chore(i18n): user/label translations in danish/latvian
Refs: https://codeberg.org/forgejo/forgejo/pulls/6331
2024-12-26 09:40:21 +01:00
Earl Warren
180fb3f4d6 Merge pull request 'Revert "Update dependency idiomorph to v0.4.0"' (#6372) from gusted/forgejo-idiomorph-revert into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6372
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-12-26 07:52:58 +00:00
Gusted
64deec434a
Revert "Update dependency idiomorph to v0.4.0"
This reverts commit f9aaefd107.

I've not not yet been able to determine what commit caused it, but 0.4.0
is broken for Forgejo's usecase it's not morphing and instead
replacing (it seems) elements when there's no need to.
2024-12-25 23:08:03 +01:00
Litchi Pi
dd4a1107ed template: repo: compare: display a warning if the user is not logged in
Signed-off-by: Litchi Pi <litchi.pi@proton.me>
2024-12-25 17:18:00 +00:00
Earl Warren
72dcf04690
chore(release): v10.0 is cut, v9.0 is soon to be EOL 2024-12-25 12:00:15 +01:00
Earl Warren
6836ded397
chore(release): first commit of v11.0 2024-12-25 11:22:30 +01:00
Maxim Slipenko
4f92b738b5 style: make fmt 2024-12-21 21:44:05 +00:00
Maxim Slipenko
283d883e5a add integration tests for synchronization for SSH keys with OpenID Connect 2024-12-21 21:25:45 +00:00
Maxim Slipenko
515eec3d1a remove len(sshKeys) == 0 check 2024-12-21 21:25:38 +00:00
Maks1mS
c271779092 Merge branch 'forgejo' into feat/add-oidc-ssh-keys 2024-12-21 18:01:25 +00:00
Maks1mS
b397a102c1 Merge branch 'forgejo' into feat/add-oidc-ssh-keys 2024-12-20 10:29:54 +00:00
JakobDev
265174bd5e Merge branch 'forgejo' into repocard 2024-12-19 15:11:12 +00:00
Maxim Slipenko
32de0745e4 style: fix fmt and lint 2024-12-19 11:17:28 +00:00
Maxim Slipenko
8bd1c7ff31 feat: add synchronization for SSH keys in handleOAuth2SignIn 2024-12-19 10:47:47 +00:00
Maxim Slipenko
bbcd7d6fae Merge remote-tracking branch 'upstream/forgejo' into feat/add-oidc-ssh-keys 2024-12-19 10:45:59 +00:00
JakobDev
4568ebc913
Update 2024-12-18 22:33:22 +01:00
JakobDev
aa64f6515c
Add copyright header 2024-12-18 20:41:40 +01:00
JakobDev
df570a1d71 Merge branch 'forgejo' into repocard 2024-12-18 19:27:24 +00:00
JakobDev
25bfd2983e
Update 2024-12-18 20:26:39 +01:00
JakobDev
7685a1e98e
feat: Add summary card for repos and releases 2024-12-14 19:36:09 +01:00
Maxim Slipenko
a87e0d0e46 fix: do not rewrite when there are no keys 2024-12-10 14:01:02 +00:00
Maxim Slipenko
47fd9a421f style: run make fmt 2024-12-10 07:41:04 +00:00
Maks1mS
ab2127faef Merge branch 'forgejo' into feat/add-oidc-ssh-keys 2024-12-10 07:26:37 +00:00
Maxim Slipenko
4500757acd feat: add synchronization for SSH keys with OpenID Connect
Co-authored-by:  Kirill Kolmykov <cyberk1ra@ya.ru>
2024-12-09 18:59:11 +03:00
419 changed files with 14627 additions and 3755 deletions

View file

@ -169,6 +169,9 @@ code.gitea.io/gitea/modules/json
StdJSON.NewDecoder StdJSON.NewDecoder
StdJSON.Indent StdJSON.Indent
code.gitea.io/gitea/modules/log
NewEventWriterBuffer
code.gitea.io/gitea/modules/markup code.gitea.io/gitea/modules/markup
GetRendererByType GetRendererByType
RenderString RenderString
@ -243,6 +246,7 @@ code.gitea.io/gitea/modules/translation
MockLocale.TrString MockLocale.TrString
MockLocale.Tr MockLocale.Tr
MockLocale.TrN MockLocale.TrN
MockLocale.TrPluralString
MockLocale.TrSize MockLocale.TrSize
MockLocale.PrettyNumber MockLocale.PrettyNumber

View file

@ -34,6 +34,7 @@ _testmain.go
*coverage.out *coverage.out
coverage.all coverage.all
coverage/
cpu.out cpu.out
/modules/migration/bindata.go /modules/migration/bindata.go

View file

@ -1,4 +1,4 @@
FROM data.forgejo.org/oci/alpine:3.20 FROM data.forgejo.org/oci/alpine:3.21
ARG RELEASE_VERSION=unkown ARG RELEASE_VERSION=unkown
LABEL maintainer="contact@forgejo.org" \ LABEL maintainer="contact@forgejo.org" \
org.opencontainers.image.version="${RELEASE_VERSION}" org.opencontainers.image.version="${RELEASE_VERSION}"

View file

@ -27,8 +27,9 @@ runs:
- name: "Get go environment information" - name: "Get go environment information"
id: go-environment id: go-environment
run: | run: |
echo "modcache=$(su ${RUN_AS_USER} -c '/opt/hostedtoolcache/go/${GO_VERSION}/x64/bin/go env GOMODCACHE')" >> "$GITHUB_OUTPUT" export GOROOT="$(go env GOROOT)"
echo "cache=$(su ${RUN_AS_USER} -c '/opt/hostedtoolcache/go/${GO_VERSION}/x64/bin/go env GOCACHE')" >> "$GITHUB_OUTPUT" echo "modcache=$(su ${RUN_AS_USER} -c '${GOROOT}/bin/go env GOMODCACHE')" >> "$GITHUB_OUTPUT"
echo "cache=$(su ${RUN_AS_USER} -c '${GOROOT}/bin/go env GOCACHE')" >> "$GITHUB_OUTPUT"
env: env:
RUN_AS_USER: ${{ inputs.username }} RUN_AS_USER: ${{ inputs.username }}
GO_VERSION: ${{ steps.go-version.outputs.go-version }} GO_VERSION: ${{ steps.go-version.outputs.go-version }}

View file

@ -19,7 +19,7 @@ runs:
set -ex set -ex
toolchain=$(grep -oP '(?<=toolchain ).+' go.mod) toolchain=$(grep -oP '(?<=toolchain ).+' go.mod)
version=$(go version | cut -d' ' -f3) version=$(go version | cut -d' ' -f3)
if [ "$toolchain" != "$version" ]; then if dpkg --compare-versions ${version#go} lt ${toolchain#go}; then
echo "go version mismatch: $toolchain <> $version" echo "go version too low: $toolchain >= $version"
exit 1 exit 1
fi fi

View file

@ -164,7 +164,7 @@ jobs:
- name: build container & release - name: build container & release
if: ${{ secrets.TOKEN != '' }} if: ${{ secrets.TOKEN != '' }}
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.2.1 uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.3.1
with: with:
forgejo: "${{ env.GITHUB_SERVER_URL }}" forgejo: "${{ env.GITHUB_SERVER_URL }}"
owner: "${{ env.GITHUB_REPOSITORY_OWNER }}" owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"
@ -183,7 +183,7 @@ jobs:
- name: build rootless container - name: build rootless container
if: ${{ secrets.TOKEN != '' }} if: ${{ secrets.TOKEN != '' }}
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.2.1 uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.3.1
with: with:
forgejo: "${{ env.GITHUB_SERVER_URL }}" forgejo: "${{ env.GITHUB_SERVER_URL }}"
owner: "${{ env.GITHUB_REPOSITORY_OWNER }}" owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"

View file

@ -42,7 +42,7 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: copy & sign - name: copy & sign
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/publish@v5.2.1 uses: https://data.forgejo.org/forgejo/forgejo-build-publish/publish@v5.3.1
with: with:
from-forgejo: ${{ vars.FORGEJO }} from-forgejo: ${{ vars.FORGEJO }}
to-forgejo: ${{ vars.FORGEJO }} to-forgejo: ${{ vars.FORGEJO }}
@ -61,14 +61,14 @@ jobs:
- name: get trigger mirror issue - name: get trigger mirror issue
id: mirror id: mirror
uses: https://data.forgejo.org/infrastructure/issue-action/get@v1.1.0 uses: https://data.forgejo.org/infrastructure/issue-action/get@v1.3.0
with: with:
forgejo: https://code.forgejo.org forgejo: https://code.forgejo.org
repository: forgejo/forgejo repository: forgejo/forgejo
labels: mirror-trigger labels: mirror-trigger
- name: trigger the mirror - name: trigger the mirror
uses: https://data.forgejo.org/infrastructure/issue-action/set@v1.1.0 uses: https://data.forgejo.org/infrastructure/issue-action/set@v1.3.0
with: with:
forgejo: https://code.forgejo.org forgejo: https://code.forgejo.org
repository: forgejo/forgejo repository: forgejo/forgejo

View file

@ -25,7 +25,7 @@ jobs:
runs-on: docker runs-on: docker
container: container:
image: data.forgejo.org/forgejo-contrib/renovate:39.69.2 image: data.forgejo.org/renovate/renovate:39.106.0
steps: steps:
- name: Load renovate repo cache - name: Load renovate repo cache

2
.gitignore vendored
View file

@ -37,6 +37,7 @@ _testmain.go
*coverage.out *coverage.out
coverage.all coverage.all
coverage/
cpu.out cpu.out
/modules/migration/bindata.go /modules/migration/bindata.go
@ -72,6 +73,7 @@ cpu.out
/tests/e2e/reports /tests/e2e/reports
/tests/e2e/test-artifacts /tests/e2e/test-artifacts
/tests/e2e/test-snapshots /tests/e2e/test-snapshots
/tests/e2e/.auth
/tests/*.ini /tests/*.ini
/tests/**/*.git/**/*.sample /tests/**/*.git/**/*.sample
/node_modules /node_modules

View file

@ -1,6 +1,6 @@
FROM --platform=$BUILDPLATFORM code.forgejo.org/oci/xx AS xx FROM --platform=$BUILDPLATFORM code.forgejo.org/oci/xx AS xx
FROM --platform=$BUILDPLATFORM code.forgejo.org/oci/golang:1.23-alpine3.20 as build-env FROM --platform=$BUILDPLATFORM code.forgejo.org/oci/golang:1.23-alpine3.21 as build-env
ARG GOPROXY ARG GOPROXY
ENV GOPROXY=${GOPROXY:-direct} ENV GOPROXY=${GOPROXY:-direct}
@ -51,7 +51,7 @@ RUN chmod 755 /tmp/local/usr/bin/entrypoint \
/go/src/code.gitea.io/gitea/environment-to-ini /go/src/code.gitea.io/gitea/environment-to-ini
RUN chmod 644 /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete RUN chmod 644 /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete
FROM code.forgejo.org/oci/alpine:3.20 FROM code.forgejo.org/oci/alpine:3.21
ARG RELEASE_VERSION ARG RELEASE_VERSION
LABEL maintainer="contact@forgejo.org" \ LABEL maintainer="contact@forgejo.org" \
org.opencontainers.image.authors="Forgejo" \ org.opencontainers.image.authors="Forgejo" \
@ -98,7 +98,7 @@ ENV GITEA_CUSTOM=/data/gitea
VOLUME ["/data"] VOLUME ["/data"]
ENTRYPOINT ["/usr/bin/entrypoint"] ENTRYPOINT ["/usr/bin/entrypoint"]
CMD ["/bin/s6-svscan", "/etc/s6"] CMD ["/usr/bin/s6-svscan", "/etc/s6"]
COPY --from=build-env /tmp/local / COPY --from=build-env /tmp/local /
RUN cd /usr/local/bin ; ln -s gitea forgejo RUN cd /usr/local/bin ; ln -s gitea forgejo

View file

@ -1,6 +1,6 @@
FROM --platform=$BUILDPLATFORM code.forgejo.org/oci/xx AS xx FROM --platform=$BUILDPLATFORM code.forgejo.org/oci/xx AS xx
FROM --platform=$BUILDPLATFORM code.forgejo.org/oci/golang:1.23-alpine3.20 as build-env FROM --platform=$BUILDPLATFORM code.forgejo.org/oci/golang:1.23-alpine3.21 as build-env
ARG GOPROXY ARG GOPROXY
ENV GOPROXY=${GOPROXY:-direct} ENV GOPROXY=${GOPROXY:-direct}
@ -49,7 +49,7 @@ RUN chmod 755 /tmp/local/usr/local/bin/docker-entrypoint.sh \
/go/src/code.gitea.io/gitea/environment-to-ini /go/src/code.gitea.io/gitea/environment-to-ini
RUN chmod 644 /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete RUN chmod 644 /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete
FROM code.forgejo.org/oci/alpine:3.20 FROM code.forgejo.org/oci/alpine:3.21
LABEL maintainer="contact@forgejo.org" \ LABEL maintainer="contact@forgejo.org" \
org.opencontainers.image.authors="Forgejo" \ org.opencontainers.image.authors="Forgejo" \
org.opencontainers.image.url="https://forgejo.org" \ org.opencontainers.image.url="https://forgejo.org" \

View file

@ -37,7 +37,7 @@ endif
XGO_VERSION := go-1.21.x XGO_VERSION := go-1.21.x
AIR_PACKAGE ?= github.com/air-verse/air@v1 # renovate: datasource=go AIR_PACKAGE ?= github.com/air-verse/air@v1 # renovate: datasource=go
EDITORCONFIG_CHECKER_PACKAGE ?= github.com/editorconfig-checker/editorconfig-checker/v3/cmd/editorconfig-checker@v3.0.3 # renovate: datasource=go EDITORCONFIG_CHECKER_PACKAGE ?= github.com/editorconfig-checker/editorconfig-checker/v3/cmd/editorconfig-checker@v3.1.1 # renovate: datasource=go
GOFUMPT_PACKAGE ?= mvdan.cc/gofumpt@v0.7.0 # renovate: datasource=go GOFUMPT_PACKAGE ?= mvdan.cc/gofumpt@v0.7.0 # renovate: datasource=go
GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.62.2 # renovate: datasource=go GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.62.2 # renovate: datasource=go
GXZ_PACKAGE ?= github.com/ulikunitz/xz/cmd/gxz@v0.5.11 # renovate: datasource=go GXZ_PACKAGE ?= github.com/ulikunitz/xz/cmd/gxz@v0.5.11 # renovate: datasource=go
@ -46,10 +46,10 @@ SWAGGER_PACKAGE ?= github.com/go-swagger/go-swagger/cmd/swagger@v0.31.0 # renova
XGO_PACKAGE ?= src.techknowlogick.com/xgo@latest XGO_PACKAGE ?= src.techknowlogick.com/xgo@latest
GO_LICENSES_PACKAGE ?= github.com/google/go-licenses@v1.6.0 # renovate: datasource=go GO_LICENSES_PACKAGE ?= github.com/google/go-licenses@v1.6.0 # renovate: datasource=go
GOVULNCHECK_PACKAGE ?= golang.org/x/vuln/cmd/govulncheck@v1 # renovate: datasource=go GOVULNCHECK_PACKAGE ?= golang.org/x/vuln/cmd/govulncheck@v1 # renovate: datasource=go
DEADCODE_PACKAGE ?= golang.org/x/tools/cmd/deadcode@v0.28.0 # renovate: datasource=go DEADCODE_PACKAGE ?= golang.org/x/tools/cmd/deadcode@v0.29.0 # renovate: datasource=go
GOMOCK_PACKAGE ?= go.uber.org/mock/mockgen@v0.4.0 # renovate: datasource=go GOMOCK_PACKAGE ?= go.uber.org/mock/mockgen@v0.4.0 # renovate: datasource=go
GOPLS_PACKAGE ?= golang.org/x/tools/gopls@v0.17.0 # renovate: datasource=go GOPLS_PACKAGE ?= golang.org/x/tools/gopls@v0.17.1 # renovate: datasource=go
RENOVATE_NPM_PACKAGE ?= renovate@39.82.1 # renovate: datasource=docker packageName=code.forgejo.org/forgejo-contrib/renovate RENOVATE_NPM_PACKAGE ?= renovate@39.115.4 # renovate: datasource=docker packageName=data.forgejo.org/renovate/renovate
# https://github.com/disposable-email-domains/disposable-email-domains/commits/main/ # https://github.com/disposable-email-domains/disposable-email-domains/commits/main/
DISPOSABLE_EMAILS_SHA ?= 0c27e671231d27cf66370034d7f6818037416989 # renovate: ... DISPOSABLE_EMAILS_SHA ?= 0c27e671231d27cf66370034d7f6818037416989 # renovate: ...

View file

@ -1590,7 +1590,7 @@ this situation, [follow the instructions in the companion blog post](https://for
The most prominent ones are described here, others can be found in the list of commits included in the release as described above. The most prominent ones are described here, others can be found in the list of commits included in the release as described above.
* [Fix links to pull request reviews sent via mail](https://codeberg.org/forgejo/forgejo/commit/88e179d5ef8ee41f71d068195685ff098b38ca31). The pull request link was correct but it did not go the the review and stayed at the beginning of the page * [Fix links to pull request reviews sent via mail](https://codeberg.org/forgejo/forgejo/commit/88e179d5ef8ee41f71d068195685ff098b38ca31). The pull request link was correct but it did not go the review and stayed at the beginning of the page
* [Recognize OGG as an audio format](https://codeberg.org/forgejo/forgejo/commit/622ec5c79f299c32ac2667a1aa7b4bf5d7c2d6cf) * [Recognize OGG as an audio format](https://codeberg.org/forgejo/forgejo/commit/622ec5c79f299c32ac2667a1aa7b4bf5d7c2d6cf)
* [Consistently show the last time a cron job was run in the admin panel](https://codeberg.org/forgejo/forgejo/commit/5f769ef20) * [Consistently show the last time a cron job was run in the admin panel](https://codeberg.org/forgejo/forgejo/commit/5f769ef20)
* [Fix NuGet registry v2 & v3 API search endpoints](https://codeberg.org/forgejo/forgejo/commit/471138829b0c24fe8c621dbb866ae8bb45ebc674) * [Fix NuGet registry v2 & v3 API search endpoints](https://codeberg.org/forgejo/forgejo/commit/471138829b0c24fe8c621dbb866ae8bb45ebc674)
@ -1609,7 +1609,7 @@ this situation, [follow the instructions in the companion blog post](https://for
* [Fix pull request check list when there are more than 30](https://codeberg.org/forgejo/forgejo/commit/e226b9646) * [Fix pull request check list when there are more than 30](https://codeberg.org/forgejo/forgejo/commit/e226b9646)
* [Fix attachment clipboard copy on insecure origin](https://codeberg.org/forgejo/forgejo/commit/12ac84c26) * [Fix attachment clipboard copy on insecure origin](https://codeberg.org/forgejo/forgejo/commit/12ac84c26)
* [Fix the profile README rendering](https://codeberg.org/forgejo/forgejo/commit/84c3b60a4) that [was inconsistent with other markdown files renderings](https://codeberg.org/forgejo/forgejo/issues/833) * [Fix the profile README rendering](https://codeberg.org/forgejo/forgejo/commit/84c3b60a4) that [was inconsistent with other markdown files renderings](https://codeberg.org/forgejo/forgejo/issues/833)
* [Fix API leaking the user email when the caller is not authentified](https://codeberg.org/forgejo/forgejo/commit/d89003cc1) * [Fix API leaking the user email when the caller is not authenticated](https://codeberg.org/forgejo/forgejo/commit/d89003cc1)
## 1.20.2-0 ## 1.20.2-0
@ -1667,7 +1667,7 @@ $ git -C forgejo log --oneline --no-merges origin/v1.19/forgejo..origin/v1.20/fo
The semantic version was updated to `5.0.0+0-gitea-1.20.1` because it contains breaking changes. The semantic version was updated to `5.0.0+0-gitea-1.20.1` because it contains breaking changes.
- **Breaking:** - **Breaking:**
- [Scoped access tokens](https://codeberg.org/forgejo/forgejo/commit/18de83b2a3fc120922096b7348d6375094ae1532) or (Personal Access Tokens), were refactored and although existing tokens are still valid, they may have a different scope than before. To ensure that no tokens have a larger scope than expected they must be removed and recreated. - [Scoped access tokens](https://codeberg.org/forgejo/forgejo/commit/18de83b2a3fc120922096b7348d6375094ae1532) or (Personal Access Tokens), were refactored and although existing tokens are still valid, they may have a different scope than before. To ensure that no tokens have a larger scope than expected they must be removed and recreated.
- If your `app.ini` has one of the the following `[indexer].ISSUE_INDEXER_QUEUE_TYPE`, `[indexer].ISSUE_INDEXER_QUEUE_BATCH_NUMBER`, `[indexer].`, `[indexer].ISSUE_INDEXER_QUEUE_DIR`, `[indexer].ISSUE_INDEXER_QUEUE_CONN_STR`, `[indexer].UPDATE_BUFFER_LEN`, `[mailer].SEND_BUFFER_LEN`, `[repository].PULL_REQUEST_QUEUE_LENGTH` or `[repository].MIRROR_QUEUE_LENGTH`, Forgejo will abort immediately. Unless you know exactly what you're doing, you must comment them out so the default values are used. - If your `app.ini` has one of the following `[indexer].ISSUE_INDEXER_QUEUE_TYPE`, `[indexer].ISSUE_INDEXER_QUEUE_BATCH_NUMBER`, `[indexer].`, `[indexer].ISSUE_INDEXER_QUEUE_DIR`, `[indexer].ISSUE_INDEXER_QUEUE_CONN_STR`, `[indexer].UPDATE_BUFFER_LEN`, `[mailer].SEND_BUFFER_LEN`, `[repository].PULL_REQUEST_QUEUE_LENGTH` or `[repository].MIRROR_QUEUE_LENGTH`, Forgejo will abort immediately. Unless you know exactly what you're doing, you must comment them out so the default values are used.
- The `-p` option of `environment-to-ini` is [no longer supported](https://codeberg.org/forgejo/forgejo/commit/fa0b5b14c2faa6a5f76bb2e7bc9241a5e4354189) - The `-p` option of `environment-to-ini` is [no longer supported](https://codeberg.org/forgejo/forgejo/commit/fa0b5b14c2faa6a5f76bb2e7bc9241a5e4354189)
- The ".png" suffix for [user and organizations is now reserved](https://codeberg.org/forgejo/forgejo/commit/2b91841cd3e1213ff3e4ed4209d6a4be89c2fa79) - The ".png" suffix for [user and organizations is now reserved](https://codeberg.org/forgejo/forgejo/commit/2b91841cd3e1213ff3e4ed4209d6a4be89c2fa79)
- The section `[git.reflog]` is [now obsolete and its keys have been moved](https://codeberg.org/forgejo/forgejo/commit/2f149c5c9db97f20fbbc65e32d1f3133048b11a2) to the following replacements: - The section `[git.reflog]` is [now obsolete and its keys have been moved](https://codeberg.org/forgejo/forgejo/commit/2f149c5c9db97f20fbbc65e32d1f3133048b11a2) to the following replacements:
@ -1761,7 +1761,7 @@ $ git -C forgejo log --oneline --no-merges origin/v1.19/forgejo..origin/v1.20/fo
- [The repository migration can be canceled](https://codeberg.org/forgejo/forgejo/commit/f6e029e6c7849d4361abf7f1d749b5d528364ac4) - [The repository migration can be canceled](https://codeberg.org/forgejo/forgejo/commit/f6e029e6c7849d4361abf7f1d749b5d528364ac4)
- [Add button on the diff header to copy the file name](https://codeberg.org/forgejo/forgejo/commit/c5ede35124c8d5280219c24049bb0ad7da9f02ed) - [Add button on the diff header to copy the file name](https://codeberg.org/forgejo/forgejo/commit/c5ede35124c8d5280219c24049bb0ad7da9f02ed)
- [Add --quiet option to the dump CLI](https://codeberg.org/forgejo/forgejo/commit/cb1536471bcef4d78a3fe5cbd738b9f60fabbcc2) - [Add --quiet option to the dump CLI](https://codeberg.org/forgejo/forgejo/commit/cb1536471bcef4d78a3fe5cbd738b9f60fabbcc2)
- [Support searching for an issue with its number in the the list of issues](https://codeberg.org/forgejo/forgejo/commit/1144b1d129de530b2c07dfdfaf55de383cd82212) - [Support searching for an issue with its number in the list of issues](https://codeberg.org/forgejo/forgejo/commit/1144b1d129de530b2c07dfdfaf55de383cd82212)
- [Improve the list of notifications](https://codeberg.org/forgejo/forgejo/commit/f7ede92f82f7f3ec7bb31a1249f9524e5b728f34) - [Improve the list of notifications](https://codeberg.org/forgejo/forgejo/commit/f7ede92f82f7f3ec7bb31a1249f9524e5b728f34)
- [When editing a file in the web UI, allow for a preview whenever possible](https://codeberg.org/forgejo/forgejo/commit/ac64c8297444ade63a2a364c4afb7e6c1de5a75f) - [When editing a file in the web UI, allow for a preview whenever possible](https://codeberg.org/forgejo/forgejo/commit/ac64c8297444ade63a2a364c4afb7e6c1de5a75f)
- [Make release download URLs human readable](https://codeberg.org/forgejo/forgejo/commit/42919ccb7cd32ab67d0878baf2bac6cd007899a8) - [Make release download URLs human readable](https://codeberg.org/forgejo/forgejo/commit/42919ccb7cd32ab67d0878baf2bac6cd007899a8)
@ -1798,7 +1798,7 @@ $ git -C forgejo log --oneline --no-merges origin/v1.19/forgejo..origin/v1.20/fo
- [Add API for gitignore templates](https://codeberg.org/forgejo/forgejo/commit/36a5d4c2f3b5670e5e921034cd5d25817534a6d4) - [Add API for gitignore templates](https://codeberg.org/forgejo/forgejo/commit/36a5d4c2f3b5670e5e921034cd5d25817534a6d4)
- [Add API to upuload a file to an empty repository](https://codeberg.org/forgejo/forgejo/commit/cf465b472166ccf6d3e001e3043e4bf43e16e6b3) - [Add API to upuload a file to an empty repository](https://codeberg.org/forgejo/forgejo/commit/cf465b472166ccf6d3e001e3043e4bf43e16e6b3)
- [Allow for --not when listing the commits of a repo](https://codeberg.org/forgejo/forgejo/commit/f766b002938b5c81e343c81fda3c0669fa09809f) - [Allow for --not when listing the commits of a repo](https://codeberg.org/forgejo/forgejo/commit/f766b002938b5c81e343c81fda3c0669fa09809f)
- [Add `files` and `verification` parameters to improve performances when listing the commits of a a repo](https://codeberg.org/forgejo/forgejo/commit/1dd83dbb917d55bd253001646d6743f247a4d98b) - [Add `files` and `verification` parameters to improve performances when listing the commits of a repo](https://codeberg.org/forgejo/forgejo/commit/1dd83dbb917d55bd253001646d6743f247a4d98b)
- [Allow for listing a single commit in a repository](https://codeberg.org/forgejo/forgejo/commit/5930ab5fdf7a970fcca3cd50b44cf1cacb615a54) - [Allow for listing a single commit in a repository](https://codeberg.org/forgejo/forgejo/commit/5930ab5fdf7a970fcca3cd50b44cf1cacb615a54)
- [Create a branch directly from commit on the create branch API](https://codeberg.org/forgejo/forgejo/commit/cd9a13ebb47d32f46b38439a524e3b2e0c619490) - [Create a branch directly from commit on the create branch API](https://codeberg.org/forgejo/forgejo/commit/cd9a13ebb47d32f46b38439a524e3b2e0c619490)
- [Add API for Label templates](https://codeberg.org/forgejo/forgejo/commit/25dc1556cd70b567a4920beb002a0addfbfd6ef2) - [Add API for Label templates](https://codeberg.org/forgejo/forgejo/commit/25dc1556cd70b567a4920beb002a0addfbfd6ef2)

File diff suppressed because one or more lines are too long

View file

@ -59,9 +59,9 @@ func initRemoveTags() {
oldnew := []string{} oldnew := []string{}
for _, el := range []string{ for _, el := range []string{
"email@example.com", "correu@example.com", "epasts@domens.lv", "email@exemplo.com", "eposta@ornek.com", "email@példa.hu", "email@esempio.it", "email@example.com", "correu@example.com", "epasts@domens.lv", "email@exemplo.com", "eposta@ornek.com", "email@példa.hu", "email@esempio.it",
"user", "utente", "lietotājs", "gebruiker", "usuário", "Benutzer", "Bruker", "user", "utente", "lietotājs", "gebruiker", "usuário", "Benutzer", "Bruker", "bruger",
"server", "servidor", "kiszolgáló", "serveris", "server", "servidor", "kiszolgáló", "serveris",
"label", "etichetta", "etiķete", "rótulo", "Label", "utilizador", "label", "etichetta", "etiķete", "rótulo", "Label", "utilizador", "etiket", "iezīme",
} { } {
oldnew = append(oldnew, "<"+el+">", "REPLACED-TAG") oldnew = append(oldnew, "<"+el+">", "REPLACED-TAG")
} }

View file

@ -69,6 +69,10 @@ var microcmdUserCreate = &cli.Command{
} }
func runCreateUser(c *cli.Context) error { func runCreateUser(c *cli.Context) error {
// this command highly depends on the many setting options (create org, visibility, etc.), so it must have a full setting load first
// duplicate setting loading should be safe at the moment, but it should be refactored & improved in the future.
setting.LoadSettings()
if err := argsSet(c, "email"); err != nil { if err := argsSet(c, "email"); err != nil {
return err return err
} }

View file

@ -133,12 +133,12 @@ It can be used for backup and capture Forgejo server image to send to maintainer
&cli.BoolFlag{ &cli.BoolFlag{
Name: "skip-repository", Name: "skip-repository",
Aliases: []string{"R"}, Aliases: []string{"R"},
Usage: "Skip the repository dumping", Usage: "Skip repositories",
}, },
&cli.BoolFlag{ &cli.BoolFlag{
Name: "skip-log", Name: "skip-log",
Aliases: []string{"L"}, Aliases: []string{"L"},
Usage: "Skip the log dumping", Usage: "Skip logs",
}, },
&cli.BoolFlag{ &cli.BoolFlag{
Name: "skip-custom-dir", Name: "skip-custom-dir",
@ -160,6 +160,10 @@ It can be used for backup and capture Forgejo server image to send to maintainer
Name: "skip-index", Name: "skip-index",
Usage: "Skip bleve index data", Usage: "Skip bleve index data",
}, },
&cli.BoolFlag{
Name: "skip-repo-archives",
Usage: "Skip repository archives",
},
&cli.GenericFlag{ &cli.GenericFlag{
Name: "type", Name: "type",
Value: outputTypeEnum, Value: outputTypeEnum,
@ -233,7 +237,7 @@ func runDump(ctx *cli.Context) error {
if file == nil { if file == nil {
file, err = os.Create(fileName) file, err = os.Create(fileName)
if err != nil { if err != nil {
fatal("Unable to open %s: %v", fileName, err) fatal("Failed to open %s: %v", fileName, err)
} }
} }
defer file.Close() defer file.Close()
@ -250,7 +254,7 @@ func runDump(ctx *cli.Context) error {
iface, err = archiver.ByExtension(fileName) iface, err = archiver.ByExtension(fileName)
} }
if err != nil { if err != nil {
fatal("Unable to get archiver for extension: %v", err) fatal("Failed to get archiver for extension: %v", err)
} }
w, _ := iface.(archiver.Writer) w, _ := iface.(archiver.Writer)
@ -260,7 +264,7 @@ func runDump(ctx *cli.Context) error {
defer w.Close() defer w.Close()
if ctx.IsSet("skip-repository") && ctx.Bool("skip-repository") { if ctx.IsSet("skip-repository") && ctx.Bool("skip-repository") {
log.Info("Skip dumping local repositories") log.Info("Skipping local repositories")
} else { } else {
log.Info("Dumping local repositories... %s", setting.RepoRootPath) log.Info("Dumping local repositories... %s", setting.RepoRootPath)
if err := addRecursiveExclude(w, "repos", setting.RepoRootPath, []string{absFileName}, verbose); err != nil { if err := addRecursiveExclude(w, "repos", setting.RepoRootPath, []string{absFileName}, verbose); err != nil {
@ -268,9 +272,9 @@ func runDump(ctx *cli.Context) error {
} }
if ctx.IsSet("skip-lfs-data") && ctx.Bool("skip-lfs-data") { if ctx.IsSet("skip-lfs-data") && ctx.Bool("skip-lfs-data") {
log.Info("Skip dumping LFS data") log.Info("Skipping LFS data")
} else if !setting.LFS.StartServer { } else if !setting.LFS.StartServer {
log.Info("LFS isn't enabled. Skip dumping LFS data") log.Info("LFS not enabled - skipping")
} else if err := storage.LFS.IterateObjects("", func(objPath string, object storage.Object) error { } else if err := storage.LFS.IterateObjects("", func(objPath string, object storage.Object) error {
info, err := object.Stat() info, err := object.Stat()
if err != nil { if err != nil {
@ -295,7 +299,7 @@ func runDump(ctx *cli.Context) error {
defer func() { defer func() {
_ = dbDump.Close() _ = dbDump.Close()
if err := util.Remove(dbDump.Name()); err != nil { if err := util.Remove(dbDump.Name()); err != nil {
log.Warn("Unable to remove temporary file: %s: Error: %v", dbDump.Name(), err) log.Warn("Failed to remove temporary file: %s: Error: %v", dbDump.Name(), err)
} }
}() }()
@ -331,16 +335,16 @@ func runDump(ctx *cli.Context) error {
fatal("Failed to include custom: %v", err) fatal("Failed to include custom: %v", err)
} }
} else { } else {
log.Info("Custom dir %s is inside data dir %s, skipped", setting.CustomPath, setting.AppDataPath) log.Info("Custom dir %s is inside data dir %s, skipping", setting.CustomPath, setting.AppDataPath)
} }
} else { } else {
log.Info("Custom dir %s doesn't exist, skipped", setting.CustomPath) log.Info("Custom dir %s does not exist, skipping", setting.CustomPath)
} }
} }
isExist, err := util.IsExist(setting.AppDataPath) isExist, err := util.IsExist(setting.AppDataPath)
if err != nil { if err != nil {
log.Error("Unable to check if %s exists. Error: %v", setting.AppDataPath, err) log.Error("Failed to check if %s exists: %v", setting.AppDataPath, err)
} }
if isExist { if isExist {
log.Info("Packing data directory...%s", setting.AppDataPath) log.Info("Packing data directory...%s", setting.AppDataPath)
@ -355,10 +359,16 @@ func runDump(ctx *cli.Context) error {
} }
if ctx.IsSet("skip-index") && ctx.Bool("skip-index") { if ctx.IsSet("skip-index") && ctx.Bool("skip-index") {
log.Info("Skipping bleve index data")
excludes = append(excludes, setting.Indexer.RepoPath) excludes = append(excludes, setting.Indexer.RepoPath)
excludes = append(excludes, setting.Indexer.IssuePath) excludes = append(excludes, setting.Indexer.IssuePath)
} }
if ctx.IsSet("skip-repo-archives") && ctx.Bool("skip-repo-archives") {
log.Info("Skipping repository archives data")
excludes = append(excludes, setting.RepoArchive.Storage.Path)
}
excludes = append(excludes, setting.RepoRootPath) excludes = append(excludes, setting.RepoRootPath)
excludes = append(excludes, setting.LFS.Storage.Path) excludes = append(excludes, setting.LFS.Storage.Path)
excludes = append(excludes, setting.Attachment.Storage.Path) excludes = append(excludes, setting.Attachment.Storage.Path)
@ -371,7 +381,7 @@ func runDump(ctx *cli.Context) error {
} }
if ctx.IsSet("skip-attachment-data") && ctx.Bool("skip-attachment-data") { if ctx.IsSet("skip-attachment-data") && ctx.Bool("skip-attachment-data") {
log.Info("Skip dumping attachment data") log.Info("Skipping attachment data")
} else if err := storage.Attachments.IterateObjects("", func(objPath string, object storage.Object) error { } else if err := storage.Attachments.IterateObjects("", func(objPath string, object storage.Object) error {
info, err := object.Stat() info, err := object.Stat()
if err != nil { if err != nil {
@ -384,9 +394,9 @@ func runDump(ctx *cli.Context) error {
} }
if ctx.IsSet("skip-package-data") && ctx.Bool("skip-package-data") { if ctx.IsSet("skip-package-data") && ctx.Bool("skip-package-data") {
log.Info("Skip dumping package data") log.Info("Skipping package data")
} else if !setting.Packages.Enabled { } else if !setting.Packages.Enabled {
log.Info("Packages isn't enabled. Skip dumping package data") log.Info("Package registry not enabled - skipping")
} else if err := storage.Packages.IterateObjects("", func(objPath string, object storage.Object) error { } else if err := storage.Packages.IterateObjects("", func(objPath string, object storage.Object) error {
info, err := object.Stat() info, err := object.Stat()
if err != nil { if err != nil {
@ -402,11 +412,11 @@ func runDump(ctx *cli.Context) error {
// ensuring that it's clear the dump is skipped whether the directory's initialized // ensuring that it's clear the dump is skipped whether the directory's initialized
// yet or not. // yet or not.
if ctx.IsSet("skip-log") && ctx.Bool("skip-log") { if ctx.IsSet("skip-log") && ctx.Bool("skip-log") {
log.Info("Skip dumping log files") log.Info("Skipping log files")
} else { } else {
isExist, err := util.IsExist(setting.Log.RootPath) isExist, err := util.IsExist(setting.Log.RootPath)
if err != nil { if err != nil {
log.Error("Unable to check if %s exists. Error: %v", setting.Log.RootPath, err) log.Error("Failed to check if %s exists: %v", setting.Log.RootPath, err)
} }
if isExist { if isExist {
if err := addRecursiveExclude(w, "log", setting.Log.RootPath, []string{absFileName}, verbose); err != nil { if err := addRecursiveExclude(w, "log", setting.Log.RootPath, []string{absFileName}, verbose); err != nil {
@ -456,7 +466,7 @@ func addRecursiveExclude(w archiver.Writer, insidePath, absPath string, excludeA
currentInsidePath := path.Join(insidePath, file.Name()) currentInsidePath := path.Join(insidePath, file.Name())
if util.SliceContainsString(excludeAbsPath, currentAbsPath) { if util.SliceContainsString(excludeAbsPath, currentAbsPath) {
log.Debug("Skipping %q because matched an excluded path.", currentAbsPath) log.Debug("Skipping %q (matched an excluded path)", currentAbsPath)
continue continue
} }

View file

@ -206,6 +206,7 @@ func innerNewMainApp(version, versionExtra string, subCmdsStandaloneArgs, subCmd
app.Commands = append(app.Commands, subCmdWithConfig...) app.Commands = append(app.Commands, subCmdWithConfig...)
app.Commands = append(app.Commands, subCmdStandalone...) app.Commands = append(app.Commands, subCmdStandalone...)
setting.InitGiteaEnvVars()
return app return app
} }

View file

@ -6,7 +6,6 @@ package cmd
import ( import (
"fmt" "fmt"
"io" "io"
"os"
"path/filepath" "path/filepath"
"strings" "strings"
"testing" "testing"
@ -114,37 +113,17 @@ func TestCliCmd(t *testing.T) {
_, _ = fmt.Fprint(ctx.App.Writer, makePathOutput(setting.AppWorkPath, setting.CustomPath, setting.CustomConf)) _, _ = fmt.Fprint(ctx.App.Writer, makePathOutput(setting.AppWorkPath, setting.CustomPath, setting.CustomConf))
return nil return nil
}) })
var envBackup []string
for _, s := range os.Environ() {
if strings.HasPrefix(s, "GITEA_") && strings.Contains(s, "=") {
envBackup = append(envBackup, s)
}
}
clearGiteaEnv := func() {
for _, s := range os.Environ() {
if strings.HasPrefix(s, "GITEA_") {
_ = os.Unsetenv(s)
}
}
}
defer func() {
clearGiteaEnv()
for _, s := range envBackup {
k, v, _ := strings.Cut(s, "=")
_ = os.Setenv(k, v)
}
}()
for _, c := range cases { for _, c := range cases {
clearGiteaEnv() t.Run(c.cmd, func(t *testing.T) {
for k, v := range c.env { for k, v := range c.env {
_ = os.Setenv(k, v) t.Setenv(k, v)
} }
args := strings.Split(c.cmd, " ") // for test only, "split" is good enough args := strings.Split(c.cmd, " ") // for test only, "split" is good enough
r, err := runTestApp(app, args...) r, err := runTestApp(app, args...)
require.NoError(t, err, c.cmd) require.NoError(t, err, c.cmd)
assert.NotEmpty(t, c.exp, c.cmd) assert.NotEmpty(t, c.exp, c.cmd)
assert.Contains(t, r.Stdout, c.exp, c.cmd) assert.Contains(t, r.Stdout, c.exp, c.cmd)
})
} }
} }

View file

@ -12,6 +12,7 @@ import (
"path/filepath" "path/filepath"
"strconv" "strconv"
"strings" "strings"
"time"
_ "net/http/pprof" // Used for debugging if enabled and a web server is running _ "net/http/pprof" // Used for debugging if enabled and a web server is running
@ -115,6 +116,16 @@ func showWebStartupMessage(msg string) {
log.Info("* CustomPath: %s", setting.CustomPath) log.Info("* CustomPath: %s", setting.CustomPath)
log.Info("* ConfigFile: %s", setting.CustomConf) log.Info("* ConfigFile: %s", setting.CustomConf)
log.Info("%s", msg) // show startup message log.Info("%s", msg) // show startup message
if setting.CORSConfig.Enabled {
log.Info("CORS Service Enabled")
}
if setting.DefaultUILocation != time.Local {
log.Info("Default UI Location is %v", setting.DefaultUILocation.String())
}
if setting.MailService != nil {
log.Info("Mail Service Enabled: RegisterEmailConfirm=%v, Service.EnableNotifyMail=%v", setting.Service.RegisterEmailConfirm, setting.Service.EnableNotifyMail)
}
} }
func serveInstall(ctx *cli.Context) error { func serveInstall(ctx *cli.Context) error {

View file

@ -37,5 +37,5 @@ done
if [ $# -gt 0 ]; then if [ $# -gt 0 ]; then
exec "$@" exec "$@"
else else
exec /bin/s6-svscan /etc/s6 exec /usr/bin/s6-svscan /etc/s6
fi fi

84
go.mod
View file

@ -2,10 +2,10 @@ module code.gitea.io/gitea
go 1.23 go 1.23
toolchain go1.23.4 toolchain go1.23.5
require ( require (
code.forgejo.org/f3/gof3/v3 v3.7.0 code.forgejo.org/f3/gof3/v3 v3.10.2
code.forgejo.org/forgejo-contrib/go-libravatar v0.0.0-20191008002943-06d1c002b251 code.forgejo.org/forgejo-contrib/go-libravatar v0.0.0-20191008002943-06d1c002b251
code.forgejo.org/forgejo/reply v1.0.2 code.forgejo.org/forgejo/reply v1.0.2
code.forgejo.org/go-chi/binding v1.0.0 code.forgejo.org/go-chi/binding v1.0.0
@ -13,20 +13,21 @@ require (
code.forgejo.org/go-chi/captcha v1.0.1 code.forgejo.org/go-chi/captcha v1.0.1
code.forgejo.org/go-chi/session v1.0.1 code.forgejo.org/go-chi/session v1.0.1
code.gitea.io/actions-proto-go v0.4.0 code.gitea.io/actions-proto-go v0.4.0
code.gitea.io/sdk/gitea v0.17.1 code.gitea.io/sdk/gitea v0.20.0
codeberg.org/gusted/mcaptcha v0.0.0-20220723083913-4f3072e1d570 codeberg.org/gusted/mcaptcha v0.0.0-20220723083913-4f3072e1d570
connectrpc.com/connect v1.17.0 connectrpc.com/connect v1.17.0
gitea.com/lunny/levelqueue v0.4.2-0.20230414023320-3c0159fe0fe4 gitea.com/lunny/levelqueue v0.4.2-0.20230414023320-3c0159fe0fe4
github.com/42wim/httpsig v1.2.2
github.com/42wim/sshsig v0.0.0-20211121163825-841cf5bbc121 github.com/42wim/sshsig v0.0.0-20211121163825-841cf5bbc121
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358
github.com/ProtonMail/go-crypto v1.0.0 github.com/ProtonMail/go-crypto v1.1.5
github.com/PuerkitoBio/goquery v1.10.0 github.com/PuerkitoBio/goquery v1.10.1
github.com/SaveTheRbtz/zstd-seekable-format-go/pkg v0.7.2 github.com/SaveTheRbtz/zstd-seekable-format-go/pkg v0.7.2
github.com/alecthomas/chroma/v2 v2.14.0 github.com/alecthomas/chroma/v2 v2.15.0
github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb
github.com/blevesearch/bleve/v2 v2.4.4 github.com/blevesearch/bleve/v2 v2.4.4
github.com/buildkite/terminal-to-html/v3 v3.16.4 github.com/buildkite/terminal-to-html/v3 v3.16.4
github.com/caddyserver/certmagic v0.21.4 github.com/caddyserver/certmagic v0.21.7
github.com/chi-middleware/proxy v1.1.1 github.com/chi-middleware/proxy v1.1.1
github.com/djherbis/buffer v1.2.0 github.com/djherbis/buffer v1.2.0
github.com/djherbis/nio/v3 v3.0.1 github.com/djherbis/nio/v3 v3.0.1
@ -43,8 +44,7 @@ require (
github.com/go-chi/cors v1.2.1 github.com/go-chi/cors v1.2.1
github.com/go-co-op/gocron v1.37.0 github.com/go-co-op/gocron v1.37.0
github.com/go-enry/go-enry/v2 v2.9.1 github.com/go-enry/go-enry/v2 v2.9.1
github.com/go-fed/httpsig v1.1.1-0.20201223112313-55836744818e github.com/go-git/go-git/v5 v5.13.2
github.com/go-git/go-git/v5 v5.11.0
github.com/go-ldap/ldap/v3 v3.4.6 github.com/go-ldap/ldap/v3 v3.4.6
github.com/go-openapi/spec v0.20.14 github.com/go-openapi/spec v0.20.14
github.com/go-sql-driver/mysql v1.8.1 github.com/go-sql-driver/mysql v1.8.1
@ -68,7 +68,7 @@ require (
github.com/json-iterator/go v1.1.12 github.com/json-iterator/go v1.1.12
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
github.com/klauspost/compress v1.17.11 github.com/klauspost/compress v1.17.11
github.com/klauspost/cpuid/v2 v2.2.8 github.com/klauspost/cpuid/v2 v2.2.9
github.com/lib/pq v1.10.9 github.com/lib/pq v1.10.9
github.com/markbates/goth v1.80.0 github.com/markbates/goth v1.80.0
github.com/mattn/go-isatty v0.0.20 github.com/mattn/go-isatty v0.0.20
@ -76,7 +76,7 @@ require (
github.com/meilisearch/meilisearch-go v0.29.0 github.com/meilisearch/meilisearch-go v0.29.0
github.com/mholt/archiver/v3 v3.5.1 github.com/mholt/archiver/v3 v3.5.1
github.com/microcosm-cc/bluemonday v1.0.27 github.com/microcosm-cc/bluemonday v1.0.27
github.com/minio/minio-go/v7 v7.0.78 github.com/minio/minio-go/v7 v7.0.84
github.com/msteinert/pam v1.2.0 github.com/msteinert/pam v1.2.0
github.com/nektos/act v0.2.52 github.com/nektos/act v0.2.52
github.com/niklasfasching/go-org v1.7.0 github.com/niklasfasching/go-org v1.7.0
@ -89,27 +89,27 @@ require (
github.com/robfig/cron/v3 v3.0.1 github.com/robfig/cron/v3 v3.0.1
github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 github.com/santhosh-tekuri/jsonschema/v6 v6.0.1
github.com/sassoftware/go-rpmutils v0.4.0 github.com/sassoftware/go-rpmutils v0.4.0
github.com/sergi/go-diff v1.3.1 github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3
github.com/shurcooL/vfsgen v0.0.0-20230704071429-0000e147ea92 github.com/shurcooL/vfsgen v0.0.0-20230704071429-0000e147ea92
github.com/stretchr/testify v1.10.0 github.com/stretchr/testify v1.10.0
github.com/syndtr/goleveldb v1.0.0 github.com/syndtr/goleveldb v1.0.0
github.com/ulikunitz/xz v0.5.12 github.com/ulikunitz/xz v0.5.12
github.com/urfave/cli/v2 v2.27.5 github.com/urfave/cli/v2 v2.27.5
github.com/valyala/fastjson v1.6.4 github.com/valyala/fastjson v1.6.4
github.com/xanzy/go-gitlab v0.109.0
github.com/yohcop/openid-go v1.0.1 github.com/yohcop/openid-go v1.0.1
github.com/yuin/goldmark v1.7.8 github.com/yuin/goldmark v1.7.8
github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc
gitlab.com/gitlab-org/api/client-go v0.119.0
go.uber.org/mock v0.4.0 go.uber.org/mock v0.4.0
golang.org/x/crypto v0.31.0 golang.org/x/crypto v0.32.0
golang.org/x/image v0.23.0 golang.org/x/image v0.23.0
golang.org/x/net v0.33.0 golang.org/x/net v0.34.0
golang.org/x/oauth2 v0.23.0 golang.org/x/oauth2 v0.24.0
golang.org/x/sync v0.10.0 golang.org/x/sync v0.10.0
golang.org/x/sys v0.28.0 golang.org/x/sys v0.29.0
golang.org/x/text v0.21.0 golang.org/x/text v0.21.0
google.golang.org/grpc v1.69.2 google.golang.org/grpc v1.70.0
google.golang.org/protobuf v1.36.1 google.golang.org/protobuf v1.36.3
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
gopkg.in/ini.v1 v1.67.0 gopkg.in/ini.v1 v1.67.0
gopkg.in/yaml.v3 v3.0.1 gopkg.in/yaml.v3 v3.0.1
@ -119,7 +119,7 @@ require (
) )
require ( require (
cel.dev/expr v0.16.2 // indirect cel.dev/expr v0.19.0 // indirect
cloud.google.com/go v0.116.0 // indirect cloud.google.com/go v0.116.0 // indirect
cloud.google.com/go/auth v0.9.9 // indirect cloud.google.com/go/auth v0.9.9 // indirect
cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect
@ -133,11 +133,11 @@ require (
git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078 // indirect git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078 // indirect
github.com/DataDog/zstd v1.5.5 // indirect github.com/DataDog/zstd v1.5.5 // indirect
github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.0 // indirect github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.0 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.2 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/RoaringBitmap/roaring v1.9.3 // indirect github.com/RoaringBitmap/roaring v1.9.3 // indirect
github.com/andybalholm/brotli v1.1.1 // indirect github.com/andybalholm/brotli v1.1.1 // indirect
github.com/andybalholm/cascadia v1.3.2 // indirect github.com/andybalholm/cascadia v1.3.3 // indirect
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect
github.com/aymerick/douceur v0.2.0 // indirect github.com/aymerick/douceur v0.2.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect github.com/beorn7/perks v1.0.1 // indirect
@ -168,11 +168,11 @@ require (
github.com/cloudflare/circl v1.3.8 // indirect github.com/cloudflare/circl v1.3.8 // indirect
github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect
github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/cyphar/filepath-securejoin v0.3.6 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/davidmz/go-pageant v1.0.2 // indirect github.com/davidmz/go-pageant v1.0.2 // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
github.com/dlclark/regexp2 v1.11.0 // indirect github.com/dlclark/regexp2 v1.11.4 // indirect
github.com/emersion/go-sasl v0.0.0-20231106173351-e73c9f7bad43 // indirect github.com/emersion/go-sasl v0.0.0-20231106173351-e73c9f7bad43 // indirect
github.com/emirpasic/gods v1.18.1 // indirect github.com/emirpasic/gods v1.18.1 // indirect
github.com/envoyproxy/go-control-plane v0.13.1 // indirect github.com/envoyproxy/go-control-plane v0.13.1 // indirect
@ -183,8 +183,9 @@ require (
github.com/go-ap/errors v0.0.0-20231003111023-183eef4b31b7 // indirect github.com/go-ap/errors v0.0.0-20231003111023-183eef4b31b7 // indirect
github.com/go-asn1-ber/asn1-ber v1.5.5 // indirect github.com/go-asn1-ber/asn1-ber v1.5.5 // indirect
github.com/go-enry/go-oniguruma v1.2.1 // indirect github.com/go-enry/go-oniguruma v1.2.1 // indirect
github.com/go-fed/httpsig v1.1.0 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-git/go-billy/v5 v5.6.2 // indirect
github.com/go-ini/ini v1.67.0 // indirect github.com/go-ini/ini v1.67.0 // indirect
github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect
@ -192,7 +193,7 @@ require (
github.com/go-openapi/jsonreference v0.20.4 // indirect github.com/go-openapi/jsonreference v0.20.4 // indirect
github.com/go-openapi/swag v0.22.7 // indirect github.com/go-openapi/swag v0.22.7 // indirect
github.com/go-webauthn/x v0.1.14 // indirect github.com/go-webauthn/x v0.1.14 // indirect
github.com/goccy/go-json v0.10.3 // indirect github.com/goccy/go-json v0.10.4 // indirect
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
github.com/golang/geo v0.0.0-20230421003525-6adc56603217 // indirect github.com/golang/geo v0.0.0-20230421003525-6adc56603217 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
@ -220,7 +221,7 @@ require (
github.com/markbates/going v1.0.3 // indirect github.com/markbates/going v1.0.3 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-runewidth v0.0.16 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect
github.com/mholt/acmez/v2 v2.0.3 // indirect github.com/mholt/acmez/v3 v3.0.1 // indirect
github.com/miekg/dns v1.1.62 // indirect github.com/miekg/dns v1.1.62 // indirect
github.com/minio/md5-simd v1.1.2 // indirect github.com/minio/md5-simd v1.1.2 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect
@ -233,7 +234,7 @@ require (
github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect
github.com/onsi/ginkgo v1.16.5 // indirect github.com/onsi/ginkgo v1.16.5 // indirect
github.com/pierrec/lz4/v4 v4.1.21 // indirect github.com/pierrec/lz4/v4 v4.1.21 // indirect
github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pjbgf/sha1cd v0.3.2 // indirect
github.com/pkg/errors v0.9.1 // indirect github.com/pkg/errors v0.9.1 // indirect
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
@ -246,7 +247,7 @@ require (
github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c // indirect github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c // indirect
github.com/sirupsen/logrus v1.9.3 // indirect github.com/sirupsen/logrus v1.9.3 // indirect
github.com/skeema/knownhosts v1.2.1 // indirect github.com/skeema/knownhosts v1.3.0 // indirect
github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect
github.com/x448/float16 v0.8.4 // indirect github.com/x448/float16 v0.8.4 // indirect
github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect
@ -255,24 +256,25 @@ require (
github.com/zeebo/blake3 v0.2.4 // indirect github.com/zeebo/blake3 v0.2.4 // indirect
go.etcd.io/bbolt v1.3.9 // indirect go.etcd.io/bbolt v1.3.9 // indirect
go.opencensus.io v0.24.0 // indirect go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/contrib/detectors/gcp v1.31.0 // indirect go.opentelemetry.io/contrib/detectors/gcp v1.32.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect
go.opentelemetry.io/otel v1.31.0 // indirect go.opentelemetry.io/otel v1.32.0 // indirect
go.opentelemetry.io/otel/metric v1.31.0 // indirect go.opentelemetry.io/otel/metric v1.32.0 // indirect
go.opentelemetry.io/otel/sdk v1.31.0 // indirect go.opentelemetry.io/otel/sdk v1.32.0 // indirect
go.opentelemetry.io/otel/sdk/metric v1.31.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.32.0 // indirect
go.opentelemetry.io/otel/trace v1.31.0 // indirect go.opentelemetry.io/otel/trace v1.32.0 // indirect
go.uber.org/atomic v1.11.0 // indirect go.uber.org/atomic v1.11.0 // indirect
go.uber.org/multierr v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect go.uber.org/zap v1.27.0 // indirect
go.uber.org/zap/exp v0.3.0 // indirect
golang.org/x/mod v0.22.0 // indirect golang.org/x/mod v0.22.0 // indirect
golang.org/x/time v0.7.0 // indirect golang.org/x/time v0.8.0 // indirect
golang.org/x/tools v0.28.0 // indirect golang.org/x/tools v0.28.0 // indirect
google.golang.org/api v0.203.0 // indirect google.golang.org/api v0.203.0 // indirect
google.golang.org/genproto v0.0.0-20241015192408-796eee8c2d53 // indirect google.golang.org/genproto v0.0.0-20241015192408-796eee8c2d53 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect
) )
@ -281,10 +283,10 @@ replace github.com/hashicorp/go-version => github.com/6543/go-version v1.3.1
replace github.com/shurcooL/vfsgen => github.com/lunny/vfsgen v0.0.0-20220105142115-2c99e1ffdfa0 replace github.com/shurcooL/vfsgen => github.com/lunny/vfsgen v0.0.0-20220105142115-2c99e1ffdfa0
replace github.com/nektos/act => code.forgejo.org/forgejo/act v1.22.0 replace github.com/nektos/act => code.forgejo.org/forgejo/act v1.23.1
replace github.com/mholt/archiver/v3 => code.forgejo.org/forgejo/archiver/v3 v3.5.1 replace github.com/mholt/archiver/v3 => code.forgejo.org/forgejo/archiver/v3 v3.5.1
replace github.com/goccy/go-json => github.com/grafana/go-json v0.0.0-20241210211703-a119ee5a0a3b
replace github.com/gliderlabs/ssh => code.forgejo.org/forgejo/ssh v0.0.0-20241211213324-5fc306ca0616 replace github.com/gliderlabs/ssh => code.forgejo.org/forgejo/ssh v0.0.0-20241211213324-5fc306ca0616
replace git.sr.ht/~mariusor/go-xsd-duration => code.forgejo.org/forgejo/go-xsd-duration v0.0.0-20220703122237-02e73435a078

200
go.sum
View file

@ -1,5 +1,5 @@
cel.dev/expr v0.16.2 h1:RwRhoH17VhAu9U5CMvMhH1PDVgf0tuz9FT+24AfMLfU= cel.dev/expr v0.19.0 h1:lXuo+nDhpyJSpWxpPVi5cPUwzKb+dsdOiw6IreM5yt0=
cel.dev/expr v0.16.2/go.mod h1:gXngZQMkWJoSbE8mOzehJlXQyubn/Vg0vR9/F3W7iw8= cel.dev/expr v0.19.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
@ -610,14 +610,16 @@ cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoIS
cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M=
cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA=
cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw=
code.forgejo.org/f3/gof3/v3 v3.7.0 h1:ZfuCP8CGm8ZJbWmL+V0pUu3E0X4FCAA7GfRDy/y5/K4= code.forgejo.org/f3/gof3/v3 v3.10.2 h1:EOlv9d8GR7l0BmvZF101O3LUuabb4g5Hw5fKYPiPZlI=
code.forgejo.org/f3/gof3/v3 v3.7.0/go.mod h1:oNhOeqD4DZYjVcNjQXIOdDX9b/1tqxi9ITLS8H9/Csw= code.forgejo.org/f3/gof3/v3 v3.10.2/go.mod h1:qApIHumpBkFkeBEokviO28+HK2WM11IsmMOhmjvCjFQ=
code.forgejo.org/forgejo-contrib/go-libravatar v0.0.0-20191008002943-06d1c002b251 h1:HTZl3CBk3ABNYtFI6TPLvJgGKFIhKT5CBk0sbOtkDKU= code.forgejo.org/forgejo-contrib/go-libravatar v0.0.0-20191008002943-06d1c002b251 h1:HTZl3CBk3ABNYtFI6TPLvJgGKFIhKT5CBk0sbOtkDKU=
code.forgejo.org/forgejo-contrib/go-libravatar v0.0.0-20191008002943-06d1c002b251/go.mod h1:PphB88CPbx601QrWPMZATeorACeVmQlyv3u+uUMbSaM= code.forgejo.org/forgejo-contrib/go-libravatar v0.0.0-20191008002943-06d1c002b251/go.mod h1:PphB88CPbx601QrWPMZATeorACeVmQlyv3u+uUMbSaM=
code.forgejo.org/forgejo/act v1.22.0 h1:NbUf0+vQ48+ddwe4zVkINqnxKYl/to+NUvW7iisPA60= code.forgejo.org/forgejo/act v1.23.1 h1:4LU7u3FE380DicHz1oZ4ohsWU9I527OHeslVHnr9eP4=
code.forgejo.org/forgejo/act v1.22.0/go.mod h1:+PcvJ9iv+NTFeJSh79ra9Jbk9l0vvyA9D9me5/dbxYM= code.forgejo.org/forgejo/act v1.23.1/go.mod h1:9zh6c69HHCT8HfMR8I38I5ikPebxumJc34IFKeiSrAE=
code.forgejo.org/forgejo/archiver/v3 v3.5.1 h1:UmmbA7D5550uf71SQjarmrn6yKwOGxtEjb3jaYYtmSE= code.forgejo.org/forgejo/archiver/v3 v3.5.1 h1:UmmbA7D5550uf71SQjarmrn6yKwOGxtEjb3jaYYtmSE=
code.forgejo.org/forgejo/archiver/v3 v3.5.1/go.mod h1:e3dqJ7H78uzsRSEACH1joayhuSyhnonssnDhppzS1L4= code.forgejo.org/forgejo/archiver/v3 v3.5.1/go.mod h1:e3dqJ7H78uzsRSEACH1joayhuSyhnonssnDhppzS1L4=
code.forgejo.org/forgejo/go-xsd-duration v0.0.0-20220703122237-02e73435a078 h1:RArF5AsF9LH4nEoJxqRxcP5r8hhRfWcId84G82YbqzA=
code.forgejo.org/forgejo/go-xsd-duration v0.0.0-20220703122237-02e73435a078/go.mod h1:g/V2Hjas6Z1UHUp4yIx6bATpNzJ7DYtD0FG3+xARWxs=
code.forgejo.org/forgejo/reply v1.0.2 h1:dMhQCHV6/O3L5CLWNTol+dNzDAuyCK88z4J/lCdgFuQ= code.forgejo.org/forgejo/reply v1.0.2 h1:dMhQCHV6/O3L5CLWNTol+dNzDAuyCK88z4J/lCdgFuQ=
code.forgejo.org/forgejo/reply v1.0.2/go.mod h1:RyZUfzQLc+fuLIGjTSQWDAJWPiL4WtKXB/FifT5fM7U= code.forgejo.org/forgejo/reply v1.0.2/go.mod h1:RyZUfzQLc+fuLIGjTSQWDAJWPiL4WtKXB/FifT5fM7U=
code.forgejo.org/forgejo/ssh v0.0.0-20241211213324-5fc306ca0616 h1:kEZL84+02jY9RxXM4zHBWZ3Fml0B09cmP1LGkDsCfIA= code.forgejo.org/forgejo/ssh v0.0.0-20241211213324-5fc306ca0616 h1:kEZL84+02jY9RxXM4zHBWZ3Fml0B09cmP1LGkDsCfIA=
@ -632,8 +634,8 @@ code.forgejo.org/go-chi/session v1.0.1 h1:RNkcJQZJBqlvJoIFXSth87b3kMFZLDBA18Vcit
code.forgejo.org/go-chi/session v1.0.1/go.mod h1:y69sjS984wc7k4xyu77yNE5HKeSlBoQW8VSGdsK7RAs= code.forgejo.org/go-chi/session v1.0.1/go.mod h1:y69sjS984wc7k4xyu77yNE5HKeSlBoQW8VSGdsK7RAs=
code.gitea.io/actions-proto-go v0.4.0 h1:OsPBPhodXuQnsspG1sQ4eRE1PeoZyofd7+i73zCwnsU= code.gitea.io/actions-proto-go v0.4.0 h1:OsPBPhodXuQnsspG1sQ4eRE1PeoZyofd7+i73zCwnsU=
code.gitea.io/actions-proto-go v0.4.0/go.mod h1:mn7Wkqz6JbnTOHQpot3yDeHx+O5C9EGhMEE+htvHBas= code.gitea.io/actions-proto-go v0.4.0/go.mod h1:mn7Wkqz6JbnTOHQpot3yDeHx+O5C9EGhMEE+htvHBas=
code.gitea.io/sdk/gitea v0.17.1 h1:3jCPOG2ojbl8AcfaUCRYLT5MUcBMFwS0OSK2mA5Zok8= code.gitea.io/sdk/gitea v0.20.0 h1:Zm/QDwwZK1awoM4AxdjeAQbxolzx2rIP8dDfmKu+KoU=
code.gitea.io/sdk/gitea v0.17.1/go.mod h1:aCnBqhHpoEWA180gMbaCtdX9Pl6BWBAuuP2miadoTNM= code.gitea.io/sdk/gitea v0.20.0/go.mod h1:faouBHC/zyx5wLgjmRKR62ydyvMzwWf3QnU0bH7Cw6U=
codeberg.org/gusted/mcaptcha v0.0.0-20220723083913-4f3072e1d570 h1:TXbikPqa7YRtfU9vS6QJBg77pUvbEb6StRdZO8t1bEY= codeberg.org/gusted/mcaptcha v0.0.0-20220723083913-4f3072e1d570 h1:TXbikPqa7YRtfU9vS6QJBg77pUvbEb6StRdZO8t1bEY=
codeberg.org/gusted/mcaptcha v0.0.0-20220723083913-4f3072e1d570/go.mod h1:IIAjsijsd8q1isWX8MACefDEgTQslQ4stk2AeeTt3kM= codeberg.org/gusted/mcaptcha v0.0.0-20220723083913-4f3072e1d570/go.mod h1:IIAjsijsd8q1isWX8MACefDEgTQslQ4stk2AeeTt3kM=
connectrpc.com/connect v1.17.0 h1:W0ZqMhtVzn9Zhn2yATuUokDLO5N+gIuBWMOnsQrfmZk= connectrpc.com/connect v1.17.0 h1:W0ZqMhtVzn9Zhn2yATuUokDLO5N+gIuBWMOnsQrfmZk=
@ -644,13 +646,13 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8=
git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078 h1:cliQ4HHsCo6xi2oWZYKWW4bly/Ory9FuTpFPRxj/mAg=
git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078/go.mod h1:g/V2Hjas6Z1UHUp4yIx6bATpNzJ7DYtD0FG3+xARWxs=
git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc=
gitea.com/lunny/levelqueue v0.4.2-0.20230414023320-3c0159fe0fe4 h1:IFT+hup2xejHqdhS7keYWioqfmxdnfblFDTGoOwcZ+o= gitea.com/lunny/levelqueue v0.4.2-0.20230414023320-3c0159fe0fe4 h1:IFT+hup2xejHqdhS7keYWioqfmxdnfblFDTGoOwcZ+o=
gitea.com/lunny/levelqueue v0.4.2-0.20230414023320-3c0159fe0fe4/go.mod h1:HBqmLbz56JWpfEGG0prskAV97ATNRoj5LDmPicD22hU= gitea.com/lunny/levelqueue v0.4.2-0.20230414023320-3c0159fe0fe4/go.mod h1:HBqmLbz56JWpfEGG0prskAV97ATNRoj5LDmPicD22hU=
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:lSA0F4e9A2NcQSqGqTOXqu2aRi/XEQxDCBwM8yJtE6s= gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:lSA0F4e9A2NcQSqGqTOXqu2aRi/XEQxDCBwM8yJtE6s=
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU= gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU=
github.com/42wim/httpsig v1.2.2 h1:ofAYoHUNs/MJOLqQ8hIxeyz2QxOz8qdSVvp3PX/oPgA=
github.com/42wim/httpsig v1.2.2/go.mod h1:P/UYo7ytNBFwc+dg35IubuAUIs8zj5zzFIgUCEl55WY=
github.com/42wim/sshsig v0.0.0-20211121163825-841cf5bbc121 h1:r3qt8PCHnfjOv9PN3H+XXKmDA1dfFMIN1AislhlA/ps= github.com/42wim/sshsig v0.0.0-20211121163825-841cf5bbc121 h1:r3qt8PCHnfjOv9PN3H+XXKmDA1dfFMIN1AislhlA/ps=
github.com/42wim/sshsig v0.0.0-20211121163825-841cf5bbc121/go.mod h1:Ock8XgA7pvULhIaHGAk/cDnRfNrF9Jey81nPcc403iU= github.com/42wim/sshsig v0.0.0-20211121163825-841cf5bbc121/go.mod h1:Ock8XgA7pvULhIaHGAk/cDnRfNrF9Jey81nPcc403iU=
github.com/6543/go-version v1.3.1 h1:HvOp+Telns7HWJ2Xo/05YXQSB2bE0WmVgbHqwMPZT4U= github.com/6543/go-version v1.3.1 h1:HvOp+Telns7HWJ2Xo/05YXQSB2bE0WmVgbHqwMPZT4U=
@ -667,17 +669,17 @@ github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ=
github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.0 h1:oVLqHXhnYtUwM89y9T1fXGaK9wTkXHgNp8/ZNMQzUxE= github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.0 h1:oVLqHXhnYtUwM89y9T1fXGaK9wTkXHgNp8/ZNMQzUxE=
github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.0/go.mod h1:dppbR7CwXD4pgtV9t3wD1812RaLDcBjtblcDF5f1vI0= github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.0/go.mod h1:dppbR7CwXD4pgtV9t3wD1812RaLDcBjtblcDF5f1vI0=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.2 h1:cZpsGsWTIFKymTA0je7IIvi1O7Es7apb9CF3EQlOcfE= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 h1:3c8yed4lgqTt+oTQ+JNMDo+F4xprBf+O/il4ZC0nRLw=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.2/go.mod h1:itPGVDKf9cC/ov4MdvJ2QZ0khw4bfoo9jzwTJlaxy2k= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0/go.mod h1:obipzmGjfSjam60XLwGfqUkJsfiheAl+TUjG+4yzyPM=
github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk=
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= github.com/ProtonMail/go-crypto v1.1.5 h1:eoAQfK2dwL+tFSFpr7TbOaPNUbPiJj4fLYwwGE1FQO4=
github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/ProtonMail/go-crypto v1.1.5/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
github.com/PuerkitoBio/goquery v1.10.0 h1:6fiXdLuUvYs2OJSvNRqlNPoBm6YABE226xrbavY5Wv4= github.com/PuerkitoBio/goquery v1.10.1 h1:Y8JGYUkXWTGRB6Ars3+j3kN0xg1YqqlwvdTV8WTFQcU=
github.com/PuerkitoBio/goquery v1.10.0/go.mod h1:TjZZl68Q3eGHNBA8CWaxAN7rOU1EbDz3CWuolcO5Yu4= github.com/PuerkitoBio/goquery v1.10.1/go.mod h1:IYiHrOMps66ag56LEH7QYDDupKXyo5A8qrjIx3ZtujY=
github.com/RoaringBitmap/roaring v1.9.3 h1:t4EbC5qQwnisr5PrP9nt0IRhRTb9gMUgQF4t4S2OByM= github.com/RoaringBitmap/roaring v1.9.3 h1:t4EbC5qQwnisr5PrP9nt0IRhRTb9gMUgQF4t4S2OByM=
github.com/RoaringBitmap/roaring v1.9.3/go.mod h1:6AXUsoIEzDTFFQCe1RbGA6uFONMhvejWj5rqITANK90= github.com/RoaringBitmap/roaring v1.9.3/go.mod h1:6AXUsoIEzDTFFQCe1RbGA6uFONMhvejWj5rqITANK90=
github.com/SaveTheRbtz/zstd-seekable-format-go/pkg v0.7.2 h1:cSXom2MoKJ9KPPw29RoZtHvUETY4F4n/kXl8m9btnQ0= github.com/SaveTheRbtz/zstd-seekable-format-go/pkg v0.7.2 h1:cSXom2MoKJ9KPPw29RoZtHvUETY4F4n/kXl8m9btnQ0=
@ -686,11 +688,11 @@ github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm
github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk=
github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM=
github.com/alecthomas/assert/v2 v2.7.0 h1:QtqSACNS3tF7oasA8CU6A6sXZSBDqnm7RfpLl9bZqbE= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
github.com/alecthomas/assert/v2 v2.7.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
github.com/alecthomas/chroma/v2 v2.2.0/go.mod h1:vf4zrexSH54oEjJ7EdB65tGNHmH3pGZmVkgTP5RHvAs= github.com/alecthomas/chroma/v2 v2.2.0/go.mod h1:vf4zrexSH54oEjJ7EdB65tGNHmH3pGZmVkgTP5RHvAs=
github.com/alecthomas/chroma/v2 v2.14.0 h1:R3+wzpnUArGcQz7fCETQBzO5n9IMNi13iIs46aU4V9E= github.com/alecthomas/chroma/v2 v2.15.0 h1:LxXTQHFoYrstG2nnV9y2X5O94sOBzf0CIUpSTbpxvMc=
github.com/alecthomas/chroma/v2 v2.14.0/go.mod h1:QolEbTfmUHIMVpBqxeDnNBj2uoeI4EbYP4i6n68SG4I= github.com/alecthomas/chroma/v2 v2.15.0/go.mod h1:gUhVLrPDXPtp/f+L1jo9xepo9gL4eLwRuGAunSZMkio=
github.com/alecthomas/repr v0.0.0-20220113201626-b1b626ac65ae/go.mod h1:2kn6fqh/zIyPLmm3ugklbEi5hg5wS435eygvNfaDQL8= github.com/alecthomas/repr v0.0.0-20220113201626-b1b626ac65ae/go.mod h1:2kn6fqh/zIyPLmm3ugklbEi5hg5wS435eygvNfaDQL8=
github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
@ -701,8 +703,8 @@ github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHG
github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY=
github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA= github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA=
github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA=
github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss= github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kktS1LM=
github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA=
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
@ -768,9 +770,8 @@ github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
github.com/buildkite/terminal-to-html/v3 v3.16.4 h1:QFYO8IGvRnp7tGgiQb8g9uFU8kY9wOzxsFFx17+yy6Q= github.com/buildkite/terminal-to-html/v3 v3.16.4 h1:QFYO8IGvRnp7tGgiQb8g9uFU8kY9wOzxsFFx17+yy6Q=
github.com/buildkite/terminal-to-html/v3 v3.16.4/go.mod h1:r/J7cC9c3EzBzP3/wDz0RJLPwv5PUAMp+KF2w+ntMc0= github.com/buildkite/terminal-to-html/v3 v3.16.4/go.mod h1:r/J7cC9c3EzBzP3/wDz0RJLPwv5PUAMp+KF2w+ntMc0=
github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/caddyserver/certmagic v0.21.7 h1:66KJioPFJwttL43KYSWk7ErSmE6LfaJgCQuhm8Sg6fg=
github.com/caddyserver/certmagic v0.21.4 h1:e7VobB8rffHv8ZZpSiZtEwnLDHUwLVYLWzWSa1FfKI0= github.com/caddyserver/certmagic v0.21.7/go.mod h1:LCPG3WLxcnjVKl/xpjzM0gqh0knrKKKiO5WVttX2eEI=
github.com/caddyserver/certmagic v0.21.4/go.mod h1:swUXjQ1T9ZtMv95qj7/InJvWLXURU85r+CfG0T+ZbDE=
github.com/caddyserver/zerossl v0.1.3 h1:onS+pxp3M8HnHpN5MMbOMyNjmTheJyWRaZYwn+YTAyA= github.com/caddyserver/zerossl v0.1.3 h1:onS+pxp3M8HnHpN5MMbOMyNjmTheJyWRaZYwn+YTAyA=
github.com/caddyserver/zerossl v0.1.3/go.mod h1:CxA0acn7oEGO6//4rtrRjYgEoa4MFw/XofZnrYwGqG4= github.com/caddyserver/zerossl v0.1.3/go.mod h1:CxA0acn7oEGO6//4rtrRjYgEoa4MFw/XofZnrYwGqG4=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
@ -796,7 +797,6 @@ github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObk
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
github.com/cloudflare/circl v1.3.8 h1:j+V8jJt09PoeMFIu2uh5JUyEaIHTXVOHslFoLNAKqwI= github.com/cloudflare/circl v1.3.8 h1:j+V8jJt09PoeMFIu2uh5JUyEaIHTXVOHslFoLNAKqwI=
github.com/cloudflare/circl v1.3.8/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU= github.com/cloudflare/circl v1.3.8/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
@ -817,8 +817,8 @@ github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78/go.mod h1:W+zGtBO5Y1Ig
github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc=
github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM=
github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
@ -837,8 +837,8 @@ github.com/djherbis/nio/v3 v3.0.1/go.mod h1:Ng4h80pbZFMla1yKzm61cF0tqqilXZYrogmW
github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo=
github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s= github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s=
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 h1:2tV76y6Q9BB+NEBasnqvs7e49aEBFI8ejC89PSnWH+4= github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 h1:2tV76y6Q9BB+NEBasnqvs7e49aEBFI8ejC89PSnWH+4=
@ -849,8 +849,8 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/editorconfig/editorconfig-core-go/v2 v2.6.2 h1:dKG8sc7n321deIVRcQtwlMNoBEra7j0qQ8RwxO8RN0w= github.com/editorconfig/editorconfig-core-go/v2 v2.6.2 h1:dKG8sc7n321deIVRcQtwlMNoBEra7j0qQ8RwxO8RN0w=
github.com/editorconfig/editorconfig-core-go/v2 v2.6.2/go.mod h1:7dvD3GCm7eBw53xZ/lsiq72LqobdMg3ITbMBxnmJmqY= github.com/editorconfig/editorconfig-core-go/v2 v2.6.2/go.mod h1:7dvD3GCm7eBw53xZ/lsiq72LqobdMg3ITbMBxnmJmqY=
github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= github.com/elazarl/goproxy v1.4.0 h1:4GyuSbFa+s26+3rmYNSuUVsx+HgPrV1bk1jXI0l9wjM=
github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/elazarl/goproxy v1.4.0/go.mod h1:X/5W/t+gzDyLfHW4DrMdpjqYjpXsURlBt9lpBDxZZZQ=
github.com/emersion/go-imap v1.2.1 h1:+s9ZjMEjOB8NzZMVTM3cCenz2JrQIGGo5j1df19WjTA= github.com/emersion/go-imap v1.2.1 h1:+s9ZjMEjOB8NzZMVTM3cCenz2JrQIGGo5j1df19WjTA=
github.com/emersion/go-imap v1.2.1/go.mod h1:Qlx1FSx2FTxjnjWpIlVNEuX+ylerZQNFE5NsmKFSejY= github.com/emersion/go-imap v1.2.1/go.mod h1:Qlx1FSx2FTxjnjWpIlVNEuX+ylerZQNFE5NsmKFSejY=
github.com/emersion/go-message v0.15.0/go.mod h1:wQUEfE+38+7EW8p8aZ96ptg6bAb1iwdgej19uXASlE4= github.com/emersion/go-message v0.15.0/go.mod h1:wQUEfE+38+7EW8p8aZ96ptg6bAb1iwdgej19uXASlE4=
@ -919,9 +919,8 @@ github.com/go-faster/city v1.0.1 h1:4WAxSZ3V2Ws4QRDrscLEDcibJY8uf41H6AhXDrNDcGw=
github.com/go-faster/city v1.0.1/go.mod h1:jKcUJId49qdW3L1qKHH/3wPeUstCVpVSXTM6vO3VcTw= github.com/go-faster/city v1.0.1/go.mod h1:jKcUJId49qdW3L1qKHH/3wPeUstCVpVSXTM6vO3VcTw=
github.com/go-faster/errors v0.7.1 h1:MkJTnDoEdi9pDabt1dpWf7AA8/BaSYZqibYyhZ20AYg= github.com/go-faster/errors v0.7.1 h1:MkJTnDoEdi9pDabt1dpWf7AA8/BaSYZqibYyhZ20AYg=
github.com/go-faster/errors v0.7.1/go.mod h1:5ySTjWFiphBs07IKuiL69nxdfd5+fzh1u7FPGZP2quo= github.com/go-faster/errors v0.7.1/go.mod h1:5ySTjWFiphBs07IKuiL69nxdfd5+fzh1u7FPGZP2quo=
github.com/go-fed/httpsig v1.1.0 h1:9M+hb0jkEICD8/cAiNqEB66R87tTINszBRTjwjQzWcI=
github.com/go-fed/httpsig v1.1.0/go.mod h1:RCMrTZvN1bJYtofsG4rd5NaO5obxQ5xBkdiS7xsT7bM= github.com/go-fed/httpsig v1.1.0/go.mod h1:RCMrTZvN1bJYtofsG4rd5NaO5obxQ5xBkdiS7xsT7bM=
github.com/go-fed/httpsig v1.1.1-0.20201223112313-55836744818e h1:oRq/fiirun5HqlEWMLIcDmLpIELlG4iGbd0s8iqgPi8=
github.com/go-fed/httpsig v1.1.1-0.20201223112313-55836744818e/go.mod h1:RCMrTZvN1bJYtofsG4rd5NaO5obxQ5xBkdiS7xsT7bM=
github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g=
github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks=
github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY=
@ -929,12 +928,12 @@ github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2H
github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY=
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UNbRM=
github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= github.com/go-git/go-git/v5 v5.13.2 h1:7O7xvsK7K+rZPKW6AQR1YyNhfywkv7B8/FsP3ki6Zv0=
github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= github.com/go-git/go-git/v5 v5.13.2/go.mod h1:hWdW5P4YZRjmpGHwRH2v3zkWcNl6HeXaXQEMGb3NJ9A=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
@ -975,6 +974,9 @@ github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJA
github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY=
github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/goccy/go-json v0.10.4 h1:JSwxQzIqKfmFX1swYPpUThQZp/Ka4wzJdK0LWVytLPM=
github.com/goccy/go-json v0.10.4/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f h1:3BSP1Tbs2djlpprl7wCLuiqMaUh5SJkkzI2gDs+FgLs= github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f h1:3BSP1Tbs2djlpprl7wCLuiqMaUh5SJkkzI2gDs+FgLs=
github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f/go.mod h1:Pcatq5tYkCW2Q6yrR2VRHlbHpZ/R4/7qyL1TCF7vl14= github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f/go.mod h1:Pcatq5tYkCW2Q6yrR2VRHlbHpZ/R4/7qyL1TCF7vl14=
github.com/gogs/go-gogs-client v0.0.0-20210131175652-1d7215cd8d85 h1:UjoPNDAQ5JPCjlxoJd6K8ALZqSDDhk2ymieAZOVaDg0= github.com/gogs/go-gogs-client v0.0.0-20210131175652-1d7215cd8d85 h1:UjoPNDAQ5JPCjlxoJd6K8ALZqSDDhk2ymieAZOVaDg0=
@ -1136,8 +1138,6 @@ github.com/gorilla/securecookie v1.1.2 h1:YCIWL56dvtr73r6715mJs5ZvhtnY73hBvEF8kX
github.com/gorilla/securecookie v1.1.2/go.mod h1:NfCASbcHqRSY+3a8tlWJwsQap2VX5pwzwo4h3eOamfo= github.com/gorilla/securecookie v1.1.2/go.mod h1:NfCASbcHqRSY+3a8tlWJwsQap2VX5pwzwo4h3eOamfo=
github.com/gorilla/sessions v1.4.0 h1:kpIYOp/oi6MG/p5PgxApU8srsSw9tuFbt46Lt7auzqQ= github.com/gorilla/sessions v1.4.0 h1:kpIYOp/oi6MG/p5PgxApU8srsSw9tuFbt46Lt7auzqQ=
github.com/gorilla/sessions v1.4.0/go.mod h1:FLWm50oby91+hl7p/wRxDth9bWSuk0qVL2emc7lT5ik= github.com/gorilla/sessions v1.4.0/go.mod h1:FLWm50oby91+hl7p/wRxDth9bWSuk0qVL2emc7lT5ik=
github.com/grafana/go-json v0.0.0-20241210211703-a119ee5a0a3b h1:3LHDTH25Xtrac5UJfFlFL/BsykD7VLFg7xk4vtkjtk8=
github.com/grafana/go-json v0.0.0-20241210211703-a119ee5a0a3b/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w=
@ -1206,8 +1206,8 @@ github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM= github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY=
github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8=
github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=
github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
@ -1253,8 +1253,8 @@ github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBW
github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
github.com/meilisearch/meilisearch-go v0.29.0 h1:HZ9NEKN59USINQ/DXJge/aaXq8IrsKbXGTdAoBaaDz4= github.com/meilisearch/meilisearch-go v0.29.0 h1:HZ9NEKN59USINQ/DXJge/aaXq8IrsKbXGTdAoBaaDz4=
github.com/meilisearch/meilisearch-go v0.29.0/go.mod h1:2cRCAn4ddySUsFfNDLVPod/plRibQsJkXF/4gLhxbOk= github.com/meilisearch/meilisearch-go v0.29.0/go.mod h1:2cRCAn4ddySUsFfNDLVPod/plRibQsJkXF/4gLhxbOk=
github.com/mholt/acmez/v2 v2.0.3 h1:CgDBlEwg3QBp6s45tPQmFIBrkRIkBT4rW4orMM6p4sw= github.com/mholt/acmez/v3 v3.0.1 h1:4PcjKjaySlgXK857aTfDuRbmnM5gb3Ruz3tvoSJAUp8=
github.com/mholt/acmez/v2 v2.0.3/go.mod h1:pQ1ysaDeGrIMvJ9dfJMk5kJNkn7L2sb3UhyrX6Q91cw= github.com/mholt/acmez/v3 v3.0.1/go.mod h1:L1wOU06KKvq7tswuMDwKdcHeKpFFgkppZy/y0DFxagQ=
github.com/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwXFM08ygZfk= github.com/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwXFM08ygZfk=
github.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA= github.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA=
github.com/miekg/dns v1.1.62 h1:cN8OuEF1/x5Rq6Np+h1epln8OiyPWV+lROx9LxcGgIQ= github.com/miekg/dns v1.1.62 h1:cN8OuEF1/x5Rq6Np+h1epln8OiyPWV+lROx9LxcGgIQ=
@ -1263,8 +1263,8 @@ github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcs
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE=
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34= github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM= github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
github.com/minio/minio-go/v7 v7.0.78 h1:LqW2zy52fxnI4gg8C2oZviTaKHcBV36scS+RzJnxUFs= github.com/minio/minio-go/v7 v7.0.84 h1:D1HVmAF8JF8Bpi6IU4V9vIEj+8pc+xU88EWMs2yed0E=
github.com/minio/minio-go/v7 v7.0.78/go.mod h1:84gmIilaX4zcvAWWzJ5Z1WI5axN+hAbM5w25xf8xvC0= github.com/minio/minio-go/v7 v7.0.84/go.mod h1:57YXpvc5l3rjPdhqNrDsvVlY0qPI6UTk1bflAe+9doY=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@ -1300,8 +1300,8 @@ github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug=
@ -1316,8 +1316,8 @@ github.com/pierrec/lz4/v4 v4.1.2/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuR
github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ=
github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4=
github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@ -1373,8 +1373,8 @@ github.com/sassoftware/go-rpmutils v0.4.0/go.mod h1:3goNWi7PGAT3/dlql2lv3+MSN5jN
github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys=
github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs=
github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs= github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs=
github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c h1:aqg5Vm5dwtvL+YgDpBcK1ITf3o96N/K7/wsRXQnUTEs= github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c h1:aqg5Vm5dwtvL+YgDpBcK1ITf3o96N/K7/wsRXQnUTEs=
@ -1382,8 +1382,8 @@ github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c/go.mod h1:owqhoLW1
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY=
github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=
github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
@ -1418,8 +1418,6 @@ github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXV
github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY=
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
github.com/xanzy/go-gitlab v0.109.0 h1:RcRme5w8VpLXTSTTMZdVoQWY37qTJWg+gwdQl4aAttE=
github.com/xanzy/go-gitlab v0.109.0/go.mod h1:wKNKh3GkYDMOsGmnfuX+ITCmDuSDWFO0G+C4AygL9RY=
github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo=
@ -1449,6 +1447,8 @@ github.com/zeebo/blake3 v0.2.4/go.mod h1:7eeQ6d2iXWRGF6npfaxl2CU+xy2Fjo2gxeyZGCR
github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo= github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo=
github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4= github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4=
github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA=
gitlab.com/gitlab-org/api/client-go v0.119.0 h1:YBZyx9XUTtEDBBYtY36cZWz6JmT7om/8HPSk37IS95g=
gitlab.com/gitlab-org/api/client-go v0.119.0/go.mod h1:ygHmS3AU3TpvK+AC6DYO1QuAxLlv6yxYK+/Votr/WFQ=
go.etcd.io/bbolt v1.3.9 h1:8x7aARPEXiXbHmtUwAIv7eV2fQFHrLLavdiJ3uzJXoI= go.etcd.io/bbolt v1.3.9 h1:8x7aARPEXiXbHmtUwAIv7eV2fQFHrLLavdiJ3uzJXoI=
go.etcd.io/bbolt v1.3.9/go.mod h1:zaO32+Ti0PK1ivdPtgMESzuzL2VPoIG1PCQNvOdo/dE= go.etcd.io/bbolt v1.3.9/go.mod h1:zaO32+Ti0PK1ivdPtgMESzuzL2VPoIG1PCQNvOdo/dE=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
@ -1460,22 +1460,22 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
go.opentelemetry.io/contrib/detectors/gcp v1.31.0 h1:G1JQOreVrfhRkner+l4mrGxmfqYCAuy76asTDAo0xsA= go.opentelemetry.io/contrib/detectors/gcp v1.32.0 h1:P78qWqkLSShicHmAzfECaTgvslqHxblNE9j62Ws1NK8=
go.opentelemetry.io/contrib/detectors/gcp v1.31.0/go.mod h1:tzQL6E1l+iV44YFTkcAeNQqzXUiekSYP9jjJjXwEd00= go.opentelemetry.io/contrib/detectors/gcp v1.32.0/go.mod h1:TVqo0Sda4Cv8gCIixd7LuLwW4EylumVWfhjZJjDD4DU=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 h1:r6I7RJCN86bpD/FQwedZ0vSixDpwuWREjW9oRMsmqDc= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 h1:r6I7RJCN86bpD/FQwedZ0vSixDpwuWREjW9oRMsmqDc=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8=
go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY= go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U=
go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE= go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg=
go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE= go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M=
go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY= go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8=
go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk= go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4=
go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0= go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU=
go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU=
go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ=
go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys= go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM=
go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A= go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=
go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=
@ -1490,6 +1490,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
go.uber.org/zap/exp v0.3.0 h1:6JYzdifzYkGmTdRR59oYH+Ng7k49H9qVpWwNSsGJj3U=
go.uber.org/zap/exp v0.3.0/go.mod h1:5I384qq7XGxYyByIhHm6jg5CHkGY0nsTfbDLgDDlgJQ=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
@ -1501,12 +1503,12 @@ golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@ -1522,6 +1524,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
@ -1566,6 +1570,9 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91
golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4=
golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@ -1629,8 +1636,12 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@ -1660,8 +1671,8 @@ golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec
golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I=
golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw=
golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4=
golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE=
golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@ -1678,6 +1689,9 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@ -1768,9 +1782,12 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
@ -1781,9 +1798,11 @@ golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg=
golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@ -1802,6 +1821,7 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@ -1810,8 +1830,8 @@ golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxb
golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg=
golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@ -1874,6 +1894,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc
golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8= golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8=
golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw= golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@ -2092,10 +2114,10 @@ google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOl
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU=
google.golang.org/genproto v0.0.0-20241015192408-796eee8c2d53 h1:Df6WuGvthPzc+JiQ/G+m+sNX24kc0aTBqoDN/0yyykE= google.golang.org/genproto v0.0.0-20241015192408-796eee8c2d53 h1:Df6WuGvthPzc+JiQ/G+m+sNX24kc0aTBqoDN/0yyykE=
google.golang.org/genproto v0.0.0-20241015192408-796eee8c2d53/go.mod h1:fheguH3Am2dGp1LfXkrvwqC/KlFq8F0nLq3LryOMrrE= google.golang.org/genproto v0.0.0-20241015192408-796eee8c2d53/go.mod h1:fheguH3Am2dGp1LfXkrvwqC/KlFq8F0nLq3LryOMrrE=
google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53 h1:fVoAXEKA4+yufmbdVYv+SE73+cPZbbbe8paLsHfkK+U= google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a h1:OAiGFfOiA0v9MRYsSidp3ubZaBnteRUyn3xB2ZQ5G/E=
google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53/go.mod h1:riSXTwQ4+nqmPGtobMFyW5FqVAmIs0St6VPp4Ug7CE4= google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a/go.mod h1:jehYqy3+AhJU9ve55aNOaSml7wUXjF9x6z2LcCfpAhY=
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 h1:X58yt85/IXCx0Y3ZwN6sEIKZzQtDEYaBWrDvErdXrRE= google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o=
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
@ -2137,8 +2159,8 @@ google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5v
google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw=
google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g=
google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s=
google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU= google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ=
google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
@ -2157,8 +2179,8 @@ google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= google.golang.org/protobuf v1.36.3 h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU=
google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk=
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

View file

@ -10,6 +10,7 @@ import (
"time" "time"
"code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/modules/container"
"code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
@ -71,6 +72,15 @@ func (job *ActionRunJob) LoadAttributes(ctx context.Context) error {
return job.Run.LoadAttributes(ctx) return job.Run.LoadAttributes(ctx)
} }
func (job *ActionRunJob) ItRunsOn(labels []string) bool {
if len(labels) == 0 || len(job.RunsOn) == 0 {
return false
}
labelSet := make(container.Set[string])
labelSet.AddMultiple(labels...)
return labelSet.IsSubset(job.RunsOn)
}
func GetRunJobByID(ctx context.Context, id int64) (*ActionRunJob, error) { func GetRunJobByID(ctx context.Context, id int64) (*ActionRunJob, error) {
var job ActionRunJob var job ActionRunJob
has, err := db.GetEngine(ctx).Where("id=?", id).Get(&job) has, err := db.GetEngine(ctx).Where("id=?", id).Get(&job)

View file

@ -0,0 +1,29 @@
// SPDX-License-Identifier: MIT
package actions
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestActionRunJob_ItRunsOn(t *testing.T) {
actionJob := ActionRunJob{RunsOn: []string{"ubuntu"}}
agentLabels := []string{"ubuntu", "node-20"}
assert.True(t, actionJob.ItRunsOn(agentLabels))
assert.False(t, actionJob.ItRunsOn([]string{}))
actionJob.RunsOn = append(actionJob.RunsOn, "node-20")
assert.True(t, actionJob.ItRunsOn(agentLabels))
agentLabels = []string{"ubuntu"}
assert.False(t, actionJob.ItRunsOn(agentLabels))
actionJob.RunsOn = []string{}
assert.False(t, actionJob.ItRunsOn(agentLabels))
}

View file

@ -12,7 +12,6 @@ import (
auth_model "code.gitea.io/gitea/models/auth" auth_model "code.gitea.io/gitea/models/auth"
"code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/models/unit" "code.gitea.io/gitea/models/unit"
"code.gitea.io/gitea/modules/container"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/modules/timeutil"
@ -245,7 +244,7 @@ func CreateTaskForRunner(ctx context.Context, runner *ActionRunner) (*ActionTask
var job *ActionRunJob var job *ActionRunJob
log.Trace("runner labels: %v", runner.AgentLabels) log.Trace("runner labels: %v", runner.AgentLabels)
for _, v := range jobs { for _, v := range jobs {
if isSubset(runner.AgentLabels, v.RunsOn) { if v.ItRunsOn(runner.AgentLabels) {
job = v job = v
break break
} }
@ -482,20 +481,6 @@ func FindOldTasksToExpire(ctx context.Context, olderThan timeutil.TimeStamp, lim
Find(&tasks) Find(&tasks)
} }
func isSubset(set, subset []string) bool {
m := make(container.Set[string], len(set))
for _, v := range set {
m.Add(v)
}
for _, v := range subset {
if !m.Contains(v) {
return false
}
}
return true
}
func convertTimestamp(timestamp *timestamppb.Timestamp) timeutil.TimeStamp { func convertTimestamp(timestamp *timestamppb.Timestamp) timeutil.TimeStamp {
if timestamp.GetSeconds() == 0 && timestamp.GetNanos() == 0 { if timestamp.GetSeconds() == 0 && timestamp.GetNanos() == 0 {
return timeutil.TimeStamp(0) return timeutil.TimeStamp(0)

View file

@ -50,7 +50,7 @@ type FindTaskOptions struct {
RepoID int64 RepoID int64
OwnerID int64 OwnerID int64
CommitSHA string CommitSHA string
Status Status Status []Status
UpdatedBefore timeutil.TimeStamp UpdatedBefore timeutil.TimeStamp
StartedBefore timeutil.TimeStamp StartedBefore timeutil.TimeStamp
RunnerID int64 RunnerID int64
@ -67,8 +67,8 @@ func (opts FindTaskOptions) ToConds() builder.Cond {
if opts.CommitSHA != "" { if opts.CommitSHA != "" {
cond = cond.And(builder.Eq{"commit_sha": opts.CommitSHA}) cond = cond.And(builder.Eq{"commit_sha": opts.CommitSHA})
} }
if opts.Status > StatusUnknown { if opts.Status != nil {
cond = cond.And(builder.Eq{"status": opts.Status}) cond = cond.And(builder.In("status", opts.Status))
} }
if opts.UpdatedBefore > 0 { if opts.UpdatedBefore > 0 {
cond = cond.And(builder.Lt{"updated": opts.UpdatedBefore}) cond = cond.And(builder.Lt{"updated": opts.UpdatedBefore})

View file

@ -52,10 +52,10 @@ type WebAuthnCredential struct {
AAGUID []byte AAGUID []byte
SignCount uint32 `xorm:"BIGINT"` SignCount uint32 `xorm:"BIGINT"`
CloneWarning bool CloneWarning bool
BackupEligible bool `XORM:"NOT NULL DEFAULT false"` BackupEligible bool `xorm:"NOT NULL DEFAULT false"`
BackupState bool `XORM:"NOT NULL DEFAULT false"` BackupState bool `xorm:"NOT NULL DEFAULT false"`
// If legacy is set to true, backup_eligible and backup_state isn't set. // If legacy is set to true, backup_eligible and backup_state isn't set.
Legacy bool `XORM:"NOT NULL DEFAULT true"` Legacy bool `xorm:"NOT NULL DEFAULT true"`
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"` CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"` UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"`
} }

View file

@ -11,6 +11,7 @@ import (
"fmt" "fmt"
"io" "io"
"reflect" "reflect"
"runtime/trace"
"strings" "strings"
"time" "time"
@ -163,6 +164,8 @@ func InitEngine(ctx context.Context) error {
Logger: errorLogger, Logger: errorLogger,
}) })
xormEngine.AddHook(&TracingHook{})
SetDefaultEngine(ctx, xormEngine) SetDefaultEngine(ctx, xormEngine)
return nil return nil
} }
@ -318,6 +321,25 @@ func SetLogSQL(ctx context.Context, on bool) {
} }
} }
type TracingHook struct{}
var _ contexts.Hook = &TracingHook{}
type sqlTask struct{}
func (TracingHook) BeforeProcess(c *contexts.ContextHook) (context.Context, error) {
ctx, task := trace.NewTask(c.Ctx, "sql")
ctx = context.WithValue(ctx, sqlTask{}, task)
trace.Log(ctx, "query", c.SQL)
trace.Logf(ctx, "args", "%v", c.Args)
return ctx, nil
}
func (TracingHook) AfterProcess(c *contexts.ContextHook) error {
c.Ctx.Value(sqlTask{}).(*trace.Task).End()
return nil
}
type SlowQueryHook struct { type SlowQueryHook struct {
Treshold time.Duration Treshold time.Duration
Logger log.Logger Logger log.Logger

View file

@ -83,3 +83,48 @@
status: 1 status: 1
started: 1683636528 started: 1683636528
stopped: 1683636626 stopped: 1683636626
-
id: 393
run_id: 891
repo_id: 1
owner_id: 1
commit_sha: 985f0301dba5e7b34be866819cd15ad3d8f508ee
is_fork_pull_request: 0
name: job_2
attempt: 1
job_id: job_2
task_id: 47
status: 5
runs_on: '["ubuntu-latest"]'
started: 1683636528
stopped: 1683636626
-
id: 394
run_id: 891
repo_id: 1
owner_id: 2
commit_sha: 985f0301dba5e7b34be866819cd15ad3d8f508ee
is_fork_pull_request: 0
name: job_2
attempt: 1
job_id: job_2
task_id: 47
status: 5
runs_on: '["debian-latest"]'
started: 1683636528
stopped: 1683636626
-
id: 395
run_id: 891
repo_id: 1
owner_id: 3
commit_sha: 985f0301dba5e7b34be866819cd15ad3d8f508ee
is_fork_pull_request: 0
name: job_2
attempt: 1
job_id: job_2
task_id: 47
status: 5
runs_on: '["fedora"]'
started: 1683636528
stopped: 1683636626

View file

@ -96,3 +96,14 @@
num_issues: 0 num_issues: 0
num_closed_issues: 0 num_closed_issues: 0
archived_unix: 0 archived_unix: 0
-
id: 10
repo_id: 3
org_id: 0
name: repo3label1
color: '#112233'
exclusive: false
num_issues: 0
num_closed_issues: 0
archived_unix: 0

View file

@ -2,3 +2,4 @@
id: 1 id: 1
lower_name: olduser1 lower_name: olduser1
redirect_user_id: 1 redirect_user_id: 1
created_unix: 1730000000

View file

@ -88,6 +88,10 @@ var migrations = []*Migration{
NewMigration("Add `purpose` column to `forgejo_auth_token` table", AddPurposeToForgejoAuthToken), NewMigration("Add `purpose` column to `forgejo_auth_token` table", AddPurposeToForgejoAuthToken),
// v25 -> v26 // v25 -> v26
NewMigration("Migrate `secret` column to store keying material", MigrateTwoFactorToKeying), NewMigration("Migrate `secret` column to store keying material", MigrateTwoFactorToKeying),
// v26 -> v27
NewMigration("Add `hash_blake2b` column to `package_blob` table", AddHashBlake2bToPackageBlob),
// v27 -> v28
NewMigration("Add `created_unix` column to `user_redirect` table", AddCreatedUnixToRedirect),
} }
// GetCurrentDBVersion returns the current Forgejo database version. // GetCurrentDBVersion returns the current Forgejo database version.

View file

@ -0,0 +1,14 @@
// Copyright 2024 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package forgejo_migrations //nolint:revive
import "xorm.io/xorm"
func AddHashBlake2bToPackageBlob(x *xorm.Engine) error {
type PackageBlob struct {
ID int64 `xorm:"pk autoincr"`
HashBlake2b string
}
return x.Sync(&PackageBlob{})
}

View file

@ -0,0 +1,18 @@
// Copyright 2024 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: GPL-3.0-or-later
package forgejo_migrations //nolint:revive
import (
"code.gitea.io/gitea/modules/timeutil"
"xorm.io/xorm"
)
func AddCreatedUnixToRedirect(x *xorm.Engine) error {
type UserRedirect struct {
ID int64 `xorm:"pk autoincr"`
CreatedUnix timeutil.TimeStamp `xorm:"created NOT NULL DEFAULT 0"`
}
return x.Sync(new(UserRedirect))
}

View file

@ -194,6 +194,20 @@ func (t CommentType) HasMailReplySupport() bool {
return false return false
} }
func (t CommentType) CountedAsConversation() bool {
for _, ct := range ConversationCountedCommentType() {
if t == ct {
return true
}
}
return false
}
// ConversationCountedCommentType returns the comment types that are counted as a conversation
func ConversationCountedCommentType() []CommentType {
return []CommentType{CommentTypeComment, CommentTypeReview}
}
// RoleInRepo presents the user's participation in the repo // RoleInRepo presents the user's participation in the repo
type RoleInRepo string type RoleInRepo string
@ -887,7 +901,7 @@ func updateCommentInfos(ctx context.Context, opts *CreateCommentOptions, comment
} }
fallthrough fallthrough
case CommentTypeComment: case CommentTypeComment:
if _, err = db.Exec(ctx, "UPDATE `issue` SET num_comments=num_comments+1 WHERE id=?", opts.Issue.ID); err != nil { if err := UpdateIssueNumComments(ctx, opts.Issue.ID); err != nil {
return err return err
} }
fallthrough fallthrough
@ -1182,8 +1196,8 @@ func DeleteComment(ctx context.Context, comment *Comment) error {
return err return err
} }
if comment.Type == CommentTypeComment { if comment.Type.CountedAsConversation() {
if _, err := e.ID(comment.IssueID).Decr("num_comments").Update(new(Issue)); err != nil { if err := UpdateIssueNumComments(ctx, comment.IssueID); err != nil {
return err return err
} }
} }
@ -1300,6 +1314,21 @@ func (c *Comment) HasOriginalAuthor() bool {
return c.OriginalAuthor != "" && c.OriginalAuthorID != 0 return c.OriginalAuthor != "" && c.OriginalAuthorID != 0
} }
func UpdateIssueNumCommentsBuilder(issueID int64) *builder.Builder {
subQuery := builder.Select("COUNT(*)").From("`comment`").Where(
builder.Eq{"issue_id": issueID}.And(
builder.In("`type`", ConversationCountedCommentType()),
))
return builder.Update(builder.Eq{"num_comments": subQuery}).
From("`issue`").Where(builder.Eq{"id": issueID})
}
func UpdateIssueNumComments(ctx context.Context, issueID int64) error {
_, err := db.GetEngine(ctx).Exec(UpdateIssueNumCommentsBuilder(issueID))
return err
}
// InsertIssueComments inserts many comments of issues. // InsertIssueComments inserts many comments of issues.
func InsertIssueComments(ctx context.Context, comments []*Comment) error { func InsertIssueComments(ctx context.Context, comments []*Comment) error {
if len(comments) == 0 { if len(comments) == 0 {
@ -1332,8 +1361,7 @@ func InsertIssueComments(ctx context.Context, comments []*Comment) error {
} }
for _, issueID := range issueIDs { for _, issueID := range issueIDs {
if _, err := db.Exec(ctx, "UPDATE issue set num_comments = (SELECT count(*) FROM comment WHERE issue_id = ? AND `type`=?) WHERE id = ?", if err := UpdateIssueNumComments(ctx, issueID); err != nil {
issueID, CommentTypeComment, issueID); err != nil {
return err return err
} }
} }

View file

@ -125,3 +125,12 @@ func TestUpdateCommentsMigrationsByType(t *testing.T) {
assert.Empty(t, comment.OriginalAuthorID) assert.Empty(t, comment.OriginalAuthorID)
assert.EqualValues(t, 513, comment.PosterID) assert.EqualValues(t, 513, comment.PosterID)
} }
func Test_UpdateIssueNumComments(t *testing.T) {
require.NoError(t, unittest.PrepareTestDatabase())
issue2 := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 2})
require.NoError(t, issues_model.UpdateIssueNumComments(db.DefaultContext, issue2.ID))
issue2 = unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 2})
assert.EqualValues(t, 1, issue2.NumComments)
}

View file

@ -268,6 +268,9 @@ func (issue *Issue) loadCommentsByType(ctx context.Context, tp CommentType) (err
IssueID: issue.ID, IssueID: issue.ID,
Type: tp, Type: tp,
}) })
for _, comment := range issue.Comments {
comment.Issue = issue
}
return err return err
} }
@ -416,20 +419,6 @@ func (issue *Issue) SummaryCardURL() string {
return fmt.Sprintf("%s/summary-card", issue.HTMLURL()) return fmt.Sprintf("%s/summary-card", issue.HTMLURL())
} }
func (issue *Issue) SummaryCardSize() (int, int) {
return 1200, 600
}
func (issue *Issue) SummaryCardWidth() int {
width, _ := issue.SummaryCardSize()
return width
}
func (issue *Issue) SummaryCardHeight() int {
_, height := issue.SummaryCardSize()
return height
}
// Link returns the issue's relative URL. // Link returns the issue's relative URL.
func (issue *Issue) Link() string { func (issue *Issue) Link() string {
var path string var path string

View file

@ -353,6 +353,17 @@ func GetLabelIDsInRepoByNames(ctx context.Context, repoID int64, labelNames []st
Find(&labelIDs) Find(&labelIDs)
} }
// GetLabelIDsInOrgByNames returns a list of labelIDs by names in a given org.
func GetLabelIDsInOrgByNames(ctx context.Context, orgID int64, labelNames []string) ([]int64, error) {
labelIDs := make([]int64, 0, len(labelNames))
return labelIDs, db.GetEngine(ctx).Table("label").
Where("org_id = ?", orgID).
In("name", labelNames).
Asc("name").
Cols("id").
Find(&labelIDs)
}
// BuildLabelNamesIssueIDsCondition returns a builder where get issue ids match label names // BuildLabelNamesIssueIDsCondition returns a builder where get issue ids match label names
func BuildLabelNamesIssueIDsCondition(labelNames []string) *builder.Builder { func BuildLabelNamesIssueIDsCondition(labelNames []string) *builder.Builder {
return builder.Select("issue_label.issue_id"). return builder.Select("issue_label.issue_id").

View file

@ -614,6 +614,10 @@ func InsertReviews(ctx context.Context, reviews []*Review) error {
return err return err
} }
} }
if err := UpdateIssueNumComments(ctx, review.IssueID); err != nil {
return err
}
} }
return committer.Commit() return committer.Commit()

View file

@ -1,5 +1,5 @@
// Copyright 2024 The Forgejo Authors. // Copyright 2025 The Forgejo Authors.
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: GPL-3.0-or-later
package v1_23 //nolint package v1_23 //nolint
@ -7,26 +7,53 @@ import (
"code.gitea.io/gitea/models/migrations/base" "code.gitea.io/gitea/models/migrations/base"
"xorm.io/xorm" "xorm.io/xorm"
"xorm.io/xorm/schemas"
) )
func GiteaLastDrop(x *xorm.Engine) error { func GiteaLastDrop(x *xorm.Engine) error {
tables, err := x.DBMetas()
if err != nil {
return err
}
sess := x.NewSession() sess := x.NewSession()
defer sess.Close() defer sess.Close()
if err := base.DropTableColumns(sess, "badge", "slug"); err != nil { for _, drop := range []struct {
return err table string
} column string
if err := base.DropTableColumns(sess, "oauth2_application", "skip_secondary_authorization"); err != nil { }{
return err {"badge", "slug"},
} {"oauth2_application", "skip_secondary_authorization"},
if err := base.DropTableColumns(sess, "repository", "default_wiki_branch"); err != nil { {"repository", "default_wiki_branch"},
return err {"repo_unit", "everyone_access_mode"},
} {"protected_branch", "can_force_push"},
// the migration v297.go that adds everyone_access_mode exists in Gitea >= v1.22 and the column must be dropped {"protected_branch", "enable_force_push_allowlist"},
// but it does not exist in Forgejo and a failure to drop the column can be ignored {"protected_branch", "force_push_allowlist_user_i_ds"},
base.DropTableColumns(sess, "repo_unit", "everyone_access_mode") {"protected_branch", "force_push_allowlist_team_i_ds"},
if err := base.DropTableColumns(sess, "protected_branch", "can_force_push", "enable_force_push_allowlist", "force_push_allowlist_user_i_ds", "force_push_allowlist_team_i_ds", "force_push_allowlist_deploy_keys"); err != nil { {"protected_branch", "force_push_allowlist_deploy_keys"},
return err } {
var table *schemas.Table
found := false
for _, table = range tables {
if table.Name == drop.table {
found = true
break
}
}
if !found {
continue
}
if table.GetColumn(drop.column) == nil {
continue
}
if err := base.DropTableColumns(sess, drop.table, drop.column); err != nil {
return err
}
} }
return sess.Commit() return sess.Commit()

View file

@ -0,0 +1,41 @@
// Copyright 2025 The Forgejo Authors.
// SPDX-License-Identifier: GPL-3.0-or-later
package v1_23 //nolint
import (
"testing"
migration_tests "code.gitea.io/gitea/models/migrations/test"
"github.com/stretchr/testify/require"
"xorm.io/xorm/schemas"
)
func Test_GiteaLastDrop(t *testing.T) {
type Badge struct {
ID int64 `xorm:"pk autoincr"`
Slug string
}
x, deferable := migration_tests.PrepareTestEnv(t, 0, new(Badge))
defer deferable()
if x == nil || t.Failed() {
return
}
getColumn := func() *schemas.Column {
tables, err := x.DBMetas()
require.NoError(t, err)
require.Len(t, tables, 1)
table := tables[0]
require.Equal(t, "badge", table.Name)
return table.GetColumn("slug")
}
require.NotNil(t, getColumn(), "slug column exists")
require.NoError(t, GiteaLastDrop(x))
require.Nil(t, getColumn(), "slug column was deleted")
// idempotent
require.NoError(t, GiteaLastDrop(x))
}

View file

@ -0,0 +1,29 @@
// Copyright 2024 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package alt
import (
"context"
packages_model "code.gitea.io/gitea/models/packages"
rpm_module "code.gitea.io/gitea/modules/packages/rpm"
)
type PackageSearchOptions struct {
OwnerID int64
GroupID int64
Architecture string
}
// GetGroups gets all available groups
func GetGroups(ctx context.Context, ownerID int64) ([]string, error) {
return packages_model.GetDistinctPropertyValues(
ctx,
packages_model.TypeAlt,
ownerID,
packages_model.PropertyTypeFile,
rpm_module.PropertyGroup,
nil,
)
}

View file

@ -187,6 +187,8 @@ func GetPackageDescriptor(ctx context.Context, pv *PackageVersion) (*PackageDesc
metadata = &pypi.Metadata{} metadata = &pypi.Metadata{}
case TypeRpm: case TypeRpm:
metadata = &rpm.VersionMetadata{} metadata = &rpm.VersionMetadata{}
case TypeAlt:
metadata = &rpm.VersionMetadata{}
case TypeRubyGems: case TypeRubyGems:
metadata = &rubygems.Metadata{} metadata = &rubygems.Metadata{}
case TypeSwift: case TypeSwift:

View file

@ -51,6 +51,7 @@ const (
TypePub Type = "pub" TypePub Type = "pub"
TypePyPI Type = "pypi" TypePyPI Type = "pypi"
TypeRpm Type = "rpm" TypeRpm Type = "rpm"
TypeAlt Type = "alt"
TypeRubyGems Type = "rubygems" TypeRubyGems Type = "rubygems"
TypeSwift Type = "swift" TypeSwift Type = "swift"
TypeVagrant Type = "vagrant" TypeVagrant Type = "vagrant"
@ -76,6 +77,7 @@ var TypeList = []Type{
TypePub, TypePub,
TypePyPI, TypePyPI,
TypeRpm, TypeRpm,
TypeAlt,
TypeRubyGems, TypeRubyGems,
TypeSwift, TypeSwift,
TypeVagrant, TypeVagrant,
@ -122,6 +124,8 @@ func (pt Type) Name() string {
return "PyPI" return "PyPI"
case TypeRpm: case TypeRpm:
return "RPM" return "RPM"
case TypeAlt:
return "Alt"
case TypeRubyGems: case TypeRubyGems:
return "RubyGems" return "RubyGems"
case TypeSwift: case TypeSwift:
@ -173,6 +177,8 @@ func (pt Type) SVGName() string {
return "gitea-python" return "gitea-python"
case TypeRpm: case TypeRpm:
return "gitea-rpm" return "gitea-rpm"
case TypeAlt:
return "gitea-alt"
case TypeRubyGems: case TypeRubyGems:
return "gitea-rubygems" return "gitea-rubygems"
case TypeSwift: case TypeSwift:

View file

@ -34,6 +34,7 @@ type PackageBlob struct {
HashSHA1 string `xorm:"hash_sha1 char(40) UNIQUE(sha1) INDEX NOT NULL"` HashSHA1 string `xorm:"hash_sha1 char(40) UNIQUE(sha1) INDEX NOT NULL"`
HashSHA256 string `xorm:"hash_sha256 char(64) UNIQUE(sha256) INDEX NOT NULL"` HashSHA256 string `xorm:"hash_sha256 char(64) UNIQUE(sha256) INDEX NOT NULL"`
HashSHA512 string `xorm:"hash_sha512 char(128) UNIQUE(sha512) INDEX NOT NULL"` HashSHA512 string `xorm:"hash_sha512 char(128) UNIQUE(sha512) INDEX NOT NULL"`
HashBlake2b string `xorm:"hash_blake2b char(128) UNIQUE(blake2b) INDEX"`
CreatedUnix timeutil.TimeStamp `xorm:"created INDEX NOT NULL"` CreatedUnix timeutil.TimeStamp `xorm:"created INDEX NOT NULL"`
} }
@ -44,11 +45,12 @@ func GetOrInsertBlob(ctx context.Context, pb *PackageBlob) (*PackageBlob, bool,
existing := &PackageBlob{} existing := &PackageBlob{}
has, err := e.Where(builder.Eq{ has, err := e.Where(builder.Eq{
"size": pb.Size, "size": pb.Size,
"hash_md5": pb.HashMD5, "hash_md5": pb.HashMD5,
"hash_sha1": pb.HashSHA1, "hash_sha1": pb.HashSHA1,
"hash_sha256": pb.HashSHA256, "hash_sha256": pb.HashSHA256,
"hash_sha512": pb.HashSHA512, "hash_sha512": pb.HashSHA512,
"hash_blake2b": pb.HashBlake2b,
}).Get(existing) }).Get(existing)
if err != nil { if err != nil {
return nil, false, err return nil, false, err

View file

@ -126,6 +126,14 @@ func (p *Project) LoadRepo(ctx context.Context) (err error) {
return err return err
} }
func ProjectLinkForOrg(org *user_model.User, projectID int64) string { //nolint
return fmt.Sprintf("%s/-/projects/%d", org.HomeLink(), projectID)
}
func ProjectLinkForRepo(repo *repo_model.Repository, projectID int64) string { //nolint
return fmt.Sprintf("%s/projects/%d", repo.Link(), projectID)
}
// Link returns the project's relative URL. // Link returns the project's relative URL.
func (p *Project) Link(ctx context.Context) string { func (p *Project) Link(ctx context.Context) string {
if p.OwnerID > 0 { if p.OwnerID > 0 {
@ -134,7 +142,7 @@ func (p *Project) Link(ctx context.Context) string {
log.Error("LoadOwner: %v", err) log.Error("LoadOwner: %v", err)
return "" return ""
} }
return fmt.Sprintf("%s/-/projects/%d", p.Owner.HomeLink(), p.ID) return ProjectLinkForOrg(p.Owner, p.ID)
} }
if p.RepoID > 0 { if p.RepoID > 0 {
err := p.LoadRepo(ctx) err := p.LoadRepo(ctx)
@ -142,7 +150,7 @@ func (p *Project) Link(ctx context.Context) string {
log.Error("LoadRepo: %v", err) log.Error("LoadRepo: %v", err)
return "" return ""
} }
return fmt.Sprintf("%s/projects/%d", p.Repo.Link(), p.ID) return ProjectLinkForRepo(p.Repo, p.ID)
} }
return "" return ""
} }

View file

@ -19,6 +19,8 @@ import (
"code.gitea.io/gitea/models/unit" "code.gitea.io/gitea/models/unit"
user_model "code.gitea.io/gitea/models/user" user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"xorm.io/builder"
) )
// Init initialize model // Init initialize model
@ -27,7 +29,7 @@ func Init(ctx context.Context) error {
} }
type repoChecker struct { type repoChecker struct {
querySQL func(ctx context.Context) ([]map[string][]byte, error) querySQL func(ctx context.Context) ([]int64, error)
correctSQL func(ctx context.Context, id int64) error correctSQL func(ctx context.Context, id int64) error
desc string desc string
} }
@ -38,8 +40,7 @@ func repoStatsCheck(ctx context.Context, checker *repoChecker) {
log.Error("Select %s: %v", checker.desc, err) log.Error("Select %s: %v", checker.desc, err)
return return
} }
for _, result := range results { for _, id := range results {
id, _ := strconv.ParseInt(string(result["id"]), 10, 64)
select { select {
case <-ctx.Done(): case <-ctx.Done():
log.Warn("CheckRepoStats: Cancelled before checking %s for with id=%d", checker.desc, id) log.Warn("CheckRepoStats: Cancelled before checking %s for with id=%d", checker.desc, id)
@ -54,21 +55,23 @@ func repoStatsCheck(ctx context.Context, checker *repoChecker) {
} }
} }
func StatsCorrectSQL(ctx context.Context, sql string, id int64) error { func StatsCorrectSQL(ctx context.Context, sql any, ids ...any) error {
_, err := db.GetEngine(ctx).Exec(sql, id, id) args := []any{sql}
args = append(args, ids...)
_, err := db.GetEngine(ctx).Exec(args...)
return err return err
} }
func repoStatsCorrectNumWatches(ctx context.Context, id int64) error { func repoStatsCorrectNumWatches(ctx context.Context, id int64) error {
return StatsCorrectSQL(ctx, "UPDATE `repository` SET num_watches=(SELECT COUNT(*) FROM `watch` WHERE repo_id=? AND mode<>2) WHERE id=?", id) return StatsCorrectSQL(ctx, "UPDATE `repository` SET num_watches=(SELECT COUNT(*) FROM `watch` WHERE repo_id=? AND mode<>2) WHERE id=?", id, id)
} }
func repoStatsCorrectNumStars(ctx context.Context, id int64) error { func repoStatsCorrectNumStars(ctx context.Context, id int64) error {
return StatsCorrectSQL(ctx, "UPDATE `repository` SET num_stars=(SELECT COUNT(*) FROM `star` WHERE repo_id=?) WHERE id=?", id) return StatsCorrectSQL(ctx, "UPDATE `repository` SET num_stars=(SELECT COUNT(*) FROM `star` WHERE repo_id=?) WHERE id=?", id, id)
} }
func labelStatsCorrectNumIssues(ctx context.Context, id int64) error { func labelStatsCorrectNumIssues(ctx context.Context, id int64) error {
return StatsCorrectSQL(ctx, "UPDATE `label` SET num_issues=(SELECT COUNT(*) FROM `issue_label` WHERE label_id=?) WHERE id=?", id) return StatsCorrectSQL(ctx, "UPDATE `label` SET num_issues=(SELECT COUNT(*) FROM `issue_label` WHERE label_id=?) WHERE id=?", id, id)
} }
func labelStatsCorrectNumIssuesRepo(ctx context.Context, id int64) error { func labelStatsCorrectNumIssuesRepo(ctx context.Context, id int64) error {
@ -105,11 +108,11 @@ func milestoneStatsCorrectNumIssuesRepo(ctx context.Context, id int64) error {
} }
func userStatsCorrectNumRepos(ctx context.Context, id int64) error { func userStatsCorrectNumRepos(ctx context.Context, id int64) error {
return StatsCorrectSQL(ctx, "UPDATE `user` SET num_repos=(SELECT COUNT(*) FROM `repository` WHERE owner_id=?) WHERE id=?", id) return StatsCorrectSQL(ctx, "UPDATE `user` SET num_repos=(SELECT COUNT(*) FROM `repository` WHERE owner_id=?) WHERE id=?", id, id)
} }
func repoStatsCorrectIssueNumComments(ctx context.Context, id int64) error { func repoStatsCorrectIssueNumComments(ctx context.Context, id int64) error {
return StatsCorrectSQL(ctx, "UPDATE `issue` SET num_comments=(SELECT COUNT(*) FROM `comment` WHERE issue_id=? AND type=0) WHERE id=?", id) return StatsCorrectSQL(ctx, issues_model.UpdateIssueNumCommentsBuilder(id))
} }
func repoStatsCorrectNumIssues(ctx context.Context, id int64) error { func repoStatsCorrectNumIssues(ctx context.Context, id int64) error {
@ -128,9 +131,12 @@ func repoStatsCorrectNumClosedPulls(ctx context.Context, id int64) error {
return repo_model.UpdateRepoIssueNumbers(ctx, id, true, true) return repo_model.UpdateRepoIssueNumbers(ctx, id, true, true)
} }
func statsQuery(args ...any) func(context.Context) ([]map[string][]byte, error) { // statsQuery returns a function that queries the database for a list of IDs
return func(ctx context.Context) ([]map[string][]byte, error) { // sql could be a string or a *builder.Builder
return db.GetEngine(ctx).Query(args...) func statsQuery(sql any, args ...any) func(context.Context) ([]int64, error) {
return func(ctx context.Context) ([]int64, error) {
var ids []int64
return ids, db.GetEngine(ctx).SQL(sql, args...).Find(&ids)
} }
} }
@ -201,7 +207,16 @@ func CheckRepoStats(ctx context.Context) error {
}, },
// Issue.NumComments // Issue.NumComments
{ {
statsQuery("SELECT `issue`.id FROM `issue` WHERE `issue`.num_comments!=(SELECT COUNT(*) FROM `comment` WHERE issue_id=`issue`.id AND type=0)"), statsQuery(builder.Select("`issue`.id").From("`issue`").Where(
builder.Neq{
"`issue`.num_comments": builder.Select("COUNT(*)").From("`comment`").Where(
builder.Expr("issue_id = `issue`.id").And(
builder.In("type", issues_model.ConversationCountedCommentType()),
),
),
},
),
),
repoStatsCorrectIssueNumComments, repoStatsCorrectIssueNumComments,
"issue count 'num_comments'", "issue count 'num_comments'",
}, },

View file

@ -24,7 +24,7 @@ func init() {
db.RegisterModel(new(RepoArchiveDownloadCount)) db.RegisterModel(new(RepoArchiveDownloadCount))
} }
// CountArchiveDownload adds one download the the given archive // CountArchiveDownload adds one download the given archive
func CountArchiveDownload(ctx context.Context, repoID, releaseID int64, tp git.ArchiveType) error { func CountArchiveDownload(ctx context.Context, repoID, releaseID int64, tp git.ArchiveType) error {
updateCount, err := db.GetEngine(ctx).Where("repo_id = ?", repoID).And("release_id = ?", releaseID).And("`type` = ?", tp).Incr("count").Update(new(RepoArchiveDownloadCount)) updateCount, err := db.GetEngine(ctx).Where("repo_id = ?", repoID).And("release_id = ?", releaseID).And("`type` = ?", tp).Incr("count").Update(new(RepoArchiveDownloadCount))
if err != nil { if err != nil {

View file

@ -97,13 +97,11 @@ func init() {
// LoadAttributes load repo and publisher attributes for a release // LoadAttributes load repo and publisher attributes for a release
func (r *Release) LoadAttributes(ctx context.Context) error { func (r *Release) LoadAttributes(ctx context.Context) error {
var err error err := r.LoadRepo(ctx)
if r.Repo == nil { if err != nil {
r.Repo, err = GetRepositoryByID(ctx, r.RepoID) return err
if err != nil {
return err
}
} }
if r.Publisher == nil { if r.Publisher == nil {
r.Publisher, err = user_model.GetUserByID(ctx, r.PublisherID) r.Publisher, err = user_model.GetUserByID(ctx, r.PublisherID)
if err != nil { if err != nil {
@ -123,6 +121,18 @@ func (r *Release) LoadAttributes(ctx context.Context) error {
return GetReleaseAttachments(ctx, r) return GetReleaseAttachments(ctx, r)
} }
// LoadRepo load repo attribute for release
func (r *Release) LoadRepo(ctx context.Context) error {
if r.Repo != nil {
return nil
}
var err error
r.Repo, err = GetRepositoryByID(ctx, r.RepoID)
return err
}
// LoadArchiveDownloadCount loads the download count for the source archives // LoadArchiveDownloadCount loads the download count for the source archives
func (r *Release) LoadArchiveDownloadCount(ctx context.Context) error { func (r *Release) LoadArchiveDownloadCount(ctx context.Context) error {
var err error var err error
@ -130,6 +140,25 @@ func (r *Release) LoadArchiveDownloadCount(ctx context.Context) error {
return err return err
} }
// GetTotalDownloadCount returns the summary of all dowload count of files attached to the release
func (r *Release) GetTotalDownloadCount(ctx context.Context) (int64, error) {
var archiveCount int64
if !r.HideArchiveLinks {
_, err := db.GetEngine(ctx).SQL("SELECT SUM(count) FROM repo_archive_download_count WHERE release_id = ?", r.ID).Get(&archiveCount)
if err != nil {
return 0, err
}
}
var attachmentCount int64
_, err := db.GetEngine(ctx).SQL("SELECT SUM(download_count) FROM attachment WHERE release_id = ?", r.ID).Get(&attachmentCount)
if err != nil {
return 0, err
}
return archiveCount + attachmentCount, nil
}
// APIURL the api url for a release. release must have attributes loaded // APIURL the api url for a release. release must have attributes loaded
func (r *Release) APIURL() string { func (r *Release) APIURL() string {
return r.Repo.APIURL() + "/releases/" + strconv.FormatInt(r.ID, 10) return r.Repo.APIURL() + "/releases/" + strconv.FormatInt(r.ID, 10)
@ -160,6 +189,20 @@ func (r *Release) Link() string {
return r.Repo.Link() + "/releases/tag/" + util.PathEscapeSegments(r.TagName) return r.Repo.Link() + "/releases/tag/" + util.PathEscapeSegments(r.TagName)
} }
// SummaryCardURL returns the absolute URL to an image providing a summary of the release
func (r *Release) SummaryCardURL() string {
return fmt.Sprintf("%s/releases/summary-card/%s", r.Repo.HTMLURL(), util.PathEscapeSegments(r.TagName))
}
// DisplayName retruns the name of the release
func (r *Release) DisplayName() string {
if r.IsTag && r.Title == "" {
return r.TagName
}
return r.Title
}
// IsReleaseExist returns true if release with given tag name already exists. // IsReleaseExist returns true if release with given tag name already exists.
func IsReleaseExist(ctx context.Context, repoID int64, tagName string) (bool, error) { func IsReleaseExist(ctx context.Context, repoID int64, tagName string) (bool, error) {
if len(tagName) == 0 { if len(tagName) == 0 {

View file

@ -9,6 +9,7 @@ import (
"code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/models/unittest" "code.gitea.io/gitea/models/unittest"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
) )
@ -25,3 +26,26 @@ func TestMigrate_InsertReleases(t *testing.T) {
err := InsertReleases(db.DefaultContext, r) err := InsertReleases(db.DefaultContext, r)
require.NoError(t, err) require.NoError(t, err)
} }
func TestReleaseLoadRepo(t *testing.T) {
require.NoError(t, unittest.PrepareTestDatabase())
release := unittest.AssertExistsAndLoadBean(t, &Release{ID: 1})
assert.Nil(t, release.Repo)
require.NoError(t, release.LoadRepo(db.DefaultContext))
assert.EqualValues(t, 1, release.Repo.ID)
}
func TestReleaseDisplayName(t *testing.T) {
release := Release{TagName: "TagName"}
assert.Empty(t, release.DisplayName())
release.IsTag = true
assert.Equal(t, "TagName", release.DisplayName())
release.Title = "Title"
assert.Equal(t, "Title", release.DisplayName())
}

View file

@ -327,6 +327,11 @@ func (repo *Repository) HTMLURL() string {
return setting.AppURL + url.PathEscape(repo.OwnerName) + "/" + url.PathEscape(repo.Name) return setting.AppURL + url.PathEscape(repo.OwnerName) + "/" + url.PathEscape(repo.Name)
} }
// SummaryCardURL returns the absolute URL to an image providing a summary of the repo
func (repo *Repository) SummaryCardURL() string {
return fmt.Sprintf("%s/-/summary-card", repo.HTMLURL())
}
// CommitLink make link to by commit full ID // CommitLink make link to by commit full ID
// note: won't check whether it's an right id // note: won't check whether it's an right id
func (repo *Repository) CommitLink(commitID string) (result string) { func (repo *Repository) CommitLink(commitID string) (result string) {

View file

@ -7,8 +7,10 @@ import (
"testing" "testing"
"code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/db"
issues_model "code.gitea.io/gitea/models/issues"
"code.gitea.io/gitea/models/unittest" "code.gitea.io/gitea/models/unittest"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
) )
@ -22,3 +24,16 @@ func TestDoctorUserStarNum(t *testing.T) {
require.NoError(t, DoctorUserStarNum(db.DefaultContext)) require.NoError(t, DoctorUserStarNum(db.DefaultContext))
} }
func Test_repoStatsCorrectIssueNumComments(t *testing.T) {
require.NoError(t, unittest.PrepareTestDatabase())
issue2 := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 2})
assert.NotNil(t, issue2)
assert.EqualValues(t, 0, issue2.NumComments) // the fixture data is wrong, but we don't fix it here
require.NoError(t, repoStatsCorrectIssueNumComments(db.DefaultContext, 2))
// reload the issue
issue2 = unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 2})
assert.EqualValues(t, 1, issue2.NumComments)
}

View file

@ -59,6 +59,13 @@ func InitSettings() {
_ = hash.Register("dummy", hash.NewDummyHasher) _ = hash.Register("dummy", hash.NewDummyHasher)
setting.PasswordHashAlgo, _ = hash.SetDefaultPasswordHashAlgorithm("dummy") setting.PasswordHashAlgo, _ = hash.SetDefaultPasswordHashAlgorithm("dummy")
setting.InitGiteaEnvVars()
// Avoid loading the git's system config.
// On macOS, system config sets the osxkeychain credential helper, which will cause tests to freeze with a dialog.
// But we do not set it in production at the moment, because it might be a "breaking" change,
// more details are in "modules/git.commonBaseEnvs".
_ = os.Setenv("GIT_CONFIG_NOSYSTEM", "true")
} }
// TestOptions represents test options // TestOptions represents test options

View file

@ -6,10 +6,17 @@ package user
import ( import (
"context" "context"
"fmt" "fmt"
"slices"
"strconv"
"strings" "strings"
"time"
"code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
"xorm.io/builder"
) )
// ErrUserRedirectNotExist represents a "UserRedirectNotExist" kind of error. // ErrUserRedirectNotExist represents a "UserRedirectNotExist" kind of error.
@ -31,11 +38,25 @@ func (err ErrUserRedirectNotExist) Unwrap() error {
return util.ErrNotExist return util.ErrNotExist
} }
type ErrCooldownPeriod struct {
ExpireTime time.Time
}
func IsErrCooldownPeriod(err error) bool {
_, ok := err.(ErrCooldownPeriod)
return ok
}
func (err ErrCooldownPeriod) Error() string {
return fmt.Sprintf("cooldown period for claiming this username has not yet expired: the cooldown period ends at %s", err.ExpireTime)
}
// Redirect represents that a user name should be redirected to another // Redirect represents that a user name should be redirected to another
type Redirect struct { type Redirect struct {
ID int64 `xorm:"pk autoincr"` ID int64 `xorm:"pk autoincr"`
LowerName string `xorm:"UNIQUE(s) INDEX NOT NULL"` LowerName string `xorm:"UNIQUE(s) INDEX NOT NULL"`
RedirectUserID int64 // userID to redirect to RedirectUserID int64 // userID to redirect to
CreatedUnix timeutil.TimeStamp `xorm:"created NOT NULL DEFAULT 0"`
} }
// TableName provides the real table name // TableName provides the real table name
@ -47,14 +68,24 @@ func init() {
db.RegisterModel(new(Redirect)) db.RegisterModel(new(Redirect))
} }
// LookupUserRedirect look up userID if a user has a redirect name // GetUserRedirect returns the redirect for a given username, this is a
func LookupUserRedirect(ctx context.Context, userName string) (int64, error) { // case-insenstive operation.
func GetUserRedirect(ctx context.Context, userName string) (*Redirect, error) {
userName = strings.ToLower(userName) userName = strings.ToLower(userName)
redirect := &Redirect{LowerName: userName} redirect := &Redirect{LowerName: userName}
if has, err := db.GetEngine(ctx).Get(redirect); err != nil { if has, err := db.GetEngine(ctx).Get(redirect); err != nil {
return 0, err return nil, err
} else if !has { } else if !has {
return 0, ErrUserRedirectNotExist{Name: userName} return nil, ErrUserRedirectNotExist{Name: userName}
}
return redirect, nil
}
// LookupUserRedirect look up userID if a user has a redirect name
func LookupUserRedirect(ctx context.Context, userName string) (int64, error) {
redirect, err := GetUserRedirect(ctx, userName)
if err != nil {
return 0, err
} }
return redirect.RedirectUserID, nil return redirect.RedirectUserID, nil
} }
@ -78,6 +109,19 @@ func NewUserRedirect(ctx context.Context, ID int64, oldUserName, newUserName str
}) })
} }
// LimitUserRedirects deletes the oldest entries in user_redirect of the user,
// such that the amount of user_redirects is at most `n` amount of entries.
func LimitUserRedirects(ctx context.Context, userID, n int64) error {
// NOTE: It's not possible to combine these two queries into one due to a limitation of MySQL.
keepIDs := make([]int64, n)
if err := db.GetEngine(ctx).SQL("SELECT id FROM user_redirect WHERE redirect_user_id = ? ORDER BY created_unix DESC LIMIT "+strconv.FormatInt(n, 10), userID).Find(&keepIDs); err != nil {
return err
}
_, err := db.GetEngine(ctx).Exec(builder.Delete(builder.And(builder.Eq{"redirect_user_id": userID}, builder.NotIn("id", keepIDs))).From("user_redirect"))
return err
}
// DeleteUserRedirect delete any redirect from the specified user name to // DeleteUserRedirect delete any redirect from the specified user name to
// anything else // anything else
func DeleteUserRedirect(ctx context.Context, userName string) error { func DeleteUserRedirect(ctx context.Context, userName string) error {
@ -85,3 +129,46 @@ func DeleteUserRedirect(ctx context.Context, userName string) error {
_, err := db.GetEngine(ctx).Delete(&Redirect{LowerName: userName}) _, err := db.GetEngine(ctx).Delete(&Redirect{LowerName: userName})
return err return err
} }
// CanClaimUsername returns if its possible to claim the given username,
// it checks if the cooldown period for claiming an existing username is over.
// If there's a cooldown period, the second argument returns the time when
// that cooldown period is over.
// In the scenario of renaming, the doerID can be specified to allow the original
// user of the username to reclaim it within the cooldown period.
func CanClaimUsername(ctx context.Context, username string, doerID int64) (bool, time.Time, error) {
// Only check for a cooldown period if UsernameCooldownPeriod is a positive number.
if setting.Service.UsernameCooldownPeriod <= 0 {
return true, time.Time{}, nil
}
userRedirect, err := GetUserRedirect(ctx, username)
if err != nil {
if IsErrUserRedirectNotExist(err) {
return true, time.Time{}, nil
}
return false, time.Time{}, err
}
// Allow reclaiming of user's own username.
if userRedirect.RedirectUserID == doerID {
return true, time.Time{}, nil
}
// We do not know if the redirect user id was for an organization, so
// unconditionally execute the following query to retrieve all users that
// are part of the "Owner" team. If the redirect user ID is not an organization
// the returned list would be empty.
ownerTeamUIDs := []int64{}
if err := db.GetEngine(ctx).SQL("SELECT uid FROM team_user INNER JOIN team ON team_user.`team_id` = team.`id` WHERE team.`org_id` = ? AND team.`name` = 'Owners'", userRedirect.RedirectUserID).Find(&ownerTeamUIDs); err != nil {
return false, time.Time{}, err
}
if slices.Contains(ownerTeamUIDs, doerID) {
return true, time.Time{}, nil
}
// Multiply the value of UsernameCooldownPeriod by the amount of seconds in a day.
expireTime := userRedirect.CreatedUnix.Add(86400 * setting.Service.UsernameCooldownPeriod).AsLocalTime()
return time.Until(expireTime) <= 0, expireTime, nil
}

View file

@ -669,6 +669,18 @@ func createUser(ctx context.Context, u *User, createdByAdmin bool, overwriteDefa
return err return err
} }
// Check if the new username can be claimed.
// Skip this check if done by an admin.
if !createdByAdmin {
if ok, expireTime, err := CanClaimUsername(ctx, u.Name, -1); err != nil {
return err
} else if !ok {
return ErrCooldownPeriod{
ExpireTime: expireTime,
}
}
}
// set system defaults // set system defaults
u.KeepEmailPrivate = setting.Service.DefaultKeepEmailPrivate u.KeepEmailPrivate = setting.Service.DefaultKeepEmailPrivate
u.Visibility = setting.Service.DefaultUserVisibilityMode u.Visibility = setting.Service.DefaultUserVisibilityMode

View file

@ -393,6 +393,31 @@ func TestCreateUserWithoutCustomTimestamps(t *testing.T) {
assert.LessOrEqual(t, fetched.UpdatedUnix, timestampEnd) assert.LessOrEqual(t, fetched.UpdatedUnix, timestampEnd)
} }
func TestCreateUserClaimingUsername(t *testing.T) {
require.NoError(t, unittest.PrepareTestDatabase())
defer test.MockVariableValue(&setting.Service.UsernameCooldownPeriod, 1)()
_, err := db.GetEngine(db.DefaultContext).NoAutoTime().Insert(&user_model.Redirect{RedirectUserID: 1, LowerName: "redirecting", CreatedUnix: timeutil.TimeStampNow()})
require.NoError(t, err)
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
user.Name = "redirecting"
user.LowerName = strings.ToLower(user.Name)
user.ID = 0
user.Email = "unique@example.com"
t.Run("Normal creation", func(t *testing.T) {
err = user_model.CreateUser(db.DefaultContext, user)
assert.True(t, user_model.IsErrCooldownPeriod(err))
})
t.Run("Creation as admin", func(t *testing.T) {
err = user_model.AdminCreateUser(db.DefaultContext, user)
require.NoError(t, err)
})
}
func TestGetUserIDsByNames(t *testing.T) { func TestGetUserIDsByNames(t *testing.T) {
require.NoError(t, unittest.PrepareTestDatabase()) require.NoError(t, unittest.PrepareTestDatabase())

View file

@ -22,7 +22,7 @@ import (
"code.gitea.io/gitea/modules/proxy" "code.gitea.io/gitea/modules/proxy"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"github.com/go-fed/httpsig" "github.com/42wim/httpsig"
) )
const ( const (

View file

@ -5,6 +5,7 @@ package card
import ( import (
"bytes" "bytes"
"fmt"
"image" "image"
"image/color" "image/color"
"io" "io"
@ -35,12 +36,19 @@ type Card struct {
Img *image.RGBA Img *image.RGBA
Font *truetype.Font Font *truetype.Font
Margin int Margin int
Width int
Height int
} }
var fontCache = sync.OnceValues(func() (*truetype.Font, error) { var fontCache = sync.OnceValues(func() (*truetype.Font, error) {
return truetype.Parse(goregular.TTF) return truetype.Parse(goregular.TTF)
}) })
// DefaultSize returns the default size for a card
func DefaultSize() (int, int) {
return 1200, 600
}
// NewCard creates a new card with the given dimensions in pixels // NewCard creates a new card with the given dimensions in pixels
func NewCard(width, height int) (*Card, error) { func NewCard(width, height int) (*Card, error) {
img := image.NewRGBA(image.Rect(0, 0, width, height)) img := image.NewRGBA(image.Rect(0, 0, width, height))
@ -55,6 +63,8 @@ func NewCard(width, height int) (*Card, error) {
Img: img, Img: img,
Font: font, Font: font,
Margin: 0, Margin: 0,
Width: width,
Height: height,
}, nil }, nil
} }
@ -67,14 +77,14 @@ func (c *Card) Split(vertical bool, percentage int) (*Card, *Card) {
mid := (bounds.Dx() * percentage / 100) + bounds.Min.X mid := (bounds.Dx() * percentage / 100) + bounds.Min.X
subleft := c.Img.SubImage(image.Rect(bounds.Min.X, bounds.Min.Y, mid, bounds.Max.Y)).(*image.RGBA) subleft := c.Img.SubImage(image.Rect(bounds.Min.X, bounds.Min.Y, mid, bounds.Max.Y)).(*image.RGBA)
subright := c.Img.SubImage(image.Rect(mid, bounds.Min.Y, bounds.Max.X, bounds.Max.Y)).(*image.RGBA) subright := c.Img.SubImage(image.Rect(mid, bounds.Min.Y, bounds.Max.X, bounds.Max.Y)).(*image.RGBA)
return &Card{Img: subleft, Font: c.Font}, return &Card{Img: subleft, Font: c.Font, Width: subleft.Bounds().Dx(), Height: subleft.Bounds().Dy()},
&Card{Img: subright, Font: c.Font} &Card{Img: subright, Font: c.Font, Width: subright.Bounds().Dx(), Height: subright.Bounds().Dy()}
} }
mid := (bounds.Dy() * percentage / 100) + bounds.Min.Y mid := (bounds.Dy() * percentage / 100) + bounds.Min.Y
subtop := c.Img.SubImage(image.Rect(bounds.Min.X, bounds.Min.Y, bounds.Max.X, mid)).(*image.RGBA) subtop := c.Img.SubImage(image.Rect(bounds.Min.X, bounds.Min.Y, bounds.Max.X, mid)).(*image.RGBA)
subbottom := c.Img.SubImage(image.Rect(bounds.Min.X, mid, bounds.Max.X, bounds.Max.Y)).(*image.RGBA) subbottom := c.Img.SubImage(image.Rect(bounds.Min.X, mid, bounds.Max.X, bounds.Max.Y)).(*image.RGBA)
return &Card{Img: subtop, Font: c.Font}, return &Card{Img: subtop, Font: c.Font, Width: subtop.Bounds().Dx(), Height: subtop.Bounds().Dy()},
&Card{Img: subbottom, Font: c.Font} &Card{Img: subbottom, Font: c.Font, Width: subbottom.Bounds().Dx(), Height: subbottom.Bounds().Dy()}
} }
// SetMargin sets the margins for the card // SetMargin sets the margins for the card
@ -244,9 +254,14 @@ func (c *Card) fetchExternalImage(url string) (image.Image, bool) {
}, },
} }
// Go expects a absolute URL, so we must change a relative to an absolute one
if !strings.Contains(url, "://") {
url = fmt.Sprintf("%s%s", setting.AppURL, strings.TrimPrefix(url, "/"))
}
resp, err := client.Get(url) resp, err := client.Get(url)
if err != nil { if err != nil {
log.Warn("error when fetching external image from %s: %w", url, err) log.Warn("error when fetching external image from %s: %v", url, err)
return nil, false return nil, false
} }
defer resp.Body.Close() defer resp.Body.Close()
@ -321,3 +336,8 @@ func (c *Card) DrawExternalImage(url string) {
} }
c.DrawImage(image) c.DrawImage(image)
} }
// DrawRect draws a rect with the given color
func (c *Card) DrawRect(startX, startY, endX, endY int, color color.Color) {
draw.Draw(c.Img, image.Rect(startX, startY, endX, endY), &image.Uniform{color}, image.Point{}, draw.Src)
}

View file

@ -134,7 +134,7 @@ func DetectEncoding(content []byte) (string, error) {
// First we check if the content represents valid utf8 content excepting a truncated character at the end. // First we check if the content represents valid utf8 content excepting a truncated character at the end.
// Now we could decode all the runes in turn but this is not necessarily the cheapest thing to do // Now we could decode all the runes in turn but this is not necessarily the cheapest thing to do
// instead we walk backwards from the end to trim off a the incomplete character // instead we walk backwards from the end to trim off the incomplete character
toValidate := content toValidate := content
end := len(toValidate) - 1 end := len(toValidate) - 1

View file

@ -29,6 +29,15 @@ func (s Set[T]) AddMultiple(values ...T) {
} }
} }
func (s Set[T]) IsSubset(subset []T) bool {
for _, v := range subset {
if !s.Contains(v) {
return false
}
}
return true
}
// Contains determines whether a set contains the specified element. // Contains determines whether a set contains the specified element.
// Returns true if the set contains the specified element; otherwise, false. // Returns true if the set contains the specified element; otherwise, false.
func (s Set[T]) Contains(value T) bool { func (s Set[T]) Contains(value T) bool {

View file

@ -33,4 +33,9 @@ func TestSet(t *testing.T) {
assert.False(t, s.Contains("key1")) assert.False(t, s.Contains("key1"))
assert.True(t, s.Contains("key6")) assert.True(t, s.Contains("key6"))
assert.True(t, s.Contains("key7")) assert.True(t, s.Contains("key7"))
assert.True(t, s.IsSubset([]string{"key6", "key7"}))
assert.False(t, s.IsSubset([]string{"key1"}))
assert.True(t, s.IsSubset([]string{}))
} }

View file

@ -13,6 +13,7 @@ import (
"os" "os"
"os/exec" "os/exec"
"runtime" "runtime"
"runtime/trace"
"strings" "strings"
"time" "time"
@ -317,12 +318,13 @@ func (c *Command) Run(opts *RunOpts) error {
var finished context.CancelFunc var finished context.CancelFunc
if opts.UseContextTimeout { if opts.UseContextTimeout {
ctx, cancel, finished = process.GetManager().AddContext(c.parentContext, desc) ctx, cancel, finished = process.GetManager().AddTypedContext(c.parentContext, desc, process.GitProcessType, true)
} else { } else {
ctx, cancel, finished = process.GetManager().AddContextTimeout(c.parentContext, timeout, desc) ctx, cancel, finished = process.GetManager().AddTypedContextTimeout(c.parentContext, timeout, desc, process.GitProcessType, true)
} }
defer finished() defer finished()
trace.Log(ctx, "command", desc)
startTime := time.Now() startTime := time.Now()
cmd := exec.CommandContext(ctx, c.prog, c.args...) cmd := exec.CommandContext(ctx, c.prog, c.args...)

View file

@ -5,6 +5,7 @@ package git
import ( import (
"context" "context"
"strings"
giturl "code.gitea.io/gitea/modules/git/url" giturl "code.gitea.io/gitea/modules/git/url"
) )
@ -37,3 +38,12 @@ func GetRemoteURL(ctx context.Context, repoPath, remoteName string) (*giturl.Git
} }
return giturl.Parse(addr) return giturl.Parse(addr)
} }
// IsRemoteNotExistError checks the prefix of the error message to see whether a remote does not exist.
func IsRemoteNotExistError(err error) bool {
// see: https://github.com/go-gitea/gitea/issues/32889#issuecomment-2571848216
// Should not add space in the end, sometimes git will add a `:`
prefix1 := "exit status 128 - fatal: No such remote" // git < 2.30
prefix2 := "exit status 2 - error: No such remote" // git >= 2.30
return strings.HasPrefix(err.Error(), prefix1) || strings.HasPrefix(err.Error(), prefix2)
}

View file

@ -176,3 +176,14 @@ func (repo *Repository) LsTree(ref string, filenames ...string) ([]string, error
return filelist, err return filelist, err
} }
// GetTreePathLatestCommitID returns the latest commit of a tree path
func (repo *Repository) GetTreePathLatestCommit(refName, treePath string) (*Commit, error) {
stdout, _, err := NewCommand(repo.Ctx, "rev-list", "-1").
AddDynamicArguments(refName).AddDashesAndList(treePath).
RunStdString(&RunOpts{Dir: repo.Path})
if err != nil {
return nil, err
}
return repo.GetCommit(strings.TrimSpace(stdout))
}

View file

@ -26,3 +26,18 @@ func TestSubTree_Issue29101(t *testing.T) {
assert.True(t, IsErrNotExist(err)) assert.True(t, IsErrNotExist(err))
} }
} }
func Test_GetTreePathLatestCommit(t *testing.T) {
repo, err := openRepositoryWithDefaultContext(filepath.Join(testReposDir, "repo6_blame"))
require.NoError(t, err)
defer repo.Close()
commitID, err := repo.GetBranchCommitID("master")
require.NoError(t, err)
assert.EqualValues(t, "544d8f7a3b15927cddf2299b4b562d6ebd71b6a7", commitID)
commit, err := repo.GetTreePathLatestCommit("master", "blame.txt")
require.NoError(t, err)
assert.NotNil(t, commit)
assert.EqualValues(t, "45fb6cbc12f970b04eacd5cd4165edd11c8d7376", commit.ID.String())
}

View file

@ -0,0 +1,22 @@
// Copyright 2025 The Forgejo Authors.
// SPDX-License-Identifier: GPL-3.0-or-later
package log
import (
"bytes"
)
type EventWriterBuffer struct {
*EventWriterBaseImpl
Buffer *bytes.Buffer
}
var _ EventWriter = (*EventWriterBuffer)(nil)
func NewEventWriterBuffer(name string, mode WriterMode) *EventWriterBuffer {
w := &EventWriterBuffer{EventWriterBaseImpl: NewEventWriterBase(name, "buffer", mode)}
w.Buffer = new(bytes.Buffer)
w.OutputWriteCloser = nopCloser{w.Buffer}
return w
}

View file

@ -0,0 +1,34 @@
// Copyright 2025 The Forgejo Authors.
// SPDX-License-Identifier: GPL-3.0-or-later
package log_test
import (
"context"
"testing"
"code.gitea.io/gitea/modules/log"
"github.com/stretchr/testify/assert"
)
func TestBufferLogger(t *testing.T) {
prefix := "TestPrefix "
level := log.INFO
expected := "something"
bufferWriter := log.NewEventWriterBuffer("test-buffer", log.WriterMode{
Level: level,
Prefix: prefix,
Expression: expected,
})
logger := log.NewLoggerWithWriters(context.Background(), "test", bufferWriter)
logger.SendLogEvent(&log.Event{
Level: log.INFO,
MsgSimpleText: expected,
})
logger.Close()
assert.Contains(t, bufferWriter.Buffer.String(), expected)
}

View file

@ -152,8 +152,8 @@ func HelloWorld() {
} }
#+end_src #+end_src
`, `<div class="src src-go"> `, `<div class="src src-go">
<pre><code class="chroma language-go"><span class="c1">// HelloWorld prints &#34;Hello World&#34; <pre><code class="chroma language-go"><span class="c1">// HelloWorld prints &#34;Hello World&#34;</span>
</span><span class="c1"></span><span class="kd">func</span> <span class="nf">HelloWorld</span><span class="p">()</span> <span class="p">{</span> <span class="kd">func</span> <span class="nf">HelloWorld</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Hello World&#34;</span><span class="p">)</span> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Hello World&#34;</span><span class="p">)</span>
<span class="p">}</span></code></pre> <span class="p">}</span></code></pre>
</div>`) </div>`)

View file

@ -14,4 +14,5 @@ type Repository struct {
CloneURL string `yaml:"clone_url"` // SECURITY: This must be checked to ensure that is safe to be used CloneURL string `yaml:"clone_url"` // SECURITY: This must be checked to ensure that is safe to be used
OriginalURL string `yaml:"original_url"` OriginalURL string `yaml:"original_url"`
DefaultBranch string DefaultBranch string
Website string
} }

View file

@ -94,7 +94,7 @@ type FileMetadata struct {
// ParsePackage Function that receives arch package archive data and returns it's metadata. // ParsePackage Function that receives arch package archive data and returns it's metadata.
func ParsePackage(r *packages.HashedBuffer) (*Package, error) { func ParsePackage(r *packages.HashedBuffer) (*Package, error) {
md5, _, sha256, _ := r.Sums() md5, _, sha256, _, _ := r.Sums()
_, err := r.Seek(0, io.SeekStart) _, err := r.Seek(0, io.SeekStart)
if err != nil { if err != nil {
return nil, err return nil, err

View file

@ -75,7 +75,7 @@ func (b *HashedBuffer) Write(p []byte) (int, error) {
return b.combinedWriter.Write(p) return b.combinedWriter.Write(p)
} }
// Sums gets the MD5, SHA1, SHA256 and SHA512 checksums of the data // Sums gets the MD5, SHA1, SHA256, SHA512 and BLAKE2B checksums of the data
func (b *HashedBuffer) Sums() (hashMD5, hashSHA1, hashSHA256, hashSHA512 []byte) { func (b *HashedBuffer) Sums() (hashMD5, hashSHA1, hashSHA256, hashSHA512, hashBlake2b []byte) {
return b.hash.Sums() return b.hash.Sums()
} }

View file

@ -21,9 +21,10 @@ func TestHashedBuffer(t *testing.T) {
HashSHA1 string HashSHA1 string
HashSHA256 string HashSHA256 string
HashSHA512 string HashSHA512 string
hashBlake2b string
}{ }{
{5, "test", "098f6bcd4621d373cade4e832627b4f6", "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3", "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08", "ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff"}, {5, "test", "098f6bcd4621d373cade4e832627b4f6", "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3", "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08", "ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff", "a71079d42853dea26e453004338670a53814b78137ffbed07603a41d76a483aa9bc33b582f77d30a65e6f29a896c0411f38312e1d66e0bf16386c86a89bea572"},
{5, "testtest", "05a671c66aefea124cc08b76ea6d30bb", "51abb9636078defbf888d8457a7c76f85c8f114c", "37268335dd6931045bdcdf92623ff819a64244b53d0e746d438797349d4da578", "125d6d03b32c84d492747f79cf0bf6e179d287f341384eb5d6d3197525ad6be8e6df0116032935698f99a09e265073d1d6c32c274591bf1d0a20ad67cba921bc"}, {5, "testtest", "05a671c66aefea124cc08b76ea6d30bb", "51abb9636078defbf888d8457a7c76f85c8f114c", "37268335dd6931045bdcdf92623ff819a64244b53d0e746d438797349d4da578", "125d6d03b32c84d492747f79cf0bf6e179d287f341384eb5d6d3197525ad6be8e6df0116032935698f99a09e265073d1d6c32c274591bf1d0a20ad67cba921bc", "372a53b95f46e775b973031e40b844f24389657019f7b7540a9f0496f4ead4a2e4b050909664611fb0f4b7c7e92c3c04c84787be7f6b8edf7bf6bc31856b6c76"},
} }
for _, c := range cases { for _, c := range cases {
@ -36,11 +37,12 @@ func TestHashedBuffer(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
assert.Equal(t, c.Data, string(data)) assert.Equal(t, c.Data, string(data))
hashMD5, hashSHA1, hashSHA256, hashSHA512 := buf.Sums() hashMD5, hashSHA1, hashSHA256, hashSHA512, hashBlake2b := buf.Sums()
assert.Equal(t, c.HashMD5, hex.EncodeToString(hashMD5)) assert.Equal(t, c.HashMD5, hex.EncodeToString(hashMD5))
assert.Equal(t, c.HashSHA1, hex.EncodeToString(hashSHA1)) assert.Equal(t, c.HashSHA1, hex.EncodeToString(hashSHA1))
assert.Equal(t, c.HashSHA256, hex.EncodeToString(hashSHA256)) assert.Equal(t, c.HashSHA256, hex.EncodeToString(hashSHA256))
assert.Equal(t, c.HashSHA512, hex.EncodeToString(hashSHA512)) assert.Equal(t, c.HashSHA512, hex.EncodeToString(hashSHA512))
assert.Equal(t, c.hashBlake2b, hex.EncodeToString(hashBlake2b))
require.NoError(t, buf.Close()) require.NoError(t, buf.Close())
} }

View file

@ -12,28 +12,32 @@ import (
"errors" "errors"
"hash" "hash"
"io" "io"
"golang.org/x/crypto/blake2b"
) )
const ( const (
marshaledSizeMD5 = 92 marshaledSizeMD5 = 92
marshaledSizeSHA1 = 96 marshaledSizeSHA1 = 96
marshaledSizeSHA256 = 108 marshaledSizeSHA256 = 108
marshaledSizeSHA512 = 204 marshaledSizeSHA512 = 204
marshaledSizeBlake2b = 213
marshaledSize = marshaledSizeMD5 + marshaledSizeSHA1 + marshaledSizeSHA256 + marshaledSizeSHA512 marshaledSize = marshaledSizeMD5 + marshaledSizeSHA1 + marshaledSizeSHA256 + marshaledSizeSHA512 + marshaledSizeBlake2b
) )
// HashSummer provide a Sums method // HashSummer provide a Sums method
type HashSummer interface { type HashSummer interface {
Sums() (hashMD5, hashSHA1, hashSHA256, hashSHA512 []byte) Sums() (hashMD5, hashSHA1, hashSHA256, hashSHA512, hashBlake2b []byte)
} }
// MultiHasher calculates multiple checksums // MultiHasher calculates multiple checksums
type MultiHasher struct { type MultiHasher struct {
md5 hash.Hash md5 hash.Hash
sha1 hash.Hash sha1 hash.Hash
sha256 hash.Hash sha256 hash.Hash
sha512 hash.Hash sha512 hash.Hash
blake2b hash.Hash
combinedWriter io.Writer combinedWriter io.Writer
} }
@ -44,14 +48,16 @@ func NewMultiHasher() *MultiHasher {
sha1 := sha1.New() sha1 := sha1.New()
sha256 := sha256.New() sha256 := sha256.New()
sha512 := sha512.New() sha512 := sha512.New()
blake2b, _ := blake2b.New512(nil)
combinedWriter := io.MultiWriter(md5, sha1, sha256, sha512) combinedWriter := io.MultiWriter(md5, sha1, sha256, sha512, blake2b)
return &MultiHasher{ return &MultiHasher{
md5, md5,
sha1, sha1,
sha256, sha256,
sha512, sha512,
blake2b,
combinedWriter, combinedWriter,
} }
} }
@ -74,12 +80,17 @@ func (h *MultiHasher) MarshalBinary() ([]byte, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
blake2bBytes, err := h.blake2b.(encoding.BinaryMarshaler).MarshalBinary()
if err != nil {
return nil, err
}
b := make([]byte, 0, marshaledSize) b := make([]byte, 0, marshaledSize)
b = append(b, md5Bytes...) b = append(b, md5Bytes...)
b = append(b, sha1Bytes...) b = append(b, sha1Bytes...)
b = append(b, sha256Bytes...) b = append(b, sha256Bytes...)
b = append(b, sha512Bytes...) b = append(b, sha512Bytes...)
b = append(b, blake2bBytes...)
return b, nil return b, nil
} }
@ -104,7 +115,12 @@ func (h *MultiHasher) UnmarshalBinary(b []byte) error {
} }
b = b[marshaledSizeSHA256:] b = b[marshaledSizeSHA256:]
return h.sha512.(encoding.BinaryUnmarshaler).UnmarshalBinary(b[:marshaledSizeSHA512]) if err := h.sha512.(encoding.BinaryUnmarshaler).UnmarshalBinary(b[:marshaledSizeSHA512]); err != nil {
return err
}
b = b[marshaledSizeSHA512:]
return h.blake2b.(encoding.BinaryUnmarshaler).UnmarshalBinary(b[:marshaledSizeBlake2b])
} }
// Write implements io.Writer // Write implements io.Writer
@ -113,10 +129,11 @@ func (h *MultiHasher) Write(p []byte) (int, error) {
} }
// Sums gets the MD5, SHA1, SHA256 and SHA512 checksums of the data // Sums gets the MD5, SHA1, SHA256 and SHA512 checksums of the data
func (h *MultiHasher) Sums() (hashMD5, hashSHA1, hashSHA256, hashSHA512 []byte) { func (h *MultiHasher) Sums() (hashMD5, hashSHA1, hashSHA256, hashSHA512, hashBlake2b []byte) {
hashMD5 = h.md5.Sum(nil) hashMD5 = h.md5.Sum(nil)
hashSHA1 = h.sha1.Sum(nil) hashSHA1 = h.sha1.Sum(nil)
hashSHA256 = h.sha256.Sum(nil) hashSHA256 = h.sha256.Sum(nil)
hashSHA512 = h.sha512.Sum(nil) hashSHA512 = h.sha512.Sum(nil)
return hashMD5, hashSHA1, hashSHA256, hashSHA512 hashBlake2b = h.blake2b.Sum(nil)
return hashMD5, hashSHA1, hashSHA256, hashSHA512, hashBlake2b
} }

View file

@ -12,10 +12,11 @@ import (
) )
const ( const (
expectedMD5 = "e3bef03c5f3b7f6b3ab3e3053ed71e9c" expectedMD5 = "e3bef03c5f3b7f6b3ab3e3053ed71e9c"
expectedSHA1 = "060b3b99f88e96085b4a68e095bc9e3d1d91e1bc" expectedSHA1 = "060b3b99f88e96085b4a68e095bc9e3d1d91e1bc"
expectedSHA256 = "6ccce4863b70f258d691f59609d31b4502e1ba5199942d3bc5d35d17a4ce771d" expectedSHA256 = "6ccce4863b70f258d691f59609d31b4502e1ba5199942d3bc5d35d17a4ce771d"
expectedSHA512 = "7f70e439ba8c52025c1f06cdf6ae443c4b8ed2e90059cdb9bbbf8adf80846f185a24acca9245b128b226d61753b0d7ed46580a69c8999eeff3bc13a4d0bd816c" expectedSHA512 = "7f70e439ba8c52025c1f06cdf6ae443c4b8ed2e90059cdb9bbbf8adf80846f185a24acca9245b128b226d61753b0d7ed46580a69c8999eeff3bc13a4d0bd816c"
expectedBlake2b = "b3c3ad15c7e6cca543d651add9427727ffb525120eb23264ee35f16f408a369b599d4404a52d29f642fc0d869f9b55581b60e4e8b9b74997182705d3dcb01edb"
) )
func TestMultiHasherSums(t *testing.T) { func TestMultiHasherSums(t *testing.T) {
@ -23,12 +24,13 @@ func TestMultiHasherSums(t *testing.T) {
h := NewMultiHasher() h := NewMultiHasher()
h.Write([]byte("gitea")) h.Write([]byte("gitea"))
hashMD5, hashSHA1, hashSHA256, hashSHA512 := h.Sums() hashMD5, hashSHA1, hashSHA256, hashSHA512, hashBlake2b := h.Sums()
assert.Equal(t, expectedMD5, hex.EncodeToString(hashMD5)) assert.Equal(t, expectedMD5, hex.EncodeToString(hashMD5))
assert.Equal(t, expectedSHA1, hex.EncodeToString(hashSHA1)) assert.Equal(t, expectedSHA1, hex.EncodeToString(hashSHA1))
assert.Equal(t, expectedSHA256, hex.EncodeToString(hashSHA256)) assert.Equal(t, expectedSHA256, hex.EncodeToString(hashSHA256))
assert.Equal(t, expectedSHA512, hex.EncodeToString(hashSHA512)) assert.Equal(t, expectedSHA512, hex.EncodeToString(hashSHA512))
assert.Equal(t, expectedBlake2b, hex.EncodeToString(hashBlake2b))
}) })
t.Run("State", func(t *testing.T) { t.Run("State", func(t *testing.T) {
@ -44,11 +46,12 @@ func TestMultiHasherSums(t *testing.T) {
h2.Write([]byte("ea")) h2.Write([]byte("ea"))
hashMD5, hashSHA1, hashSHA256, hashSHA512 := h2.Sums() hashMD5, hashSHA1, hashSHA256, hashSHA512, hashBlake2b := h2.Sums()
assert.Equal(t, expectedMD5, hex.EncodeToString(hashMD5)) assert.Equal(t, expectedMD5, hex.EncodeToString(hashMD5))
assert.Equal(t, expectedSHA1, hex.EncodeToString(hashSHA1)) assert.Equal(t, expectedSHA1, hex.EncodeToString(hashSHA1))
assert.Equal(t, expectedSHA256, hex.EncodeToString(hashSHA256)) assert.Equal(t, expectedSHA256, hex.EncodeToString(hashSHA256))
assert.Equal(t, expectedSHA512, hex.EncodeToString(hashSHA512)) assert.Equal(t, expectedSHA512, hex.EncodeToString(hashSHA512))
assert.Equal(t, expectedBlake2b, hex.EncodeToString(hashBlake2b))
}) })
} }

View file

@ -78,11 +78,12 @@ type FileMetadata struct {
} }
type Entry struct { type Entry struct {
Name string `json:"name" xml:"name,attr"` Name string `json:"name" xml:"name,attr"`
Flags string `json:"flags,omitempty" xml:"flags,attr,omitempty"` Flags string `json:"flags,omitempty" xml:"flags,attr,omitempty"`
Version string `json:"version,omitempty" xml:"ver,attr,omitempty"` AltFlags uint32 `json:"alt_flags,omitempty" xml:"alt_flags,attr,omitempty"`
Epoch string `json:"epoch,omitempty" xml:"epoch,attr,omitempty"` Version string `json:"version,omitempty" xml:"ver,attr,omitempty"`
Release string `json:"release,omitempty" xml:"rel,attr,omitempty"` Epoch string `json:"epoch,omitempty" xml:"epoch,attr,omitempty"`
Release string `json:"release,omitempty" xml:"rel,attr,omitempty"`
} }
type File struct { type File struct {
@ -98,7 +99,7 @@ type Changelog struct {
} }
// ParsePackage parses the RPM package file // ParsePackage parses the RPM package file
func ParsePackage(r io.Reader) (*Package, error) { func ParsePackage(r io.Reader, repoType string) (*Package, error) {
rpm, err := rpmutils.ReadRpm(r) rpm, err := rpmutils.ReadRpm(r)
if err != nil { if err != nil {
return nil, err return nil, err
@ -138,10 +139,10 @@ func ParsePackage(r io.Reader) (*Package, error) {
InstalledSize: getUInt64(rpm.Header, rpmutils.SIZE), InstalledSize: getUInt64(rpm.Header, rpmutils.SIZE),
ArchiveSize: getUInt64(rpm.Header, rpmutils.SIG_PAYLOADSIZE), ArchiveSize: getUInt64(rpm.Header, rpmutils.SIG_PAYLOADSIZE),
Provides: getEntries(rpm.Header, rpmutils.PROVIDENAME, rpmutils.PROVIDEVERSION, rpmutils.PROVIDEFLAGS), Provides: getEntries(rpm.Header, rpmutils.PROVIDENAME, rpmutils.PROVIDEVERSION, rpmutils.PROVIDEFLAGS, repoType),
Requires: getEntries(rpm.Header, rpmutils.REQUIRENAME, rpmutils.REQUIREVERSION, rpmutils.REQUIREFLAGS), Requires: getEntries(rpm.Header, rpmutils.REQUIRENAME, rpmutils.REQUIREVERSION, rpmutils.REQUIREFLAGS, repoType),
Conflicts: getEntries(rpm.Header, rpmutils.CONFLICTNAME, rpmutils.CONFLICTVERSION, rpmutils.CONFLICTFLAGS), Conflicts: getEntries(rpm.Header, rpmutils.CONFLICTNAME, rpmutils.CONFLICTVERSION, rpmutils.CONFLICTFLAGS, repoType),
Obsoletes: getEntries(rpm.Header, rpmutils.OBSOLETENAME, rpmutils.OBSOLETEVERSION, rpmutils.OBSOLETEFLAGS), Obsoletes: getEntries(rpm.Header, rpmutils.OBSOLETENAME, rpmutils.OBSOLETEVERSION, rpmutils.OBSOLETEFLAGS, repoType),
Files: getFiles(rpm.Header), Files: getFiles(rpm.Header),
Changelogs: getChangelogs(rpm.Header), Changelogs: getChangelogs(rpm.Header),
}, },
@ -170,7 +171,7 @@ func getUInt64(h *rpmutils.RpmHeader, tag int) uint64 {
return values[0] return values[0]
} }
func getEntries(h *rpmutils.RpmHeader, namesTag, versionsTag, flagsTag int) []*Entry { func getEntries(h *rpmutils.RpmHeader, namesTag, versionsTag, flagsTag int, repoType string) []*Entry {
names, err := h.GetStrings(namesTag) names, err := h.GetStrings(namesTag)
if err != nil || len(names) == 0 { if err != nil || len(names) == 0 {
return nil return nil
@ -188,43 +189,54 @@ func getEntries(h *rpmutils.RpmHeader, namesTag, versionsTag, flagsTag int) []*E
} }
entries := make([]*Entry, 0, len(names)) entries := make([]*Entry, 0, len(names))
for i := range names {
e := &Entry{
Name: names[i],
}
flags := flags[i] switch repoType {
if (flags&rpmutils.RPMSENSE_GREATER) != 0 && (flags&rpmutils.RPMSENSE_EQUAL) != 0 { case "rpm":
e.Flags = "GE" for i := range names {
} else if (flags&rpmutils.RPMSENSE_LESS) != 0 && (flags&rpmutils.RPMSENSE_EQUAL) != 0 { e := &Entry{
e.Flags = "LE" Name: names[i],
} else if (flags & rpmutils.RPMSENSE_GREATER) != 0 {
e.Flags = "GT"
} else if (flags & rpmutils.RPMSENSE_LESS) != 0 {
e.Flags = "LT"
} else if (flags & rpmutils.RPMSENSE_EQUAL) != 0 {
e.Flags = "EQ"
}
version := versions[i]
if version != "" {
parts := strings.Split(version, "-")
versionParts := strings.Split(parts[0], ":")
if len(versionParts) == 2 {
e.Version = versionParts[1]
e.Epoch = versionParts[0]
} else {
e.Version = versionParts[0]
e.Epoch = "0"
} }
if len(parts) > 1 { flags := flags[i]
e.Release = parts[1] if (flags&rpmutils.RPMSENSE_GREATER) != 0 && (flags&rpmutils.RPMSENSE_EQUAL) != 0 {
e.Flags = "GE"
} else if (flags&rpmutils.RPMSENSE_LESS) != 0 && (flags&rpmutils.RPMSENSE_EQUAL) != 0 {
e.Flags = "LE"
} else if (flags & rpmutils.RPMSENSE_GREATER) != 0 {
e.Flags = "GT"
} else if (flags & rpmutils.RPMSENSE_LESS) != 0 {
e.Flags = "LT"
} else if (flags & rpmutils.RPMSENSE_EQUAL) != 0 {
e.Flags = "EQ"
} }
}
entries = append(entries, e) version := versions[i]
if version != "" {
parts := strings.Split(version, "-")
versionParts := strings.Split(parts[0], ":")
if len(versionParts) == 2 {
e.Version = versionParts[1]
e.Epoch = versionParts[0]
} else {
e.Version = versionParts[0]
e.Epoch = "0"
}
if len(parts) > 1 {
e.Release = parts[1]
}
}
entries = append(entries, e)
}
case "alt":
for i := range names {
e := &Entry{
AltFlags: uint32(flags[i]),
}
e.Version = versions[i]
entries = append(entries, e)
}
} }
return entries return entries
} }

View file

@ -48,7 +48,7 @@ Mu0UFYgZ/bYnuvn/vz4wtCz8qMwsHUvP0PX3tbYFUctAPdrY6tiiDtcCddDECahx7SuVNP5dpmb5
zr, err := gzip.NewReader(bytes.NewReader(rpmPackageContent)) zr, err := gzip.NewReader(bytes.NewReader(rpmPackageContent))
require.NoError(t, err) require.NoError(t, err)
p, err := ParsePackage(zr) p, err := ParsePackage(zr, "rpm")
assert.NotNil(t, p) assert.NotNil(t, p)
require.NoError(t, err) require.NoError(t, err)

View file

@ -7,6 +7,7 @@ package process
import ( import (
"context" "context"
"runtime/pprof" "runtime/pprof"
"runtime/trace"
"strconv" "strconv"
"sync" "sync"
"sync/atomic" "sync/atomic"
@ -126,6 +127,27 @@ func (pm *Manager) AddTypedContext(parent context.Context, description, processT
return ctx, cancel, finished return ctx, cancel, finished
} }
// AddTypedContextTimeout creates a new context and adds it as a process. Once the process is finished, finished must be called
// to remove the process from the process table. It should not be called until the process is finished but must always be called.
//
// cancel should be used to cancel the returned context, however it will not remove the process from the process table.
// finished will cancel the returned context and remove it from the process table.
//
// Most processes will not need to use the cancel function but there will be cases whereby you want to cancel the process but not immediately remove it from the
// process table.
func (pm *Manager) AddTypedContextTimeout(parent context.Context, timeout time.Duration, description, processType string, currentlyRunning bool) (ctx context.Context, cancel context.CancelFunc, finished FinishedFunc) {
if timeout <= 0 {
// it's meaningless to use timeout <= 0, and it must be a bug! so we must panic here to tell developers to make the timeout correct
panic("the timeout must be greater than zero, otherwise the context will be cancelled immediately")
}
ctx, cancel = context.WithTimeout(parent, timeout)
ctx, _, finished = pm.Add(ctx, description, cancel, processType, currentlyRunning)
return ctx, cancel, finished
}
// AddContextTimeout creates a new context and add it as a process. Once the process is finished, finished must be called // AddContextTimeout creates a new context and add it as a process. Once the process is finished, finished must be called
// to remove the process from the process table. It should not be called until the process is finished but must always be called. // to remove the process from the process table. It should not be called until the process is finished but must always be called.
// //
@ -135,16 +157,7 @@ func (pm *Manager) AddTypedContext(parent context.Context, description, processT
// Most processes will not need to use the cancel function but there will be cases whereby you want to cancel the process but not immediately remove it from the // Most processes will not need to use the cancel function but there will be cases whereby you want to cancel the process but not immediately remove it from the
// process table. // process table.
func (pm *Manager) AddContextTimeout(parent context.Context, timeout time.Duration, description string) (ctx context.Context, cancel context.CancelFunc, finished FinishedFunc) { func (pm *Manager) AddContextTimeout(parent context.Context, timeout time.Duration, description string) (ctx context.Context, cancel context.CancelFunc, finished FinishedFunc) {
if timeout <= 0 { return pm.AddTypedContextTimeout(parent, timeout, description, NormalProcessType, true)
// it's meaningless to use timeout <= 0, and it must be a bug! so we must panic here to tell developers to make the timeout correct
panic("the timeout must be greater than zero, otherwise the context will be cancelled immediately")
}
ctx, cancel = context.WithTimeout(parent, timeout)
ctx, _, finished = pm.Add(ctx, description, cancel, NormalProcessType, true)
return ctx, cancel, finished
} }
// Add create a new process // Add create a new process
@ -159,6 +172,8 @@ func (pm *Manager) Add(ctx context.Context, description string, cancel context.C
parentPID = "" parentPID = ""
} }
ctx, traceTask := trace.NewTask(ctx, processType)
process := &process{ process := &process{
PID: pid, PID: pid,
ParentPID: parentPID, ParentPID: parentPID,
@ -166,6 +181,7 @@ func (pm *Manager) Add(ctx context.Context, description string, cancel context.C
Start: start, Start: start,
Cancel: cancel, Cancel: cancel,
Type: processType, Type: processType,
TraceTrask: traceTask,
} }
var finished FinishedFunc var finished FinishedFunc
@ -218,6 +234,7 @@ func (pm *Manager) nextPID() (start time.Time, pid IDType) {
} }
func (pm *Manager) remove(process *process) { func (pm *Manager) remove(process *process) {
process.TraceTrask.End()
deleted := false deleted := false
pm.mutex.Lock() pm.mutex.Lock()

View file

@ -4,8 +4,8 @@
package process package process
import ( import (
"bytes"
"fmt" "fmt"
"io"
"runtime/pprof" "runtime/pprof"
"sort" "sort"
"time" "time"
@ -175,13 +175,12 @@ func (pm *Manager) ProcessStacktraces(flat, noSystem bool) ([]*Process, int, int
// Now from within the lock we need to get the goroutines. // Now from within the lock we need to get the goroutines.
// Why? If we release the lock then between between filling the above map and getting // Why? If we release the lock then between between filling the above map and getting
// the stacktraces another process could be created which would then look like a dead process below // the stacktraces another process could be created which would then look like a dead process below
reader, writer := io.Pipe() var buf bytes.Buffer
defer reader.Close() if err := pprof.Lookup("goroutine").WriteTo(&buf, 0); err != nil {
go func() { return nil, 0, 0, err
err := pprof.Lookup("goroutine").WriteTo(writer, 0) }
_ = writer.CloseWithError(err)
}() stacks, err = profile.ParseData(buf.Bytes())
stacks, err = profile.Parse(reader)
if err != nil { if err != nil {
return nil, 0, 0, err return nil, 0, 0, err
} }

View file

@ -0,0 +1,93 @@
// Copyright 2025 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: GPL-3.0-or-later
package process
import (
"context"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestProcessStacktraces(t *testing.T) {
_, _, finish := GetManager().AddContext(context.Background(), "Normal process")
defer finish()
parentCtx, _, finish := GetManager().AddContext(context.Background(), "Children normal process")
defer finish()
_, _, finish = GetManager().AddContext(parentCtx, "Children process")
defer finish()
_, _, finish = GetManager().AddTypedContext(context.Background(), "System process", SystemProcessType, true)
defer finish()
t.Run("No flat with no system process", func(t *testing.T) {
processes, processCount, _, err := GetManager().ProcessStacktraces(false, true)
require.NoError(t, err)
assert.EqualValues(t, 4, processCount)
assert.Len(t, processes, 2)
assert.EqualValues(t, "Children normal process", processes[0].Description)
assert.EqualValues(t, NormalProcessType, processes[0].Type)
assert.Empty(t, processes[0].ParentPID)
assert.Len(t, processes[0].Children, 1)
assert.EqualValues(t, "Children process", processes[0].Children[0].Description)
assert.EqualValues(t, processes[0].PID, processes[0].Children[0].ParentPID)
assert.EqualValues(t, "Normal process", processes[1].Description)
assert.EqualValues(t, NormalProcessType, processes[1].Type)
assert.Empty(t, processes[1].ParentPID)
assert.Empty(t, processes[1].Children)
})
t.Run("Flat with no system process", func(t *testing.T) {
processes, processCount, _, err := GetManager().ProcessStacktraces(true, true)
require.NoError(t, err)
assert.EqualValues(t, 4, processCount)
assert.Len(t, processes, 3)
assert.EqualValues(t, "Children process", processes[0].Description)
assert.EqualValues(t, NormalProcessType, processes[0].Type)
assert.EqualValues(t, processes[1].PID, processes[0].ParentPID)
assert.Empty(t, processes[0].Children)
assert.EqualValues(t, "Children normal process", processes[1].Description)
assert.EqualValues(t, NormalProcessType, processes[1].Type)
assert.Empty(t, processes[1].ParentPID)
assert.Empty(t, processes[1].Children)
assert.EqualValues(t, "Normal process", processes[2].Description)
assert.EqualValues(t, NormalProcessType, processes[2].Type)
assert.Empty(t, processes[2].ParentPID)
assert.Empty(t, processes[2].Children)
})
t.Run("System process", func(t *testing.T) {
processes, processCount, _, err := GetManager().ProcessStacktraces(false, false)
require.NoError(t, err)
assert.EqualValues(t, 4, processCount)
assert.Len(t, processes, 4)
assert.EqualValues(t, "System process", processes[0].Description)
assert.EqualValues(t, SystemProcessType, processes[0].Type)
assert.Empty(t, processes[0].ParentPID)
assert.Empty(t, processes[0].Children)
assert.EqualValues(t, "Children normal process", processes[1].Description)
assert.EqualValues(t, NormalProcessType, processes[1].Type)
assert.Empty(t, processes[1].ParentPID)
assert.Len(t, processes[1].Children, 1)
assert.EqualValues(t, "Normal process", processes[2].Description)
assert.EqualValues(t, NormalProcessType, processes[2].Type)
assert.Empty(t, processes[2].ParentPID)
assert.Empty(t, processes[2].Children)
// This is the "main" pid, testing code always runs in a goroutine.
assert.EqualValues(t, "(unassociated)", processes[3].Description)
assert.EqualValues(t, NoneProcessType, processes[3].Type)
assert.Empty(t, processes[3].ParentPID)
assert.Empty(t, processes[3].Children)
})
}

View file

@ -5,12 +5,14 @@ package process
import ( import (
"context" "context"
"runtime/trace"
"time" "time"
) )
var ( var (
SystemProcessType = "system" SystemProcessType = "system"
RequestProcessType = "request" RequestProcessType = "request"
GitProcessType = "git"
NormalProcessType = "normal" NormalProcessType = "normal"
NoneProcessType = "none" NoneProcessType = "none"
) )
@ -23,6 +25,7 @@ type process struct {
Start time.Time Start time.Time
Cancel context.CancelFunc Cancel context.CancelFunc
Type string Type string
TraceTrask *trace.Task
} }
// ToProcess converts a process to a externally usable Process // ToProcess converts a process to a externally usable Process

View file

@ -32,7 +32,7 @@ var (
// issueNumericPattern matches string that references to a numeric issue, e.g. #1287 // issueNumericPattern matches string that references to a numeric issue, e.g. #1287
issueNumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[|\'|\")([#!][0-9]+)(?:\s|$|\)|\]|\'|\"|[:;,.?!]\s|[:;,.?!]$)`) issueNumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[|\'|\")([#!][0-9]+)(?:\s|$|\)|\]|\'|\"|[:;,.?!]\s|[:;,.?!]$)`)
// issueAlphanumericPattern matches string that references to an alphanumeric issue, e.g. ABC-1234 // issueAlphanumericPattern matches string that references to an alphanumeric issue, e.g. ABC-1234
issueAlphanumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[|\"|\')([A-Z]{1,10}-[1-9][0-9]*)(?:\s|$|\)|\]|:|\.(\s|$)|\"|\')`) issueAlphanumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[|\"|\')([A-Z]{1,10}-[1-9][0-9]*)(?:\s|$|\)|\]|:|\.(\s|$)|\"|\'|,)`)
// crossReferenceIssueNumericPattern matches string that references a numeric issue in a different repository // crossReferenceIssueNumericPattern matches string that references a numeric issue in a different repository
// e.g. org/repo#12345 // e.g. org/repo#12345
crossReferenceIssueNumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[)([0-9a-zA-Z-_\.]+/[0-9a-zA-Z-_\.]+[#!][0-9]+)(?:\s|$|\)|\]|[:;,.?!]\s|[:;,.?!]$)`) crossReferenceIssueNumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[)([0-9a-zA-Z-_\.]+/[0-9a-zA-Z-_\.]+[#!][0-9]+)(?:\s|$|\)|\]|[:;,.?!]\s|[:;,.?!]$)`)

View file

@ -466,6 +466,7 @@ func TestRegExp_issueAlphanumericPattern(t *testing.T) {
"ABC-123:", "ABC-123:",
"\"ABC-123\"", "\"ABC-123\"",
"'ABC-123'", "'ABC-123'",
"ABC-123, unknown PR",
} }
falseTestCases := []string{ falseTestCases := []string{
"RC-08", "RC-08",

View file

@ -47,7 +47,7 @@ func AesDecrypt(key, text []byte) ([]byte, error) {
cfb.XORKeyStream(text, text) cfb.XORKeyStream(text, text)
data, err := base64.StdEncoding.DecodeString(string(text)) data, err := base64.StdEncoding.DecodeString(string(text))
if err != nil { if err != nil {
return nil, fmt.Errorf("AesDecrypt invalid decrypted base64 string: %w", err) return nil, fmt.Errorf("AesDecrypt invalid decrypted base64 string: %w - it can be caused by a change of the [security].SECRET_KEY setting or a database corruption - `forgejo doctor check --run check-db-consistency --fix` will get rid of orphaned rows found in the `two_factor` table and may fix this problem if they are the one with the invalid content", err)
} }
return data, nil return data, nil
} }

View file

@ -168,3 +168,22 @@ func EnvironmentToConfig(cfg ConfigProvider, envs []string) (changed bool) {
} }
return changed return changed
} }
// InitGiteaEnvVars initializes the environment variables for gitea
func InitGiteaEnvVars() {
// Ideally Gitea should only accept the environment variables which it clearly knows instead of unsetting the ones it doesn't want,
// but the ideal behavior would be a breaking change, and it seems not bringing enough benefits to end users,
// so at the moment we could still keep "unsetting the unnecessary environments"
// HOME is managed by Gitea, Gitea's git should use "HOME/.gitconfig".
// But git would try "XDG_CONFIG_HOME/git/config" first if "HOME/.gitconfig" does not exist,
// then our git.InitFull would still write to "XDG_CONFIG_HOME/git/config" if XDG_CONFIG_HOME is set.
_ = os.Unsetenv("XDG_CONFIG_HOME")
_ = os.Unsetenv("GIT_AUTHOR_NAME")
_ = os.Unsetenv("GIT_AUTHOR_EMAIL")
_ = os.Unsetenv("GIT_AUTHOR_DATE")
_ = os.Unsetenv("GIT_COMMITTER_NAME")
_ = os.Unsetenv("GIT_COMMITTER_EMAIL")
_ = os.Unsetenv("GIT_COMMITTER_DATE")
}

View file

@ -5,8 +5,6 @@ package setting
import ( import (
"time" "time"
"code.gitea.io/gitea/modules/log"
) )
// CORSConfig defines CORS settings // CORSConfig defines CORS settings
@ -28,7 +26,4 @@ var CORSConfig = struct {
func loadCorsFrom(rootCfg ConfigProvider) { func loadCorsFrom(rootCfg ConfigProvider) {
mustMapSetting(rootCfg, "cors", &CORSConfig) mustMapSetting(rootCfg, "cors", &CORSConfig)
if CORSConfig.Enabled {
log.Info("CORS Service Enabled")
}
} }

View file

@ -6,7 +6,7 @@ package setting
import ( import (
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"github.com/go-fed/httpsig" "github.com/42wim/httpsig"
) )
// Federation settings // Federation settings

View file

@ -109,7 +109,7 @@ func IndexerGlobFromString(globstr string) []Glob {
expr = strings.TrimSpace(expr) expr = strings.TrimSpace(expr)
if expr != "" { if expr != "" {
if g, err := glob.Compile(expr, '.', '/'); err != nil { if g, err := glob.Compile(expr, '.', '/'); err != nil {
log.Info("Invalid glob expression '%s' (skipped): %v", expr, err) log.Warn("Invalid glob expression '%s' (skipped): %v", expr, err)
} else { } else {
extarr = append(extarr, Glob{glob: g, pattern: expr}) extarr = append(extarr, Glob{glob: g, pattern: expr})
} }

View file

@ -263,8 +263,6 @@ func loadMailerFrom(rootCfg ConfigProvider) {
MailService.OverrideEnvelopeFrom = true MailService.OverrideEnvelopeFrom = true
MailService.EnvelopeFrom = parsed.Address MailService.EnvelopeFrom = parsed.Address
} }
log.Info("Mail Service Enabled")
} }
func loadRegisterMailFrom(rootCfg ConfigProvider) { func loadRegisterMailFrom(rootCfg ConfigProvider) {
@ -275,7 +273,6 @@ func loadRegisterMailFrom(rootCfg ConfigProvider) {
return return
} }
Service.RegisterEmailConfirm = true Service.RegisterEmailConfirm = true
log.Info("Register Mail Service Enabled")
} }
func loadNotifyMailFrom(rootCfg ConfigProvider) { func loadNotifyMailFrom(rootCfg ConfigProvider) {
@ -286,7 +283,6 @@ func loadNotifyMailFrom(rootCfg ConfigProvider) {
return return
} }
Service.EnableNotifyMail = true Service.EnableNotifyMail = true
log.Info("Notify Mail Service Enabled")
} }
func tryResolveAddr(addr string) []net.IPAddr { func tryResolveAddr(addr string) []net.IPAddr {

View file

@ -42,6 +42,7 @@ var (
LimitSizePub int64 LimitSizePub int64
LimitSizePyPI int64 LimitSizePyPI int64
LimitSizeRpm int64 LimitSizeRpm int64
LimitSizeAlt int64
LimitSizeRubyGems int64 LimitSizeRubyGems int64
LimitSizeSwift int64 LimitSizeSwift int64
LimitSizeVagrant int64 LimitSizeVagrant int64
@ -106,6 +107,7 @@ func loadPackagesFrom(rootCfg ConfigProvider) (err error) {
Packages.LimitSizeSwift = mustBytes(sec, "LIMIT_SIZE_SWIFT") Packages.LimitSizeSwift = mustBytes(sec, "LIMIT_SIZE_SWIFT")
Packages.LimitSizeVagrant = mustBytes(sec, "LIMIT_SIZE_VAGRANT") Packages.LimitSizeVagrant = mustBytes(sec, "LIMIT_SIZE_VAGRANT")
Packages.DefaultRPMSignEnabled = sec.Key("DEFAULT_RPM_SIGN_ENABLED").MustBool(false) Packages.DefaultRPMSignEnabled = sec.Key("DEFAULT_RPM_SIGN_ENABLED").MustBool(false)
Packages.LimitSizeAlt = mustBytes(sec, "LIMIT_SIZE_ALT")
return nil return nil
} }

View file

@ -9,6 +9,7 @@ import (
"code.gitea.io/gitea/modules/test" "code.gitea.io/gitea/modules/test"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
) )
func TestDisplayNameDefault(t *testing.T) { func TestDisplayNameDefault(t *testing.T) {
@ -34,3 +35,41 @@ func TestDisplayNameCustomFormat(t *testing.T) {
displayName := generateDisplayName() displayName := generateDisplayName()
assert.Equal(t, "Forgejo - Beyond coding. We Forge.", displayName) assert.Equal(t, "Forgejo - Beyond coding. We Forge.", displayName)
} }
func TestMaxUserRedirectsDefault(t *testing.T) {
iniStr := ``
cfg, err := NewConfigProviderFromData(iniStr)
require.NoError(t, err)
loadServiceFrom(cfg)
assert.EqualValues(t, 0, Service.UsernameCooldownPeriod)
assert.EqualValues(t, 0, Service.MaxUserRedirects)
iniStr = `[service]
MAX_USER_REDIRECTS = 8`
cfg, err = NewConfigProviderFromData(iniStr)
require.NoError(t, err)
loadServiceFrom(cfg)
assert.EqualValues(t, 0, Service.UsernameCooldownPeriod)
assert.EqualValues(t, 8, Service.MaxUserRedirects)
iniStr = `[service]
USERNAME_COOLDOWN_PERIOD = 3`
cfg, err = NewConfigProviderFromData(iniStr)
require.NoError(t, err)
loadServiceFrom(cfg)
assert.EqualValues(t, 3, Service.UsernameCooldownPeriod)
assert.EqualValues(t, 5, Service.MaxUserRedirects)
iniStr = `[service]
USERNAME_COOLDOWN_PERIOD = 3
MAX_USER_REDIRECTS = 8`
cfg, err = NewConfigProviderFromData(iniStr)
require.NoError(t, err)
loadServiceFrom(cfg)
assert.EqualValues(t, 3, Service.UsernameCooldownPeriod)
assert.EqualValues(t, 8, Service.MaxUserRedirects)
}

View file

@ -85,6 +85,8 @@ var Service = struct {
DefaultOrgMemberVisible bool DefaultOrgMemberVisible bool
UserDeleteWithCommentsMaxTime time.Duration UserDeleteWithCommentsMaxTime time.Duration
ValidSiteURLSchemes []string ValidSiteURLSchemes []string
UsernameCooldownPeriod int64
MaxUserRedirects int64
// OpenID settings // OpenID settings
EnableOpenIDSignIn bool EnableOpenIDSignIn bool
@ -138,6 +140,7 @@ func CompileEmailGlobList(sec ConfigSection, keys ...string) (globs []glob.Glob)
return globs return globs
} }
func loadServiceFrom(rootCfg ConfigProvider) { func loadServiceFrom(rootCfg ConfigProvider) {
sec := rootCfg.Section("service") sec := rootCfg.Section("service")
Service.ActiveCodeLives = sec.Key("ACTIVE_CODE_LIVE_MINUTES").MustInt(180) Service.ActiveCodeLives = sec.Key("ACTIVE_CODE_LIVE_MINUTES").MustInt(180)
@ -257,6 +260,14 @@ func loadServiceFrom(rootCfg ConfigProvider) {
} }
} }
Service.ValidSiteURLSchemes = schemes Service.ValidSiteURLSchemes = schemes
Service.UsernameCooldownPeriod = sec.Key("USERNAME_COOLDOWN_PERIOD").MustInt64(0)
// Only set a default if USERNAME_COOLDOWN_PERIOD's feature is active.
maxUserRedirectsDefault := int64(0)
if Service.UsernameCooldownPeriod > 0 {
maxUserRedirectsDefault = 5
}
Service.MaxUserRedirects = sec.Key("MAX_USER_REDIRECTS").MustInt64(maxUserRedirectsDefault)
mustMapSetting(rootCfg, "service.explore", &Service.Explore) mustMapSetting(rootCfg, "service.explore", &Service.Explore)

View file

@ -73,6 +73,4 @@ func loadSessionFrom(rootCfg ConfigProvider) {
SessionConfig.ProviderConfig = string(shadowConfig) SessionConfig.ProviderConfig = string(shadowConfig)
SessionConfig.OriginalProvider = SessionConfig.Provider SessionConfig.OriginalProvider = SessionConfig.Provider
SessionConfig.Provider = "VirtualSession" SessionConfig.Provider = "VirtualSession"
log.Info("Session Service Enabled")
} }

View file

@ -20,7 +20,6 @@ func loadTimeFrom(rootCfg ConfigProvider) {
if err != nil { if err != nil {
log.Fatal("Load time zone failed: %v", err) log.Fatal("Load time zone failed: %v", err)
} }
log.Info("Default UI Location is %v", zone)
} }
if DefaultUILocation == nil { if DefaultUILocation == nil {
DefaultUILocation = time.Local DefaultUILocation = time.Local

25
modules/structs/action.go Normal file
View file

@ -0,0 +1,25 @@
// Copyright 2024 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package structs
// ActionRunJob represents a job of a run
// swagger:model
type ActionRunJob struct {
// the action run job id
ID int64 `json:"id"`
// the repository id
RepoID int64 `json:"repo_id"`
// the owner id
OwnerID int64 `json:"owner_id"`
// the action run job name
Name string `json:"name"`
// the action run job needed ids
Needs []string `json:"needs"`
// the action run job labels to run on
RunsOn []string `json:"runs_on"`
// the action run job latest task id
TaskID int64 `json:"task_id"`
// the action run job status
Status string `json:"status"`
}

View file

@ -5,6 +5,7 @@ package structs
// Compare represents a comparison between two commits. // Compare represents a comparison between two commits.
type Compare struct { type Compare struct {
TotalCommits int `json:"total_commits"` // Total number of commits in the comparison. TotalCommits int `json:"total_commits"` // Total number of commits in the comparison.
Commits []*Commit `json:"commits"` // List of commits in the comparison. Commits []*Commit `json:"commits"` // List of commits in the comparison.
Files []*CommitAffectedFiles `json:"files"` // Total files modified in this comparison.
} }

View file

@ -103,6 +103,10 @@ func NewFuncMap() template.FuncMap {
"AppVer": func() string { "AppVer": func() string {
return setting.AppVer return setting.AppVer
}, },
"AppVerNoMetadata": func() string {
version, _, _ := strings.Cut(setting.AppVer, "+")
return version
},
"AppDomain": func() string { // documented in mail-templates.md "AppDomain": func() string { // documented in mail-templates.md
return setting.Domain return setting.Domain
}, },

View file

@ -22,20 +22,7 @@ func (k *KeyLocale) HasKey(trKey string) bool {
// TrHTML implements Locale. // TrHTML implements Locale.
func (k *KeyLocale) TrHTML(trKey string, trArgs ...any) template.HTML { func (k *KeyLocale) TrHTML(trKey string, trArgs ...any) template.HTML {
args := slices.Clone(trArgs) return template.HTML(k.TrString(trKey, PrepareArgsForHTML(trArgs...)...))
for i, v := range args {
switch v := v.(type) {
case nil, bool, int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, float32, float64, template.HTML:
// for most basic types (including template.HTML which is safe), just do nothing and use it
case string:
args[i] = template.HTMLEscapeString(v)
case fmt.Stringer:
args[i] = template.HTMLEscapeString(v.String())
default:
args[i] = template.HTMLEscapeString(fmt.Sprint(v))
}
}
return template.HTML(k.TrString(trKey, args...))
} }
// TrString implements Locale. // TrString implements Locale.
@ -43,6 +30,11 @@ func (k *KeyLocale) TrString(trKey string, trArgs ...any) string {
return FormatDummy(trKey, trArgs...) return FormatDummy(trKey, trArgs...)
} }
// TrPluralString implements Locale.
func (k *KeyLocale) TrPluralString(count any, trKey string, trArgs ...any) template.HTML {
return template.HTML(FormatDummy(trKey, PrepareArgsForHTML(trArgs...)...))
}
func FormatDummy(trKey string, args ...any) string { func FormatDummy(trKey string, args ...any) string {
if len(args) == 0 { if len(args) == 0 {
return fmt.Sprintf("(%s)", trKey) return fmt.Sprintf("(%s)", trKey)

View file

@ -8,6 +8,8 @@ import (
) )
var ( var (
ErrLocaleAlreadyExist = util.SilentWrap{Message: "lang already exists", Err: util.ErrAlreadyExist} ErrLocaleAlreadyExist = util.SilentWrap{Message: "lang already exists", Err: util.ErrAlreadyExist}
ErrUncertainArguments = util.SilentWrap{Message: "arguments to i18n should not contain uncertain slices", Err: util.ErrInvalidArgument} ErrLocaleDoesNotExist = util.SilentWrap{Message: "lang does not exist", Err: util.ErrNotExist}
ErrTranslationDoesNotExist = util.SilentWrap{Message: "translation does not exist", Err: util.ErrNotExist}
ErrUncertainArguments = util.SilentWrap{Message: "arguments to i18n should not contain uncertain slices", Err: util.ErrInvalidArgument}
) )

View file

@ -8,11 +8,28 @@ import (
"io" "io"
) )
type (
PluralFormIndex uint8
PluralFormRule func(int64) PluralFormIndex
)
const (
PluralFormZero PluralFormIndex = iota
PluralFormOne
PluralFormTwo
PluralFormFew
PluralFormMany
PluralFormOther
)
var DefaultLocales = NewLocaleStore() var DefaultLocales = NewLocaleStore()
type Locale interface { type Locale interface {
// TrString translates a given key and arguments for a language // TrString translates a given key and arguments for a language
TrString(trKey string, trArgs ...any) string TrString(trKey string, trArgs ...any) string
// TrPluralString translates a given pluralized key and arguments for a language.
// This function returns an error if new-style support for the given key is not available.
TrPluralString(count any, trKey string, trArgs ...any) template.HTML
// TrHTML translates a given key and arguments for a language, string arguments are escaped to HTML // TrHTML translates a given key and arguments for a language, string arguments are escaped to HTML
TrHTML(trKey string, trArgs ...any) template.HTML TrHTML(trKey string, trArgs ...any) template.HTML
// HasKey reports if a locale has a translation for a given key // HasKey reports if a locale has a translation for a given key
@ -31,8 +48,10 @@ type LocaleStore interface {
Locale(langName string) (Locale, bool) Locale(langName string) (Locale, bool)
// HasLang returns whether a given language is present in the store // HasLang returns whether a given language is present in the store
HasLang(langName string) bool HasLang(langName string) bool
// AddLocaleByIni adds a new language to the store // AddLocaleByIni adds a new old-style language to the store
AddLocaleByIni(langName, langDesc string, source, moreSource []byte) error AddLocaleByIni(langName, langDesc string, pluralRule PluralFormRule, source, moreSource []byte) error
// AddLocaleByJSON adds new-style content to an existing language to the store
AddToLocaleFromJSON(langName string, source []byte) error
} }
// ResetDefaultLocales resets the current default locales // ResetDefaultLocales resets the current default locales

Some files were not shown because too many files have changed in this diff Show more