Gitea 1.27.0 发布
我们很高兴宣布 Gitea 最新版本 v1.27.0 正式发布。
Gitea 1.27.0 带来了令人振奋的新功能、性能改进以及质量提升。同时,该版本还包含了大量安全修复,因此我们强烈建议您尽快升级——详情请参阅安全部分。以下是 Gitea 1.27 中一些值得注意的变更和功能;完整列表请查看完整发布说明。
我们非常感谢众多为项目做出贡献的人,包括提交代码补丁、报告工单、翻译以及以各种方式支持我们的人。
此版本中的多个 Actions 功能需要与 runner 协商能力。要获取作业摘要、过渡性的 Cancelling 作业状态以及正确的 continue-on-error 聚合,请将您的 runner 升级到 Gitea Runner 2.0.0。Gitea 与旧版 runner 保持兼容——当 runner 未声明支持某项功能时,Gitea 会直接跳过该功能。需要新版 runner 的功能点将在下文用 🔧 需要 Gitea Runner 2.0.0 标注。
安全
此版本修复了以下安全漏洞,请尽快升级。
- CVE-2026-58443:仅限公共仓库的令牌可以更新私有合并请求的源分支。已由 #38406 修复。感谢 @ohxorud-dev 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-58433:团队-仓库关联端点绕过了
RepoAdminChangeTeamAccess组织设置。已由 #38324 修复。感谢 @de3erve 报告此问题,以及 @bircni 提供补丁。 - CVE-2026-58435:通过 LFS 部署密钥实现权限提升。已由 #38322 修复。感谢 @adrian-doyensec 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-58436:通过
Accept-Language标头的二次时间解析造成的未认证拒绝服务。已由 #38323 修复。感谢 @tonghuaroot 报告此问题,以及 @bircni 提供补丁。 - CVE-2026-58437:可通过 Git 推送选项操纵仓库可见性。已由 #38323 修复。感谢 @prakhar0x01 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-58439:分支保护绕过 — 重新指定合并请求目标会保留过时的
official审批标记。已由 #38319 修复。感谢 @yonatan-pl 报告此问题,以及 @bircni 提供补丁。 - CVE-2026-54481:内部 API HTTP 客户端不再跳过 TLS 证书验证。已由 #38406 修复。感谢 @sanil18 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-55987:在未签发刷新令牌的认证来源上,OAuth2 登录可能重新激活已被管理员停用的账户。已由 #38406 修复。感谢 @khoadb175 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-57894:仓库迁移在 URL 允许/阻止验证后仍跟随 Git HTTP 重定向,可能导致内部仓库外泄。已由 #38320 修复。感谢 @cyberlanc3r 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-58314:仓库迁移中存在的两个 SSRF 问题。已由 #38406 修复。感谢 @xclow3n 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-59765:通过迁移资源下载进行的 SSRF 攻击,绕过了主机匹配器,可读取内部文件和云元数据。已由 #38406 修复。感谢 @tikket1、@theluckystrike、@Letian-aarch64、@JebeenLee、@JLLeitschuh、@pick 和 @noobx123 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-58416:Fork 仓库的合并请求 Actions 任务可通过协作所有者的分支读取第三方私有仓库。已由 #38214 修复。感谢 @CassianStarck 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-58420:迁移恢复中通过
file://URI 进行的本地文件包含。已由 #38215 修复。感谢 @isa0-gh 报告此问题,以及 @bircni 提供补丁。 - CVE-2026-58425:OAuth 令牌自省返回了发给其他客户端的令牌元数据。已由 #38042 修复。感谢 @bl4cksku11 报告此问题,以及 @lunny 提供补丁。
- CVE-2026-58427:可通过
/membersAPI 端点泄露私有组织成员列表。已由 #38213 修复。感谢 @Razzlemouse 报告此问题,以及 @bircni 提供补丁。 - CVE-2026-58428:发布附件扩展名允许列表可通过 Web 发布编辑表单绕过。已由 #38314 修复。感谢 @bl4cksku11 报告此问题,以及 @lunny 提供补丁。
- CVE-2026-58429:仅限公共范围的个人访问令牌可能绕过组织和权限端点的范围限制。已由 #38323 修复。感谢 @Pcat2003 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-58431:公共范围 API 令牌限制未在团队 API 路由上强制执行。已由 #38323 修复。感谢 @rmb122 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-58432:缺少授权检查,允许通过用户控制的键访问敏感资源。已由 #38318 修复。感谢 @z3r0s6 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-58438:在移除工单依赖项时存在跨仓库 IDOR,攻击者可以篡改并评论其无权访问的私有仓库。已由 #38324 修复。感谢 @de3erve 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-58440:在协作者的仓库访问权限被撤销后,该协作者创建的 Webhook 仍会触发。已由 #38324 修复。感谢 @sec-reex 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-58441:
restore-repo中通过未净化的克隆 URL 进行的 SSRF。已由 #38324 修复。感谢 @yoojoon2 报告此问题,以及 @bircni 提供补丁。 - CVE-2026-58442:通过多应答 DNS 允许列表绕过实现的仓库迁移 SSRF。已由 #38324 修复。感谢 @Tomer-PL 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-58444:仓库首页上的个人访问令牌范围强制执行绕过,可能泄露私有仓库内容。已由 #38406 修复。感谢 @StarPlatinu 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-42931:npm 软件包标签端点中无限制的请求体读取导致拒绝服务。已由 #38406 修复。感谢 @Tricta 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-50105:RSS/Atom 提处理程序绕过了 API 令牌范围和公共范围限制。已由 #38406 修复。感谢 @CassianStarck 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-55982:OIDC userinfo 端点返回身份声明时未强制执行 API 令牌范围。已由 #38406 修复。感谢 @ybsun0215 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-55986:电子邮件管理 API 绕过了管理凭据功能限制。已由 #38406 修复。感谢 @martijnperdaan52 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-56443:对具有受限可见性的所有者存在残留的公共范围令牌绕过。已由 #38323 修复。感谢 @JebeenLee 和 @alecclyde 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-56654:通过 API 中的访问令牌范围升级实现权限提升。已由 #38406 修复。感谢 @AdamKorcz 和 @ohxorud-dev 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-56657:SSH 密钥解析器中的拒绝服务。已由 #38406 修复。感谢 @AdamKorcz 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-56755:Debian 软件包上传中的二次字符串拼接导致拒绝服务。已由 #38406 修复。感谢 @AdamKorcz 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-57886:重新关联跨仓库工单和评论文本附件可能泄露私有附件内容。已由 #38406 修复。感谢 @zulloper 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-57897:通过组织级别的 Actions 运行/任务 API 泄露跨仓库信息。已由 #38406 修复。感谢 @prakhar0x01 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-58507:通过 go-get 元数据端点暴露私有仓库存在性。已由 #38406 修复。感谢 @prakhar0x01 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-58508:迁移/镜像中的两个 SSRF 问题(DNS 重绑定和缺少重新验证)。已由 #38406 修复。感谢 @AmerMrkaljevic 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-58510:仓库监视清理修复未应用于 API
EditRepo路径,导致仓库变为私有时仍残留监视记录。已由 #38406 修复。感谢 @eddieran 报告此问题,以及 @bircni 提供补丁。 - CVE-2026-59763:Arch 软件包文件元数据无限制可能导致软件包上传时的资源放大。已由 #38406 修复。感谢 @kkkh1 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-23603:OAuth2 头像同步中的 Blind SSRF,通过未经验证的 OIDC
picture声明实现。已由 #38406 修复。感谢 @alimezar 报告此问题,同时来自 @cwanglab、@Vext-Labs、@Medoedus、@ffulbtech、@theluckystrike、@prakhar0x01、@AnuragBathani 和 @khoadb175 也提供了报告,以及 @bircni 提供补丁。 - CVE-2026-58417:REST API 暴露了私有组织的成员信息。已由 #38145 修复。感谢 @maluff、@Sai2r 和 @mgelde 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-58434:在访问权限被撤销后,私有仓库元数据仍可访问。已由 #38321 修复。感谢 @ybsun0215 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-58445:删除工单标签 API 中存在跨仓库标签 ID 枚举 Oracle。已由 #38406 修复。感谢 @CassianStarck 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-55984:AddTime API 中的空指针解引用可导致经过身份验证的拒绝服务。已由 #38406 修复。感谢 @martijnperdaan52 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-56750:记住我的令牌未正确失效,允许会话复用。已由 #38406 修复。感谢 @AdamKorcz 报告此问题,以及 @bircni 提供补丁。
- CVE-2026-58511:Webhook 授权标头通过 API 以明文形式返回。已由 #38406 修复。感谢 @theluckystrike 和 @APhuongKMA 报告此问题,以及 @bircni 提供补丁。
此版本还包含以下额外的安全强化修复:
- 被撤销的用户无法再通过用户
starred/timesAPI 端点读取私有仓库对象或工单标题。已由 #38324 修复。感谢 @sec-reex 报告此问题,以及 @bircni 提供补丁。 - 为软件包添加了私有/内部标签,并修复了 Composer 软件包源权限检查。已由 #37610 修复。感谢 @JoshBolding 和 @sec-reex 报告此问题,以及 @lunny 提供补丁。
- 通过 API 存储的 AWS 凭证现在已加密。已由 #37679 修复。感谢 @Exgene 提供补丁。
- 已将
github.com/go-git/go-git/v5更新至 v5.19.1,以包含上游安全修复 (#37786)。
我们感谢所有负责任地披露这些问题的安全研究人员。
如何更新
您可以从我们的 下载页面 获取。请阅读我们的 安装指南 了解更多安装信息。升级时,请一如既往地备份数据,然后替换二进制文件或 Docker 容器并重启。
特别感谢
我们谨向所有在 Open Collective 上资助项目的支持者致以谢意,是你们的支持让项目得以持续运转。
一如既往,变更按对用户及管理员的重要程度降序排列,最重要的更新会放在最前面。
想要无缝、省心地管理 Git 仓库?无需再找!Gitea Cloud 将彻底改变你的开发体验。
重大破坏性变更
⚠️ 将发布制品签名迁移至 sigstore (#38250)
Gitea 发布制品现在改用 sigstore 签名,替代了先前的 GPG 流程。如果您在部署流水线中验证下载的二进制文件或 Docker 镜像,请将验证步骤更新为基于 sigstore 的流程。
感谢 @TheFox0x7 贡献此变更。
⚠️ 改进了对可复用工作流的支持 (#37478)
使用 uses: 引用的可复用工作流现在由 Gitea 端解析,而非 runner。每个被调用的(子)作业将作为独立的 ActionRunJob 插入,并以独立任务的形式分发,因此被调用方的日志会作为单独的作业条目显示,而不是内联在调用方的“Set up job”步骤中。升级后,请检查依赖可复用工作流行为的工作流。
外部可复用工作流(uses: https://other-gitea-instance/OWNER/REPO/.gitea/workflows/test.yaml@REF)不再受支持。如需继续使用,请将相关仓库克隆到本地实例,并在那里引用。
感谢 @Zettat123 贡献此变更。
⚠️ 使用 Content-Security-Policy 脚本随机数 (#37232)
现在,内联脚本通过每个请求唯一的 CSP 随机数来允许执行,而非使用宽松的策略。注入内联 <script> 标签的自定义模板、主题或嵌入内容可能会停止执行,需要更新以携带该随机数。升级后请检查自定义前端设置。
感谢 @wxiaoguang 贡献此变更。
⚠️ 默认发送 X-Content-Type-Options: nosniff (#37354)
所有响应现在都包含 X-Content-Type-Options: nosniff 标头,该标头可防止浏览器对响应进行 MIME 嗅探,从而偏离其声明的 Content-Type。如果反向代理、嵌入或自定义资源依赖于内容嗅探,可在 [security] 下设置 X_CONTENT_TYPE_OPTIONS = unset 以移除该标头,或根据需要覆盖其值。
感谢 @SAY-5 贡献此变更。
主要亮点(Actions)
🚀 可复用工作流现在是一等作业(#37478)
通过 uses: 调用的工作流现在由 Gitea 自身解析,不再由 runner 解析。每个被调用的工作流都会展开为独立的作业,这些作业作为独立任务调度:它们在运行侧边栏中拥有自己的条目、自己的日志,并在依赖关系图中拥有自己的节点,嵌套在调用它们的作业下方。被调用方的输出不再内联到调用方的“设置作业”步骤中,因此可复用工作流内部的失败会直接指向失败的作业。嵌套调用(一个可复用工作流调用另一个)以同样方式工作,并且输出、输入和矩阵作业可以跨边界传播。

这会改变现有行为——请参阅“破坏性变更”下的“改进了对可复用工作流的支持”。不再支持通过 URL 引用的外部可复用工作流(uses: https://other-instance/OWNER/REPO/...)。
感谢 @Zettat123 贡献了这个功能。
🚀 🔧 作业摘要——GITHUB_STEP_SUMMARY(#37500)
工作流步骤可以将 Markdown 写入 GITHUB_STEP_SUMMARY,Gitea 会在运行 摘要 视图中进行渲染。摘要存储在数据库中,而不是作为可下载的构件,后续的优化也使摘要界面更加丰富(#37824)。
🔧 需要 Gitea Runner 2.0.0 才能上传摘要。Gitea 会宣告 job-summary 能力;如果使用较旧的 runner,则不会上传任何内容,摘要视图将保持空白。

感谢 @bircni 贡献了这个功能。
🚀 🔧 实现 jobs.<job_id>.continue-on-error(#38100)
continue-on-error 之前会从 YAML 中解析,但在计算运行总体状态时会被忽略,因此一个被容忍的作业失败仍可能导致整个运行失败。Gitea 现在会为每个作业存储该值,并在汇总工作流运行时将允许的失败视为成功,与 GitHub Actions 行为一致。
🔧 需要 Gitea Runner 2.0.0 才能让 runner 允许作业失败;Gitea 1.27 提供了运行状态汇总功能。
感谢 @bircni 贡献了这个功能。
🚀 🔧 取消工作流时运行收尾/清理步骤(#37275)
取消运行现在会执行运行后清理以及 always() / cancelled() 步骤,采用一个过渡性的 正在取消 作业状态,然后才将作业最终标记为已取消。
🔧 需要 Gitea Runner 2.0.0 才能支持过渡性的 正在取消 状态和进行能力协商。使用较旧的 runner,取消功能仍然有效,但没有完整的服务器端语义支持。
感谢 @KalashThakare、@bircni 和 @Zettat123 贡献了这个功能。
🚀 组织/用户级别和全局作用域的工作流(#38154)
可以在组织/用户级别以及实例范围内定义工作流,这样共享的自动化就无需再复制到每个仓库中。

感谢 @Zettat123 贡献了这个功能。
🚀 在管理界面中批量删除、禁用和启用 runner(#37869)
现在可以在管理 runner 列表中批量管理多个 runner,而无需逐个操作。

感谢 @bircni 贡献了这个功能。
🚀 工作流状态徽章模态框(#38196)
可以从 Actions 界面的模态框中获取工作流状态徽章的 Markdown/HTML 代码片段。

感谢 @guanzi008 贡献了这个功能。
🚀 在浏览器标签页图标上显示运行状态(#38071)
运行视图会将当前作业状态反映到浏览器标签页图标上(并设置描述性的标签页标题,#37870),这样你就可以从其他标签页监视运行情况。

感谢 @bircni 贡献了这个功能。
🚀 列出曾经运行过但已从默认分支中移除的工作流(#37835)
那些在默认分支上已不再存在的历史工作流仍然会保留在列表中,这样它们过去的运行就仍然可以被发现。

感谢 @bircni 贡献了这个功能。
主要亮点(代码与仓库)
🚀 Jupyter Notebook (.ipynb) 渲染 (#37433)
Notebook 文件现在在文件视图中会显示格式化后的输出结果,而不再是原始的 JSON。

感谢 @karthikbhandary2 贡献此功能。
🚀 允许每个工单和合并请求关联多个项目 (#36784)
现在工单和合并请求可以同时归属到多个项目,并新增了列选择器,方便直接从侧边栏将其放入对应列 (#37037)。

感谢 @icyavocado 和 @myers 贡献这些功能。
🚀 头像堆叠 (#37594)
现在通过重叠的头像堆叠,可以更紧凑地展示参与人员(如负责人、参与者等列表)。

感谢 @bircni 贡献此功能。
🚀 文件提交历史中的“追踪重命名” (#34994)
在文件的提交历史列表中,可以追踪文件的重命名记录,这样历史记录就不会在重命名处中断。

感谢 @Chi-Iroh 贡献此功能。
🚀 Markdown 围栏代码块支持更多语法高亮 (#37154)
现在能够识别并高亮更多围栏代码块的语言/信息字符串。
感谢 @wxiaoguang 贡献此改进。
主要亮点(组织与团队)
🚀 团队可见性,让组织成员也能发现团队(#37680)
团队可设为对组织成员可见,这样更方便找到合适的团队并申请加入。

感谢 @bircni 贡献了此功能。
🚀 组织成员页新增搜索栏(#37347)
可直接在组织成员页面内对大量成员进行筛选。

感谢 @lunny 贡献了此功能。
🚀 将仓库创建限制拆分为用户与组织两个作用域(#37872)
仓库创建限制现在可针对个人账户和组织分别独立设置。
感谢 @Zettat123 贡献了此功能。
主要亮点(API)
🚀 在 /openapi.v1.json 提供 OpenAPI 3.0 规范(#37038)
Gitea 以 OpenAPI 3.0 格式发布其 API 描述,供工具和客户端生成使用。
感谢 @myers 贡献此功能。
🚀 令牌自省与自删除端点(#37995)
新增 API 端点,可检查当前令牌信息,并允许令牌自我删除。
感谢 @TheFox0x7 贡献此功能。
🚀 工单/合并请求负责人 API(#37330)
通过 API 管理工单和合并请求的负责人。
感谢 @lunny 贡献此功能。
🚀 列出某个工作流的运行记录(#37196)
GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs 可列出特定工作流的运行记录。
感谢 @bn-zr 贡献此功能。
🚀 服务端分支过滤与原始 diff/patch 比较(#37982)(#37632)(#38148)
列出分支的 API 新增了 q 过滤条件,比较功能提供了原始 diff/patch 端点,并且比较操作支持引用后缀。
感谢 @HarshMN2345、@grafail 和 @eyupcanakman 贡献这些功能。
其他主要亮点
🚀 OAuth2 重定向 URI 支持自定义 URI 方案(#37356)
OAuth2 应用可以注册使用自定义 URI 方案的重定向 URI,这是原生和桌面应用常见的需求。
感谢 @wxiaoguang 贡献此功能。
🚀 自动生成额外的 SSH 主机密钥(#33974)
Gitea 可以为内置 SSH 服务器自动生成额外的 SSH 主机密钥。
感谢 @TheFox0x7 贡献此功能。
🚀 支持 OpenSearch 和基于 REST 的搜索客户端(#37411)
用 REST API 客户端替代了 olivere/elastic 依赖,在 Elasticsearch 之外新增了对 OpenSearch 的支持。
感谢 @silverwind 贡献此改进。
🚀 Telegram webhook 使用 Bot API 10.1 富文本消息(#38298)
Telegram webhook 现在采用更新的 Bot API 富文本消息格式。
感谢 @SudhanshuMatrix 贡献此功能。
以下 Changelog 保留英文原文,未作翻译,请与上游逐字核对。
Changelog
-
BREAKING
-
SECURITY
- Fix: various security fixes (#38406) (#38426)
- Fix(security): harden access checks and migration validation (#38324) (#38400)
- Fix: enforce public-only token scope and harden push options / locale parsing (#38323) (#38399)
- Fix(pull): re-evaluate review official flag on target branch change (#38319) (#38402)
- Fix(api): stop leaking private repo metadata after access revocation (#38321) (#38390)
- Fix(lfs): require proof of possession for cross-repo objects (#38322) (#38389)
- Fix(mirror): disable HTTP redirects on pull mirror sync (#38320) (#38367)
- Fix: golang html template url escaping (#38363) (#38369)
- Fix(release): validate web attachment renames against allowed types (#38314) (#38328)
- Fix(release): gate draft release attachments on web download endpoints (#38318) (#38325)
- Fix(deps): update module github.com/go-git/go-git/v5 to v5.19.1 [security] (#37786)
- Fix(oauth): restrict introspection to the token's client (#38042)
- Fix(api): don't expose private org membership via public_members (#38145)
- Fix(actions): deny fork-PR cross-repo access via collaborative owner (#38214)
- Fix(migrations): prevent path traversal in repository restore (#38215)
-
FEATURES
- Feat(actions): add workflow status badge modal (#38196)
- Feat(actions): support owner-level and global scoped workflows (#38154)
- Feat(api): support ref suffixes in compare (#38148)
- Feat(actions): implement
jobs.<job_id>.continue-on-error(#38100) - Feat(actions): show run status on browser tab favicon (#38071)
- Feat(api): add token introspection and self-deletion endpoint (#37995)
- Feat(api): add q parameter to list branches API for server-side filtering (#37982)
- Feat(repo): split repository creation limit into user and org scopes (#37872)
- Feat(actions): bulk delete, disable and enable runners in admin UI (#37869)
- Feat(actions): List workflows that were executed once but got removed from the default branch (#37835)
- Feat(org): add team visibility so org members can discover teams (#37680)
- Feat: add raw diff/patch endpoint for repository comparisons (#37632)
- Feat: Add avatar stacks (#37594)
- Feat(actions): add job summaries (GITHUB_STEP_SUMMARY) (#37500)
- Feat(web): Add Jupyter Notebook (.ipynb) Rendering Support (#37433)
- Support for Custom URI Schemes in OAuth2 Redirect URIs (#37356)
- Feat(orgs): Add search bar for organization members tab page (#37347)
- Feat(api): Add assignees APIs (#37330)
- Feat(api): Add
GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs(#37196) - Serve OpenAPI 3.0 spec at /openapi.v1.json (#37038)
- Add project column picker to issue and pull request sidebar (#37037)
- Allow multiple projects per issue and pull requests (#36784)
- Feat(ui): add "follow rename" to file commit history list (#34994)
- Feat(ssh): auto generate additional ssh keys (#33974)
-
ENHANCEMENTS
- Enhance(actions): only create filtered-out workflow commit status for required contexts (#38371) (#38385)
- Enhance: allow builtin default git config options to be overridden (#38172)
- Enhance: allow MathML core elements (#38034)
- Enhance(markup): improve issue title rendering (#37908)
- Enhance(actions): set descriptive browser tab title on run view (#37870)
- Enhance: Migrate remaining gopkg.in/yaml.v3 usages to go.yaml.in/yaml/v4 (#37866)
- Enhance(actions): show workflow name from YAML instead of filename (#37833)
- Feat(actions): add before/after to PR synchronize event payload (#37827)
- Enhance(actions): add branch filters to run list (#37826)
- Enhance(actions): Make Summary UI more beautiful with more infos (#37824)
- Feat: add copy button to action step header, improve other copy buttons (#37744)
- Fix(icon): use repo-forked icon to display forks count (#37731)
- Feat(api): add sort and order query parameters to job list endpoints (#37672)
- Feat(api): add last_sync to repository API (#37566)
- Enhance: Adjust Workflow Graph styling (#37497)
- Improve code editor text selection and clean up lint enablement (#37474)
- Add mirror auth updates to repo edit API and settings (#37468)
- Replace
olivere/elasticwith REST API client, add OpenSearch support (#37411) - Feat: Add default PR branch update style setting (#37410)
- Fix inconsistent disabled styling on logged-out repo header buttons (#37406)
- Allow fast-forward-only merge when signed commits are required (#37335)
- Enhance styling in actions page (#37323)
- Fix: improve actions status icons and texts (#37206)
- Make Markdown fenced code block work with more syntaxes (#37154)
- Fix: Sort action run jobs by JobID and Name with matrix examples (#37046)
- Add API endpoint to reply to pull request review comments (#36683)
-
PERFORMANCE
- Perf(actions): debounce runner heartbeat writes and throttle task picks (#38281) (#38368)
- Perf(web): sort the action_run query by a repo-scoped index when possible (#38155)
- Perf: Various performance regression fixes (#38078)
- Perf: extend action
c_uindex to includecreated_unixfor faster dashboard feeds (#38076) - Batch-load related data in actions run, job, and task API endpoints (#37032)
-
BUGFIXES
- Fix(util): reject invalid characters between time-estimate units (#38416) (#38423)
- Fix: represent a deleted assignee team as a Ghost team (#38413) (#38419)
- Fix(turnstile): route CAPTCHA verification through the configured proxy (#38412) (#38420)
- Fix: refresh pull request merge box when the commit status is pending (#38410) (#38411)
- Fix: actions task state concurrent update (#38405) (#38409)
- Fix(actions): keep workflow run trailing on one row with long branch names (#38382) (#38403)
- Fix(web): use locale-aware date formatting for contribution calendar tooltips (#38398) (#38401)
- Fix: co-author detection (#38392) (#38397)
- Fix: incorrect co-author detection on commit page (#38386) (#38387)
- Fix(ui): restore commits table column widths (#38379) (#38383)
- Fix: minio init check (#38355) (#38361)
- Fix: org project view assignee list (#38357) (#38360)
- Fix(actions): release claimed task if context is cancelled during
FetchTask(#38343) (#38347) - Fix(actions): make runner list pagination order deterministic (#38313) (#38327)
- Fix: Improve since/until when counting commits for X-Total-Count (#38243) (#38304)
- Fix(actions): prevent chevron overlap with log text when timestamps are enabled (#38227) (#38307)
- Fix(workflows): branch protection status checks fail when workflow uses on: paths filter (#38237) (#38302)
- Fix(oauth2): persist linkAccountData during auto-link 2FA flow (#38274) (#38295)
- Fix(actions): allow Actions bot to push to protected branches (#38284) (#38293)
- Fix(actions): include all aggregable run statuses in status filter (#38280) (#38287)
- Fix(archiver): use serializable repo-archive queue payload (#38273) (#38283)
- Fix: update npm dependencies, fix misc issues (#38257)
- Fix(api): respect since/until when counting commits for X-Total-Count (#38204)
- Fix: codemirror regressions (#38248)
- Fix(api): support HEAD requests on all API GET endpoints (#38245)
- Fix(actions): Cleanup workflow status badge code (#38241)
- Fix(web): Correctly align the "disabled" label on larger workflow names (#38240)
- Fix(actions): don't swallow HTML entities into linkified URLs (#38239)
- Fix(packages): accept npm "repository" and "bin" in string form (#38236)
- Fix(actions): fix 500 error when canceling a canceling task (#38223)
- Fix(deps): update module golang.org/x/image to v0.43.0 [security] (#38219)
- Fix(mssql): convert legacy DATETIME columns to DATETIME2 (#38216)
- Fix(api): deny private org member enumeration via /members (#38213)
- Fix(actions): ensure all waiting jobs get runners in large workflows (#38200)
- Fix(deps): update go dependencies (#38194)
- Fix(deps): update npm dependencies (#38193)
- Fix(cli): default must-change-password to false for bot users (#38175)
- Fix(actions): show run index in run view and fix summary graph height (#38165)
- Fix: csp (#38162)
- Fix(deps): update npm dependencies (#38123)
- Fix(mssql): expand legacy issue and comment long-text columns (#38120)
- Fix(packages): validate debian distribution and component names (#38116)
- Fix(packages): validate module version in goproxy ParsePackage (#38104)
- Fix(deps): update dependency esbuild to v0.28.1 [security] (#38097)
- Fix: git push hook post receive (#38089)
- Fix(ui): prevent commit status popup overflowing its row (#38081)
- Fix: validate gem name in rubygems parseMetadataFile (#38061)
- Fix: commit display name (#38057)
- Fix: csp regressions (#38047)
- Fix: api error message (#38031)
- Fix(deps): update npm dependencies (#38029)
- Fix: pgsql lint (#38022)
- Fix(indexer): fix assignee filters in issue search (#38021)
- Fix: various dropdown problems (#38020)
- Fix: refactor git error handling and make archive streaming handle non-existing commit id (#38007)
- Fix: raise git required version to 2.13 (#37996)
- Fix: remove "no-transfrom" from the cache-control header (#37985)
- Fix(deps): update module github.com/google/go-github/v87 to v88 (#37971)
- Fix: use committer time where ever possible as default (#37969)
- Fix(deps): update npm dependencies, remove nolyfill (#37968)
- Fix(deps): update go dependencies (#37967)
- Fix(pull): preserve squash message trailers and additional commit messages (#37954)
- Fix(deps): update module golang.org/x/image to v0.41.0 [security] (#37904)
- Fix: support ##[command] log prefix in action run UI (#37882)
- Fix(deps): update module github.com/google/go-github/v86 to v87 (#37845)
- Fix(deps): update npm dependencies (#37844)
- Fix(deps): update go dependencies (#37841)
- Fix(frontend): resolve Vite assets by manifest source path (#37836)
- Fix(locales): Replace hardcoded strings (#37788)
- Fix(packages): render markdown links relative to linked repo (#37676)
- Fix: persist mirror repository metadata (#37519)
- Fix cmd tests by mocking builtin paths (#37369)
- Add
form-fetch-actionto some forms, fix "fetch action" resp bug (#37305) - Feat: execute post run cleanup when workflow is cancelled (#37275)
- Fix
relative-timeerror and improve global error handler (#37241) - Refactor flash message and remove SanitizeHTML template func (#37179)
-
TESTING
- Test(e2e): fix race in pdf file render test (#38380) (#38381)
- Test: compare key file contents instead of
FileInfoinTestInitKeys(#38330) (#38331) - Test: speed up two tests (#37905)
- Test: Fix random failure test (#37887)
- Test: fix flaky
issue-commentclose test (#37880) - Test: enable WAL for sqlite integration tests (#37861)
- Test: fix flaky
TestResourceIndexand reduce its runtime (#37847) - Test: run
TestAPIRepoMigrateoffline via a local clone source (#37817) - Ci: shard tests and reduce redundant work (#37618)
- Test(e2e): run playwright via container (#37300)
- Remove external service dependencies in migration tests (#36866)
-
BUILD
- Fix(actions): authenticate snapcraft before nightly remote build (#38252)
- Ci: cap Elasticsearch heap in db-tests (#37816)
- Build(snap): publish nightly version to snapcraft via actions (#37814)
- Ci: split pgsql shards into plain jobs, dedupe setup actions (#37802)
- Ci: narrow files-changed frontend filter (#37749)
- Ci: add
zizmortolint-actions(#37720) - Chore: clean up "contrib" dir (#37690)
- Fix: snap build (main branch) (#37685)
- Ci: Also lint json5 files (#37659)
- Feat(editor): broaden language detection in web code editor (#37619)
- Build: update pnpm to v11 (#37591)
- Refactor(deps): migrate from
nektos/actfork togitea/runner(#37557) - Refactor: lint bare
fill/strokecolors, add vars for git graph color series (#37543) - Update go js py dependencies (#37525)
- Ci: lint PR titles with commitlint (#37498)
- Chore: upgrade Go version in devcontainer image to 1.26 (#37374)
- Update GitHub Actions to latest major versions (#37313)
- Update go js dependencies (#37312)
- Fail vite build on rolldown warnings via NODE_ENV=test (#37270)
- Remove htmx (#37224)
- Replace custom Go formatter with
golangci-lint fmt(#37194) - Refactor htmx and fetch-action related code (#37186)
- Integrate renovate bot for all dependency updates (#37050)
- Build(sign): move to sigstore (#38250)
-
DOCS
- Docs: update changelog for 1.26.3 & 1.26.4 (#38178)
- Docs: fix duplicated word in foreachref doc comment (#38161)
- Docs: Clarify criteria for becoming a merger (#38113)
- Docs: Publish TOC Election Result 2026 (#38111)
- Docs: mark openapi3 as autogenerated in attributes (#37963)
- Docs: add development setup guide (#37960)
-
MISC
- Revert(sign): restore gpg (#38251)
- Refactor: replace legacy
delete-buttonwithlink-action(#38143) - Refactor(actions): read runner capabilities from proto field (#38068)
- Refactor(api): clarify APIError message usage and fix legacy lint error (#38012)
- Refactor: Use db.Get[] instead of db.GetEngine(ctx).Get(bean) to avoid zero value fetching wrong database record (#37977)
- Fix(deps): update go dependencies (#37851)
- Ci: Fix sync PR labels from the conventional-commit title (#37784) (#37825)
- Ci: tweak
files-changed, addfree-disk-space(#37819) - Fix(deps): update module golang.org/x/crypto to v0.52.0 [security] (#37806)
- Test(e2e): add comment, release, star, PR and fork tests (#37800)
- Chore: simplify issue and pull request templates (#37799)
- Chore: Update giteabot to fix failure when backport (#37789)
- Fix(api): handle partial failures in push mirror synchronization gracefully (#37782)
- Fix(deps): update module gitlab.com/gitlab-org/api/client-go/v2 to v2.26.0 (#37771)
- Ci: split giteabot workflow (#37770)
- Fix(deps): update npm dependencies (#37768)
- Refactor(waitgroup): replace Add/Done goroutines with WaitGroup.Go (#37764)
- Fix(deps): update module google.golang.org/grpc to v1.81.1 (#37762)
- Ci: fix cache-related issues (#37761)
- Chore: fix tests (#37760)
- Fix(deps): update module github.com/google/go-github/v85 to v86 (#37754)
- Fix(deps): update npm dependencies (#37753)
- Fix(deps): update go dependencies (#37752)
- Chore(deps): update action dependencies (#37751)
- Fix(markup): wrap indented code blocks for the code-copy button (#37748)
- Chore(db): introduce db.Session and db.EngineMigration interfaces (#37746)
- Feat(web): also display PR counts in repo list (#37739)
- Refactor(glob): use strings.Builder for regexp compilation (#37730)
- Chore(doctor): remove four obsolete doctor check implementations (#37728)
- Refactor(org): simplify owner-team org repo creation logic (#37727)
- Refactor: move
workflowpatternintomodules/actions(#37717) - Chore: clean up tests (#37715)
- Style: misc UI fixes (#37691)
- Ci: add shellcheck linter (#37682)
- Fix: catch and fix more lint problems (#37674)
- Fix(deps): update dependency mermaid to v11.15.0 [security], add e2e test (#37662)
- Fix(deps): update npm dependencies (#37647)
- Ci(renovate): update Go import paths on major bumps (#37641)
- Fix(deps): update go dependencies (major) (#37639)
- Chore(deps): update action dependencies (major) (#37638)
- Fix(deps): update module code.gitea.io/sdk/gitea to v0.25.0 (#37637)
- Fix(deps): update npm dependencies (#37636)
- Refactor(log): replace log.Critical with log.Error (#37624)
- Build(deps): bump fast-uri from 3.1.0 to 3.1.2 (#37616)
- Feat(oauth): Support AWS Cognito OAuth2 provider (#37607)
- Chore(deps): update action dependencies (#37603)
- Ci: allow
choretype in PR title lint (#37575) - Refactor: only reset a database table when the table's data was changed (#37573)
- Ci: increase renovate frequency and fix RENOVATE_ALLOWED_POST_UPGRADE_COMMANDS (#37565)
- Refactor: use modernc sqlite driver as default (#37562)
- Docs: fix 4 typos in CHANGELOG.md (#37549)
- Fix(deps): update go dependencies (#37541)
- Chore(deps): update action dependencies (#37540)
- Refactor pull request view (6) (#37522)
- Fix: redirect early CLI console logger to stderr (#37507)
- Refactor "flex-list" to "flex-divided-list" (#37505)
- Refactor compare diff/pull page (1) (#37481)
- Refactor pull request view (4) (#37451)
- Update 1.26.1 changelog in main (#37442)
- Refactor: use named
Permissionfield inRepositorystruct instead of anonymous embedding (#37441) - Refactor: serve site manifest via
/assets/site-manifest.jsonendpoint (#37405) - Remove IsValidExternalURL/IsAPIURL and use IsValidURL at call sites (#37364)
- Update
Block a userform (#37359) - Move review request functions to a standalone file (#37358)
- Feat(security): set X-Content-Type-Options: nosniff by default (#37354)
- Enable strict TypeScript, add
errorMessagehelper (#37292) - Refactor frontend
tw-justify-betweenlayouts toflex-left-right(#37291) - Update Nix flake (#37284)
- Fix Repository transferring page (#37277)
- Remove
SubmitEventpolyfill (#37276) - Remove dead code identified by
deadcodetool (#37271) - Upgrade go-git to v5.18.0 (#37268)
- Don't add useless labels which will bother changelog generation (#37267)
- Move heatmap to first-party code (#37262)
- Tests/integration: simplify code (#37249)
- Add pagination and search box to org teams list (#37245)
- Remove error returns from crypto random helpers and callers (#37240)
- Add
ExternalIDClaimoption for OAuth2 OIDC auth source (#37229) - Refactor: simplify ParseCatFileTreeLine and catBatchParseTreeEntries (#37210)
- Refactor "htmx" to "fetch action" (#37208)
- Update go js py dependencies (#37204)
- Add comment for the design of "user activity time" (#37195)
- Remove outdated RunUser logic (#37180)
- Models/fixtures: add "DO NOT add more test data" comment to all yml fixture files (#37150)
- Update javascript dependencies (#37142)
- Update go dependencies (#37141)
- Frontport changelog of v1.26.0-rc0 (#37138)
- Introduce
ActionRunAttemptto represent each execution of a run (#37119) - Workflow Artifact Info Hover (#37100)
- Extend issue context popup beyond markdown content (#36908)
- Add bulk repository deletion for organizations (#36763)
- Feat: Add bypass allowlist for branch protection (#36514)
本版本的贡献者
感谢所有帮助完成这个版本的贡献者!
- @0xGREG
- @6543
- @afahey03
- @agyss
- @antialias
- @augustocbx
- @bircni
- @BLumia
- @bn-zr
- @bytedream
- @chethenry
- @Chi-Iroh
- @cyphercodes
- @dawidgora
- @delvh
- @eliroca
- @Exgene
- @eyupcanakman
- @fwag
- @g7
- @grafail
- @guanzi008
- @harryzcy
- @HarshMN2345
- @icyavocado
- @jasonlearst
- @JoeGruffins
- @jorgeortiz85
- @KalashThakare
- @karthikbhandary2
- @keshane
- @krjakbrjak
- @lavamini
- @lunny
- @maximilize
- @metiftikci
- @metsw24-max
- @Mohit25022005
- @mohsek
- @mtschoen
- @myers
- @nschloe
- @pandareen
- @peyremorgan
- @PineBale
- @pisarz77
- @Pomidorry
- @Powerscore
- @premsreelathasugeendran
- @prettysunflower
- @puni9869
- @pycub
- @rootful
- @rremer
- @s3onghyun
- @SaveTheRbtz
- @SAY-5
- @sebastianertz
- @silverwind
- @Sumit189
- @SuperSandro2000
- @techknowlogick
- @thatguyfig
- @TheFox0x7
- @tht
- @wxiaoguang
- @xingxing21
- @Zettat123
- @ZPascal
