Skip to content
* 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)

* 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)

  * 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)

  * 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
  * 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)

* MISC
  * 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)