--- date: "2023-03-20T14:40:00+01:00" authors: - "jolheiser" - "delvh" - "lunny" - "yardenshoham" - "techknowlogick" title: "Gitea 1.19.0 is released" tags: ["release"] draft: false --- We are proud to present the release of Gitea version 1.19.0. We highly encourage users to update to this version for many new features and other improvements. We have merged [544](https://github.com/go-gitea/gitea/pulls?q=is%3Apr+milestone%3A1.19.0+is%3Amerged) pull requests to release this version. ## Thank you! - The [Blender team](https://blender.org) for their extensive work on this version, i.e. through issues, pull requests, and support of the Gitea Project. - [@wxiaoguang](https://gitea.com/wxiaoguang), [@fsologureng](https://codeberg.org/fsologureng), and everyone else who has been helping with the accessibility changes. - [@yardenshoham](https://gitea.com/yardenshoham) for his contribution on [Gitea Backporter](https://github.com/GiteaBot/gitea-backporter), which makes our backport work significantly easier than before. - [@pat-s](https://gitea.com/pat-s) for his work to make static website PRs previewable. We would also like to thank all of our supporters on [Open Collective](https://opencollective.com/gitea) who are helping to sustain us financially. You can download one of our pre-built binaries from our [downloads page](https://dl.gitea.com/gitea/1.19.0/) - make sure to select the correct platform! For further details on how to install, follow our [installation guide](https://docs.gitea.io/en-us/install-from-binary/). We are now working on moving our infrastructure from `gitea.io` to `gitea.com`, as well as migrating from Drone CI to Gitea Actions. During this conversion, if you encounter any problems, please report them via [discord](https://discord.gg/gitea). **Have you heard? We now have a [swag shop](https://shop.gitea.io)! :shirt: :tea:** ## Breaking Changes ### :warning: Incorrectly documented default value for update checker ([#22084](https://github.com/go-gitea/gitea/issues/22084)) `[cron.update_checker].ENABLED` is `true` by default. Previously, the documentation indicated that it would be disabled by default, which was incorrect. ### :warning: Newly reserved username: `gitea-actions` ([#21937](https://github.com/go-gitea/gitea/issues/21937)) With the implementation of Gitea Actions (see below), Gitea needed a user to run the actions. The username `gitea-actions` was chosen and is thus now reserved. If a user with that name exists, an admin should rename them, i.e. using the admin panel. ### :warning: Remove DSA host key from Docker Container ([#21522](https://github.com/go-gitea/gitea/issues/21522)) The DSA host key has been removed from the OpenSSH daemon configuration file in the Docker container for Gitea. This change is a result of the deprecation of the DSA public key algorithm since OpenSSH >= 7.0. As a result, any client that uses DSA for authentication will no longer be able to connect to the Docker container. We recommend users to use a different public key algorithm such as RSA or ECDSA for authentication. ### :warning: Remove ReverseProxy authentication from the API ([#22219](https://github.com/go-gitea/gitea/issues/22219)) ReverseProxy-authentication was an insecure way of authenticating a user. Hence, it was dropped without replacement. Any user that relied on it must switch to basic or token authentication now. ### :warning: Remove `[ui].ONLY_SHOW_RELEVANT_REPOS` setting. ([#21962](https://github.com/go-gitea/gitea/issues/21962)) On the explore page, you can switch whether you only want to see relevant repos, or all repos. As this page already offers a link to switch between these two options, this setting only had a negligible effect and complicated the logic by a lot. Hence, it was dropped without replacement. You can now remove it from your `app.ini` if present. ### :warning: Restrict valid user names ([#20136](https://github.com/go-gitea/gitea/issues/20136)) Valid user names now follow the following rules: - allowed letters are `-`,`.`, `_`, `0-9`, `a-z`, `A-Z` - names must not start or end with `-`,`.`, or `_` - names must not have consecutive `-`,`.`, or `_`. (i.e. `a-.b` is illegal) No action must be taken for existing users. This is only enforced for newly created users. ### :warning: Separate allowed units for normal repos and forks ([#22541](https://github.com/go-gitea/gitea/issues/22541)) Previously, fork repositories had all default units. Now, forks only enable code access and pull requests by default. If you want everything to behave like before, please set the setting `[repository].DEFAULT_FORK_REPO_UNITS` to the value of `[repository].DEFAULT_REPO_UNITS`. ### :warning: Support camel case for issue and code search when using Bleve ([#22829](https://github.com/go-gitea/gitea/issues/22829)) In order to be able to support queries that include camel case tokens, the indexes must be rebuilt. This is an automatic process that will be done on the first startup without any user interaction. ### :warning: Support commit description in the merge template ([#22248](https://github.com/go-gitea/gitea/issues/22248)) Previously, your whole `default_merge_message` template file was considered to be the commit title. Now, only the first line is the commit title, and the rest (from line 3 on) is the commit description, just like in normal commits. ## Highlights ### :rocket: Gitea Actions ([#21937](https://github.com/go-gitea/gitea/issues/21937)) One of the biggest requests of all time has finally made it into Gitea (for now as a preview): Gitea Actions. Gitea Actions is a built-in CI system like GitHub Actions. With Gitea Actions, you can reuse your familiar workflows and Github Actions in your self-hosted Gitea instance. While it is not currently fully compatible with GitHub Actions, we intend to become as compatible as possible in future versions. The typical procedure is as follows: 1. Register a runner (at the moment, [act runners](https://gitea.com/gitea/act_runner) are the only option). This can be done on the following scopes: - site-wide (by site admins) - organization-wide (by organization owners) - repository-wide (by repository owners) 2. Create workflow files under `.gitea/workflows/.yaml` or `.github/workflows/.yaml`. The syntax is the same as the [GitHub workflow syntax](https://docs.github.com/en/actions) where supported. (The link points at the GitHub documentation as we don't have our own docs yet) For example, try the following test file which Gitea uses to pre-build the available `act_runner` binaries: ```yaml name: goreleaser on: push: branches: [ main ] jobs: goreleaser: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - run: git fetch --force --tags - uses: actions/setup-go@v3 with: go-version: '>=1.20.1' - name: goreleaser uses: https://github.com/goreleaser/goreleaser-action@v4 with: distribution: goreleaser-pro version: latest args: release --nightly env: GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} ``` 3. Commit and push the workflow files 4. If everything has been set up correctly, the workflows will be run whenever one of its triggers has been triggered: ![successful workflow run](/demos/21937/actions-view.png) Huge thanks to the authors of actions ([@wolfogre](https://gitea.com/wolfogre), [@lunny](https://gitea.com/lunny), [@appleboy](https://gitea.com/appleboy) and [@fuxiaohei](https://gitea.com/fuxiaohei)), of [@nektos](https://github.com/nektos), [all contributors of act](https://github.com/nektos/act) for [act_runner](https://gitea.com/gitea/act_runner), and [@delvh](https://gitea.com/delvh) for significant effort spent reviewing the PRs. More information can be found [in the issue to implement actions](https://github.com/go-gitea/gitea/issues/13539), and you can find a small tutorial [in our blog](https://blog.gitea.io/2022/12/feature-preview-gitea-actions/). ### :rocket: Asciicast support ([#22448](https://github.com/go-gitea/gitea/issues/22448)) It is now possible to view uploaded Asciicast (`.cast`) files. Asciicast is an efficient format to convert a textsequence time interval (i.e. a terminal session) into a video. A picture (or in this case three) is worth a thousand words: First, you open the file as any other file: ![asciicast open file](/demos/22448/asciicast-open.png) Then, you start watching the video: ![asciicast play video](/demos/22448/asciicast-play.png) One of the key features of asciicast videos is that the text contained in it can be selected. ![asciicast select text inside the video](/demos/22448/asciicast-select-text.png) Thanks to [@wolfogre](https://gitea.com/wolfogre) ### :rocket: Cargo ([#21888](https://github.com/go-gitea/gitea/issues/21888)), Chef ([#22554](https://github.com/go-gitea/gitea/issues/22554)), Conda ([#22262](https://github.com/go-gitea/gitea/issues/22262)) package registries and package limits/cleanup ([#21584](https://github.com/go-gitea/gitea/issues/21584), [#21658](https://github.com/go-gitea/gitea/pull/21658)) Gitea 1.19 ships with three new package registries that coincidentally all start with `C`: - Cargo (Rust) - Chef (language agnostic) - Conda (especially Python, can also be used for other languages) Furthermore, it is now possible to limit how large an uploaded package can be, or when packages will be deleted again to save space. Thanks to [@KN4CK3R](https://gitea.com/KN4CK3R) for all of his work adding each of the new package registry types and restricting the amount of space consumed by packages. ### :rocket: Citing repos ([#19999](https://github.com/go-gitea/gitea/issues/19999)) Repositories with a `CITATION.cff` file will now automatically display a hint to cite the repository. ![cite dialogue](/demos/19999/cite-repo.png) To find the dialogue, click on to open the menu for additional actions. Thanks to [@Nolann71](https://github.com/Nolann71) ### :rocket: Copy file content ([#21629](https://github.com/go-gitea/gitea/issues/21629)) It is now easier than ever before to copy the content of a whole file: ![Content copy button](/demos/21629/copy-file-content.png) Thanks to [@yardenshoham](https://github.com/yardenshoham) ### :rocket: Pre-built FreeBSD binaries ([#22397](https://github.com/go-gitea/gitea/issues/22397)) Now we provide official pre-built FreeBSD binaries. Thanks to [@techknowlogick](https://gitea.com/techknowlogick) for the many year effort of adding FreeBSD support to XGO, and to the FreeBSD community for their advice throughout the process ### :rocket: Highlight `Note` and `Warning` in markdown quotes ([#21711](https://github.com/go-gitea/gitea/issues/21711)) The first `**Note**` or `**Warning**` found in a markdown quote (`> text`) will automatically be highlighted now: ![note and warning highlighting](/demos/21711/note-warning-highlight.png) Thanks to [@yardenshoham](https://github.com/yardenshoham) ### :rocket: LFS GC ([#22385](https://github.com/go-gitea/gitea/issues/22385)) Unreferenced LFS files will now be cleaned as well after a while. \ Previously, such files would simply accumulate forever. Thanks to [@zeripath](https://github.com/zeripath) ### :rocket: Projects for organizations/users ([#22235](https://github.com/go-gitea/gitea/issues/22235)) If you have ever had at least two repositories that were related to each other, you probably hated working with projects. This has now improved tremendously as Gitea 1.19 allows you to define projects on a "global" level, to track work in multiple repositories. ![org-user projects](/demos/22235/Org-User-level-projects.png) Thanks to [@lunny](https://github.com/lunny) ### :rocket: Referencing commits across repos ([#22645](https://github.com/go-gitea/gitea/issues/22645)) We were surprised too when we noticed that Gitea doesn't support referencing a commit in another repository yet. Said and done, you can now reference commit `123456789` in repo `owner/repo` by using the syntax `owner/repo@123456789`, when you are talking about that specific commit even if you're not inside of repo `owner/repo` at the moment. Thanks to [@KN4CK3R](https://gitea.com/KN4CK3R) ### :rocket: Reply by email ([#22056](https://github.com/go-gitea/gitea/issues/22056)) It is now possible to reply to a mail about a comment to create a new comment. Thanks to [@KN4CK3R](https://github.com/KN4CK3R) and [@a1012112796](https://github.com/a1012112796) for their work on this widely requested feature ### :rocket: Restrict access token permissions ([#20908](https://github.com/go-gitea/gitea/issues/20908)) Previously, all access tokens had all permissions. \ Now, you can set which permissions access tokens may have to prevent unintended access. \ FYI: We call these restrictions `scoped access tokens`. ![dialogue to select the permissions of an access token](/demos/20908/scoped-access-tokens.png) Thanks to [@harryzcy](https://gitea.com/harryzcy) for increasing the security of Gitea ### :rocket: Scoped labels ([#22585](https://github.com/go-gitea/gitea/issues/22585)) Whenever a label contains a `/` in its name (not at either end), you can decide if a label should be `exclusive`. For example, if the labels `kind/bug` and `kind/enhancement` have the `exclusive` option set, an issue may only be classified as a bug, or an enhancement, but not both. You can see in the screenshot, that multiple `Kind` labels can be set, but only one `Priority` label. Additionally, scoped labels are highlighted differently. ![scoped label display](/demos/22585/scoped-labels.png) By the way, the labels you can see in the screenshot are part of the new label set `Advanced` that is shipped by default with Gitea 1.19. It mimics the labels Gitea uses for its own development. Read more about (scoped) labels in the [documentation](https://docs.gitea.io/en-us/labels/#scoped-labels). Thanks to [@brechtvl](https://github.com/brechtvl) and the rest of the Blender team for adding this functionality to Gitea ### :rocket: Secrets ([#22142](https://github.com/go-gitea/gitea/issues/22142)) Repos, users and organizations can now store secrets that can be used for example inside Gitea actions. These secrets cannot be seen by anyone who isn't an owner of the repo or organization. Thanks to [@wolfogre](https://gitea.com/wolfogre), [@lunny](https://gitea.com/lunny) and [@lafriks](https://gitea.com/lafriks) ### :rocket: Wildcard branch protection ([#20825](https://github.com/go-gitea/gitea/issues/20825)) Previously, branch protection was limited to a single branch that had to exist. Now, you can use wildcards such as - `*` (to protect all branches) - `feature/*-test` (to protect all branches that start with `feature/`, end with `-test`, and have no `/` inbetween) - `test/**` (to protect all branches starting with `test/`, no matter what comes afterward). Thanks to [@lunny](https://gitea.com/lunny) ### :rocket: Honorable mentions (substantial improvements) - Multi-server support: - previously, every generated link was absolute - now, Gitea uses relative links wherever possible - thus, Gitea is now far more portable between different URLs - Accessibility: - Many small improvements to make Gitea usable for everyone - Easier theming: - CSS no longer has any hardcoded colors - Gitea uses standard CSS now instead of the previous LESS - Changing the theme is now fairly easy Lastly, we also want to thank all the maintainers of Gitea who support the community, and who discuss and review all of these PRs, or help the project out in any other way. ## Changelog ### [1.19.0](https://github.com/go-gitea/gitea/releases/tag/1.19.0) - 2023-03-19 * BREAKING * Add loading yaml label template files (#22976) (#23232) * Make issue and code search support camel case (#22829) * Repositories: by default disable all units except code and pulls on forks (#22541) * Support template for merge message description (#22248) * Fix wrong default value for update checker on app.example.ini (#22084) * Remove ONLY_SHOW_RELEVANT_REPOS setting (#21962) * Implement actions (#21937) * Remove deprecated DSA host key from Docker Container (#21522) * Improve valid user name check (#20136) * SECURITY * Return 404 instead of 403 if user can not access the repo (#23155) (#23158) * Support scoped access tokens (#20908) * FEATURES * Add support for commit cross references (#22645) * Scoped labels (#22585) * Add Chef package registry (#22554) * Support asciicast files as new markup (#22448) * cgo cross-compile for freebsd (#22397) * Add cron method to gc LFS MetaObjects (#22385) * Add new captcha: cloudflare turnstile (#22369) * Enable `@`- completion popup on the release description textarea (#22359) * make /{username}.png redirect to user/org avatar (#22356) * Add Conda package registry (#22262) * Support org/user level projects (#22235) * Add Mermaid copy button, avoid unnecessary tooltip hide (#22225) * Add user secrets (#22191) * Secrets storage with SecretKey encrypted (#22142) * Preview images for Issue cards in Project Board view (#22112) * Add support for incoming emails (#22056) * Add Cargo package registry (#21888) * Add option to prohibit fork if user reached maximum limit of repositories (#21848) * Add attention blocks within quote blocks for `Note` and `Warning` (#21711) * Add Feed for Releases and Tags (#21696) * Add package registry cleanup rules (#21658) * Add "Copy" button to file view of raw text (#21629) * Allow disable sitemap (#21617) * Add package registry quota limits (#21584) * Map OIDC groups to Orgs/Teams (#21441) * Keep languages defined in .gitattributes (#21403) * Add Webhook authorization header (#20926) * Supports wildcard protected branch (#20825) * Copy citation file content, in APA and BibTex format, on repo home page (#19999) * API * Match api migration behavior to web behavior (#23552) (#23573) * Purge API comment (#23451) (#23452) * User creation API: allow custom "created" timestamps (#22549) * Add `updated_at` field to PullReview API object (#21812) * Add API management for issue/pull and comment attachments (#21783) * Add API endpoint to get latest release (#21267) * Support system hook API (#14537) * ENHANCEMENTS * Add `.patch` to `attachment.ALLOWED_TYPES` (#23580) (#23582) * Fix sticky header in diff view (#23554) (#23568) * Fix some broken css (#23560) (#23567) * Refactor merge/update git command calls (#23366) (#23544) * Fix review comment context menu clipped bug (#23523) (#23543) * Imrove scroll behavior to hash issuecomment(scroll position, auto expand if file is folded, and on refreshing) (#23513) (#23540) * Increase horizontal page padding (#23507) (#23537) * Use octicon-verified for gpg signatures (#23529) (#23536) * Make time tooltips interactive (#23526) (#23527) * Replace Less with CSS (#23508) * Fix 'View File' button in code search (#23478) (#23483) * Convert GitHub event on actions and fix some pull_request events. (#23037) (#23471) * Support reflogs (#22451) (#23438) * Fix actions frontend bugs (pagination, long name alignment) and small simplify (#23370) (#23436) * Scoped label display and documentation tweaks (#23430) (#23433) * Add missing tabs to org projects page (#22705) (#23412) * Fix and move "Use this template" button (#23398) (#23408) * Handle OpenID discovery URL errors a little nicer when creating/editing sources (#23397) (#23403) * Rename `canWriteUnit` to `canWriteProjects` (#23386) (#23399) * Refactor and tidy-up the merge/update branch code (#22568) (#23365) * Refactor `setting.Database.UseXXX` to methods (#23354) (#23356) * Fix incorrect project links and use symlink icon for org-wide projects (#23325) (#23336) * Fix PR view misalignment caused by long name file (#23321) (#23335) * Scoped labels: don't require holding alt key to remove (#23303) (#23331) * Add context when rendering labels or emojis (#23281) (#23319) * Change interactiveBorder to fix popup preview (#23169) (#23314) * Scoped labels: set aria-disabled on muted Exclusive option for a11y (#23306) (#23311) * update to mermaid v10 (#23178) (#23299) * Fix code wrap for unbroken lines (#23268) (#23293) * Use async await to fix empty quote reply at first time (#23168) (#23256) * Fix switched citation format (#23250) (#23253) * Allow `