跳到主要内容

Gitea 1.24.0 发布

· 阅读需 38 分钟
lunny
Technical Oversight Committee
techknowlogick
Technical Oversight Committee
denyskon
Gitea maintainer
本文由 AI 翻译,如有歧义请以 英文原文 为准。
1.24.0Release

我们非常激动地宣布 Gitea 最新版本 v1.24.0 正式发布。

Gitea 1.24 包含了大量新功能、改进以及显著的性能提升。以下是 Gitea 1.24 中一些值得注意的变更与特性;完整列表请查阅完整的发布说明。

我们由衷感谢众多通过提交代码补丁、报告工单、翻译以及其他多种方式为项目做出贡献的朋友们。

如何更新

你可以从 下载页面 获取安装包,更多安装细节请参阅 安装指南。升级时,请务必先备份数据,再替换二进制文件或 Docker 容器并重启。

特别鸣谢

我们要感谢所有在 Open Collective 上通过资金支持帮助我们维持项目的朋友们。

一如既往,变更按对用户和管理员的重要程度降序排列,最重要的变更放在最前面。

在寻找无缝、省心的 Git 仓库管理方案?不用再找了!Gitea Cloud 来了,让你的开发体验焕然一新。

重大破坏性变更

⚠️ 让 Gitea 始终使用其内部配置,忽略 /etc/gitconfig#33076

过去,Gitea 能够使用 /etc/gitconfig 下的系统配置来支持一些边缘场景自定义。然而,这有时会导致冲突,最近已多次出现。因此,我们决定不再沿用此做法,为所有 git 命令添加 GIT_CONFIG_NOSYSTEM=1

如果你曾修改 /etc/gitconfig 来影响 Gitea 行为,需要将这些配置项移至 Gitea 的内部 git 配置文件,通常位于 Gitea 的 {AppDataPath}/home/.gitconfig

感谢 @wxiaoguang 贡献此功能。

