Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add the ability to pin Issues #24406

Merged
merged 54 commits into from
May 25, 2023
Merged

Add the ability to pin Issues #24406

merged 54 commits into from
May 25, 2023

Conversation

JakobDev
Copy link
Contributor

@JakobDev JakobDev commented Apr 28, 2023

This adds the ability to pin important Issues and Pull Requests. You can also move pinned Issues around to change their Position. Resolves #2175.

Screenshots

grafik
grafik
grafik

The Design was mostly copied from the Projects Board.

Implementation

This uses a new pin_order Column in the issue table. If the value is set to 0, the Issue is not pinned. If it's set to a bigger value, the value is the Position. 1 means it's the first pinned Issue, 2 means it's the second one etc. This is dived into Issues and Pull requests for each Repo.

TODO

  • You can currently pin as many Issues as you want. Maybe we should add a Limit, which is configurable. GitHub uses 3, but I prefer 6, as this is better for bigger Projects, but I'm open for suggestions.
  • Pin and Unpin events need to be added to the Issue history.
  • Tests
  • Migration

The feature itself is currently fully working, so tester who may find weird edge cases are very welcome!

@GiteaBot GiteaBot added the lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. label Apr 28, 2023
@pull-request-size pull-request-size bot added the size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. label Apr 28, 2023
@yardenshoham yardenshoham added the type/feature Completely new functionality. Can only be merged if feature freeze is not active. label Apr 28, 2023
models/issues/issue.go Outdated Show resolved Hide resolved
@silverwind
Copy link
Member

image

Border is too thick, please use 1px border.

@silverwind
Copy link
Member

GitHub uses 3, but I prefer 6, as this is better for bigger Projects, but I'm open for suggestions.

I'd say 3 is fine as two rows of pins may be obnoxious.

Is a "X" icon implemented in the boxes where users with sufficient permission can un-pin?

@JakobDev
Copy link
Contributor Author

Border is too thick, please use 1px border.

Done

I'd say 3 is fine as two rows of pins may be obnoxious.

I still think 6 would be better for bigger projects, but let's see what the other says

Is a "X" icon implemented in the boxes where users with sufficient permission can un-pin?

This is now added. I have also found a Bug in Tippy: If a Element with a Tooltip is removed, while the Tooltip is shown, the Tooltip is still shown.

grafik

@silverwind
Copy link
Member

silverwind commented Apr 28, 2023

This is now added. I have also found a Bug in Tippy: If a Element with a Tooltip is removed, while the Tooltip is shown, the Tooltip is still shown.

I think it's a special case we hadn't had yet. You can probably just el._tippy.destroy() before el.remove().

@silverwind
Copy link
Member

silverwind commented Apr 28, 2023

Are you on Windows? I think we have another final newline issue in generated file. See here for the other. I have not figured that issue out yet, but it does seem to come up often.

@JakobDev
Copy link
Contributor Author

Are you on Windows?

My main Computer with Manjaro has some Problems at the Moment, so I'm currently forced to use this stupid OS on another Computer. I don't even know which script touches this file at all. Maybe you should just ignore if there is a final newline, if that makes problem. A final newline is not very important on such a large autogenrated file.

@JakobDev
Copy link
Contributor Author

You can probably just el._tippy.destroy() before el.remove().

This looks like a private function. Should this really be used?

@silverwind
Copy link
Member

silverwind commented Apr 28, 2023

You can probably just el._tippy.destroy() before el.remove().

This looks like a private function. Should this really be used?

If you can obtain the reference to the tippy instance through other means, go for it. _tippy is only for cases where it's not possible to get the instance otherwise. I wouldn't exactly call it "private", but more of an discouraged escape hatch.

Edit: It's also documented: https://atomiks.github.io/tippyjs/v6/tippy-instance/#-property

@silverwind
Copy link
Member

Are you on Windows?

My main Computer with Manjaro has some Problems at the Moment, so I'm currently forced to use this stupid OS on another Computer. I don't even know which script touches this file at all. Maybe you should just ignore if there is a final newline, if that makes problem. A final newline is not very important on such a large autogenrated file.

So at least that confirms it's a Windows issue. File is generated during make tidy. We can add normalization for it, but it appears that normalization hadn't worked before in the swagger case via sed, so I guess we can do it in the golang script for this case.

@silverwind
Copy link
Member

#24407 should fix the newline issue.

@delvh
Copy link
Member

delvh commented Apr 28, 2023

What I've noticed already:
Yes, it's one possible approach to store the pin order directly inside the issues.
However, this approach also makes problems:

  • PRs also need that attribute as you can see at the moment. But what is a pinned PR?
  • This is often unneeded as it's pretty rare that you need to display the pinned issues (basically only on the "view issues" page)
  • What's the behavior for when the issue isn't pinned? PinnedOrder = 0?
  • You will only ever be able to pin your own issues and foreign issues from other repos will never be possible (not sure if this is actually useful or not)

All of these problems can be solved by using the following approach:
Instead of storing for each issue the ranking it is pinned in, let's store an external

type PinnedIssue {
  repoID int64 UNIQUE(issue_repo) // the repo pinning this issue, not necessarily the one owning it. Additionally, we can even think about whether this is the primary key for this struct, as every repo should likely only have one set of pinned issues…
  issueID int64 UNIQUE(issue_repo)
  order int64 // or a smaller type, it's not going to be bigger than 1000…
  createdUnix timestamp
}

Then you can query the pinned issues of a repository with the query

e.Where(PinnedIssue{repoID: repoID}).Asc("order, createdUnix").Find(<result list>)

Which should suffice for all cases where you actually want to separate the pinned issues.
Perhaps you'll need the second query

e.Get(PinnedIssue{repoID: <repoID>, issueID: <issueID>}).Exists()

to find out if a repo pins a single issue (It looked like you wanted to display a special icon on the issue view/edit page depending on if it is pinned or not when I skimmed through the PR changes).

What do you think?

(Every code I wrote here should be treated as pseudo-working-code. It may work, but it probably needs some adjustments.)

@JakobDev
Copy link
Contributor Author

PRs also need that attribute as you can see at the moment. But what is a pinned PR?

If you are on the Issues page, you see pinned Issues, if you are on the PR page, you see the pinned PRs as shown the Screenshot.

This is often unneeded as it's pretty rare that you need to display the pinned issues (basically only on the "view issues" page)

Sure, you only need this foe the View Issues page and the Sidebar for a single Issue, but why is that a Problem?

What's the behavior for when the issue isn't pinned? PinnedOrder = 0?

Then it's simply not pinned. I'm not sure what you mean.

You will only ever be able to pin your own issues and foreign issues from other repos will never be possible (not sure if this is actually useful or not)

This is part of the Design. I think it should not be possible to pin Issues from other Repos. This would only be bring a benefit in a handful of situations, but it will make the Implementation more complex. It also confuses Users who see Issues from another Repo on the Issue page of a Repo.

@silverwind
Copy link
Member

We now have this same issueicon.tmpl on the main branch which should be compatible with the usage here, so the file can be removed here.

@silverwind silverwind added the reviewed/wait-merge This pull request is part of the merge queue. It will be merged soon. label May 25, 2023
@silverwind
Copy link
Member

Okay let's merge it. The CI failure has not shown again in the latest runs.

@silverwind silverwind enabled auto-merge (squash) May 25, 2023 12:26
@JakobDev
Copy link
Contributor Author

Wait a moment

@silverwind silverwind disabled auto-merge May 25, 2023 12:27
@silverwind silverwind removed the reviewed/wait-merge This pull request is part of the merge queue. It will be merged soon. label May 25, 2023
@silverwind
Copy link
Member

Okay, tell me when it's ready.

@JakobDev
Copy link
Contributor Author

It is now ready. I have found a outdated TODO comment that I had removed now to not confuse others.

@JakobDev
Copy link
Contributor Author

@silverwind So everything is done and the CI has passed again. It should now good to go.

