Join our community
Gitea is open source. Star our GitHub repo, and join our community on Discord!
We are thrilled to announce the latest release of Gitea v1.22.0.
This release stands as a monumental milestone in our development journey with a record-breaking incorporation of 1481 pull requests. It marks the most extensive update in Gitea’s history, showcasing a plethora of new features and infrastructure improvements.
Noteworthy advancements in this release include the introduction of HTMX and Tailwind, signaling a strategic shift as we gradually phase out jquery and Fomantic UI. These changes reflect our commitment to embracing modern technologies and enhancing the user experience. Especially thanks to [@silverwind](https://github.com/silverwind) and [@yardenshoham](https://github.com/yardenshoham) for their contributions to this work.
You can download it for example from our downloads page. Please read our installation guide for more information on installation.
We would like to thank all of our supporters on Open Collective who are helping to sustain us financially.
As always, the changes are sorted descending by what we deem most important for users and admins, so the most important change comes first.
Are you looking for a seamless, hassle-free solution to manage your Git repositories? Look no further! Gitea Cloud is here to revolutionize your development experience.
Gitea only officially supports DBs that have not reached EOL. There are many database versions that have reached End of Life.
As such, we have increased the DB requirements as follows:
MySQL 5.7 → MySQL 8.0PostgreSQL 10 → PostgreSQL 12MSSQL 2008 → MSSQL 2012If you have to use an unsupported database version, please get in touch with us for information on our Extended Support Contracts. We can provide testing and support for older databases and integrate those fixes into the Gitea codebase.
MySQL (including MariaDB) and MSSQL create databases case-insensitively by default, meaning for example that gitea is equal to GITea.
Historically, this led to many bug reports of functionality behaving unexpectedly, i.e. branches not being able to be inserted because a new branch only differed in casing compared to an existing branch. Gitea was never intended to be used in a case-insensitive DB.
Now, Gitea will explicitly warn you if it detects being run in a case-insensitive DB. If you haven’t done so already, please convert your DB to a case-sensitive one.
The template system has been refactored, and some template functions may have been changed or removed.
Safe is renamed to SafeHTML, and in most cases it shouldn’t be used.Escape is renamed to HTMLEscape, and in most cases it shouldn’t be used. The template should escape most variables automatically.Str2html is renamed to SanitizeHTML, only use it when necessary, it only “sanitizes” the input by pre-defined rules, but it doesn’t “render” or “convert” the content.HTMLFormat instead of printf when processing HTML-related contents.Gitea simplified its theme naming in this release.
The available themes are now gitea-light (previously gitea), gitea-dark (previously arc-green), gitea-auto (previously auto).
This has multiple effects:
If you have any custom themes named like that, please rename them to continue using them.
It is now possible to check which theme is active by querying the attribute
html[data-theme] instead of the previous html.theme-<theme> when expressing the query as a CSS selector.
This change is especially important for third-party tooling whose behavior depends on which theme is active.
If you set [ui].DEFAULT_THEME previously, you need to change it to the new theme name.
If you see a black-and-white UI after the update, it is likely that you need to update this setting as the theme cannot be found.
As we will explain in more detail in the new features, Gitea is now capable of additional alert types using a new syntax.
At the same time, the old syntax > **Note** A note/> **Warning** A warning has been removed, so please rewrite your existing markdown documents to the new syntax where applicable.
If you used:
> **Note** My noteor
> **Warning** My warningRewrite these as:
> [!NOTE]> My noteor
> [!WARNING]> My warningPreviously, the repository description accepted any sort of markdown.
Now, you can only use basic markdown features such as bold, italic, or highlighted text.
There were two minor breaking changes to the API in this release:
per_page has been removed from the list releases endpoint. Instead, you should use the limit parameter.Previously, your login was only remembered for a week by default. However, many instances don’t set the setting and have no explicit security requirements, so having such a short interval is not user-friendly.
If your instance requires a high level of security, you may want to set
[security]// highlight-next-lineLOGIN_REMEMBER_DAYS = 7or something similar again.
Some settings are no longer used. If you previously set any of them, you can now safely remove them from your config:
[security].COOKIE_USERNAME[cache].ENABLED[cache.last_commit].ENABLEDThis PR will affect all configurations having base_path in the storage section but no base_path in the derived storage configuration sections. The base_path on [storage] will become a prefix for them but will not share the same base_path.
[storage]; Now it becomes a prefix of derived base_path but not share the name// highlight-next-linebase_path = xxxThe default value of [server].OFFLINE_MODE has been changed to true, so Gitea will not allow Gravatar queries by default.
However, most existing instances won’t be affected by this, as this setting is only used as the default value for the Gravatar settings, not the actual value.
Additionally, it is saved into the config when you install Gitea.
As we pre-announced in 1.21.0, Gitea’s dark theme has been completely rewritten.
Instead of the previous green-gray mix, it is now a more blue-black mix.

We hope you like the new design, even though it is completely different from the previous experience.
Gitea also introduced initial support for colorblindness-friendly themes. Now, users are able to select an alternative theme, which would be easier for them to use should they need the different themes.
Thanks to [@silverwind](https://github.com/silverwind) for the refactoring of the dark theme, and to [@wxiaoguang](https://github.com/wxiaoguang) for introducing the new colorblindness-friendly themes.
Previously, only users were able to customize their profiles. Now, organizations have gained this ability as well.

Thanks to [@6543](https://github.com/6543) for their work on adding profiles to organizations.
By using git’s ability, end users (especially small instance users) do not need to enable the indexer, they could also benefit from the code searching feature.

Thanks to [@wxiaoguang](https://github.com/wxiaoguang) for adding this functionality.
When creating a repository, you can now choose SHA1 or SHA256 as the method used to create a Commit ID if your server git supports it (git >= 2.29, released in October of 2020).
Why would you want to use a SHA256 repo nonetheless?
SHA1, the predecessor of and only competitor to SHA256 for git, is outdated by now and no longer considered safe, while SHA256 is not yet known to be unsafe.
Fun Fact: As far as we know at the time of writing, Gitea is the first hoster that allows for storing SHA256 repos.

Thank you to [@AdamMajer](https://github.com/AdamMajer) for their work in contributing this functionality.
This PR put an Edit File button on pull request files to allow a quick edit for a file in the pull request. After the edit is finished, it will return to the viewed file position on the pull request files tab.
It also uses a branch view file link instead of a commit link when it’s a non-commit pull request files view.

Thank you to [@lunny](https://github.com/lunny) for contributing this enhancement.
Now you can set the wiki as public for a private/limit repository.
This is very useful for those repositories that would like to keep communication with users but keep code private. And you don’t need another place to write your wiki. The public users can be allowed to read or write the wiki, which depends on the wiki part in the repository setting.
Thank you to [@wxiaoguang](https://github.com/wxiaoguang) for contributing this PR.
When you embed a link to code in Markdown, the referenced code at the given commit will now be displayed.

Thank you to [@wxiaoguang](https://github.com/wxiaoguang) for contributing this functionality.
Support pasting URLs over selection text in the textarea editor. Image paste works as usual in both Textarea and EasyMDE.

Thank you to [@silverwind](https://github.com/silverwind) for contributing this enhancement.
As we already teased above in the breaking changes, Gitea is now able to display Markdown alerts, just like GitHub. In fact, you can learn more about this feature in the GitHub documentation.

Thank you to [@yardenshoham](https://github.com/yardenshoham) for contributing this enhancement.
Open with <IDE> menu (#29320)Gitea already offered the option to Clone repo with VS Code for quite some time.
However, there are other editors out there that support something like that as well.
To keep the list of editors manageable, you can now freely define instance-wide which editors will be shown in this list.
All other editors are displayed with a generic icon.
You can define these editors under Site Administration > Configuration > Settings > Repository:

This results in the menu looking like

Thank you to [@wxiaoguang](https://github.com/wxiaoguang) for contributing this enhancement.
After many years, Gitea has finally gotten a decent Activity tab for repos.
This includes the following:



Thank you to [@sahinakkaya](https://github.com/sahinakkaya) for contributing these brilliant features.
Adds the ability to block a user from a personal account or organization to restrict how the blocked user can interact with the blocker.



Thank you to [@KN4CK3R](https://github.com/KN4CK3R) for contributing this new feature.
Since v1.19, Gitea has introduced Actions. It becomes more and more welcome. We are continuously improving Gitea Actions. In this release, you can now use the official runner images runner-images and more features listed below.
Now you can use the actions actions/upload-artifact@v4 / actions/download-artifact@v4 to upload/download artifacts.
Thank you to [@ChristopherHX](https://github.com/ChristopherHX) for contributing this new protocol implementation.
::: warning
The feature needs patched actions/upload-artifact@v4 / actions/download-artifact@v4, like christopherhx/gitea-upload-artifact@v4 and christopherhx/gitea-download-artifact@v4, to not return errors due to GHES not being supported yet.
:::
Now you can delete artifacts from the UI.
Thank you to [@fuxiaohei](https://github.com/fuxiaohei) for contributing this enhancement.

If one repository enabled actions, now a url like https://<GITEA_INSTANCE>/<OWNER>/<REPOSITORY>/actions/workflows/<WORKFLOW_FILE>/badge.svg can be used to display a badge to indicate the commit status of the default branch.
Thank you to [@lng2020](https://github.com/lng2020) for contributing this feature.
Adds the possibility to skip workflow execution if the commit message contains a string like [skip ci] or similar. You can also [skip ci] inside pull request titles.
Thank you to [@denyskon](https://github.com/denyskon) for contributing these enhancements.
This API /admin/runners/registration-token could be used to get the registration token to create runners dynamically.
Thank you to [@lunny](https://github.com/lunny) for contributing this enhancement.
This will cancel previous runs for pull_request_sync events, so when a new push is made to the pull request, previous runs will be cancelled automatically.
Thank you to [@wolfogre](https://github.com/wolfogre) for contributing this enhancement.
Now you can define instance-level variables so that every organization and repository can reuse them. The repository-level same-name variables will override organization-level variables, and organization-level variables will override instance-level variables.

Thank you to [@jbgomond](https://github.com/jbgomond) for contributing this feature.
A new option
[admin]// highlight-next-lineUSER_DISABLED_FEATURES =has been added to app.ini to allow the site administrator to deny certain user actions. Three values can be used:
deletion: User cannot delete their own account.manage_ssh_keys: User cannot configure ssh keys.manage_gpg_keys: User cannot configure gpg keys.Thank you to [@lunny](https://github.com/lunny) for contributing these features.
Now you can manually run a task to keep the consistency of git tags between git data and database.
Thank you to [@JakobDev](https://github.com/JakobDev) for contributing this enhancement.
Some admins prefer all timestamps to display the full date instead of relative time. They can do that now by setting
[ui]// highlight-next-linePREFERRED_TIMESTAMP_TENSE = absolute


Thank you to [@yardenshoham](https://github.com/yardenshoham) for contributing this enhancement.
Administration API can now manage user’s badges.
Thank you to [@techknowlogick](https://github.com/techknowlogick) for contributing this API enhancement.
Now the commit status of a repository’s default branch in the repositories list will be very fast, even on a busy public site.
Thank you to [@lunny](https://github.com/lunny) for contributing this optimization work.
Previously, the branch list page on a repository that has many branches would take seconds. Now it should be under 200ms.
Thank you to [@lunny](https://github.com/lunny) for contributing this optimization work.
Use batch loading instead of loading one by one to improve the performance of issues/pulls list page.
Thank you to [@lunny](https://github.com/lunny) for contributing this optimization work.
Do some loading speed optimization for feed user interface pages.
Thank you to [@lunny](https://github.com/lunny) for contributing this optimization work.
Improve the performance issue when viewing all packages of an organization.
Thank you to [@KN4CK3R](https://github.com/KN4CK3R) for contributing this optimization work.
gitea-light, gitea-dark, gitea-auto (#27419)
[ui].THEMES config option from app.inilinguist-detectable and linguist-documentation (#29267)fast-forward-only (#28954)[other].SHOW_FOOTER_POWERED_BY setting to hide Powered by (#30253)<overflow-menu> items (#29831)<overflow-menu>, rename webcomponents (#29400)noarch packages into other architectures index (#29137)View at this point in history for every commit (#29122)Code tab on wiki commits (#28041)Packages (#27786)must-change-password command line parameter (#27626)push and pull mirror sync in progress (#27390)Hide/Show all checks button to commit status check (#26284)crypto/sha256 (#29386)We will thank all original contributors of backport pull requests on next release.