This changelog goes through the changes that have been made in each release without substantial changes to our git log; to see the highlights of what has been added to each release, please refer to the blog.
BREAKING
FEATURES
PERFORMANCE
ENHANCEMENTS
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
Project-URL metadata field to get a PyPI package's homepage URL (#33089)last_committer_date and last_author_date for file contents API (#32921)REFACTORS
DumpTables (#32930)CloseIssue and ReopenIssue instead of ChangeStatus (#32467)routers to services (#33280)BUGFIXES
MISC
overflow-wrap: anywhere to replace word-break: break-all (#34126)git diff-tree for DiffFileTree on diff pages (#33514)@github/text-expander-element to 2.9.0 (#33435)noImplicitThis (#33250)ToGitServiceType (#33146)pull_request actions trigger (#34106) (#34120)check-attr command on Windows OS. (#34035) (#34036)pickTask (#33543) (#33563)vertical-align (#33477) (#33480)GetCommitBranchStart bug (#33298) (#33421)BREAKING
[camo].Allways to [camo].Always (#32097)SECURITY
FEATURES
PERFORMANCE
ENHANCEMENTS
MAX_ROWS option for CSV rendering (#30268)Repo file list enhancements (#32835)
Markdown & Editor
Refactor markdown math render, add dollor-backquote syntax support (#32831)
Make Monaco theme follow browser, fully type codeeditor.ts (#32756)
Refactor markdown editor and use it for milestone description editor (#32688)
Add some handy markdown editor features (#32400)
Improve markdown textarea for indentation and lists (#31406)
Issue
Add label/author/assignee filters to the user/org home issue list (#32779)
Refactor issue filter (labels, poster, assignee) (#32771)
Style unification for the issue_management area (#32605)
Add "View all branches/tags" entry to Branch Selector (#32653)
Improve textarea paste (#31948)
Add avif image file support (#32508)
Prevent from submitting issue/comment on uploading (#32263)
Issue Templates: add option to have dropdown printed list (#31577)
Allow searching issues by ID (#31479)
Add is_archived option for issue indexer (#32735)
Improve attachment upload methods (#30513)
Support issue template assignees (#31083)
Prevent simultaneous editing of comments and issues (#31053)
Add issue comment when moving issues from one column to another of the project (#29311)
Pull Request
Display head branch more comfortable on pull request view (#32000)
Simplify review UI (#31062)
Allow force push to protected branches (#28086)
Add line-through for deleted branch on pull request view page (#32500)
Support requested_reviewers data in comment webhook events (#26178)
Allow maintainers to view and edit files of private repos when "Allow maintainers to edit" is enabled (#32215)
Allow including Reviewed-on/Reviewed-by lines for custom merge messages (#31211)
Actions
Render job title as commit message (#32748)
Refactor RepoActionView.vue, add ::group:: support (#32713)
Make RepoActionView.vue support ##[group] (#32770)
Support pull_request_target event for commit status (#31703)
Detect whether action view branch was deleted (#32764)
Allow users with write permission to run actions (#32644)
Show latest run when visit /run/latest (#31808)
Packages
Improve rubygems package registry (#31357)
Add support for npm bundleDependencies (#30751)
Add signature support for the RPM module (#27069)
Extract and display readme and comments for Composer packages (#30927)
Project
Add title to project view page (#32747)
Set the columns height to hug all its contents (#31726)
Rename project board -> column to make the UI less confusing (#30170)
User & Organazition
Use better name for userinfo structure (#32544)
Use user.FullName in Oauth2 id_token response (#32542)
Limit org member view of restricted users (#32211)
Allow disabling authentication related user features (#31535)
Add option to change mail from user display name (#31528)
Use FullName in Emails to address the recipient if possible (#31527)
Administration
Add support for a credentials chain for minio access (#31051)
Move admin routers from /admin to /-/admin (#32189)
Add cache test for admins (#31265)
Add option for mailer to override mail headers (#27860)
Azure blob storage support (#30995)
Supports forced use of S3 virtual-hosted style (#30969)
Move repository visibility to danger zone in the settings area (#31126)
Others
Remove urls from translations (#31950)
Simplify 404/500 page (#31409)
Optimize installation-page experience (#32558)
Refactor login page (#31530)
Add new event commit status creation and webhook implementation (#27151)
Repo Activity: count new issues that were closed (#31776)
Set manual tabindexes on login page (#31689)
Add YEAR, MONTH, MONTH_ENGLISH, DAY variables for template repos (#31584)
Add typescript guideline and typescript-specific eslint plugins and fix issues (#31521)
Make toast support preventDuplicates (#31501)
Fix tautological conditions (#30735)
API
DISABLE_ORGANIZATIONS_PAGE and DISABLE_CODE_PAGE settings for explore pages and fix an issue related to user search (#32288)PublicOnly for org membership only once (#32234)REFACTOR
no-jquery/no-parse-html-literal and fix violation (#31684)math/rand functions (#30733)tw- helpers to tailwind plugin (#31184)gt-word-break with tw-break-anywhere (#31183)IDOrderDesc for listing Actions task and always order by id DESC (#31150)querySelector over alternative DOM methods (#31280).text() (#30506)BUGFIXES
recentupdate sorting bugs (#32505)MISC
attestation-manifest and use short sha256 instead of full sha256 (#32851)github.com/meilisearch/meilisearch-go (#32484)DEFAULT_MIRROR_REPO_UNITS and DEFAULT_TEMPLATE_REPO_UNITS options (#32416)htmx to 2.0.2 (#31847)AutodetectManualMerge was not enabled (#31805)username to OIDC introspection response (#31688)eslint-plugin-jquery (#31402)overview (#31373)golang.org/x/net (#31260)@github/relative-time-element to v4.4.1 (#31232)jobs.<job_id>.if (#31070)inset shorthand (#30939)break-word in CSS (#30934)github.com/google/go-github to v61 (#30738)ProtonMail/go-crypto for opengpg in tests (#30736)unparam linter (#31277)GetRefCommitID (#32705) (#32712)missing signature key error when pulling Docker images with SERVE_DIRECT enabled (#32365) (#32397)/userinfo, aligning to OpenID Core specification (#32578) (#32594)GetRepoLink nil pointer dereference on dashboard feed page when repo is deleted with actions enabled (#32501) (#32502)missing signature key error when pulling Docker images with SERVE_DIRECT enabled (#32397) (#32397)/user/search (#32310)show stats work when only one file changed (#32244) (#32268)owner/repo/pulls handlers use "PR reader" permission (#32254) (#32265)GetPushMirrorsByRepoID called on all repo pages (#32560) (#32567)Set up Job when first step is skipped (#32120) (#32125)git push --tags --force (#32040) (#32074)/repos/{owner}/{repo}/pulls/{index}/files endpoint not populating previous_filename (#32017) (#32028)/tokens api (#32085) (#32092)due_date is nil when editing issues (#32035) (#32042):focus-visible style to buttons (#31799) (#31819)IsObjectExist with gogit (#31790) (#31806)TAGS to TEST_TAGS and fix bugs found with gogit (#31791) (#31795)word-break: break-all (#31637) (#31652)ctx.ServerError (#31130) (#31133)explorer.go (#31348) (#31350)+ menu flashing on page load (#31281) (#31342)github.com/hashicorp/go-retryablehttp (#31499)ConfirmModal (#31283) (#31291)ProxyPreserveHost in Apache httpd doc (#31143) (#31147)This release stands as a monumental milestone in our development journey with a record-breaking incorporation of 1528 pull requests. It marks the most extensive update in Gitea's history, showcasing a plethora of new features and infrastructure improvements.
Noteworthy advancements in this release include the introduction of HTMX and Tailwind, signaling a strategic shift as we gradually phase out jquery and Fomantic UI. These changes reflect our commitment to embracing modern technologies and enhancing the user experience.
Key highlights of this release encompass significant changes categorized under BREAKING, FEATURES, ENHANCEMENTS, and PERFORMANCE, each contributing to a more robust and efficient Gitea platform.
gitea-light, gitea-dark, gitea-auto (#27419)[ui].THEMES config option from app.inilinguist-detectable and linguist-documentation (#29267)fast-forward-only (#28954)[other].SHOW_FOOTER_POWERED_BY setting to hide Powered by (#30253)<overflow-menu> items (#29831)<overflow-menu>, rename webcomponents (#29400)noarch packages into other architectures index (#29137)View at this point in history for every commit (#29122)Code tab on wiki commits (#28041)Packages (#27786)must-change-password command line parameter (#27626)push and pull mirror sync in progress (#27390)Hide/Show all checks button to commit status check (#26284)crypto/sha256 (#29386)max( id ) to max( index ) for latest commit statuses (#30076) (#30155)TxContext (#30061) (#30062)for attribute not pointing to the ID of the color picker (#29813) (#29815)Temporal.PlainDate for absolute dates (#29804) (#29808)skipped if the job is skipped (#29489) (#29523)processWindowErrorEvent (#29407) (#29480)if is always() (#29464) (#29469)AppSubURL (#29459) (#29488)issue_comment workflow trigger event (#29277) (#29322)git cat-file (#29297) (#29310)git cat-file session. (#29298) (#29301)/ from relative links (#28932) (#28952)MigrateRepository for the actions notifier (#28920) (#28923)DeleteCollaboration transaction behaviour (#28886) (#28889)convert.ToTeams on empty input (#28426) (#28767)status_check_contexts matching bug (#28582) (#28589)GetCommitStatuses (#28787) (#28804)DateTime show proper tooltip (#28677) (#28683)filepath instead of path to create SQLite3 database file (#28374) (#28378)HEAD support for rpm repo files (#28309) (#28360)protect_branch_name_pattern_desc (#28313) (#28315)previous info from git blame (#28306) (#28310)First-time contributor (#28237) (#28271)previous info from git blame (#28306) (#28310).git-blame-ignore-revs file (#26395)Retry button when creating a mirror-repo fails (#26228)db.DefaultContext (#27073) (#27083) (#27089) (#27103) (#27262) (#27265) (#27347) (#26076)RemoteAddress to mirrors (#26952)enter key (#27746) (#27751)link-action redirect network error (#27734) (#27749)release in sql queries (#27205) (#27218)pull_request_target event (#26320)LFS_JWT_SECRET from wrong section (#26109)ref for workflows triggered by pull_request_target (#25743)-dev tags (#25471)pull_request_target event (#25229)ctx in new_form.tmpl (#27434) (#27438)action.user_id (#27403) (#27425)DeleteIssuesByRepoID (#27332) (#27408)comment.dependent_issue_id (#27325) (#27340)Test Delivery and Replay webhook buttons when webhook is inactive (#27211) (#27253).new-menu (#27181) (#27243)issue_user.issue_id (#27154) (#27158)gt-float-right and some unnecessary helpers (#27110)print instead of printf (#27093)GetUserIssueStats and move relevant tests to indexer_test.go (#27067)util.SliceXxx with slices.Xxx (#26958)has selector and improve various styles (#26891)RSS user feed button (#26882)og:description to limit the max length (#26876).ui.right (#26825)text module (#26777)item module (#26775)WalkGitLog (#26773)border-radius behavior (#26770)Archived to archive label. (#26741)modules/mirror to services (#26737)member, collaborator, contributor, and first-time contributor roles and tooltips (#26658)Sync2 -> Sync (#26479)user-content-* consistent with github (#26388)IssueList instead of []*Issue (#26369)#number in documents (#26365)issue_service.CreateComment (#26298)Joined on... in profiles (#26215)delete LFS file button red (#26181)flex-list & flex-item elements for Gitea UI (#25790)octicon-file-directory-symlink (#25453)Create column button while the column name is empty (#25192)HashAvatar (#25662)no-duplicate-header (#27500) (#27506)known issue section in Gitea Actions Doc (#27930) (#27938)from-source.zh-cn.md & from-source.en-us.md - Cross Compile Using Zig (#25194)release in sql queries (#27205) (#27219)SyncAndGetUserSpecificDiff (#27152) (#27156){repo}/issues/new to {repo}/issues/new/choose when blank issues are disabled (#26813) (#26847)object-fit: contain for oauth2 custom icons (#26493) (#26498)last indexed SHA when a repo could not be indexed yet (#26340) (#26345)hidden over clip for text truncation (#26520) (#26522)EmptySHA (#26290) (#26316)runs-on with expressions when warning no matched runners (#25917) (#25933)[actions].DEFAULT_ACTIONS_URL to only github or self (#25581) (#25604)actions stat (#25062)theme-color and default-theme (#24960)[git.config] for reflog cleaning up (#24958)time.FORMAT (#24430)setting.Other and remove unused SHOW_FOOTER_BRANDING (#24270)ctx in templates (#23105)app.ini, use diff.algorithm=histogram by default (#24860)webp images as avatars (#24248)outputs and use needs context on Actions (#24230)Permission in API returned repository struct (#25388) (#25441)add line comment buttons focusable (#25894) (#25896)add file button for pull mirrors (#25748) (#25751)Regenerate Secret button display (#25534) (#25541)select all issues checkbox when no issues are available (#25086)origin remote (#25066)ViewStepLog (#24980)bot label next to username when rendering author link if the user is a bot (#24943)@font-face overrides (#24855)In your repositories link in milestones dashboard (#24853)CommentList instead of []*Comment (#24828)git call (#24710)N/A with - everywhere (#24474)font-awesome and fomantic icon module (#24471)ui-monospace and SF Mono to --fonts-monospace (#24442)Rename branch from repo settings page to the page of branches list (#24380)IsRepositoryExist logic (#24374)DumpVar helper function to help debugging templates (#24262)on_date key (#24106)reserved, bot, and remote (#24026)Printf, improve template error messages (#23982)muted class for buttons (#23896)(comment) when a link points at a comment rather than the whole issue (#23734)Publish Review buttons should indicate why they are disabled (#23598)<SvgIcon> to make it output svg node and optimize performance (#23570)id="comment-form" dead code, fix tag (#23555)repository in npm package metadata endpoint (#23539)project.IconName instead of repeated unreadable if-else chains (#23538)Close to either Close issue or Close pull request (#23506).locale.Tr function not found in delete modal (#23468)DEFAULT_SHOW_FULL_NAME is true (#23463)RepositoryList.LoadAttributes (#23435)<div class="button"> to <button class="button"> (#23337)find('.menu').toggle() (#22987)repo.namedBlob by git.TreeEntry. (#22898)matchPullRequestEvent (#25746) (#25796)ctx.Written() for GetActionIssue (#25698) (#25711)WithPullRequest for actionsNotifier (#25144) (#25197)MilestoneIDs when querying issues (#25125) (#25141)No assignee filter in issue list page (#24854)LogIndexes in case it is outdated (#24516)ignSignIn (#24415)toggle buttons (#23676)valid_until translation to valid_until_date and include placeholder for the date (#24563)add_on translation to added_on and include placeholder for the date (#24562)join_on translation to joined_on and include placeholder for the date (#24550).ssh and authorized_keys (#25721) (#25730)/templates/swagger/v1_json.tmpl as generated file (#24306)drone exec to act_runner exec in test README.md (#24791)redis-cluster explicitly in config (#24717)README link (#24546)CONTRIBUTING.md (#24492)webcomponents (#23261)line-height cutting off g (#25334) (#25533)base_ref, head_ref, api_url, ref_type fields (#24356)action table (#23532)Hide comment type settings where necessary (#21306)WithPullRequest for actionsNotifier (#25144) (#25196)Actions unit issue (#24536) (#24545)theme-color by default (#24340) (#24346)branches, tag, path filter (#22804) (#23740)diffEnd when clicking the Show More button in the DiffFileTree (#24069) (#24078)ref to fully-formed of the tag when trigger event is release (#23944) (#23989)Repository.getFilesChanged to fix Actions paths and paths-ignore filter (#23920) (#23969)cases.Title crash for concurrency (#23885) (#23903)needs in Actions (#23789) (#23831)pull_request_sync (#23683) (#23691)HookEventType of pull request review comments (#23650) (#23678)show-modal and show-panel class (#23660) (#23663)/notifications/watching (#23564) (#23603)@<user>- completion popup on the release description textarea (#22359)Note and Warning (#21711)updated_at field to PullReview API object (#21812).patch to attachment.ALLOWED_TYPES (#23580) (#23582)canWriteUnit to canWriteProjects (#23386) (#23399)setting.Database.UseXXX to methods (#23354) (#23356)<video> in MarkDown (#22892) (#23236)touchstart fastclick, always use click for click events (#23065) (#23195)gt-relative class instead of the ambiguous gt-pr class (#23008)GetUnits to LoadUnits (#22970)repo.GetOwner to repo.LoadOwner (#22967)title to PR file tree items (#22918).hide to .gt-hidden (#22916)command line instructions button even if there are conflicts (#22909).hidden CSS class for menu elements (#22895)gt- (#22879)IsReadmeFile* from modules/markup/ to modules/util (#22877)/$count endpoints for NuGet v2 (#22855).hidden CSS class for checkbox elements (#22851)redirect_to cookie on OAuth login (#22594)convert package to services (#22264)href="javascript:;" in "save topics (Done)" button (#21813)context.Context to more methods (#21546)README in create repos API (#23387) (#23510)X-Gitea-Debug header once (#23361) (#23381)--global when calling git config --get, for consistency with git config --set (#23157) (#23199)gitea serv respect git binary home (#23138) (#23197)alt for logo in home page (#21887)TestAPITeam (#22192)hacking-on-gitea.zh-cn.md (#23297) (#23305)<nav> instead of <div> in the global navbar (#23125) (#23533)--message=%s for git commit message (#23028) (#23029)github.com/zeripath/zapx/v15 (#22485)closed_at always being null (#22482) (#22483)npm unpublish (#20688)commits-table column width (#21564)code highlighting in issue titles (#21432)stat to ToCommit function for speed (#21337)ISSUE_PAGING_NUM to 20 (#20547)/raw/ & /media/ API (#20438)i18n to locale (#20153)Timestamp.IsZero (#21593) (#21603)Timestamp.IsZero (#21593) (#21604)ExternalLoginUserNotExist error (#21504) (#21572)REQUIRE_SIGNIN_VIEW for packages (#20873) (#21232)SearchTeam (#20844) (#20872)RequireHighlightJS field, update plantuml example. (#19615)gitea-src-VERSION to release-tar-file (#19396)<head> template (#19678)IsVendor (#19626)SCRIPT_TYPE is not on the PATH (#18467)CryptoRandomBytes instead of CryptoRandomString (#18439)repo_dir is an empty directory or doesn't exist before 'dump-repo' (#20205) (#20370)contrib/upgrade.sh (#19222)tmp (#18983)ContextUser (#18798)/usr/local/bin/gitea instead of /app/... for Docker (#19794)contrib/upgrade.sh (#18286)DescriptionHTML (#18924)/user/settings/security (#18385)safe.directory = '*' to work but alpine 3.13 has 2.30.3 (#19876)Count function (#19850)Draft as a WIP prefix (#19780) (#19811)hostname:port to pass host matcher's check (#19543) (#19544)StartToMirror (#18904) (#19075)rel="nofollow noindex" on new issue links (#19023) (#19042)/{org}.gpg (#18959) (#18962)<strong> html in translation (#18929) (#18931)MinUnitAccessMode return correct perm (#18675) (#18689)GetUserTeams (#18499) (#18531)ImagedProvider for gplus oauth2 provider (#18504) (#18505)PULL_LIMIT and PUSH_LIMIT to cron.update_mirror task (#17568)rebase (#16125)/email2user endpoint (#18127)<a> elements to underline on hover (#17898)bind error more readable (#17750)*PushUpdateOptions as receiver (#17724)user paramater (#17723)data-path once for each file in diff pages (#17657)> .content (#17582)extendDefaultPlugins method of svgo (#17399)index.js (#17386)index.js to separate files (#17315)index.js to components dir, and remove unused codes. (#17301)models to models.avatars, remove duplicated code (#17123)AbsoluteListOptions (#17028)list.List with slices (#16311)/user/settings/security (#18386)<td> (#17859)