VersionDrift
Product

Gitea 1.27.1 → 28.3.0

6 releases · 3 breaking changes · 13 security fixes · 93 advisories fixed

13security3breaking1deprecated37feature169fix

Vulnerabilities fixed by this upgrade

  • medium CVE-2026-119625 GET /{user}.rss / .atom leak private activity to a scope-confined API token (2nd incomplete-fix follow-up of GHSA-6cqf-375w-639g, user feed never got the scope-category check the repo feeds did)
  • 6.5 CVE-2026-112887 Gitea Actions task tokens authenticate to the REST API with no token scope, enabling instance-wide private repository enumeration via GET /api/v1/user/repos
  • medium CVE-2026-116474 Actions token can spoof instance-signed commits by adding a GPG key
  • 5.3 CVE-2026-119533 Public project boards disclose private pull request titles and repository names
  • 6.5 CVE-2026-118504 API Issue Mutation Archive Restriction Bypass
  • medium CVE-2026-117677 Helm chart upload: unbounded gzip+tar metadata parse before the package-size quota gate (CWE-409/CWE-400 decompression amplification)
  • 6.5 CVE-2026-117649 Cross-repository issue dependency and timeline read path serializes private issue title/body and attachments without the source repository access check (LoadDepIssueDetails/ToAPIIssue without ACL)
  • 4.3 CVE-2026-118395 Deprecated POST /org/{org}/repos skips rejectPublicOnly; public-only tokens can create private repositories
  • 4.3 CVE-2026-117646 Public-only tokens expose private repositories through profile and organization tabs
  • 6.5 CVE-2026-116289 Public-only PAT scope bypass via Actions runner registration leaks private repository secrets
  • 4.3 CVE-2026-114199 Contribution heatmap discloses private-repository contribution counts to public-only tokens (GetUserHeatmapData never reads ctx.PublicOnly while activity feeds do)
  • 4.3 CVE-2026-119627 Gitea web profile and feed routes bypass public-only token scope for limited-visibility users
  • 4.3 CVE-2026-118394 OIDC userinfo: the public-only token scope is not enforced when the token arrives as a query parameter (residual of CVE-2026-55982)
  • 8.7 CVE-2026-113429 Stored XSS on the Gitea origin through the v3 artifact Content-Encoding header
  • 8.1 CVE-2026-116296 Write collaborators can replace and destroy releases, milestones and labels on archived repositories (archived write-protection bypass)
  • 8.1 CVE-2026-119441 Public-Only Token Bypass on Bulk Organization Repository Deletion
  • 8.1 CVE-2026-117635 Public-only tokens bypass private-resource restrictions on the admin API
  • 7.1 CVE-2026-117685 Public-only package tokens can access private OCI blobs
  • high CVE-2026-120263 Account Takeover via OAuth2 Auto-Linking with Attacker-Controlled Username
  • 8.1 CVE-2026-118386 Actions: fork workflow gets secrets and write token via review commit_id
  • low CVE-2026-97859 API routes for user social graph, keys, and starred repos bypass private visibility check
  • low CVE-2026-107618 Cross-Site Request Forgery on `POST /{owner}/{repo}/topics`
  • 3.5 CVE-2026-97204 DeleteLabel compares one untyped id against whichever namespace the label uses, letting a repo collaborator delete an ID-colliding organisation's labels
  • 6.5 CVE-2026-110324 Private profile information leaks on POST request
  • 6.5 CVE-2026-105964 Gitea Actions Artifact V4 API: unbounded request body read in parseProtobufBody enables memory-exhaustion DoS
  • 4.3 CVE-2026-110311 Draft releases include attachment metadata from other repositories
  • 5.3 CVE-2026-105661 Unauthenticated nil-pointer panic on /{username}/-/repositories for individual users
  • 6.3 CVE-2026-110494 Gitea AddReleaseAttachments missing IssueID check allows issue attachment metadata exposure and deletion via releases
  • 4.3 CVE-2026-107686 Locked issues and comments still accept reactions through the web UI
  • 8.1 CVE-2026-104627 Cross-Session OpenID Credential Linking Enables Account Takeover
  • 7.5 CVE-2026-109553 VerifyCert maps SSH certificate principals onto other users' SSH public keys
  • 6.5 CVE-2026-104633 A migration source reporting max_response_items: 0 makes six paginated loops in the Gitea downloader never terminate, exhausting server memory from one authenticated request
  • 6.5 CVE-2026-105267 POST /{owner}/{repo}/tags/delete requires only Code:Write but destroys Releases and their attachment blobs
  • medium CVE-2026-97626 Web RSS/Atom Accept-header bypass leaks activity feeds of limited/private users and orgs
  • 5.4 CVE-2026-89182 Gitea push-to-create ignores ForcePrivate server policy, allowing non-admin users to publish repositories as public
  • 4.3 CVE-2026-105268 Issue-scoped attachment routes accept comment-scoped attachment ids, letting an issue opener delete or rename other users' comment attachments
  • medium CVE-2026-101023 OAuth access tokens can be exchanged as refresh tokens
  • 8.5 CVE-2026-96594 Stored XSS via Repository Media API
  • 7.1 CVE-2026-86684 Push-mirror API checks local-path permission on the repository owner instead of the caller
  • 8.1 CVE-2026-97208 Gitea push-mirror creation API does not enforce the site-wide DISABLE_NEW_PUSH policy
  • medium CVE-2026-95112 Algorithmic Complexity DoS in Issue Reference Parsing
  • medium CVE-2026-103504 API team demotion does not reset unit permissions
  • medium CVE-2026-79960 Deploy keys impersonate the repository owner in the hook pipeline
  • 4.3 CVE-2026-104636 Raw Git redirect SSRF bypass in push mirrors, WikiRemoteURL, and PR-head fetches
  • 4.3 CVE-2026-96400 Migration SSRF policy regression: ALLOWED_DOMAINS permits reserved addresses despite ALLOW_LOCALNETWORKS=false
  • 4.3 CVE-2026-96589 Incorrect Authorization in Repository Transfer Allows Persistent Unauthorized Read Access
  • 8.1 CVE-2026-96404 Installer Re-run Against an Already-Populated Database Grants an Authenticated Session for an Existing Admin Account Without Password Verification
  • 7.1 CVE-2026-96399 Uncaught Exception and Out-of-bounds Read results in Gitea crash
  • 8.5 CVE-2026-89430 Gitea Push Mirror Host Policy Bypass Enables SSRF and Forced Writes to Internal Git Repositories
  • 8.5 CVE-2026-101029 Migration / pull-mirror SSRF, egress allow-list bypass via multi-answer DNS - 3 findings
  • 7.7 CVE-2026-101027 SSRF via DNS rebinding: MatchHostOrIP short-circuits IP check when hostname matches ALLOWED_DOMAINS
  • high CVE-2026-70357 Migration SSRF via DNS Rebinding — TOCTOU Between DNS Validation and Git Connection
  • 9.0 CVE-2026-95106 Duplicate tree-entry name: Gitea renders the benign blob while checkout and CI run the malicious one
  • 9.0 CVE-2026-103667 Stored XSS in Gitea container registry via unvalidated blob Content-Type (mediaType injection)
  • 9.1 CVE-2026-103059 Built-in SSH server auth bypass via case-insensitive LIKE key lookup
  • 8.7 CVE-2026-94205 Gitea Actions: fork pull request approval bypass via maintainer-triggered pull_request sub-events (ifNeedApprovalWith keys on the event actor, not the pull request author)
  • medium CVE-2026-96580 Uncontrolled resource consumption — unapproved fork-PR workflow with a large static strategy.matrix exhausts server memory at run-creation
  • high CVE-2026-103670 Unapproved fork PR cancels trusted in-progress runs via run-level concurrency
  • 9.0 CVE-2026-104626 Cancelled fork-PR Actions jobs are revived by later approval
  • 9.0 CVE-2026-104632 Untrusted first-time fork PR achieves self-hosted Actions runner RCE without approval via cancel-then-rerun
  • 7.7 CVE-2026-70406 Public-only tokens can read private head repositories via compare and pull request creation (incomplete fix of CVE-2026-58443)
  • 5.4 CVE-2026-70396 Organization repository creation endpoint skips repository token scope
  • 5.4 CVE-2026-70400 Repository migration skips public-only token guard for private repository creation
  • 5.8 CVE-2026-70402 Permissive Git hook directory and script modes may allow local code execution as the Gitea service account
  • medium CVE-2026-70407 Token Scope Bypass on `GET /api/v1/orgs`
  • 8.8 CVE-2026-71184 Gitea Actions: fork pull request approval bypass via `pull_request_review_comment` (missing `WithPullRequest`)
  • low CVE-2026-71301 Wiki-only members can read private pull request titles through markup preview
  • low CVE-2026-73504 Unauthenticated artifact-to-repository oracle in raw Actions downloads
  • 4.3 CVE-2026-73126 Gitea workflow badge bypasses API token scopes
  • medium CVE-2026-73130 Unbounded gitignores repository-creation field enables linear template-read amplification
  • 5.3 CVE-2026-73135 Repository listing exposes repositories owned by hidden users due to inconsistent visibility predicate
  • 4.3 CVE-2026-73273 Package size quota bypass and unbounded memory read in the Maven checksum upload path
  • 8.1 CVE-2026-60010 Repo-side team-link endpoint still bypasses RepoAdminChangeTeamAccess
  • 6.5 CVE-2026-60018 Authenticated DoS in OneDev migration via unbounded version response body
  • 6.5 CVE-2026-60021 Authenticated DoS in GitLab migration via uncancelable version probe
  • 6.5 CVE-2026-62925 Unbounded Alpine .PKGINFO parse amplifies a small .apk upload into process memory
  • 6.5 CVE-2026-63021 Swift registry per-file 128KiB manifest guard bypassed by aggregation
  • 6.3 CVE-2026-63792 Fork pull requests can read reusable workflow files from another private repository (missed sibling of GHSA-fj8v-hjwv-qm88)
  • medium CVE-2026-66849 Package registry: restricted users can read packages of limited-visibility users (authorization bypass)
  • low CVE-2026-66853 Restricted users can enumerate limited-visibility organizations via the user org-list API (authorization bypass)
  • 6.5 CVE-2026-66874 A fork pull request author can satisfy a required Actions status check without any workflow running, because a filtered out workflow taken from the pull request HEAD posts a `skipped` commit status that counts as success
  • 8.7 CVE-2026-66877 RCE on self-hosted runners | fork-PR approval gate (`NeedApproval`) bypass via job-level concurrency cancellation
  • 4.3 CVE-2026-67577 Restricted users can access limited-visibility users' activity feeds and contribution heatmaps through the API
  • high CVE-2026-68957 Restricted users can read limited-visibility users' issue titles and bodies through issue search
  • 4.3 CVE-2026-68964 Restricted users can read limited-visibility users’ SSH and GPG keys through the API
  • 5.9 CVE-2026-78433 Attachments created before the January 2026 cutoff skip the cross repository check entirely, and permission is then evaluated against the repository named in the URL rather than the repository owning the attachment, so a private repository's attachment is served through any public repository's path
  • 9.9 CVE-2026-73802 Sandbox Escape to Host RCE: Gitea act_runner Privileged Mode Bypass via Unsanitized container.options
  • medium CVE-2026-60008 Jupyter notebook renderer emits attacker-controlled CSS classes into unsanitized, unsandboxed output
  • 8.1 CVE-2026-73278 WebAuthn second factor is bypassed on OAuth2/OpenID sign-in (WebAuthn-only users)
  • 8.8 CVE-2026-73535 2FA bypass and persistent account takeover via OpenID identity linking
  • 7.5 CVE-2026-73539 Remote Code Execution via unescaped markup `Context` into external renderer argv
  • 8.8 CVE-2026-73800 Secret Exfiltration via Reusable Workflow Resolution in pull_request_target Events
  • 6.5 CVE-2026-73814 Admin repository collaborator can self-escalate to Owner and transfer the repository

