Commit Graph

3007 Commits

Author SHA1 Message Date
GiteaBot
0990eb44ce [skip ci] Updated translations via Crowdin 2025-06-21 00:37:09 +00:00
ChristopherHX
cda90eca31
Add workflow_run api + webhook (#33964)
Implements 
- https://docs.github.com/en/rest/actions/workflow-jobs?apiVersion=2022-11-28#list-jobs-for-a-workflow-run--code-samples
- https://docs.github.com/en/rest/actions/workflow-jobs?apiVersion=2022-11-28#get-a-job-for-a-workflow-run--code-samples
- https://docs.github.com/en/rest/actions/workflow-runs?apiVersion=2022-11-28#list-workflow-runs-for-a-repository
- https://docs.github.com/en/rest/actions/workflow-runs?apiVersion=2022-11-28#get-a-workflow-run
  - `/actions/runs` for global + user + org (Gitea only)
  - `/actions/jobs` for global + user + org + repository (Gitea only)
  - workflow_run webhook + action trigger
    - limitations
- workflow id is assigned to a string, this may result into problems in
strongly typed clients

Fixes
- workflow_job webhook url to no longer contain the `runs/<run>` part to
align with api
- workflow instance does now use it's name inside the file instead of
filename if set

Refactoring
- Moved a lot of logic from workflows/workflow_job into a shared module
used by both webhook and api

TODO
- [x] Verify Keda Compatibility
- [x] Edit Webhook API bug is resolved
 
Closes https://github.com/go-gitea/gitea/issues/23670
Closes https://github.com/go-gitea/gitea/issues/23796
Closes https://github.com/go-gitea/gitea/issues/24898
Replaces https://github.com/go-gitea/gitea/pull/28047 and is much more
complete

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-06-20 20:14:00 +08:00
GiteaBot
d462ce149d [skip ci] Updated translations via Crowdin 2025-06-20 00:37:18 +00:00
GiteaBot
67083437cd [skip ci] Updated translations via Crowdin 2025-06-19 00:37:30 +00:00
GiteaBot
ecc6685c20 [skip ci] Updated translations via Crowdin 2025-06-18 00:37:12 +00:00
GiteaBot
439ebe7031 [skip ci] Updated translations via Crowdin 2025-06-17 00:37:42 +00:00
bytedream
3a37d63d61
Allow renaming/moving binary/LFS files in the UI (#34350)
Adds the ability to rename/move binary files like binary blobs or images
and files that are too large in the web ui.
This was purposed in #24722, along with the ability edit images via an
upload of a new image, which I didn't implement here (could be done in a
separate PR).

Binary file content:

![binary](https://github.com/user-attachments/assets/61d9ff71-25d3-4832-9288-452cdefc7283)

File too large:

![toolarge](https://github.com/user-attachments/assets/3b42dbd0-e76a-4c3c-92d2-52ebffedea64)

GitHub does the same (I've copied the text from there):

![gh](https://github.com/user-attachments/assets/e1499813-fb71-4544-9d58-086046a5f13e)
2025-06-16 17:15:07 -07:00
GiteaBot
0d3e9956cd [skip ci] Updated translations via Crowdin 2025-06-15 00:41:44 +00:00
GiteaBot
28debdbe00 [skip ci] Updated translations via Crowdin 2025-06-14 00:35:48 +00:00
GiteaBot
bc28654b49 [skip ci] Updated translations via Crowdin 2025-06-13 00:37:13 +00:00
GiteaBot
06ccb3a1d4 [skip ci] Updated translations via Crowdin 2025-06-12 00:36:44 +00:00
GiteaBot
d5afdccde8 [skip ci] Updated translations via Crowdin 2025-06-11 00:37:02 +00:00
GiteaBot
2c341b6803 [skip ci] Updated translations via Crowdin 2025-06-10 00:37:13 +00:00
GiteaBot
1fe652cd26 [skip ci] Updated translations via Crowdin 2025-06-09 00:39:30 +00:00
GiteaBot
1e0758a9f1 [skip ci] Updated translations via Crowdin 2025-06-08 00:41:38 +00:00
silverwind
f6f6aedd4f
Update JS deps, regenerate SVGs (#34640)
Result of `make update-js svg`.
2025-06-07 17:59:36 +00:00
Kemal Zebari
47d69b7749
Validate hex colors when creating/editing labels (#34623)
Resolves #34618.

---------

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-06-07 11:25:08 +03:00
NorthRealm
3f7dbbdaf1
Small fix in Pull Requests page (#34612) 2025-06-06 02:10:42 +00:00
GiteaBot
bb6377d080 [skip ci] Updated translations via Crowdin 2025-05-31 00:35:32 +00:00
GiteaBot
07d802a815 [skip ci] Updated translations via Crowdin 2025-05-30 00:36:36 +00:00
NorthRealm
4cb0c641ce
Add "View workflow file" to Actions list page (#34538)
This PR adds "View workflow file" to Actions list page, and replaces the
redundant link.

Related #34530

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-05-28 20:30:00 +08:00
GiteaBot
9d4ebc1f2c [skip ci] Updated translations via Crowdin 2025-05-26 00:37:55 +00:00
GiteaBot
4dd833ca9e [skip ci] Updated translations via Crowdin 2025-05-23 00:36:43 +00:00
GiteaBot
0d1d57c5bf [skip ci] Updated translations via Crowdin 2025-05-22 00:36:11 +00:00
GiteaBot
14bb8f7845 [skip ci] Updated translations via Crowdin 2025-05-21 00:37:21 +00:00
a1012112796
28dec9a27d
ui: add a default tab on repo header when migrating (#34503)
Signed-off-by: a1012112796 <1012112796@qq.com>
2025-05-20 11:14:18 -04:00
GiteaBot
ec10c6ba5a [skip ci] Updated translations via Crowdin 2025-05-19 00:38:52 +00:00
Ryo Hanafusa
b6c0667474
Add R-HNF to the TRANSLATORS file (#34494)
I would like to be added to the TRANSLATORS file.

Here are my related activities:
* https://crowdin.com/profile/R-HNF/activity
* commit: [skip ci] Updated translations via Crowdin
319d03fbc0

I also referred to the following PRs:
* #8451
* #8292
2025-05-17 09:58:27 -07:00
GiteaBot
319d03fbc0 [skip ci] Updated translations via Crowdin 2025-05-15 00:35:31 +00:00
GiteaBot
b6bf128f1e [skip ci] Updated translations via Crowdin 2025-05-14 00:36:37 +00:00
NorthRealm
1e2f3514b9
Add endpoint deleting workflow run (#34337)
Add endpoint deleting workflow run
Resolves #26219

/claim #26219

---------

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-05-13 19:18:13 +00:00
GiteaBot
0902d42fc7 [skip ci] Updated translations via Crowdin 2025-05-12 00:38:34 +00:00
GiteaBot
0f63a5ef48 [skip ci] Updated translations via Crowdin 2025-05-10 00:34:13 +00:00
GiteaBot
44aadc37c9 [skip ci] Updated translations via Crowdin 2025-05-09 00:36:27 +00:00
NorthRealm
4c611bf280
Add a button editing action secret (#34348)
Add a button editing action secret
Closes #34190

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-05-08 17:11:43 +00:00
GiteaBot
82071ee730 [skip ci] Updated translations via Crowdin 2025-05-08 00:36:14 +00:00
silverwind
dd886d729f
Update JS and PY dependencies (#34391)
Result of `make update-js update-py svg`. Quick test of the UI worked.
2025-05-07 13:21:38 -04:00
NorthRealm
6b2c506e05
Grey out expired artifact on Artifacts list (#34314)
Grey out expired artifact on Artifacts list.

![1](https://github.com/user-attachments/assets/79c00e39-29f5-4264-b7b2-7ed638ab71c1)

![2](https://github.com/user-attachments/assets/686b745f-d6d7-4921-8e1b-3472ac8b6c17)

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-05-05 21:53:17 -07:00
GiteaBot
833c2a432b [skip ci] Updated translations via Crowdin 2025-05-05 00:38:37 +00:00
Lunny Xiao
62f73491f3
Use lfs label for lfs file rather than a long description (#34363)
Before


![image](https://github.com/user-attachments/assets/ed6c9221-5a6a-4717-8178-e5528fd180bf)

After


![image](https://github.com/user-attachments/assets/baa94350-ead4-46bf-b4b7-1bfd3aa5dcac)
2025-05-05 00:07:29 +03:00
GiteaBot
ce6699db01 [skip ci] Updated translations via Crowdin 2025-04-30 00:35:28 +00:00
wxiaoguang
0148d03f21
Enforce two-factor auth (2FA: TOTP or WebAuthn) (#34187)
Fix #880

Design:

1. A global setting `security.TWO_FACTOR_AUTH`.
* To support org-level config, we need to introduce a better "owner
setting" system first (in the future)
2. A user without 2FA can login and may explore, but can NOT read or
write to any repositories via API/web.
3. Keep things as simple as possible.
* This option only aggressively suggest users to enable their 2FA at the
moment, it does NOT guarantee that users must have 2FA before all other
operations, it should be good enough for real world use cases.
* Some details and tests could be improved in the future since this
change only adds a check and seems won't affect too much.

---------

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
2025-04-28 15:31:59 -07:00
GiteaBot
bf8f111f53 [skip ci] Updated translations via Crowdin 2025-04-27 00:38:03 +00:00
GiteaBot
8cea1aeea5 [skip ci] Updated translations via Crowdin 2025-04-25 00:35:36 +00:00
Brecht Van Lommel
a9343896f4
Option to delay conflict checking of old pull requests until page view (#27779)
`[repository.pull-request] DELAY_CHECK_FOR_INACTIVE_DAYS` is a new
setting to delay the mergeable check for pull requests that have been
inactive for the specified number of days.

This avoids potentially long delays for big repositories with many pull
requests. and reduces system load overall when there are many
repositories or pull requests.

When viewing the PR, checking will start immediately and the PR merge
box will automatically reload when complete. Accessing the PR through
the API will also start checking immediately.

The default value of `7` provides a balance between system load, and
keeping behavior similar to what it was before both for users and API
access. With `0` all conflict checking will be delayed, while `-1`
always checks immediately to restore the previous behavior.

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-04-24 19:26:57 +00:00
Kerwin Bryant
c2c04ffff7
Add fullscreen mode as a more efficient operation way to view projects (#34081)
Maybe fix #33482, maybe fix #34015

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-04-23 13:42:22 +08:00
GiteaBot
04fab1818b [skip ci] Updated translations via Crowdin 2025-04-23 00:34:59 +00:00
GiteaBot
310fdeb453 [skip ci] Updated translations via Crowdin 2025-04-22 00:35:41 +00:00
YaFou
e947f309b1
Add API routes to lock and unlock issues (#34165)
This pull request adds a GitHub-compatible API endpoint to lock and
unlock an issue.

The following routes exist now:
- `PUT /api/v1/repos/{owner}/{repo}/issues/{id}/lock` to lock an issue
- `DELETE /api/v1/repos/{owner}/{repo}/issues/{id}/lock` to unlock an issue

Fixes #33677
Fixes #20012

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-04-21 00:43:43 +00:00
GiteaBot
8b7c0d8f8d [skip ci] Updated translations via Crowdin 2025-04-19 00:32:56 +00:00
GiteaBot
f1cd90d3bd [skip ci] Updated translations via Crowdin 2025-04-16 00:35:25 +00:00
Meng Zhuo
921d3a394d
feat: add riscv64 support (#34199) 2025-04-14 16:32:54 +00:00
Rowan Bohde
c57304ac3f
Add middleware for request prioritization (#33951)
This adds a middleware for overload protection that is intended to help protect against malicious scrapers.
It does this via [`codel`](https://github.com/bohde/codel), which will perform the following:

1. Limit the number of in-flight requests to some user-defined max
2. When in-flight requests have reached their begin queuing requests.
    Logged-in requests having priority above logged-out requests
3. Once a request has been queued for too long,
    it has a probabilistic chance to be rejected based on how overloaded the entire system is.

When a server experiences more traffic than it can handle,
this keeps latency low for logged-in users and rejects just
enough requests from logged-out users to not overload the service.

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Co-authored-by: Giteabot <teabot@gitea.io>
2025-04-14 16:25:48 +02:00
GiteaBot
7a587bc2d3 [skip ci] Updated translations via Crowdin 2025-04-12 00:33:41 +00:00
GiteaBot
d725b78824 [skip ci] Updated translations via Crowdin 2025-04-11 00:34:55 +00:00
Thomas E Lackey
fa49cd719f
feat: Add sorting by exclusive labels (issue priority) (#33206)
Fix #2616

This PR adds a new sort option for exclusive labels.

For exclusive labels, a new property is exposed called "order", while in
the UI options are populated automatically in the `Sort` column (see
screenshot below) for each exclusive label scope.

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-04-10 17:18:07 +00:00
GiteaBot
c0898f7ed9 [skip ci] Updated translations via Crowdin 2025-04-09 00:34:55 +00:00
Lunny Xiao
32b97b3ce8
Uniform all temporary directories and allow customizing temp path (#32352)
This PR uniform all temporary directory usage so that it will be easier
to manage.

Relate to #31792 

- [x] Added a new setting to allow users to configure the global
temporary directory.
- [x] Move all temporary files and directories to be placed under
os.Temp()/gitea.
- [x] `setting.Repository.Local.LocalCopyPath` now will be
`setting.TempPath/local-repo` and the customized path is removed.
```diff
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;[repository.local]
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Path for local repository copy. Defaults to  TEMP_PATH + `local-repo`, this is deprecated and cannot be changed
-;LOCAL_COPY_PATH = local-repo
```

- [x] `setting.Repository.Upload.TempPath` now will be
`settting.TempPath/uploads` and the customized path is removed.
```diff
;[repository.upload]
-;;
-;; Path for uploads. Defaults to TEMP_PATH + `uploads`
-;TEMP_PATH = uploads
```

- [x] `setting.Packages.ChunkedUploadPath` now will be
`settting.TempPath/package-upload` and the customized path is removed.
```diff
;[packages]
-;;
-;; Path for chunked uploads. Defaults it's `package-upload` under `TEMP_PATH` unless it's an absolute path.
-;CHUNKED_UPLOAD_PATH = package-upload
```

- [x] `setting.SSH.KeyTestPath` now will be
`settting.TempPath/ssh_key_test` and the customized path is removed.
```diff
[server]
-;;
-;; Directory to create temporary files in when testing public keys using ssh-keygen,
-;; default is the system temporary directory.
-;SSH_KEY_TEST_PATH =
```

TODO:
- [ ] setting.PprofDataPath haven't been changed because it may need to
be kept until somebody read it but temp path may be clean up any time.

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-04-08 16:15:28 +00:00
silverwind
90b509aafb
Update JS and PY deps (#34143)
- Update selected dependencies.
- Ran `make svg && git add --all`.
- Tested mermaid and swagger.
- Mark `fileicon` assets as generated so they don't spam the diff.
- Webpack is not upgraded because it has some regression.
2025-04-07 21:42:32 -07:00
GiteaBot
8ca51abadd [skip ci] Updated translations via Crowdin 2025-04-08 00:34:12 +00:00
GiteaBot
e8b54d9e44 [skip ci] Updated translations via Crowdin 2025-04-04 00:33:58 +00:00
wxiaoguang
6ed1b26c58
Do not show 500 error when default branch doesn't exist (#34096)
Fix #34090
2025-04-01 21:39:00 -07:00
GiteaBot
e2ac789b49 [skip ci] Updated translations via Crowdin 2025-04-02 00:35:16 +00:00
Håkon Harnes
dcf94c9e1b
fix(i18n): clarify ownership in password change error messages (#34092)
This PR updates the English localization messages
`password_username_disabled` and `password_full_name_disabled` to
replace "their" with "your", making it clear that the messages refer to
the currently signed-in user.
2025-04-01 21:54:13 +08:00
GiteaBot
d54418a7d3 [skip ci] Updated translations via Crowdin 2025-04-01 00:39:56 +00:00
Simon Priet
342432e52a
fix(#34076):replace assgniee translation key (#34077)
Fix the typo on the `filter_assginee_no_assigne` key used in
translations.

The typo itself doesn't produce a bug (as it's there both on the code
and on the locales)

Side Note: Github UI is not the best to bulk change this :/ Squashing
commits on the PR should be adequate.

Closes #34076 .

---------

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
2025-03-31 19:11:15 +00:00
GiteaBot
2f43544c01 [skip ci] Updated translations via Crowdin 2025-03-31 00:36:40 +00:00
GiteaBot
0b847f4584 [skip ci] Updated translations via Crowdin 2025-03-30 00:37:48 +00:00
yp05327
5023238088
Add descriptions for private repo public access settings and improve the UI (#34057)
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-03-29 21:24:27 +08:00
wxiaoguang
cddd19efc8
Add anonymous access support for private/unlisted repositories (#34051)
Follow #33127

Fix #8649, fix #639

This is a complete solution. A repo unit could be set to:

* Anonymous read (non-signed-in user)
* Everyone read (signed-in user)
* Everyone write (wiki-only)
2025-03-29 13:26:41 +08:00
GiteaBot
3c95b0758f [skip ci] Updated translations via Crowdin 2025-03-27 00:33:53 +00:00
GiteaBot
536f4c6de8 [skip ci] Updated translations via Crowdin 2025-03-25 00:34:21 +00:00
GiteaBot
08510adefe [skip ci] Updated translations via Crowdin 2025-03-24 00:35:25 +00:00
GiteaBot
0fee4f1392 [skip ci] Updated translations via Crowdin 2025-03-23 00:37:07 +00:00
wxiaoguang
e1bba9c1a2
Improve oauth2 error handling (#33969)
Show the callback error to end users, it should be safe.
Fix #33967
2025-03-22 10:15:45 +08:00
GiteaBot
1c5c13a442 [skip ci] Updated translations via Crowdin 2025-03-22 00:33:13 +00:00
Andreas Svanberg
0da7318cf3
Allow filtering issues by any assignee (#33343)
This is the opposite of the "No assignee" filter, it will match all
issues that have at least one assignee.

Before
![Before
change](https://github.com/user-attachments/assets/4aea194b-9add-4a84-8d6b-61bfd8d9e58e)

After
![After change with any
filter](https://github.com/user-attachments/assets/99f1205d-ba9f-4a0a-a60b-cc1a0c0823fe)

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-03-21 04:25:36 +00:00
GiteaBot
39fc2e7285 [skip ci] Updated translations via Crowdin 2025-03-19 00:33:36 +00:00
GiteaBot
1b4adc0255 [skip ci] Updated translations via Crowdin 2025-03-18 00:33:31 +00:00
John Smith
8f051d598c
Added Description Field for Secrets and Variables (#33526)
Fixes #33484

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-03-17 19:24:54 +00:00
GiteaBot
9ebae4a2aa [skip ci] Updated translations via Crowdin 2025-03-17 00:35:08 +00:00
GiteaBot
f11ac6bf3c [skip ci] Updated translations via Crowdin 2025-03-16 00:36:54 +00:00
Lunny Xiao
10513df1bf
Add missing translation (#33900) 2025-03-15 18:55:58 +00:00
GiteaBot
926f0a19be [skip ci] Updated translations via Crowdin 2025-03-15 00:33:24 +00:00
wxiaoguang
b094f9b75d
Improve repo commit view (#33877)
Fix #24623

Major changes:

1. Redirect `/owner/repo/blob/*` requests to `/owner/repo/src/commit/*`
(like GitHub)
2. Add a "view file diff" link (see screenshot below)
3. Refactor "AssertHTMLElement" to generic, now we can accurately assert
existence or number.
4. Add more tests

---------

Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: delvh <dev.lh@web.de>
2025-03-14 07:45:11 +00:00
GiteaBot
de2d472d90 [skip ci] Updated translations via Crowdin 2025-03-14 00:33:05 +00:00
wxiaoguang
403775e74e
Improve issue & code search (#33860)
Each "indexer" should provide the "search modes" they support by
themselves. And we need to remove the "fuzzy" search for code.
2025-03-13 11:07:48 +08:00
GiteaBot
cd10456664 [skip ci] Updated translations via Crowdin 2025-03-13 00:33:50 +00:00
ChristopherHX
651ef66966
Add workflow_job webhook (#33694)
Provide external Integration information about the Queue lossly based on
https://docs.github.com/en/webhooks/webhook-events-and-payloads?actionType=completed#workflow_job

Naming conflicts between GitHub & Gitea are here, Blocked => Waiting,
Waiting => Queued

Rationale Enhancement for ephemeral runners management #33570
2025-03-11 10:40:38 -07:00
wxiaoguang
f61f30153b
Fix file icon mapping (#33855)
Use the file extension mapping from VSCode's extensions.
Otherwise js/ts/vba/... files won't get correct icons.
2025-03-11 21:06:59 +08:00
wxiaoguang
657239b480
Fix material icon & diff highlight (#33844) 2025-03-10 22:34:48 +08:00
wxiaoguang
34e5df6d30
Add material icons for file list (#33837) 2025-03-10 15:57:17 +08:00
GiteaBot
31ddbe1444 [skip ci] Updated translations via Crowdin 2025-03-10 00:29:01 +00:00
wxiaoguang
7290bfaccb
Only keep popular licenses (#33832)
Fix #33467
2025-03-10 06:40:37 +08:00
GiteaBot
b0ee340969 [skip ci] Updated translations via Crowdin 2025-03-06 00:32:55 +00:00
GiteaBot
b9913d9568 [skip ci] Updated translations via Crowdin 2025-03-05 00:33:24 +00:00
wxiaoguang
75e85c25c1
Refactor repo-issue.ts (#33784)
And remove jQuery
2025-03-04 17:58:17 +00:00
GiteaBot
f3ada61097 [skip ci] Updated translations via Crowdin 2025-03-01 00:36:23 +00:00
Alexander McRae
aba96f65cd
Use git diff-tree for DiffFileTree on diff pages (#33514)
Modify Diff View FileTree to show all files

## Changes

* removes Show Status button on diff
* uses `git diff-tree` to generate the file tree for the diff
* doesn't reload the diff tree each time we load more files in the
preview
* selecting and unloaded file will keep loading until that file is
loaded
* removes `DiffFileList.vue` and "Show Stats" in diff options

## Open Questions

* selecting and unloaded file will keep loading until that file is
loaded. Is this behaviour okay? It matches what github does.

### Demo

In this demo I set `git.MAX_GIT_DIFF_FILES=1` in my `app.ini` to
demonstrate a worst case example. In most cases the behaviour isn't
nearly as jarring as we load a bunch of files at a time.


https://github.com/user-attachments/assets/72f29663-d6fc-472d-94fa-7fb5950c2836

---------

Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-02-28 00:58:25 +00:00
GiteaBot
7a8eed13b9 [skip ci] Updated translations via Crowdin 2025-02-28 00:32:56 +00:00