⚠️ 改进日志格式(#33814

路由日志格式已从

2025/03/06 22:21:12 ...eb/routing/logger.go:102:func1() [I] router: completed GET / for [::1]:52693, 200 OK in 15.9ms @ web/home.go:32(web.Home)

改为

2025/03/06 22:20:35 HTTPRequest [I] router: completed GET / for [::1]:52631, 200 OK in 7.5ms @ web/home.go:32(web.Home)

感谢 @wxiaoguang 贡献此功能。

⚠️ 修复 Markdown 渲染行为(#34122

新增配置选项 MATH_CODE_BLOCK_DETECTION,默认禁用有问题的语法。

部分 Markdown 渲染行为得到改进,以匹配 GitHub,详情请参阅最新文档中的“Markdown”页面。

感谢 @wxiaoguang 贡献此功能。

⚠️ 添加软件包版本 API 端点(#34173

新增两个 API 端点,用于列出软件包的版本和获取软件包的最新版本。

为保持一致性,此端点的大小字段大小写从 Size 更改为 size

感谢 @KN4CK3R 贡献此功能。

重大更新(安全)

🚀 强制双重身份验证(2FA: TOTP 或 WebAuthn)(#34187)

新增了一个全局设置 security.TWO_FACTOR_AUTH,要求所有用户启用双重身份验证。未使用双重身份验证登录的用户虽然可以登录并浏览公开内容,但无法通过 API 或网页对任何仓库进行读或写操作。

感谢 @wxiaoguang 贡献此功能。

全局双重身份验证设置

主要亮点(代码)

🚀 为私有/未公开仓库添加匿名访问支持(#33127#34051

私有仓库的管理员现在可以允许有限范围内的公开访问代码、工单和 Wiki。

私有仓库的匿名访问

感谢 @wxiaoguang 贡献此功能。

🚀 在文件查看页面添加文件树(#32721

浏览仓库文件时,页面左侧现在会显示一个文件树。

文件树

感谢 @kerwin612 贡献此功能。

🚀 为文件列表添加 Material 图标(#33837

我们引入了图标主题,并将 Material 图标主题设为默认。要切换为 Basic 图标主题,请在 app.ini 配置中进行如下设置:

[ui]
; The icons for file list (basic/material)
FILE_ICON_THEME = basic

文件树

感谢 @wxiaoguang 贡献此功能,以及 yardenshoham 在初始合并请求中所做的工作。

🚀 支持通过 Web UI 创建提交时选择邮箱(#33432

如果用户拥有多个邮箱,现在通过 Web UI 更新文件时可以选择使用哪个邮箱地址进行提交。

选择邮箱

感谢 @wxiaoguang 贡献此功能。

🚀 为 RSS/Atom 订阅源添加基本认证支持(#33371

基本认证 RSS/Atom 订阅源

感谢 @misthios 贡献此功能。

🚀 组织私有 README.md(#32872

我们现在支持两种类型的组织 README 仓库:.profile.profile-private

.profile-private 为私有版本,仅组织成员可访问。

组织私有 README

感谢 @changchaishi 贡献此功能。

🚀 邮件选项:将图片以 base64 嵌入而非链接(#32061

新增配置选项 mailer.EMBED_ATTACHMENT_IMAGES,允许将图片嵌入邮件。

邮件嵌入图片选项

感谢 @sommerf-lf 贡献此功能。

主要亮点(工单)

🚀 支持按独占标签排序(工单优先级)(#33206)

在创建或更新独占标签时,你可以指定一个 Sort Order,从而根据工单所分配的独占标签按优先级排序。

Sorting by exclusive labels 1 Sorting by exclusive labels 2

感谢 @telackey 贡献此功能。

🚀 支持子工单列表 (#32940)

在工单、合并请求或评论内容中使用 markdown 语法列出工单时,这些工单将被展开并显示标题。

Sub issue list

感谢 @wxiaoguang 贡献此功能。

主要亮点(合并请求)

🚀 延迟旧合并请求冲突检查至页面查看时的选项(#27779

[repository.pull-request] DELAY_CHECK_FOR_INACTIVE_DAYS 是一项新设置,用于针对指定天数内处于非活跃状态的合并请求,延迟其合并检查。

这避免了拥有许多合并请求的大型仓库可能产生的长时间延迟,并在仓库或合并请求数量较多时降低整体系统负载。

查看该合并请求时,检查会立即开始,完成后合并请求的合并框将自动刷新。通过 API 访问该合并请求同样会立即触发检查。

延迟合并请求冲突检查

感谢 @brechtvl 贡献此功能。

重要亮点(Actions)

🚀 工件操作 v4 的工件下载 API #33510

新增了以下用于获取和管理 actions 工件的 API 端点:

  • GET /runs/{run}/artifacts
  • GET /artifacts
  • GET + DELETE /artifacts/{artifact_id}
  • GET /artifacts/{artifact_id}/zip

感谢 @ChristopherHX 贡献此功能。

🚀 Actions Runner REST API #33873

新增了用于生成注册令牌和管理 action runner 的 API 端点。

感谢 @ChristopherHX 贡献此功能。

🚀 支持通过 API 触发工作流事件 #33545

现在可以通过 API 触发 workflow_dispatch 事件。

感谢 @wxiaoguang 贡献此功能。

主要亮点(项目)

🚀 新增全屏模式,使项目看板视图操作更高效 (#34081](https://github.com/go-gitea/gitea/pull/34081)

为项目看板视图引入了全屏模式。

项目看板全屏

感谢 @kerwin612 为此功能做出贡献。

🚀 组织级别的工作时间追踪 (#19808](https://github.com/go-gitea/gitea/pull/19808)

在组织级别新增了工作时间摘要标签页,使组织管理员能够更好地评估所花费的时间。还可以按时间、仓库、里程碑和成员进行筛选。

组织工作时间摘要

感谢 @kkovacs 为此功能做出贡献。

主要亮点(其他)

🚀 新增 CLI 标志支持 LDAP 组配置 (#33933)

为 ldap 子命令新增 7 个标志,对应 UI 界面中的选项。

感谢 @TheFox0x7 贡献此功能。

🚀 新增请求优先级中间件 (#33951)

新增过载保护中间件,旨在帮助抵御恶意爬虫。

感谢 @bohde 贡献此功能。

性能提升

随着越来越多的大型实例报告性能问题,此版本实现了一些性能提升。

🚀 改进提交列表性能以减少不必要的数据库查询 (#33528)

列出提交时,Gitea 尝试根据提交邮件获取实际用户。逐条从数据库查询用户效率低下。此 PR 通过按邮件批量查询用户来优化该过程,减少了数据库查询次数。

感谢 @lunny 贡献此功能。

🚀 列出提交时缓存 GPG 密钥、邮件和用户 (#34086)

在列出提交时,许多情况下提交的作者是相同的,但当前逻辑总是从数据库获取 GPG 密钥。此 PR 启用了上下文中 GPG 密钥、邮件和用户的缓存,从而减少了数据库查询。

感谢 @lunny 贡献此功能。

🚀 优化用户仪表板中加载动态时的动态总数统计 (#33841)

action 表有超过 500 万条记录时,以下两个 SQL 查询非常慢。

database duration=1.8881s db.sql="SELECT created_unix DIV 900 * 900 AS timestamp, count(user_id) as contributions FROM `action` WHERE user_id=? AND act_user_id=? AND (created_unix > ?) GROUP BY timestamp ORDER BY timestamp"

database duration=1.5408s db.sql="SELECT count(*) FROM `action` WHERE (user_id = ?) AND (is_deleted = ?)"

现在,该计数在首次加载或活动发生变化时会被缓存。

感谢 @lunny 贡献此功能。

🚀 优化热力图查询 (#33853)

action 表中有超过 500 万条记录时,仪表板上的热力图因以下 SQL 而非常缓慢。

database duration=1.8881s db.sql="SELECT created_unix DIV 900 * 900 AS timestamp, count(user_id) as contributions FROM `action` WHERE user_id=? AND act_user_id=? AND (created_unix > ?) GROUP BY timestamp ORDER BY timestamp"

此 PR 为 action 表添加了包含列 user_idact_user_idcreated_unix 的新索引,使得此查询比之前快了约 6 倍。

感谢 @lunny 贡献此功能。

🚀 用户仪表板的分页仅使用上一页/下一页按钮 (#33981)

从用户体验角度看,用户仪表板的分页并不必要,因此改为上一页/下一页按钮。对于活动表中约有 10 million 条记录的实例,此选项会影响首次访问时用户仪表板的加载方式。

感谢 @lunny@wxiaoguang 贡献此功能。

🚀 为通用软件包查询添加缓存 (#22491)

GetPackageDescriptor 中添加了通用软件包查询的缓存。需要处理软件包列表的代码会从此更改中受益。例如,在软件包集成测试中可减少 350 次查询。

感谢 @KN4CK3R@wxiaoguang 贡献此功能。

🚀 将工单置顶移至独立表以提升查询性能 (#33452)

数据库中 is_pullpin_order 列均未建立索引,导致以下 SQL 查询产生额外负载。

SELECT `id`, `repo_id`, `index`, `poster_id`, `original_author`, `original_author_id`, `name`, `content`, `content_version`, `milestone_id`, `priority`, `is_closed`, `is_pull`, `num_comments`, `ref`, `pin_order`, `deadline_unix`, `created_unix`, `updated_unix`, `closed_unix`, `is_locked`, `time_estimate` FROM `issue` WHERE (repo_id =?) AND (is_pull = 0) AND (pin_order > 0) ORDER BY pin_order

基于此,此 PR 将所有工单和合并请求的置顶数据从 issue 表迁移到了 issue_pin 表。这一更改通过提升可扩展性和性能,使大型 Gitea 实例受益。

感谢 @lunny 贡献此功能。

🚀 改进合并请求列表 API 的性能 (#34052)

合并请求列表 API 较慢,需要为每个合并请求打开一个 Git 仓库。假设有 30 条记录,由于每个仓库都会打开一个 git cat-file --batch 子进程,因此会有 30 个子进程。此 PR 使用基础 Git 仓库来获取头提交 ID,而不是从头部仓库读取,从而避免打开任何头部 Git 仓库。

感谢 @lunny 贡献此功能。

🚀 重构 Git 属性并进行性能优化 (#34154)

此 PR 通过使用 git check-attr --source 引入了性能改进,该命令可在裸 Git 仓库中运行,因此无需创建 Git 索引文件。新参数要求 Git 版本 >= 2.40。如果 Git 版本低于 2.40,将回退到之前的实现。

之前:

git-run duration=1.2684s func.caller=git.(*Repository).readTreeToIndex git.command="/opt/homebrew/bin/git ...global... read-tree 70187f7727d4ddd8282b576ece93ca233e88b19e"
git-run duration=0.1633s func.caller=git.(*CheckAttributeReader).Run git.command="/opt/homebrew/bin/git ...global... check-attr --stdin -z --cached linguist-vendored linguist-generated linguist-documentation linguist-detectable linguist-language gitlab-language"

之后:

git-run duration=0.1271s func.caller=attribute.(*BatchChecker).run git.command="/opt/homebrew/bin/git ...global... check-attr -z --source 70187f7727d4ddd8282b576ece93ca233e88b19e linguist-vendored linguist-generated linguist-language gitlab-language --stdin"

感谢 @lunny 贡献此功能。

以下 Changelog 保留英文原文,未作翻译,请与上游逐字核对。

Changelog

  • BREAKING

    • Make Gitea always use its internal config, ignore /etc/gitconfig (#33076)
    • Improve log format (#33814)
    • Fix markdown render behaviors (#34122)
    • Add package version api endpoints (#34173)
  • FEATURES

    • Enforce two-factor auth (2FA: TOTP or WebAuthn) (#34187)
    • Add fullscreen mode as a more efficient operation way to view projects (#34081)
    • Add anonymous access support for private/unlisted repositories (#34051)
    • Support public code/issue access for private repositories (#33127)
    • Add middleware for request prioritization (#33951)
    • Add cli flags LDAP group configuration (#33933)
    • Add file tree to file view page (#32721)
    • Add material icons for file list (#33837)
    • Artifacts download api for artifact actions v4 (#33510)
    • Support choose email when creating a commit via web UI (#33432)
    • Add basic auth support to rss/atom feeds (#33371)
    • Add sorting by exclusive labels (issue priority) (#33206)
    • Add sub issue list support (#32940)
    • Private README.md for organization (#32872)
    • Email option to embed images as base64 instead of link (#32061)
    • Option to delay conflict checking of old pull requests until page view (#27779)
    • Worktime tracking for the organization level (#19808)
  • PERFORMANCE

    • Add cache for common package queries (#22491)
    • Move issue pin to an standalone table for querying performance (#33452)
    • Improve commits list performance to reduce unnecessary database queries (#33528)
    • Optimize total count of feed when loading activities in user dashboard. (#33841)
    • Optimize heatmap query (#33853)
    • Only use prev and next buttons for pagination on user dashboard (#33981)
    • Improve pull request list API performance (#34052)
    • Cache GPG keys, emails and users when list commits (#34086)
    • Refactor Git Attribute & performance optimization (#34154)
    • Performance optimization for tags synchronization (#34355) #34522
  • ENHANCEMENTS

    • Code

      • Display when a release attachment was uploaded (#34261)
      • Support creating relative link to raw path in markdown (#34105)
      • Improve code block readability and isolate copy button (#34009)
      • Improve repository commit view (#33877)
      • Full-file syntax highlighting for diff pages (#33766)
      • Clone repository with Tea CLI (#33725)
      • Improve sync fork behavior (#33319)
      • Make git clone URL could use current signed-in user (#33091)
      • Add submodule diff links (#33097)
      • Link to tree views of submodules if possible (#33424)
      • Only keep popular licenses (#33832)
      • De-emphasize signed commits (#31160)
    • Actions

      • Add flat-square action badge style (#34062)
      • Update action status badge layout (#34018)
      • Download actions job logs from API (#33858)
      • Always show the "rerun" button for action jobs (#33692)
      • Add auto-expanding running actions step (#30058)
      • Update status check for all supported on.pull_request.types in Gitea (#33117)
      • Workflow_dispatch use workflow from trigger branch (#33098)
      • Add action auto-scroll (#30057)
      • Add workflow_job webhook (#33694)
      • Add a button editing action secret (#34462)
    • Pull Request

      • Auto expand "New PR" form (#33971)
      • Mark parent directory as viewed when all files are viewed (#33958)
      • Show info about maintainers are allowed to edit a PR (#33738)
      • Automerge supports deleting branch automatically after merging (#32343)
      • Add additional command hints for PowerShell & CMD (#33548)
    • Issues

      • Allow filtering issues by any assignee (#33343)
      • Show warning on navigation if currently editing comment or title (#32920)
      • Make tracked time representation display as hours (#33315)
      • Add No Results Prompt Message on Issue List Page (#33699)
      • Add sort option recentclose for issues and pulls (#34525) #34539
    • Packages

      • Link to nuget dependencies (#26554)
      • Add composor source field (#33502)
    • Administration

      • Improve navbar: add "admin" tip, add "active" style (#32927)
      • Add a option "--user-type bot" to admin user create, improve role display (#27885)
      • Improve admin user view page (#33735)
      • Support performance trace (#32973)
      • Change pprof labels to be prometheus compatible (#32865)
      • Allow admins and org owners to change org member public status (#28294)
      • Optimize the installation page (#32994)
      • Make public URL generation configurable (#34250)
      • Add a --fullname arg to gitea admin user create. (#34241)
    • Others

      • Improve oauth2 error handling (#33969)
      • Fail mirroring more gracefully (#34002)
      • Align User Details Page Header Layout with Design Specifications (#34192)
      • Webhook add X-Gitea-Hook-Installation-Target-Type Header (#33752)
      • Optimize the dashboard (#32990)
      • Improve button layout on small screens (#33633)
      • Add cropping support when modifying the user/org/repo avatar (#33498)
      • Make ROOT_URL support using request Host header (#32564)
      • Add show more organizations icon in user's profile (#32986)
      • Introduce --page-space-bottom at 64px (#30692)
      • Improve theme display (#30671)
      • Add alphabetical project sorting (#33504)
      • Add global lock for migrations to make upgrade more safe with multiple replications (#33706)
      • Add descriptions for private repo public access settings and improve the UI (#34057)
  • API

    • Actions Runner rest api (#33873)
    • Inclusion of rename organization api (#33303)
    • Add API to support link package to repository and unlink it (#33481)
    • Add API endpoint to request contents of multiple files simultaniously (#34139)
    • Actions artifacts API list/download check status upload confirmed (#34273)
    • Add API routes to lock and unlock issues (#34165)
    • Fix some user name usages (#33689)
    • Allow filtering /repos/{owner}/{repo}/pulls by target base branch queryparam (#33684)
    • Improve swagger generation (#33664)
    • Support Ephemeral action runners (#33570)
    • Support workflow event dispatch via API (#33545)
    • Support workflow event dispatch via API (#32059)
    • Added Description Field for Secrets and Variables (#33526)
    • Reject star-related requests if stars are disabled (#33208)
    • Let API create and edit system webhooks, attempt 2 (#33180)
    • Use Project-URL metadata field to get a PyPI package's homepage URL (#33089)
    • Add last_committer_date and last_author_date for file contents API (#32921)
  • REFACTORS

    • Remove context from git struct (#33793)
    • Refactor admin/common.ts (#33788)
    • Refactor repo-settings.ts (#33785)
    • Refactor repo-issue.ts (#33784)
    • Small refactor to reduce unnecessary database queries and remove duplicated functions (#33779)
    • Refactor initRepoBranchTagSelector to use new init framework (#33776)
    • Refactor buttons to use new init framework (#33774)
    • Refactor markup and pdf-viewer to use new init framework (#33772)
    • Refactor error system (#33771)
    • Refactor mail code (#33768)
    • Update TypeScript types (#33799)
    • Refactor older tests to use testify (#33140)
    • Move notifywatch to service layer (#33825)
    • Decouple context from repository related structs (#33823)
    • Remove context from mail struct (#33811)
    • Refactor dropdown ellipsis (#34123)
    • Refactor functions to reduce repopath expose (#33892)
    • Refactor repo-diff.ts (#33746)
    • Refactor web route handler (#33488)
    • Refactor user & avatar (#33433)
    • Refactor user package (#33423)
    • Refactor decouple context from migration structs (#33399)
    • Refactor context flash msg and global variables (#33375)
    • Refactor response writer & access logger (#33323)
    • Refactor ref type (#33242)
    • Refactor context repository (#33202)
    • Refactor legacy JS (#33115)
    • Refactor legacy line-number and scroll code (#33094)
    • Refactor env var related code (#33075)
    • Move SetMerged to service layer (#33045)
    • Merge updatecommentattachment functions (#33044)
    • Refactor pull-request compare&create page (#33071)
    • Refactor repo-new.ts (#33070)
    • Refactor pagination (#33037)
    • Refactor tests (#33021)
    • Refactor markup render to fix various path problems (#34114)
    • Refactor Branch struct in package modules/git (#33980)
    • Don't create duplicated functions for code repositories and wiki repositories (#33924)
    • Move git references checking to gitrepo packages to reduce expose of repository path (#33891)
    • Refactor cache-control (#33861)
    • Decouple diff stats query from actual diffing (#33810)
    • Move part of updating protected branch logic to service layer (#33742)
    • Decouple Batch from git.Repository to simplify usage without requiring the creation of a Repository struct. (#34001)
    • Refactor tmpl and blob_excerpt (#32967)
    • Refactor template & test related code (#32938)
    • Refactor db package and remove unnecessary DumpTables (#32930)
    • Refactor pprof labels and process desc (#32909)
    • Refactor repo-projects.ts (#32892)
    • Refactor getpatch/getdiff functions and remove unnecessary fallback (#32817)
    • Uniform all temporary directories and allow customizing temp path (#32352)
    • Remove context from retry downloader (#33871)
    • Refactor global init code and add more comments (#33755)
    • Remove some unnecessary template helpers (#33069)
    • Move and rename UpdateRepository (#34136)
    • Move hooks function to gitrepo and reduce expose repopath (#33890)
    • Add abstraction layer to delete repository from disk (#33879)
    • Add abstraction layer to check if the repository exists on disk (#33874)
    • Move ParseCommitWithSSHSignature to service layer (#34087)
    • Move duplicated functions (#33977)
    • Extract code to their own functions for push update (#33944)
    • Move gitgraph from modules to services layer (#33527)
    • Move commits signature and verify functions to service layers (#33605)
    • Use CloseIssue and ReopenIssue instead of ChangeStatus (#32467)
    • Refactor arch route handlers (#32993)
    • Refactor "string truncate" (#32984)
    • Refactor arch route handlers (#32972)
    • Clarify path param naming (#32969)
    • Refactor request context (#32956)
    • Move some errors to their own sub packages (#32880)
    • Move RepoTransfer from models to models/repo sub package (#32506)
    • Move delete deploy keys into service layer (#32201)
    • Refactor webhook events (#33337)
    • Move some Actions related functions from routers to services (#33280)
    • Refactor RefName (#33234)
    • Refactor context RefName and RepoAssignment (#33226)
    • Refactor repository transfer (#33211)
    • Refactor error system (#33626)
    • Refactor error system (#33610)
    • Refactor package (routes and error handling, npm peer dependency) (#33111)
    • Use test context in tests and new loop system in benchmarks (#33648)
    • Some small refactors (#33144)
    • Simplify context ref name (#33267)
  • BUGFIXES

    • Fix some dropdown problems on the issue sidebar (#34308) #34327
    • Do not return archive download URLs in API if downloads are disabled (#34324) #34338
    • Fix LFS files being editable in web UI (#34356) #34362
    • Fix only text/* being viewable in web UI (#34374) #34378
    • Fix LFS file not stored in LFS when uploaded/edited via API or web UI (#34367)
    • Grey out expired artifact on Artifacts list (#34314) #34404
    • Fix incorrect divergence cache after switching default branch (#34370) #34406
    • Refactor commit message rendering and fix bugs (#34412) #34414
    • Merge and tweak markup editor expander CSS (#34409) #34415
    • Fix GetUsersByEmails (#34423) #34425
    • Only git operations should update last changed of a repository (#34388) #34427
    • Fix comment textarea scroll issue in Firefox (#34438) #34446
    • Fix repo broken check (#34444) #34452
    • Fix remove org user failure on mssql (#34449) #34453
    • Fix Workflow run Not Found page (#34459) #34466
    • When updating comment, if the content is the same, just return and not update the database (#34422) #34464
    • Fix project board view (#34470) #34475
    • Fix get / delete runner to use consistent http 404 and 500 status (#34480) #34488
    • Fix url validation in webhook add/edit API (#34492) #34496
    • Fix edithook api can not update package, status and workflow_job events (#34495) #34499
    • Fix ephemeral runner deletion (#34447) #34513
    • Don't display error log when .git-blame-ignore-revs doesn't exist (#34457)
    • Only allow admins to rename default/protected branches (#33276)
    • Improve "lock conversation" UI (#34207)
    • Fix incorrect file links (#34189)
    • Optimize Overflow Menu (#34183)
    • Check user/org repo limit instead of doer (#34147)
    • Make markdown render match GitHub's behavior (#34129)
    • Fix team permission (#34128)
    • Correctly handle submodule view and avoid throwing 500 error (#34121)
    • Fix users being able bypass limits with repo transfers (#34031)
    • Avoid creating unnecessary temporary cat file sub process (#33942)
    • Refactor organization menu (#33928)
    • Fix various Fomantic UI and htmx problems (#33851)
    • Fix 500 error when error occurred in migration page (#33256)
    • Validate that the tag doesn't exist when creating a tag via the web (#33241)
    • Add missed transaction on setmerged (#33079)
    • Rework create/fork/adopt/generate repository to make sure resources will be cleanup once failed (#31035)
    • Valid email address should only start with alphanumeric (#28174)
    • Fix webhook url (#34186)
    • Fix "toAbsoluteLocaleDate" test when system locale is not en-US (#33939)
    • Fix file name could not be searched if the file was not a text file when using the Bleve indexer (#33959)
    • Fix cannot delete runners via the modal dialog (#33895)
    • Fix unpin hint on the pinned pull requests (#33207)
    • Fix parentCommit invalid memory address or nil pointer dereference. (#33204)
    • Fix comment header padding (#33377)
    • Fix some migration and repo name problems (#33986)
    • Fix various trivial frontend problems (#34263)
    • Fix Set Email Preference dropdown and button placement (#34255)
    • Fix quoted replies incorrectly render user input as part of the quote (#34216)
    • Fix button alignments and remove unnecessary styles (#34206)
    • Restore form inputs on organization create error (#34201)
    • Try to fix ACME (3rd) (#33807)
    • Fix incorrect ref "blob" (#33240)
    • Fix dynamic content loading init problem (#33748)
    • Fix git empty check and HEAD request (#33690)
    • Fix Untranslated Text on Actions Page (#33635)
    • Fix issue label delete incorrect labels webhook payload (#34575)
    • Fix incorrect page navigation with up and down arrow on last item of dashboard repos (#34570)
    • Fix/improve avatar sync from LDAP (#34573)
    • Fix some trivial problems (#34579)
    • Retain issue sort type when a keyword search is introduced (#34559)
    • Always use an empty line to separate the commit message and trailer (#34512)
    • Fix line-button issue after file selection in file tree (#34574)
    • Fix doctor deleting orphaned issues attachments (#34142)
    • Add webhook assigning test and fix possible bug (#34420)
    • Fix possible nil description of pull request when migrating from CodeCommit (#34541)
    • Refactor commit reader (#34542)
    • Fix possible pull request broken when leave the page immediately after clicking the update button #34509
  • MISC

    • Make pull request and issue history more compact (#34588)
    • Run integration tests against postgres 14 (#34514) #34536
    • Enable addtional linters (#34085)
    • Enable testifylint rules (#34075)
    • Enable staticcheck QFxxxx rules (#34064)
    • Improve Actions test (#32883)
    • Drop fomantic build (#33845)
    • Go1.24 (#33562)
    • Run yamllint with strict mode, fix issue (#33551)
    • Disable cron task to update license (#33486)
    • Optimize makefile help information generation (#33390)
    • Convert github.com/xanzy/go-gitlab into gitlab.com/gitlab-org/api/client-go (#33126)
    • Add missed changelogs (#33649)
    • Update .changelog file to add performance label group (#33472)
    • Add missing POPULATE_SQUASH_COMMENT_WITH_COMMIT_MESSAGES in app.example.ini (#33363)
    • Update README screenshots (#33347)
    • Update unrs-resolver (#34279)
    • Update go&js dependencies (#34262)
    • Optimize the calling code of queryElems (#34235)
    • Update protected_branch.tmpl (#34193)
    • Feat/optimize span svg layout (#34185)
    • Set MERMAID_MAX_SOURCE_CHARACTERS to 50000 (#34152)
    • Update JS and PY deps (#34143)
    • Add Chinese translations for README files (#34132)
    • Use overflow-wrap: anywhere to replace word-break: break-all (#34126)
    • Clarify ownership in password change error messages (#34092)
    • Add toggleClass function in dom.ts (#34063)
    • Update to golangci-lint v2 (#34054)
    • Update Makefile test comments (#34013)
    • Update go mod dependencies (#33988)
    • Use filepath.Join instead of path.Join for file system file operations (#33978)
    • Prepare common tmpl functions in a middleware (#33957)
    • Remove unused or abused styles (#33918)
    • Update JS and PY deps, misc tweaks (#33903)
    • Try to figure out attribute checker problem (#33901)
    • Add lock for a repository pull mirror (#33876)
    • Fine tune push mirror UI (#33866)
    • Improve issue & code search (#33860)
    • Use pullrequestlist instead of []*pullrequest (#33765)
    • Upgrade act to 0.261.4 and actions-proto-go to v0.4.1 (#33760)
    • Align sidebar gears to the right (#33721)
    • Update Go dependencies (skip blevesearch, meilisearch) (#33655)
    • Add migrations and doctor fixes (#33556)
    • Remove "class-name" from svg icon (#33540)
    • Update MAINTAINERS (#33529)
    • Add "No data available" display when list is empty (#33517)
    • Use git diff-tree for DiffFileTree on diff pages (#33514)
    • Give organisation members access to organisation feeds (#33508)
    • Update feishu icon (#33470)
    • Hide/disable unusable UI elements when a repository is archived (#33459)
    • Update @github/text-expander-element to 2.9.0 (#33435)
    • Do not access GitRepo when a repo is being created (#33380)
    • Fix incorrect ref usages (#33301)
    • Prepare for support performance trace (#33286)
    • Enable Typescript noImplicitThis (#33250)
    • Remove unused CSS styles and move some styles to proper files (#33217)
    • Add .run to gitignore (#33175)
    • Fix typo in gitea downloader test and add missing codebase in ToGitServiceType (#33146)
    • Remove extended glob pattern from branch protection UI (#33125)
    • Clean up legacy form CSS styles (#33081)
    • Unset XDG_HOME_CONFIG as gitea manages configuration locations (#33067)
    • Add IntelliJ Gateway's .uuid to gitignore (#33052)
    • User facing messages for AGit errors (#33012)
    • Always show assignees on right (#33006)
    • Fix eslint (#33002)
    • Update JS dependencies (#32914)
    • Bump x/net (#32896) (#32900)

本次发布贡献者

我们将在下次发布时感谢所有原始向后移植合并请求的贡献者。