Breaking changes

  • breaking BREAKING in 28.0.0
  • breaking Fix(git)!: route Git network operations through an internal proxy and update egress settings () in 28.0.0
  • breaking Feat(actions)!: add RUN_RETENTION_DAYS to delete old action runs () in 28.0.0

Security changes

  • security Fixes CVE-2026-57894: Repository Migration Follows Git HTTP Redirects After URL Allow/Block Validation, Enabling Internal Git Repository Exfiltration in 28.0.0
  • security SECURITY in 28.0.0
  • security Fix(deps): update module golang.org/x/image to v0.45.0 [security] () in 28.0.0
  • security Fix(deps): update module golang.org/x/mod to v0.40.0 [security] () in 28.0.0
  • security Fix(deps): update dependency mermaid to v11.16.1 [security] () in 28.0.0
  • security Fix(deps): update module github.com/getkin/kin-openapi to v0.144.0 [security] () in 28.0.0
  • security Fix(deps): update dependency js-yaml to v5.2.2 [security] () in 28.0.0
  • security Fix(deps): update module google.golang.org/grpc to v1.82.1 [security] () in 28.0.0
  • security Fixes CVE-2026-60018: Authenticated DoS in OneDev migration via unbounded version response body in 1.27.3
  • security Fixes CVE-2026-60021: Authenticated DoS in GitLab migration via uncancelable version probe in 1.27.3
  • security SECURITY in 1.27.3
  • security Fixes CVE-2026-73800: Secret Exfiltration via Reusable Workflow Resolution in pull_request_target Events in 1.27.2
  • security SECURITY in 1.27.2