@silverwind silverwind merged commit aaa1094 into go-gitea:main May 25, 2023
@GiteaBot GiteaBot added this to the 1.20.0 milestone May 25, 2023
@JakobDev JakobDev deleted the issuepin branch May 25, 2023 13:18
web_src/css/repository.css Outdated Show resolved Hide resolved
web_src/css/repository.css Outdated Show resolved Hide resolved
@@ -48,6 +48,8 @@ type PullRequest struct {
Updated *time.Time `json:"updated_at"`
// swagger:strfmt date-time
Closed *time.Time `json:"closed_at"`

PinOrder int `json:"pin_order"`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wait, pinned PRs?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, you can pin Pull Requests

@@ -1048,6 +1048,9 @@ LEVEL = Info
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; List of reasons why a Pull Request or Issue can be locked
;LOCK_REASONS = Too heated,Off-topic,Resolved,Spam
;; Maximum number of pinned Issues
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

per repo!


// Check if the maximum allowed Pins reached
if maxPin >= setting.Repository.Issue.MaxPinned {
return fmt.Errorf("You have reached the max number of pinned Issues")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

util.NewInvalidArgumentErrorf?

// IsNewPinnedAllowed returns if a new Issue or Pull request can be pinned
func IsNewPinAllowed(ctx context.Context, repoID int64, isPull bool) (bool, error) {
var maxPin int
_, err := db.GetEngine(ctx).SQL("SELECT MAX(pin_order) FROM issue WHERE repo_id = ? AND is_pull = ?", repoID, isPull).Get(&maxPin)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use COUNT instead of MAX.
That will fail less often (i.e. if there are spaces between pin orders).

@@ -1024,6 +1025,8 @@ func registerRoutes(m *web.Route) {
m.Post("/resolve_conversation", reqRepoIssuesOrPullsReader, repo.UpdateResolveConversation)
m.Post("/attachments", repo.UploadIssueAttachment)
m.Post("/attachments/remove", repo.DeleteAttachment)
m.Delete("/unpin/{id}", reqRepoAdmin, repo.IssueUnpin)
m.Post("/pin_move", reqRepoAdmin, repo.IssuePinMove)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

move-pin?

Comment on lines +3405 to +3409
.pinned-issue-card .meta a {
color: inherit;
}

.pinned-issue-card .meta a:hover {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why .meta?
Why not simply omit this intermediary selector?

Comment on lines +25 to +27
err = issue.PinOrUnpin(ctx, ctx.Doer)
if err != nil {
ctx.Status(http.StatusInternalServerError)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should probably return Bad Request or something like that instead of internal server error when a user cannot pin issues anymore.
I already feared so when I saw that you returned errors.New in this case…

@silverwind
Copy link
Member

silverwind commented May 25, 2023

Noticed one bug: I can not unpin issues from the issues list page because the ID value is incorrect, so it sends a DELETE request, gets 204, the box is removed in UI, but comes back on next page reload. Unpin from single issue page works fine.

@JakobDev maybe you can followup with a fix PR that adresses above comments too.

@lunny
Copy link
Member

lunny commented May 26, 2023

Noticed one bug: I can not unpin issues from the issues list page because the ID value is incorrect, so it sends a DELETE request, gets 204, the box is removed in UI, but comes back on next page reload. Unpin from single issue page works fine.

@JakobDev maybe you can followup with a fix PR that adresses above comments too.

I think I have reported that I cannot remove the pinned issue?

zjjhot added a commit to zjjhot/gitea that referenced this pull request May 26, 2023
* upstream/main:
  Use the type RefName for all the needed places and fix pull mirror sync bugs (go-gitea#24634)
  [skip ci] Updated translations via Crowdin
  Add Link to Stars and Forks Page to Repo List (go-gitea#24931)
  Fix documentation ref (go-gitea#24934)
  Add Chinese docs for help, contribution and development (go-gitea#24925)
  Merge two translation contributing documents (go-gitea#23939)
  Add the ability to pin Issues (go-gitea#24406)
  Use `shared/issueicon` template in projects (go-gitea#24922)
  Allow skipping forks and mirrors from being indexed (go-gitea#23187)
  Add Chinese documentations for Actions (go-gitea#24902)

# Conflicts:
#	templates/repo/issue/view_content/sidebar.tmpl
@JakobDev
Copy link
Contributor Author

Noticed one bug: I can not unpin issues from the issues list page because the ID value is incorrect, so it sends aDELETErequest, gets 204, the box is removed in UI, but comes back on next page reload. Unpin from single issue page works fine.

I'm sorry, but I can reproduce this on a brand new setup on Firefox and Chrome. I can unpin Issues using the X without problems. Can you maybe investigate what causes the wrong ID in your case?

maybe you can followup with a fix PR that adresses above comments too.

I can do that, but I need a Way to reproduce the Bug.

I think I have reported that I cannot remove the pinned issue?

I know, this was 2 weeks ago. I wrote that I can't reproduce this and was asking for more Details to reproduce. Because I got no Response, I though this was maybe caused by a Database corruption or something else and the Problem was gone.

@silverwind
Copy link
Member

I'm sorry, but I can reproduce this on a brand new setup on Firefox and Chrome. I can unpin Issues using the X without problems. Can you maybe investigate what causes the wrong ID in your case?

Just to confirm, this ID is meant to be the same as the issue ID seen in the URL, right?

@JakobDev
Copy link
Contributor Author

Thanks to your question I was able to found the Problem: The ID is the ID of the Issue, but I'm accidental using issues_model.GetIssueByIndex to get the Issue. As I tested this mostly in the First Repo that I have created with the same Issues, the ID was the same as the Index, so I didn't noticed it.

silverwind added a commit that referenced this pull request May 30, 2023
This addressees some things from #24406 that came up after the PR was
merged. Mostly from @delvh.

---------

Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: delvh <dev.lh@web.de>
nrdufour added a commit to nrdufour/home-ops that referenced this pull request Jul 30, 2023
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [docker.io/gitea/gitea](https://github.com/go-gitea/gitea) | minor | `1.19.2` -> `1.20.2` |

---

### Release Notes

<details>
<summary>go-gitea/gitea (docker.io/gitea/gitea)</summary>

### [`v1.20.2`](https://github.com/go-gitea/gitea/blob/HEAD/CHANGELOG.md#1202---2023-07-29)

[Compare Source](https://github.com/go-gitea/gitea/compare/v1.20.1...v1.20.2)

-   ENHANCEMENTS
    -   Calculate MAX_WORKERS default value by CPU number ([#&#8203;26177](https://github.com/go-gitea/gitea/issues/26177)) ([#&#8203;26183](https://github.com/go-gitea/gitea/issues/26183))
    -   Display deprecated warning in admin panel pages as well as in the log file ([#&#8203;26094](https://github.com/go-gitea/gitea/issues/26094)) ([#&#8203;26154](https://github.com/go-gitea/gitea/issues/26154))
-   BUGFIXES
    -   Fix allowed user types setting problem ([#&#8203;26200](https://github.com/go-gitea/gitea/issues/26200)) ([#&#8203;26206](https://github.com/go-gitea/gitea/issues/26206))
    -   Fix handling of plenty Nuget package versions ([#&#8203;26075](https://github.com/go-gitea/gitea/issues/26075)) ([#&#8203;26173](https://github.com/go-gitea/gitea/issues/26173))
    -   Fix UI regression of asciinema player ([#&#8203;26159](https://github.com/go-gitea/gitea/issues/26159)) ([#&#8203;26162](https://github.com/go-gitea/gitea/issues/26162))
    -   Fix LFS object list style ([#&#8203;26133](https://github.com/go-gitea/gitea/issues/26133)) ([#&#8203;26147](https://github.com/go-gitea/gitea/issues/26147))
    -   Fix allowed user types setting problem ([#&#8203;26200](https://github.com/go-gitea/gitea/issues/26200)) ([#&#8203;26206](https://github.com/go-gitea/gitea/issues/26206))
    -   Prevent primary key update on migration ([#&#8203;26192](https://github.com/go-gitea/gitea/issues/26192)) ([#&#8203;26199](https://github.com/go-gitea/gitea/issues/26199))
    -   Fix bug when pushing to a pull request which enabled dismiss approval automatically ([#&#8203;25882](https://github.com/go-gitea/gitea/issues/25882)) ([#&#8203;26158](https://github.com/go-gitea/gitea/issues/26158))
    -   Fix bugs in LFS meta garbage collection ([#&#8203;26122](https://github.com/go-gitea/gitea/issues/26122)) ([#&#8203;26157](https://github.com/go-gitea/gitea/issues/26157))
    -   Update xorm version ([#&#8203;26128](https://github.com/go-gitea/gitea/issues/26128)) ([#&#8203;26150](https://github.com/go-gitea/gitea/issues/26150))
    -   Remove "misc" scope check from public API endpoints ([#&#8203;26134](https://github.com/go-gitea/gitea/issues/26134)) ([#&#8203;26149](https://github.com/go-gitea/gitea/issues/26149))
    -   Fix CLI allowing creation of access tokens with existing name ([#&#8203;26071](https://github.com/go-gitea/gitea/issues/26071)) ([#&#8203;26144](https://github.com/go-gitea/gitea/issues/26144))
    -   Fix incorrect router logger ([#&#8203;26137](https://github.com/go-gitea/gitea/issues/26137)) ([#&#8203;26143](https://github.com/go-gitea/gitea/issues/26143))
    -   Improve commit graph alignment and truncating ([#&#8203;26112](https://github.com/go-gitea/gitea/issues/26112)) ([#&#8203;26127](https://github.com/go-gitea/gitea/issues/26127))
    -   Avoid writing config file if not installed ([#&#8203;26107](https://github.com/go-gitea/gitea/issues/26107)) ([#&#8203;26113](https://github.com/go-gitea/gitea/issues/26113))
    -   Fix escape problems in the branch selector ([#&#8203;25875](https://github.com/go-gitea/gitea/issues/25875)) ([#&#8203;26103](https://github.com/go-gitea/gitea/issues/26103))
    -   Fix handling of Debian files with trailing slash ([#&#8203;26087](https://github.com/go-gitea/gitea/issues/26087)) ([#&#8203;26098](https://github.com/go-gitea/gitea/issues/26098))
    -   Fix Missing 404 swagger response docs for /admin/users/{username} ([#&#8203;26086](https://github.com/go-gitea/gitea/issues/26086)) ([#&#8203;26089](https://github.com/go-gitea/gitea/issues/26089))
    -   Use stderr as fallback if the log file can't be opened ([#&#8203;26074](https://github.com/go-gitea/gitea/issues/26074)) ([#&#8203;26083](https://github.com/go-gitea/gitea/issues/26083))
    -   Increase table cell horizontal padding ([#&#8203;26140](https://github.com/go-gitea/gitea/issues/26140)) ([#&#8203;26142](https://github.com/go-gitea/gitea/issues/26142))
    -   Fix wrong workflow status when rerun a job in an already finished workflow ([#&#8203;26119](https://github.com/go-gitea/gitea/issues/26119)) ([#&#8203;26124](https://github.com/go-gitea/gitea/issues/26124))
    -   Fix duplicated url prefix on issue context menu ([#&#8203;26066](https://github.com/go-gitea/gitea/issues/26066)) ([#&#8203;26067](https://github.com/go-gitea/gitea/issues/26067))

### [`v1.20.1`](https://github.com/go-gitea/gitea/blob/HEAD/CHANGELOG.md#1201---2023-07-22)

[Compare Source](https://github.com/go-gitea/gitea/compare/v1.20.0...v1.20.1)

-   SECURITY
    -   Disallow dangerous URL schemes ([#&#8203;25960](https://github.com/go-gitea/gitea/issues/25960)) ([#&#8203;25964](https://github.com/go-gitea/gitea/issues/25964))
-   ENHANCEMENTS
    -   Show the mismatched ROOT_URL warning on the sign-in page if OAuth2 is enabled ([#&#8203;25947](https://github.com/go-gitea/gitea/issues/25947)) ([#&#8203;25972](https://github.com/go-gitea/gitea/issues/25972))
    -   Make pending commit status yellow again ([#&#8203;25935](https://github.com/go-gitea/gitea/issues/25935)) ([#&#8203;25968](https://github.com/go-gitea/gitea/issues/25968))
-   BUGFIXES
    -   Fix version in rpm repodata/primary.xml.gz ([#&#8203;26009](https://github.com/go-gitea/gitea/issues/26009)) ([#&#8203;26048](https://github.com/go-gitea/gitea/issues/26048))
    -   Fix env config parsing for "GITEA\_\_\_\_APP_NAME" ([#&#8203;26001](https://github.com/go-gitea/gitea/issues/26001)) ([#&#8203;26013](https://github.com/go-gitea/gitea/issues/26013))
    -   ParseScope with owner/repo always sets owner to zero ([#&#8203;25987](https://github.com/go-gitea/gitea/issues/25987)) ([#&#8203;25989](https://github.com/go-gitea/gitea/issues/25989))
    -   Fix SSPI auth panic ([#&#8203;25955](https://github.com/go-gitea/gitea/issues/25955)) ([#&#8203;25969](https://github.com/go-gitea/gitea/issues/25969))
    -   Avoid creating directories when loading config ([#&#8203;25944](https://github.com/go-gitea/gitea/issues/25944)) ([#&#8203;25957](https://github.com/go-gitea/gitea/issues/25957))
    -   Make environment-to-ini work with INSTALL_LOCK=true ([#&#8203;25926](https://github.com/go-gitea/gitea/issues/25926)) ([#&#8203;25937](https://github.com/go-gitea/gitea/issues/25937))
    -   Ignore `runs-on` with expressions when warning no matched runners ([#&#8203;25917](https://github.com/go-gitea/gitea/issues/25917)) ([#&#8203;25933](https://github.com/go-gitea/gitea/issues/25933))
    -   Avoid opening/closing PRs which are already merged ([#&#8203;25883](https://github.com/go-gitea/gitea/issues/25883)) ([#&#8203;25903](https://github.com/go-gitea/gitea/issues/25903))
-   DOCS
    -   RPM Registry: Show zypper commands for SUSE based distros as well ([#&#8203;25981](https://github.com/go-gitea/gitea/issues/25981)) ([#&#8203;26020](https://github.com/go-gitea/gitea/issues/26020))
    -   Correctly refer to dev tags as nightly in the docker docs ([#&#8203;26004](https://github.com/go-gitea/gitea/issues/26004)) ([#&#8203;26019](https://github.com/go-gitea/gitea/issues/26019))
    -   Update path related documents ([#&#8203;25417](https://github.com/go-gitea/gitea/issues/25417)) ([#&#8203;25982](https://github.com/go-gitea/gitea/issues/25982))
-   MISC
    -   Adding remaining enum for migration repo model type. ([#&#8203;26021](https://github.com/go-gitea/gitea/issues/26021)) ([#&#8203;26034](https://github.com/go-gitea/gitea/issues/26034))
    -   Fix the route for pull-request's authors ([#&#8203;26016](https://github.com/go-gitea/gitea/issues/26016)) ([#&#8203;26018](https://github.com/go-gitea/gitea/issues/26018))
    -   Fix commit status color on dashboard repolist ([#&#8203;25993](https://github.com/go-gitea/gitea/issues/25993)) ([#&#8203;25998](https://github.com/go-gitea/gitea/issues/25998))
    -   Avoid hard-coding height in language dropdown menu ([#&#8203;25986](https://github.com/go-gitea/gitea/issues/25986)) ([#&#8203;25997](https://github.com/go-gitea/gitea/issues/25997))
    -   Add shutting down notice ([#&#8203;25920](https://github.com/go-gitea/gitea/issues/25920)) ([#&#8203;25922](https://github.com/go-gitea/gitea/issues/25922))
    -   Fix incorrect milestone count when provide a keyword ([#&#8203;25880](https://github.com/go-gitea/gitea/issues/25880)) ([#&#8203;25904](https://github.com/go-gitea/gitea/issues/25904))

### [`v1.20.0`](https://github.com/go-gitea/gitea/blob/HEAD/CHANGELOG.md#1200---2023-07-16)

[Compare Source](https://github.com/go-gitea/gitea/compare/v1.19.4...v1.20.0)

-   BREAKING
    -   Fix WORK_DIR for docker (root) image ([#&#8203;25738](https://github.com/go-gitea/gitea/issues/25738)) ([#&#8203;25811](https://github.com/go-gitea/gitea/issues/25811))
    -   Restrict `[actions].DEFAULT_ACTIONS_URL` to only `github` or `self` ([#&#8203;25581](https://github.com/go-gitea/gitea/issues/25581)) ([#&#8203;25604](https://github.com/go-gitea/gitea/issues/25604))
    -   Refactor path & config system ([#&#8203;25330](https://github.com/go-gitea/gitea/issues/25330)) ([#&#8203;25416](https://github.com/go-gitea/gitea/issues/25416))
    -   Fix all possible setting error related storages and added some tests ([#&#8203;23911](https://github.com/go-gitea/gitea/issues/23911)) ([#&#8203;25244](https://github.com/go-gitea/gitea/issues/25244))
    -   Use a separate admin page to show global stats, remove `actions` stat ([#&#8203;25062](https://github.com/go-gitea/gitea/issues/25062))
    -   Remove the service worker ([#&#8203;25010](https://github.com/go-gitea/gitea/issues/25010))
    -   Remove meta tags `theme-color` and `default-theme` ([#&#8203;24960](https://github.com/go-gitea/gitea/issues/24960))
    -   Use `[git.config]` for reflog cleaning up ([#&#8203;24958](https://github.com/go-gitea/gitea/issues/24958))
    -   Allow all URL schemes in Markdown links by default ([#&#8203;24805](https://github.com/go-gitea/gitea/issues/24805))
    -   Redesign Scoped Access Tokens ([#&#8203;24767](https://github.com/go-gitea/gitea/issues/24767))
    -   Fix team members API endpoint pagination ([#&#8203;24754](https://github.com/go-gitea/gitea/issues/24754))
    -   Rewrite logger system ([#&#8203;24726](https://github.com/go-gitea/gitea/issues/24726))
    -   Increase default LFS auth timeout from 20m to 24h ([#&#8203;24628](https://github.com/go-gitea/gitea/issues/24628))
    -   Rewrite queue ([#&#8203;24505](https://github.com/go-gitea/gitea/issues/24505))
    -   Remove unused setting `time.FORMAT` ([#&#8203;24430](https://github.com/go-gitea/gitea/issues/24430))
    -   Refactor `setting.Other` and remove unused `SHOW_FOOTER_BRANDING` ([#&#8203;24270](https://github.com/go-gitea/gitea/issues/24270))
    -   Correct the access log format ([#&#8203;24085](https://github.com/go-gitea/gitea/issues/24085))
    -   Reserve ".png" suffix for user/org names ([#&#8203;23992](https://github.com/go-gitea/gitea/issues/23992))
    -   Prefer native parser for SSH public key parsing ([#&#8203;23798](https://github.com/go-gitea/gitea/issues/23798))
    -   Editor preview support for external renderers ([#&#8203;23333](https://github.com/go-gitea/gitea/issues/23333))
    -   Add Gitea Profile Readmes ([#&#8203;23260](https://github.com/go-gitea/gitea/issues/23260))
    -   Refactor `ctx` in templates ([#&#8203;23105](https://github.com/go-gitea/gitea/issues/23105))
-   SECURITY
    -   Test if container blob is accessible before mounting ([#&#8203;22759](https://github.com/go-gitea/gitea/issues/22759)) ([#&#8203;25784](https://github.com/go-gitea/gitea/issues/25784))
    -   Set type="password" on all auth_token fields ([#&#8203;22175](https://github.com/go-gitea/gitea/issues/22175))
-   FEATURES
    -   Add button on diff header to copy file name, misc diff header tweaks ([#&#8203;24986](https://github.com/go-gitea/gitea/issues/24986))
    -   API endpoint for changing/creating/deleting multiple files ([#&#8203;24887](https://github.com/go-gitea/gitea/issues/24887))
    -   Support changing git config through `app.ini`, use `diff.algorithm=histogram` by default ([#&#8203;24860](https://github.com/go-gitea/gitea/issues/24860))
    -   Add up and down arrows to selected lookup repositories ([#&#8203;24727](https://github.com/go-gitea/gitea/issues/24727))
    -   Add Go package registry ([#&#8203;24687](https://github.com/go-gitea/gitea/issues/24687))
    -   Add status indicator on main home screen for each repo ([#&#8203;24638](https://github.com/go-gitea/gitea/issues/24638))
    -   Support for status check pattern ([#&#8203;24633](https://github.com/go-gitea/gitea/issues/24633))
    -   Implement Cargo HTTP index ([#&#8203;24452](https://github.com/go-gitea/gitea/issues/24452))
    -   Add Debian package registry ([#&#8203;24426](https://github.com/go-gitea/gitea/issues/24426))
    -   Add the ability to pin Issues ([#&#8203;24406](https://github.com/go-gitea/gitea/issues/24406))
    -   Add follow organization and fix the logic of following page ([#&#8203;24345](https://github.com/go-gitea/gitea/issues/24345))
    -   Allow `webp` images as avatars ([#&#8203;24248](https://github.com/go-gitea/gitea/issues/24248))
    -   Support upload `outputs` and use `needs` context on Actions ([#&#8203;24230](https://github.com/go-gitea/gitea/issues/24230))
    -   Allow adding new files to an empty repo ([#&#8203;24164](https://github.com/go-gitea/gitea/issues/24164))
    -   Make wiki title supports dashes and improve wiki name related features ([#&#8203;24143](https://github.com/go-gitea/gitea/issues/24143))
    -   Add monospace toggle button to textarea ([#&#8203;24034](https://github.com/go-gitea/gitea/issues/24034))
    -   Use auto-updating, natively hoverable, localized time elements ([#&#8203;23988](https://github.com/go-gitea/gitea/issues/23988))
    -   Add ntlm authentication support for mail ([#&#8203;23811](https://github.com/go-gitea/gitea/issues/23811))
    -   Add CLI command to register runner tokens ([#&#8203;23762](https://github.com/go-gitea/gitea/issues/23762))
    -   Add Alpine package registry ([#&#8203;23714](https://github.com/go-gitea/gitea/issues/23714))
    -   Expand/Collapse all changed files ([#&#8203;23639](https://github.com/go-gitea/gitea/issues/23639))
    -   Add unset default project column ([#&#8203;23531](https://github.com/go-gitea/gitea/issues/23531))
    -   Add activity feeds API ([#&#8203;23494](https://github.com/go-gitea/gitea/issues/23494))
    -   Add RPM registry ([#&#8203;23380](https://github.com/go-gitea/gitea/issues/23380))
    -   Add meilisearch support ([#&#8203;23136](https://github.com/go-gitea/gitea/issues/23136))
    -   Add API for License templates ([#&#8203;23009](https://github.com/go-gitea/gitea/issues/23009))
    -   Add admin API email endpoints ([#&#8203;22792](https://github.com/go-gitea/gitea/issues/22792))
    -   Add user rename endpoint to admin api ([#&#8203;22789](https://github.com/go-gitea/gitea/issues/22789))
    -   Add API for gitignore templates ([#&#8203;22783](https://github.com/go-gitea/gitea/issues/22783))
    -   Implement actions artifacts ([#&#8203;22738](https://github.com/go-gitea/gitea/issues/22738))
    -   Add RSS Feeds for branches and files ([#&#8203;22719](https://github.com/go-gitea/gitea/issues/22719))
    -   Display when a repo was archived ([#&#8203;22664](https://github.com/go-gitea/gitea/issues/22664))
    -   Add Swift package registry ([#&#8203;22404](https://github.com/go-gitea/gitea/issues/22404))
    -   Add CRAN package registry ([#&#8203;22331](https://github.com/go-gitea/gitea/issues/22331))
    -   Add user webhooks ([#&#8203;21563](https://github.com/go-gitea/gitea/issues/21563))
    -   Implement systemd-notify protocol ([#&#8203;21151](https://github.com/go-gitea/gitea/issues/21151))
    -   Implement Issue Config ([#&#8203;20956](https://github.com/go-gitea/gitea/issues/20956))
    -   Add API to manage issue dependencies ([#&#8203;17935](https://github.com/go-gitea/gitea/issues/17935))
-   API
    -   Use correct response code in push mirror creation response in v1\_json.tmpl ([#&#8203;25476](https://github.com/go-gitea/gitea/issues/25476)) ([#&#8203;25571](https://github.com/go-gitea/gitea/issues/25571))
    -   Fix `Permission` in API returned repository struct ([#&#8203;25388](https://github.com/go-gitea/gitea/issues/25388)) ([#&#8203;25441](https://github.com/go-gitea/gitea/issues/25441))
    -   Add API for Label templates ([#&#8203;24602](https://github.com/go-gitea/gitea/issues/24602))
    -   Filters for GetAllCommits ([#&#8203;24568](https://github.com/go-gitea/gitea/issues/24568))
    -   Add ability to specify '--not' from GetAllCommits ([#&#8203;24409](https://github.com/go-gitea/gitea/issues/24409))
    -   Support uploading file to empty repo by API ([#&#8203;24357](https://github.com/go-gitea/gitea/issues/24357))
    -   Add absent repounits to create/edit repo API ([#&#8203;23500](https://github.com/go-gitea/gitea/issues/23500))
    -   Add login name and source id for admin user searching API ([#&#8203;23376](https://github.com/go-gitea/gitea/issues/23376))
    -   Create a branch directly from commit on the create branch API ([#&#8203;22956](https://github.com/go-gitea/gitea/issues/22956))
-   ENHANCEMENTS
    -   Make `add line comment` buttons focusable ([#&#8203;25894](https://github.com/go-gitea/gitea/issues/25894)) ([#&#8203;25896](https://github.com/go-gitea/gitea/issues/25896))
    -   Always pass 6-digit hex color to monaco ([#&#8203;25780](https://github.com/go-gitea/gitea/issues/25780)) ([#&#8203;25782](https://github.com/go-gitea/gitea/issues/25782))
    -   Clarify "text-align" CSS helpers, fix clone button padding ([#&#8203;25763](https://github.com/go-gitea/gitea/issues/25763)) ([#&#8203;25764](https://github.com/go-gitea/gitea/issues/25764))
    -   Hide `add file` button for pull mirrors ([#&#8203;25748](https://github.com/go-gitea/gitea/issues/25748)) ([#&#8203;25751](https://github.com/go-gitea/gitea/issues/25751))
    -   Allow/fix review (approve/reject) of empty PRs ([#&#8203;25690](https://github.com/go-gitea/gitea/issues/25690)) ([#&#8203;25732](https://github.com/go-gitea/gitea/issues/25732))
    -   Fix tags header and pretty format numbers ([#&#8203;25624](https://github.com/go-gitea/gitea/issues/25624)) ([#&#8203;25694](https://github.com/go-gitea/gitea/issues/25694))
    -   Actions list enhancements ([#&#8203;25601](https://github.com/go-gitea/gitea/issues/25601)) ([#&#8203;25678](https://github.com/go-gitea/gitea/issues/25678))
    -   Fix show more for image on diff page ([#&#8203;25672](https://github.com/go-gitea/gitea/issues/25672)) ([#&#8203;25673](https://github.com/go-gitea/gitea/issues/25673))
    -   Prevent SVG shrinking ([#&#8203;25652](https://github.com/go-gitea/gitea/issues/25652)) ([#&#8203;25669](https://github.com/go-gitea/gitea/issues/25669))
    -   Fix UI misalignment on user setting page ([#&#8203;25629](https://github.com/go-gitea/gitea/issues/25629)) ([#&#8203;25656](https://github.com/go-gitea/gitea/issues/25656))
    -   Use css on labels ([#&#8203;25626](https://github.com/go-gitea/gitea/issues/25626)) ([#&#8203;25636](https://github.com/go-gitea/gitea/issues/25636))
    -   Read-only checkboxes don't appear and don't entirely act the way one might expect ([#&#8203;25573](https://github.com/go-gitea/gitea/issues/25573)) ([#&#8203;25602](https://github.com/go-gitea/gitea/issues/25602))
    -   Redirect to package after version deletion ([#&#8203;25594](https://github.com/go-gitea/gitea/issues/25594)) ([#&#8203;25599](https://github.com/go-gitea/gitea/issues/25599))
    -   Reduce table padding globally ([#&#8203;25568](https://github.com/go-gitea/gitea/issues/25568)) ([#&#8203;25577](https://github.com/go-gitea/gitea/issues/25577))
    -   Change `Regenerate Secret` button display ([#&#8203;25534](https://github.com/go-gitea/gitea/issues/25534)) ([#&#8203;25541](https://github.com/go-gitea/gitea/issues/25541))
    -   Fix rerun icon on action view component ([#&#8203;25531](https://github.com/go-gitea/gitea/issues/25531)) ([#&#8203;25536](https://github.com/go-gitea/gitea/issues/25536))
    -   Move some regexp out of functions ([#&#8203;25430](https://github.com/go-gitea/gitea/issues/25430)) ([#&#8203;25445](https://github.com/go-gitea/gitea/issues/25445))
    -   Diff page enhancements ([#&#8203;25398](https://github.com/go-gitea/gitea/issues/25398)) ([#&#8203;25437](https://github.com/go-gitea/gitea/issues/25437))
    -   Various UI fixes ([#&#8203;25264](https://github.com/go-gitea/gitea/issues/25264)) ([#&#8203;25431](https://github.com/go-gitea/gitea/issues/25431))
    -   Fix label list divider ([#&#8203;25312](https://github.com/go-gitea/gitea/issues/25312)) ([#&#8203;25372](https://github.com/go-gitea/gitea/issues/25372))
    -   Fix UI on mobile view ([#&#8203;25315](https://github.com/go-gitea/gitea/issues/25315)) ([#&#8203;25340](https://github.com/go-gitea/gitea/issues/25340))
    -   When viewing a file, hide the add button ([#&#8203;25320](https://github.com/go-gitea/gitea/issues/25320)) ([#&#8203;25339](https://github.com/go-gitea/gitea/issues/25339))
    -   Show if File is Executable ([#&#8203;25287](https://github.com/go-gitea/gitea/issues/25287)) ([#&#8203;25300](https://github.com/go-gitea/gitea/issues/25300))
    -   Fix edit OAuth application width ([#&#8203;25262](https://github.com/go-gitea/gitea/issues/25262)) ([#&#8203;25263](https://github.com/go-gitea/gitea/issues/25263))
    -   Use flex to align SVG and text ([#&#8203;25163](https://github.com/go-gitea/gitea/issues/25163)) ([#&#8203;25260](https://github.com/go-gitea/gitea/issues/25260))
    -   Revert overflow: overlay (revert [#&#8203;21850](https://github.com/go-gitea/gitea/issues/21850)) ([#&#8203;25231](https://github.com/go-gitea/gitea/issues/25231)) ([#&#8203;25239](https://github.com/go-gitea/gitea/issues/25239))
    -   Use inline SVG for built-in OAuth providers ([#&#8203;25171](https://github.com/go-gitea/gitea/issues/25171)) ([#&#8203;25234](https://github.com/go-gitea/gitea/issues/25234))
    -   Change access token UI to select dropdowns ([#&#8203;25109](https://github.com/go-gitea/gitea/issues/25109)) ([#&#8203;25230](https://github.com/go-gitea/gitea/issues/25230))
    -   Remove hacky patch for "safari emoji glitch fix"  ([#&#8203;25208](https://github.com/go-gitea/gitea/issues/25208)) ([#&#8203;25211](https://github.com/go-gitea/gitea/issues/25211))
    -   Minor arc-green color tweaks ([#&#8203;25175](https://github.com/go-gitea/gitea/issues/25175)) ([#&#8203;25205](https://github.com/go-gitea/gitea/issues/25205))
    -   Button and color enhancements ([#&#8203;24989](https://github.com/go-gitea/gitea/issues/24989)) ([#&#8203;25176](https://github.com/go-gitea/gitea/issues/25176))
    -   Fix mobile navbar and misc cleanups ([#&#8203;25134](https://github.com/go-gitea/gitea/issues/25134)) ([#&#8203;25169](https://github.com/go-gitea/gitea/issues/25169))
    -   Modify OAuth login ui and fix display name, iconurl related logic ([#&#8203;25030](https://github.com/go-gitea/gitea/issues/25030)) ([#&#8203;25161](https://github.com/go-gitea/gitea/issues/25161))
    -   Improve notification icon and navbar  ([#&#8203;25111](https://github.com/go-gitea/gitea/issues/25111)) ([#&#8203;25124](https://github.com/go-gitea/gitea/issues/25124))
    -   Add details summary for vertical menus in settings to allow toggling ([#&#8203;25098](https://github.com/go-gitea/gitea/issues/25098))
    -   Don't display `select all issues` checkbox when no issues are available ([#&#8203;25086](https://github.com/go-gitea/gitea/issues/25086))
    -   Use RepositoryList instead of \[]\*Repository ([#&#8203;25074](https://github.com/go-gitea/gitea/issues/25074))
    -   Add ability to set multiple redirect URIs in OAuth application UI ([#&#8203;25072](https://github.com/go-gitea/gitea/issues/25072))
    -   Use git command instead of the ini package to remove the `origin` remote ([#&#8203;25066](https://github.com/go-gitea/gitea/issues/25066))
    -   Remove cancel button from branch protection form ([#&#8203;25063](https://github.com/go-gitea/gitea/issues/25063))
    -   Show file tree by default ([#&#8203;25052](https://github.com/go-gitea/gitea/issues/25052))
    -   Add Progressbar to Milestone Page ([#&#8203;25050](https://github.com/go-gitea/gitea/issues/25050))
    -   Minor UI improvements: logo alignment, auth map editor, auth name display ([#&#8203;25043](https://github.com/go-gitea/gitea/issues/25043))
    -   Allow for PKCE flow without client secret + add docs ([#&#8203;25033](https://github.com/go-gitea/gitea/issues/25033))
    -   Refactor INI package (first step) ([#&#8203;25024](https://github.com/go-gitea/gitea/issues/25024))
    -   Various style fixes ([#&#8203;25008](https://github.com/go-gitea/gitea/issues/25008))
    -   Fix delete user account modal ([#&#8203;25004](https://github.com/go-gitea/gitea/issues/25004))
    -   Refactor diffFileInfo / DiffTreeStore ([#&#8203;24998](https://github.com/go-gitea/gitea/issues/24998))
    -   Add user level action runners ([#&#8203;24995](https://github.com/go-gitea/gitea/issues/24995))
    -   Rename NotifyPullReviewRequest to NotifyPullRequestReviewRequest ([#&#8203;24988](https://github.com/go-gitea/gitea/issues/24988))
    -   Add step start time to `ViewStepLog` ([#&#8203;24980](https://github.com/go-gitea/gitea/issues/24980))
    -   Add dark mode to API Docs ([#&#8203;24971](https://github.com/go-gitea/gitea/issues/24971))
    -   Display file mode for new file and file mode changes ([#&#8203;24966](https://github.com/go-gitea/gitea/issues/24966))
    -   Make the 500 page load themes ([#&#8203;24953](https://github.com/go-gitea/gitea/issues/24953))
    -   Show `bot` label next to username when rendering autor link if the user is a bot ([#&#8203;24943](https://github.com/go-gitea/gitea/issues/24943))
    -   Repo list improvements, fix bold helper classes ([#&#8203;24935](https://github.com/go-gitea/gitea/issues/24935))
    -   Improve queue and logger context ([#&#8203;24924](https://github.com/go-gitea/gitea/issues/24924))
    -   Improve RunMode / dev mode ([#&#8203;24886](https://github.com/go-gitea/gitea/issues/24886))
    -   Improve some Forms ([#&#8203;24878](https://github.com/go-gitea/gitea/issues/24878))
    -   Add show timestamp/seconds and fullscreen options to action page ([#&#8203;24876](https://github.com/go-gitea/gitea/issues/24876))
    -   Fix double border and adjust width for user profile page ([#&#8203;24870](https://github.com/go-gitea/gitea/issues/24870))
    -   Improve Actions CSS ([#&#8203;24864](https://github.com/go-gitea/gitea/issues/24864))
    -   Fix `@font-face` overrides ([#&#8203;24855](https://github.com/go-gitea/gitea/issues/24855))
    -   Remove `In your repositories` link in milestones dashboard ([#&#8203;24853](https://github.com/go-gitea/gitea/issues/24853))
    -   Fix missing yes/no in delete time log modal ([#&#8203;24851](https://github.com/go-gitea/gitea/issues/24851))
    -   Show new pull request button also on subdirectories and files ([#&#8203;24842](https://github.com/go-gitea/gitea/issues/24842))
    -   Make environment-to-ini  support loading key value from file ([#&#8203;24832](https://github.com/go-gitea/gitea/issues/24832))
    -   Support wildcard in email domain allow/block list ([#&#8203;24831](https://github.com/go-gitea/gitea/issues/24831))
    -   Use `CommentList` instead of `[]*Comment` ([#&#8203;24828](https://github.com/go-gitea/gitea/issues/24828))
    -   Add RTL rendering support to Markdown ([#&#8203;24816](https://github.com/go-gitea/gitea/issues/24816))
    -   Rework notifications list ([#&#8203;24812](https://github.com/go-gitea/gitea/issues/24812))
    -   Mute repo names in dashboard repo list ([#&#8203;24811](https://github.com/go-gitea/gitea/issues/24811))
    -   Fix max width and margin of comment box on conversation page ([#&#8203;24809](https://github.com/go-gitea/gitea/issues/24809))
    -   Some refactors for issues stats ([#&#8203;24793](https://github.com/go-gitea/gitea/issues/24793))
    -   Rework label colors ([#&#8203;24790](https://github.com/go-gitea/gitea/issues/24790))
    -   Fix OAuth login loading state ([#&#8203;24788](https://github.com/go-gitea/gitea/issues/24788))
    -   Remove duplicated issues options and some more refactors ([#&#8203;24787](https://github.com/go-gitea/gitea/issues/24787))
    -   Decouple the different contexts from each other ([#&#8203;24786](https://github.com/go-gitea/gitea/issues/24786))
    -   Remove background on user dashboard filter bar ([#&#8203;24779](https://github.com/go-gitea/gitea/issues/24779))
    -   Improve and fix bugs surrounding reactions ([#&#8203;24760](https://github.com/go-gitea/gitea/issues/24760))
    -   Make the color of zero-contribution-squares in the activity heatmap more subtle ([#&#8203;24758](https://github.com/go-gitea/gitea/issues/24758))
    -   Fix WEBP image copying ([#&#8203;24743](https://github.com/go-gitea/gitea/issues/24743))
    -   Rework OAuth login buttons, swap github logo to monocolor ([#&#8203;24740](https://github.com/go-gitea/gitea/issues/24740))
    -   Consolidate the two review boxes into one ([#&#8203;24738](https://github.com/go-gitea/gitea/issues/24738))
    -   Unification of registration fields order ([#&#8203;24737](https://github.com/go-gitea/gitea/issues/24737))
    -   Refactor Pull Mirror and fix out-of-sync bugs ([#&#8203;24732](https://github.com/go-gitea/gitea/issues/24732))
    -   Improvements for action detail page ([#&#8203;24718](https://github.com/go-gitea/gitea/issues/24718))
    -   Fix flash of unstyled content in action view page ([#&#8203;24712](https://github.com/go-gitea/gitea/issues/24712))
    -   Don't filter action runs based on state ([#&#8203;24711](https://github.com/go-gitea/gitea/issues/24711))
    -   Optimize actions list by removing an unnecessary `git` call ([#&#8203;24710](https://github.com/go-gitea/gitea/issues/24710))
    -   Support no label/assignee filter and batch clearing labels/assignees ([#&#8203;24707](https://github.com/go-gitea/gitea/issues/24707))
    -   Add icon support for safari ([#&#8203;24697](https://github.com/go-gitea/gitea/issues/24697))
    -   Use standard HTTP library to serve files ([#&#8203;24693](https://github.com/go-gitea/gitea/issues/24693))
    -   Improve button-ghost, remove tertiary button ([#&#8203;24692](https://github.com/go-gitea/gitea/issues/24692))
    -   Only hide tooltip tippy instances ([#&#8203;24688](https://github.com/go-gitea/gitea/issues/24688))
    -   Support migrating storage for actions log via command line ([#&#8203;24679](https://github.com/go-gitea/gitea/issues/24679))
    -   Remove highlight in repo list ([#&#8203;24675](https://github.com/go-gitea/gitea/issues/24675))
    -   Add markdown preview to Submit Review Textarea ([#&#8203;24672](https://github.com/go-gitea/gitea/issues/24672))
    -   Update pin and add pin-slash ([#&#8203;24669](https://github.com/go-gitea/gitea/issues/24669))
    -   Improve empty notifications display ([#&#8203;24668](https://github.com/go-gitea/gitea/issues/24668))
    -   Support SSH for go get ([#&#8203;24664](https://github.com/go-gitea/gitea/issues/24664))
    -   Improve avatar uploading / resizing / compressing, remove Fomantic card module ([#&#8203;24653](https://github.com/go-gitea/gitea/issues/24653))
    -   Only show one tippy at a time ([#&#8203;24648](https://github.com/go-gitea/gitea/issues/24648))
    -   Notification list enhancements, fix striped tables on dark theme ([#&#8203;24639](https://github.com/go-gitea/gitea/issues/24639))
    -   Improve queue & process & stacktrace ([#&#8203;24636](https://github.com/go-gitea/gitea/issues/24636))
    -   Use the type RefName for all the needed places and fix pull mirror sync bugs ([#&#8203;24634](https://github.com/go-gitea/gitea/issues/24634))
    -   Remove fluid on compare diff page ([#&#8203;24627](https://github.com/go-gitea/gitea/issues/24627))
    -   Add a tooltip to the job rerun button ([#&#8203;24617](https://github.com/go-gitea/gitea/issues/24617))
    -   Attach a tooltip to the action status icon ([#&#8203;24614](https://github.com/go-gitea/gitea/issues/24614))
    -   Make the actions control button look like an actual button ([#&#8203;24611](https://github.com/go-gitea/gitea/issues/24611))
    -   Remove unnecessary code ([#&#8203;24610](https://github.com/go-gitea/gitea/issues/24610))
    -   Make repo migration cancelable and fix various bugs ([#&#8203;24605](https://github.com/go-gitea/gitea/issues/24605))
    -   Improve updating Actions tasks ([#&#8203;24600](https://github.com/go-gitea/gitea/issues/24600))
    -   Attach a tooltip to the action control button ([#&#8203;24595](https://github.com/go-gitea/gitea/issues/24595))
    -   Make repository response support HTTP range request ([#&#8203;24592](https://github.com/go-gitea/gitea/issues/24592))
    -   Improve Gitea's web context, decouple "issue template" code into service package ([#&#8203;24590](https://github.com/go-gitea/gitea/issues/24590))
    -   Modify luminance calculation and extract related functions into single files ([#&#8203;24586](https://github.com/go-gitea/gitea/issues/24586))
    -   Simplify template helper functions ([#&#8203;24570](https://github.com/go-gitea/gitea/issues/24570))
    -   Split "modules/context.go" to separate files ([#&#8203;24569](https://github.com/go-gitea/gitea/issues/24569))
    -   Add org visibility label to non-organization's dashboard ([#&#8203;24558](https://github.com/go-gitea/gitea/issues/24558))
    -   Update LDAP filters to include both username and email address ([#&#8203;24547](https://github.com/go-gitea/gitea/issues/24547))
    -   Review fixes and enhancements ([#&#8203;24526](https://github.com/go-gitea/gitea/issues/24526))
    -   Display warning when user try to rename default branch ([#&#8203;24512](https://github.com/go-gitea/gitea/issues/24512))
    -   Fix color for transfer related buttons when having no permission to act ([#&#8203;24510](https://github.com/go-gitea/gitea/issues/24510))
    -   Rework button coloring, add focus and active colors ([#&#8203;24507](https://github.com/go-gitea/gitea/issues/24507))
    -   New webhook trigger for receiving Pull Request review requests ([#&#8203;24481](https://github.com/go-gitea/gitea/issues/24481))
    -   Add goto issue id function ([#&#8203;24479](https://github.com/go-gitea/gitea/issues/24479))
    -   Fix incorrect webhook time and use relative-time to display it ([#&#8203;24477](https://github.com/go-gitea/gitea/issues/24477))
    -   RSS icon fixes ([#&#8203;24476](https://github.com/go-gitea/gitea/issues/24476))
    -   Replace `N/A` with `-` everywhere ([#&#8203;24474](https://github.com/go-gitea/gitea/issues/24474))
    -   Pass 'not' to commit count ([#&#8203;24473](https://github.com/go-gitea/gitea/issues/24473))
    -   Enhance stylelint rule config, remove dead CSS ([#&#8203;24472](https://github.com/go-gitea/gitea/issues/24472))
    -   Remove `font-awesome` and fomantic `icon` module ([#&#8203;24471](https://github.com/go-gitea/gitea/issues/24471))
    -   Improve "new-menu" ([#&#8203;24465](https://github.com/go-gitea/gitea/issues/24465))
    -   Remove fomantic breadcrumb module ([#&#8203;24463](https://github.com/go-gitea/gitea/issues/24463))
    -   Improve template system and panic recovery ([#&#8203;24461](https://github.com/go-gitea/gitea/issues/24461))
    -   Make Issue/PR/projects more compact, misc CSS tweaks ([#&#8203;24459](https://github.com/go-gitea/gitea/issues/24459))
    -   Replace remaining fontawesome dropdown icons with SVG ([#&#8203;24455](https://github.com/go-gitea/gitea/issues/24455))
    -   Remove all direct references to font-awesome ([#&#8203;24448](https://github.com/go-gitea/gitea/issues/24448))
    -   Move links out of translation ([#&#8203;24446](https://github.com/go-gitea/gitea/issues/24446))
    -   Add `ui-monospace` and `SF Mono` to `--fonts-monospace` ([#&#8203;24442](https://github.com/go-gitea/gitea/issues/24442))
    -   Hide 'Mirror Settings' when unneeded, improve hints ([#&#8203;24433](https://github.com/go-gitea/gitea/issues/24433))
    -   Add "Updated" column for admin repositories list ([#&#8203;24429](https://github.com/go-gitea/gitea/issues/24429))
    -   Improve issue list filter ([#&#8203;24425](https://github.com/go-gitea/gitea/issues/24425))
    -   Rework header bar on issue, pull requests and milestone ([#&#8203;24420](https://github.com/go-gitea/gitea/issues/24420))
    -   Improve template helper ([#&#8203;24417](https://github.com/go-gitea/gitea/issues/24417))
    -   Make repo size style matches others (commits/branches/tags) ([#&#8203;24408](https://github.com/go-gitea/gitea/issues/24408))
    -   Support markdown editor for issue template ([#&#8203;24400](https://github.com/go-gitea/gitea/issues/24400))
    -   Improve commit date in commit graph ([#&#8203;24399](https://github.com/go-gitea/gitea/issues/24399))
    -   Start cleaning the messy ".ui.left / .ui.right", improve label list page, fix stackable menu ([#&#8203;24393](https://github.com/go-gitea/gitea/issues/24393))
    -   Merge setting.InitXXX into one function with options ([#&#8203;24389](https://github.com/go-gitea/gitea/issues/24389))
    -   Move `Rename branch` from repo settings page to the page of branches list ([#&#8203;24380](https://github.com/go-gitea/gitea/issues/24380))
    -   Improve protected branch setting page ([#&#8203;24379](https://github.com/go-gitea/gitea/issues/24379))
    -   Display 'Unknown' when runner.version is empty ([#&#8203;24378](https://github.com/go-gitea/gitea/issues/24378))
    -   Display owner of a runner as a tooltip instead of static text ([#&#8203;24377](https://github.com/go-gitea/gitea/issues/24377))
    -   Fix incorrect last online time in runner_edit.tmpl ([#&#8203;24376](https://github.com/go-gitea/gitea/issues/24376))
    -   Fix unclear `IsRepositoryExist` logic ([#&#8203;24374](https://github.com/go-gitea/gitea/issues/24374))
    -   Add custom helm repo name generated from url ([#&#8203;24363](https://github.com/go-gitea/gitea/issues/24363))
    -   Replace placeholders in licenses ([#&#8203;24354](https://github.com/go-gitea/gitea/issues/24354))
    -   Add rerun workflow button and refactor to use SVG octicons ([#&#8203;24350](https://github.com/go-gitea/gitea/issues/24350))
    -   Fix runner button height ([#&#8203;24338](https://github.com/go-gitea/gitea/issues/24338))
    -   Restore bold on repolist ([#&#8203;24337](https://github.com/go-gitea/gitea/issues/24337))
    -   Improve RSS ([#&#8203;24335](https://github.com/go-gitea/gitea/issues/24335))
    -   Refactor "route" related code, fix Safari cookie bug ([#&#8203;24330](https://github.com/go-gitea/gitea/issues/24330))
    -   Alert error message if open dependencies are included in the issues that try to batch close ([#&#8203;24329](https://github.com/go-gitea/gitea/issues/24329))
    -   Add missed column title in runner management page ([#&#8203;24328](https://github.com/go-gitea/gitea/issues/24328))
    -   Automatically select the org when click create repo from org dashboard ([#&#8203;24325](https://github.com/go-gitea/gitea/issues/24325))
    -   Modify width of ui container, fine tune css for settings pages and org header ([#&#8203;24315](https://github.com/go-gitea/gitea/issues/24315))
    -   Fix config list overflow and layout ([#&#8203;24312](https://github.com/go-gitea/gitea/issues/24312))
    -   Improve some modal action buttons ([#&#8203;24289](https://github.com/go-gitea/gitea/issues/24289))
    -   Move code from module to service ([#&#8203;24287](https://github.com/go-gitea/gitea/issues/24287))
    -   Sort users and orgs on explore by recency by default ([#&#8203;24279](https://github.com/go-gitea/gitea/issues/24279))
    -   Allow using localized absolute date times within phrases with place holders and localize issue due date events ([#&#8203;24275](https://github.com/go-gitea/gitea/issues/24275))
    -   Show workflow config error on file view also ([#&#8203;24267](https://github.com/go-gitea/gitea/issues/24267))
    -   Improve template helper functions: string/slice ([#&#8203;24266](https://github.com/go-gitea/gitea/issues/24266))
    -   Use more specific test methods ([#&#8203;24265](https://github.com/go-gitea/gitea/issues/24265))
    -   Add `DumpVar` helper function to help debugging templates ([#&#8203;24262](https://github.com/go-gitea/gitea/issues/24262))
    -   Limit avatar upload to valid image files ([#&#8203;24258](https://github.com/go-gitea/gitea/issues/24258))
    -   Improve emoji and mention matching ([#&#8203;24255](https://github.com/go-gitea/gitea/issues/24255))
    -   Change to vertical navbar layout for secondary navbar for repo/user/admin settings ([#&#8203;24246](https://github.com/go-gitea/gitea/issues/24246))
    -   Refactor config provider ([#&#8203;24245](https://github.com/go-gitea/gitea/issues/24245))
    -   Improve test logger ([#&#8203;24235](https://github.com/go-gitea/gitea/issues/24235))
    -   Default show closed actions list if all actions was closed ([#&#8203;24234](https://github.com/go-gitea/gitea/issues/24234))
    -   Add missing badges in user profile for /projects and /packages ([#&#8203;24232](https://github.com/go-gitea/gitea/issues/24232))
    -   Add repository counter badge to repository tab ([#&#8203;24205](https://github.com/go-gitea/gitea/issues/24205))
    -   Move secrets and runners settings to actions settings ([#&#8203;24200](https://github.com/go-gitea/gitea/issues/24200))
    -   Require at least one unit to be enabled ([#&#8203;24189](https://github.com/go-gitea/gitea/issues/24189))
    -   Use same action status svg icons on actions list as on action page ([#&#8203;24178](https://github.com/go-gitea/gitea/issues/24178))
    -   Use secondary pointing menu for tabs on user/organization home page ([#&#8203;24162](https://github.com/go-gitea/gitea/issues/24162))
    -   Improve Wiki TOC ([#&#8203;24137](https://github.com/go-gitea/gitea/issues/24137))
    -   Refactor locale number ([#&#8203;24134](https://github.com/go-gitea/gitea/issues/24134))
    -   Localize activity heatmap (except tooltip) ([#&#8203;24131](https://github.com/go-gitea/gitea/issues/24131))
    -   Fix duplicate modals when clicking on "remove all" repository button ([#&#8203;24129](https://github.com/go-gitea/gitea/issues/24129))
    -   Add runner check in repo action page ([#&#8203;24124](https://github.com/go-gitea/gitea/issues/24124))
    -   Support triggering workflows by wiki related events ([#&#8203;24119](https://github.com/go-gitea/gitea/issues/24119))
    -   Refactor cookie ([#&#8203;24107](https://github.com/go-gitea/gitea/issues/24107))
    -   Remove untranslatable `on_date` key ([#&#8203;24106](https://github.com/go-gitea/gitea/issues/24106))
    -   Refactor delete_modal_actions template and use it for project column related actions ([#&#8203;24097](https://github.com/go-gitea/gitea/issues/24097))
    -   Improve git log for debugging ([#&#8203;24095](https://github.com/go-gitea/gitea/issues/24095))
    -   Add option to search for users is active join a team ([#&#8203;24093](https://github.com/go-gitea/gitea/issues/24093))
    -   Add PDF rendering via PDFObject ([#&#8203;24086](https://github.com/go-gitea/gitea/issues/24086))
    -   Refactor web route ([#&#8203;24080](https://github.com/go-gitea/gitea/issues/24080))
    -   Make more functions use ctx instead of db.DefaultContext ([#&#8203;24068](https://github.com/go-gitea/gitea/issues/24068))
    -   Make HTML template functions support context ([#&#8203;24056](https://github.com/go-gitea/gitea/issues/24056))
    -   Refactor rename user and rename organization ([#&#8203;24052](https://github.com/go-gitea/gitea/issues/24052))
    -   Localize milestone related time strings ([#&#8203;24051](https://github.com/go-gitea/gitea/issues/24051))
    -   Expand selected file when clicking file tree ([#&#8203;24041](https://github.com/go-gitea/gitea/issues/24041))
    -   Add popup to hashed comments/pull requests/issues in file editing/adding preview tab ([#&#8203;24040](https://github.com/go-gitea/gitea/issues/24040))
    -   Add placeholder and aria attributes to release and wiki edit page ([#&#8203;24031](https://github.com/go-gitea/gitea/issues/24031))
    -   Add new user types `reserved`, `bot`, and `remote` ([#&#8203;24026](https://github.com/go-gitea/gitea/issues/24026))
    -   Allow adding SSH keys even if SSH server is disabled ([#&#8203;24025](https://github.com/go-gitea/gitea/issues/24025))
    -   Use a general approach to access custom/static/builtin assets ([#&#8203;24022](https://github.com/go-gitea/gitea/issues/24022))
    -   Update github.com/google/go-github to v52 ([#&#8203;24004](https://github.com/go-gitea/gitea/issues/24004))
    -   Replace tribute with text-expander-element for textarea ([#&#8203;23985](https://github.com/go-gitea/gitea/issues/23985))
    -   Group template helper functions, remove `Printf`, improve template error messages ([#&#8203;23982](https://github.com/go-gitea/gitea/issues/23982))
    -   Drop "unrolled/render" package ([#&#8203;23965](https://github.com/go-gitea/gitea/issues/23965))
    -   Add job.duration in web ui ([#&#8203;23963](https://github.com/go-gitea/gitea/issues/23963))
    -   Tweak pull request branch delete ui ([#&#8203;23951](https://github.com/go-gitea/gitea/issues/23951))
    -   Merge template functions "dict/Dict/mergeinto" ([#&#8203;23932](https://github.com/go-gitea/gitea/issues/23932))
    -   Use a general Eval function for expressions in templates. ([#&#8203;23927](https://github.com/go-gitea/gitea/issues/23927))
    -   Clean template/helper.go ([#&#8203;23922](https://github.com/go-gitea/gitea/issues/23922))
    -   Actions: Use default branch as ref when a branch/tag delete occurs ([#&#8203;23910](https://github.com/go-gitea/gitea/issues/23910))
    -   Add tooltips for MD editor buttons and add `muted` class for buttons ([#&#8203;23896](https://github.com/go-gitea/gitea/issues/23896))
    -   Improve markdown editor: width, height, preferred ([#&#8203;23895](https://github.com/go-gitea/gitea/issues/23895))
    -   Make Release Download URLs predictable ([#&#8203;23891](https://github.com/go-gitea/gitea/issues/23891))
    -   Remove fomantic ".link" selector and styles ([#&#8203;23888](https://github.com/go-gitea/gitea/issues/23888))
    -   Added close/open button to details page of milestone ([#&#8203;23877](https://github.com/go-gitea/gitea/issues/23877))
    -   Introduce GitHub markdown editor, keep EasyMDE as fallback ([#&#8203;23876](https://github.com/go-gitea/gitea/issues/23876))
    -   Introduce GiteaLocaleNumber custom element to handle number localization on pages. ([#&#8203;23861](https://github.com/go-gitea/gitea/issues/23861))
    -   Make first section on home page full width ([#&#8203;23854](https://github.com/go-gitea/gitea/issues/23854))
    -   Use different SVG for pending and running actions ([#&#8203;23836](https://github.com/go-gitea/gitea/issues/23836))
    -   Display image size for multiarch container images ([#&#8203;23821](https://github.com/go-gitea/gitea/issues/23821))
    -   Improve action log display with control chars ([#&#8203;23820](https://github.com/go-gitea/gitea/issues/23820))
    -   Fix dropdown direction behavior ([#&#8203;23806](https://github.com/go-gitea/gitea/issues/23806))
    -   Fix incorrect/Improve error handle in edit user page ([#&#8203;23805](https://github.com/go-gitea/gitea/issues/23805))
    -   Use clippie module to copy to clipboard ([#&#8203;23801](https://github.com/go-gitea/gitea/issues/23801))
    -   Make minio package support legacy MD5 checksum ([#&#8203;23768](https://github.com/go-gitea/gitea/issues/23768))
    -   Add ONLY_SHOW_RELEVANT_REPOS back, fix explore page bug, make code more strict ([#&#8203;23766](https://github.com/go-gitea/gitea/issues/23766))
    -   Refactor docs ([#&#8203;23752](https://github.com/go-gitea/gitea/issues/23752))
    -   Fix markup background, improve wiki rendering ([#&#8203;23750](https://github.com/go-gitea/gitea/issues/23750))
    -   Make label templates have consistent behavior and priority ([#&#8203;23749](https://github.com/go-gitea/gitea/issues/23749))
    -   Improve LoadUnitConfig to handle invalid or duplicate units ([#&#8203;23736](https://github.com/go-gitea/gitea/issues/23736))
    -   Append `(comment)` when a link points at a comment rather than the whole issue ([#&#8203;23734](https://github.com/go-gitea/gitea/issues/23734))
    -   Clean some legacy files and move some build files ([#&#8203;23699](https://github.com/go-gitea/gitea/issues/23699))
    -   Refactor repo commit list ([#&#8203;23690](https://github.com/go-gitea/gitea/issues/23690))
    -   Refactor internal API for git commands, use meaningful messages instead of "Internal Server Error" ([#&#8203;23687](https://github.com/go-gitea/gitea/issues/23687))
    -   Add aria attributes to interactive time tooltips. ([#&#8203;23661](https://github.com/go-gitea/gitea/issues/23661))
    -   Fix long project name display in issue list and in related dropdown ([#&#8203;23653](https://github.com/go-gitea/gitea/issues/23653))
    -   Use data-tooltip-content for tippy tooltip ([#&#8203;23649](https://github.com/go-gitea/gitea/issues/23649))
    -   Fix new issue/pull request btn margin when it is next to sort ([#&#8203;23647](https://github.com/go-gitea/gitea/issues/23647))
    -   Fine tune more downdrop settings, use SVG for labels, improve Repo Topic Edit form ([#&#8203;23626](https://github.com/go-gitea/gitea/issues/23626))
    -   Allow new file and edit file preview if it has editable extension ([#&#8203;23624](https://github.com/go-gitea/gitea/issues/23624))
    -   Replace a few fontawesome icons with svg ([#&#8203;23602](https://github.com/go-gitea/gitea/issues/23602))
    -   `Publish Review` buttons should indicate why they are disabled ([#&#8203;23598](https://github.com/go-gitea/gitea/issues/23598))
    -   Convert issue list checkboxes to native ([#&#8203;23596](https://github.com/go-gitea/gitea/issues/23596))
    -   Set opaque background on markup and images ([#&#8203;23578](https://github.com/go-gitea/gitea/issues/23578))
    -   Use a general approach to show tooltip, fix temporary tooltip bug ([#&#8203;23574](https://github.com/go-gitea/gitea/issues/23574))
    -   Improve `<SvgIcon>` to make it output `svg` node and optimize performance ([#&#8203;23570](https://github.com/go-gitea/gitea/issues/23570))
    -   Enable color for consistency checks diffs ([#&#8203;23563](https://github.com/go-gitea/gitea/issues/23563))
    -   Fix dropdown icon misalignment when using fomantic icon ([#&#8203;23558](https://github.com/go-gitea/gitea/issues/23558))
    -   Decouple the issue-template code from comment_tab.tmpl ([#&#8203;23556](https://github.com/go-gitea/gitea/issues/23556))
    -   Remove `id="comment-form"` dead code, fix tag ([#&#8203;23555](https://github.com/go-gitea/gitea/issues/23555))
    -   Diff improvements ([#&#8203;23553](https://github.com/go-gitea/gitea/issues/23553))
    -   Sort Python package descriptors by version to mimic PyPI format ([#&#8203;23550](https://github.com/go-gitea/gitea/issues/23550))
    -   Use a general approch to improve a11y for all checkboxes and dropdowns. ([#&#8203;23542](https://github.com/go-gitea/gitea/issues/23542))
    -   Fix long name ui issues and label ui issue ([#&#8203;23541](https://github.com/go-gitea/gitea/issues/23541))
    -   Return `repository` in npm package metadata endpoint ([#&#8203;23539](https://github.com/go-gitea/gitea/issues/23539))
    -   Use `project.IconName` instead of repeated unreadable `if-else` chains ([#&#8203;23538](https://github.com/go-gitea/gitea/issues/23538))
    -   Remove stars in dashboard repo list ([#&#8203;23530](https://github.com/go-gitea/gitea/issues/23530))
    -   Update mini-css-extract-plugin, remove postcss ([#&#8203;23520](https://github.com/go-gitea/gitea/issues/23520))
    -   Change `Close` to either `Close issue` or `Close pull request` ([#&#8203;23506](https://github.com/go-gitea/gitea/issues/23506))
    -   Fix theme-auto loading ([#&#8203;23504](https://github.com/go-gitea/gitea/issues/23504))
    -   Fix tags sort by creation time (descending) on branch/tag dropdowns ([#&#8203;23491](https://github.com/go-gitea/gitea/issues/23491))
    -   Display the version of runner in the runner list ([#&#8203;23490](https://github.com/go-gitea/gitea/issues/23490))
    -   Replace Less with CSS ([#&#8203;23481](https://github.com/go-gitea/gitea/issues/23481))
    -   Fix `.locale.Tr` function not found in delete modal ([#&#8203;23468](https://github.com/go-gitea/gitea/issues/23468))
    -   Allow both fullname and username search when `DEFAULT_SHOW_FULL_NAME` is true ([#&#8203;23463](https://github.com/go-gitea/gitea/issues/23463))
    -   Add project type descriptions in issue badge and improve project icons ([#&#8203;23437](https://github.com/go-gitea/gitea/issues/23437))
    -   Use context for `RepositoryList.LoadAttributes` ([#&#8203;23435](https://github.com/go-gitea/gitea/issues/23435))
    -   Refactor branch/tag selector to Vue SFC ([#&#8203;23421](https://github.com/go-gitea/gitea/issues/23421))
    -   Keep (add if not existing) xmlns attribute for generated SVG images ([#&#8203;23410](https://github.com/go-gitea/gitea/issues/23410))
    -   Refactor dashboard repo list to Vue SFC ([#&#8203;23405](https://github.com/go-gitea/gitea/issues/23405))
    -   Add workflow error notification in ui ([#&#8203;23404](https://github.com/go-gitea/gitea/issues/23404))
    -   Refactor branch/tag selector dropdown (first step) ([#&#8203;23394](https://github.com/go-gitea/gitea/issues/23394))
    -   Reduce duplicate and useless code in options ([#&#8203;23369](https://github.com/go-gitea/gitea/issues/23369))
    -   Convert `<div class="button">` to `<button class="button">` ([#&#8203;23337](https://github.com/go-gitea/gitea/issues/23337))
    -   Add path prefix to ObjectStorage.Iterator ([#&#8203;23332](https://github.com/go-gitea/gitea/issues/23332))
    -   Improve cache context ([#&#8203;23330](https://github.com/go-gitea/gitea/issues/23330))
    -   Move pidfile creation from setting to web cmd package ([#&#8203;23285](https://github.com/go-gitea/gitea/issues/23285))
    -   Fix tags view ([#&#8203;23243](https://github.com/go-gitea/gitea/issues/23243))
    -   Add commit info in action page ([#&#8203;23210](https://github.com/go-gitea/gitea/issues/23210))
    -   Support paste treepath when creating a new file or updating the file name ([#&#8203;23209](https://github.com/go-gitea/gitea/issues/23209))
    -   Allow skipping forks and mirrors from being indexed ([#&#8203;23187](https://github.com/go-gitea/gitea/issues/23187))
    -   Use context parameter in services/repository ([#&#8203;23186](https://github.com/go-gitea/gitea/issues/23186))
    -   Hide target selector if tag exists when creating new release ([#&#8203;23171](https://github.com/go-gitea/gitea/issues/23171))
    -   Improve FindProjects ([#&#8203;23085](https://github.com/go-gitea/gitea/issues/23085))
    -   Clean Path in Options ([#&#8203;23006](https://github.com/go-gitea/gitea/issues/23006))
    -   Add margin top to the top of branches ([#&#8203;23002](https://github.com/go-gitea/gitea/issues/23002))
    -   Remove unnecessary and incorrect `find('.menu').toggle()` ([#&#8203;22987](https://github.com/go-gitea/gitea/issues/22987))
    -   Improve GetBoards and getDefaultBoard ([#&#8203;22981](https://github.com/go-gitea/gitea/issues/22981))
    -   Improve squash merge commit author and co-author with private emails ([#&#8203;22977](https://github.com/go-gitea/gitea/issues/22977))
    -   Add --quiet option to gitea dump ([#&#8203;22969](https://github.com/go-gitea/gitea/issues/22969))
    -   Add pagination for dashboard and user activity feeds ([#&#8203;22937](https://github.com/go-gitea/gitea/issues/22937))
    -   Handle files starting with colons in WalkGitLog ([#&#8203;22935](https://github.com/go-gitea/gitea/issues/22935))
    -   Add "Reviewed by you" filter for pull requests ([#&#8203;22927](https://github.com/go-gitea/gitea/issues/22927))
    -   Parse external request id from request headers, and print it in access log ([#&#8203;22906](https://github.com/go-gitea/gitea/issues/22906))
    -   Replace `repo.namedBlob` by `git.TreeEntry`. ([#&#8203;22898](https://github.com/go-gitea/gitea/issues/22898))
    -   Pull Requests: add button to compare force pushed commits ([#&#8203;22857](https://github.com/go-gitea/gitea/issues/22857))
    -   Fix pull request update showing too many commits with multiple branches ([#&#8203;22856](https://github.com/go-gitea/gitea/issues/22856))
    -   Require approval to run actions for fork pull request ([#&#8203;22803](https://github.com/go-gitea/gitea/issues/22803))
    -   Projects: rename Board to Column in interface and improve consistency ([#&#8203;22767](https://github.com/go-gitea/gitea/issues/22767))
    -   Add user visibility in dashboard navbar ([#&#8203;22747](https://github.com/go-gitea/gitea/issues/22747))
    -   Add .livemd as a markdown extension ([#&#8203;22730](https://github.com/go-gitea/gitea/issues/22730))
    -   Clean up WebAuthn javascript code and remove JQuery code ([#&#8203;22697](https://github.com/go-gitea/gitea/issues/22697))
    -   Merge message template support for rebase without merge commit ([#&#8203;22669](https://github.com/go-gitea/gitea/issues/22669))
    -   Show editorconfig warnings when viewing a malformed editorconfig ([#&#8203;21257](https://github.com/go-gitea/gitea/issues/21257))
    -   Npm packages: set repository link based on the url in package.json ([#&#8203;20379](https://github.com/go-gitea/gitea/issues/20379))
-   BUGFIXES
    -   Add support for different Maven POM encoding ([#&#8203;25873](https://github.com/go-gitea/gitea/issues/25873)) ([#&#8203;25890](https://github.com/go-gitea/gitea/issues/25890))
    -   Fix incorrect repo url when changed the case of ownername ([#&#8203;25733](https://github.com/go-gitea/gitea/issues/25733)) ([#&#8203;25881](https://github.com/go-gitea/gitea/issues/25881))
    -   Fix empty project displayed in issue sidebar ([#&#8203;25802](https://github.com/go-gitea/gitea/issues/25802)) ([#&#8203;25854](https://github.com/go-gitea/gitea/issues/25854))
    -   Show correct SSL Mode on "install page" ([#&#8203;25818](https://github.com/go-gitea/gitea/issues/25818)) ([#&#8203;25838](https://github.com/go-gitea/gitea/issues/25838))
    -   Fix the error message when the token is incorrect ([#&#8203;25701](https://github.com/go-gitea/gitea/issues/25701)) ([#&#8203;25836](https://github.com/go-gitea/gitea/issues/25836))
    -   Fix incorrect oldest sort in project list ([#&#8203;25806](https://github.com/go-gitea/gitea/issues/25806)) ([#&#8203;25835](https://github.com/go-gitea/gitea/issues/25835))
    -   For API attachments, use API URL ([#&#8203;25639](https://github.com/go-gitea/gitea/issues/25639)) ([#&#8203;25814](https://github.com/go-gitea/gitea/issues/25814))
    -   Avoid amending the Rebase and Fast-forward merge if there is no message template ([#&#8203;25779](https://github.com/go-gitea/gitea/issues/25779)) ([#&#8203;25809](https://github.com/go-gitea/gitea/issues/25809))
    -   Make "install page" respect environment config ([#&#8203;25648](https://github.com/go-gitea/gitea/issues/25648)) ([#&#8203;25799](https://github.com/go-gitea/gitea/issues/25799))
    -   Fix activity type match in `matchPullRequestEvent` ([#&#8203;25746](https://github.com/go-gitea/gitea/issues/25746)) ([#&#8203;25796](https://github.com/go-gitea/gitea/issues/25796))
    -   Fix notification list bugs ([#&#8203;25781](https://github.com/go-gitea/gitea/issues/25781)) ([#&#8203;25787](https://github.com/go-gitea/gitea/issues/25787))
    -   Revert package access change from [#&#8203;23879](https://github.com/go-gitea/gitea/issues/23879) ([#&#8203;25707](https://github.com/go-gitea/gitea/issues/25707)) ([#&#8203;25785](https://github.com/go-gitea/gitea/issues/25785))
    -   Check `ctx.Written()` for `GetActionIssue` ([#&#8203;25698](https://github.com/go-gitea/gitea/issues/25698)) ([#&#8203;25711](https://github.com/go-gitea/gitea/issues/25711))
    -   Fix position of org follow button ([#&#8203;25688](https://github.com/go-gitea/gitea/issues/25688)) ([#&#8203;25692](https://github.com/go-gitea/gitea/issues/25692))
    -   Fix the nil pointer when assigning issues to projects ([#&#8203;25665](https://github.com/go-gitea/gitea/issues/25665)) ([#&#8203;25677](https://github.com/go-gitea/gitea/issues/25677))
    -   Log the real reason when authentication fails (but don't show the user) ([#&#8203;25414](https://github.com/go-gitea/gitea/issues/25414)) ([#&#8203;25660](https://github.com/go-gitea/gitea/issues/25660))
    -   Fix bug when change user name ([#&#8203;25637](https://github.com/go-gitea/gitea/issues/25637)) ([#&#8203;25646](https://github.com/go-gitea/gitea/issues/25646))
    -   Make "cancel" buttons have proper type in modal forms ([#&#8203;25618](https://github.com/go-gitea/gitea/issues/25618)) ([#&#8203;25641](https://github.com/go-gitea/gitea/issues/25641))
    -   Use AfterCommitId to get commit for Viewed functionality ([#&#8203;25529](https://github.com/go-gitea/gitea/issues/25529)) ([#&#8203;25612](https://github.com/go-gitea/gitea/issues/25612))
    -   Fix bug of branches API with tests([#&#8203;25578](https://github.com/go-gitea/gitea/issues/25578)) ([#&#8203;25579](https://github.com/go-gitea/gitea/issues/25579))
    -   Fix content holes in Actions task logs file ([#&#8203;25560](https://github.com/go-gitea/gitea/issues/25560)) ([#&#8203;25566](https://github.com/go-gitea/gitea/issues/25566))
    -   Fix bugs related to notification endpoints ([#&#8203;25548](https://github.com/go-gitea/gitea/issues/25548)) ([#&#8203;25562](https://github.com/go-gitea/gitea/issues/25562))
    -   Add Adopt repository event and handler ([#&#8203;25497](https://github.com/go-gitea/gitea/issues/25497)) ([#&#8203;25518](https://github.com/go-gitea/gitea/issues/25518))
    -   Improve wiki sidebar and TOC ([#&#8203;25460](https://github.com/go-gitea/gitea/issues/25460)) ([#&#8203;25477](https://github.com/go-gitea/gitea/issues/25477))
    -   Make "dismiss" content shown correctly ([#&#8203;25461](https://github.com/go-gitea/gitea/issues/25461)) ([#&#8203;25465](https://github.com/go-gitea/gitea/issues/25465))
    -   Change default email domain for LDAP users ([#&#8203;25425](https://github.com/go-gitea/gitea/issues/25425)) ([#&#8203;25434](https://github.com/go-gitea/gitea/issues/25434))
    -   Fix missing commit message body when the message has leading newlines ([#&#8203;25418](https://github.com/go-gitea/gitea/issues/25418)) ([#&#8203;25422](https://github.com/go-gitea/gitea/issues/25422))
    -   Fix LDAP sync when Username Attribute is empty ([#&#8203;25278](https://github.com/go-gitea/gitea/issues/25278)) ([#&#8203;25379](https://github.com/go-gitea/gitea/issues/25379))
    -   Fetch all git data for embedding correct version in docker image ([#&#8203;25361](https://github.com/go-gitea/gitea/issues/25361)) ([#&#8203;25373](https://github.com/go-gitea/gitea/issues/25373))
    -   Fix incorrect actions ref_name ([#&#8203;25358](https://github.com/go-gitea/gitea/issues/25358)) ([#&#8203;25367](https://github.com/go-gitea/gitea/issues/25367))
    -   Write absolute AppDataPath to app.ini when installing ([#&#8203;25331](https://github.com/go-gitea/gitea/issues/25331)) ([#&#8203;25347](https://github.com/go-gitea/gitea/issues/25347))
    -   Fix incorrect config argument position for builtin SSH server ([#&#8203;25341](https://github.com/go-gitea/gitea/issues/25341))
    -   Remove EasyMDE focus outline on text ([#&#8203;25328](https://github.com/go-gitea/gitea/issues/25328)) ([#&#8203;25332](https://github.com/go-gitea/gitea/issues/25332))
    -   Fix displayed RPM repo url ([#&#8203;25310](https://github.com/go-gitea/gitea/issues/25310)) ([#&#8203;25313](https://github.com/go-gitea/gitea/issues/25313))
    -   Fix index generation parallelly failure ([#&#8203;25235](https://github.com/go-gitea/gitea/issues/25235)) ([#&#8203;25269](https://github.com/go-gitea/gitea/issues/25269))
    -   Fix panic when migrating a repo from GitHub with issues ([#&#8203;25246](https://github.com/go-gitea/gitea/issues/25246)) ([#&#8203;25247](https://github.com/go-gitea/gitea/issues/25247))
    -   Fix task list checkbox toggle to work with YAML front matter ([#&#8203;25184](https://github.com/go-gitea/gitea/issues/25184)) ([#&#8203;25227](https://github.com/go-gitea/gitea/issues/25227))
    -   Fix compatible for webhook ref type ([#&#8203;25195](https://github.com/go-gitea/gitea/issues/25195)) ([#&#8203;25223](https://gi…
@go-gitea go-gitea locked as resolved and limited conversation to collaborators Aug 23, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. modifies/api This PR adds API routes or modifies them size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. type/feature Completely new functionality. Can only be merged if feature freeze is not active.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Proposal: Pin Issues
10 participants