From bd82d8974e84eeff8072c962c7253db3f4128f69 Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Fri, 14 Jul 2023 11:39:15 +0200 Subject: [PATCH 01/15] Add support for different Maven POM encoding (#25873) Fixes #25853 - Maven POM files aren't always UTF-8 encoded. - Reject the upload of unparsable POM files --- modules/packages/maven/metadata.go | 7 ++++++- modules/packages/maven/metadata_test.go | 17 +++++++++++++++++ routers/api/packages/maven/maven.go | 8 +++++++- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/modules/packages/maven/metadata.go b/modules/packages/maven/metadata.go index be057c8c07b57..42aa250718d37 100644 --- a/modules/packages/maven/metadata.go +++ b/modules/packages/maven/metadata.go @@ -8,6 +8,8 @@ import ( "io" "code.gitea.io/gitea/modules/validation" + + "golang.org/x/net/html/charset" ) // Metadata represents the metadata of a Maven package @@ -52,7 +54,10 @@ type pomStruct struct { // ParsePackageMetaData parses the metadata of a pom file func ParsePackageMetaData(r io.Reader) (*Metadata, error) { var pom pomStruct - if err := xml.NewDecoder(r).Decode(&pom); err != nil { + + dec := xml.NewDecoder(r) + dec.CharsetReader = charset.NewReaderLabel + if err := dec.Decode(&pom); err != nil { return nil, err } diff --git a/modules/packages/maven/metadata_test.go b/modules/packages/maven/metadata_test.go index f4bc84268e7eb..e675467730cc1 100644 --- a/modules/packages/maven/metadata_test.go +++ b/modules/packages/maven/metadata_test.go @@ -8,6 +8,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "golang.org/x/text/encoding/charmap" ) const ( @@ -69,4 +70,20 @@ func TestParsePackageMetaData(t *testing.T) { assert.Equal(t, dependencyArtifactID, m.Dependencies[0].ArtifactID) assert.Equal(t, dependencyVersion, m.Dependencies[0].Version) }) + + t.Run("Encoding", func(t *testing.T) { + // UTF-8 is default but the metadata could be encoded differently + pomContent8859_1, err := charmap.ISO8859_1.NewEncoder().String( + strings.ReplaceAll( + pomContent, + ``, + ``, + ), + ) + assert.NoError(t, err) + + m, err := ParsePackageMetaData(strings.NewReader(pomContent8859_1)) + assert.NoError(t, err) + assert.NotNil(t, m) + }) } diff --git a/routers/api/packages/maven/maven.go b/routers/api/packages/maven/maven.go index 84e3324367814..6328e226ab615 100644 --- a/routers/api/packages/maven/maven.go +++ b/routers/api/packages/maven/maven.go @@ -49,6 +49,11 @@ var ( func apiError(ctx *context.Context, status int, obj any) { helper.LogAndProcessError(ctx, status, obj, func(message string) { + // The maven client does not present the error message to the user. Log it for users with access to server logs. + if status == http.StatusBadRequest || status == http.StatusInternalServerError { + log.Error(message) + } + ctx.PlainText(status, message) }) } @@ -320,7 +325,8 @@ func UploadPackageFile(ctx *context.Context) { var err error pvci.Metadata, err = maven_module.ParsePackageMetaData(buf) if err != nil { - log.Error("Error parsing package metadata: %v", err) + apiError(ctx, http.StatusBadRequest, err) + return } if pvci.Metadata != nil { From faf28b28233b18289e0a398ea22265bb87b1e1b5 Mon Sep 17 00:00:00 2001 From: GiteaBot Date: Sat, 15 Jul 2023 00:29:55 +0000 Subject: [PATCH 02/15] [skip ci] Updated translations via Crowdin --- options/locale/locale_de-DE.ini | 121 +++++++++++++++++++++++++++++++- 1 file changed, 118 insertions(+), 3 deletions(-) diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini index a085bbbbb2dfb..ea0996469782f 100644 --- a/options/locale/locale_de-DE.ini +++ b/options/locale/locale_de-DE.ini @@ -2205,8 +2205,8 @@ settings.protect_enable_push=Push aktivieren settings.protect_enable_push_desc=Jeder, der Schreibzugriff hat, darf in diesen Branch Pushen (aber kein Force-Push). settings.protect_enable_merge=Merge aktivieren settings.protect_enable_merge_desc=Jeder mit Schreibzugriff darf die Pull-Requests in diesen Branch mergen. -settings.protect_whitelist_committers=Schütze gewhitlistede Commiter -settings.protect_whitelist_committers_desc=Jeder, der auf der Whiteliste steht, darf in diesen Branch pushen (aber kein Force-Push). +settings.protect_whitelist_committers=Schütze gewhitelistete Commiter +settings.protect_whitelist_committers_desc=Jeder, der auf der Whitelist steht, darf in diesen Branch pushen (aber kein Force-Push). settings.protect_whitelist_deploy_keys=Deploy-Schlüssel mit Schreibzugriff zum Pushen whitelisten. settings.protect_whitelist_users=Nutzer, die pushen dürfen: settings.protect_whitelist_search_users=Benutzer suchen… @@ -2925,6 +2925,7 @@ auths.deletion_success=Die Authentifizierungsquelle „%s“ wurde gelöscht. auths.login_source_exist=Die Authentifizierungsquelle "%s" existiert bereits. auths.login_source_of_type_exist=Eine Authentifizierungart dieses Typs existiert bereits. auths.unable_to_initialize_openid=OpenID Connect Provider konnte nicht initialisiert werden: %s +auths.invalid_openIdConnectAutoDiscoveryURL=Ungültige Auto-Discovery-URL (dies muss eine gültige URL sein, die mit http:// oder https:// beginnt) config.server_config=Serverkonfiguration config.app_name=Seitentitel @@ -3095,6 +3096,7 @@ monitor.queue.numberinqueue=Nummer in der Warteschlange monitor.queue.review=Konfiguration überprüfen monitor.queue.review_add=Worker hinzufügen/prüfen monitor.queue.settings.title=Pool-Einstellungen +monitor.queue.settings.desc=Pools wachsen dynamisch basierend auf der Blockierung der Arbeitswarteschlange. monitor.queue.settings.maxnumberworkers=Maximale Anzahl an Workern monitor.queue.settings.maxnumberworkers.placeholder=Derzeit %[1]d monitor.queue.settings.maxnumberworkers.error=Die Anzahl der Worker muss eine Zahl sein @@ -3188,6 +3190,7 @@ mark_as_read=Als gelesen markieren mark_as_unread=Als ungelesen markieren mark_all_as_read=Alle als gelesen markieren subscriptions=Abonnements +watching=Gefolgt no_subscriptions=Keine Abonnements [gpg] @@ -3210,6 +3213,7 @@ error.unit_not_allowed=Du hast keine Berechtigung, um auf diesen Repository-Bere title=Pakete desc=Repository-Pakete verwalten. empty=Noch keine Pakete vorhanden. +empty.documentation=Weitere Informationen zur Paket-Registry finden Sie in der Dokumentation. empty.repo=Hast du ein Paket hochgeladen, das hier nicht angezeigt wird? Gehe zu den Paketeinstellungen und verlinke es mit diesem Repo. filter.type=Typ filter.type.all=Alle @@ -3226,16 +3230,31 @@ keywords=Schlüsselwörter details=Details details.author=Autor details.project_site=Projektseite +details.repository_site=Repository-Seite +details.documentation_site=Dokumentationsseite details.license=Lizenz assets=Dateien versions=Versionen versions.view_all=Alle anzeigen dependency.id=ID dependency.version=Version +alpine.registry=Richten Sie diese Registry ein, indem Sie die URL in die /etc/apk/repositories-Datei hinzufügen: +alpine.registry.key=Laden Sie den öffentlichen RSA-Schlüssel der Registry in den /etc/apk/keys/-Ordner um die Signatur zu überprüfen: +alpine.registry.info=Wählen Sie $branch und $repository aus der Liste unten. alpine.install=Nutze folgenden Befehl, um das Paket zu installieren: +alpine.documentation=Für weitere Informationen zur Alpine-Registry, schauen Sie in der Dokumentation nach. +alpine.repository=Repository-Informationen alpine.repository.branches=Branches alpine.repository.repositories=Repositories +alpine.repository.architectures=Architekturen +cargo.registry=Richten Sie diese Registry in der Cargo-Konfigurationsdatei ein (z.B. ~/.cargo/config.toml): +cargo.install=Um das Paket mit Cargo zu installieren, führen Sie den folgenden Befehl aus: +cargo.documentation=Weitere Informationen zur Cargo-Paketverwaltung finden Sie in der Dokumentation. +cargo.details.repository_site=Repository-Seite +cargo.details.documentation_site=Dokumentationsseite +chef.registry=Richten Sie diese Registry in Ihrer ~/.chef/config.rb Datei ein: chef.install=Nutze folgenden Befehl, um das Paket zu installieren: +chef.documentation=Weitere Informationen zur Chef-Paketverwaltung finden Sie in der Dokumentation. composer.registry=Setze diese Paketverwaltung in deiner ~/.composer/config.json Datei auf: composer.install=Nutze folgenden Befehl, um das Paket mit Composer zu installieren: composer.documentation=Weitere Informationen zur Composer-Paketverwaltung findest du in der Dokumentation. @@ -3245,6 +3264,11 @@ conan.details.repository=Repository conan.registry=Diese Registry über die Kommandozeile einrichten: conan.install=Um das Paket mit Conan zu installieren, führe den folgenden Befehl aus: conan.documentation=Weitere Informationen zur Conan-Paketverwaltung findest du in der Dokumentation. +conda.registry=Richten Sie diese Registry als Conda-Repository in Ihrer .condarc Datei ein: +conda.install=Um das Paket mit Conda zu installieren, führen Sie den folgenden Befehl aus: +conda.documentation=Weitere Informationen zur Conda-Paketverwaltung finden Sie in der Dokumentation. +conda.details.repository_site=Repository-Seite +conda.details.documentation_site=Dokumentationsseite container.details.type=Container-Image Typ container.details.platform=Plattform container.pull=Downloade das Container-Image aus der Kommandozeile: @@ -3255,11 +3279,21 @@ container.layers=Container-Image Ebenen container.labels=Labels container.labels.key=Schlüssel container.labels.value=Wert +cran.registry=Richten Sie diese Registry in Ihrer Rprofile.site Datei ein: cran.install=Nutze folgenden Befehl, um das Paket zu installieren: +cran.documentation=Für weitere Informationen zur CRAN-Registry, schauen Sie in der Dokumentation nach. debian.registry=Diese Registry über die Kommandozeile einrichten: +debian.registry.info=Wählen Sie $distribution und $component aus der Liste unten. debian.install=Nutze folgenden Befehl, um das Paket zu installieren: +debian.documentation=Für weitere Informationen zur Debian-Registry, schauen Sie in der Dokumentation nach. +debian.repository=Repository-Informationen +debian.repository.distributions=Distributionen +debian.repository.components=Komponenten +debian.repository.architectures=Architekturen generic.download=Downloade das Paket aus der Kommandozeile: generic.documentation=Weitere Informationen zur generischen Paketverwaltung findest du in der Dokumentation. +go.install=Installieren Sie das Paket über die Kommandozeile: +go.documentation=Für weitere Informationen zur Go-Registry, schauen Sie in der Dokumentation nach. helm.registry=Diese Paketverwaltung über die Kommandozeile einrichten: helm.install=Nutze folgenden Befehl, um das Paket zu installieren: helm.documentation=Weitere Informationen zur Helm-Paketverwaltung findest du in der Dokumentation. @@ -3288,6 +3322,7 @@ pypi.install=Nutze folgenden Befehl, um das Paket mit pip zu installieren: pypi.documentation=Weitere Informationen zur PyPI-Paketverwaltung findest du in der Dokumentation. rpm.registry=Diese Registry über die Kommandozeile einrichten: rpm.install=Nutze folgenden Befehl, um das Paket zu installieren: +rpm.documentation=Für weitere Informationen zur RPM-Registry, schauen Sie in der Dokumentation nach. rubygems.install=Um das Paket mit gem zu installieren, führe den folgenden Befehl aus: rubygems.install2=oder füg es zum Gemfile hinzu: rubygems.dependencies.runtime=Laufzeitabhängigkeiten @@ -3296,6 +3331,9 @@ rubygems.required.ruby=Benötigt Ruby Version rubygems.required.rubygems=Benötigt RubyGem Version rubygems.documentation=Weitere Informationen zur RubyGems-Paketverwaltung findest du in der Dokumentation. swift.registry=Diese Registry über die Kommandozeile einrichten: +swift.install=Fügen Sie das Paket Ihrer Package.swift Datei hinzu: +swift.install2=und führen Sie den folgenden Befehl aus: +swift.documentation=Weitere Informationen zur Swift-Paketverwaltung finden Sie in der Dokumentation. vagrant.install=Um eine Vagrant-Box hinzuzufügen, führen Sie folgenden Befehl aus: vagrant.documentation=Für weitere Informationen zur Vagrant-Registry, siehe Dokumentation. settings.link=Dieses Paket einem Repository zuweisen @@ -3309,41 +3347,118 @@ settings.delete.description=Das Löschen eines Pakets ist dauerhaft und kann nic settings.delete.notice=Du bist dabei, %s (%s) zu löschen. Dieser Vorgang ist unwiderruflich. Bist du sicher? settings.delete.success=Das Paket wurde gelöscht. settings.delete.error=Löschen des Pakets fehlgeschlagen. +owner.settings.cargo.title=Cargo-Registry-Index owner.settings.cargo.initialize=Index initialisieren +owner.settings.cargo.initialize.description=Um die Cargo-Registry nutzen zu können, wird ein spezielles Git-Repository als Index benötigt. Hier können Sie es mit der erforderlichen Konfiguration (neu) erstellen. +owner.settings.cargo.initialize.error=Cargo-Index konnte nicht initialisiert werden: %v +owner.settings.cargo.initialize.success=Der Cargo-Index wurde erfolgreich erstellt. +owner.settings.cargo.rebuild=Index neu erstellen +owner.settings.cargo.rebuild.description=Wenn der Index nicht mit den gespeicherten Cargo-Paketen übereinstimmt, können Sie ihn hier neu erstellen. +owner.settings.cargo.rebuild.error=Cargo-Index konnte nicht neu erstellt werden: %v +owner.settings.cargo.rebuild.success=Der Cargo-Index wurde erfolgreich neu erstellt. +owner.settings.cleanuprules.title=Bereinigungsregeln verwalten +owner.settings.cleanuprules.add=Bereinigungsregel hinzufügen +owner.settings.cleanuprules.edit=Bereinigungsregel bearbeiten +owner.settings.cleanuprules.none=Keine Bereinigungsregeln verfügbar. Lesen Sie die Dokumentation um mehr zu erfahren. +owner.settings.cleanuprules.preview=Vorschau der Bereinigungsregel +owner.settings.cleanuprules.preview.overview=%d Pakete sollen entfernt werden. +owner.settings.cleanuprules.preview.none=Bereinigungsregel stimmt mit keinem Paket überein. owner.settings.cleanuprules.enabled=Aktiviert +owner.settings.cleanuprules.pattern_full_match=Muster auf den vollständigen Paketnamen anwenden +owner.settings.cleanuprules.keep.title=Versionen, die diesen Regeln entsprechen, werden beibehalten, auch wenn sie mit einer Entfernungsregel unten übereinstimmen. +owner.settings.cleanuprules.keep.count=Behalte die aktuellsten +owner.settings.cleanuprules.keep.count.1=1 Version pro Paket +owner.settings.cleanuprules.keep.count.n=%d Versionen pro Paket +owner.settings.cleanuprules.keep.pattern=Behalte übereinstimmende Versionen +owner.settings.cleanuprules.keep.pattern.container=Die Version latest bei Container-Paketen wird immer behalten. +owner.settings.cleanuprules.remove.title=Versionen, die diesen Regeln entsprechen, werden entfernt, es sei denn, eine obige Regel besagt, sie zu behalten. +owner.settings.cleanuprules.remove.days=Entferne Versionen älter als +owner.settings.cleanuprules.remove.pattern=Entferne übereinstimmende Versionen +owner.settings.cleanuprules.success.update=Bereinigungsregel wurde aktualisiert. +owner.settings.cleanuprules.success.delete=Bereinigungsregel wurde gelöscht. +owner.settings.chef.title=Chef-Registry +owner.settings.chef.keypair=Schlüsselpaar generieren +owner.settings.chef.keypair.description=Schlüsselpaar zur Authentifizierung gegen die Chef-Registry generieren. Der bisherige Schlüssel kann danach nicht mehr verwendet werden. [secrets] +secrets=Secrets +description=Secrets werden an bestimmte Aktionen weitergegeben und können nicht anderweitig ausgelesen werden. +none=Noch keine Secrets vorhanden. value=Wert name=Name +creation=Secret hinzufügen +creation.name_placeholder=Groß-/Kleinschreibung wird ignoriert, nur alphanumerische Zeichen oder Unterstriche, darf nicht mit GITEA_ oder GITHUB_ beginnen creation.value_placeholder=Beliebigen Inhalt eingeben. Leerzeichen am Anfang und Ende werden weggelassen. +creation.success=Das Secret "%s" wurde hinzugefügt. +creation.failed=Secret konnte nicht hinzugefügt werden. +deletion=Secret entfernen +deletion.description=Das Entfernen eines Secrets kann nicht rückgängig gemacht werden. Fortfahren? +deletion.success=Das Secret wurde entfernt. +deletion.failed=Secret konnte nicht entfernt werden. +management=Secret-Verwaltung [actions] actions=Actions +unit.desc=Actions verwalten status.unknown=Unbekannt - +status.waiting=Wartend +status.running=Laufend +status.success=Erfolg +status.failure=Fehler +status.cancelled=Abgebrochen +status.skipped=Übersprungen +status.blocked=Blockiert + +runners=Runner +runners.runner_manage_panel=Runner-Verwaltung +runners.new=Neuen Runner erstellen +runners.new_notice=Wie man einen Runner startet +runners.status=Status runners.id=ID runners.name=Name runners.owner_type=Typ runners.description=Beschreibung runners.labels=Labels +runners.last_online=Letzte Online-Zeit +runners.agent_labels=Agent-Labels runners.custom_labels=Benutzerdefinierte Labels runners.custom_labels_helper=Benutzerdefinierte Labels sind Labels, die von einem Administrator manuell hinzugefügt werden. Labels werden durch Komma getrennt, Leerzeichen am Anfang und am Ende jedes Labels werden ignoriert. +runners.runner_title=Runner +runners.task_list=Letzte Aufgaben dieses Runners runners.task_list.run=Ausführen +runners.task_list.status=Status runners.task_list.repository=Repository runners.task_list.commit=Commit +runners.task_list.done_at=Fertig um +runners.edit_runner=Runner bearbeiten +runners.update_runner=Änderungen anwenden +runners.update_runner_success=Runner erfolgreich aktualisiert +runners.update_runner_failed=Der Runner konnte nicht aktualisiert werden +runners.delete_runner=Diesen Runner löschen +runners.delete_runner_success=Runner erfolgreich gelöscht +runners.delete_runner_failed=Der Runner konnte nicht gelöscht werden +runners.delete_runner_header=Bestätigen, um diesen Runner zu löschen +runners.delete_runner_notice=Wenn eine Aufgabe auf diesem Runner ausgeführt wird, wird sie beendet und als fehlgeschlagen markiert. Dies könnte Workflows zerstören. +runners.none=Keine Runner verfügbar runners.status.unspecified=Unbekannt runners.status.idle=Inaktiv runners.status.active=Aktiv runners.status.offline=Offline runners.version=Version +runners.reset_registration_token_success=Runner-Registrierungstoken erfolgreich zurückgesetzt runs.all_workflows=Alle Workflows runs.commit=Commit runs.pushed_by=Gepushed von +runs.invalid_workflow_helper=Die Workflow-Konfigurationsdatei ist ungültig. Bitte überprüfen Sie Ihre Konfigurationsdatei: %s runs.no_matching_runner_helper=Kein passender Runner: %s +need_approval_desc=Um Workflows für den Pull-Request eines Forks auszuführen, ist eine Genehmigung erforderlich. [projects] +type-1.display_name=Individuelles Projekt +type-2.display_name=Repository-Projekt +type-3.display_name=Organisationsprojekt From 9672085d940830f2e2e6d6f71e0e9900db5284a4 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Sat, 15 Jul 2023 16:52:03 +0800 Subject: [PATCH 03/15] Fix "Flash" message usage (#25895) Resolve https://github.com/go-gitea/gitea/pull/25820/files#r1264309059 --- modules/web/middleware/flash.go | 22 ++++------------------ routers/web/repo/pull.go | 7 ++----- 2 files changed, 6 insertions(+), 23 deletions(-) diff --git a/modules/web/middleware/flash.go b/modules/web/middleware/flash.go index fa29ddeffc79d..41f3aac27c5f9 100644 --- a/modules/web/middleware/flash.go +++ b/modules/web/middleware/flash.go @@ -5,17 +5,6 @@ package middleware import "net/url" -// flashes enumerates all the flash types -const ( - SuccessFlash = "SuccessMsg" - ErrorFlash = "ErrorMsg" - WarnFlash = "WarningMsg" - InfoFlash = "InfoMsg" -) - -// FlashNow FIXME: -var FlashNow bool - // Flash represents a one time data transfer between two requests. type Flash struct { DataStore ContextDataStore @@ -27,15 +16,12 @@ func (f *Flash) set(name, msg string, current ...bool) { if f.Values == nil { f.Values = make(map[string][]string) } - isShow := false - if (len(current) == 0 && FlashNow) || - (len(current) > 0 && current[0]) { - isShow = true - } - - if isShow { + showInCurrentPage := len(current) > 0 && current[0] + if showInCurrentPage { + // assign it to the context data, then the template can use ".Flash.XxxMsg" to render the message f.DataStore.GetData()["Flash"] = f } else { + // the message map will be saved into the cookie and be shown in next response (a new page response which decodes the cookie) f.Set(name, msg) } } diff --git a/routers/web/repo/pull.go b/routers/web/repo/pull.go index 505e1424cd119..c5f260adfa745 100644 --- a/routers/web/repo/pull.go +++ b/routers/web/repo/pull.go @@ -175,10 +175,8 @@ func getForkRepository(ctx *context.Context) *repo_model.Repository { } else if len(orgs) > 0 { ctx.Data["ContextUser"] = orgs[0] } else { - msg := ctx.Tr("repo.fork_no_valid_owners") - ctx.Data["Flash"] = ctx.Flash - ctx.Flash.Error(msg) ctx.Data["CanForkRepo"] = false + ctx.Flash.Error(ctx.Tr("repo.fork_no_valid_owners"), true) return nil } @@ -194,8 +192,7 @@ func Fork(ctx *context.Context) { } else { maxCreationLimit := ctx.Doer.MaxCreationLimit() msg := ctx.TrN(maxCreationLimit, "repo.form.reach_limit_of_creation_1", "repo.form.reach_limit_of_creation_n", maxCreationLimit) - ctx.Data["Flash"] = ctx.Flash - ctx.Flash.Error(msg) + ctx.Flash.Error(msg, true) } getForkRepository(ctx) From d473de0c2d9226f59a1a4de92057f3fd5c7fe456 Mon Sep 17 00:00:00 2001 From: sebastian-sauer Date: Sat, 15 Jul 2023 11:45:34 +0200 Subject: [PATCH 04/15] Make `add line comment` buttons focusable (#25894) Use a real button and add an aria-label. Additionally, show the button whenever it is focused. See https://codeberg.org/forgejo/forgejo/issues/998 for explanation. Our handling of this button is now equal to that of GitHub. Nothing has changed visually. --- options/locale/locale_en-US.ini | 1 + templates/repo/diff/section_split.tmpl | 16 ++++++++-------- templates/repo/diff/section_unified.tmpl | 4 ++-- web_src/css/review.css | 4 ++++ 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 8c7990e0d4dea..77003351f5d91 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -2375,6 +2375,7 @@ diff.show_more = Show More diff.load = Load Diff diff.generated = generated diff.vendored = vendored +diff.comment.add_line_comment = Add line comment diff.comment.placeholder = Leave a comment diff.comment.markdown_info = Styling with markdown is supported. diff.comment.add_single_comment = Add single comment diff --git a/templates/repo/diff/section_split.tmpl b/templates/repo/diff/section_split.tmpl index 6a8a105e2b751..a1a5f5ba56994 100644 --- a/templates/repo/diff/section_split.tmpl +++ b/templates/repo/diff/section_split.tmpl @@ -47,9 +47,9 @@ {{/* */}}{{if and $.root.SignedUserID $.root.PageIsPullFiles}}{{/* - */}}{{/* + */}}{{/* */}}{{end}}{{/* */}}{{if $line.LeftIdx}}{{/* */}}{{template "repo/diff/section_code" dict "diff" $leftDiff "locale" $.root.locale}}{{/* @@ -62,9 +62,9 @@ {{if $match.RightIdx}}{{end}} {{/* */}}{{if and $.root.SignedUserID $.root.PageIsPullFiles}}{{/* - */}}{{/* + */}}{{/* */}}{{end}}{{/* */}}{{if $match.RightIdx}}{{/* */}}{{template "repo/diff/section_code" dict "diff" $rightDiff "locale" $.root.locale}}{{/* @@ -79,9 +79,9 @@ {{if $line.LeftIdx}}{{end}} {{/* */}}{{if and $.root.SignedUserID $.root.PageIsPullFiles (not (eq .GetType 2))}}{{/* - */}}{{/* + */}}{{/* */}}{{end}}{{/* */}}{{if $line.LeftIdx}}{{/* */}}{{template "repo/diff/section_code" dict "diff" $inlineDiff "locale" $.root.locale}}{{/* @@ -94,9 +94,9 @@ {{if $line.RightIdx}}{{end}} {{/* */}}{{if and $.root.SignedUserID $.root.PageIsPullFiles (not (eq .GetType 3))}}{{/* - */}}{{/* + */}}{{/* */}}{{end}}{{/* */}}{{if $line.RightIdx}}{{/* */}}{{template "repo/diff/section_code" dict "diff" $inlineDiff "locale" $.root.locale}}{{/* diff --git a/templates/repo/diff/section_unified.tmpl b/templates/repo/diff/section_unified.tmpl index 8f9c122f05fd5..98e382a0cb0e6 100644 --- a/templates/repo/diff/section_unified.tmpl +++ b/templates/repo/diff/section_unified.tmpl @@ -52,9 +52,9 @@ {{else}} {{/* */}}{{if and $.root.SignedUserID $.root.PageIsPullFiles}}{{/* - */}}{{/* + */}}{{/* */}}{{end}}{{/* */}}{{template "repo/diff/section_code" dict "diff" $inlineDiff "locale" $.root.locale}}{{/* */}} diff --git a/web_src/css/review.css b/web_src/css/review.css index f82a6e7f37067..a4c4efd029d14 100644 --- a/web_src/css/review.css +++ b/web_src/css/review.css @@ -36,6 +36,10 @@ opacity: 1; } +.ui.button.add-code-comment:focus { + opacity: 1; +} + .repository .diff-file-box .code-diff .add-comment-left, .repository .diff-file-box .code-diff .add-comment-right, .repository .diff-file-box .code-diff .add-code-comment .add-comment-left, From ec35af470c8cbed9f32b68e1a2c43e0f71c5f97b Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Sun, 16 Jul 2023 07:10:49 +0900 Subject: [PATCH 05/15] Avoid opening/closing PRs which are already merged (#25883) We can select PRs to open/close them by one click, but we forgot to check whether it is merged. You can get an opening merged PR: ![image](https://github.com/go-gitea/gitea/assets/18380374/22c2e747-4bb9-4742-a9aa-ef39d5308bc5) You can confirm this in: https://try.gitea.io/yp05327/testrepo/pulls/5 --- routers/web/repo/issue.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/routers/web/repo/issue.go b/routers/web/repo/issue.go index 31bcbd7c21c05..bd8959846c0ed 100644 --- a/routers/web/repo/issue.go +++ b/routers/web/repo/issue.go @@ -2762,7 +2762,15 @@ func UpdateIssueStatus(ctx *context.Context) { ctx.ServerError("LoadRepositories", err) return } + if err := issues.LoadPullRequests(ctx); err != nil { + ctx.ServerError("LoadPullRequests", err) + return + } + for _, issue := range issues { + if issue.IsPull && issue.PullRequest.HasMerged { + continue + } if issue.IsClosed != isClosed { if err := issue_service.ChangeStatus(issue, ctx.Doer, "", isClosed); err != nil { if issues_model.IsErrDependenciesLeft(err) { From 3add4ca2160381e9b8871c752d6dc3e88ece2856 Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Sun, 16 Jul 2023 12:43:51 +0900 Subject: [PATCH 06/15] Fix incorrect milestone count when provide a keyword (#25880) You can confirm this issue in: https://try.gitea.io/yp05327/testrepo/milestones?state=open&q=a There's no milestone, but the count is 1. ![image](https://github.com/go-gitea/gitea/assets/18380374/25e58cee-aeeb-43c1-8ec8-6e2ec6bf1284) --- routers/web/repo/milestone.go | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/routers/web/repo/milestone.go b/routers/web/repo/milestone.go index a6f7f56af74c3..7b20cd98482bc 100644 --- a/routers/web/repo/milestone.go +++ b/routers/web/repo/milestone.go @@ -38,18 +38,8 @@ func Milestones(ctx *context.Context) { ctx.Data["PageIsMilestones"] = true isShowClosed := ctx.FormString("state") == "closed" - stats, err := issues_model.GetMilestonesStatsByRepoCond(builder.And(builder.Eq{"id": ctx.Repo.Repository.ID})) - if err != nil { - ctx.ServerError("MilestoneStats", err) - return - } - ctx.Data["OpenCount"] = stats.OpenCount - ctx.Data["ClosedCount"] = stats.ClosedCount - sortType := ctx.FormString("sort") - keyword := ctx.FormTrim("q") - page := ctx.FormInt("page") if page <= 1 { page = 1 @@ -74,6 +64,15 @@ func Milestones(ctx *context.Context) { ctx.ServerError("GetMilestones", err) return } + + stats, err := issues_model.GetMilestonesStatsByRepoCondAndKw(builder.And(builder.Eq{"id": ctx.Repo.Repository.ID}), keyword) + if err != nil { + ctx.ServerError("GetMilestoneStats", err) + return + } + ctx.Data["OpenCount"] = stats.OpenCount + ctx.Data["ClosedCount"] = stats.ClosedCount + if ctx.Repo.Repository.IsTimetrackerEnabled(ctx) { if err := miles.LoadTotalTrackedTimes(); err != nil { ctx.ServerError("LoadTotalTrackedTimes", err) From dc3f50aadfdd06dff7e41adca00d8146e6b81839 Mon Sep 17 00:00:00 2001 From: delvh Date: Sun, 16 Jul 2023 14:28:21 +0200 Subject: [PATCH 07/15] Add 1.20.0 changelog (#25901) Co-authored-by: Yarden Shoham --- CHANGELOG.md | 615 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 615 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f3d3aa3a8beab..d22f02e069f1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,621 @@ This changelog goes through all 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](https://blog.gitea.io). +## [1.20.0](https://github.com/go-gitea/gitea/releases/tag/v1.20.0) - 2023-07-16 + +* BREAKING + * Fix WORK_DIR for docker (root) image (#25738) (#25811) + * Restrict `[actions].DEFAULT_ACTIONS_URL` to only `github` or `self` (#25581) (#25604) + * Refactor path & config system (#25330) (#25416) + * Fix all possible setting error related storages and added some tests (#23911) (#25244) + * Use a separate admin page to show global stats, remove `actions` stat (#25062) + * Remove the service worker (#25010) + * Remove meta tags `theme-color` and `default-theme` (#24960) + * Use `[git.config]` for reflog cleaning up (#24958) + * Allow all URL schemes in Markdown links by default (#24805) + * Redesign Scoped Access Tokens (#24767) + * Fix team members API endpoint pagination (#24754) + * Rewrite logger system (#24726) + * Increase default LFS auth timeout from 20m to 24h (#24628) + * Rewrite queue (#24505) + * Remove unused setting `time.FORMAT` (#24430) + * Refactor `setting.Other` and remove unused `SHOW_FOOTER_BRANDING` (#24270) + * Correct the access log format (#24085) + * Reserve ".png" suffix for user/org names (#23992) + * Prefer native parser for SSH public key parsing (#23798) + * Editor preview support for external renderers (#23333) + * Add Gitea Profile Readmes (#23260) + * Refactor `ctx` in templates (#23105) +* SECURITY + * Test if container blob is accessible before mounting (#22759) (#25784) + * Set type="password" on all auth_token fields (#22175) +* FEATURES + * Add button on diff header to copy file name, misc diff header tweaks (#24986) + * API endpoint for changing/creating/deleting multiple files (#24887) + * Support changing git config through `app.ini`, use `diff.algorithm=histogram` by default (#24860) + * Add up and down arrows to selected lookup repositories (#24727) + * Add Go package registry (#24687) + * Add status indicator on main home screen for each repo (#24638) + * Support for status check pattern (#24633) + * Implement Cargo HTTP index (#24452) + * Add Debian package registry (#24426) + * Add the ability to pin Issues (#24406) + * Add follow organization and fix the logic of following page (#24345) + * Allow `webp` images as avatars (#24248) + * Support upload `outputs` and use `needs` context on Actions (#24230) + * Allow adding new files to an empty repo (#24164) + * Make wiki title supports dashes and improve wiki name related features (#24143) + * Add monospace toggle button to textarea (#24034) + * Use auto-updating, natively hoverable, localized time elements (#23988) + * Add ntlm authentication support for mail (#23811) + * Add CLI command to register runner tokens (#23762) + * Add Alpine package registry (#23714) + * Expand/Collapse all changed files (#23639) + * Add unset default project column (#23531) + * Add activity feeds API (#23494) + * Add RPM registry (#23380) + * Add meilisearch support (#23136) + * Add API for License templates (#23009) + * Add admin API email endpoints (#22792) + * Add user rename endpoint to admin api (#22789) + * Add API for gitignore templates (#22783) + * Implement actions artifacts (#22738) + * Add RSS Feeds for branches and files (#22719) + * Display when a repo was archived (#22664) + * Add Swift package registry (#22404) + * Add CRAN package registry (#22331) + * Add user webhooks (#21563) + * Implement systemd-notify protocol (#21151) + * Implement Issue Config (#20956) + * Add API to manage issue dependencies (#17935) +* API + * Use correct response code in push mirror creation response in v1_json.tmpl (#25476) (#25571) + * Fix `Permission` in API returned repository struct (#25388) (#25441) + * Add API for Label templates (#24602) + * Filters for GetAllCommits (#24568) + * Add ability to specify '--not' from GetAllCommits (#24409) + * Support uploading file to empty repo by API (#24357) + * Add absent repounits to create/edit repo API (#23500) + * Add login name and source id for admin user searching API (#23376) + * Create a branch directly from commit on the create branch API (#22956) +* ENHANCEMENTS + * Make `add line comment` buttons focusable (#25894) (#25896) + * Always pass 6-digit hex color to monaco (#25780) (#25782) + * Clarify "text-align" CSS helpers, fix clone button padding (#25763) (#25764) + * Hide `add file` button for pull mirrors (#25748) (#25751) + * Allow/fix review (approve/reject) of empty PRs (#25690) (#25732) + * Fix tags header and pretty format numbers (#25624) (#25694) + * Actions list enhancements (#25601) (#25678) + * Fix show more for image on diff page (#25672) (#25673) + * Prevent SVG shrinking (#25652) (#25669) + * Fix UI misalignment on user setting page (#25629) (#25656) + * Use css on labels (#25626) (#25636) + * Read-only checkboxes don't appear and don't entirely act the way one might expect (#25573) (#25602) + * Redirect to package after version deletion (#25594) (#25599) + * Reduce table padding globally (#25568) (#25577) + * Change `Regenerate Secret` button display (#25534) (#25541) + * Fix rerun icon on action view component (#25531) (#25536) + * Move some regexp out of functions (#25430) (#25445) + * Diff page enhancements (#25398) (#25437) + * Various UI fixes (#25264) (#25431) + * Fix label list divider (#25312) (#25372) + * Fix UI on mobile view (#25315) (#25340) + * When viewing a file, hide the add button (#25320) (#25339) + * Show if File is Executable (#25287) (#25300) + * Fix edit OAuth application width (#25262) (#25263) + * Use flex to align SVG and text (#25163) (#25260) + * Revert overflow: overlay (revert #21850) (#25231) (#25239) + * Use inline SVG for built-in OAuth providers (#25171) (#25234) + * Change access token UI to select dropdowns (#25109) (#25230) + * Remove hacky patch for "safari emoji glitch fix" (#25208) (#25211) + * Minor arc-green color tweaks (#25175) (#25205) + * Button and color enhancements (#24989) (#25176) + * Fix mobile navbar and misc cleanups (#25134) (#25169) + * Modify OAuth login ui and fix display name, iconurl related logic (#25030) (#25161) + * Improve notification icon and navbar (#25111) (#25124) + * Add details summary for vertical menus in settings to allow toggling (#25098) + * Don't display `select all issues` checkbox when no issues are available (#25086) + * Use RepositoryList instead of []*Repository (#25074) + * Add ability to set multiple redirect URIs in OAuth application UI (#25072) + * Use git command instead of the ini package to remove the `origin` remote (#25066) + * Remove cancel button from branch protection form (#25063) + * Show file tree by default (#25052) + * Add Progressbar to Milestone Page (#25050) + * Minor UI improvements: logo alignment, auth map editor, auth name display (#25043) + * Allow for PKCE flow without client secret + add docs (#25033) + * Refactor INI package (first step) (#25024) + * Various style fixes (#25008) + * Fix delete user account modal (#25004) + * Refactor diffFileInfo / DiffTreeStore (#24998) + * Add user level action runners (#24995) + * Rename NotifyPullReviewRequest to NotifyPullRequestReviewRequest (#24988) + * Add step start time to `ViewStepLog` (#24980) + * Add dark mode to API Docs (#24971) + * Display file mode for new file and file mode changes (#24966) + * Make the 500 page load themes (#24953) + * Show `bot` label next to username when rendering autor link if the user is a bot (#24943) + * Repo list improvements, fix bold helper classes (#24935) + * Improve queue and logger context (#24924) + * Improve RunMode / dev mode (#24886) + * Improve some Forms (#24878) + * Add show timestamp/seconds and fullscreen options to action page (#24876) + * Fix double border and adjust width for user profile page (#24870) + * Improve Actions CSS (#24864) + * Fix `@font-face` overrides (#24855) + * Remove `In your repositories` link in milestones dashboard (#24853) + * Fix missing yes/no in delete time log modal (#24851) + * Show new pull request button also on subdirectories and files (#24842) + * Make environment-to-ini support loading key value from file (#24832) + * Support wildcard in email domain allow/block list (#24831) + * Use `CommentList` instead of `[]*Comment` (#24828) + * Add RTL rendering support to Markdown (#24816) + * Rework notifications list (#24812) + * Mute repo names in dashboard repo list (#24811) + * Fix max width and margin of comment box on conversation page (#24809) + * Some refactors for issues stats (#24793) + * Rework label colors (#24790) + * Fix OAuth login loading state (#24788) + * Remove duplicated issues options and some more refactors (#24787) + * Decouple the different contexts from each other (#24786) + * Remove background on user dashboard filter bar (#24779) + * Improve and fix bugs surrounding reactions (#24760) + * Make the color of zero-contribution-squares in the activity heatmap more subtle (#24758) + * Fix WEBP image copying (#24743) + * Rework OAuth login buttons, swap github logo to monocolor (#24740) + * Consolidate the two review boxes into one (#24738) + * Unification of registration fields order (#24737) + * Refactor Pull Mirror and fix out-of-sync bugs (#24732) + * Improvements for action detail page (#24718) + * Fix flash of unstyled content in action view page (#24712) + * Don't filter action runs based on state (#24711) + * Optimize actions list by removing an unnecessary `git` call (#24710) + * Support no label/assignee filter and batch clearing labels/assignees (#24707) + * Add icon support for safari (#24697) + * Use standard HTTP library to serve files (#24693) + * Improve button-ghost, remove tertiary button (#24692) + * Only hide tooltip tippy instances (#24688) + * Support migrating storage for actions log via command line (#24679) + * Remove highlight in repo list (#24675) + * Add markdown preview to Submit Review Textarea (#24672) + * Update pin and add pin-slash (#24669) + * Improve empty notifications display (#24668) + * Support SSH for go get (#24664) + * Improve avatar uploading / resizing / compressing, remove Fomantic card module (#24653) + * Only show one tippy at a time (#24648) + * Notification list enhancements, fix striped tables on dark theme (#24639) + * Improve queue & process & stacktrace (#24636) + * Use the type RefName for all the needed places and fix pull mirror sync bugs (#24634) + * Remove fluid on compare diff page (#24627) + * Add a tooltip to the job rerun button (#24617) + * Attach a tooltip to the action status icon (#24614) + * Make the actions control button look like an actual button (#24611) + * Remove unnecessary code (#24610) + * Make repo migration cancelable and fix various bugs (#24605) + * Improve updating Actions tasks (#24600) + * Attach a tooltip to the action control button (#24595) + * Make repository response support HTTP range request (#24592) + * Improve Gitea's web context, decouple "issue template" code into service package (#24590) + * Modify luminance calculation and extract related functions into single files (#24586) + * Simplify template helper functions (#24570) + * Split "modules/context.go" to separate files (#24569) + * Add org visibility label to non-organization's dashboard (#24558) + * Update LDAP filters to include both username and email address (#24547) + * Review fixes and enhancements (#24526) + * Display warning when user try to rename default branch (#24512) + * Fix color for transfer related buttons when having no permission to act (#24510) + * Rework button coloring, add focus and active colors (#24507) + * New webhook trigger for receiving Pull Request review requests (#24481) + * Add goto issue id function (#24479) + * Fix incorrect webhook time and use relative-time to display it (#24477) + * RSS icon fixes (#24476) + * Replace `N/A` with `-` everywhere (#24474) + * Pass 'not' to commit count (#24473) + * Enhance stylelint rule config, remove dead CSS (#24472) + * Remove `font-awesome` and fomantic `icon` module (#24471) + * Improve "new-menu" (#24465) + * Remove fomantic breadcrumb module (#24463) + * Improve template system and panic recovery (#24461) + * Make Issue/PR/projects more compact, misc CSS tweaks (#24459) + * Replace remaining fontawesome dropdown icons with SVG (#24455) + * Remove all direct references to font-awesome (#24448) + * Move links out of translation (#24446) + * Add `ui-monospace` and `SF Mono` to `--fonts-monospace` (#24442) + * Hide 'Mirror Settings' when unneeded, improve hints (#24433) + * Add "Updated" column for admin repositories list (#24429) + * Improve issue list filter (#24425) + * Rework header bar on issue, pull requests and milestone (#24420) + * Improve template helper (#24417) + * Make repo size style matches others (commits/branches/tags) (#24408) + * Support markdown editor for issue template (#24400) + * Improve commit date in commit graph (#24399) + * Start cleaning the messy ".ui.left / .ui.right", improve label list page, fix stackable menu (#24393) + * Merge setting.InitXXX into one function with options (#24389) + * Move `Rename branch` from repo settings page to the page of branches list (#24380) + * Improve protected branch setting page (#24379) + * Display 'Unknown' when runner.version is empty (#24378) + * Display owner of a runner as a tooltip instead of static text (#24377) + * Fix incorrect last online time in runner_edit.tmpl (#24376) + * Fix unclear `IsRepositoryExist` logic (#24374) + * Add custom helm repo name generated from url (#24363) + * Replace placeholders in licenses (#24354) + * Add rerun workflow button and refactor to use SVG octicons (#24350) + * Fix runner button height (#24338) + * Restore bold on repolist (#24337) + * Improve RSS (#24335) + * Refactor "route" related code, fix Safari cookie bug (#24330) + * Alert error message if open dependencies are included in the issues that try to batch close (#24329) + * Add missed column title in runner management page (#24328) + * Automatically select the org when click create repo from org dashboard (#24325) + * Modify width of ui container, fine tune css for settings pages and org header (#24315) + * Fix config list overflow and layout (#24312) + * Improve some modal action buttons (#24289) + * Move code from module to service (#24287) + * Sort users and orgs on explore by recency by default (#24279) + * Allow using localized absolute date times within phrases with place holders and localize issue due date events (#24275) + * Show workflow config error on file view also (#24267) + * Improve template helper functions: string/slice (#24266) + * Use more specific test methods (#24265) + * Add `DumpVar` helper function to help debugging templates (#24262) + * Limit avatar upload to valid image files (#24258) + * Improve emoji and mention matching (#24255) + * Change to vertical navbar layout for secondary navbar for repo/user/admin settings (#24246) + * Refactor config provider (#24245) + * Improve test logger (#24235) + * Default show closed actions list if all actions was closed (#24234) + * Add missing badges in user profile for /projects and /packages (#24232) + * Add repository counter badge to repository tab (#24205) + * Move secrets and runners settings to actions settings (#24200) + * Require at least one unit to be enabled (#24189) + * Use same action status svg icons on actions list as on action page (#24178) + * Use secondary pointing menu for tabs on user/organization home page (#24162) + * Improve Wiki TOC (#24137) + * Refactor locale number (#24134) + * Localize activity heatmap (except tooltip) (#24131) + * Fix duplicate modals when clicking on "remove all" repository button (#24129) + * Add runner check in repo action page (#24124) + * Support triggering workflows by wiki related events (#24119) + * Refactor cookie (#24107) + * Remove untranslatable `on_date` key (#24106) + * Refactor delete_modal_actions template and use it for project column related actions (#24097) + * Improve git log for debugging (#24095) + * Add option to search for users is active join a team (#24093) + * Add PDF rendering via PDFObject (#24086) + * Refactor web route (#24080) + * Make more functions use ctx instead of db.DefaultContext (#24068) + * Make HTML template functions support context (#24056) + * Refactor rename user and rename organization (#24052) + * Localize milestone related time strings (#24051) + * Expand selected file when clicking file tree (#24041) + * Add popup to hashed comments/pull requests/issues in file editing/adding preview tab (#24040) + * Add placeholder and aria attributes to release and wiki edit page (#24031) + * Add new user types `reserved`, `bot`, and `remote` (#24026) + * Allow adding SSH keys even if SSH server is disabled (#24025) + * Use a general approach to access custom/static/builtin assets (#24022) + * Update github.com/google/go-github to v52 (#24004) + * Replace tribute with text-expander-element for textarea (#23985) + * Group template helper functions, remove `Printf`, improve template error messages (#23982) + * Drop "unrolled/render" package (#23965) + * Add job.duration in web ui (#23963) + * Tweak pull request branch delete ui (#23951) + * Merge template functions "dict/Dict/mergeinto" (#23932) + * Use a general Eval function for expressions in templates. (#23927) + * Clean template/helper.go (#23922) + * Actions: Use default branch as ref when a branch/tag delete occurs (#23910) + * Add tooltips for MD editor buttons and add `muted` class for buttons (#23896) + * Improve markdown editor: width, height, preferred (#23895) + * Make Release Download URLs predictable (#23891) + * Remove fomantic ".link" selector and styles (#23888) + * Added close/open button to details page of milestone (#23877) + * Introduce GitHub markdown editor, keep EasyMDE as fallback (#23876) + * Introduce GiteaLocaleNumber custom element to handle number localization on pages. (#23861) + * Make first section on home page full width (#23854) + * Use different SVG for pending and running actions (#23836) + * Display image size for multiarch container images (#23821) + * Improve action log display with control chars (#23820) + * Fix dropdown direction behavior (#23806) + * Fix incorrect/Improve error handle in edit user page (#23805) + * Use clippie module to copy to clipboard (#23801) + * Make minio package support legacy MD5 checksum (#23768) + * Add ONLY_SHOW_RELEVANT_REPOS back, fix explore page bug, make code more strict (#23766) + * Refactor docs (#23752) + * Fix markup background, improve wiki rendering (#23750) + * Make label templates have consistent behavior and priority (#23749) + * Improve LoadUnitConfig to handle invalid or duplicate units (#23736) + * Append `(comment)` when a link points at a comment rather than the whole issue (#23734) + * Clean some legacy files and move some build files (#23699) + * Refactor repo commit list (#23690) + * Refactor internal API for git commands, use meaningful messages instead of "Internal Server Error" (#23687) + * Add aria attributes to interactive time tooltips. (#23661) + * Fix long project name display in issue list and in related dropdown (#23653) + * Use data-tooltip-content for tippy tooltip (#23649) + * Fix new issue/pull request btn margin when it is next to sort (#23647) + * Fine tune more downdrop settings, use SVG for labels, improve Repo Topic Edit form (#23626) + * Allow new file and edit file preview if it has editable extension (#23624) + * Replace a few fontawesome icons with svg (#23602) + * `Publish Review` buttons should indicate why they are disabled (#23598) + * Convert issue list checkboxes to native (#23596) + * Set opaque background on markup and images (#23578) + * Use a general approach to show tooltip, fix temporary tooltip bug (#23574) + * Improve `` to make it output `svg` node and optimize performance (#23570) + * Enable color for consistency checks diffs (#23563) + * Fix dropdown icon misalignment when using fomantic icon (#23558) + * Decouple the issue-template code from comment_tab.tmpl (#23556) + * Remove `id="comment-form"` dead code, fix tag (#23555) + * Diff improvements (#23553) + * Sort Python package descriptors by version to mimic PyPI format (#23550) + * Use a general approch to improve a11y for all checkboxes and dropdowns. (#23542) + * Fix long name ui issues and label ui issue (#23541) + * Return `repository` in npm package metadata endpoint (#23539) + * Use `project.IconName` instead of repeated unreadable `if-else` chains (#23538) + * Remove stars in dashboard repo list (#23530) + * Update mini-css-extract-plugin, remove postcss (#23520) + * Change `Close` to either `Close issue` or `Close pull request` (#23506) + * Fix theme-auto loading (#23504) + * Fix tags sort by creation time (descending) on branch/tag dropdowns (#23491) + * Display the version of runner in the runner list (#23490) + * Replace Less with CSS (#23481) + * Fix `.locale.Tr` function not found in delete modal (#23468) + * Allow both fullname and username search when `DEFAULT_SHOW_FULL_NAME` is true (#23463) + * Add project type descriptions in issue badge and improve project icons (#23437) + * Use context for `RepositoryList.LoadAttributes` (#23435) + * Refactor branch/tag selector to Vue SFC (#23421) + * Keep (add if not existing) xmlns attribute for generated SVG images (#23410) + * Refactor dashboard repo list to Vue SFC (#23405) + * Add workflow error notification in ui (#23404) + * Refactor branch/tag selector dropdown (first step) (#23394) + * Reduce duplicate and useless code in options (#23369) + * Convert `
` to `