Deprecations

  • deprecated Enhance(packages/npm): expand version metadata and support npm deprecate () in 28.0.0

Every release in between

featureImprove hover border of colored button groups (#39861) (#39899)
feature(webhook) Mention release assets in notifications (#39631) (#39912)
feature(project) Filter project milestones by linked issues (#39958) (#39984)
fix(pulls) Tolerate invalid stored review commit_id (#39849) (#39857)
fix(api) Skip label lookup in ListIssues when no labels filter given (#39890) (#39893)
fixPrevent system users from watching a repository (#39886) (#39895)
fixOff-by-one errors in code comment patches (#39887) (#39904)
fixUse clear error message when failed to parse git version (#39898) (#39903)
fix(packages) Reject newline-bearing rubygems dependency metadata (#39782) (#39900)
fixEnforce public-only token scope on more routes (#39690) (#39853)
fix(api) Return 4xx for invalid fork repository names (#39909) (#39919)
fix(lfs) Send the default branch as ref in batch download requests (#39891) (#39920)
fix(api) Keep milestone due date when it is omitted in edit request (#39869) (#39921)
fix(oauth2) Decode form-encoded client credentials in HTTP Basic auth (#39926) (#39931)
fix(issues) Keep one row per issue when sorting by exclusive label order (#39364) (#39928)
fix(api) Check unit read permission in issue sub-resource endpoints (#39885) (#39938)
fix(migrations) Use cursor pagination for GitHub issue migration too (#39888) (#39941)
fix(feed) Hide release notes in tags feed without releases access (#39944) (#39949)
fix(api) Adding issue labels by name attaches both the repo and the org label (#39873) (#39951)
fix(actions) Bound requested artifact retention (#39894) (#39946)
fix(actions) Drop untrusted Content-Encoding from v1 artifact uploads (#39855) (#39996)
fixGet valid UTF-8 for diff_hunk and composer readme (#39932) (#40000)
fix(diff) Load both blobs of renamed files for diff rendering (#39969) (#39992)
fix(migrations) Update gitea sdk to fix nil pointer panic (#39999)
fixFix OneDev migration with OneDev 16.8 and newer (#40017) (#40026)
fix(git) Default to the gc maintenance strategy (#40022) (#40029)
fixReplace null char with space for issue/comment content (#40014) (#40034)
fix(issue) Prevent redirect to external tracker when built-in tracker is enabled (#39997) (#40031)
fix(markup) Keep commit title emoji inside links (#39986) (#40032)
fix(repo) Use the viewed ref's editorconfig in file view, blame and editor (#39973) (#40019)
fix(deps) Update module golang.org/x/net to v0.62.0 [security] (#40050) (#40051)
fixSize mermaid iframe by the diagram's aspect ratio (#40046) (#40052)
fix(feed) Require code read access for the repo home branch feed (#39964) (#40067)
fixAdd missing access checks and size limits (#39942) (#40085)
fix(user) Answer the follow of a bot user with the profile card (#39980) (#40086)
fix(repo) Honor ALLOW_FORK_INTO_SAME_OWNER for organizations (#40025) (#40094)
fix(ui) Ignore code line anchors below 1, show JS errors in vite dev mode (#39432) (#40087)
fix(pull) Refuse review comments on locked pull requests (#39960) (#40084)
fix(api) Answer 409 when repository files already exist on disk (#40095) (#40098)
fix(mail) Preserve outer spacing in notification emails (#40104) (#40111)
+16 more items in the release notes
feature(oauth) Pre-register a builtin OAuth2 application for gitea-vscode (#39785) (#39801)
featureAllow custom watches to bypass on-mention email restriction (#39652) (#39837)
fixVarious bugs (#39661) (#39667)
fix(markup) Display MathML has no space below it (#39663) (#39668)
fixCorrect websocket notification for change password page (#39671) (#39670)
fix(webhook) Keep line breaks in Telegram rich messages (#39650) (#39677)
fixCorrect "go get" URL ssh scheme, fix form binding (#39674, #39528) (#39676)
fixOIDC discovery advertises unsupported id_token response_type (#39498) (#39689)
fix(deps) Update module golang.org/x/net to v0.60.0 [security] (#39695) (#39701)
fix(git) Leave reflog expiry to git's defaults (#39703) (#39711)
fix(actions) Settle cancelled reusable workflow runs stuck in cancelling (#39706) (#39717)
fix(git) Match git config values exactly when syncing (#39728) (#39729)
fix(actions) Harden log cursor, activity type and actor filter handling (#39721) (#39731)
fix(packages) Copy selected Debian installation values (#39718) (#39734)
fix(auth) Prevent competing remember-me token rotations (#39686) (#39688)
fix(packages/npm) Restore former tarball URLs (#39681) (#39749)
fix(issues) Allow selecting a tag in the issue Branch/Tag dropdown (#39747) (#39753)
fixValidate "state" for OpenID (#39642) (#39744)
fixCorrect label deletion and release attachment load (#39743) (#39752)
fix(markup) Resolve and proxy srcset links of elements (#39708) (#39756)
fix(lfs) Validate OID before building filesystem object path (#39762) (#39766)
fix(markup) Restore code copy newline strip and fix copying rendered blocks (#39755) (#39765)
fix(user) Don't match a commit with an empty author email to a user (#39777) (#39780)
fix(gitdiff) Unquote C-quoted paths from git diff-tree --raw (#39781) (#39783)
fix(actions) Fix schedule cleanup and default branch switch (#39740) (#39786)
fixSkip commit-graph write when fetching remote commits (#39798)
fix(webauthn) Accept unsolicited client extension outputs from WebKit clients (#39792) (#39806)
fix(pull) Fix code context of review comments on unchanged lines (#39799) (#39805)
fix(pull) Don't auto-detect empty pull requests as manually merged (#39807) (#39812)
fix(actions) Keep folded block scalars intact across serialization (#39787) (#39817)
fix(actions) Bound request body size in artifacts v4 twirp handlers (#39818) (#39822)
fixPrevent Gitea from crashing by notification panic (#39835)
fix(pull) Recover PRs whose recorded merge commit never reached the base repo (#39831) (#39840)
fixUse correct template variable on milestone page (#39834) (#39843)
fix(mailer) Reject incoming email tokens of users who cannot sign in (#39833) (#39841)
fixAdd missing checks to several handlers and models (#39839) (#39847)
feature(packages/npm) Improve npm client compatibility (#39434) (#39522)
fix(actions) Keep runs order after auto refresh (#39479) (#39481)
fixNpm route (#39488) (#39490)
fixCopy new access token to clipboard (#39496) (#39499)
fix(markup) Skip post-processing inside MathML (#39497) (#39502)
fix(markup) Don't escape ambiguous characters in MathML (#39493) (#39505)
fixAdd missing checks to several API and web handlers (#39501) (#39507)
fixHandle git branch name with special chars correctly (#39483) (#39515)
fixTrace git command correctly (#39520) (#39524)
fix(git) Reindex go-git storage when a concurrent repack removes packs (#39510) (#39534)
fix(oauth2) Allow users to approve scope changes (#38942) (#39521)
fix(api) Add index tiebreaker to commit status ordering (#39508) (#39525)
fix(git) Avoid unnecessary timers during language stats (#39531) (#39535)
fixUse READ COMMITTED transactions on MySQL and MariaDB (#39506) (#39537)
fix(markup) Use installed math fonts for MathML in Chromium (#39491) (#39547)
fix(git) Tolerate concurrent repacks in go-git storage (#39536) (#39556)
fixMake image captcha work with csp (#39555)
fixUse READ_COMMITTED_SNAPSHOT on MSSQL (#39512) (#39558)
fixMake navbar stopwatch button can show popup (#39562)
fix(actions) Restore pushes to protected branches (#39564) (#39567)
fix(api) Allow bots with pending password changes (#39551) (#39566)
fix(user) Restore organizations tab on user profile (#39577) (#39581)
fix(markup) Link team mentions that use a different org name case (#39436) (#39588)
fix(httpcache) Raw files return 304 after a change when the new commit is older (#39435) (#39591)
fix(git) Return no submodule web link when the URL cannot be parsed (#39274) (#39592)
fix(pull) Fetch PR head refs instead of pushing them (#39603) (#39607)
fixMigrate broken team authorize access mode (#39579) (#39580)
fix(actions) Refresh reusable caller status when children are skipped (#39589) (#39609)
fixMake "edit pr title & target branch" get correct branch (#39612) (#39621)
fix(egress) Expose more ranges as restricted rather than reserved (#39560) (#39624)
fix(web) Normalize content for edit history diff and fix comment history dropdown (#39616) (#39627)
fixCorrect RemoveWithRetry error handling (#39619) (#39626)
fix(pull) Refresh commits behind when an AGit pull request is updated (#39613) (#39625)
fix(models) Chunk commit status queries to avoid SQLite expression depth limit (#39611) (#39638)
fixShow "merge" form for empty PR (#39640) (#39645)
securityFixes CVE-2026-57894: Repository Migration Follows Git HTTP Redirects After URL Allow/Block Validation, Enabling Internal Git Repository Exfiltration
breakingBREAKING
breakingFix(git)!: route Git network operations through an internal proxy and update egress settings ()
breakingFeat(actions)!: add RUN_RETENTION_DAYS to delete old action runs ()
securitySECURITY
featureFeat(actions): update actionslib, support self:, misc fixes ()
featureFeat(api): list all packages for site administrators ()
featureFeat: manage bot accounts from the admin UI, API and CLI ()
featureFeat(user): Personal access tokens can be regenerated ()
featureFeat(actions): support $/ prefix in reusable workflow uses: ()
featureFeat(actions): add force-cancel workflow run API ()
featureFeat(licenses): support REUSE specification in licenses ()
featureFeat(api): add project APIs ()
featureFeat(webhook): fire repository event on repo rename ()
featureFeat: admin impersonates a user ()
featureFeat(actions): add build queue view ()
featureFeat(setting): add shared [redis] section as default for redis-backed subsystems ()
featureFeat(repo): prioritize well-known READMEs and optimize discovery ()
featureFeat(actions): implement adaptive auto-refresh for workflow runs list ()
featureFeat(auth): add disable-2fa command ()
featureFeat: Add audit logging ()
featureFeat(repo): add quick repository switcher to repo header ()
featureFeat(repo): support file exclusion logic in .gitea/template in template generation ()
featureFeat(web): Add org removal functionality to admin user details page ()
featureFeat: add watch options ()
featureFeat: add deploy tokens ()
featureFeat(diff): Add search and extension filter to diff sidebar ()
featureFeat: Replace SSE with WebSocket for UI notifications ()
featureFeat(actions): Add artifact preview in Actions run view ()
featureFeat(packages): add support for uploading helm provenance files ()
featureFeat: Add support for dynamic matrix evaluation in Gitea Actions workflows ()
featureFeat: Add max-parallel Support for Gitea Actions ()
featureFeat(actions): Add Actions API endpoints for workflow run management and logs ()
featureFeat: Add block on pending codeowner reviews branch protection ()
deprecatedEnhance(packages/npm): expand version metadata and support npm deprecate ()
securityFix(deps): update module golang.org/x/image to v0.45.0 [security] ()
securityFix(deps): update module golang.org/x/mod to v0.40.0 [security] ()
securityFix(deps): update dependency mermaid to v11.16.1 [security] ()
securityFix(deps): update module github.com/getkin/kin-openapi to v0.144.0 [security] ()
securityFix(deps): update dependency js-yaml to v5.2.2 [security] ()
+198 more items in the release notes
securityFixes CVE-2026-60018: Authenticated DoS in OneDev migration via unbounded version response body
securityFixes CVE-2026-60021: Authenticated DoS in GitLab migration via uncancelable version probe
securitySECURITY
fixfix(packages): restrict/limited/token-scope access (#39041, #39043, #39044, #39047, #39046) (#39058)
fixfix(attachments): enforce owning repository path (#39048) (#39077)
fixfix(markup): enforce same-repository issue access (#39045) (#39054)
fixfix(actions): verify raw artifact signatures first (#39049) (#39053)
fixfix(api): hide limited users from restricted viewers (#39004) (#39039)
fixfix(repo): limit gitignore template selections (#39027) (#39040)
fixfix(migrations): cancel GitLab version probes (#39023) (#39035)
fixfix(packages): limit Swift package manifests (#39025) (#39032)
fixfix(migrations): bound OneDev version responses (#39024) (#39033)
fixfix(packages): limit Maven checksum uploads (#39028) (#39031)
fixfix(packages): bound Alpine metadata entries (#39026) (#39029)
fixfix(actions): enforce fork pull request trust boundaries (#39005) (#39018)
fixfix(git): restrict hook permissions (#39008) (#39016)
fixfix(api): enforce repository creation token authorization (#39007) (#39014)
fixfix(api): enforce public-only scope for compare heads (#39006) (#39013)
fixfix(repo): hide repositories of hidden owners (#39009) (#39012)
fixfix: avoid enumerating every public repository in issue search (#38992) (#39000)
otherrefactor: private endpoints (#38964) (#38965)
featureenhance: add permalinks to pull request reviews (#38849) (#39036)
fixfix: add missing query parameters on runner list page (#39163)
fixfix(actions): keep step-level continue-on-error expressions unevaluated (#39141) (#39148
fixfix(packages): preserve SemVer prerelease identifiers in Swift Registry (#39156) (#39158)
fixfix(repo): prevent MarkAsBrokenEmpty when repository is being migrated (#39091) (#39092)
fixfix(asymkey): do not verify OpenPGP signatures with an SSH instance key (#39073) (#39086)
fixfix(pull): keep the merged state in sync with git (#39062) (#39118)
fixfix(pull): name the head repository in default compare links (#39075) (#39079)
fixfix(git): parse co-author trailers that are not RFC 5322 addresses (#39076) (#39081)
fixfix(actions): show "Complete job" logs when the last step is skipped (#38939) (#39003)
fixfix(actions): Fix how jobs in matrixes are grouped (#38980) (#38998)
fixfix: resolve YAML anchors and aliases in Actions workflows (#38984) (#38996)
fixfix: honor environment variables during install (#38974) (#38976)
fixfix: grant limited-org unit read access to authenticated non-members (#38871) (#38963)
fixfix: allow anonymous theme switching when REQUIRE_SIGNIN_VIEW is set (#38956) (#38961)
fixfix(actions): drop wrapper span around the action status icon (#38957) (#38959)
fixfix(issues): sort scoped labels by exclusive order in dropdowns (#38893) (#38954)
fixfix(indexer): correct bleve indexer token filters (#38853) (#38951)
fixfix: make "login_name" field optional for API edit user (#38917) (#38945)
+8 more items in the release notes
securityFixes CVE-2026-73800: Secret Exfiltration via Reusable Workflow Resolution in pull_request_target Events
securitySECURITY
fixFix: update collaborator access mode and httpsign (#38894, #38862) (#38895)
otherRefactor: external render (#38885) (#38898)
fixFix(actions): resolve pull_request_target reusable workflows at the base commit (#38886) (#38897)
otherRefactor: markup render (#38864) (#38869)
fixFix(deps): update dependency mermaid to v11.16.1 (#38816)
fixFix(auth): set WebAuthn user verification per request (#38805) (#38810)
fixFix: render highlight language (#38793) (#38795)
otherENHANCEMENTS
featureenhance: add missing npm package metadata properties (#38826) (#38831)
otherBUGFIXES
fixfix(actions): keep github.event.inputs as strings for workflow_dispatch (#38899) (#38908)
fixfix(actions): let a rerun of selected jobs read the previous attempt's artifacts (#38857) (#38901)
fixfix(lfs): accept successful transfer responses (#38866) (#38875)
fixfix(packages): ignore nested Package.swift (#38788) (#38836)
fixfix: drop newline-bearing member names in arch ParsePackage (#38102) (#38830)
fixfix(storage): fix Azure Blob dump failing with file does not exist (#38814) (#38828)
fixfix(migration): migration deletion returned json redirection (#38796) (#38825)
fixfix(ui): change underlines to default browser style (#38819) (#38823)
fixfix(actions): allow cancelling runs without running jobs (#35842) (#38812)
fixfix(actions): evaluate each ${{ }} part on its own (#38754) (#38797)
fixfix(actions): write an action task report in one transaction (#38792) (#38794)
fixfix: markup link (#38764) (#38765)
fixfix: set a minio part size when the content size is unknown (#38753) (#38755)
fixfix: bad path escape in subpath archive download (#38749) (#38750)
fixfix: remove the pull merge box from UI when the refreshed page doesn't contain it (#38742) (#38744)
fixfix(markdown): fix double strikethough on code (#38707) (#38729)
fixfix(lfs): failed upload deletes a concurrent upload's meta object (#38693) (#38722)
fixfix: correct full url when using sub-path (#38712) (#38716)
fixfix: avoid markup render panic (#38698) (#38703)
fixfix(ui): too many participants shown in commit avatar stacks (#38689) (#38700)
fixfix: support HEAD requests on Alpine registry APKINDEX.tar.gz (#38686) (#38688)
fixfix(migrations): use all configured GitHub tokens (#38841) (#38846)
See how far your stack has drifted from upstream. Release data from vendors’ own sources · feed under CC BY 4.0 · Code under AGPL-3.0 Settings Feed status