We are proud to present the release of Gitea version 1.17.0, a relatively big release with a lot of new and exciting features and plenty breaking changes.
We highly encourage users to update to this version after carefully reading about the breaking changes for some important bug-fixes.
[645](https://github.com/go-gitea/gitea/pulls?q=is%3Apr+milestone%3A1.17.0+is%3Amerged) Pull Requests were merged to release this version.
You can download one of our pre-built binaries from our [downloads page](https://dl.gitea.com/gitea/1.17.0/) - make sure to select the correct platform! For further details on how to install, follow our [installation guide](https://docs.gitea.com/installation/install-from-binary).
Thanks to [@KN4CK3R](https://github.com/KN4CK3R), Gitea now includes a package registry for various package managers (Composer, Conan, Generic, Helm, Maven, npm, NuGet, OCI Containers (Docker), PyPI and RubyGems).
This will be very useful for teams that want to deploy their software from their own infrastructure.
To start using it, head over to the extensive [documentation for this feature](https://docs.gitea.io/en-us/packages/overview/).
### :rocket: Cherry-pick, revert, apply-patch from the Web UI ([#17902](https://github.com/go-gitea/gitea/pull/17902))
Thanks to [@zeripath](https://github.com/zeripath), you no longer need to switch to your local checkout to do common git operations like `cherry-pick`, `revert`, `apply-patch`.
Instead, Gitea now provides a handy UI for these tasks!
This release features some workflow improvements you may already know from other forges:
- During PR review, you can now mark changed files as reviewed and be informed about later changes to them ([#19007](https://github.com/go-gitea/gitea/pull/19007)).
You can watch a demo in the linked Pull Request
- [@rogerluo410](https://github.com/rogerluo410) and [@wxiaoguang](https://github.com/wxiaoguang) implemented a *Go to file* feature for the repo code listing ([#15028](https://github.com/go-gitea/gitea/pull/15028))
![go to file demo](/demos/15028/1.gif)
### :rocket: More RSS feeds ([#17714](https://github.com/go-gitea/gitea/pull/17714) & [#19055](https://github.com/go-gitea/gitea/pull/19055))
RSS-users will appreciate the new feeds for organizations and repositories that were added by [@6543](https://github.com/6543).
### :rocket: Auto merge pull requests when all checks succeeded ([#19648](https://github.com/go-gitea/gitea/pull/19648) & [#9307](https://github.com/go-gitea/gitea/pull/9307))
Thanks to [@6543](https://github.com/6543) & [@kolaente](https://github.com/kolaente), Gitea now allows you to merge a Pull request when all required checks have passed, either via the WebUI or via the API.
Thanks to [@fnetX](https://codeberg.org/fnetX), to combat spam and confidential information, issues (and subsequently PRs) can now be permanently deleted.
A repository admin or instance admin can find the delete button at the bottom of the sidebar of the issue or pull reuqest.
### :rocket: Generate table of contents in wikis ([#19873](https://github.com/go-gitea/gitea/pull/19873))
Thanks to [@zeripath](https://github.com/zeripath), wiki pages now show their logical structure automatically in the sidebar. This removes the need to manually maintain a ToC and helps you to skim for the most important sections.
### :rocket: Customizing the default commit messages ([#18177](https://github.com/go-gitea/gitea/pull/18177))
Thanks to [@lunny](https://github.com/lunny), you can now set the default merge message used for merging PRs.
The customization files must be in `.gitea/default_merge_message/<uppercase_merge_style>_TEMPLATE.md`.
More information on the file names and possible variables can be found [here](https://docs.gitea.io/en-us/issue-pull-request-templates/).
### :rocket: Keeping the original ID of issues ([#18446](https://github.com/go-gitea/gitea/pull/18446))
When you migrate a repository including its issues, their original ID will be persisted.
This is only the first step to allow complete mirroring of issues and Pull Requests from other (Gitea, GitHub, GitLab, ...) instances, with more to come in later releases.
Gitea 1.17 lays the foundation to allow instances to communicate with each other in the future:
A new API path to allow basic communication of statistics between each other was added ([#19561](https://github.com/go-gitea/gitea/pull/19561)).
Additionally, with [#19462](https://github.com/go-gitea/gitea/pull/19462), basic global data about users such as the preferred avatar can now be communicated.
Federation is under active development, and it will be interesting to see what will be achieved in the next few releases.
Now, Gitea uses the system gitconfig (`/etc/gitconfig`) combined with an internal gitconfig located in `{[git].HOME_PATH}/.gitconfig`.
If you customized your user gitconfig for Gitea, you should add these customizations to one of the available gitconfigs. Additional git-relevant files that are normally in your user home directory, like `$HOME/.gnupg`, should be moved/ copied to `{[git].HOME_PATH}/` as well.
With this release, Gitea restricts what is seen as a valid email:
Emails must only contain characters in ``a-zA-Z0-9.!#$%&'*+-/=?^_{|}`~``. Additionally, the first letter must be in `a-zA-Z0-9`, and after the `@`, only characters in `a-zA-Z0-9.` can follow.
Configuration settings have been renamed from `LETSENCRYPT` to `ACME`. The old settings are deprecated and will be removed in 1.18, you should migrate now.
-`ENABLE_LETSENCRYPT` → `ENABLE_ACME`
-`LETSENCRYPT_URL` → `ACME_URL`
-`LETSENCRYPT_ACCEPTTOS` → `ACME_ACCEPTTOS`
-`LETSENCRYPT_DIRECTORY` → `ACME_DIRECTORY`
-`LETSENCRYPT_EMAIL` → `ACME_EMAIL`
### :exclamation: New logger format and configuration ([#17308](https://github.com/go-gitea/gitea/pull/17308))
This PR substantially changes the logging format of the router logger.
If you use this logging for monitoring (e.g. fail2ban) you will need to update this to match the new format.
Refer to the documentation on the [router logger](https://docs.gitea.io/en-us/logging-configuration/#the-router-logger) for new configuration options.
<!-- FIXME: what exactly is the new format?! -->
### :exclamation: `main` as default branch ([#19354](https://github.com/go-gitea/gitea/pull/19354))
The default value of the setting `repository.DEFAULT_BRANCH` was switched from `master` to `main`.
If you want to continue using `master` as default branch name, set this setting.
This change is especially relevant for third party tools that assume the default branch of a repository.
### :exclamation: Change initial trust model to `committer` ([#18335](https://github.com/go-gitea/gitea/pull/18335))
Previously, Gitea would by default use the `collaborator` trust model.
This means only verified commits of collaborators can be trusted.
The minimal required Git version has been raised to **2.0**.
Versions below that are now unsupported and will prevent the application from starting.
In general, it is recommended to stay up-to-date with your Git version as some Gitea features or optimizations can only be used once they are available in Git.
### :exclamation: Require docker version >= 20.10.6 ([#18050](https://github.com/go-gitea/gitea/pull/18050))
This is due to an issue with libc of the new base image alpine 3.15.
### :exclamation: Require Go >= 1.18 to compile ([#19918](https://github.com/go-gitea/gitea/pull/19918), [#19099](https://github.com/go-gitea/gitea/pull/19099))
The minimum version of Go needed to compile Gitea has been increased to **1.18**.
### :exclamation: Changed handling of custom logo ([#18542](https://github.com/go-gitea/gitea/pull/18542))
If you are currently using a custom logo, you need to re-run the steps described [here](https://github.com/go-gitea/gitea/blob/main/docs/content/doc/advanced/customizing-gitea.en-us.md#changing-the-logo).
### :exclamation: `RequireHighlightJS` removed from templates ([#19615](https://github.com/go-gitea/gitea/pull/19615))
If you use custom templates, check that they do not use `RequireHighlightJS` anymore as this was outdated already and has now been removed.
### :exclamation: Deprecated SSH ciphers removed from default setting ([#18697](https://github.com/go-gitea/gitea/pull/18697))
This only affects Gitea instances that have enabled the internal SSH server.
Previously, Gitea allowed unsecured algorithms to be used for an SSH connection.
Older versions of OpenSSH might not be able to connect to Gitea anymore.
### :exclamation: Display messages for users if the ROOT_URL is wrong, show JavaScript errors ([#18971](https://github.com/go-gitea/gitea/pull/18971))
<!-- FIXME: is this really a breaking change? -->
Previously, Gitea would allow an incorrect `ROOT_URL` to be set in the settings. This caused unexpected issues when people don't use that URL to visit Gitea.
Therefore, Gitea will now show an error in the UI when this is the case.
Please check if your `ROOT_URL` is set correctly and avoid accessing the instance using other URLs to avoid the error message.
### :exclamation: `/api/v1/notifications` does not include repo permissions ([#19761](https://github.com/go-gitea/gitea/pull/19761))
Previously, `/api/v1/notifications` returned `repository.permissions` but the permissions were calculated incorrectly.
Due to this and the fact that there exists another route to get the repo permissions, this field will always be `null` from now on.
### :exclamation: HTTP status codes updated: `302 → 307` and `301 → 308` ([#18063](https://github.com/go-gitea/gitea/pull/18063))
Previously, Gitea often returned the incorrect status codes `Found` (302) and `Moved Permanently` (301).
All occurrences of such status code were now changed to `Temporary Redirect` (307) and `Permanent Redirect` (308) respectively.
### :exclamation: No more admin notice about successful cron tasks ([#19221](https://github.com/go-gitea/gitea/pull/19221))
Successful cron task no longer emit a notification by default.
This breaks `NO_SUCCESS_NOTICE` settings.
If you want notices on success, you must set `NOTICE_ON_SUCCESS=true`.
* Use git.HOME_PATH for Git HOME directory ([#20114](https://github.com/go-gitea/gitea/pull/20114)) ([#20293](https://github.com/go-gitea/gitea/pull/20293))
* Add write check for creating Commit Statuses ([#20332](https://github.com/go-gitea/gitea/pull/20332)) ([#20333](https://github.com/go-gitea/gitea/pull/20333))
* Remove deprecated SSH ciphers from default ([#18697](https://github.com/go-gitea/gitea/pull/18697))
* FEDERATION
* Return statistic information for nodeinfo ([#19561](https://github.com/go-gitea/gitea/pull/19561))
* Store the foreign ID of issues during migration ([#18446](https://github.com/go-gitea/gitea/pull/18446))
* FEATURES
* Automatically render wiki TOC ([#19873](https://github.com/go-gitea/gitea/pull/19873))
* Adding button to link accounts from user settings ([#19792](https://github.com/go-gitea/gitea/pull/19792))
* Allow set default merge style while creating repo ([#19751](https://github.com/go-gitea/gitea/pull/19751))
* Auto merge pull requests when all checks succeeded ([#9307]((https://github.com/go-gitea/gitea/pull/9307)) & [#19648](https://github.com/go-gitea/gitea/pull/19648))
* Add endpoint to query collaborators permission for a repository ([#18761](https://github.com/go-gitea/gitea/pull/18761))
* Return primary language and repository language stats API URL ([#18396](https://github.com/go-gitea/gitea/pull/18396))
* Implement http signatures support for the API ([#17565](https://github.com/go-gitea/gitea/pull/17565))
* ENHANCEMENTS
* Make notification bell more prominent on mobile ([#20108](https://github.com/go-gitea/gitea/pull/20108), [#20236](https://github.com/go-gitea/gitea/pull/20236), [#20251](https://github.com/go-gitea/gitea/pull/20251)) ([#20269](https://github.com/go-gitea/gitea/pull/20269))
* Adjust max-widths for the repository file table ([#20243](https://github.com/go-gitea/gitea/pull/20243)) ([#20247](https://github.com/go-gitea/gitea/pull/20247))
* Display full name ([#20171](https://github.com/go-gitea/gitea/pull/20171)) ([#20246](https://github.com/go-gitea/gitea/pull/20246))
* Add dbconsistency checks for Stopwatches ([#20010](https://github.com/go-gitea/gitea/pull/20010))
* Add fetch.writeCommitGraph to gitconfig ([#20006](https://github.com/go-gitea/gitea/pull/20006))
* Prevent Stats Indexer reporting error if repo dir missing ([#18870](https://github.com/go-gitea/gitea/pull/18870))
* Refactor SecToTime() function ([#18863](https://github.com/go-gitea/gitea/pull/18863))
* Replace deprecated String.prototype.substr() with String.prototype.slice() ([#18796](https://github.com/go-gitea/gitea/pull/18796))
* Move deletebeans into models/db ([#18781](https://github.com/go-gitea/gitea/pull/18781))
* Fix display time of milestones ([#18753](https://github.com/go-gitea/gitea/pull/18753))
* Add config option to disable "Update branch by rebase" ([#18745](https://github.com/go-gitea/gitea/pull/18745))
* Display template path of current page in dev mode ([#18717](https://github.com/go-gitea/gitea/pull/18717))
* Add number in queue status to monitor page ([#18712](https://github.com/go-gitea/gitea/pull/18712))
* Change git.cmd to RunWithContext ([#18693](https://github.com/go-gitea/gitea/pull/18693))
* Refactor i18n, use Locale to provide i18n/translation related functions ([#18648](https://github.com/go-gitea/gitea/pull/18648))
* Delete old git.NewCommand() and use it as git.NewCommandContext() ([#18552](https://github.com/go-gitea/gitea/pull/18552))
* Move organization related structs into sub package ([#18518](https://github.com/go-gitea/gitea/pull/18518))
* Warn at startup if the provided `SCRIPT_TYPE` is not on the PATH ([#18467](https://github.com/go-gitea/gitea/pull/18467))
* Use `CryptoRandomBytes` instead of `CryptoRandomString` ([#18439](https://github.com/go-gitea/gitea/pull/18439))
* Use explicit jQuery import, remove unused eslint globals ([#18435](https://github.com/go-gitea/gitea/pull/18435))
* Allow to filter repositories by language in explore, user and organization repositories lists ([#18430](https://github.com/go-gitea/gitea/pull/18430))
* Use base32 for 2FA scratch token ([#18384](https://github.com/go-gitea/gitea/pull/18384))
* Unexport var git.GlobalCommandArgs ([#18376](https://github.com/go-gitea/gitea/pull/18376))
* Don't underline commit status icon on hover ([#18372](https://github.com/go-gitea/gitea/pull/18372))
* Always use git command but not os.Command ([#18363](https://github.com/go-gitea/gitea/pull/18363))
* Switch to non-deprecation setting ([#18358](https://github.com/go-gitea/gitea/pull/18358))
* Set the LastModified header for raw files ([#18356](https://github.com/go-gitea/gitea/pull/18356))
* Refactor jwt.StandardClaims to RegisteredClaims ([#18344](https://github.com/go-gitea/gitea/pull/18344))
* Enable deprecation error for v1.17.0 ([#18341](https://github.com/go-gitea/gitea/pull/18341))
* Add smtp password to install page ([#17564](https://github.com/go-gitea/gitea/pull/17564))
* Add config options to hide issue events ([#17414](https://github.com/go-gitea/gitea/pull/17414))
* Prevent double click new issue/pull/comment button ([#16157](https://github.com/go-gitea/gitea/pull/16157))
* Show issue assignee on project board ([#15232](https://github.com/go-gitea/gitea/pull/15232))
* BUGFIXES
* WebAuthn CredentialID field needs to be increased in size ([#20530](https://github.com/go-gitea/gitea/pull/20530)) ([#20555](https://github.com/go-gitea/gitea/pull/20555))
* Ensure that all unmerged files are merged when conflict checking ([#20528](https://github.com/go-gitea/gitea/pull/20528)) ([#20536](https://github.com/go-gitea/gitea/pull/20536))
* Stop logging EOFs and exit(1)s in ssh handler ([#20476](https://github.com/go-gitea/gitea/pull/20476)) ([#20529](https://github.com/go-gitea/gitea/pull/20529))
* Add labels to two buttons that were missing them ([#20419](https://github.com/go-gitea/gitea/pull/20419)) ([#20524](https://github.com/go-gitea/gitea/pull/20524))
* Fix ROOT_URL detection for URLs without trailing slash ([#20502](https://github.com/go-gitea/gitea/pull/20502)) ([#20503](https://github.com/go-gitea/gitea/pull/20503))
* Dismiss prior pull reviews if done via web in review dismiss ([#20197](https://github.com/go-gitea/gitea/pull/20197)) ([#20407](https://github.com/go-gitea/gitea/pull/20407))
* Allow RSA 2047 bit keys ([#20272](https://github.com/go-gitea/gitea/pull/20272)) ([#20396](https://github.com/go-gitea/gitea/pull/20396))
* Add missing return for when topic isn't found ([#20351](https://github.com/go-gitea/gitea/pull/20351)) ([#20395](https://github.com/go-gitea/gitea/pull/20395))
* Fix commit status icon when in subdirectory ([#20285](https://github.com/go-gitea/gitea/pull/20285)) ([#20385](https://github.com/go-gitea/gitea/pull/20385))
* Initialize cron last ([#20373](https://github.com/go-gitea/gitea/pull/20373)) ([#20384](https://github.com/go-gitea/gitea/pull/20384))
* Set target on create release with existing tag ([#20381](https://github.com/go-gitea/gitea/pull/20381)) ([#20382](https://github.com/go-gitea/gitea/pull/20382))
* Update xorm.io/xorm to fix a interpreting db column sizes issue on 32bit systems ([#20371](https://github.com/go-gitea/gitea/pull/20371)) ([#20372](https://github.com/go-gitea/gitea/pull/20372))
* Make sure `repo_dir` is an empty directory or doesn't exist before 'dump-repo' ([#20205](https://github.com/go-gitea/gitea/pull/20205)) ([#20370](https://github.com/go-gitea/gitea/pull/20370))
* Prevent context deadline error propagation in GetCommitsInfo ([#20346](https://github.com/go-gitea/gitea/pull/20346)) ([#20361](https://github.com/go-gitea/gitea/pull/20361))
* Correctly handle draft releases without a tag ([#20314](https://github.com/go-gitea/gitea/pull/20314)) ([#20335](https://github.com/go-gitea/gitea/pull/20335))
* Prevent "empty" scrollbars on Firefox ([#20294](https://github.com/go-gitea/gitea/pull/20294)) ([#20308](https://github.com/go-gitea/gitea/pull/20308))
* Bump goldmark to v1.4.13 ([#20300](https://github.com/go-gitea/gitea/pull/20300)) ([#20301](https://github.com/go-gitea/gitea/pull/20301))
* Do not create empty ".ssh" directory when loading config ([#20289](https://github.com/go-gitea/gitea/pull/20289)) ([#20298](https://github.com/go-gitea/gitea/pull/20298))
* Fix NPE when using non-numeric ([#20277](https://github.com/go-gitea/gitea/pull/20277)) ([#20278](https://github.com/go-gitea/gitea/pull/20278))
* Store read access in access for team repositories ([#20275](https://github.com/go-gitea/gitea/pull/20275)) ([#20276](https://github.com/go-gitea/gitea/pull/20276))
* EscapeFilter the group dn membership ([#20200](https://github.com/go-gitea/gitea/pull/20200)) ([#20254](https://github.com/go-gitea/gitea/pull/20254))
* Only show Followers that current user can access ([#20220](https://github.com/go-gitea/gitea/pull/20220)) ([#20252](https://github.com/go-gitea/gitea/pull/20252))
* Update Bluemonday to v1.0.19 ([#20199](https://github.com/go-gitea/gitea/pull/20199)) ([#20209](https://github.com/go-gitea/gitea/pull/20209))
* Refix indices on actions table ([#20158](https://github.com/go-gitea/gitea/pull/20158)) ([#20198](https://github.com/go-gitea/gitea/pull/20198))
* Check if project has the same repository id with issue when assign project to issue ([#20133](https://github.com/go-gitea/gitea/pull/20133)) ([#20188](https://github.com/go-gitea/gitea/pull/20188))
* Fix remove file on initial comment ([#20127](https://github.com/go-gitea/gitea/pull/20127)) ([#20128](https://github.com/go-gitea/gitea/pull/20128))
* Catch the error before the response is processed by goth ([#20000](https://github.com/go-gitea/gitea/pull/20000)) ([#20102](https://github.com/go-gitea/gitea/pull/20102))
* Dashboard feed respect setting.UI.FeedPagingNum again ([#20094](https://github.com/go-gitea/gitea/pull/20094)) ([#20099](https://github.com/go-gitea/gitea/pull/20099))
* Alter hook_task TEXT fields to LONGTEXT ([#20038](https://github.com/go-gitea/gitea/pull/20038)) ([#20041](https://github.com/go-gitea/gitea/pull/20041))
* Respond with a 401 on git push when password isn't changed yet ([#20026](https://github.com/go-gitea/gitea/pull/20026)) ([#20027](https://github.com/go-gitea/gitea/pull/20027))
* Return 404 when tag is broken ([#20017](https://github.com/go-gitea/gitea/pull/20017)) ([#20024](https://github.com/go-gitea/gitea/pull/20024))
* Alter hook_task TEXT fields to LONGTEXT ([#20038](https://github.com/go-gitea/gitea/pull/20038)) ([#20041](https://github.com/go-gitea/gitea/pull/20041))
* Respond with a 401 on git push when password isn't changed yet ([#20026](https://github.com/go-gitea/gitea/pull/20026)) ([#20027](https://github.com/go-gitea/gitea/pull/20027))
* Return 404 when tag is broken ([#20017](https://github.com/go-gitea/gitea/pull/20017)) ([#20024](https://github.com/go-gitea/gitea/pull/20024))
* Write Commit-Graphs in RepositoryDumper ([#20004](https://github.com/go-gitea/gitea/pull/20004))
* Use DisplayName() instead of FullName in Oauth Provider ([#19991](https://github.com/go-gitea/gitea/pull/19991))
* Don't buffer doctor logger ([#19982](https://github.com/go-gitea/gitea/pull/19982))
* Always try to fetch repo for mirrors ([#19975](https://github.com/go-gitea/gitea/pull/19975))
* Uppercase first languages letters ([#19965](https://github.com/go-gitea/gitea/pull/19965))
* Fix cli command restore-repo: "units" should be parsed as StringSlice ([#19953](https://github.com/go-gitea/gitea/pull/19953))
* Ensure minimum mirror interval is reported on settings page ([#19895](https://github.com/go-gitea/gitea/pull/19895))
* Exclude Archived repos from Dashboard Milestones ([#19882](https://github.com/go-gitea/gitea/pull/19882))
* gitconfig: set safe.directory = * ([#19870](https://github.com/go-gitea/gitea/pull/19870))
* Prevent NPE on update mirror settings ([#19864](https://github.com/go-gitea/gitea/pull/19864))
* Only return valid stopwatches to the EventSource ([#19863](https://github.com/go-gitea/gitea/pull/19863))
* Prevent NPE whilst migrating if there is a team request review ([#19855](https://github.com/go-gitea/gitea/pull/19855))
* Fix inconsistency in doctor output ([#19836](https://github.com/go-gitea/gitea/pull/19836))
* Fix release tag for webhook ([#19830](https://github.com/go-gitea/gitea/pull/19830))
* Add title attribute to dependencies in sidebar ([#19807](https://github.com/go-gitea/gitea/pull/19807))
* Estimate Action Count in Statistics ([#19775](https://github.com/go-gitea/gitea/pull/19775))
* Do not update user stars numbers unless fix is specified ([#19750](https://github.com/go-gitea/gitea/pull/19750))
* Improved ref comment link when origin is body/title ([#19741](https://github.com/go-gitea/gitea/pull/19741))
* Fix nodeinfo caching and prevent NPE if cache non-existent ([#19721](https://github.com/go-gitea/gitea/pull/19721))
* Fix duplicate entry error when add team member ([#19702](https://github.com/go-gitea/gitea/pull/19702))