## go-gitea/gitea — v28.0.0…v28.1.0

_39 commits._

### Fixes
- **fix: show "merge" form for empty PR (#39640) (#39645)** (4ebd5e3)
- **fix(models): chunk commit status queries to avoid SQLite expression depth limit (#39611) (#39638)** (d6945fb)
- **fix(pull): refresh commits behind when an AGit pull request is updated (#39613) (#39625)** (69a2bfc)
- **fix: correct RemoveWithRetry error handling (#39619) (#39626)** (15a0ea8)
- **fix(web): normalize content for edit history diff and fix comment history dropdown (#39616) (#39627)** (30cc41f)
- **fix(egress): expose more ranges as restricted rather than reserved (#39560) (#39624)** (e27f69b)
- **fix: make "edit pr title & target branch" get correct branch (#39612) (#39621)** (a67171a)
- **fix(actions): refresh reusable caller status when children are skipped (#39589) (#39609)** (c7bd37e)
- **fix: migrate broken team authorize access mode (#39579) (#39580)** (0a40785)
- **fix(pull): fetch PR head refs instead of pushing them (#39603) (#39607)** (e66e773)
- **fix(git): return no submodule web link when the URL cannot be parsed (#39274) (#39592)** (219b0e7)
- **fix(httpcache): raw files return 304 after a change when the new commit is older (#39435) (#39591)** (02fd189)
- **fix(markup): link team mentions that use a different org name case (#39436) (#39588)** (efee6d7)
- **fix(actions): return 401 for unregistered runner (#39578) (#39585)** (0ca36ee)
- **fix(user): restore organizations tab on user profile (#39577) (#39581)** (3ee1924)
- **fix(api): allow bots with pending password changes (#39551) (#39566)** (99ac787)
- **fix(actions): restore pushes to protected branches (#39564) (#39567)** (1856fef)
- **fix: make navbar stopwatch button can show popup (#39562)** (7440f1e)
- **fix: use READ_COMMITTED_SNAPSHOT on MSSQL (#39512) (#39558)** (575754c)
- **fix: make image captcha work with csp (#39555)** (f24f3e1)
- **fix(git): tolerate concurrent repacks in go-git storage (#39536) (#39556)** (1f615a4)
- **fix(markup): use installed math fonts for MathML in Chromium (#39491) (#39547)** (9c77a87)
- **fix: use READ COMMITTED transactions on MySQL and MariaDB (#39506) (#39537)** (4c3df3a)
- **fix(git): avoid unnecessary timers during language stats (#39531) (#39535)** (5659575)
- **fix(api): add index tiebreaker to commit status ordering (#39508) (#39525)** (e48591b)
- **fix(oauth2): allow users to approve scope changes (#38942) (#39521)** (f2a08e0)
- **fix(git): reindex go-git storage when a concurrent repack removes packs (#39510) (#39534)** (532fb8f)
- **fix: trace git command correctly (#39520) (#39524)** (25416e9)
- **fix: handle git branch name with special chars correctly (#39483) (#39515)** (d16daed)
- **fix: add missing checks to several API and web handlers (#39501) (#39507)** (2d58c8c)
- **fix(markup): don't escape ambiguous characters in MathML (#39493) (#39505)** (1e28bb1)
- **fix(markup): skip post-processing inside MathML (#39497) (#39502)** (f0e8c3c)
- **fix: copy new access token to clipboard (#39496) (#39499)** (7c58b73)
- **fix: npm route (#39488) (#39490)** (6546382)
- **fix(actions): keep runs order after auto refresh (#39479) (#39481)** (0930bd7)

### Backend
- **revert: return 401 for unregistered runner (#39599)** (08c1232)
- **enhance(packages/npm): improve npm client compatibility (#39434) (#39522)** (1c4fff0)

### Chore
- **ci(release): automate signed release tags and release notes (#39544) (#39622)** (7f67216)
- **ci: relay fork PR reviews to giteabot through workflow_run (#39546) (#39561)** (638c75a)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/go-gitea/gitea?utm_source=github-action)._