It includes [1091](https://github.com/go-gitea/gitea/pulls?q=is%3Apr+milestone%3A1.20.0+is%3Amerged) pull requests, which makes it the largest release in Gitea's history!
<!-- Security Thanks! -->
You can download it for example from our [downloads page](https://dl.gitea.com/gitea/1.20.0/). Please read our [installation guide](https://docs.gitea.com/1.20/installation/install-from-binary) for more information on installation.
We would like to thank all of our supporters on [Open Collective](https://opencollective.com/gitea) who are helping to sustain us financially.
:exclamation: This release blog has a slightly new format:
The changes are sorted descending by what we deem most important for users and admins, so the most important change comes first.
<!-- Should we talk about security implications here, or down below in the new features? -->
As will be described down below in more detail, the permissions for _Personal Access Tokens_ (PATs) have changed.
While we have migrated all old tokens to the new format as close as possible, there are edge cases where an old token now has more/less permissions than before as the two systems have a completely different design.
If that's the case for you, please consider regenerating your token to prevent API calls from failing or your token having a too broad scope.
- We've removed the service worker functionality as it didn't bring any noticeable benefit, mostly added bugs, and was disabled since 1.17 by default already.
Removed config key: `[ui].USE_SERVICE_WORKER`
- The default value of `[server].LFS_HTTP_AUTH_EXPIRY` has been increased from `20m` to `24h`.
If you want to use the previous value, please set the setting.
- As will be described below, you can now set any git config also in your `app.ini`.
As such, we removed the section `[git.reflog]` and its keys have been moved to the following replacements:
- In addition to the already deprecated options inside `[queue]`, many options have been dropped as well.
Those are `WRAP_IF_NECESSARY`, `MAX_ATTEMPTS`, `TIMEOUT`, `WORKERS`, `BLOCK_TIMEOUT`, `BOOST_TIMEOUT`, `BOOST_WORKERS`.
You can remove them from your `app.ini` now.
Additionally, some default values have changed in this section.
- The setting `[time].FORMAT` is no longer used
- The setting `[other].SHOW_FOOTER_BRANDING` was removed, as its intended purpose was superseded by `[other].SHOW_FOOTER_VERSION`
- The default value of `[server].SSH_KEYGEN_PATH` has changed from `ssh-keygen` to ` ` (empty), meaning that Gitea parses public keys by default itself rather than passing it to the system as previously.
-`[repository].DEFAULT_REPO_UNITS` and `[repository].DISABLED_REPO_UNITS` accepted the key `actions.actions` for a short time.
However, the correct key should be `repo.actions`.
-`[repository.editor].PREVIEWABLE_FILE_MODES` was buggy and didn't work.
As such, it is now removed.
-`[actions].DEFAULT_ACTIONS_URL` could previously be set to any custom URLs like https://gitea.com or http://your-git-server, and the default value was https://gitea.com. But now, `DEFAULT_ACTIONS_URL` only supports `github` (https://github.com) or `self` (the root url of current Gitea instance), and the default value is `github`. This change was made to make action names globally resolvable in most cases.
### :warning: Publication of `README.md` in `.profile` repos ([#23260](https://github.com/go-gitea/gitea/pull/23260))
As will be discussed below in the new features, Gitea now displays user profile READMEs.
The displayed content is that of the `README.md` of a `.profile` repo.
If you already have a repo with that name, its `README.md` will be publically accessible, **even if the repo is private**.
If you don't want to leak that information, consider renaming your existing repo.
### :warning: Any URL scheme may be used for links ([#24805](https://github.com/go-gitea/gitea/pull/24805))
Previously, we would not render non-standard URLs (like `matrix:`) by default. We allowed adding custom URLs by modifying `markdown.CUSTOM_URL_SCHEMES` and these would then render as links in markdown, but there was no option to allow all schemes.
With this change in place, if `markdown.CUSTOM_URL_SCHEMES` is not configured, we will render all explicit markdown links (`[label](URL)`) as links.
#### Before
The `matrix:` and `cbthunderlink://` didn't render as links.
![Special links are not rendered](/demos/24805/before.png)
#### After
The `matrix:` and `cbthunderlink://` render as links, when we use the `[label](URL)` form.
![Special links are rendered](/demos/24805/after.png)
The statistic of how many entries are in the `actions` table that records activities has always been rather useless as this table will always be (ridiculuously) large.
As such, we removed the metrics collector for promethues for them.
All storage settings should be stored in one section, and one section only.
You cannot use multiple sections anymore to override settings.
The storage settings priority is now
1.`[attachment]`
2.`[storage.attachments]` | `[storage.<another>]`
3.`[storage]`
4.`default`
For extra override configuration items, currently only are `SERVE_DIRECT`, `MINIO_BASE_PATH`, `MINIO_BUCKET`, which could be configured in another section.
The prioioty of the override configuration is `[attachment]` > `[storage.attachments]` > `default`.
### :warning: Refactor ctx in templates ([#23105](https://github.com/go-gitea/gitea/pull/23105))
If you use custom templates, you may need to change them:
We've changed all occurring `.ctx` inside parameters to `.ctxData`.
Any custom template currently using `.ctx` will need to follow suit.
### :warning: Rewrite logger system ([#24726](https://github.com/go-gitea/gitea/pull/24726))
The `log.<mode>.<logger>` style config has been dropped. If you used it, please check the new config manual & app.example.ini to make your instance output logs as expected.
The SMTP logger is deleted because SMTP is not suitable to collect logs.
## Notable improvements
### :rocket: New package registries
Gitea now supports the following package registries as well:
It is now possible to create an issue config by creating one of the files
1.`.gitea/ISSUE_TEMPLATE/config.y(a)ml`
1.`.gitea/issue_template/config.y(a)ml`
1.`.github/ISSUE_TEMPLATE/config.y(a)ml`
1.`.github/issue_template/config.y(a)ml`
(the files are queried in exactly this prioritization order).
The issue config can be used to influence how users open issues.
With it, you can force users to open issues from a template, or to display additional links, i.e. to nudge users to use another workflow such as sending an email to report security issues instead of reporting it publically.
You can find more information in the [documentation](https://docs.gitea.com/1.20/usage/issue-pull-request-templates#syntax-for-issue-config).
### :rocket: Better editor text area ([#23876](https://github.com/go-gitea/gitea/pull/23876))
Previously, Gitea used a Pseudo-_What-you-see-is-what-you-get_ editor to display text areas.
This meant that you would immediately see how the text you're writing would be displayed.
However, this had many disadvantages:
- as mentioned, it didn't use the actual result but rather computed its own. That meant the result could still be (and often was) different.
- missing accessibility: This editor was absolutely unusable both on smartphones and for visually impaired users.
- Focus-wise, you were trapped inside the editor once you tabbed in.
- bugs: There were **many**.
So, Gitea changed it to the following mechanism now:
- It's a normal textarea by default, so no more syntax highlighting but full accessibility
- If you want to see how your text will be rendered, click on the `Preview` tab
- You can still switch to the old legacy editor in the button bar above the textarea
- New features will only be added to the normal textarea and not the legacy editor
- We don't fix any bugs for the legacy editor anymore
- We plan to remove the legacy text editor in a future release, i.e. in a year or two
### :rocket: Scoped PAT rework ([#24767](https://github.com/go-gitea/gitea/pull/24767))
We noticed that the existing approach to create scoped _Personal Access Tokens_ (PATs) was pretty confusing, even if you've created one previously.
Hence, we rewrote them so that they are much easier to use.
This is the new design:
![screenshot of how to create a new scoped token](/demos/24767/scoped-access-token-creation.png)
Meanwhile, this is the API page:
![screenshot of the API blocks](/demos/24767/api-scopes.png)
You can hopefully guess now what each of the new scopes mean.
### :rocket: User Profile README ([#23260](https://github.com/go-gitea/gitea/pull/23260))
If your user acount contains a `.profile` repository, its `README.md` file will be shown publically in your profile. This allows users to present more information about them on their profile page.
![Screenshot of a profile page with displayed profile README](/demos/23260/user-profile-page.png)
### :rocket: User webhooks ([#21563](https://github.com/go-gitea/gitea/pull/21563))
Now, you can not only add webhooks for organizations but also for users.
### :rocket: Archival date of a repo ([#22664](https://github.com/go-gitea/gitea/pull/22664))
Archived repos now store **when** they were archived:
Repository maintainers can now pin issues and pull requests, so that they always appear on top. The maximum number of pinned issues/pull requests per repo can be set in your `app.ini`.
![A screenshot of the issue page with pinned issues](/demos/24406/issue-pinning.png)
### :rocket: Latest commit status on dashboard ([#24638](https://github.com/go-gitea/gitea/pull/24638))
We now show the status of the latest commit of the default branch for each repository in the dashboard repository list.
![A list showing repositories and their latest status](/demos/24638/latest-commit-status-dashboard.png)
### :rocket: Vertical instead of horizontal settings ([#24246](https://github.com/go-gitea/gitea/pull/24246))
We ran out of space to add new settings categories:
It is not usable if you need to scroll endlessly to find a category.
Hence, we switched the settings order around, so that the settings categories are now displayed on the left instead of at the top:
Download URLs for release files now have a predictable structure:
`<repo>/releases/download/<tag>/<filename>`
For example `https://gitea.com/gitea/act_runner/releases/download/v0.2.3/act_runner-0.2.3-linux-amd64` gets you the file `act_runner-0.2.3-linux-amd64` from the tag `v0.2.3` of Act Runner.
If there are multiple files with the same name, the old UUID-based URLs will be used.
### :rocket: Auto-updating and localized time stamps ([#23988](https://github.com/go-gitea/gitea/pull/23988))
Previously each rendered timestamp would be static, now we show the real time since an event happend. If a comment was added 2 minutes before the page rendered it would show as "2 minutes ago" on the initial render and if another 8 minutes have passed, without a page refresh you'd see "10 minutes ago".
Previously all timestamps would render in English, we now render these according to the user's chosen locale.
![German](/demos/23988/german-timestamp.png)
![Spanish](/demos/23988/spanish-timestamp.png)
### :rocket: Wildcards for required status checks in branch protection ([#24633](https://github.com/go-gitea/gitea/pull/24633))
If a protected branch requires status checks to pass before merging, the required checks can now be specified using wildcard patterns.
![screenshot of the status check setting](/demos/24633/wildcards-for-required-status-checks.png)
### :rocket: Systemd-notify support ([#21151](https://github.com/go-gitea/gitea/pull/21151))
Gitea can now notify `systemd` whenever it is ready.
To enable it, your systemd service file should contain the key `[Service].Type=notify`,
as you can see for example in the [provided example file](https://github.com/go-gitea/gitea/blob/main/contrib/systemd/gitea.service).
Sidenote: We are aware that we should only have updated the [example file](https://github.com/go-gitea/gitea/blob/main/contrib/systemd/gitea.service) once the release was released.
Many people complained that systemd keeps restarting their (pre-1.20.0) Gitea after a few seconds as it expected status reports which previous Gitea versions obviously couldn't do.
Apologies for any headaches this may have caused.
### :rocket: Configure Git through your `app.ini` ([#24860](https://github.com/go-gitea/gitea/pull/24860))
Any entries in your`app.ini` in the `[git.config]` section will now be used to customize the git internal behavior for Gitea.
In other words,
```ini
[git.config]
a.key=value1
b.key=value2
```
is equal to
```sh
git config a.key value1;
git config b.key value2;
```
for the gitconfig used by Gitea.
This has the following benefits:
1. Gitea can set all options it needs itself
2. All config options declared in the config cheatsheet and example app.ini are values that Gitea will set itself if not overridden
3. You don't need to know where the gitconfig Gitea uses is, everything is done through the `app.ini`
4. Docker users don't need to mount a separate file for the gitconfig
### :rocket: Refactorings
Gitea 1.20 has underwent **a lot** of refactorings ([111](https://github.com/go-gitea/gitea/pulls?q=is%3Apr+milestone%3A1.20.0+label%3Akind%2Frefactor) to be precise).
This both reduces the amount of bugs as well as ensures that Gitea will continue to be able to add new features.
* Fix WORK_DIR for docker (root) image ([#25738](https://github.com/go-gitea/gitea/pull/25738)) ([#25811](https://github.com/go-gitea/gitea/pull/25811))
* Restrict `[actions].DEFAULT_ACTIONS_URL` to only `github` or `self` ([#25581](https://github.com/go-gitea/gitea/pull/25581)) ([#25604](https://github.com/go-gitea/gitea/pull/25604))
* Refactor path & config system ([#25330](https://github.com/go-gitea/gitea/pull/25330)) ([#25416](https://github.com/go-gitea/gitea/pull/25416))
* Fix all possible setting error related storages and added some tests ([#23911](https://github.com/go-gitea/gitea/pull/23911)) ([#25244](https://github.com/go-gitea/gitea/pull/25244))
* Use a separate admin page to show global stats, remove `actions` stat ([#25062](https://github.com/go-gitea/gitea/pull/25062))
* Remove the service worker ([#25010](https://github.com/go-gitea/gitea/pull/25010))
* Remove meta tags `theme-color` and `default-theme` ([#24960](https://github.com/go-gitea/gitea/pull/24960))
* Use `[git.config]` for reflog cleaning up ([#24958](https://github.com/go-gitea/gitea/pull/24958))
* Allow all URL schemes in Markdown links by default ([#24805](https://github.com/go-gitea/gitea/pull/24805))
* Test if container blob is accessible before mounting ([#22759](https://github.com/go-gitea/gitea/pull/22759)) ([#25784](https://github.com/go-gitea/gitea/pull/25784))
* Set type="password" on all auth_token fields ([#22175](https://github.com/go-gitea/gitea/pull/22175))
* Use correct response code in push mirror creation response in v1_json.tmpl ([#25476](https://github.com/go-gitea/gitea/pull/25476)) ([#25571](https://github.com/go-gitea/gitea/pull/25571))
* Fix `Permission` in API returned repository struct ([#25388](https://github.com/go-gitea/gitea/pull/25388)) ([#25441](https://github.com/go-gitea/gitea/pull/25441))
* Add API for Label templates ([#24602](https://github.com/go-gitea/gitea/pull/24602))
* Filters for GetAllCommits ([#24568](https://github.com/go-gitea/gitea/pull/24568))
* Add ability to specify '--not' from GetAllCommits ([#24409](https://github.com/go-gitea/gitea/pull/24409))
* Support uploading file to empty repo by API ([#24357](https://github.com/go-gitea/gitea/pull/24357))
* Add absent repounits to create/edit repo API ([#23500](https://github.com/go-gitea/gitea/pull/23500))
* Add login name and source id for admin user searching API ([#23376](https://github.com/go-gitea/gitea/pull/23376))
* Create a branch directly from commit on the create branch API ([#22956](https://github.com/go-gitea/gitea/pull/22956))
* Make `add line comment` buttons focusable ([#25894](https://github.com/go-gitea/gitea/pull/25894)) ([#25896](https://github.com/go-gitea/gitea/pull/25896))
* Always pass 6-digit hex color to monaco ([#25780](https://github.com/go-gitea/gitea/pull/25780)) ([#25782](https://github.com/go-gitea/gitea/pull/25782))
* Hide `add file` button for pull mirrors ([#25748](https://github.com/go-gitea/gitea/pull/25748)) ([#25751](https://github.com/go-gitea/gitea/pull/25751))
* Allow/fix review (approve/reject) of empty PRs ([#25690](https://github.com/go-gitea/gitea/pull/25690)) ([#25732](https://github.com/go-gitea/gitea/pull/25732))
* Fix tags header and pretty format numbers ([#25624](https://github.com/go-gitea/gitea/pull/25624)) ([#25694](https://github.com/go-gitea/gitea/pull/25694))
* Actions list enhancements ([#25601](https://github.com/go-gitea/gitea/pull/25601)) ([#25678](https://github.com/go-gitea/gitea/pull/25678))
* Fix show more for image on diff page ([#25672](https://github.com/go-gitea/gitea/pull/25672)) ([#25673](https://github.com/go-gitea/gitea/pull/25673))
* Fix UI misalignment on user setting page ([#25629](https://github.com/go-gitea/gitea/pull/25629)) ([#25656](https://github.com/go-gitea/gitea/pull/25656))
* Use css on labels ([#25626](https://github.com/go-gitea/gitea/pull/25626)) ([#25636](https://github.com/go-gitea/gitea/pull/25636))
* Read-only checkboxes don't appear and don't entirely act the way one might expect ([#25573](https://github.com/go-gitea/gitea/pull/25573)) ([#25602](https://github.com/go-gitea/gitea/pull/25602))
* Redirect to package after version deletion ([#25594](https://github.com/go-gitea/gitea/pull/25594)) ([#25599](https://github.com/go-gitea/gitea/pull/25599))
* Various UI fixes ([#25264](https://github.com/go-gitea/gitea/pull/25264)) ([#25431](https://github.com/go-gitea/gitea/pull/25431))
* Fix label list divider ([#25312](https://github.com/go-gitea/gitea/pull/25312)) ([#25372](https://github.com/go-gitea/gitea/pull/25372))
* Fix UI on mobile view ([#25315](https://github.com/go-gitea/gitea/pull/25315)) ([#25340](https://github.com/go-gitea/gitea/pull/25340))
* When viewing a file, hide the add button ([#25320](https://github.com/go-gitea/gitea/pull/25320)) ([#25339](https://github.com/go-gitea/gitea/pull/25339))
* Show if File is Executable ([#25287](https://github.com/go-gitea/gitea/pull/25287)) ([#25300](https://github.com/go-gitea/gitea/pull/25300))
* Use inline SVG for built-in OAuth providers ([#25171](https://github.com/go-gitea/gitea/pull/25171)) ([#25234](https://github.com/go-gitea/gitea/pull/25234))
* Change access token UI to select dropdowns ([#25109](https://github.com/go-gitea/gitea/pull/25109)) ([#25230](https://github.com/go-gitea/gitea/pull/25230))
* Minor arc-green color tweaks ([#25175](https://github.com/go-gitea/gitea/pull/25175)) ([#25205](https://github.com/go-gitea/gitea/pull/25205))
* Button and color enhancements ([#24989](https://github.com/go-gitea/gitea/pull/24989)) ([#25176](https://github.com/go-gitea/gitea/pull/25176))
* Fix mobile navbar and misc cleanups ([#25134](https://github.com/go-gitea/gitea/pull/25134)) ([#25169](https://github.com/go-gitea/gitea/pull/25169))
* Modify OAuth login ui and fix display name, iconurl related logic ([#25030](https://github.com/go-gitea/gitea/pull/25030)) ([#25161](https://github.com/go-gitea/gitea/pull/25161))
* Improve notification icon and navbar ([#25111](https://github.com/go-gitea/gitea/pull/25111)) ([#25124](https://github.com/go-gitea/gitea/pull/25124))
* Add details summary for vertical menus in settings to allow toggling ([#25098](https://github.com/go-gitea/gitea/pull/25098))
* Don't display `select all issues` checkbox when no issues are available ([#25086](https://github.com/go-gitea/gitea/pull/25086))
* Use RepositoryList instead of []*Repository ([#25074](https://github.com/go-gitea/gitea/pull/25074))
* Add ability to set multiple redirect URIs in OAuth application UI ([#25072](https://github.com/go-gitea/gitea/pull/25072))
* Use git command instead of the ini package to remove the `origin` remote ([#25066](https://github.com/go-gitea/gitea/pull/25066))
* Remove cancel button from branch protection form ([#25063](https://github.com/go-gitea/gitea/pull/25063))
* Show file tree by default ([#25052](https://github.com/go-gitea/gitea/pull/25052))
* Add Progressbar to Milestone Page ([#25050](https://github.com/go-gitea/gitea/pull/25050))
* Minor UI improvements: logo alignment, auth map editor, auth name display ([#25043](https://github.com/go-gitea/gitea/pull/25043))
* Allow for PKCE flow without client secret + add docs ([#25033](https://github.com/go-gitea/gitea/pull/25033))
* Refactor INI package (first step) ([#25024](https://github.com/go-gitea/gitea/pull/25024))
* Various style fixes ([#25008](https://github.com/go-gitea/gitea/pull/25008))
* Fix delete user account modal ([#25004](https://github.com/go-gitea/gitea/pull/25004))
* Refactor "route" related code, fix Safari cookie bug ([#24330](https://github.com/go-gitea/gitea/pull/24330))
* Alert error message if open dependencies are included in the issues that try to batch close ([#24329](https://github.com/go-gitea/gitea/pull/24329))
* Add missed column title in runner management page ([#24328](https://github.com/go-gitea/gitea/pull/24328))
* Automatically select the org when click create repo from org dashboard ([#24325](https://github.com/go-gitea/gitea/pull/24325))
* Modify width of ui container, fine tune css for settings pages and org header ([#24315](https://github.com/go-gitea/gitea/pull/24315))
* Fix config list overflow and layout ([#24312](https://github.com/go-gitea/gitea/pull/24312))
* Improve some modal action buttons ([#24289](https://github.com/go-gitea/gitea/pull/24289))
* Move code from module to service ([#24287](https://github.com/go-gitea/gitea/pull/24287))
* Sort users and orgs on explore by recency by default ([#24279](https://github.com/go-gitea/gitea/pull/24279))
* Allow using localized absolute date times within phrases with place holders and localize issue due date events ([#24275](https://github.com/go-gitea/gitea/pull/24275))
* Show workflow config error on file view also ([#24267](https://github.com/go-gitea/gitea/pull/24267))
* Fix markup background, improve wiki rendering ([#23750](https://github.com/go-gitea/gitea/pull/23750))
* Make label templates have consistent behavior and priority ([#23749](https://github.com/go-gitea/gitea/pull/23749))
* Improve LoadUnitConfig to handle invalid or duplicate units ([#23736](https://github.com/go-gitea/gitea/pull/23736))
* Append `(comment)` when a link points at a comment rather than the whole issue ([#23734](https://github.com/go-gitea/gitea/pull/23734))
* Clean some legacy files and move some build files ([#23699](https://github.com/go-gitea/gitea/pull/23699))
* Refactor repo commit list ([#23690](https://github.com/go-gitea/gitea/pull/23690))
* Refactor internal API for git commands, use meaningful messages instead of "Internal Server Error" ([#23687](https://github.com/go-gitea/gitea/pull/23687))
* Add aria attributes to interactive time tooltips. ([#23661](https://github.com/go-gitea/gitea/pull/23661))
* Fix long project name display in issue list and in related dropdown ([#23653](https://github.com/go-gitea/gitea/pull/23653))
* Use data-tooltip-content for tippy tooltip ([#23649](https://github.com/go-gitea/gitea/pull/23649))
* Fix new issue/pull request btn margin when it is next to sort ([#23647](https://github.com/go-gitea/gitea/pull/23647))
* Fine tune more downdrop settings, use SVG for labels, improve Repo Topic Edit form ([#23626](https://github.com/go-gitea/gitea/pull/23626))
* Allow new file and edit file preview if it has editable extension ([#23624](https://github.com/go-gitea/gitea/pull/23624))
* Replace a few fontawesome icons with svg ([#23602](https://github.com/go-gitea/gitea/pull/23602))
*`Publish Review` buttons should indicate why they are disabled ([#23598](https://github.com/go-gitea/gitea/pull/23598))
* Convert issue list checkboxes to native ([#23596](https://github.com/go-gitea/gitea/pull/23596))
* Set opaque background on markup and images ([#23578](https://github.com/go-gitea/gitea/pull/23578))
* Use a general approach to show tooltip, fix temporary tooltip bug ([#23574](https://github.com/go-gitea/gitea/pull/23574))
* Improve `<SvgIcon>` to make it output `svg` node and optimize performance ([#23570](https://github.com/go-gitea/gitea/pull/23570))
* Enable color for consistency checks diffs ([#23563](https://github.com/go-gitea/gitea/pull/23563))
* Fix dropdown icon misalignment when using fomantic icon ([#23558](https://github.com/go-gitea/gitea/pull/23558))
* Decouple the issue-template code from comment_tab.tmpl ([#23556](https://github.com/go-gitea/gitea/pull/23556))
* Remove `id="comment-form"` dead code, fix tag ([#23555](https://github.com/go-gitea/gitea/pull/23555))
* Add support for different Maven POM encoding ([#25873](https://github.com/go-gitea/gitea/pull/25873)) ([#25890](https://github.com/go-gitea/gitea/pull/25890))
* Fix incorrect repo url when changed the case of ownername ([#25733](https://github.com/go-gitea/gitea/pull/25733)) ([#25881](https://github.com/go-gitea/gitea/pull/25881))
* Fix empty project displayed in issue sidebar ([#25802](https://github.com/go-gitea/gitea/pull/25802)) ([#25854](https://github.com/go-gitea/gitea/pull/25854))
* Show correct SSL Mode on "install page" ([#25818](https://github.com/go-gitea/gitea/pull/25818)) ([#25838](https://github.com/go-gitea/gitea/pull/25838))
* Fix the error message when the token is incorrect ([#25701](https://github.com/go-gitea/gitea/pull/25701)) ([#25836](https://github.com/go-gitea/gitea/pull/25836))
* Fix incorrect oldest sort in project list ([#25806](https://github.com/go-gitea/gitea/pull/25806)) ([#25835](https://github.com/go-gitea/gitea/pull/25835))
* For API attachments, use API URL ([#25639](https://github.com/go-gitea/gitea/pull/25639)) ([#25814](https://github.com/go-gitea/gitea/pull/25814))
* Avoid amending the Rebase and Fast-forward merge if there is no message template ([#25779](https://github.com/go-gitea/gitea/pull/25779)) ([#25809](https://github.com/go-gitea/gitea/pull/25809))
* Make "install page" respect environment config ([#25648](https://github.com/go-gitea/gitea/pull/25648)) ([#25799](https://github.com/go-gitea/gitea/pull/25799))
* Fix activity type match in `matchPullRequestEvent` ([#25746](https://github.com/go-gitea/gitea/pull/25746)) ([#25796](https://github.com/go-gitea/gitea/pull/25796))
* Fix notification list bugs ([#25781](https://github.com/go-gitea/gitea/pull/25781)) ([#25787](https://github.com/go-gitea/gitea/pull/25787))
* Revert package access change from [#23879](https://github.com/go-gitea/gitea/pull/23879) ([#25707](https://github.com/go-gitea/gitea/pull/25707)) ([#25785](https://github.com/go-gitea/gitea/pull/25785))
* Check `ctx.Written()` for `GetActionIssue` ([#25698](https://github.com/go-gitea/gitea/pull/25698)) ([#25711](https://github.com/go-gitea/gitea/pull/25711))
* Fix position of org follow button ([#25688](https://github.com/go-gitea/gitea/pull/25688)) ([#25692](https://github.com/go-gitea/gitea/pull/25692))
* Fix the nil pointer when assigning issues to projects ([#25665](https://github.com/go-gitea/gitea/pull/25665)) ([#25677](https://github.com/go-gitea/gitea/pull/25677))
* Log the real reason when authentication fails (but don't show the user) ([#25414](https://github.com/go-gitea/gitea/pull/25414)) ([#25660](https://github.com/go-gitea/gitea/pull/25660))
* Fix bug when change user name ([#25637](https://github.com/go-gitea/gitea/pull/25637)) ([#25646](https://github.com/go-gitea/gitea/pull/25646))
* Make "cancel" buttons have proper type in modal forms ([#25618](https://github.com/go-gitea/gitea/pull/25618)) ([#25641](https://github.com/go-gitea/gitea/pull/25641))
* Use AfterCommitId to get commit for Viewed functionality ([#25529](https://github.com/go-gitea/gitea/pull/25529)) ([#25612](https://github.com/go-gitea/gitea/pull/25612))
* Fix bug of branches API with tests([#25578](https://github.com/go-gitea/gitea/pull/25578)) ([#25579](https://github.com/go-gitea/gitea/pull/25579))
* Fix bugs related to notification endpoints ([#25548](https://github.com/go-gitea/gitea/pull/25548)) ([#25562](https://github.com/go-gitea/gitea/pull/25562))
* Add Adopt repository event and handler ([#25497](https://github.com/go-gitea/gitea/pull/25497)) ([#25518](https://github.com/go-gitea/gitea/pull/25518))
* Improve wiki sidebar and TOC ([#25460](https://github.com/go-gitea/gitea/pull/25460)) ([#25477](https://github.com/go-gitea/gitea/pull/25477))
* Make "dismiss" content shown correctly ([#25461](https://github.com/go-gitea/gitea/pull/25461)) ([#25465](https://github.com/go-gitea/gitea/pull/25465))
* Change default email domain for LDAP users ([#25425](https://github.com/go-gitea/gitea/pull/25425)) ([#25434](https://github.com/go-gitea/gitea/pull/25434))
* Fix missing commit message body when the message has leading newlines ([#25418](https://github.com/go-gitea/gitea/pull/25418)) ([#25422](https://github.com/go-gitea/gitea/pull/25422))
* Fix LDAP sync when Username Attribute is empty ([#25278](https://github.com/go-gitea/gitea/pull/25278)) ([#25379](https://github.com/go-gitea/gitea/pull/25379))
* Fetch all git data for embedding correct version in docker image ([#25361](https://github.com/go-gitea/gitea/pull/25361)) ([#25373](https://github.com/go-gitea/gitea/pull/25373))
* Write absolute AppDataPath to app.ini when installing ([#25331](https://github.com/go-gitea/gitea/pull/25331)) ([#25347](https://github.com/go-gitea/gitea/pull/25347))
* Fix incorrect config argument position for builtin SSH server ([#25341](https://github.com/go-gitea/gitea/pull/25341))
* Remove EasyMDE focus outline on text ([#25328](https://github.com/go-gitea/gitea/pull/25328)) ([#25332](https://github.com/go-gitea/gitea/pull/25332))
* Fix index generation parallelly failure ([#25235](https://github.com/go-gitea/gitea/pull/25235)) ([#25269](https://github.com/go-gitea/gitea/pull/25269))
* Fix panic when migrating a repo from GitHub with issues ([#25246](https://github.com/go-gitea/gitea/pull/25246)) ([#25247](https://github.com/go-gitea/gitea/pull/25247))
* Fix task list checkbox toggle to work with YAML front matter ([#25184](https://github.com/go-gitea/gitea/pull/25184)) ([#25227](https://github.com/go-gitea/gitea/pull/25227))
* Fix compatible for webhook ref type ([#25195](https://github.com/go-gitea/gitea/pull/25195)) ([#25223](https://github.com/go-gitea/gitea/pull/25223))
* Hide limited users if viewed by anonymous ghost ([#25214](https://github.com/go-gitea/gitea/pull/25214)) ([#25220](https://github.com/go-gitea/gitea/pull/25220))
* Do not overwrite the log mode when installing ([#25203](https://github.com/go-gitea/gitea/pull/25203)) ([#25209](https://github.com/go-gitea/gitea/pull/25209))
* Fix fullscreen for action ([#25200](https://github.com/go-gitea/gitea/pull/25200)) ([#25207](https://github.com/go-gitea/gitea/pull/25207))
* Add `WithPullRequest` for `actionsNotifier` ([#25144](https://github.com/go-gitea/gitea/pull/25144)) ([#25197](https://github.com/go-gitea/gitea/pull/25197))
* Fix `MilestoneIDs` when querying issues ([#25125](https://github.com/go-gitea/gitea/pull/25125)) ([#25141](https://github.com/go-gitea/gitea/pull/25141))
* Remove incorrect element ID on "post-install" page ([#25104](https://github.com/go-gitea/gitea/pull/25104)) ([#25129](https://github.com/go-gitea/gitea/pull/25129))
* Fix 500 error caused by notifications without an issue such as repo transfers ([#25101](https://github.com/go-gitea/gitea/pull/25101))
* Help to recover from corrupted levelqueue ([#24912](https://github.com/go-gitea/gitea/pull/24912))
* Fix 500 error when select `No assignee` filter in issue list page ([#24854](https://github.com/go-gitea/gitea/pull/24854))
* Add validations.required check to dropdown field ([#24849](https://github.com/go-gitea/gitea/pull/24849))
* Fix missed migration in [#22235](https://github.com/go-gitea/gitea/pull/22235) ([#23482](https://github.com/go-gitea/gitea/pull/23482))
* Do not store user projects as organization projects ([#23353](https://github.com/go-gitea/gitea/pull/23353))
* Fix incorrect display for comment context menu ([#23343](https://github.com/go-gitea/gitea/pull/23343))
* Make Ctrl+Enter submit a pending comment (starting review) instead of submitting a single comment ([#23245](https://github.com/go-gitea/gitea/pull/23245))
* Fix submit button won't refresh in New Repository Fork page ([#22994](https://github.com/go-gitea/gitea/pull/22994))
* Remove stars when repo goes private ([#19904](https://github.com/go-gitea/gitea/pull/19904))
* Add unit test for repository collaboration ([#25640](https://github.com/go-gitea/gitea/pull/25640)) ([#25658](https://github.com/go-gitea/gitea/pull/25658))
* Add missing test case and fix typo in tests ([#24915](https://github.com/go-gitea/gitea/pull/24915))
* Kd/fix redis unit test ([#24650](https://github.com/go-gitea/gitea/pull/24650))
* Add owner team permission check test ([#24096](https://github.com/go-gitea/gitea/pull/24096))
* Test renderReadmeFile ([#23185](https://github.com/go-gitea/gitea/pull/23185))
* Add default owner team to privated_org and limited_org in unit test ([#23109](https://github.com/go-gitea/gitea/pull/23109))
* Speed up HasUserStopwatch & GetActiveStopwatch ([#23051](https://github.com/go-gitea/gitea/pull/23051))
* Remove all package data after tests ([#22984](https://github.com/go-gitea/gitea/pull/22984))
* Backport locales to v1.20 ([#25899](https://github.com/go-gitea/gitea/pull/25899))
* Translate untranslated string in issues list ([#25759](https://github.com/go-gitea/gitea/pull/25759)) ([#25761](https://github.com/go-gitea/gitea/pull/25761))
* Show correct naming for 1 comment ([#25704](https://github.com/go-gitea/gitea/pull/25704)) ([#25712](https://github.com/go-gitea/gitea/pull/25712))
* Add Chinese documentations for Actions ([#24902](https://github.com/go-gitea/gitea/pull/24902))
* Change `valid_until` translation to `valid_until_date` and include placeholder for the date ([#24563](https://github.com/go-gitea/gitea/pull/24563))
* Change `add_on` translation to `added_on` and include placeholder for the date ([#24562](https://github.com/go-gitea/gitea/pull/24562))
* Change `join_on` translation to `joined_on` and include placeholder for the date ([#24550](https://github.com/go-gitea/gitea/pull/24550))
* Use double quotes consistently in en-US ([#24141](https://github.com/go-gitea/gitea/pull/24141))
* Clarify Gitea/Crowdin locale behaviors, add tests for LocaleStore, fix some strings with semicolons ([#23819](https://github.com/go-gitea/gitea/pull/23819))
* Correct permissions for `.ssh` and `authorized_keys` ([#25721](https://github.com/go-gitea/gitea/pull/25721)) ([#25730](https://github.com/go-gitea/gitea/pull/25730))
* Upgrade snap to node 20 ([#24990](https://github.com/go-gitea/gitea/pull/24990))
* Use Go 1.20 for next release ([#24859](https://github.com/go-gitea/gitea/pull/24859))
* Ignore build for docs only ([#24761](https://github.com/go-gitea/gitea/pull/24761))
* Docs: rootless docker ssh's default port is 2222 ([#25771](https://github.com/go-gitea/gitea/pull/25771)) ([#25772](https://github.com/go-gitea/gitea/pull/25772))
* Add documentation about supported workflow trigger events ([#25582](https://github.com/go-gitea/gitea/pull/25582)) ([#25589](https://github.com/go-gitea/gitea/pull/25589))
* Document creating an API key from the CLI ([#25504](https://github.com/go-gitea/gitea/pull/25504))
* Use the new download domain replace the old ([#25405](https://github.com/go-gitea/gitea/pull/25405)) ([#25409](https://github.com/go-gitea/gitea/pull/25409))
* Add Exoscale to installation on cloud provider docs ([#25342](https://github.com/go-gitea/gitea/pull/25342)) ([#25346](https://github.com/go-gitea/gitea/pull/25346))
* Change branch name from master to main in some documents' links ([#25126](https://github.com/go-gitea/gitea/pull/25126)) ([#25140](https://github.com/go-gitea/gitea/pull/25140))
* Introduce how to configure cache when starting a Runner with Docker ([#25077](https://github.com/go-gitea/gitea/pull/25077))
* Docs: remove an extraneous whitespace ([#24949](https://github.com/go-gitea/gitea/pull/24949))
* Update Asciidoc markup example with safe defaults ([#24920](https://github.com/go-gitea/gitea/pull/24920))
* Fix \<empty\> in administration/config-cheat-sheet.en-us.md ([#24905](https://github.com/go-gitea/gitea/pull/24905))
* Rename docs packages title from xxx Packages Repository -> xxx Package Registry ([#24895](https://github.com/go-gitea/gitea/pull/24895))
* Replace `drone exec` to `act_runner exec` in test README.md ([#24791](https://github.com/go-gitea/gitea/pull/24791))
* Do not prepare oauth2 config if it is not enabled, do not write config in some sub-commands ([#25567](https://github.com/go-gitea/gitea/pull/25567)) ([#25576](https://github.com/go-gitea/gitea/pull/25576))
* Align language menu icon and fit the footer area ([#25556](https://github.com/go-gitea/gitea/pull/25556)) ([#25563](https://github.com/go-gitea/gitea/pull/25563))
* Fix input `line-height` cutting off `g` ([#25334](https://github.com/go-gitea/gitea/pull/25334)) ([#25533](https://github.com/go-gitea/gitea/pull/25533))
* Clarify the reason why the user can't add a new email if there is a pending activation ([#25509](https://github.com/go-gitea/gitea/pull/25509)) ([#25514](https://github.com/go-gitea/gitea/pull/25514))
* Improve loadprojects for issue list ([#25468](https://github.com/go-gitea/gitea/pull/25468)) ([#25493](https://github.com/go-gitea/gitea/pull/25493))
* Use "utf8mb4" for MySQL by default ([#25432](https://github.com/go-gitea/gitea/pull/25432))
* Show outdated comments in files changed tab ([#24936](https://github.com/go-gitea/gitea/pull/24936)) ([#25428](https://github.com/go-gitea/gitea/pull/25428))
* Avoid polluting config file when "save" ([#25395](https://github.com/go-gitea/gitea/pull/25395)) ([#25406](https://github.com/go-gitea/gitea/pull/25406))
* Fix blank dir message when uploading files from web editor ([#25391](https://github.com/go-gitea/gitea/pull/25391)) ([#25400](https://github.com/go-gitea/gitea/pull/25400))
* Fix issue filters on mobile view ([#25368](https://github.com/go-gitea/gitea/pull/25368)) ([#25371](https://github.com/go-gitea/gitea/pull/25371))
* Avoid polluting the config ([#25345](https://github.com/go-gitea/gitea/pull/25345)) ([#25354](https://github.com/go-gitea/gitea/pull/25354))
* Fix action runner last online state on edit page ([#25337](https://github.com/go-gitea/gitea/pull/25337))
* Fix 404 error when leaving the last private org team ([#24322](https://github.com/go-gitea/gitea/pull/24322))
* Improve External Wiki in Repo Header ([#24304](https://github.com/go-gitea/gitea/pull/24304))
* Updated upgrade script that is informing user that Gitea service has to be running in order to upgrade it ([#24260](https://github.com/go-gitea/gitea/pull/24260))
* Add run status in action view page ([#24223](https://github.com/go-gitea/gitea/pull/24223))