From d3689b56832907afd52557c4e54c348839885089 Mon Sep 17 00:00:00 2001 From: Typed SIGTERM Date: Mon, 3 Feb 2025 02:42:30 +0800 Subject: [PATCH 01/38] Correct bot label `vertical-align` (#33477) (cherry picked from commit 50873c192559e05e88c8edbdd50ed336ef0a6c11) --- templates/shared/user/authorlink.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/shared/user/authorlink.tmpl b/templates/shared/user/authorlink.tmpl index d57a635b4b..abe1ab1ce2 100644 --- a/templates/shared/user/authorlink.tmpl +++ b/templates/shared/user/authorlink.tmpl @@ -1 +1 @@ -{{.GetDisplayName}}{{if .IsBot}}bot{{end}} +{{.GetDisplayName}}{{if .IsBot}}bot{{end}} From 9d2fabc7d35d52dba32c08b7b9d4171831cacc52 Mon Sep 17 00:00:00 2001 From: GiteaBot Date: Mon, 3 Feb 2025 00:32:15 +0000 Subject: [PATCH 02/38] [skip ci] Updated licenses and gitignores (cherry picked from commit ed84f3737a31c46de537b688f877753a92d0ab5c) --- options/gitignore/Flutter | 119 ++++++++++++++++++ options/gitignore/Nix | 3 + options/gitignore/NotesAndCoreConfiguration | 16 +++ .../gitignore/NotesAndExtendedConfiguration | 38 ++++++ options/gitignore/NotesOnly | 4 + 5 files changed, 180 insertions(+) create mode 100644 options/gitignore/Flutter create mode 100644 options/gitignore/NotesAndCoreConfiguration create mode 100644 options/gitignore/NotesAndExtendedConfiguration create mode 100644 options/gitignore/NotesOnly diff --git a/options/gitignore/Flutter b/options/gitignore/Flutter new file mode 100644 index 0000000000..39b8814aec --- /dev/null +++ b/options/gitignore/Flutter @@ -0,0 +1,119 @@ +# Miscellaneous +*.class +*.lock +*.log +*.pyc +*.swp +.buildlog/ +.history + + + +# Flutter repo-specific +/bin/cache/ +/bin/internal/bootstrap.bat +/bin/internal/bootstrap.sh +/bin/mingit/ +/dev/benchmarks/mega_gallery/ +/dev/bots/.recipe_deps +/dev/bots/android_tools/ +/dev/devicelab/ABresults*.json +/dev/docs/doc/ +/dev/docs/flutter.docs.zip +/dev/docs/lib/ +/dev/docs/pubspec.yaml +/dev/integration_tests/**/xcuserdata +/dev/integration_tests/**/Pods +/packages/flutter/coverage/ +version +analysis_benchmark.json + +# packages file containing multi-root paths +.packages.generated + +# Flutter/Dart/Pub related +**/doc/api/ +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +**/generated_plugin_registrant.dart +.packages +.pub-preload-cache/ +.pub/ +build/ +flutter_*.png +linked_*.ds +unlinked.ds +unlinked_spec.ds + +# Android related +**/android/**/gradle-wrapper.jar +.gradle/ +**/android/captures/ +**/android/gradlew +**/android/gradlew.bat +**/android/local.properties +**/android/**/GeneratedPluginRegistrant.java +**/android/key.properties +*.jks + +# iOS/XCode related +**/ios/**/*.mode1v3 +**/ios/**/*.mode2v3 +**/ios/**/*.moved-aside +**/ios/**/*.pbxuser +**/ios/**/*.perspectivev3 +**/ios/**/*sync/ +**/ios/**/.sconsign.dblite +**/ios/**/.tags* +**/ios/**/.vagrant/ +**/ios/**/DerivedData/ +**/ios/**/Icon? +**/ios/**/Pods/ +**/ios/**/.symlinks/ +**/ios/**/profile +**/ios/**/xcuserdata +**/ios/.generated/ +**/ios/Flutter/.last_build_id +**/ios/Flutter/App.framework +**/ios/Flutter/Flutter.framework +**/ios/Flutter/Flutter.podspec +**/ios/Flutter/Generated.xcconfig +**/ios/Flutter/ephemeral +**/ios/Flutter/app.flx +**/ios/Flutter/app.zip +**/ios/Flutter/flutter_assets/ +**/ios/Flutter/flutter_export_environment.sh +**/ios/ServiceDefinitions.json +**/ios/Runner/GeneratedPluginRegistrant.* + +# macOS +**/Flutter/ephemeral/ +**/Pods/ +**/macos/Flutter/GeneratedPluginRegistrant.swift +**/macos/Flutter/ephemeral +**/xcuserdata/ + +# Windows +**/windows/flutter/generated_plugin_registrant.cc +**/windows/flutter/generated_plugin_registrant.h +**/windows/flutter/generated_plugins.cmake + +# Linux +**/linux/flutter/generated_plugin_registrant.cc +**/linux/flutter/generated_plugin_registrant.h +**/linux/flutter/generated_plugins.cmake + +# Coverage +coverage/ + +# Symbols +app.*.symbols + +# Exceptions to above rules. +!**/ios/**/default.mode1v3 +!**/ios/**/default.mode2v3 +!**/ios/**/default.pbxuser +!**/ios/**/default.perspectivev3 +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages +!/dev/ci/**/Gemfile.lock \ No newline at end of file diff --git a/options/gitignore/Nix b/options/gitignore/Nix index 1fd04ef1f6..912e6700f4 100644 --- a/options/gitignore/Nix +++ b/options/gitignore/Nix @@ -1,3 +1,6 @@ # Ignore build outputs from performing a nix-build or `nix build` command result result-* + +# Ignore automatically generated direnv output +.direnv diff --git a/options/gitignore/NotesAndCoreConfiguration b/options/gitignore/NotesAndCoreConfiguration new file mode 100644 index 0000000000..4eff01dae1 --- /dev/null +++ b/options/gitignore/NotesAndCoreConfiguration @@ -0,0 +1,16 @@ +# Excludes Obsidian workspace cache and plugins. All notes and core obsidian +# configuration files are tracked by Git. + +# The current application UI state (DOM layout, recently-opened files, etc.) is +# stored in these files (separate for desktop and mobile) so you can resume +# your session seamlessly after a restart. If you want to track UI state, use +# the Workspaces core plugin instead of relying on these files. +.obsidian/workspace.json +.obsidian/workspace-mobile.json + +# Obsidian plugins are stored under .obsidian/plugins/$plugin_name. They +# contain metadata (manifest.json), application code (main.js), stylesheets +# (styles.css), and user-configuration data (data.json). +# We want to exclude all plugin-related files, so we can exclude everything +# under this directory. +.obsidian/plugins/**/* diff --git a/options/gitignore/NotesAndExtendedConfiguration b/options/gitignore/NotesAndExtendedConfiguration new file mode 100644 index 0000000000..3e0804f299 --- /dev/null +++ b/options/gitignore/NotesAndExtendedConfiguration @@ -0,0 +1,38 @@ +# Excludes Obsidian workspace cache and plugin code, but retains plugin +# configuration. All notes and user-controlled configuration files are tracked +# by Git. +# +# !!! WARNING !!! +# +# Community plugins may store sensitive secrets in their data.json files. By +# including these files, those secrets may be tracked in your Git repository. +# +# To ignore configurations for specific plugins, add a line like this after the +# contents of this file (order is important): +# .obsidian/plugins/{{plugin_name}}/data.json +# +# Alternatively, ensure that you are treating your entire Git repository as +# sensitive data, since it may contain secrets, or may have contained them in +# past commits. Understand your threat profile, and make the decision +# appropriate for yourself. If in doubt, err on the side of not including +# plugin configuration. Use one of the alternative gitignore files instead: +# * NotesOnly.gitignore +# * NotesAndCoreConfiguration.gitignore + +# The current application UI state (DOM layout, recently-opened files, etc.) is +# stored in these files (separate for desktop and mobile) so you can resume +# your session seamlessly after a restart. If you want to track UI state, use +# the Workspaces core plugin instead of relying on these files. +.obsidian/workspace.json +.obsidian/workspace-mobile.json + +# Obsidian plugins are stored under .obsidian/plugins/$plugin_name. They +# contain metadata (manifest.json), application code (main.js), stylesheets +# (styles.css), and user-configuration data (data.json). +# We only want to track data.json, so we: +# 1. exclude everything under the plugins directory recursively, +# 2. unignore the plugin directories themselves, which then allows us to +# 3. unignore the data.json files +.obsidian/plugins/**/* +!.obsidian/plugins/*/ +!.obsidian/plugins/*/data.json diff --git a/options/gitignore/NotesOnly b/options/gitignore/NotesOnly new file mode 100644 index 0000000000..2b3b76ee0e --- /dev/null +++ b/options/gitignore/NotesOnly @@ -0,0 +1,4 @@ +# Excludes all Obsidian-related configuration. All notes are tracked by Git. + +# All Obsidian configuration and runtime state is stored here +.obsidian/**/* From 8cda45f7502d6c218b6e268fec3f2cd5fa31ee6c Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 6 Feb 2025 19:05:25 -0800 Subject: [PATCH 03/38] Move gitgraph from modules to services layer (#33527) Just move, no code change. (cherry picked from commit 466cc725bc69d9222abf17d7a22d86e7dbe991ac) --- routers/web/repo/commit.go | 2 +- {modules => services/repository}/gitgraph/graph.go | 0 {modules => services/repository}/gitgraph/graph_models.go | 0 {modules => services/repository}/gitgraph/graph_test.go | 0 {modules => services/repository}/gitgraph/parser.go | 0 5 files changed, 1 insertion(+), 1 deletion(-) rename {modules => services/repository}/gitgraph/graph.go (100%) rename {modules => services/repository}/gitgraph/graph_models.go (100%) rename {modules => services/repository}/gitgraph/graph_test.go (100%) rename {modules => services/repository}/gitgraph/parser.go (100%) diff --git a/routers/web/repo/commit.go b/routers/web/repo/commit.go index 2feb898224..c2436a1c59 100644 --- a/routers/web/repo/commit.go +++ b/routers/web/repo/commit.go @@ -21,7 +21,6 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/charset" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/gitgraph" "code.gitea.io/gitea/modules/gitrepo" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/markup" @@ -32,6 +31,7 @@ import ( "code.gitea.io/gitea/services/forms" "code.gitea.io/gitea/services/gitdiff" git_service "code.gitea.io/gitea/services/repository" + "code.gitea.io/gitea/services/repository/gitgraph" ) const ( diff --git a/modules/gitgraph/graph.go b/services/repository/gitgraph/graph.go similarity index 100% rename from modules/gitgraph/graph.go rename to services/repository/gitgraph/graph.go diff --git a/modules/gitgraph/graph_models.go b/services/repository/gitgraph/graph_models.go similarity index 100% rename from modules/gitgraph/graph_models.go rename to services/repository/gitgraph/graph_models.go diff --git a/modules/gitgraph/graph_test.go b/services/repository/gitgraph/graph_test.go similarity index 100% rename from modules/gitgraph/graph_test.go rename to services/repository/gitgraph/graph_test.go diff --git a/modules/gitgraph/parser.go b/services/repository/gitgraph/parser.go similarity index 100% rename from modules/gitgraph/parser.go rename to services/repository/gitgraph/parser.go From 65fa66fb18aa50139fe2d66e2b7d8add29eb0e28 Mon Sep 17 00:00:00 2001 From: Kerwin Bryant Date: Sun, 9 Feb 2025 00:13:41 +0800 Subject: [PATCH 04/38] Add "No data available" display when list is empty (#33517) Add a "No data available" message to be displayed when the list has no data. This improves the user experience by providing clear feedback in an empty state. --------- Co-authored-by: wxiaoguang (cherry picked from commit a52720b5b4da3e324034312f7fe1e29fd22686cc) --- templates/admin/auth/list.tmpl | 2 ++ templates/admin/emails/list.tmpl | 2 ++ templates/admin/notice.tmpl | 2 ++ templates/admin/org/list.tmpl | 2 ++ templates/admin/packages/list.tmpl | 2 ++ templates/admin/repo/list.tmpl | 2 ++ templates/admin/user/list.tmpl | 2 ++ tests/integration/auth_ldap_test.go | 2 +- 8 files changed, 15 insertions(+), 1 deletion(-) diff --git a/templates/admin/auth/list.tmpl b/templates/admin/auth/list.tmpl index c162b7b74d..9c283fe3d8 100644 --- a/templates/admin/auth/list.tmpl +++ b/templates/admin/auth/list.tmpl @@ -30,6 +30,8 @@ {{DateUtils.AbsoluteShort .CreatedUnix}} {{svg "octicon-pencil"}} + {{else}} + {{ctx.Locale.Tr "no_results_found"}} {{end}} diff --git a/templates/admin/emails/list.tmpl b/templates/admin/emails/list.tmpl index b07c6fcc01..8796794aee 100644 --- a/templates/admin/emails/list.tmpl +++ b/templates/admin/emails/list.tmpl @@ -66,6 +66,8 @@ + {{else}} + {{ctx.Locale.Tr "no_results_found"}} {{end}} diff --git a/templates/admin/notice.tmpl b/templates/admin/notice.tmpl index 04a0b64432..4f8783dd42 100644 --- a/templates/admin/notice.tmpl +++ b/templates/admin/notice.tmpl @@ -24,6 +24,8 @@ {{DateUtils.AbsoluteShort .CreatedUnix}} {{svg "octicon-note" 16}} + {{else}} + {{ctx.Locale.Tr "no_results_found"}} {{end}} {{if .Notices}} diff --git a/templates/admin/org/list.tmpl b/templates/admin/org/list.tmpl index d0805c85bc..b719d259e0 100644 --- a/templates/admin/org/list.tmpl +++ b/templates/admin/org/list.tmpl @@ -66,6 +66,8 @@ {{DateUtils.AbsoluteShort .CreatedUnix}} {{svg "octicon-pencil"}} + {{else}} + {{ctx.Locale.Tr "no_results_found"}} {{end}} diff --git a/templates/admin/packages/list.tmpl b/templates/admin/packages/list.tmpl index aa38731d4f..f22600a449 100644 --- a/templates/admin/packages/list.tmpl +++ b/templates/admin/packages/list.tmpl @@ -74,6 +74,8 @@ {{DateUtils.AbsoluteShort .Version.CreatedUnix}} {{svg "octicon-trash"}} + {{else}} + {{ctx.Locale.Tr "no_results_found"}} {{end}} diff --git a/templates/admin/repo/list.tmpl b/templates/admin/repo/list.tmpl index c4924c3fac..0422705ea9 100644 --- a/templates/admin/repo/list.tmpl +++ b/templates/admin/repo/list.tmpl @@ -86,6 +86,8 @@ {{DateUtils.AbsoluteShort .CreatedUnix}} {{svg "octicon-trash"}} + {{else}} + {{ctx.Locale.Tr "no_results_found"}} {{end}} diff --git a/templates/admin/user/list.tmpl b/templates/admin/user/list.tmpl index 9b3447f44a..f4609edbbf 100644 --- a/templates/admin/user/list.tmpl +++ b/templates/admin/user/list.tmpl @@ -109,6 +109,8 @@ + {{else}} + {{ctx.Locale.Tr "no_results_found"}} {{end}} diff --git a/tests/integration/auth_ldap_test.go b/tests/integration/auth_ldap_test.go index 62a7d18904..e8b38afeb1 100644 --- a/tests/integration/auth_ldap_test.go +++ b/tests/integration/auth_ldap_test.go @@ -283,7 +283,7 @@ func TestLDAPUserSyncWithEmptyUsernameAttribute(t *testing.T) { htmlDoc := NewHTMLParser(t, resp.Body) - tr := htmlDoc.doc.Find("table.table tbody tr") + tr := htmlDoc.doc.Find("table.table tbody tr:not(.no-results-row)") assert.Equal(t, 0, tr.Length()) } From 3d708aeee6a186f2d9417eef7e25aedb6ce45382 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 9 Feb 2025 10:34:12 +0100 Subject: [PATCH 05/38] chore: update deadcode --- .deadcode-out | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.deadcode-out b/.deadcode-out index 403a6e40d2..2a4f1c7f2d 100644 --- a/.deadcode-out +++ b/.deadcode-out @@ -103,9 +103,6 @@ code.gitea.io/gitea/modules/git openRepositoryWithDefaultContext ToEntryMode -code.gitea.io/gitea/modules/gitgraph - Parser.Reset - code.gitea.io/gitea/modules/gitrepo GetBranchCommitID GetWikiDefaultBranch @@ -224,6 +221,9 @@ code.gitea.io/gitea/services/repository code.gitea.io/gitea/services/repository/files ContentType.String +code.gitea.io/gitea/services/repository/gitgraph + Parser.Reset + code.gitea.io/gitea/services/webhook NewNotifier From c6ab10c1babc32c768f40c5c35c4b0fa44c727ed Mon Sep 17 00:00:00 2001 From: Beowulf Date: Sun, 9 Feb 2025 00:35:14 +0100 Subject: [PATCH 06/38] feat(ui): Display to maintainers in PR when it is editable --- options/locale/locale_en-US.ini | 3 ++ templates/repo/issue/view_title.tmpl | 5 +++ tests/integration/pull_editable_test.go | 54 +++++++++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 tests/integration/pull_editable_test.go diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index deff5f471e..cad61a225e 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1996,6 +1996,9 @@ pulls.reopen_failed.base_branch = The pull request cannot be reopened, because t pulls.made_using_agit = AGit pulls.agit_explanation = Created using the AGit workflow. AGit lets contributors propose changes using "git push" without creating a fork or a new branch. +pulls.editable = Editable +pulls.editable_explanation = This pull request allows edits from maintainers. You can contribute directly to it. + pulls.auto_merge_button_when_succeed = (When checks succeed) pulls.auto_merge_when_succeed = Auto merge when all checks succeed pulls.auto_merge_newly_scheduled = The pull request was scheduled to merge when all checks succeed. diff --git a/templates/repo/issue/view_title.tmpl b/templates/repo/issue/view_title.tmpl index 936df9d3d2..6f65807b88 100644 --- a/templates/repo/issue/view_title.tmpl +++ b/templates/repo/issue/view_title.tmpl @@ -95,6 +95,11 @@ {{end}} + {{if and .Issue.PullRequest.AllowMaintainerEdit .CanWriteCode}} + + {{ctx.Locale.Tr "repo.pulls.editable"}} + + {{end}} +{{if not .DisablePassword}}
{{template "user/auth/webauthn_error" .}} @@ -65,3 +66,5 @@
+{{end}} + diff --git a/tests/integration/disable_forgotten_password_test.go b/tests/integration/disable_forgotten_password_test.go new file mode 100644 index 0000000000..8a50c8d409 --- /dev/null +++ b/tests/integration/disable_forgotten_password_test.go @@ -0,0 +1,39 @@ +package integration + +import ( + "net/http" + "testing" + + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/test" + "code.gitea.io/gitea/tests" +) + +func TestDisableForgottenPasswordFalse(t *testing.T) { + defer tests.PrepareTestEnv(t)() + defer test.MockVariableValue(&setting.Service.EnableInternalSignIn, true)() + + req := NewRequest(t, "GET", "/user/login/") + resp := MakeRequest(t, req, http.StatusOK) + htmlDoc := NewHTMLParser(t, resp.Body) + htmlDoc.AssertElement(t, "a[href='/user/forgot_password']", true) +} + +func TestDisableForgottenPasswordTrue(t *testing.T) { + defer tests.PrepareTestEnv(t)() + defer test.MockVariableValue(&setting.Service.EnableInternalSignIn, false)() + + req := NewRequest(t, "GET", "/user/login/") + resp := MakeRequest(t, req, http.StatusOK) + htmlDoc := NewHTMLParser(t, resp.Body) + htmlDoc.AssertElement(t, "a[href='/user/forgot_password']", false) +} + +func TestDisableForgottenPasswordDefault(t *testing.T) { + defer tests.PrepareTestEnv(t)() + + req := NewRequest(t, "GET", "/user/login/") + resp := MakeRequest(t, req, http.StatusOK) + htmlDoc := NewHTMLParser(t, resp.Body) + htmlDoc.AssertElement(t, "a[href='/user/forgot_password']", true) +} From df232e1a8fb6a0274e1bdff8cb37226986881030 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 14 Feb 2025 12:57:09 +0000 Subject: [PATCH 24/38] Update module github.com/buildkite/terminal-to-html/v3 to v3.16.5 (forgejo) (#6916) Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6916 Reviewed-by: Gusted Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 0746c4ab42..c0a97b21fd 100644 --- a/go.mod +++ b/go.mod @@ -26,7 +26,7 @@ require ( github.com/alecthomas/chroma/v2 v2.15.0 github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb github.com/blevesearch/bleve/v2 v2.4.4 - github.com/buildkite/terminal-to-html/v3 v3.16.4 + github.com/buildkite/terminal-to-html/v3 v3.16.5 github.com/caddyserver/certmagic v0.21.7 github.com/chi-middleware/proxy v1.1.1 github.com/djherbis/buffer v1.2.0 diff --git a/go.sum b/go.sum index 1df46c9df9..b2d734d636 100644 --- a/go.sum +++ b/go.sum @@ -768,8 +768,8 @@ github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= -github.com/buildkite/terminal-to-html/v3 v3.16.4 h1:QFYO8IGvRnp7tGgiQb8g9uFU8kY9wOzxsFFx17+yy6Q= -github.com/buildkite/terminal-to-html/v3 v3.16.4/go.mod h1:r/J7cC9c3EzBzP3/wDz0RJLPwv5PUAMp+KF2w+ntMc0= +github.com/buildkite/terminal-to-html/v3 v3.16.5 h1:s/8NElw/Yhm09jKdMq4nY31tjcFMgHukjLfPrqxApcQ= +github.com/buildkite/terminal-to-html/v3 v3.16.5/go.mod h1:PgzeBymbRFC8I2m46Sci3S18AbwonEgpaz3TGhD7EPs= github.com/caddyserver/certmagic v0.21.7 h1:66KJioPFJwttL43KYSWk7ErSmE6LfaJgCQuhm8Sg6fg= github.com/caddyserver/certmagic v0.21.7/go.mod h1:LCPG3WLxcnjVKl/xpjzM0gqh0knrKKKiO5WVttX2eEI= github.com/caddyserver/zerossl v0.1.3 h1:onS+pxp3M8HnHpN5MMbOMyNjmTheJyWRaZYwn+YTAyA= From 486acb04fa3bab041fc29e251f4381760028f2a3 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 15 Feb 2025 12:44:33 +0000 Subject: [PATCH 25/38] Update module github.com/minio/minio-go/v7 to v7.0.86 (forgejo) (#6945) Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6945 Reviewed-by: Gusted Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- assets/go-licenses.json | 5 +++++ go.mod | 5 +++-- go.sum | 10 ++++++---- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/assets/go-licenses.json b/assets/go-licenses.json index 2c6bf78ec7..61e1717ffa 100644 --- a/assets/go-licenses.json +++ b/assets/go-licenses.json @@ -739,6 +739,11 @@ "path": "github.com/miekg/dns/LICENSE", "licenseText": "BSD 3-Clause License\n\nCopyright (c) 2009, The Go Authors. Extensions copyright (c) 2011, Miek Gieben. \nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, + { + "name": "github.com/minio/crc64nvme", + "path": "github.com/minio/crc64nvme/LICENSE", + "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + }, { "name": "github.com/minio/md5-simd", "path": "github.com/minio/md5-simd/LICENSE", diff --git a/go.mod b/go.mod index c0a97b21fd..bd8130ef81 100644 --- a/go.mod +++ b/go.mod @@ -76,7 +76,7 @@ require ( github.com/meilisearch/meilisearch-go v0.29.0 github.com/mholt/archiver/v3 v3.5.1 github.com/microcosm-cc/bluemonday v1.0.27 - github.com/minio/minio-go/v7 v7.0.85 + github.com/minio/minio-go/v7 v7.0.86 github.com/msteinert/pam v1.2.0 github.com/nektos/act v0.2.52 github.com/niklasfasching/go-org v1.7.0 @@ -193,7 +193,7 @@ require ( github.com/go-openapi/jsonreference v0.20.4 // indirect github.com/go-openapi/swag v0.22.7 // indirect github.com/go-webauthn/x v0.1.14 // indirect - github.com/goccy/go-json v0.10.4 // indirect + github.com/goccy/go-json v0.10.5 // indirect github.com/golang-jwt/jwt/v4 v4.5.0 // indirect github.com/golang/geo v0.0.0-20230421003525-6adc56603217 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect @@ -223,6 +223,7 @@ require ( github.com/mattn/go-runewidth v0.0.16 // indirect github.com/mholt/acmez/v3 v3.0.1 // indirect github.com/miekg/dns v1.1.62 // indirect + github.com/minio/crc64nvme v1.0.0 // indirect github.com/minio/md5-simd v1.1.2 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect diff --git a/go.sum b/go.sum index b2d734d636..dc79b6663a 100644 --- a/go.sum +++ b/go.sum @@ -975,8 +975,8 @@ github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u1 github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/goccy/go-json v0.10.4 h1:JSwxQzIqKfmFX1swYPpUThQZp/Ka4wzJdK0LWVytLPM= -github.com/goccy/go-json v0.10.4/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= +github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f h1:3BSP1Tbs2djlpprl7wCLuiqMaUh5SJkkzI2gDs+FgLs= github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f/go.mod h1:Pcatq5tYkCW2Q6yrR2VRHlbHpZ/R4/7qyL1TCF7vl14= github.com/gogs/go-gogs-client v0.0.0-20210131175652-1d7215cd8d85 h1:UjoPNDAQ5JPCjlxoJd6K8ALZqSDDhk2ymieAZOVaDg0= @@ -1261,10 +1261,12 @@ github.com/miekg/dns v1.1.62 h1:cN8OuEF1/x5Rq6Np+h1epln8OiyPWV+lROx9LxcGgIQ= github.com/miekg/dns v1.1.62/go.mod h1:mvDlcItzm+br7MToIKqkglaGhlFMHJ9DTNNWONWXbNQ= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= +github.com/minio/crc64nvme v1.0.0 h1:MeLcBkCTD4pAoU7TciAfwsfxgkhM2u5hCe48hSEVFr0= +github.com/minio/crc64nvme v1.0.0/go.mod h1:eVfm2fAzLlxMdUGc0EEBGSMmPwmXD5XiNRpnu9J3bvg= github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34= github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM= -github.com/minio/minio-go/v7 v7.0.85 h1:9psTLS/NTvC3MWoyjhjXpwcKoNbkongaCSF3PNpSuXo= -github.com/minio/minio-go/v7 v7.0.85/go.mod h1:57YXpvc5l3rjPdhqNrDsvVlY0qPI6UTk1bflAe+9doY= +github.com/minio/minio-go/v7 v7.0.86 h1:DcgQ0AUjLJzRH6y/HrxiZ8CXarA70PAIufXHodP4s+k= +github.com/minio/minio-go/v7 v7.0.86/go.mod h1:VbfO4hYwUu3Of9WqGLBZ8vl3Hxnxo4ngxK4hzQDf4x4= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= From 7104c73c9656b16269b7f81fea78e4478c062d8c Mon Sep 17 00:00:00 2001 From: Beowulf Date: Sat, 15 Feb 2025 12:55:59 +0000 Subject: [PATCH 26/38] fix: Also substitute `COPYRIGHT HOLDER` and `the organization` in BSD 4-Clause license (#6942) Fixes #6864 Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6942 Reviewed-by: Earl Warren Reviewed-by: Gusted Co-authored-by: Beowulf Co-committed-by: Beowulf --- modules/repository/license.go | 4 ++++ modules/repository/license_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/modules/repository/license.go b/modules/repository/license.go index 07ae92ca70..dcbefc8ded 100644 --- a/modules/repository/license.go +++ b/modules/repository/license.go @@ -1,4 +1,5 @@ // Copyright 2023 The Gitea Authors. All rights reserved. +// Copyright 2025 The Forgejo Authors. All rights reserved. // SPDX-License-Identifier: MIT package repository @@ -107,6 +108,9 @@ func getLicensePlaceholder(name string) *licensePlaceholder { } // Other special placeholders can be added here. + } else if name == "BSD-4-Clause" { + ret.Owner = append(ret.Owner, "COPYRIGHT HOLDER") + ret.Owner = append(ret.Owner, "the organization") } return ret } diff --git a/modules/repository/license_test.go b/modules/repository/license_test.go index a7d77743ac..3195f15dda 100644 --- a/modules/repository/license_test.go +++ b/modules/repository/license_test.go @@ -1,4 +1,5 @@ // Copyright 2023 The Gitea Authors. All rights reserved. +// Copyright 2025 The Forgejo Authors. All rights reserved. // SPDX-License-Identifier: MIT package repository @@ -170,6 +171,31 @@ Copyright (C) 2023 by Gitea teabot@gitea.io ... ... THE AUTHOR BE LIABLE FOR ... +`, + }, + { + name: "BSD-4-Clause", + args: args{ + name: "BSD-4-Clause", + values: &LicenseValues{Year: "2025", Owner: "Forgejo", Email: "hello@forgejo.org", Repo: "forgejo"}, + origin: ` +Copyright (c) . All rights reserved. + +... includes software developed by the organization. + +... Neither the name of the copyright holder nor + +... PROVIDED BY COPYRIGHT HOLDER "AS IS" ... NO EVENT SHALL COPYRIGHT HOLDER BE LIABLE ... +`, + }, + want: ` +Copyright (c) 2025 Forgejo. All rights reserved. + +... includes software developed by Forgejo. + +... Neither the name of the copyright holder nor + +... PROVIDED BY Forgejo "AS IS" ... NO EVENT SHALL Forgejo BE LIABLE ... `, }, } From a1486b0ee4feb569876ec65d9ba2030e70074557 Mon Sep 17 00:00:00 2001 From: "Panagiotis \"Ivory\" Vasilopoulos" Date: Sat, 15 Feb 2025 13:07:15 +0000 Subject: [PATCH 27/38] feat: add pronoun privacy option (#6773) This commit contains UI changes, tests and migrations for a feature that lets users optionally hide their pronouns from the general public. This is useful if a person wants to disclose that information to a smaller set of people on a local instance belonging to a local community/association. Co-authored-by: Gusted Co-authored-by: Beowulf Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6773 Reviewed-by: Gusted Co-authored-by: Panagiotis "Ivory" Vasilopoulos Co-committed-by: Panagiotis "Ivory" Vasilopoulos --- models/fixtures/user.yml | 2 + models/forgejo_migrations/migrate.go | 2 + models/forgejo_migrations/v29.go | 15 ++++ models/user/user.go | 11 +++ models/user/user_test.go | 39 ++++++++++ modules/structs/user.go | 2 + options/locale/locale_en-US.ini | 4 +- routers/api/v1/user/settings.go | 1 + routers/common/auth.go | 1 + routers/web/user/setting/profile.go | 1 + services/convert/user.go | 3 +- services/forms/user_form.go | 1 + services/user/update.go | 7 ++ templates/shared/user/profile_big_avatar.tmpl | 2 +- templates/swagger/v1_json.tmpl | 8 ++ templates/user/settings/profile.tmpl | 6 ++ tests/integration/user_test.go | 78 +++++++++++++------ 17 files changed, 158 insertions(+), 25 deletions(-) create mode 100644 models/forgejo_migrations/v29.go diff --git a/models/fixtures/user.yml b/models/fixtures/user.yml index c23abbb17e..630505b8b4 100644 --- a/models/fixtures/user.yml +++ b/models/fixtures/user.yml @@ -45,6 +45,7 @@ full_name: ' < Ur Tw >< ' email: user2@example.com keep_email_private: true + keep_pronouns_private: true email_notifications_preference: enabled passwd: ZogKvWdyEx:password passwd_hash_algo: dummy @@ -350,6 +351,7 @@ full_name: User Ten email: user10@example.com keep_email_private: false + keep_pronouns_private: true email_notifications_preference: enabled passwd: ZogKvWdyEx:password passwd_hash_algo: dummy diff --git a/models/forgejo_migrations/migrate.go b/models/forgejo_migrations/migrate.go index 1450ad3c54..4bc17a4288 100644 --- a/models/forgejo_migrations/migrate.go +++ b/models/forgejo_migrations/migrate.go @@ -92,6 +92,8 @@ var migrations = []*Migration{ NewMigration("Add `hash_blake2b` column to `package_blob` table", AddHashBlake2bToPackageBlob), // v27 -> v28 NewMigration("Add `created_unix` column to `user_redirect` table", AddCreatedUnixToRedirect), + // v28 -> v29 + NewMigration("Add pronoun privacy settings to user", AddHidePronounsOptionToUser), } // GetCurrentDBVersion returns the current Forgejo database version. diff --git a/models/forgejo_migrations/v29.go b/models/forgejo_migrations/v29.go new file mode 100644 index 0000000000..cba888d2ec --- /dev/null +++ b/models/forgejo_migrations/v29.go @@ -0,0 +1,15 @@ +// Copyright 2024 The Forgejo Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package forgejo_migrations //nolint:revive + +import "xorm.io/xorm" + +func AddHidePronounsOptionToUser(x *xorm.Engine) error { + type User struct { + ID int64 `xorm:"pk autoincr"` + KeepPronounsPrivate bool `xorm:"NOT NULL DEFAULT false"` + } + + return x.Sync(&User{}) +} diff --git a/models/user/user.go b/models/user/user.go index f986ac5482..846190a648 100644 --- a/models/user/user.go +++ b/models/user/user.go @@ -154,6 +154,7 @@ type User struct { DiffViewStyle string `xorm:"NOT NULL DEFAULT ''"` Theme string `xorm:"NOT NULL DEFAULT ''"` KeepActivityPrivate bool `xorm:"NOT NULL DEFAULT false"` + KeepPronounsPrivate bool `xorm:"NOT NULL DEFAULT false"` EnableRepoUnitHints bool `xorm:"NOT NULL DEFAULT true"` } @@ -500,6 +501,16 @@ func (u *User) GetCompleteName() string { return u.Name } +// GetPronouns returns an empty string, if the user has set to keep his +// pronouns private from non-logged in users, otherwise the pronouns +// are returned. +func (u *User) GetPronouns(signed bool) string { + if u.KeepPronounsPrivate && !signed { + return "" + } + return u.Pronouns +} + func gitSafeName(name string) string { return strings.TrimSpace(strings.NewReplacer("\n", "", "<", "", ">", "").Replace(name)) } diff --git a/models/user/user_test.go b/models/user/user_test.go index 263c38933a..e3479943e3 100644 --- a/models/user/user_test.go +++ b/models/user/user_test.go @@ -795,3 +795,42 @@ func TestGetInactiveUsers(t *testing.T) { require.NoError(t, err) require.Empty(t, users) } + +func TestPronounsPrivacy(t *testing.T) { + require.NoError(t, unittest.PrepareTestDatabase()) + t.Run("EmptyPronounsIfNoneSet", func(t *testing.T) { + user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) + user.Pronouns = "" + user.KeepPronounsPrivate = false + + assert.Equal(t, "", user.GetPronouns(false)) + }) + t.Run("EmptyPronounsIfSetButPrivateAndNotLoggedIn", func(t *testing.T) { + user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) + user.Pronouns = "any" + user.KeepPronounsPrivate = true + + assert.Equal(t, "", user.GetPronouns(false)) + }) + t.Run("ReturnPronounsIfSetAndNotPrivateAndNotLoggedIn", func(t *testing.T) { + user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) + user.Pronouns = "any" + user.KeepPronounsPrivate = false + + assert.Equal(t, "any", user.GetPronouns(false)) + }) + t.Run("ReturnPronounsIfSetAndPrivateAndLoggedIn", func(t *testing.T) { + user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) + user.Pronouns = "any" + user.KeepPronounsPrivate = false + + assert.Equal(t, "any", user.GetPronouns(true)) + }) + t.Run("ReturnPronounsIfSetAndNotPrivateAndLoggedIn", func(t *testing.T) { + user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) + user.Pronouns = "any" + user.KeepPronounsPrivate = true + + assert.Equal(t, "any", user.GetPronouns(true)) + }) +} diff --git a/modules/structs/user.go b/modules/structs/user.go index f2747b1473..2dd3051c50 100644 --- a/modules/structs/user.go +++ b/modules/structs/user.go @@ -84,6 +84,7 @@ type UserSettings struct { EnableRepoUnitHints bool `json:"enable_repo_unit_hints"` // Privacy HideEmail bool `json:"hide_email"` + HidePronouns bool `json:"hide_pronouns"` HideActivity bool `json:"hide_activity"` } @@ -101,6 +102,7 @@ type UserSettingsOptions struct { EnableRepoUnitHints *bool `json:"enable_repo_unit_hints"` // Privacy HideEmail *bool `json:"hide_email"` + HidePronouns *bool `json:"hide_pronouns"` HideActivity *bool `json:"hide_activity"` } diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 03f3af7415..ae6bc53924 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -853,6 +853,8 @@ email_preference_set_success = Email preference has been set successfully. add_openid_success = The new OpenID address has been added. keep_email_private = Hide email address keep_email_private_popup = Your email address will not be shown on your profile and will not be the default for commits made via the web interface, like file uploads, edits, and merge commits. Instead, a special address %s can be used to link commits to your account. This option will not affect existing commits. +keep_pronouns_private = Only show pronouns to authenticated users +keep_pronouns_private.description = This will hide your pronouns from visitors that are not logged in. openid_desc = OpenID lets you delegate authentication to an external provider. manage_ssh_keys = Manage SSH keys @@ -3935,4 +3937,4 @@ filepreview.lines = Lines %[1]d to %[2]d in %[3]s filepreview.truncated = Preview has been truncated [translation_meta] -test = This is a test string. It is not displayed in Forgejo UI but is used for testing purposes. Feel free to enter "ok" to save time (or a fun fact of your choice) to hit that sweet 100% completion mark :) \ No newline at end of file +test = This is a test string. It is not displayed in Forgejo UI but is used for testing purposes. Feel free to enter "ok" to save time (or a fun fact of your choice) to hit that sweet 100% completion mark :) diff --git a/routers/api/v1/user/settings.go b/routers/api/v1/user/settings.go index 173f06e474..67ab0dd964 100644 --- a/routers/api/v1/user/settings.go +++ b/routers/api/v1/user/settings.go @@ -63,6 +63,7 @@ func UpdateUserSettings(ctx *context.APIContext) { Theme: optional.FromPtr(form.Theme), DiffViewStyle: optional.FromPtr(form.DiffViewStyle), KeepEmailPrivate: optional.FromPtr(form.HideEmail), + KeepPronounsPrivate: optional.FromPtr(form.HidePronouns), KeepActivityPrivate: optional.FromPtr(form.HideActivity), EnableRepoUnitHints: optional.FromPtr(form.EnableRepoUnitHints), } diff --git a/routers/common/auth.go b/routers/common/auth.go index 115d65ed10..722c625e7b 100644 --- a/routers/common/auth.go +++ b/routers/common/auth.go @@ -31,6 +31,7 @@ func AuthShared(ctx *context.Base, sessionStore auth_service.SessionStore, authM ctx.Data["SignedUserID"] = ar.Doer.ID ctx.Data["IsAdmin"] = ar.Doer.IsAdmin } else { + ctx.Data["IsSigned"] = false ctx.Data["SignedUserID"] = int64(0) } return ar, nil diff --git a/routers/web/user/setting/profile.go b/routers/web/user/setting/profile.go index 818da9e3fa..33b2919d69 100644 --- a/routers/web/user/setting/profile.go +++ b/routers/web/user/setting/profile.go @@ -106,6 +106,7 @@ func ProfilePost(ctx *context.Context) { Location: optional.Some(form.Location), Visibility: optional.Some(form.Visibility), KeepActivityPrivate: optional.Some(form.KeepActivityPrivate), + KeepPronounsPrivate: optional.Some(form.KeepPronounsPrivate), } if err := user_service.UpdateUser(ctx, ctx.Doer, opts); err != nil { ctx.ServerError("UpdateUser", err) diff --git a/services/convert/user.go b/services/convert/user.go index 94a400de5d..7b6775dfb4 100644 --- a/services/convert/user.go +++ b/services/convert/user.go @@ -57,7 +57,7 @@ func toUser(ctx context.Context, user *user_model.User, signed, authed bool) *ap Created: user.CreatedUnix.AsTime(), Restricted: user.IsRestricted, Location: user.Location, - Pronouns: user.Pronouns, + Pronouns: user.GetPronouns(signed), Website: user.Website, Description: user.Description, // counter's @@ -97,6 +97,7 @@ func User2UserSettings(user *user_model.User) api.UserSettings { Description: user.Description, Theme: user.Theme, HideEmail: user.KeepEmailPrivate, + HidePronouns: user.KeepPronounsPrivate, HideActivity: user.KeepActivityPrivate, DiffViewStyle: user.DiffViewStyle, EnableRepoUnitHints: user.EnableRepoUnitHints, diff --git a/services/forms/user_form.go b/services/forms/user_form.go index 0d06f4b417..d76e97ceb1 100644 --- a/services/forms/user_form.go +++ b/services/forms/user_form.go @@ -224,6 +224,7 @@ type UpdateProfileForm struct { Biography string `binding:"MaxSize(255)"` Visibility structs.VisibleType KeepActivityPrivate bool + KeepPronounsPrivate bool } // Validate validates the fields diff --git a/services/user/update.go b/services/user/update.go index 26c90505c8..62c30ac05f 100644 --- a/services/user/update.go +++ b/services/user/update.go @@ -40,6 +40,7 @@ type UpdateOptions struct { SetLastLogin bool RepoAdminChangeTeamAccess optional.Option[bool] EnableRepoUnitHints optional.Option[bool] + KeepPronounsPrivate optional.Option[bool] } func UpdateUser(ctx context.Context, u *user_model.User, opts *UpdateOptions) error { @@ -97,6 +98,12 @@ func UpdateUser(ctx context.Context, u *user_model.User, opts *UpdateOptions) er cols = append(cols, "enable_repo_unit_hints") } + if opts.KeepPronounsPrivate.Has() { + u.KeepPronounsPrivate = opts.KeepPronounsPrivate.Value() + + cols = append(cols, "keep_pronouns_private") + } + if opts.AllowGitHook.Has() { u.AllowGitHook = opts.AllowGitHook.Value() diff --git a/templates/shared/user/profile_big_avatar.tmpl b/templates/shared/user/profile_big_avatar.tmpl index c09fed5f1e..d718fa390f 100644 --- a/templates/shared/user/profile_big_avatar.tmpl +++ b/templates/shared/user/profile_big_avatar.tmpl @@ -16,7 +16,7 @@
{{if .ContextUser.FullName}}{{.ContextUser.FullName}}{{end}} - {{.ContextUser.Name}}{{if .ContextUser.Pronouns}} · {{.ContextUser.Pronouns}}{{end}} {{if .IsAdmin}} + {{.ContextUser.Name}} {{if .ContextUser.GetPronouns .IsSigned}} · {{.ContextUser.GetPronouns .IsSigned}}{{end}} {{if .IsAdmin}} {{svg "octicon-gear" 18}} diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl index c7cb257e21..cfe6ae7656 100644 --- a/templates/swagger/v1_json.tmpl +++ b/templates/swagger/v1_json.tmpl @@ -27954,6 +27954,10 @@ "type": "boolean", "x-go-name": "HideEmail" }, + "hide_pronouns": { + "type": "boolean", + "x-go-name": "HidePronouns" + }, "language": { "type": "string", "x-go-name": "Language" @@ -28006,6 +28010,10 @@ "type": "boolean", "x-go-name": "HideEmail" }, + "hide_pronouns": { + "type": "boolean", + "x-go-name": "HidePronouns" + }, "language": { "type": "string", "x-go-name": "Language" diff --git a/templates/user/settings/profile.tmpl b/templates/user/settings/profile.tmpl index 4cc30d66cf..503a977158 100644 --- a/templates/user/settings/profile.tmpl +++ b/templates/user/settings/profile.tmpl @@ -120,6 +120,12 @@ {{ctx.Locale.Tr "settings.keep_activity_private"}} {{ctx.Locale.Tr "settings.keep_activity_private.description" (printf "/%s?tab=activity" .SignedUser.Name)}} + + diff --git a/tests/integration/user_test.go b/tests/integration/user_test.go index d2b5f112a3..3da8a3ae1d 100644 --- a/tests/integration/user_test.go +++ b/tests/integration/user_test.go @@ -438,8 +438,16 @@ func TestUserHints(t *testing.T) { func TestUserPronouns(t *testing.T) { defer tests.PrepareTestEnv(t)() - session := loginUser(t, "user2") - token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteUser) + // user1 is admin, using user2 and user10 respectively instead. + // This is explicitly mentioned here because of the unconventional + // variable naming scheme. + firstUserSession := loginUser(t, "user2") + firstUserToken := getTokenForLoggedInUser(t, firstUserSession, auth_model.AccessTokenScopeWriteUser) + + // This user has the HidePronouns setting enabled. + // Check the fixture! + secondUserSession := loginUser(t, "user10") + secondUserToken := getTokenForLoggedInUser(t, secondUserSession, auth_model.AccessTokenScopeWriteUser) adminUser := unittest.AssertExistsAndLoadBean(t, &user_model.User{IsAdmin: true}) adminSession := loginUser(t, adminUser.Name) @@ -449,8 +457,10 @@ func TestUserPronouns(t *testing.T) { t.Run("user", func(t *testing.T) { defer tests.PrintCurrentTest(t)() - req := NewRequest(t, "GET", "/api/v1/user").AddTokenAuth(token) - resp := MakeRequest(t, req, http.StatusOK) + // secondUserToken was chosen arbitrarily and should have no impact. + // See next comment. + req := NewRequest(t, "GET", "/api/v1/user").AddTokenAuth(secondUserToken) + resp := firstUserSession.MakeRequest(t, req, http.StatusOK) // We check the raw JSON, because we want to test the response, not // what it decodes into. Contents doesn't matter, we're testing the @@ -468,16 +478,22 @@ func TestUserPronouns(t *testing.T) { // what it decodes into. Contents doesn't matter, we're testing the // presence only. assert.Contains(t, resp.Body.String(), `"pronouns":`) + + req = NewRequest(t, "GET", "/api/v1/users/user10") + resp = MakeRequest(t, req, http.StatusOK) + + // Same deal here. + assert.Contains(t, resp.Body.String(), `"pronouns":`) }) t.Run("user/settings", func(t *testing.T) { defer tests.PrintCurrentTest(t)() - // Set pronouns first + // Set pronouns first for user2 pronouns := "they/them" req := NewRequestWithJSON(t, "PATCH", "/api/v1/user/settings", &api.UserSettingsOptions{ Pronouns: &pronouns, - }).AddTokenAuth(token) + }).AddTokenAuth(firstUserToken) resp := MakeRequest(t, req, http.StatusOK) // Verify the response @@ -486,7 +502,7 @@ func TestUserPronouns(t *testing.T) { assert.Equal(t, pronouns, user.Pronouns) // Verify retrieving the settings again - req = NewRequest(t, "GET", "/api/v1/user/settings").AddTokenAuth(token) + req = NewRequest(t, "GET", "/api/v1/user/settings").AddTokenAuth(firstUserToken) resp = MakeRequest(t, req, http.StatusOK) DecodeJSON(t, resp, &user) @@ -497,22 +513,40 @@ func TestUserPronouns(t *testing.T) { defer tests.PrintCurrentTest(t)() // Set the pronouns for user2 - pronouns := "she/her" + pronouns := "he/him" req := NewRequestWithJSON(t, "PATCH", "/api/v1/admin/users/user2", &api.EditUserOption{ Pronouns: &pronouns, }).AddTokenAuth(adminToken) resp := MakeRequest(t, req, http.StatusOK) // Verify the API response - var user *api.User - DecodeJSON(t, resp, &user) - assert.Equal(t, pronouns, user.Pronouns) + var user2 *api.User + DecodeJSON(t, resp, &user2) + assert.Equal(t, pronouns, user2.Pronouns) - // Verify via user2 too - req = NewRequest(t, "GET", "/api/v1/user").AddTokenAuth(token) + // Verify via user2 + req = NewRequest(t, "GET", "/api/v1/user").AddTokenAuth(firstUserToken) resp = MakeRequest(t, req, http.StatusOK) - DecodeJSON(t, resp, &user) - assert.Equal(t, pronouns, user.Pronouns) + DecodeJSON(t, resp, &user2) + assert.Equal(t, pronouns, user2.Pronouns) // TODO: This fails for some reason + + // Set the pronouns for user10 + pronouns = "he/him" + req = NewRequestWithJSON(t, "PATCH", "/api/v1/admin/users/user10", &api.EditUserOption{ + Pronouns: &pronouns, + }).AddTokenAuth(adminToken) + resp = MakeRequest(t, req, http.StatusOK) + + // Verify the API response + var user10 *api.User + DecodeJSON(t, resp, &user10) + assert.Equal(t, pronouns, user10.Pronouns) + + // Verify via user10 + req = NewRequest(t, "GET", "/api/v1/user").AddTokenAuth(secondUserToken) + resp = MakeRequest(t, req, http.StatusOK) + DecodeJSON(t, resp, &user10) + assert.Equal(t, pronouns, user10.Pronouns) }) }) @@ -520,10 +554,10 @@ func TestUserPronouns(t *testing.T) { defer tests.PrintCurrentTest(t)() // Set the pronouns to a known state via the API - pronouns := "she/her" + pronouns := "they/them" req := NewRequestWithJSON(t, "PATCH", "/api/v1/user/settings", &api.UserSettingsOptions{ Pronouns: &pronouns, - }).AddTokenAuth(token) + }).AddTokenAuth(firstUserToken) MakeRequest(t, req, http.StatusOK) t.Run("profile view", func(t *testing.T) { @@ -534,14 +568,14 @@ func TestUserPronouns(t *testing.T) { htmlDoc := NewHTMLParser(t, resp.Body) userNameAndPronouns := strings.TrimSpace(htmlDoc.Find(".profile-avatar-name .username").Text()) - assert.Contains(t, userNameAndPronouns, pronouns) + assert.NotContains(t, userNameAndPronouns, pronouns) }) t.Run("settings", func(t *testing.T) { defer tests.PrintCurrentTest(t)() req := NewRequest(t, "GET", "/user/settings") - resp := session.MakeRequest(t, req, http.StatusOK) + resp := firstUserSession.MakeRequest(t, req, http.StatusOK) htmlDoc := NewHTMLParser(t, resp.Body) // Check that the field is present @@ -550,12 +584,12 @@ func TestUserPronouns(t *testing.T) { assert.Equal(t, pronouns, pronounField) // Check that updating the field works - newPronouns := "they/them" + newPronouns := "she/her" req = NewRequestWithValues(t, "POST", "/user/settings", map[string]string{ - "_csrf": GetCSRF(t, session, "/user/settings"), + "_csrf": GetCSRF(t, firstUserSession, "/user/settings"), "pronouns": newPronouns, }) - session.MakeRequest(t, req, http.StatusSeeOther) + firstUserSession.MakeRequest(t, req, http.StatusSeeOther) user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{Name: "user2"}) assert.Equal(t, newPronouns, user2.Pronouns) From 39378fce098405406331ad1ebec6399b9ff36329 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 15 Feb 2025 15:03:05 +0000 Subject: [PATCH 28/38] Update dependency happy-dom to v17 (forgejo) (#6950) Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index d7a4141c19..d4b776d51b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -86,7 +86,7 @@ "eslint-plugin-vue-scoped-css": "2.9.0", "eslint-plugin-wc": "2.2.0", "globals": "15.15.0", - "happy-dom": "16.8.1", + "happy-dom": "17.1.0", "license-checker-rseidelsohn": "4.4.2", "markdownlint-cli": "0.44.0", "postcss-html": "1.8.0", @@ -9740,9 +9740,9 @@ } }, "node_modules/happy-dom": { - "version": "16.8.1", - "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-16.8.1.tgz", - "integrity": "sha512-n0QrmT9lD81rbpKsyhnlz3DgnMZlaOkJPpgi746doA+HvaMC79bdWkwjrNnGJRvDrWTI8iOcJiVTJ5CdT/AZRw==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-17.1.0.tgz", + "integrity": "sha512-9tUhXyePCjzUMycaHS/IzrIpF69xiq/laAT7golk4MtZ6t8ft5+Rv7U3lfrs2b4NMH0JTL3EhZzjfahrPmOnaQ==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index d3a614cb29..6f285f6686 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "eslint-plugin-vue-scoped-css": "2.9.0", "eslint-plugin-wc": "2.2.0", "globals": "15.15.0", - "happy-dom": "16.8.1", + "happy-dom": "17.1.0", "license-checker-rseidelsohn": "4.4.2", "markdownlint-cli": "0.44.0", "postcss-html": "1.8.0", From d3a125aad0dc33cf1d4c3fdcc526fe160eff4be7 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 15 Feb 2025 15:42:57 +0000 Subject: [PATCH 29/38] fix: native parsing of ssh certificate key (#6953) - In the case of parsing an public SSH certificate key, use the underlying key type instead of the certificate type. This means `ed25519-cert-v01` would be seen as `ed25519` type and thus correctly parsed. Certificates do not change the keysize or otherwise parsing of the key. - Add unit test. Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6953 Reviewed-by: Earl Warren Co-authored-by: Gusted Co-committed-by: Gusted --- models/asymkey/ssh_key_parse.go | 7 ++++++- models/asymkey/ssh_key_test.go | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/models/asymkey/ssh_key_parse.go b/models/asymkey/ssh_key_parse.go index 94b1cf112b..3cb51b2b22 100644 --- a/models/asymkey/ssh_key_parse.go +++ b/models/asymkey/ssh_key_parse.go @@ -219,8 +219,13 @@ func SSHNativeParsePublicKey(keyLine string) (string, int, error) { return "", 0, fmt.Errorf("ParsePublicKey: %w", err) } + pkeyType := pkey.Type() + if certPkey, ok := pkey.(*ssh.Certificate); ok { + pkeyType = certPkey.Key.Type() + } + // The ssh library can parse the key, so next we find out what key exactly we have. - switch pkey.Type() { + switch pkeyType { case ssh.KeyAlgoDSA: rawPub := struct { Name string diff --git a/models/asymkey/ssh_key_test.go b/models/asymkey/ssh_key_test.go index 2625d6ac91..9a4ef665af 100644 --- a/models/asymkey/ssh_key_test.go +++ b/models/asymkey/ssh_key_test.go @@ -35,6 +35,7 @@ func Test_SSHParsePublicKey(t *testing.T) { {"ecdsa-384", false, "ecdsa", 384, "ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzODQAAABhBINmioV+XRX1Fm9Qk2ehHXJ2tfVxW30ypUWZw670Zyq5GQfBAH6xjygRsJ5wWsHXBsGYgFUXIHvMKVAG1tpw7s6ax9oA+dJOJ7tj+vhn8joFqT+sg3LYHgZkHrfqryRasQ== nocomment"}, {"ecdsa-sk", true, "ecdsa-sk", 256, "sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBGXEEzWmm1dxb+57RoK5KVCL0w2eNv9cqJX2AGGVlkFsVDhOXHzsadS3LTK4VlEbbrDMJdoti9yM8vclA8IeRacAAAAEc3NoOg== nocomment"}, {"ed25519-sk", true, "ed25519-sk", 256, "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIE7kM1R02+4ertDKGKEDcKG0s+2vyDDcIvceJ0Gqv5f1AAAABHNzaDo= nocomment"}, + {"ed25519-cert-v01", true, "ed25519", 256, "ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIAlIAPlEj0mYQzQo8Ks0Nm/Ct8ceNkyJSf4DLuF5l7+5AAAAIEuWAoaBo2tT29/oMNnoDfdAPRCIdM2RGapKUhY4nDfLRgPQwfnRoc0AAAABAAAAcHZhdWx0LW9pZGMtNmRhYjdiZDgtNDg5YS00MDFkLTg3ZmItNjdjNTlhMDZkZDkxLTNjNTk2M2YyMGRmMDM3MDkyMzc1YmNiYmNiNzkxY2EyZWIxM2I0NGZhMzc2NTcwMWI0MjMwODU0MWFmNjhkNTgAAAALAAAAB2Zvcmdlam8AAAAAZ6/RUQAAAABn115vAAAAAAAAAAAAAAAAAAACFwAAAAdzc2gtcnNhAAAAAwEAAQAAAgEAySnM/TvD117GyKgOgMatDB2t+fCHORFaWVmH5SaadAzNJ2DfDAauRSLfnim1xdgAOMTzsPEEHH47zyYMjE85o2AiJxrfUBMw3O/7AbNc6+HyLr/txH4+vD9tWQknKnpVWM+3Z9wiHDcOdKRoXCmFZKJH1vxs16GNWjwbrfNiimv7Oi0fadgvTDKX603gpLTuVDXqs9eQFLCONptei86JYBAJqaHvg51k8YUCKt9WFqKAj7BJUWmrDvhv5VFMOsnZieJjqxkoxnpsQNlXfPzxK0vIpJofbYfWwscv/g9WZypHwO1ZR2PqzKm99YrSdr8w5256l0f44vsF0NSP0N7bDQEfYYnRGj8zWTYCBFD+uYF7AxIeaRUpZoTQO8MvCHOLMIDinNgEeCUvNA2v9zHl4BGq+PQjzUKAgJiKj0MZeiCDAmQ22g83ggQlB6BOrBb1fNa/S1cmTbGHQ2oAN358aqkmHVCBhPOyA2Rf65D2M2vzDlUdOsNDUIWAHk7GbwSNGDgcYfTWqtR5fTzp2MJovMh1dDUDXjOvojbhzjJtSy9+rzUYIv18aXdOitzVBgPMWdeVCZFZv4OKF+5MiqxQvedUvfiSjsdxZWLxyT1CJ88G3MzxNMS/Djm86T8h/Oa55bdvFtqpsLfvpIqq0pnXq1V/vF2j1MWwRB5z5Xh/HtEAAAIUAAAADHJzYS1zaGEyLTI1NgAAAgB2I2gzqemQl8/ETxtakALlm/2BpUcbhADcFWuoH6BCPnWHuTSwf3OayM6KXv1PQfL3YFRoi9Afrp8kVFL6DePsmKH+0BUEMz71sZ7v1ty7pwfzibItGnpTbQXhzbEiNYAFoz77rl7oaXF7pV6JNZhj3DVAB5gVA2oN5KRNVxijz+6uyuFJEw1HIl1C7GworvGwZcN7BThTEh3i72/Vntejy9Z8uGVjSFjS0rjRo2oXK1LKN0rVt66p3TmCWHouLkVnOTk0qrhLGlL2HVyo24OYHbkAAObD9b6aMDYlmluk6NsaiTKsSTsvMrbIbjtFQlh7nNyoPhZ0VMwaT1l10pDQ5uxWWZjKGIkz4xM1ZfpBszjJNPo+ivYQnTSjj9LwkbLAT9a/5LawSj80TGcLEMO+0eyPdJsP0wYmOVRFAZeRiBgwb3HrzcF6Wqr8icj1EjYkKSy9YFHGTnFBGknpdh3HGwghRXrCUwAnSM76db9pv4/qowT8LthtJ3dY5Epe0OJ1Tqm+q8bkGH4gB+7uqLSqM5pIHSKLp7lfHQBt1J6xa7H2saiweaWjU+QGTgQ2Lg+uUC5DXJrmm60CeFJ4BoGhUenDlgijbQpjH/l6330PbwefgjWtUK/pqaEA4lCoPyvJ+eF2DbYfPiAIBAFQnhVJJae4AH+XoCt29nb2j30ztg== nocomment"}, } for _, tc := range testCases { From 0989c4c36b34490880bf901015eb542f97a6a62a Mon Sep 17 00:00:00 2001 From: floss4good Date: Sun, 16 Feb 2025 08:17:33 +0000 Subject: [PATCH 30/38] fix: forgejo migrations numbering in comments and rename latest migration file (#6957) fixes #6955 ## Checklist The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org). ### Tests - I added test coverage for Go changes... - [ ] in their respective `*_test.go` for unit tests. - [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server. - I added test coverage for JavaScript changes... - [ ] in `web_src/js/*.test.js` if it can be unit tested. - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)). ### Documentation - [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change. - [x] I did not document these changes and I do not expect someone else to do it. ### Release notes - [x] I do not want this change to show in the release notes. - [ ] I want the title to show in the release notes with a link to this pull request. - [ ] I want the content of the `release-notes/.md` to be be used for the release notes instead of the title. Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6957 Reviewed-by: Earl Warren Co-authored-by: floss4good Co-committed-by: floss4good --- models/forgejo_migrations/migrate.go | 36 ++++++++++---------- models/forgejo_migrations/{v29.go => v28.go} | 0 2 files changed, 18 insertions(+), 18 deletions(-) rename models/forgejo_migrations/{v29.go => v28.go} (100%) diff --git a/models/forgejo_migrations/migrate.go b/models/forgejo_migrations/migrate.go index 4bc17a4288..935b072331 100644 --- a/models/forgejo_migrations/migrate.go +++ b/models/forgejo_migrations/migrate.go @@ -58,41 +58,41 @@ var migrations = []*Migration{ NewMigration("Add the `apply_to_admins` column to the `protected_branch` table", forgejo_v1_22.AddApplyToAdminsSetting), // v9 -> v10 NewMigration("Add pronouns to user", forgejo_v1_22.AddPronounsToUser), - // v11 -> v12 + // v10 -> v11 NewMigration("Add the `created` column to the `issue` table", forgejo_v1_22.AddCreatedToIssue), - // v12 -> v13 + // v11 -> v12 NewMigration("Add repo_archive_download_count table", forgejo_v1_22.AddRepoArchiveDownloadCount), - // v13 -> v14 + // v12 -> v13 NewMigration("Add `hide_archive_links` column to `release` table", AddHideArchiveLinksToRelease), - // v14 -> v15 + // v13 -> v14 NewMigration("Remove Gitea-specific columns from the repository and badge tables", RemoveGiteaSpecificColumnsFromRepositoryAndBadge), - // v15 -> v16 + // v14 -> v15 NewMigration("Create the `federation_host` table", CreateFederationHostTable), - // v16 -> v17 + // v15 -> v16 NewMigration("Create the `federated_user` table", CreateFederatedUserTable), - // v17 -> v18 + // v16 -> v17 NewMigration("Add `normalized_federated_uri` column to `user` table", AddNormalizedFederatedURIToUser), - // v18 -> v19 + // v17 -> v18 NewMigration("Create the `following_repo` table", CreateFollowingRepoTable), - // v19 -> v20 + // v18 -> v19 NewMigration("Add external_url to attachment table", AddExternalURLColumnToAttachmentTable), - // v20 -> v21 + // v19 -> v20 NewMigration("Creating Quota-related tables", CreateQuotaTables), - // v21 -> v22 + // v20 -> v21 NewMigration("Add SSH keypair to `pull_mirror` table", AddSSHKeypairToPushMirror), - // v22 -> v23 + // v21 -> v22 NewMigration("Add `legacy` to `web_authn_credential` table", AddLegacyToWebAuthnCredential), - // v23 -> v24 + // v22 -> v23 NewMigration("Add `delete_branch_after_merge` to `auto_merge` table", AddDeleteBranchAfterMergeToAutoMerge), - // v24 -> v25 + // v23 -> v24 NewMigration("Add `purpose` column to `forgejo_auth_token` table", AddPurposeToForgejoAuthToken), - // v25 -> v26 + // v24 -> v25 NewMigration("Migrate `secret` column to store keying material", MigrateTwoFactorToKeying), - // v26 -> v27 + // v25 -> v26 NewMigration("Add `hash_blake2b` column to `package_blob` table", AddHashBlake2bToPackageBlob), - // v27 -> v28 + // v26 -> v27 NewMigration("Add `created_unix` column to `user_redirect` table", AddCreatedUnixToRedirect), - // v28 -> v29 + // v27 -> v28 NewMigration("Add pronoun privacy settings to user", AddHidePronounsOptionToUser), } diff --git a/models/forgejo_migrations/v29.go b/models/forgejo_migrations/v28.go similarity index 100% rename from models/forgejo_migrations/v29.go rename to models/forgejo_migrations/v28.go From 7296f11288c3161be717bca05097c18aecb108bf Mon Sep 17 00:00:00 2001 From: 0ko <0ko@noreply.codeberg.org> Date: Sun, 16 Feb 2025 09:38:39 +0000 Subject: [PATCH 31/38] i18n: translation updates from Gitea (#6958) These are translations originally contributed to Gitea and picked from it's repo at https://github.com/go-gitea/gitea/tree/fc1b383da9507920d90386bf830ecf1594cf3b51/options/locale. Because commits in Gitea are missing attribtuion, it is not possible to credit translators in this commit. But you might have luck finding them in Gitea project on Crowdin: https://crowdin.com/project/gitea. Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6958 Reviewed-by: Earl Warren --- options/locale/locale_fa-IR.ini | 12 + options/locale/locale_ga-IE.ini | 2996 +++++++++++++++++++++++++++++++ options/locale/locale_hu-HU.ini | 5 + options/locale/locale_id-ID.ini | 146 ++ options/locale/locale_is-IS.ini | 11 + options/locale/locale_ja-JP.ini | 10 + options/locale/locale_ko-KR.ini | 7 +- options/locale/locale_si-LK.ini | 12 + options/locale/locale_sk-SK.ini | 7 +- options/locale/locale_tr-TR.ini | 61 + options/locale/locale_zh-HK.ini | 10 +- options/locale/locale_zh-TW.ini | 14 + 12 files changed, 3288 insertions(+), 3 deletions(-) create mode 100644 options/locale/locale_ga-IE.ini diff --git a/options/locale/locale_fa-IR.ini b/options/locale/locale_fa-IR.ini index e2c9dc4bdd..8f515ec424 100644 --- a/options/locale/locale_fa-IR.ini +++ b/options/locale/locale_fa-IR.ini @@ -134,6 +134,11 @@ new_repo.title = مخزن جدید new_migrate.title = مهاجرت جدید new_repo.link = مخزن جدید +filter = فیلتر +filter.is_archived = بایگانی شده +filter.public = عمومی +filter.private = خصوصی + [aria] [heatmap] @@ -1987,6 +1992,8 @@ error.csv.too_large=نمی توان این فایل را رندر کرد زیر error.csv.unexpected=نمی توان این فایل را رندر کرد زیرا حاوی یک کاراکتر غیرمنتظره در خط %d و ستون %d است. error.csv.invalid_field_count=نمی توان این فایل را رندر کرد زیرا تعداد فیلدهای آن در خط %d اشتباه است. +milestones.filter_sort.name = نام + [graphs] [org] @@ -2540,6 +2547,9 @@ notices.op=عملیات. notices.delete_success=گزارش سیستم حذف شده است. +config_summary = چکیده +config_settings = تنظيمات + [action] create_repo=مخزن ایجاد شده %s rename_repo=مخزن تغییر نام داد از %[1]s به %[3]s @@ -2669,3 +2679,5 @@ executable_file = فایل اجرایی normal_file = فایل معمولی changed_filemode = %[1] ها ← %[2] ها directory = پوشه + +[search] diff --git a/options/locale/locale_ga-IE.ini b/options/locale/locale_ga-IE.ini new file mode 100644 index 0000000000..b7372e12f2 --- /dev/null +++ b/options/locale/locale_ga-IE.ini @@ -0,0 +1,2996 @@ +[common] +home = Baile +dashboard = Deais +explore = Iniúch +help = Cabhair +logo = Lógó +sign_in = Sínigh isteach +sign_in_with_provider = Sínigh isteach le %s +sign_in_or = nó +sign_out = Sínigh amach +sign_up = Cláraigh +link_account = Cuntas Nasc +register = Cláraigh +version = Leagan +powered_by = Cumhachtaithe ag %s +page = Leathanach +template = Teimpléad +language = Teanga +notifications = Fógraí +active_stopwatch = Rianaitheoir Ama Gníomhach +tracked_time_summary = Achoimre ar an am rianaithe bunaithe ar scagairí an liosta eisiúna +create_new = Cruthaigh... +user_profile_and_more = Próifíl agus Socruithe... +signed_in_as = Sínithe isteach mar +enable_javascript = Éilíonn JavaScript ar an suíomh Gréasáin seo. +toc = Tábla na nÁbhar +licenses = Ceadúnais +more_items = Tuilleadh míreanna +username = Ainm úsáideora +email = Seoladh ríomhphoist +password = Pasfhocal +access_token = Comhartha Rochtana +re_type = Deimhnigh Pasfhocal +captcha = CAPTCHA +twofa = Fíordheimhniú Dhá-Fhachtóir +twofa_scratch = Cód Scratch Dhá-Fhachtóra +passcode = Paschód +webauthn_insert_key = Cuir isteach d'eochair slándála +webauthn_sign_in = Brúigh an cnaipe ar d'eochair slándála. Mura bhfuil aon chnaipe ag d'eochair slándála, cuir isteach é arís. +webauthn_press_button = Brúigh an cnaipe ar d'eochair slándála le do thoil… +webauthn_use_twofa = Úsáid cód dhá fhachtóir ó do ghuthán +webauthn_error = Ní fhéadfaí do eochair slándála a léamh. +webauthn_unsupported_browser = Ní thacaíonn do bhrabhsálaí le WebAuthn faoi láthair. +webauthn_error_unknown = Tharla earráid anaithnid. Déan iarracht arís. +webauthn_error_insecure = Ní thacaíonn WebAuthn ach le naisc slán. Le haghaidh tástála thar HTTP, is féidir leat an bunús “localhost” nó "127.0.0.1" a úsáid +webauthn_error_unable_to_process = Ní fhéadfadh an freastalaí d'iarratas a phróiseáil. +webauthn_error_duplicated = Ní cheadaítear an eochair slándála don iarratas seo. Déan cinnte le do thoil nach bhfuil an eochair cláraithe cheana féin. +webauthn_error_empty = Ní mór duit ainm a shocrú don eochair seo. +webauthn_error_timeout = Sroicheadh an teorainn ama sula bhféadfaí d’eochair a léamh. Athlódáil an leathanach seo, le do thoil, agus déan iarracht arís. +repository = Stór +organization = Eagraíocht +mirror = Scáthán +new_mirror = Scáthán Nua +new_fork = Forc Stór Nua +new_project = Tionscadal Nua +new_project_column = Colún Nua +admin_panel = Riarachán Láithreáin +settings = Socruithe +your_profile = Próifíl +your_starred = Réaltaigh +your_settings = Socruithe +all = Gach +sources = Foinsí +mirrors = Scátháin +collaborative = Comhoibritheach +forks = Forcanna +activities = Gníomhaíochtaí +pull_requests = Iarrataí Tarraing +issues = Saincheisteanna +milestones = Clocha míle +ok = CEART GO LEOR +cancel = Cealaigh +retry = Atriail +rerun = Ath-rith +rerun_all = Ath-rith na poist go léir +save = Sábháil +add = Cuir +add_all = Cuir Gach +remove = Bain +remove_all = Bain Gach +remove_label_str = Bain mír “%s” +edit = Cuir in eagar +view = Amharc +test = Tástáil +enabled = Cumasaithe +disabled = Díchumasaithe +locked = Faoi ghlas +copy = Cóipeáil +copy_url = Cóipeáil URL +copy_hash = Cóipeáil hais +copy_path = Cóipeáil cosán +copy_content = Cóipeáil ábhair +copy_branch = Ainm brainse cóipeáil +copy_success = Cóipeáil! +copy_error = Theip ar an gcóipeáil +copy_type_unsupported = Ní féidir an cineál comhaid seo a chóipeáil +write = Scríobh +preview = Réamhamharc +loading = Á lódáil... +error = Earráid +error404 = Níl an leathanach atá tú ag iarraidh a bhaint amach annníl tú údaraithe chun é a fheiceáil. +go_back = Ar ais +invalid_data = Sonraí neamhbhailí: %v +never = Riamh +unknown = Anaithnid +rss_feed = Fothú RSS +pin = Bioráin +unpin = Díphoráil +artifacts = Déantáin +archived = Cartlann +concept_system_global = Domhanda +concept_user_individual = Duine aonair +concept_code_repository = Stóráil +concept_user_organization = Eagraíocht +show_timestamps = Taispeáin stampaí ama +show_log_seconds = Taispeáin soicindí +show_full_screen = Taispeáin scáileán iomlán +download_logs = Íoslódáil logaí +confirm_delete_selected = Deimhnigh chun gach earra roghnaithe a scriosadh? +name = Ainm +value = Luach +filter = Scagaire +filter.is_archived = Cartlannaithe +filter.not_archived = Gan Cartlannaithe +filter.public = Poiblí +filter.private = Príobháideach + +[search] +search = Cuardaigh... +type_tooltip = Cineál cuardaigh +fuzzy = Doiléir +fuzzy_tooltip = Cuir san áireamh torthaí a mheaitseálann an téarma cuardaigh go dlúth freisin +exact = Beacht +exact_tooltip = Ní chuir san áireamh ach torthaí a mheaitseálann leis an téarma +repo_kind = Cuardaigh stórtha... +user_kind = Cuardaigh úsáideoirí... +org_kind = Cuardaigh eagraíochtaí... +team_kind = Cuardaigh foirne... +code_kind = Cód cuardaigh... +code_search_unavailable = Níl cuardach cód ar fáil faoi láthair. Déan teagmháil le riarthóir an láithreáin. +package_kind = Cuardaigh pacáistí... +project_kind = Cuardaigh tionscadail... +branch_kind = Cuardaigh brainsí... +commit_kind = Cuardaigh tiomáintí... +runner_kind = Cuardaigh reathaithe... +no_results = Níl aon torthaí meaitseála le fáil. +issue_kind = Saincheisteanna cuardaigh... +pull_kind = Cuardaigh iarratais tarraingthe... +keyword_search_unavailable = Níl cuardach de réir eochairfhocal ar fáil faoi láthair. Déan teagmháil le riarthóir an láithreáin. + +[aria] +navbar = Barra Nascleanúint +footer = Buntásc +footer.links = Naisc + +[heatmap] +number_of_contributions_in_the_last_12_months = %s ranníocaíochtaí le 12 mhí anuas +less = Níos lú +more = Níos mó + +[editor] +buttons.heading.tooltip = Cuir ceannteideal leis +buttons.bold.tooltip = Cuir téacs trom leis +buttons.italic.tooltip = Cuir téacs iodálach leis +buttons.quote.tooltip = Téacs luaigh +buttons.code.tooltip = Cuir cód leis +buttons.link.tooltip = Cuir nasc leis +buttons.list.unordered.tooltip = Cuir liosta piléar leis +buttons.list.ordered.tooltip = Cuir liosta uimhrithe +buttons.list.task.tooltip = Cuir liosta tascanna leis +buttons.mention.tooltip = Luaigh úsáideoir nó foireann +buttons.ref.tooltip = Déan tagairt d'eisiúint nó iarratas tarraingthe +buttons.switch_to_legacy.tooltip = Úsáid an eagarthóir oidhreachta ina ionad +buttons.enable_monospace_font = Cumasaigh cló monospace +buttons.disable_monospace_font = Díchumasaigh cló monospace + +[filter] +string.asc = A - Z +string.desc = Z - A + +[error] +occurred = Tharla earráid +not_found = Ní raibh an sprioc in ann a fháil. +network_error = Earráid líonra + +[startpage] +app_desc = Seirbhís Git gan phian, féin-óstáil +install = Éasca a shuiteáil +install_desc = Níl ort ach rith an dénártha do d'ardán, seol é le Docker, nó faigh pacáilte é. +platform = Tras-ardán +lightweight = Éadrom +license = Foinse Oscailte + +[install] +install = Suiteáil +title = Cumraíocht Tosaigh +db_title = Socruithe Bunachar Sonraí +db_type = Cineál Bunachar Sonraí +host = Óstach +user = Ainm úsáideora +password = Pasfhocal +db_name = Ainm Bunachar Sonraí +db_schema = Scéim +db_schema_helper = Fág bán le haghaidh réamhshocraithe bunachar sonraí ("poiblí"). +ssl_mode = SSL +path = Cosán +reinstall_confirm_check_1 = Féadfaidh na sonraí criptithe ag an SECRET_KEY i app.ini a chailleadh: b'fhéidir nach mbeidh úsáideoirí in ann logáil isteach le 2FA/OTP & b'fhéidir nach bhfeidhmeoidh scátháin i gceart. Trí an bhosca seo a sheiceáil deimhníonn tú go bhfuil an ceart an SECRET_KEY sa chomhad reatha app.ini. +reinstall_confirm_check_2 = B'fhéidir go gcaithfear na stórais agus na socruithe a athshioncronú. Trí an bhosca seo a sheiceáil deimhníonn tú go ndéanfaidh tú na crúcaí do na stórálacha agus an chomhad authorized_keys a athshioncronú de láimh. Deimhníonn tú go gcinnteoidh tú go bhfuil socruithe stórais agus scátháin ceart. +err_empty_db_path = Ní féidir cosán bunachar sonraí SQLite3 a bheith folamh. +no_admin_and_disable_registration = Ní féidir leat féinchlárú úsáideora a dhíchumasú gan cuntas riarthóra a chruthú. +err_empty_admin_password = Ní féidir le pasfhocal an riarthóra a bheith folamh. +err_empty_admin_email = Ní féidir le ríomhphost an riarthóra a bheith folamh. +err_admin_name_is_reserved = Riarthóir Tá an t-ainm úsáideora neamhbhailí, tá an t-ainm úsáideora curtha in áirithe +err_admin_name_pattern_not_allowed = Tá ainm úsáideora an riarthóra neamhbhailí, meaitseálann an t-ainm úsáideora patrún in áirithe +err_admin_name_is_invalid = Tá an t-ainm úsáideora Riarthóra neamhbhailí +general_title = Socruithe Ginearálta +repo_path = Cosán Fréimhe an Stór +repo_path_helper = Sábhálfar stórais iargúlta Git chuig an eolaire seo. +lfs_path = Cosán Fréamh Git LFS +lfs_path_helper = Stórálfar comhaid a rianóidh Git LFS san eolaire seo. Fág folamh le díchumasú. +domain = Fearann ​​Freastalaí +domain_helper = Seoladh fearainn nó óstach don fhreastalaí. +ssh_port = Port Freastalaí SSH +app_url_helper = Seoladh bonn le haghaidh URLanna clóin HTTP(S) agus fógraí ríomhphoist. +log_root_path = Cosán Logála +log_root_path_helper = Scríofar comhaid logála chuig an eolaire seo. +optional_title = Socruithe Roghnacha +email_title = Socruithe ríomhphoist +smtp_addr = Óstach SMTP +smtp_port = Port SMTP +smtp_from = Seol Ríomhphost Mar +smtp_from_invalid = Tá an seoladh “Seol Ríomhphost Mar” neamhbhailí +mailer_user = SMTP Ainm úsáideora +mailer_password = Pasfhocal SMTP +register_confirm = Deimhniú Ríomhphoist a cheangal le Clárú +mail_notify = Cumasaigh Fógraí Ríomhphoist +server_service_title = Socruithe Freastalaí agus Seirbhíse Tríú Páirtí +offline_mode = Cumasaigh Mód Áitiúil +disable_gravatar = Díchumasaigh Gravatar +federated_avatar_lookup = Cumasaigh Abhatáir Chónaidhme +disable_registration = Díchumasaigh Féin-Chlárú +openid_signin = Cumasaigh Síniú isteach OpenID +openid_signup = Cumasaigh Féinchlárú OpenID +enable_captcha = Cumasaigh clárú CAPTCHA +default_keep_email_private = Folaigh Seoltaí Ríomhphoist de réir Réamhshocrú +default_allow_create_organization = Ceadaigh Cruthú Eagraíochtaí de réir Réamhshocrú +default_enable_timetracking = Cumasaigh Rianú Ama de réir Réamhshocrú +admin_title = Socruithe Cuntas Riarthóra +admin_name = Ainm Úsáideora an Riarthóra +admin_password = Pasfhocal +confirm_password = Deimhnigh Pasfhocal +admin_email = Seoladh ríomhphoist +invalid_db_setting = Tá na socruithe bunachar sonraí neamhbhailí:%v +invalid_db_table = Tá an tábla bunachar sonraí "%s" neamhbhailí: %v +invalid_repo_path = Tá cosán fréimhe an stór neamhbhailí:%v +invalid_app_data_path = Tá cosán sonraí an aip neamhbhailí:%v +internal_token_failed = Theip ar chomhartha inmheánach a ghiniúint:%v +secret_key_failed = Theip ar an eochair rúnda a ghiniúint:%v +save_config_failed = Theip ar chumraíocht a shábháil:%v +invalid_admin_setting = Tá socrú cuntas riarthóra neamhbhailí: %v +invalid_log_root_path = Tá an cosán logála neamhbhailí:%v +no_reply_address = Fearann Ríomhphoist Folaite +password_algorithm = Algartam Hais Pasfhocal +invalid_password_algorithm = Algartam hais pasfhocail neamhbhailí +password_algorithm_helper = Socraigh an algartam hashing pasfhocal. Tá riachtanais agus neart éagsúla ag halgartaim. Tá an algartam argon2 sách slán ach úsáideann sé go leor cuimhne agus d'fhéadfadh sé a bheith míchuí do chórais bheaga. +enable_update_checker = Cumasaigh Seiceoir Nuashonraithe +env_config_keys = Cumraíocht Comhshaoil +env_config_keys_prompt = Cuirfear na hathróga comhshaoil seo a leanas i bhfeidhm ar do chomhad cumraíochta freisin: + +[home] +uname_holder = Ainm Úsáideora nó Seoladh Ríomhphoist +switch_dashboard_context = Athraigh Comhthéacs an Deais +my_repos = Stórais +view_home = Amharc %s +filter = Scagairí Eile +filter_by_team_repositories = Scag de réir stórais foirne +feed_of = `Fotha de "%s"` +show_archived = Cartlannaithe +show_both_archived_unarchived = Ag taispeáint idir chartlannaithe agus neamhchartlann +show_only_archived = Ag taispeáint ach na cartlannaigh +show_only_unarchived = Ag taispeáint ach na cartlannaigh neamh +show_private = Príobháideach +show_both_private_public = Ag taispeáint poiblí agus príobháideach araon +show_only_private = Ag taispeáint príobháideach amháin +show_only_public = Ag taispeáint poiblí amháin +issues.in_your_repos = I do stórais + +[explore] +repos = Stórais +users = Úsáideoirí +organizations = Eagraíochtaí +go_to = Téigh chuig +code = Cód +code_last_indexed_at = Innéacsaithe %s is déanaí +relevant_repositories_tooltip = Tá stórais atá forca iad nó nach bhfuil aon ábhar acu, gan aon deilbhín, agus gan aon tuairisc i bhfolach. +relevant_repositories = Níl ach stórtha ábhartha á dtaispeáint, taispeáin torthaí neamhscagtha. + +[auth] +create_new_account = Cláraigh Cuntas +disable_register_prompt = Tá clárú faoi dhíchumasú. Téigh i dteagmháil le do riarthóir suíomh. +disable_register_mail = Tá deimhniú ríomhphoist le haghaidh clárú faoi dhíchum +manual_activation_only = Déan teagmháil le riarthóir do tsuímh chun gníomhachtú a chur i gcrích. +remember_me = Cuimhnigh ar an nGléas seo +forgot_password_title = Dearmad ar an bPasfhocal +forgot_password = Dearmad ar an bPasfhocal? +sign_up_successful = Cruthaíodh cuntas go rathúil. Fáilte romhat! +must_change_password = Nuashonraigh do phasfhocal +allow_password_change = A cheangal ar an úsáideoir pasfhocal a athrú (molta) +active_your_account = Gníomhachtaigh do chuntas +account_activated = Cuireadh cuntas gníomhachtaithe +resent_limit_prompt = D'iarr tú ríomhphost gníomhachtaithe cheana féin le déanaí. Fan 3 nóiméad le do thoil agus bain triail as arís. +has_unconfirmed_mail = Dia duit %s, tá seoladh ríomhphoist neamhdheimhnithe agat (%s). Mura bhfuair tú ríomhphost dearbhaithe nó mura gcaithfidh tú ceann nua a athsheoladh, cliceáil ar an gcnaipe thíos le do thoil. +resend_mail = Cliceáil anseo chun do r-phost gníomhachtaithe a athshe +reset_password = Aisghabháil Cuntas +invalid_code = Tá do chód deimhnithe neamhbhailí nó tá sé in éag. +invalid_code_forgot_password = Tá do chód deimhnithe neamhbhailí nó tá sé in éag. Cliceáil anseo chun seisiún nua a thosú. +invalid_password = Ní mheaitseálann do phasfhocal leis an bhfocal faire a úsáideadh chun an cuntas a chruthú. +reset_password_helper = Gnóthaigh Cuntas +reset_password_wrong_user = Tá tú sínithe isteach mar %s, ach tá an nasc aisghabhála cuntas i gceist le haghaidh %s +password_too_short = Ní féidir fad pasfhocal a bheith níos lú ná %d carachtair. +verify = Fíoraigh +scratch_code = Cód Scratch +use_scratch_code = Úsáid cód scratch +twofa_scratch_used = D'úsáid tú do chód scratch. Tá tú atreoraithe chuig an leathanach socruithe dhá fhachtóir ionas gur féidir leat clárú do ghléas a bhaint nó cód scratch nua a ghiniúint. +twofa_passcode_incorrect = Tá do phaschód mícheart. Má chuir tú do ghléas míchuir tú, bain úsáid as do chód scratch chun síniú isteach. +twofa_scratch_token_incorrect = Tá do chód scratch mícheart. +login_userpass = Sínigh isteach +oauth_signup_tab = Cláraigh Cuntas Nua +oauth_signup_title = Comhlánaigh Cuntas Nua +oauth_signup_submit = Cuntas Comhlánaigh +oauth_signin_title = Sínigh isteach chun Cuntas Nasctha a Údarú +oauth_signin_submit = Cuntas Nasc +oauth.signin.error = Bhí earráid ann ag próiseáil an t-iarratas ar údarú. Má leanann an earráid seo, déan teagmháil le riarthóir an láithreáin. +oauth.signin.error.access_denied = Diúltaíodh an t-iarratas ar údarú. +oauth.signin.error.temporarily_unavailable = Theip ar údarú toisc nach bhfuil an fhreastalaí fíordheimhnithe ar fáil Bain triail as arís níos déanaí. +openid_connect_submit = Ceangail +openid_connect_title = Ceangail le cuntas atá ann cheana +openid_connect_desc = Níl an URI OpenID roghnaithe ar eolas. Comhcheangail é le cuntas nua anseo. +openid_register_title = Cruthaigh cuntas nua +openid_register_desc = Níl an URI OpenID roghnaithe ar eolas. Comhcheangail é le cuntas nua anseo. +openid_signin_desc = Cuir isteach do URI OpenID. Mar shampla: alice.openid.example.org nó https://openid.example.org/alice. +disable_forgot_password_mail = Tá aisghabháil cuntas díchumasaithe toisc nach bhfuil aon ríomhphost ar bun. Téigh i dteagmháil le do riarthóir suíomh. +disable_forgot_password_mail_admin = Níl aisghabháil cuntas ar fáil ach amháin nuair a bhíonn ríomhphost ar bun. Bunaigh ríomhphost le do thoil chun aisghabháil cuntas a chumasú +email_domain_blacklisted = Ní féidir leat clárú le do sheoladh ríomhphoist. +authorize_application = Údaraigh an Feidhmchlár +authorize_redirect_notice = Déanfar tú a atreorú chuig %s má údaraíonn tú an feidhmchlár seo. +authorize_application_created_by = Chruthaigh %s an feidhmchlár seo. +authorize_title = Údaraigh "%s" chun rochtain a fháil ar do chuntas? +authorization_failed = Theip ar údarú +authorization_failed_desc = Theip ar an údarú toisc gur bhraitheamar iarratas neamhbhailí. Téigh i dteagmháil le cothabhálaí an aip a rinne tú iarracht a údarú. +password_pwned = Tá an pasfhocal a roghnaigh tú ar liosta na bhfocal faire goidte a nochtadh cheana i sáruithe sonraí poiblí. Bain triail eile as le pasfhocal eile agus smaoinigh ar an bpasfhocal seo a athrú áit eile freisin. +password_pwned_err = Ní fhéadfaí iarratas a chomhlánú ar HaveIBeenPwned +last_admin = Ní féidir leat an riarachán deireanach a bhaint. Caithfidh riarachán amháin ar a laghad a bheith ann. +back_to_sign_in = Ar ais go Sínigh Isteach + +[mail] +view_it_on = Féach air ar %s +reply = nó freagra a thabhairt ar an r-phost seo go díreach +hi_user_x = Dia duit %s, +activate_account = Gníomhachtaigh do chuntas le do thoil +activate_account.text_1 = Dia duit %[1]s, go raibh maith agat as clárú ag %[2]s! +activate_account.text_2 = Cliceáil ar an nasc seo a leanas chun do chuntas a ghníomhachtú laistigh de %s: +activate_email = Fíoraigh do sheoladh ríomhphoist +activate_email.text = Cliceáil ar an nasc seo a leanas le do sheoladh ríomhphoist a fhíorú laistigh de %s: +register_notify = Fáilte go dtí %s +register_notify.text_1 = is é seo do ríomhphost deimhnithe clárúcháin do %s! +reset_password = Aisghabháil do chuntas +register_success = Clárú rathúil +issue_assigned.pull = @%[1]s shann tú don iarratas tarraingthe %[2]s i stór %[3]s. +issue_assigned.issue = @%[1]s shann tú don eisiúint %[2]s i stór %[3]s. +issue.x_mentioned_you = Luaigh @%s tú: +issue.action.force_push = Bhrúigh %[1]s an %[2]s go fórsa ó %[3]s go %[4]s. +issue.action.push_1 = Bhrúigh @%[1]s %[3]d tiomáintí go %[2]s +issue.action.push_n = @%[1]s brúite % [3]d tiomáintí chuig %[2]s +issue.action.close = @%[1]s dúnta #%[2]d. +issue.action.reopen = D'athoscail @%[1]s #%[2]d. +issue.action.merge = Chomhcheangail @%[1]s #%[2]d le %[3]s. +issue.action.approve = Cheadaigh @%[1]s an t-iarratas tarraingthe seo. +issue.action.reject = D'iarr @%[1]s athruithe ar an iarratas tarraingthe seo. +issue.action.review = Rinne @%[1]s trácht ar an iarratas tarraingthe seo. +issue.action.review_dismissed = Dhiúltaigh @%[1]s an léirmheas deiridh ó %[2]s don iarratas tarraingthe seo. +issue.action.ready_for_review = Mharcáil @%[1]s an t-iarratas tarraingthe seo réidh lena athbhreithniú. +issue.action.new = Chruthaigh @%[1]s #%[2]d. +issue.in_tree_path = I %s: +release.new.subject = Scaoileadh %s i %s +release.new.text = D'eisigh @%[1]s %[2]s i %[3]s +release.title = Teideal: %s +release.note = Nóta: +release.downloads = Íoslódálacha: +release.download.zip = Cód Foinse (ZIP) +release.download.targz = Cód Foinse (TAR.GZ) +repo.transfer.to_you = tú +repo.transfer.body = Chun glacadh leis nó a dhiúltú tabhair cuairt ar %s nó neamhaird a dhéanamh air. +team_invite.subject = Tá cuireadh tugtha agat ag %[1]s chun dul le heagraíocht %[2]s +team_invite.text_1 = Tá cuireadh tugtha ag %[1]s duit chun dul le foireann %[2]s in eagraíocht %[3]s. +team_invite.text_2 = Cliceáil ar an nasc seo a leanas le do thoil chun dul isteach san fhoireann: +team_invite.text_3 = Nóta: Bhí an cuireadh seo beartaithe do %[1]s. Mura raibh tú ag súil leis an gcuireadh seo, is féidir leat neamhaird a dhéanamh den ríomhphost seo. + +[modal] +yes = Tá +no = Níl +confirm = Deimhnigh +cancel = Cealaigh +modify = Nuashonraigh + +[form] +UserName = Ainm úsáideora +RepoName = Ainm stórais +Email = Seoladh ríomhphoist +Password = Pasfhocal +Retype = Deimhnigh Pasfhocal +PayloadUrl = URL Pálasta +TeamName = Ainm foirne +AuthName = Ainm údaraithe +AdminEmail = Ríomhphost riaracháin +NewBranchName = Ainm brainse nua +CommitSummary = Achoimre tiomáintí +CommitMessage = Tiomantas teachtaireacht +CommitChoice = Rogha tiomanta +TreeName = Cosán comhaid +Content = Ábhar +SSPISeparatorReplacement = Deighilteoir +SSPIDefaultLanguage = Teanga Réamhshocraithe +require_error = ` ní féidir a bheith folamh.` +git_ref_name_error = ` caithfidh gur ainm tagartha Git dea-chruthaithe é.` +size_error = ` ní mór méid %s.` +min_size_error = ` ní mór go mbeadh carachtar %s ar a laghad ann.` +max_size_error = caithfidh %s carachtar ar a mhéad a bheith ann. +email_error = `ní seoladh ríomhphoist bailí é.` +url_error = `ní URL bailí é "%s".` +include_error = ` ní mór fotheaghrán a bheith ann "%s".` +glob_pattern_error = ` tá patrún glob neamhbhailí: %s.` +regex_pattern_error = `tá patrún regex neamhbhailí: %s.` +invalid_group_team_map_error = ` tá mapáil neamhbhailí: %s` +unknown_error = Earráid anaithnid: +captcha_incorrect = Tá an cód CAPTCHA mícheart. +password_not_match = Ní mheaitseálann na pasfhocail. +lang_select_error = Roghnaigh teanga ón liosta. +username_been_taken = Tá an t-ainm úsáideora tógtha cheana féin. +username_change_not_local_user = Ní cheadaítear d'úsáideoirí neamháitiúla a n-ainm úsáideora a athrú. +repo_name_been_taken = Úsáidtear ainm an stór cheana féin. +repository_force_private = Tá Force Private cumasaithe: ní féidir stórais phríobháideacha a dhéanamh poiblí. +repository_files_already_exist = Tá comhaid ann cheana féin don stór seo. Déan teagmháil leis an riarthóir córais. +repository_files_already_exist.adopt = Tá comhaid ann cheana don stór seo agus ní féidir iad a ghlacadh ach amháin. +repository_files_already_exist.delete = Tá comhaid ann cheana féin don stór seo. Ní mór duit iad a scriosadh. +repository_files_already_exist.adopt_or_delete = Tá comhaid ann cheana féin don stór seo. Glac iad nó scrios iad. +visit_rate_limit = Thug cuairt chianda aghaidh ar theorannú rátaí. +2fa_auth_required = Bhí fíordheimhniú dhá thoisc ag teastáil ó chianchuairt. +org_name_been_taken = Tá ainm na heagraíochta glactha cheana féin. +team_name_been_taken = Tá ainm na foirne glactha cheana féin. +team_no_units_error = Ceadaigh rochtain ar chuid stórais amháin ar a laghad. +email_been_used = Úsáidtear an seoladh ríomhphoist cheana féin. +email_invalid = Tá an seoladh ríomhphoist neamhbhailí. +openid_been_used = Úsáidtear an seoladh OpenID "%s" cheana féin. +username_password_incorrect = Tá ainm úsáideora nó pasfhocal mícheart. +password_complexity = Ní shásaíonn pasfhocal ceanglais castachta: +password_lowercase_one = Carachtar beaga amháin ar a laghad +password_uppercase_one = Carachtar cás uachtair amháin ar a laghad +password_digit_one = Digit amháin ar a laghad +password_special_one = Carachtar speisialta amháin ar a laghad (poncaíocht, lúibíní, luachana, srl.) +enterred_invalid_repo_name = Tá ainm an stórais a chuir tú isteach mícheart. +enterred_invalid_org_name = Tá ainm na heagraíochta a chuir tú isteach mícheart. +enterred_invalid_owner_name = Níl ainm an úinéara nua bailí. +enterred_invalid_password = Tá an pasfhocal a chuir tú isteach mícheart. +unset_password = Níor shocraigh an t-úsáideoir logála isteach an pasfhocal. +unsupported_login_type = Ní thacaítear leis an gcineál logála isteach chun cuntas a scriosadh. +user_not_exist = Níl an t-úsáideoir ann. +team_not_exist = Níl an fhoireann ann. +cannot_add_org_to_team = Ní féidir eagraíocht a chur leis mar bhall foirne. +duplicate_invite_to_team = Tugadh cuireadh don úsáideoir cheana féin mar bhall foirne. +organization_leave_success = D'fhág tú an eagraíocht %s go rathúil. +invalid_ssh_key = Ní féidir d'eochair SSH a fhíorú: %s +invalid_gpg_key = Ní féidir d'eochair GPG a fhíorú: %s +invalid_ssh_principal = Príomhoide neamhbhailí: %s +must_use_public_key = Is eochair phríobháideach an eochair a sholáthraíonn tú. Ná uaslódáil d'eochair phríobháideach áit ar bith Úsáid d'eochair phoiblí ina ionad. +auth_failed = Theip ar fhíordheimhniú:%v +target_branch_not_exist = Níl spriocbhrainse ann. +admin_cannot_delete_self = Ní féidir leat tú féin a scriosadh nuair is riarachán tú. Bain do phribhléidí riaracháin ar dtús. + +[user] +change_avatar = Athraigh do abhatár… +joined_on = Cláraigh ar %s +repositories = Stórais +activity = Gníomhaíocht Phoiblí +follow = Lean +unfollow = Dílean +starred = Stórais Réaltaithe +watched = Stórais Breathnaithe +code = Cód +projects = Tionscadail +overview = Forbhreathnú +user_bio = Beathaisnéis +email_visibility.limited = Tá do sheoladh ríomhphoist le feiceáil do gach úsáideoir fíordheimhnithe +show_on_map = Taispeáin an áit seo ar léarscáil +settings = Socruithe Úsáideora +disabled_public_activity = Dhíchumasaigh an t-úsáideoir seo infheictheacht phoiblí na gníomhaíochta. +form.name_reserved = Tá an t-ainm úsáideora "%s" in áirithe. +form.name_pattern_not_allowed = Ní cheadaítear an patrún "%s" in ainm úsáideora. + +[settings] +profile = Próifíl +account = Cuntas +appearance = Dealramh +password = Pasfhocal +security = Slándáil +avatar = Abhatár +ssh_gpg_keys = Eochracha SSH/GPG +applications = Iarratais +repos = Stórais +delete = Scrios Cuntas +twofa = Fíordheimhniú Dhá Fachtóir (TOTP) +organization = Eagraíochtaí +uid = UID +webauthn = Fíordheimhniú Dhá-Fachtóir (Eochracha Slándála) +public_profile = Próifíl Phoiblí +location_placeholder = Comhroinn do shuíomh thart le daoine eile +full_name = Ainm Iomlán +website = Láithreán Gréasáin +location = Suíomh +update_profile = Nuashonraigh Próifíl +update_language_not_found = Níl teanga “%s” ar fáil. +update_language_success = Tá an teanga nuashonraithe. +update_profile_success = Nuashonraíodh do phróifíl. +change_username = Tá d'ainm úsáideora athraithe. +change_username_prompt = Nóta: Athraíonn athrú d'ainm úsáideora URL do chuntais freisin. +change_username_redirect_prompt = Athreoróidh an sean-ainm úsáideora go dtí go n-éilíonn duine é +continue = Lean ar aghaidh +cancel = Cealaigh +language = Teanga +ui = Téama +hidden_comment_types = Cineálacha tráchtaireachta ceilte +hidden_comment_types.ref_tooltip = Tuairimí ina dtagraíodh an tsaincheist seo ó shaincheiste/coiste eile... +hidden_comment_types.issue_ref_tooltip = Tuairimí ina n-athraíonn an t-úsáideoir an brainse/clib a bhaineann leis an tsaincheist +comment_type_group_reference = Tagairt +comment_type_group_label = Lipéad +comment_type_group_milestone = Cloch Mhíle +comment_type_group_assignee = Sannaitheoir +comment_type_group_title = Teideal +comment_type_group_branch = Brainse +comment_type_group_time_tracking = Rianú Ama +comment_type_group_deadline = Spriocdháta +comment_type_group_dependency = Spleáchas +comment_type_group_lock = Stádas Glas +comment_type_group_review_request = Iarratas athbhreithnithe +comment_type_group_pull_request_push = Tiomáintí curtha leis +comment_type_group_project = Tionscadal +comment_type_group_issue_ref = Tagairt eisiúna +saved_successfully = Sábháiltear do shocruithe go rathúil. +privacy = Príobháideacht +keep_activity_private = Folaigh gníomhaíocht ó leathanach próifíle +enable_custom_avatar = Úsáid Avatar Saincheaptha +choose_new_avatar = Roghnaigh avatar nua +update_avatar = Nuashonrú Avatar +delete_current_avatar = Scrios Avatar Reatha +uploaded_avatar_not_a_image = Ní íomhá é an comhad uaslódáilte. +uploaded_avatar_is_too_big = Sáraíonn méid an chomhaid uaslódáilte (%d KiB) an méid uasta (%d KiB). +update_avatar_success = Tá do avatar nuashonraithe. +update_user_avatar_success = Nuashonraíodh avatar an úsáideora. +old_password = Pasfhocal Reatha +new_password = Pasfhocal Nua +retype_new_password = Deimhnigh Pasfhocal Nua +password_incorrect = Tá an pasfhocal reatha mícheart. +manage_emails = Bainistigh Seoltaí Ríomhphoist +email_desc = Úsáidfear do phríomhsheoladh ríomhphoist le haghaidh fógraí, aisghabháil pasfhocal agus, ar choinníoll nach bhfuil sé i bhfolach, oibríochtaí Git bunaithe ar an ngréas +primary = Príomhúil +activated = Gníomhachtaithe +requires_activation = Éilíonn gníomhachtú +primary_email = Déan príomhúil +activate_email = Seol Gníomhachtaithe +activations_pending = Gníomhartha ar Feitheamh +can_not_add_email_activations_pending = Tá gníomhachtú ar feitheamh, déan iarracht arís i gceann cúpla nóiméad más mian leat ríomhphost nua a chur leis. +delete_email = Bain +email_deletion = Bain Seoladh R-phoist +email_deletion_desc = Bainfear an seoladh ríomhphoist agus an fhaisnéis ghaolmhar as do chuntas. Ní bheidh na tiomáintí Git a bhaineann leis an seoladh ríomhphoist seo athraithe. Lean ar aghaidh? +email_deletion_success = Tá an seoladh ríomhphoist bainte. +theme_update_success = Nuashonraíodh do théama. +theme_update_error = Níl an téama roghnaithe ann. +openid_deletion = Bain Seoladh OpenID +openid_deletion_desc = Cuirfidh an seoladh OpenID seo a bhaint as do chuntas cosc ort síniú isteach leis. Lean ar aghaidh? +openid_deletion_success = Tá an seoladh OpenID bainte. +add_new_openid = Cuir URI OpenID nua leis +add_email = Cuir Seoladh R-phoist leis +add_openid = Cuir OpenID URI +add_email_success = Cuireadh an seoladh ríomhphoist nua leis. +email_preference_set_success = Socraíodh rogha ríomhphoist go rathúil. +add_openid_success = Cuireadh an seoladh OpenID nua leis. +keep_email_private = Folaigh Seoladh ríomhphoist +openid_desc = Ligeann OpenID duit fíordheimhniú a tharmligean chuig soláthraí seachtrach. +manage_ssh_keys = Bainistigh Eochracha SSH +manage_ssh_principals = Bainistigh Príomhoidí Teastas SSH +manage_gpg_keys = Bainistigh Eochracha GPG +add_key = Cuir Eochair +principal_desc = Tá baint ag na príomhoidí deimhnithe SSH seo le do chuntas agus ceadaíonn siad rochtain iomlán ar do stórtha. +add_new_principal = Cuir Príomhoide +ssh_key_been_used = Cuireadh an eochair SSH seo leis an bhfreastalaí cheana féin. +ssh_key_name_used = Tá eochair SSH leis an ainm céanna ar do chuntas cheana féin. +ssh_principal_been_used = Cuireadh an príomhoide seo leis an bhfreastalaí cheana féin. +gpg_key_id_used = Tá eochair GPG poiblí leis an aitheantas céanna ann cheana féin. +gpg_no_key_email_found = Ní mheaitseálann an eochair GPG seo aon seoladh ríomhphoist gníomhachtaithe a bhaineann le do chuntas. Féadfar é a chur leis fós má shíníonn tú an comhartha a chuirtear ar fáil. +gpg_key_matched_identities = Aitheantais Meaitseáilte: +gpg_key_matched_identities_long = Meaitseálann na haitheantais leabaithe san eochair seo na seoltaí ríomhphoist gníomhachtaithe seo a leanas don úsáideoir seo. Is féidir gealltanais a mheaitseálann na seoltaí ríomhphoist seo a fhíorú leis an eochair seo. +gpg_key_verified = Eochair Fhíoraithe +gpg_key_verified_long = Fíoraíodh an eochair le heochairchomhartha agus is féidir í a úsáid chun a fhíorú go bhfuil geallta ag meaitseáil aon seoltaí ríomhphoist gníomhachtaithe don úsáideoir seo chomh maith le haon aitheantas comhoiriúnaithe don eochair seo. +gpg_key_verify = Fíoraigh +gpg_invalid_token_signature = Ní mheaitseálann an eochair, an síniú agus an comhartha GPG a sholáthraítear nó tá an comhartha as dáta. +gpg_token_required = Ní mór duit síniú a sholáthar don chomhartha thíos +gpg_token = Comhartha +gpg_token_help = Is féidir leat síniú a ghiniúint ag úsáid: +gpg_token_signature = Síniú Armúrtha GPG +verify_gpg_key_success = Tá eochair GPG “%s” fíoraithe. +ssh_key_verified = Eochair Fhíoraithe +ssh_key_verified_long = Fíoraíodh an eochair le heochairchomhartha agus is féidir í a úsáid chun a fhíorú go bhfuil geallta ag teacht le haon seoltaí ríomhphoist gníomhachtaithe don úsáideoir seo. +ssh_key_verify = Fíoraigh +ssh_invalid_token_signature = Ní mheaitseálann an eochair, an síniú nó an comhartha SSH a sholáthraítear nó tá an comhartha as dáta. +ssh_token_required = Ní mór duit síniú a sholáthar don chomhartha thíos +ssh_token = Comhartha +ssh_token_help = Is féidir leat síniú a ghiniúint ag úsáid: +ssh_token_signature = Síniú armúrtha SSH +verify_ssh_key_success = Tá eochair SSH “%s” fíoraithe. +subkeys = Fo-eochracha +key_id = Eochair ID +key_name = Ainm Eochair +key_content = Ábhar +principal_content = Ábhar +add_key_success = Cuireadh an eochair SSH “%s” leis. +add_gpg_key_success = Cuireadh an eochair GPG “%s” leis. +add_principal_success = Cuireadh príomhoide an deimhnithe SSH “%s” leis. +delete_key = Bain +ssh_key_deletion = Bain Eochair SSH +gpg_key_deletion = Bain Eochair GPG +ssh_principal_deletion = Bain Príomhoide Teastas SSH +ssh_key_deletion_desc = Ag baint eochair SSH, cuirtear a rochtain ar do chuntas a chúlghairm. Lean ar aghaidh? +gpg_key_deletion_desc = Má bhaintear eochair GPG, ní fhíoraítear gealltanais a shínigh sé. An leanfaidh tú ar aghaidh? +ssh_principal_deletion_desc = Cúlghairtear a rochtain ar do chuntas Príomhoide Teastas SSH. Lean ar aghaidh? +ssh_key_deletion_success = Tá an eochair SSH bainte. +gpg_key_deletion_success = Tá an eochair GPG bainte amach. +ssh_principal_deletion_success = Tá an príomhoide bainte. +added_on = Cuireadh leis ar %s +valid_until_date = Bailí go dtí %s +valid_forever = Bailí go deo +last_used = Úsáidtear go deireanach ar +no_activity = Gan gníomhaíocht le déanaí +can_read_info = Léigh +can_write_info = Scríobh +key_state_desc = Úsáideadh an eochair seo le 7 lá anuas +token_state_desc = Úsáideadh an comhartha seo le 7 lá anuas +principal_state_desc = Úsáideadh an príomhoide seo le 7 lá anuas +show_openid = Taispeáin ar phróifíl +hide_openid = Folaigh ón bpróifíl +ssh_signonly = Tá SSH faoi láthair faoi láthair mar sin ní úsáidtear na heochracha seo ach le haghaidh fíorú sínithe tiomanta. +ssh_externally_managed = Déantar an eochair SSH seo a bhainistiú go seachtrach don úsáideoir seo +generate_new_token = Gin Comhartha Nua +token_name = Ainm Comhartha +generate_token = Gin Comhartha +generate_token_success = Gintear do chomhartha nua. Cóipeáil é anois mar ní thaispeánfar é arís. +generate_token_name_duplicate = Úsáideadh %s mar ainm feidhmchláir cheana féin. Úsáid ceann nua le do thoil. +delete_token = Scrios +access_token_deletion = Scrios Comhartha Rochtana +access_token_deletion_desc = Cúlghairfear rochtain ar do chuntas le haghaidh feidhmchláir a úsáideann é a scriosadh comhartha. Ní féidir é seo a chur ar ais. Lean ar aghaidh? +delete_token_success = Tá an comhartha scriosta. Níl rochtain ag iarratais a úsáideann é ar do chuntas a thuilleadh. +repo_and_org_access = Rochtain Stórála agus Eagraíochta +permissions_public_only = Poiblí amháin +permissions_access_all = Gach (poiblí, príobháideach agus teoranta) +select_permissions = Roghnaigh ceadanna +permission_no_access = Gan rochtain +permission_read = Léigh +permission_write = Léigh agus Scríobh +at_least_one_permission = Ní mór duit cead amháin ar a laghad a roghnú chun comhartha a chruthú +permissions_list = Ceadanna: +manage_oauth2_applications = Bainistigh Feidhmchláir OAuth2 +edit_oauth2_application = Cuir Feidhmchlár OAuth2 in eagar +remove_oauth2_application = Bain Feidhmchlár OAuth2 +remove_oauth2_application_desc = Ag baint feidhmchlár OAuth2, cúlghairfear rochtain ar gach comhartha rochtana sínithe. Lean ar aghaidh? +remove_oauth2_application_success = Scriosadh an feidhmchlár. +create_oauth2_application = Cruthaigh Feidhmchlár OAuth2 nua +create_oauth2_application_button = Cruthaigh Feidhmchlár +create_oauth2_application_success = D'éirigh leat feidhmchlár nua OAuth2 a chruthú. +update_oauth2_application_success = D'éirigh leat an feidhmchlár OAuth2 a nuashonrú. +oauth2_application_name = Ainm Feidhmchláir +oauth2_confidential_client = Cliant Rúnda. Roghnaigh le haghaidh aipeanna a choimeádann an rún faoi rún, mar aipeanna gréasáin. Ná roghnaigh le haghaidh aipeanna dúchasacha lena n-áirítear aipeanna deisce agus soghluaiste. +oauth2_redirect_uris = URIs a atreorú. Úsáid líne nua do gach URI le do thoil. +save_application = Sábháil +oauth2_client_id = ID Cliant +oauth2_client_secret = Rúnda Cliant +oauth2_regenerate_secret = Athghin Rún +oauth2_regenerate_secret_hint = Chaill tú do rún? +oauth2_client_secret_hint = Ní thaispeánfar an rún arís tar éis duit an leathanach seo a fhágáil nó a athnuachan. Déan cinnte le do thoil gur shábháil tú é. +oauth2_application_edit = Cuir in eagar +oauth2_application_create_description = Tugann feidhmchláir OAuth2 rochtain d'iarratas tríú páirtí ar chuntais úsáideora ar an gcás seo. +oauth2_application_remove_description = Cuirfear feidhmchlár OAuth2 a bhaint cosc air rochtain a fháil ar chuntais úsáideora údaraithe ar an gcás seo. Lean ar aghaidh? +authorized_oauth2_applications = Feidhmchláir Údaraithe OAuth2 +revoke_key = Cúlghairm +revoke_oauth2_grant = Rochtain a chúlghairm +revoke_oauth2_grant_description = Cuirfidh rochtain ar an bhfeidhmchlár tríú páirtí seo a chúlghairm cosc ar an bhfeidhmchlár seo rochtain An bhfuil tú cinnte? +revoke_oauth2_grant_success = Cúlghairtear rochtain go rathúil. +twofa_desc = Chun do chuntas a chosaint ar goid pasfhocal, is féidir leat fón cliste nó gléas eile a úsáid chun pasfhocail aon-uaire bunaithe ar am (“TOTP”) a fháil. +twofa_recovery_tip = Má chailleann tú do ghléas, beidh tú in ann eochair aisghabhála aonúsáide a úsáid chun rochtain ar do chuntas a fháil ar ais. +twofa_is_enrolled = Tá do chuntas cláraithe i bhfíord heimhniú dhá fhachtóir faoi láthair. +twofa_not_enrolled = Níl do chuntas cláraithe faoi láthair i bhfíordheimhniú dhá fhachtóir. +twofa_disable = Díchumasaigh Fíordheimhniú Dhá-Fachtóir +twofa_scratch_token_regenerate = Athghin Eochair Aisghabhála Aonúsáide +twofa_scratch_token_regenerated = Is é %s d'eochair aisghabhála aonúsáide anois. Stóráil é in áit shábháilte, mar ní thaispeánfar é arís. +twofa_enroll = Cláraigh le Fíordheimhniú Dhá-Fachtóir +twofa_disable_note = Is féidir leat fíordheimhniú dhá fhachtóir a dhíchumasú más gá. +twofa_disable_desc = Má dhíchumasaítear fíordheimhniú dhá fhachtóir beidh do chuntas chomh slán. Lean ar aghaidh? +regenerate_scratch_token_desc = Má chuir tú d'eochair aisghabhála míchuir tú nó má d'úsáid tú é cheana féin chun síniú isteach, is féidir leat é a athshocrú anseo. +twofa_disabled = Tá fíordheimhniú dhá fhachtóir díchumasaithe. +scan_this_image = Scan an íomhá seo le d'fheidhmchlár fíordheimhnithe: +or_enter_secret = Nó cuir isteach an rún: %s +then_enter_passcode = Agus cuir isteach an paschód a léirítear san fheidhmchlár: +passcode_invalid = Tá an pascód mícheart. Bain triail as arís. +twofa_enrolled = Tá do chuntas cláraithe go rathúil. Stóráil d'eochair aisghabhála aonúsáide (%s) in áit shábháilte, mar ní thaispeánfar é arís. +twofa_failed_get_secret = Theip ar rún a fháil. +webauthn_desc = Is feistí crua-earraí iad eochracha slándála ina bhfuil eochracha cripte Is féidir iad a úsáid le haghaidh fíordheimhniú dhá fhachtóir. Caithfidh eochracha slándála tacú le caigh deán Fíordheimhnithe WebAuthn +webauthn_register_key = Cuir Eochair Slándála +webauthn_nickname = Leasainm +webauthn_delete_key = Bain Eochair Slándála +webauthn_delete_key_desc = Má bhaineann tú eochair slándála ní féidir leat síniú leis a thuilleadh. Lean ar aghaidh? +webauthn_key_loss_warning = Má chailleann tú d'eochracha slándála, caillfidh tú rochtain ar do chuntas. +webauthn_alternative_tip = B'fhéidir gur mhaith leat modh fíordheimhnithe breise a chumrú. +link_account = Cuntas Nasc +remove_account_link = Bain Cuntas Nasctha +remove_account_link_success = Tá an cuntas nasctha bainte amach. +hooks.desc = Cuir crúcaí gréasán leis a spreagfar do gach stór ar leatsa iad. +orgs_none = Níl tú ina bhall d'aon eagraíochtaí. +repos_none = Níl aon stórais agat. +delete_account = Scrios Do Cuntas +delete_prompt = Scriosfaidh an oibríocht seo do chuntas úsáideora go buan. NÍ FÉIDIR é a chealú. +delete_with_all_comments = Tá do chuntas níos óige ná %s. Chun tuairimí taibhse a sheachaint, scriosfar gach trácht saincheistea/PR leis. +confirm_delete_account = Deimhnigh scriosadh +delete_account_title = Scrios Cuntas Úsáide +delete_account_desc = An bhfuil tú cinnte gur mhaith leat an cuntas úsáideora seo a scriosadh go buan? +email_notifications.enable = Cumasaigh Fógraí Ríomhphoist +email_notifications.onmention = Ríomhphost amháin ar luaigh +email_notifications.disable = Díchumasaigh Fógraí Ríomhphoist +email_notifications.submit = Socraigh rogha ríomhphoist +email_notifications.andyourown = Agus Do Fógraí Féin +visibility = Infheictheacht úsáideora +visibility.public = Poiblí +visibility.public_tooltip = Infheicthe do gach duine +visibility.limited = Teoranta +visibility.private = Príobháideach +visibility.private_tooltip = Ní fheictear ach do bhaill d'eagraíochtaí a chuaigh tú isteach + +[repo] +owner = Úinéir +owner_helper = B'fhéidir nach dtaispeánfar roinnt eagraíochtaí sa anuas mar gheall ar theorainn uasta comhaireamh stórais. +repo_name = Ainm Stórais +repo_size = Méid an Stóras +template = Teimpléad +template_helper = Déan teimpléad den stóras +template_description = Ligeann stórais teimpléid d'úsáideoirí stórais nua a ghiniúint leis an struchtúr eolaire céanna, comhaid agus socruithe roghnacha. +visibility = Infheictheacht +visibility_description = Ní bheidh ach an t-úinéir nó baill na heagraíochta má tá cearta acu in ann é a fheiceáil. +visibility_helper = Déan stóras príobháideach +visibility_helper_forced = Cuireann riarthóir do shuíomh iallach ar stórais nua a bheith príobháideach. +clone_helper = Teastaíonn cabhair ó chlónáil? Tabhair cuairt ar Cabhair. +fork_repo = Stóras Forc +fork_from = Forc ó +already_forked = Tá tú tar éis %s a fhoirceann +fork_to_different_account = Forc chuig cuntas difriúil +fork_visibility_helper = Ní féidir infheictheacht stór forcailte a athrú. +fork_branch = Brainse le clónú chuig an bhforc +all_branches = Gach brainse +fork_no_valid_owners = Ní féidir an stór seo a fhorcáil toisc nach bhfuil úinéirí bailí ann. +use_template = Úsáid an teimpléad seo +open_with_editor = Oscail le %s +download_zip = Íoslódáil ZIP +download_tar = Íoslódáil TAR.GZ +download_bundle = Íoslódáil BUNDLE +generate_repo = Cruthaigh Stóras +generate_from = Gin Ó +repo_desc = Cur síos +repo_desc_helper = Cuir isteach tuairisc ghearr (roghnach) +repo_gitignore_helper_desc = Roghnaigh na comhaid nach bhfuil le rianú ó liosta teimpléid do theangacha coitianta. Cuirtear déantáin tipiciúla a ghineann uirlisí tógála gach teanga san áireamh ar.gitignore de réir réamhshocraithe. +license = Ceadúnas +object_format = Formáid Oibiacht +readme = README +readme_helper_desc = Seo an áit inar féidir leat cur síos iomlán a scríobh do thionscadal. +create_repo = Cruthaigh Stóras +default_branch = Branse Réamhshocraithe +default_branch_label = réamhshocraithe +default_branch_helper = Is é an brainse réamhshocraithe an bunbhrainse d'iarratais tarraingthe agus gealltanna cód. +mirror_prune = Prúnáil +mirror_prune_desc = Bain tagairtí cianrianaithe atá as feidhm +mirror_interval_invalid = Níl an eatramh scátháin bailí. +mirror_sync = sioncronaithe +mirror_sync_on_commit = Sioncrónaigh nuair a bhrúitear geallúintí +mirror_address = Clón Ó URL +mirror_address_desc = Cuir aon dhintiúir riachtanacha sa chuid Údaraithe. +mirror_address_url_invalid = Tá an URL curtha ar fáil neamhbhailí. Caithfidh tú gach comhpháirt den url a éalú i gceart. +mirror_address_protocol_invalid = Tá an URL curtha ar fáil neamhbhailí. Ní féidir ach suíomhanna http (s)://nó git://a úsáid le haghaidh scátháin. +mirror_lfs = Stóráil Comhad Móra (LFS) +mirror_lfs_desc = Gníomhachtaigh scáthú sonraí LFS. +mirror_lfs_endpoint = Críochphointe LFS +mirror_lfs_endpoint_desc = Déanfaidh Sync iarracht an url clónála a úsáid chun an freastalaí LFS a chinneadh. Is féidir leat críochphointe saincheaptha a shonrú freisin má tá na sonraí LFS stórtha stóráilte áit éigin eile. +mirror_last_synced = Sincronaithe Deireanach +mirror_password_placeholder = (Gan athrú) +mirror_password_blank_placeholder = (Neamhshocraithe) +mirror_password_help = Athraigh ainm úsáideora chun pasfhocal stóráilte a scriosadh. +watchers = Breathnóirí +stargazers = Réalteoirí +stars_remove_warning = Bainfidh sé seo na réaltaí go léir ón stóras seo. +forks = Forcanna +stars = Réaltaí +reactions_more = agus %d níos mó +unit_disabled = Tá an chuid stórais seo díchumasaithe ag riarthóir an láithreáin. +language_other = Eile +adopt_search = Iontráil ainm úsáideora chun stórais neamhghlactha a chuardach... (fág bán chun gach rud a fháil) +adopt_preexisting_label = Glacadh le Comhaid +adopt_preexisting = Glac le comhaid atá ann cheana +adopt_preexisting_content = Cruthaigh stór ó %s +adopt_preexisting_success = Comhaid ghlacadh agus stór cruthaithe ó %s +delete_preexisting_label = Scrios +delete_preexisting = Scrios comhaid atá ann cheana +delete_preexisting_content = Scrios comhaid i %s +delete_preexisting_success = Scriosta comhaid neamhghlactha i %s +blame_prior = Féach ar an milleán roimh an athrú seo +blame.ignore_revs = Ag déanamh neamhairde de leasuithe i .git-blame-ignore-revs. Cliceáil anseo chun seachaint agus an gnáth-amharc milleán a fheiceáil. +blame.ignore_revs.failed = Theip ar neamhaird a dhéanamh ar leasuithe i .git-blame-ignore-revs. +transfer.accept = Glac le hAistriú +transfer.accept_desc = Aistriú chuig “%s” +transfer.reject = Diúltaigh aistriú +transfer.reject_desc = `Cealaigh aistriú chuig "%s"` +transfer.no_permission_to_accept = Níl cead agat glacadh leis an aistriú seo. +transfer.no_permission_to_reject = Níl cead agat an aistriú seo a dhiúltú. +desc.private = Príobháideach +desc.public = Poiblí +desc.template = Teimpléad +desc.internal = Inmheánach +desc.archived = Cartlannaithe +desc.sha256 = SHA256 +template.items = Míreanna Teimpléad +template.git_content = Ábhar Git (Brainse Réamhshocraithe) +template.git_hooks = Crúcanna Git +template.git_hooks_tooltip = Faoi láthair ní féidir leat Git Hooks a mhodhnú nó a bhaint nuair a chuirtear leis. Roghnaigh é seo ach amháin má tá muinín agat as an stóras teimpléid. +template.webhooks = Crúcaí gréasáin +template.topics = Topaicí +template.avatar = Abhatár +template.issue_labels = Lipéid Eisiúna +template.one_item = Ní mór mír teimpléad amháin ar a laghad a roghnú +template.invalid = Ní mór stór teimpléad a roghnú +archive.title_date = Tá an stóras seo cartlannaithe ar %s. Is féidir leat comhaid a fheiceáil agus é a chlónú, ach ní féidir leat saincheisteanna a bhrú nó a oscailt ná iarratais a tharraingt. +form.reach_limit_of_creation_1 = Tá úinéir an stóras tar éis teorainn de %d stóras a bhaint amach cheana féin. +form.reach_limit_of_creation_n = Tá úinéir an stórais tar éis teorainn de %d stórtha a bhaint amach cheana féin. +form.name_reserved = Tá ainm an stór "%s" in áirithe. +form.name_pattern_not_allowed = Ní cheadaítear an patrún "%s" in ainm stór. +need_auth = Údarú +migrate_options = Roghanna Imirce +migrate_options_mirror_helper = Beidh an stóras seo ina scáthán +migrate_options_lfs = Aimirce comhaid LFS +migrate_options_lfs_endpoint.label = Críochphointe LFS +migrate_options_lfs_endpoint.description = Déanfaidh imirce iarracht do chianda Git a úsáid chun freastalaí LFS a chinneadh. Is féidir leat críochphointe saincheaptha a shonrú freisin má tá na sonraí LFS stórtha stóráilte áit éigin eile. +migrate_options_lfs_endpoint.description.local = Tacaítear le cosán freastalaí áitiúil freisin. +migrate_options_lfs_endpoint.placeholder = Má fhágtar bán, díorthófar an críochphointe ón URL clóin +migrate_items = Míreanna Imirce +migrate_items_wiki = Wiki +migrate_items_milestones = Clocha míle +migrate_items_labels = Lipéid +migrate_items_issues = Saincheisteanna +migrate_items_pullrequests = Iarrataí Tarraing +migrate_items_merge_requests = Iarrataí Cumaisc +migrate_items_releases = Eisiúintí +migrate_repo = Stóras Imirc +migrate.clone_address = Aimirce/ Clón Ó URL +migrate.github_token_desc = Is féidir leat comhartha amháin nó níos mó a chur le camóg scartha anseo chun imirce a dhéanamh níos gasta mar gheall ar theorainn ráta API GitHub. RABHADH: D'fhéadfadh mí-úsáid na ngné seo beartas an sholáthraí seirbhíse a shárú agus blocáil cuntais a bheith mar thoradh air. +migrate.clone_local_path = nó cosán freastalaí áitiúil +migrate.permission_denied = Ní cheadaítear duit stórais áitiúla a iompórtáil. +migrate.permission_denied_blocked = Ní féidir leat allmhairiú ó óstaigh neamh-cheadaithe, iarr ar an riarachán socruithe ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS a sheiceáil le do thoil. +migrate.invalid_lfs_endpoint = Níl an críochphointe LFS bailí. +migrate.failed = Theip ar an imirce:% v +migrate.migrate_items_options = Teastaíonn Comhartha Rochtana chun míreanna breise a aistriú +migrated_from = Aistríodh ó %[2]s +migrated_from_fake = Aistrithe ó %[1]s +migrate.migrate = Aistrigh Ó %s +migrate.migrating = Ag aistriú ó %s ... +migrate.migrating_failed = Theip ar aistriú ó %s. +migrate.migrating_failed.error = Theip ar aistriú: %s +migrate.migrating_failed_no_addr = Theip ar an imirce. +migrate.git.description = Aistrigh stór amháin ó aon seirbhís Git. +migrate.gitlab.description = Aistrigh sonraí ó gitlab.com nó ó chásanna GitLab eile. +migrate.gitea.description = Aistrigh sonraí ó gitea.com nó ó chásanna Gitea eile. +migrate.gogs.description = Aistrigh sonraí ó notabug.org nó ó chásanna eile de chuid Gogs. +migrate.onedev.description = Aistrigh sonraí ó code.onedev.io nó ó chásanna OneDev eile. +migrate.codebase.description = Aistrigh sonraí ó codebasehq.com. +migrate.gitbucket.description = Aistrigh sonraí ó chásanna GitBucket. +migrate.migrating_git = Sonraí Git a Aimirce +migrate.migrating_topics = Ábhair Imirce +migrate.migrating_milestones = Clocha Míle a Imirce +migrate.migrating_labels = Lipéid Imirce +migrate.migrating_releases = Eisiúintí Imirce +migrate.migrating_issues = Saincheisteanna Imirce +migrate.migrating_pulls = Iarratais Tarraingthe á n-Imirce +migrate.cancel_migrating_title = Cealaigh Imirce +migrate.cancel_migrating_confirm = Ar mhaith leat an imirce seo a chealú? +mirror_from = scáthán de +forked_from = forcailte ó +generated_from = a ghintear ó +fork_from_self = Ní féidir leat stóras atá agat a fhorcáil. +fork_guest_user = Sínigh isteach chun an stóras seo a fhorc. +watch_guest_user = Sínigh isteach chun féachaint ar an stór seo. +star_guest_user = Sínigh isteach chun an stóras seo a réalú. +watch = Fhéachaint +unwatch = Dífhéachaint +star = Réalta +unstar = Bain Réalta +fork = Forc +download_archive = Íoslódáil Stóras +more_operations = Tuilleadh oibríochtaí +quick_guide = Treoir Tapa +clone_this_repo = Clóin an stóras seo +cite_this_repo = Luaigh an stóras seo +create_new_repo_command = Stóras nua a chruthú ar an líne ordaithe +push_exist_repo = Stóras atá ann cheana a bhrú ón líne ordaithe +empty_message = Níl aon ábhar sa stóras seo. +broken_message = Ní féidir na sonraí Git atá mar bhunús leis an stóras seo a léamh. Déan teagmháil le riarthóir an chás seo nó scrios an stóras seo. +code = Cód +code.desc = Rochtain ar chód foinse, comhaid, gealltanais agus brainsí. +branch = Brainse +tree = Crann +clear_ref = `Tagairt reatha soiléir` +filter_branch_and_tag = Scagaire brainse nó clib +find_tag = Aimsigh clib +branches = Brainsí +tag = Clib +tags = Clibeanna +issues = Saincheisteanna +pulls = Iarratais Tarraingthe +packages = Pacáistí +actions = Gníomhartha +release = Scaoileadh +releases = Scaoileann +labels = Lipéid +milestones = Clocha míle +org_labels_desc = Lipéid ar leibhéal eagraíochta is féidir a úsáid le gach stóras faoin eagraíocht seo +org_labels_desc_manage = bainistigh +commits = Tiomáintí +commit = Tiomantas +released_this = scaoileadh seo +file.title = %s ag %s +file_raw = Amh +file_history = Stair +file_view_source = Féach Foinse +file_view_rendered = Amharc Rindreáilte +file_view_raw = Amharc Amh +file_permalink = Buan-nasc +file_too_large = Tá an comhad ró-mhór le taispeáint. +invisible_runes_header = `Tá carachtair Unicode dofheicthe sa chomhad seo ` +invisible_runes_description = `Tá carachtair dofheicthe Unicode sa chomhad seo nach féidir a idirdhealú do dhaoine ach d'fhéadfadh ríomhaire iad a phróiseáil ar bhealach difriúil. Má cheapann tú go bhfuil sé seo d'aon ghnó, is féidir leat neamhaird a dhéanamh go sábháilte don rabhadh seo Úsáid an cnaipe Escape chun iad a nochtadh. ` +ambiguous_runes_header = `Tá carachtair Unicode débhríoch sa chomhad seo ` +ambiguous_runes_description = `Tá carachtair Unicode sa chomhad seo a d'fhéadfadh a bheith mearbhall le carachtair eile. Má cheapann tú go bhfuil sé seo d'aon ghnó, is féidir leat neamhaird a dhéanamh go sábháilte don rabhadh seo Úsáid an cnaipe Escape chun iad a nochtadh. ` +invisible_runes_line = `Tá carachtair unicode dofheicthe ag an líne seo ` +ambiguous_runes_line = `Tá carachtair unicode débhríoch ag an líne seo ` +ambiguous_character = `Is féidir %[1]c [U+%04[1]X] a mheascadh le %[2]c [U+%04[2]X]` +escape_control_characters = Éalú +unescape_control_characters = Dí-Éalú +file_copy_permalink = Cóipeáil Buan-nasc +view_git_blame = Féach ar Git Blame +stored_lfs = Stóráilte le Git LFS +symbolic_link = Nasc siombalach +executable_file = Comhad Infheidhmithe +vendored = Díoltóra +generated = Gintear +commit_graph = Graf Tiomantas +commit_graph.select = Roghnaigh brainsí +commit_graph.hide_pr_refs = Folaigh Iarrataí Tarraing +commit_graph.monochrome = Mona +commit_graph.color = Dath +commit.contained_in = Tá an tiomantas seo le fáil i: +commit.contained_in_default_branch = Tá an tiomantas seo mar chuid den bhrainse réamhshocraithe +commit.load_referencing_branches_and_tags = Luchtaigh brainsí agus clibeanna a thagraíonn an tiomantas +blame = An milleán +download_file = Íoslódáil comhad +normal_view = Amharc Gnáth +line = líne +lines = línte +from_comment = (trácht) +editor.add_file = Cuir Comhad +editor.new_file = Comhad Nua +editor.upload_file = Uaslódáil Comhad +editor.edit_file = Cuir Comhad in eagar +editor.preview_changes = Athruithe Réamhamhar +editor.cannot_edit_lfs_files = Ní féidir comhaid LFS a chur in eagar sa chomhéadan gréasáin. +editor.cannot_edit_non_text_files = Ní féidir comhaid dhénártha a chur in eagar sa chomhéadan gréasáin. +editor.edit_this_file = Cuir Comhad in eagar +editor.this_file_locked = Tá an comhad faoi ghlas +editor.must_be_on_a_branch = Caithfidh tú a bheith ar bhrainse chun athruithe a dhéanamh nó a mholadh ar an gcomhad seo. +editor.fork_before_edit = Ní mór duit an stór seo a fhorcáil chun athruithe a dhéanamh nó a mholadh ar an gcomhad seo. +editor.delete_this_file = Scrios Comhad +editor.must_have_write_access = Caithfidh rochtain scríofa a bheith agat chun athruithe a dhéanamh nó a mholadh ar an gcomhad seo. +editor.file_delete_success = Tá an comhad "%s" scriosta. +editor.name_your_file = Ainmnigh do chomhad… +editor.or = nó +editor.cancel_lower = Cealaigh +editor.commit_signed_changes = Tiomantas Athruithe Sínithe +editor.commit_changes = Athruithe a Tiomantas +editor.add = Cuir %s leis +editor.update = Nuashonraigh %s +editor.delete = Scrios %s +editor.patch = Cuir paiste i bhfeidh +editor.patching = Paisteáil: +editor.fail_to_apply_patch = Ní féidir paiste "%s" a chur i bhfeidhm +editor.new_patch = Paiste Nua +editor.commit_message_desc = Cuir cur síos leathnaithe roghnach leis… +editor.signoff_desc = Cuir leantóir sínithe ag an gcoiteoir ag deireadh na teachtaireachta logála tiomanta. +editor.create_new_branch = Cruthaigh brainse nua don ghealltanas seo agus cuir tús le hiarratas tarraingthe. +editor.create_new_branch_np = Cruthaigh brainse nua don tiomantas seo. +editor.propose_file_change = Athrú comhad a mholadh +editor.new_branch_name = Ainmnigh an brainse nua don gealltanas seo +editor.new_branch_name_desc = Ainm brainse nua… +editor.cancel = Cealaigh +editor.filename_cannot_be_empty = Ní féidir ainm an chomhaid a bheith folamh. +editor.filename_is_invalid = Tá ainm an chomhaid neamhbhailí: "%s". +editor.branch_does_not_exist = Níl brainse "%s" ann sa stóras seo. +editor.branch_already_exists = Tá brainse "%s" ann cheana féin sa stóras seo. +editor.directory_is_a_file = Úsáidtear ainm eolaire "%s" cheana féin mar ainm comhaid sa stóras seo. +editor.file_is_a_symlink = Is nasc siombalach é "%s". Ní féidir naisc shiombalacha a chur in eagar san eagarthóir gréasáin +editor.filename_is_a_directory = Úsáidtear ainm comhaid "%s" cheana féin mar ainm eolaire sa stóras seo. +editor.file_editing_no_longer_exists = Níl an comhad atá á chur in eagar, "%s", ann sa stóras seo a thuilleadh. +editor.file_deleting_no_longer_exists = Níl an comhad atá á scriosadh, "%s", ann sa stóras seo a thuilleadh. +editor.file_changed_while_editing = Tá athrú tagtha ar ábhar an chomhad ó thosaigh tú ag eagarthóireacht Cliceáil anseo chun iad a fheiceáil nó Athru ithe a Tiomantas arís chun iad a fhorscríobh. +editor.file_already_exists = Tá comhad darb ainm "%s" ann cheana féin sa stóras seo. +editor.push_out_of_date = Is cosúil go bhfuil an brú as dáta. +editor.commit_empty_file_header = Tiomantas comhad folamh +editor.commit_empty_file_text = Tá an comhad atá tú ar tí tiomantas folamh. Ar aghaidh? +editor.no_changes_to_show = Níl aon athruithe le taispeáint. +editor.fail_to_update_file = Theip ar nuashonrú/cruthú comhad "%s". +editor.fail_to_update_file_summary = Teachtaireacht Earráide: +editor.push_rejected_no_message = Dhiúltaigh an freastalaí an t-athrú gan teachtaireacht. Seiceáil Git Hooks le do thoil. +editor.push_rejected = Dhiúltaigh an freastalaí an t-athrú. Seiceáil Git Hooks le do thoil. +editor.push_rejected_summary = Teachtaireacht Diúltaithe Iomlán: +editor.add_subdir = Cuir eolaire leis… +editor.unable_to_upload_files = Theip ar uaslódáil comhaid go "%s" le hearráid: %v +editor.upload_file_is_locked = Tá comhad "%s" faoi ghlas ag %s. +editor.upload_files_to_dir = `Uaslódáil comhaid go "%s"` +editor.cannot_commit_to_protected_branch = Ní féidir gealltanas a thabhairt don bhrainse faoi chosaint "%s". +editor.no_commit_to_branch = Ní féidir tiomantas a thabhairt go díreach don bhrainse mar: +editor.user_no_push_to_branch = Ní féidir leis an úsáideoir brúigh go dtí an brainse +editor.require_signed_commit = Éilíonn an Brainse tiomantas sínithe +editor.cherry_pick = Roghnaigh silíní %s ar: +editor.revert = Fill %s ar: +editor.commit_email = Tiomantas ríomhphost +commits.desc = Brabhsáil stair athraithe cód foinse. +commits.commits = Tiomáintí +commits.no_commits = Níl aon ghealltanas i gcoiteann. Tá stair iomlán difriúil ag "%s" agus "%s". +commits.nothing_to_compare = Tá na brainsí seo cothrom. +commits.search.tooltip = Is féidir eochairfhocail a réamhfhostú le “údar:”, “committer:”, “after:”, nó “before:”, e.g. "fill an t-údar:Alice roimh: 2019-01-13". +commits.search_branch = An Brainse seo +commits.search_all = Gach Brainse +commits.author = Údar +commits.message = Teachtaireacht +commits.date = Dáta +commits.older = Níos sine +commits.newer = Níos nuaí +commits.signed_by = Sínithe ag +commits.signed_by_untrusted_user = Sínithe ag úsáideoir neamhiontaofa +commits.signed_by_untrusted_user_unmatched = Sínithe ag úsáideoir neamhiontaofa nach bhfuil ag teacht leis an gcoiste +commits.gpg_key_id = GPG Eochair ID +commits.ssh_key_fingerprint = Méarloirg Eochair SSH +commits.view_path = Féach ag an bpointe seo sa stair +commit.operations = Oibríochtaí +commit.revert = Téigh ar ais +commit.revert-header = Téigh ar ais: %s +commit.revert-content = Roghnaigh brainse chun filleadh ar: +commit.cherry-pick = Roghnaigh silíní +commit.cherry-pick-header = Roghnaigh silíní: %s +commit.cherry-pick-content = Roghnaigh brainse chun silíní a phiocadh air: +commitstatus.error = Earráid +commitstatus.failure = Teip +commitstatus.pending = Ar feitheamh +commitstatus.success = Rath +projects = Tionscadail +projects.description = Cur síos (roghnach) +projects.description_placeholder = Cur síos +projects.create = Cruthaigh Tionscadal +projects.title = Teideal +projects.new = Tionscadal Nua +projects.new_subheader = Déan do chuid oibre a chomhordú, a rianú agus a nuashonrú in aon áit amháin, ionas go bhfanann na tionscadail trédhearcach agus de réir sceidil. +projects.create_success = Tá an tionscadal "%s" cruthaithe. +projects.deletion = Scrios tionscadal +projects.deletion_desc = Má scriostar tionscadal, bainfear de gach saincheist a bhaineann leis é. Lean ort? +projects.deletion_success = Tá an tionscadal scriosta. +projects.edit = Cuir Tionscadal in Eagar +projects.edit_subheader = Eagraíonn tionscadail saincheisteanna agus rianaíonn siad dul chun cinn. +projects.modify = Cuir Tionscadal in Eagar +projects.edit_success = Tá an tionscadal "%s" nuashonraithe. +projects.open = Oscailte +projects.close = Dún +projects.column.assigned_to = Sannta do +issues.desc = Eagraigh tuarascálacha fabht, tascanna agus cloch mhíle. +issues.filter_assignees = Scagaire Sannaitheoir +issues.filter_milestones = Cloch Mhíle Scagaire +issues.filter_projects = Tionscadal Scagaire +issues.filter_labels = Lipéad Scagaire +issues.filter_reviewers = Athbhreithneoir Scagaire +issues.new = Eagrán Nua +issues.new.title_empty = Ní féidir leis an teideal a bheith folamh +issues.new.labels = Lipéid +issues.new.clear_labels = Lipéid shoiléir +issues.new.projects = Tionscadail +issues.new.clear_projects = Tionscadail soiléire +issues.new.no_projects = Gan aon tionscadal +issues.new.open_projects = Tionscadail Oscailte +issues.new.closed_projects = Tionscadail Dúnta +issues.new.no_items = Gan aon earraí +issues.new.milestone = Cloch Mhíle +issues.new.no_milestone = Gan Chloch Mhíle +issues.new.clear_milestone = Cloch Mhíle soiléir +issues.new.assignees = Sannaitheoirí +issues.new.clear_assignees = Ceannaitheoirí soiléir +issues.new.no_assignees = Gan aon Sannaitheoirí +issues.new.no_reviewers = Gan Léirmheastóirí +issues.edit.already_changed = Ní féidir athruithe a shábháil ar an tsaincheist. Dealraíonn sé gur athraigh úsáideoir eile an t-ábhar cheana féin. Athnuachan an leathanach agus déan iarracht eagarthóireacht arís chun a gcuid athruithe a sheachaint +issues.choose.get_started = Faigh Tosaigh +issues.choose.open_external_link = Oscailte +issues.choose.blank = Réamhshocrú +issues.choose.blank_about = Cruthaigh saincheist ó theimpléad réamhshocraithe. +issues.choose.ignore_invalid_templates = Rinneadh neamhaird ar theimpléid +issues.choose.invalid_templates = %v teimpléad neamhbhail(í) aimsíodh +issues.choose.invalid_config = Tá earráidí sa chumraíocht eisiúint: +issues.no_ref = Níl aon Brainse/Clib Sonraithe +issues.create = Cruthaigh Saincheist +issues.new_label = Lipéad Nua +issues.new_label_placeholder = Ainm lipéad +issues.new_label_desc_placeholder = Cur síos +issues.create_label = Cruthaigh Lipéad +issues.label_templates.fail_to_load_file = Theip ar lódáil an chomhaid teimpléid lipéid "%s": %v +issues.add_label = cuireadh an lipéad %s %s leis +issues.add_labels = cuireadh na %s lipéid %s +issues.remove_label = bainte an %s lipéad %s +issues.remove_labels = bainte na %s lipéid %s +issues.add_remove_labels = chuir %s leis agus bhain %s lipéid %s +issues.add_milestone_at = `chuir seo leis an gcloch mhíle %s %s` +issues.add_project_at = `chuir seo leis an tionscadal %s %s` +issues.change_milestone_at = `mionathraithe an chloch mhíle ó %s go %s %s` +issues.change_project_at = `mionathraithe an tionscadal ó %s go %s %s` +issues.remove_milestone_at = ` bhain seo den %schloch mhíle %s` +issues.remove_project_at = `bhain sé seo den %san tionscadal %s` +issues.deleted_milestone = `(scriosta)` +issues.deleted_project = `(scriosta)` +issues.self_assign_at = `féin-shannta an %s seo` +issues.add_assignee_at = `a shannadh ag %s %s` +issues.remove_assignee_at = `a bhí gan shannadh ag %s %s` +issues.remove_self_assignment = `bhain siad a sannadh %s` +issues.change_title_at = `athraigh an teideal ó %s go %s %s` +issues.change_ref_at = `tagairt athraithe ó %s go %s %s` +issues.remove_ref_at = `bhaint an tagairt %s %s` +issues.add_ref_at = `Cuireadh an tagairt %s %s leis` +issues.delete_branch_at = `brainse scriosta %s %s` +issues.filter_label = Lipéad +issues.filter_label_exclude = `Úsáid alt + cliceáil/iontráil chun lipéid a eisiamh` +issues.filter_label_no_select = Gach lipéad +issues.filter_label_select_no_label = Gan lipéad +issues.filter_milestone = Cloch Mhíle +issues.filter_milestone_all = Gach cloch mhíle +issues.filter_milestone_none = Gan aon clocha mhíle +issues.filter_milestone_open = Clocha mhíle oscailte +issues.filter_milestone_closed = Clocha mhíle dúnta +issues.filter_project = Tionscadal +issues.filter_project_all = Gach tionscadal +issues.filter_project_none = Gan aon tionscadal +issues.filter_assignee = Sannaitheoir +issues.filter_assginee_no_select = Gach sannaithe +issues.filter_assginee_no_assignee = Gan sannaitheoir +issues.filter_poster = Údar +issues.filter_type = Cineál +issues.filter_type.all_issues = Gach saincheist +issues.filter_type.assigned_to_you = Sannta duit +issues.filter_type.created_by_you = Cruthaithe agat +issues.filter_type.mentioning_you = Ag tagairt duit +issues.filter_type.review_requested = Athbhreithniú iarrtha +issues.filter_type.reviewed_by_you = Athbhreithnithe agat +issues.filter_sort = Sórtáil +issues.filter_sort.latest = Is nuaí +issues.filter_sort.oldest = Is sine +issues.filter_sort.recentupdate = Nuashonraithe le déanaí +issues.filter_sort.leastupdate = Is lú a nuashonraíodh le déanaí +issues.filter_sort.mostcomment = Is mó a bhfuil tráchtanna air +issues.filter_sort.leastcomment = Is lú a bhfuil tráchtanna air +issues.filter_sort.nearduedate = An dáta dlite is gaire +issues.filter_sort.farduedate = An dáta dlite is faide +issues.filter_sort.moststars = An líon réaltaí is mó +issues.filter_sort.feweststars = An líon réaltaí is lú +issues.filter_sort.mostforks = An líon forcanna is mó +issues.filter_sort.fewestforks = An líon forcanna is lú +issues.action_open = Oscailte +issues.action_close = Dún +issues.action_label = Lipéad +issues.action_milestone = Cloch Mhíle +issues.action_milestone_no_select = Gan Chloch Mhíle +issues.action_assignee = Sannaitheoir +issues.action_assignee_no_select = Gan sannaitheoir +issues.action_check = Seiceáil/Dísheiceáil +issues.action_check_all = Seiceáil/Dísheiceáil gach mireanna +issues.opened_by = oscail %[1]s le %[3]s +pulls.merged_by = le %[3]s cumasc %[1]s +pulls.merged_by_fake = le %[2]s a chumasc %[1]s +issues.closed_by = le dúnadh %[3]s %[1]s +issues.opened_by_fake = oscail %[1]s le %[2]s +issues.closed_by_fake = faoi ​​%[2]s dúnadh %[1]s +issues.previous = Roimhe Seo +issues.next = Ar Aghaidh +issues.open_title = Oscailte +issues.closed_title = Dúnta +issues.draft_title = Dréacht +issues.num_comments_1 = %d trácht +issues.num_comments = %d tráchtanna +issues.commented_at = `trácht %s ` +issues.delete_comment_confirm = An bhfuil tú cinnte gur mhaith leat an trácht seo a scriosadh? +issues.context.copy_link = Cóipeáil Nasc +issues.context.quote_reply = Luaigh Freagra +issues.context.edit = Cuir in eagar +issues.context.delete = Scrios +issues.no_content = Níl aon tuairisc ar fáil. +issues.close = Dún Eagrán +issues.comment_pull_merged_at = cumasc tiomantas %[1]s le %[2]s %[3]s +issues.comment_manually_pull_merged_at = cumasc tiomantas %[1]s le %[2]s %[3]s +issues.close_comment_issue = Dún le trácht +issues.reopen_issue = Athoscail +issues.reopen_comment_issue = Athoscail le trácht +issues.create_comment = Trácht +issues.closed_at = `dhún an cheist seo %[2]s` +issues.reopened_at = `athoscail an t-eagrán seo %[2]s` +issues.commit_ref_at = `rinne tagairt don cheist seo ó ghealltanas %[2]s` +issues.ref_issue_from = `rinne dagairt don cheist seo %[4]s %[2]s` +issues.ref_pull_from = `rinne dagairt don iarratas tarraingthe seo %[4]s %[ 2]s` +issues.ref_closed_from = `dhún an cheist seo %[4]s %[2]s` +issues.ref_reopened_from = `d'athoscail an eagrán seo %[4]s %[2]s` +issues.ref_from = `ó %[1]s` +issues.author = Údar +issues.role.owner = Úinéir +issues.role.owner_helper = Is é an t-úsáideoir seo úinéir an stór seo. +issues.role.member = Comhalta +issues.role.member_helper = Is ball den eagraíocht é an t-úsáideoir seo a bhfuil an stór seo ina úinéireacht. +issues.role.collaborator = Comhoibritheoir +issues.role.collaborator_helper = Tugadh cuireadh don úsáideoir seo comhoibriú ar an stóras. +issues.role.first_time_contributor = Cuiditheoir den chéad uair +issues.role.first_time_contributor_helper = Seo é an chéad uair a chuir an t-úsáideoir seo leis an stóras. +issues.role.contributor = Cuiditheoir +issues.re_request_review = Athiarraigh athbhreithniú +issues.is_stale = Rinneadh athruithe ar an PR seo ón athbhreithniú seo +issues.remove_request_review = Bain iarratas athbhreithni +issues.remove_request_review_block = Ní féidir iarratas athbhreithnithe a bhaint +issues.dismiss_review = Díbhe Athbhreithnithe +issues.dismiss_review_warning = An bhfuil tú cinnte gur mhaith leat an athbhreithnithe seo a dhíbhe? +issues.sign_in_require_desc = Sínigh isteach chun dul isteach sa chomhrá seo. +issues.edit = Cuir in eagar +issues.cancel = Cealaigh +issues.save = Sábháil +issues.label_title = Ainm +issues.label_description = Cur síos +issues.label_color = Dath +issues.label_exclusive = Eisiach +issues.label_archive = Lipéad Cartlann +issues.label_archived_filter = Taispeáin lipéid cartlainne +issues.label_archive_tooltip = Eisiatar lipéid chartlainne de réir réamhshocraithe ó na moltaí nuair a dhéantar cuardach de réir lipéid. +issues.label_exclusive_desc = Ainmnigh an lipéad scope/item chun é a dhéanamh comheisiatach le lipéid scope/ eile. +issues.label_exclusive_warning = Bainfear aon lipéid scóipe contrártha le linn eagarthóireacht a dhéanamh ar lipéid iarratais eisiúna nó tarraingthe. +issues.label_count = %d lipéid +issues.label_open_issues = %d saincheisteanna oscailte/iarratais tarraing +issues.label_edit = Cuir in eagar +issues.label_delete = Scrios +issues.label_modify = Cuir Lipéad in Eagar +issues.label_deletion = Scrios Lipéad +issues.label_deletion_desc = Baineann lipéad a scriosadh é ó gach saincheist. Lean ar aghaidh? +issues.label_deletion_success = Tá an lipéad scriosta. +issues.label.filter_sort.alphabetically = Aibítreach +issues.label.filter_sort.reverse_alphabetically = Aisiompú in ord aibítre +issues.label.filter_sort.by_size = Méid is lú +issues.label.filter_sort.reverse_by_size = Méid is mó +issues.attachment.open_tab = `Cliceáil chun "%s" a fheiceáil i gcluaisín nua` +issues.attachment.download = `Cliceáil chun "%s" a íoslódáil` +issues.subscribe = Liostáil +issues.unsubscribe = Díliostáil +issues.lock = Cuir glas ar an gcomhrá +issues.unlock = Díghlasáil comhrá +issues.lock.unknown_reason = Ní féidir fadhb a ghlasáil le cúis anaithnid. +issues.lock_duplicate = Ní féidir saincheist a ghlasáil faoi dhó. +issues.unlock_error = Ní féidir saincheist nach bhfuil glasáilte a dhíghlasáil. +issues.lock_confirm = Glas +issues.unlock_confirm = Díghlasáil +issues.lock.notice_2 = - Is féidir leatsa agus le comhoibrithe eile a bhfuil rochtain acu ar an stór seo fós tuairimí a fhágáil a fheiceann daoine eile. +issues.lock.notice_3 = - Is féidir leat an tsaincheist seo a dhíghlasáil arís sa todhchaí. +issues.unlock.notice_1 = - Bheadh gach duine in ann trácht a dhéanamh ar an gceist seo arís. +issues.unlock.notice_2 = - Is féidir leat an tsaincheist seo a ghlasáil arís sa todhchaí i gcónaí. +issues.lock.reason = Cúis le glasáil +issues.lock.title = Glas comhrá ar an gceist seo. +issues.unlock.title = Díghlasáil comhrá ar an gceist seo. +issues.comment_on_locked = Ní féidir leat trácht a dhéanamh ar shaincheist faoi ghlas. +issues.delete = Scrios +issues.delete.title = Scrios an t-eagrán seo? +issues.delete.text = An bhfuil tú cinnte gur mhaith leat an cheist seo a scriosadh? (Bainfidh sé seo an t-inneachar go léir go buan. Smaoinigh ar é a dhúnadh ina ionad sin, má tá sé i gceist agat é a choinneáil i gcartlann) +issues.tracker = Rianaitheoir Ama +issues.tracker_auto_close = Stopfar ama go huathoibríoch nuair a dhúnfar an tsaincheist seo +issues.tracking_already_started = `Tá tús curtha agat cheana féin ag rianú ama ar eagrán eile!` +issues.cancel_tracking_history = `rianú ama curtha ar ceal %s` +issues.del_time = Scrios an log ama seo +issues.del_time_history = `an t-am caite scriosta %s` +issues.add_time_hours = Uaireanta +issues.add_time_minutes = Miontuairi +issues.add_time_sum_to_small = Níor iontráilíodh aon am. +issues.time_spent_total = An t-am iomlán a chaitear +issues.time_spent_from_all_authors = `Am Iomlán Caitear: %s` +issues.due_date = Dáta dlite +issues.force_push_compare = Déan comparáid +issues.dependency.title = Spleithiúlachtaí +issues.dependency.issue_no_dependencies = Níl aon spleáchais leagtha síos. +issues.dependency.pr_no_dependencies = Níl aon spleáchais leagtha síos. +issues.dependency.add = Cuir spleáchas leis… +issues.dependency.cancel = Cealaigh +issues.dependency.remove = Bain +issues.dependency.remove_info = Bain an spleáchas seo +issues.dependency.added_dependency = `cuireadh spleáchas nua %s` +issues.dependency.removed_dependency = `bainte spleáchas %s` +issues.dependency.pr_closing_blockedby = Cuireann na saincheisteanna seo a leanas bac ar an iarratas tarraingte seo a dhúnadh +issues.dependency.issue_closing_blockedby = Tá na saincheisteanna seo a leanas bac ar dhúnadh an cheist seo +issues.dependency.issue_close_blocks = Cuireann an tsaincheist seo bac ar dhúnadh na saincheisteanna +issues.dependency.pr_close_blocks = Cuireann an iarratas tarraingthe seo bac ar dhúnadh na saincheisteanna +issues.dependency.issue_close_blocked = Ní mór duit gach saincheist a chuireann bac ar an gceist seo a dhúnadh sular féidir leat é a dhúnadh. +issues.dependency.pr_close_blocked = Ní mór duit gach saincheist a bhlocálann an iarratas tarraingthe seo a dhúnadh sula féidir leat é a chumasc. +issues.dependency.blocks_short = Bloic +issues.dependency.blocked_by_short = Ag brath ar +issues.dependency.remove_header = Bain spleáchas +issues.dependency.issue_remove_text = Bainfidh sé seo an spleáchas ón gceist seo. Lean ar aghaidh? +issues.dependency.pr_remove_text = Bainfidh sé seo an spleáchas ón iarratas tarraingthe seo. Lean ar aghaidh? +issues.dependency.setting = Cumasaigh spleáchais le haghaidh Saincheisteanna agus Iarrataí Tar +issues.dependency.add_error_same_issue = Ní féidir leat ceist a dhéanamh ag brath air féin. +issues.dependency.add_error_dep_issue_not_exist = Níl saincheist spleách ann. +issues.dependency.add_error_dep_not_exist = Ní bhíonn spleáchas ann. +issues.dependency.add_error_dep_exists = Tá spleáchas ann cheana féin. +issues.dependency.add_error_cannot_create_circular = Ní féidir leat spleáchas a chruthú le dhá shaincheist a chuireann bac ar a chéile. +issues.dependency.add_error_dep_not_same_repo = Caithfidh an dá shaincheist a bheith sa stór céanna. +issues.review.self.approval = Ní féidir leat d'iarratas tarraingthe féin a cheadú. +issues.review.self.rejection = Ní féidir leat athruithe a iarraidh ar d'iarratas tarraingthe féin. +issues.review.dismissed_label = Dhiúltaigh +issues.review.left_comment = d'fhág trácht +issues.review.content.empty = Ní mór duit trácht a fhágáil a léiríonn an t-athrú (í) iarrtha. +issues.review.pending = Ar feitheamh +issues.review.pending.tooltip = Níl an nóta tráchta seo le feiceáil ag úsáideoirí eile faoi láthair. Chun do thuairimí ar feitheamh a chur isteach, roghnaigh "%s" -> "%s/%s/%s" ag barr an leathanaigh. +issues.review.reviewers = Léirmheasóirí +issues.review.outdated = As dáta +issues.review.outdated_description = Tá athrú tagtha ar ábhar ó rinneadh an trácht seo +issues.review.option.show_outdated_comments = Taispeáin tráchtanna atá as dáta +issues.review.option.hide_outdated_comments = Folaigh tráchtanna atá as dáta +issues.review.show_outdated = Taispeáin as dáta +issues.review.hide_outdated = Folaigh as dáta +issues.review.show_resolved = Taispeáin réitithe +issues.review.hide_resolved = Folaigh réitithe +issues.review.resolve_conversation = Réitigh comhrá +issues.review.un_resolve_conversation = Comhrá gan réiteach +issues.review.resolved_by = mharcáil an comhrá seo mar réitigh +issues.reference_issue.body = Comhlacht +issues.content_history.deleted = scriosta +issues.content_history.edited = curtha in eagar +issues.content_history.created = cruthaithe +issues.content_history.delete_from_history = Scrios ón stair +issues.content_history.delete_from_history_confirm = Scrios ón stair? +issues.content_history.options = Roghanna +issues.reference_link = Tagairt: %s +compare.compare_base = bonn +compare.compare_head = déan comparáid +pulls.desc = Cumasaigh iarratais tarraingthe agus athbhreithnithe cód. +pulls.new = Iarratas Tarraingthe Nua +pulls.view = Féach ar Iarratas Tarraing +pulls.edit.already_changed = Ní féidir athruithe a shábháil ar an iarratas tarraingthe. Dealraíonn sé gur athraigh úsáideoir eile an t-ábhar cheana féin. Athnuachan an leathanach agus déan iarracht eagarthóireacht arís chun a gcuid athruithe a sheachaint +pulls.compare_changes = Iarratas Tarraingthe Nua +pulls.allow_edits_from_maintainers = Ceadaigh eagarthóirí ó chothabhálaí +pulls.allow_edits_from_maintainers_desc = Is féidir le húsáideoirí a bhfuil rochtain scríofa acu ar an mbunbhrainse brú chuig an bhrainse +pulls.allow_edits_from_maintainers_err = Theip ar nuashonrú +pulls.compare_changes_desc = Roghnaigh an brainse le cumasc isteach agus an brainse le tarraingt uaidh. +pulls.has_viewed_file = Breathnaithe +pulls.has_changed_since_last_review = Athraithe ó d'athbhreithniú deire +pulls.viewed_files_label = Breathnaíodh ar %[1]d / %[2]d comhaid +pulls.expand_files = Leathnaigh gach comhaid +pulls.collapse_files = Laghdaigh gach comhaid +pulls.compare_base = cumaisc isteach +pulls.compare_compare = tarraing ó +pulls.switch_comparison_type = Athraigh cineál comparáide +pulls.switch_head_and_base = Athraigh ceann agus bonn +pulls.filter_branch = Brainse scagaire +pulls.show_all_commits = Taispeáin gach gealltanas +pulls.show_changes_since_your_last_review = Taispeáin athruithe ón léirmheas deiridh +pulls.showing_only_single_commit = Ag taispeáint athruithe tiomantais %[1]s amháin +pulls.showing_specified_commit_range = Ag taispeáint athruithe idir %[1]s..%[2]s +pulls.select_commit_hold_shift_for_range = Roghnaigh tiomantas. Coinnigh shift + cliceáil chun raon a roghnú +pulls.review_only_possible_for_full_diff = Ní féidir athbhreithniú a dhéanamh ach amháin nuair a bhreathnaítear ar an difríocht iomlán +pulls.filter_changes_by_commit = Scagaigh de réir tiomantas +pulls.nothing_to_compare = Tá na brainsí seo cothrom. Ní gá iarratas tarraingthe a chruthú. +pulls.nothing_to_compare_have_tag = Tá an brainse/clib roghnaithe cothrom. +pulls.nothing_to_compare_and_allow_empty_pr = Tá na brainsí seo cothrom. Beidh an PR seo folamh. +pulls.has_pull_request = `Tá iarratas tarraingthe idir na brainsí seo ann cheana: %[2]s#%[3]d` +pulls.create = Cruthaigh Iarratas Tarraing +pulls.change_target_branch_at = `athraigh an spriocbhrainse ó %s go %s %s` +pulls.tab_conversation = Comhrá +pulls.tab_commits = Tiomáintí +pulls.tab_files = Comhaid Athraithe +pulls.reopen_to_merge = Athoscail an t-iarratas tarraingthe seo le do thoil chun cumasc a dhéanamh. +pulls.cant_reopen_deleted_branch = Ní féidir an t-iarratas tarraingthe seo a athoscailt toisc gur scriosadh an brainse. +pulls.merged = Cumaiscthe +pulls.merged_success = D'éirigh leis an iarratas tarraingthe a chumasc agus a dhúnadh +pulls.closed = Iarratas tarraingthe dúnta +pulls.manually_merged = Cumaisc de láimh +pulls.merged_info_text = Is féidir an brainse %s a scriosadh anois. +pulls.is_closed = Tá an t-iarratas tarraingthe dúnta. +pulls.title_wip_desc = `Tosaigh an teideal le %s chun an t-iarratas tarraingthe a chosc ó chumasc de thaisme.` +pulls.cannot_merge_work_in_progress = Tá an t-iarratas tarraingthe seo marcáilte mar obair atá ar siúl. +pulls.still_in_progress = Fós ar siúl? +pulls.add_prefix = Cuir réimír %s leis +pulls.remove_prefix = Bain an réimír %s +pulls.data_broken = Tá an t-iarratas tarraingthe seo briste mar gheall ar fhaisnéis forc a bheith in easnamh. +pulls.files_conflicted = Tá athruithe ag an iarratas tarraingthe seo atá contrártha leis an spriocbhrainse. +pulls.required_status_check_failed = Níor éirigh le roinnt seiceálacha riachtanacha. +pulls.required_status_check_missing = Tá roinnt seiceanna riachtanacha ar iarraidh. +pulls.required_status_check_administrator = Mar riarthóir, féadfaidh tú an t-iarratas tarraingthe seo a chumasc fós. +pulls.can_auto_merge_desc = Is féidir an t-iarratas tarraingt seo a chumasc go huathoibríoch. +pulls.cannot_auto_merge_desc = Ní féidir an t-iarratas tarraingthe seo a chumasc go huathoibríoch mar gheall ar choinbhleachtaí. +pulls.cannot_auto_merge_helper = Cumaisc de láimh chun na coinbhleachtaí a réiteach. +pulls.no_merge_desc = Ní féidir an t-iarratas tarraingthe seo a chumasc toisc go bhfuil gach rogha cumaisc stór díchumasaithe. +pulls.no_merge_helper = Cumasaigh roghanna cumaisc i socruithe an stór nó cumasc an t-iarratas tarraingthe de láimh. +pulls.no_merge_wip = Ní féidir an t-iarratas tarraingthe seo a chumasc toisc go bhfuil sé marcáilte mar obair atá ar siúl é. +pulls.no_merge_not_ready = Níl an t-iarratas tarraingthe seo réidh le cumasc, seiceáil stádas athbhreithnithe agus seiceálacha stádais. +pulls.no_merge_access = Níl tú údaraithe chun an t-iarratas tarraingthe seo a chumasc. +pulls.merge_pull_request = Cruthaigh tiomantas cumaisc +pulls.rebase_merge_pull_request = Athbhunaigh ansin go tapa ar aghaidh +pulls.rebase_merge_commit_pull_request = Rebase ansin cruthaigh tiomantas cumaisc +pulls.squash_merge_pull_request = Cruthaigh tiomantas scuaise +pulls.fast_forward_only_merge_pull_request = Go tapa ar aghaidh amháin +pulls.merge_manually = Cumaisc de láimh +pulls.merge_commit_id = ID an tiomantis cumaisc +pulls.require_signed_wont_sign = Éilíonn an bhrainse tiomáintí shínithe, ach ní shínífear an cumasc seo +pulls.invalid_merge_option = Ní féidir leat an rogha cumaisc seo a úsáid don iarratas tarraingthe seo. +pulls.merge_conflict = Theip ar Cumaisc: Bhí coinbhleacht ann agus é ag cumasc. Leid: Bain triail as straitéis dhifriúil +pulls.merge_conflict_summary = Teachtaireacht Earráide +pulls.rebase_conflict = Theip ar Chumasc: Bhí coinbhleacht ann agus tiomantas á athbhunú: %[1]s. Leid: Bain triail as straitéis eile +pulls.rebase_conflict_summary = Teachtaireacht Earráide +pulls.unrelated_histories = Theip ar Cumaisc: Ní roinneann an ceann cumaisc agus an bonn stair choiteann. Leid: Bain triail as straitéis dhifriúil +pulls.merge_out_of_date = Theip ar Cumaisc: Agus an cumaisc á ghiniúint, nuashonraíodh an bonn. Leid: Bain triail as arís. +pulls.head_out_of_date = Theip ar Cumaisc: Agus an cumaisc á ghiniúint, nuashonraíodh an ceann. Leid: Bain triail as arís. +pulls.has_merged = Theip ar: Cumaisíodh an t-iarratas tarraingthe, ní féidir leat a chumasc arís nó an spriocbhrainse a athrú. +pulls.push_rejected = Theip ar Brúigh: Diúltaíodh don bhrú. Déan athbhreithniú ar na Git Hooks don stór seo. +pulls.push_rejected_summary = Teachtaireacht Diúltaithe Iomlán +pulls.push_rejected_no_message = Theip ar Brúigh: Diúltaíodh don bhrú ach ní raibh aon teachtaireacht iargúlta ann. Déan athbhreithniú ar Git Hooks don stór seo +pulls.open_unmerged_pull_exists = `Ní féidir leat oibríocht athoscailte a dhéanamh toisc go bhfuil iarratas tarraingthe ar feitheamh (#%d) le hairíonna comhionanna. ` +pulls.status_checking = Tá roinnt seiceála ar feitheamh +pulls.status_checks_success = D'éirigh le gach seiceáil +pulls.status_checks_warning = Thuairiscigh roinnt seiceálacha rabhaidh +pulls.status_checks_failure = Theip ar roinnt seiceálacha +pulls.status_checks_error = Thug roinnt seiceálacha earráidí +pulls.status_checks_requested = Riachtanach +pulls.status_checks_details = Sonraí +pulls.status_checks_hide_all = Folaigh gach seiceáil +pulls.status_checks_show_all = Taispeáin gach seiceáil +pulls.update_branch = Nuashonrú brainse trí chumasc +pulls.update_branch_rebase = Nuashonraigh an bhrainse trí athbhunú +pulls.update_branch_success = Bhí nuashonrú brainse rathúil +pulls.update_not_allowed = Ní cheadaítear duit brainse a nuashonrú +pulls.outdated_with_base_branch = Tá an brainse seo as dáta leis an mbunbhrainse +pulls.close = Dún Iarratas Tarraing +pulls.closed_at = `dhún an t-iarratas tarraingthe seo %[2]s` +pulls.reopened_at = `athoscail an t-iarratas tarraingthe seo %[2]s` +pulls.cmd_instruction_checkout_title = Seiceáil +pulls.cmd_instruction_checkout_desc = Ó stór tionscadail, seiceáil brainse nua agus déan tástáil ar na hathruithe. +pulls.cmd_instruction_merge_title = Cumaisc +pulls.clear_merge_message = Glan an teachtaireacht chumaisc +pulls.clear_merge_message_hint = Má imrítear an teachtaireacht chumaisc ní bhainfear ach ábhar na teachtaireachta tiomanta agus coimeádfar leantóirí git ginte ar nós "Co-Authored-By …". +pulls.auto_merge_button_when_succeed = (Nuair a éiríonn le seiceálacha) +pulls.auto_merge_when_succeed = Cumaisc uathoibríoch nuair a éiríonn +pulls.auto_merge_newly_scheduled = Bhí an t-iarratas tarraingt sceidealta le cumasc nuair a éiríonn le gach seiceáil. +pulls.auto_merge_has_pending_schedule = Bhí an t-iarratas tarraingthe seo sceidealaithe ag %[1]s chun cumasc uathoibríoch a dhéanamh nuair a éiríonn le gach seiceáil %[2]s. +pulls.auto_merge_cancel_schedule = Cealaigh cumasc uathoibríoch +pulls.auto_merge_not_scheduled = Níl an t-iarratas tarraingthe seo sceidealaithe le cumasc go huathoibríoch. +pulls.auto_merge_canceled_schedule = Cealaíodh an cumaisc uathoibríoch don iarratas tarraingthe seo. +pulls.auto_merge_newly_scheduled_comment = `sceidealta an t-iarratas tarraingthe seo le cumasc uathoibrithe nuair a éiríonn le gach seiceáil %[1]s` +pulls.auto_merge_canceled_schedule_comment = `curtha ar ceal uathchumasc leis an iarratas tarraingthe seo nuair a éiríonn le gach seiceáil %[1]s` +pulls.delete.title = Scrios an t-iarratas tarraingthe seo? +pulls.delete.text = An bhfuil tú cinnte gur mhaith leat an t-iarratas tarraingthe seo a scriosadh? (Bainfidh sé seo an t-inneachar go léir go buan. Smaoinigh ar é a dhúnadh ina ionad sin, má tá sé i gceist agat é a choinneáil i gcartlann) +pull.deleted_branch = (scriosta): %s +comments.edit.already_changed = Ní féidir athruithe a shábháil ar an trácht. Dealraíonn sé gur athraigh úsáideoir eile an t-ábhar cheana féin. Athnuachan an leathanach agus déan iarracht eagarthóireacht arís chun a gcuid athruithe a sheachaint +milestones.new = Cloch Mhíle Nua +milestones.closed = Dúnta %s +milestones.update_ago = Nuashonraithe %s +milestones.no_due_date = Gan dáta dlite +milestones.open = Oscailte +milestones.close = Dún +milestones.new_subheader = Is féidir le clocha míle cabhrú leat ceisteanna a eagrú agus a ndul chun cinn a rianú. +milestones.completeness = %d%% Críochnaithe +milestones.create = Cruthaigh Cloch Mhíle +milestones.title = Teideal +milestones.desc = Cur síos +milestones.due_date = Dáta dlite (roghnach) +milestones.clear = Glan +milestones.create_success = Cruthaíodh an chloch mhíle "%s". +milestones.edit = Cuir Cloch Mhíle in eagar +milestones.edit_subheader = Eagraíonn Garspriocanna saincheisteanna agus rianaítear dul chun cinn. +milestones.cancel = Cealaigh +milestones.modify = Nuashonraigh Cloch Mhíle +milestones.edit_success = Nuashonraíodh cloch mhíle "%s". +milestones.deletion = Scrios Cloch Mhíle +milestones.deletion_desc = Cuireann scriosadh cloch mhíle é as gach saincheist ghaolmhar. Lean ar aghaidh? +milestones.deletion_success = Tá an chloch mhíle scriosta. +milestones.filter_sort.name = Ainm +milestones.filter_sort.least_complete = Is lú críochnaithe +milestones.filter_sort.most_complete = Is mó críochnaithe +milestones.filter_sort.most_issues = Saincheisteanna is mó +milestones.filter_sort.least_issues = Saincheisteanna is lú +signing.will_sign = Síneofar an gealltanas seo le heochair "%s". +signing.wont_sign.error = Bhí earráid ann agus tú ag seiceáil an féidir an tiomantas a shíniú. +signing.wont_sign.never = Ní shínítear tiomáintí riamh. +signing.wont_sign.always = Sínítear tiomáintí i gcónaí. +signing.wont_sign.pubkey = Ní shíníofar an tiomantas toisc nach bhfuil eochair phoiblí agat a bhaineann le do chuntas. +signing.wont_sign.twofa = Caithfidh fíordheimhniú dhá-fhachtóir a bheith agat chun tiomáintí a shíniú. +signing.wont_sign.parentsigned = Ní shíníofar an tiomantas toisc nach bhfuil an tiomantas tuismitheora sínithe. +signing.wont_sign.basesigned = Ní shínífear an cumasc toisc nach bhfuil an tiomantas bunaithe sínithe. +signing.wont_sign.headsigned = Ní shínífear an cumasc toisc nach bhfuil an tiomantas ceann sínithe. +signing.wont_sign.commitssigned = Ní shínífear an cumasc toisc nach bhfuil na tiomáintí gaolmhara go léir sínithe. +signing.wont_sign.approved = Ní shíníofar an cumaisc toisc nach bhfuil an PR ceadaithe. +signing.wont_sign.not_signed_in = Níl tú sínithe isteach. +wiki = Vicí +wiki.welcome = Fáilte go dtí an Vicí. +wiki.welcome_desc = Ligeann an vicí duit cáipéisíocht a scríobh agus a roinnt le comhoibrithe. +wiki.desc = Scríobh agus roinn cáipéisíocht le comhoibrithe. +wiki.create_first_page = Cruthaigh an Chéad Leathanach +wiki.page = Leathanach +wiki.filter_page = Leathanach scagaire +wiki.new_page = Leathanach +wiki.page_title = Teideal an leathanaigh +wiki.page_content = Ábhar an leathanaigh +wiki.default_commit_message = Scríobh nóta faoin nuashonrú leathanaigh seo (roghnach). +wiki.save_page = Sábháil Leathanach +wiki.last_commit_info = Cuireadh %s an leathanach seo in eagar %s +wiki.edit_page_button = Cuir in eagar +wiki.new_page_button = Leathanach Nua +wiki.file_revision = Athbhreithniú Leathanach +wiki.back_to_wiki = Ar ais go leathanach vicí +wiki.delete_page_button = Scrios Leathanach +wiki.delete_page_notice_1 = Ní féidir leathanach vicí "%s" a scriosadh. Lean ort? +wiki.page_already_exists = Tá leathanach vicí leis an ainm céanna ann cheana féin. +wiki.reserved_page = Tá an t-ainm leathanaigh vicí "%s" in áirithe. +wiki.pages = Leathanaigh +wiki.last_updated = Nuashonraithe deireanach %s +wiki.original_git_entry_tooltip = Féach ar an gcomhad bunaidh Git in ionad nasc cairdiúil a úsáid. +activity = Gníomhaíocht +activity.navbar.pulse = Cuisle +activity.navbar.code_frequency = Minicíocht Cód +activity.navbar.contributors = Rannpháirtithe +activity.navbar.recent_commits = Tiomáintí le déanaí +activity.period.filter_label = Tréimhse: +activity.period.daily = 1 lá +activity.period.halfweekly = 3 lá +activity.period.weekly = 1 seachtain +activity.period.monthly = 1 mhí +activity.period.quarterly = 3 mhí +activity.period.semiyearly = 6 mhí +activity.period.yearly = 1 bhliain +activity.overview = Forbhreathnú +activity.active_prs_count_1 = %d Iarratas Tarraingthe Gníomhach +activity.active_prs_count_n = %d Iarratais Tharraing Ghníomhach +activity.merged_prs_count_1 = Iarratas Tarraing Cumaisc +activity.merged_prs_count_n = Iarratais Tharraing Chomhcheangail +activity.opened_prs_count_1 = Iarratas Tarraing Beartaithe +activity.opened_prs_count_n = Iarratais Tarraing Beartaithe +activity.title.user_1 = %d úsáideoir +activity.title.user_n = %d úsáideoirí +activity.title.prs_1 = Iarratas tarraing %d +activity.title.prs_n = %d Iarratais Tarraing +activity.title.prs_merged_by = %s a chumasc ag %s +activity.title.prs_opened_by = %s arna mholadh ag %s +activity.merged_prs_label = Cumaiscthe +activity.opened_prs_label = Molta +activity.active_issues_count_1 = %d Eagrán Gníomhach +activity.active_issues_count_n = %d Ceisteanna Gníomhacha +activity.closed_issues_count_1 = Saincheist Dúnta +activity.closed_issues_count_n = Saincheisteanna Dúnta +activity.title.issues_1 = Saincheist %d +activity.title.issues_n = Saincheisteanna %d +activity.title.issues_closed_from = %s dúnta ó %s +activity.title.issues_created_by = %s cruthaithe ag %s +activity.closed_issue_label = Dúnta +activity.new_issues_count_1 = Eagrán Nua +activity.new_issues_count_n = Saincheisteanna Nua +activity.new_issue_label = Osclaíodh +activity.title.unresolved_conv_1 = %d Comhrá Neamhréitithe +activity.title.unresolved_conv_n = %d Comhráite Neamhréitithe +activity.unresolved_conv_desc = Níor réitíodh na saincheisteanna agus na hiarratais tarraingthe seo le déanaí fós. +activity.unresolved_conv_label = Oscailte +activity.title.releases_1 = Scaoileadh %d +activity.title.releases_n = Eisiúintí %d +activity.title.releases_published_by = %s foilsithe ag %s +activity.no_git_activity = Níor rinneadh aon ghníomhaíocht tiomanta sa tréimhse seo. +activity.git_stats_exclude_merges = Gan cumaisc a áireamh, +activity.git_stats_author_1 = %d údar +activity.git_stats_author_n = %d údair +activity.git_stats_pushed_1 = tá sé brúite +activity.git_stats_pushed_n = tá brú orthu +activity.git_stats_commit_1 = %d tiomantas +activity.git_stats_commit_n = %d tiomáintí +activity.git_stats_push_to_branch = chuig %s agus +activity.git_stats_push_to_all_branches = chuig gach brainse. +activity.git_stats_on_default_branch = Ar %s, +activity.git_stats_file_1 = %d comhad +activity.git_stats_file_n = %d comhaid +activity.git_stats_files_changed_1 = tá athrú tagtha +activity.git_stats_files_changed_n = tá athraithe +activity.git_stats_additions = agus tá ann +activity.git_stats_addition_1 = %d breisiú +activity.git_stats_addition_n = %d breiseanna +activity.git_stats_and_deletions = agus +activity.git_stats_deletion_1 = %d scriosadh +activity.git_stats_deletion_n = %d scriosta +contributors.contribution_type.filter_label = Cineál ranníocaíochta: +contributors.contribution_type.commits = Tiomáintí +contributors.contribution_type.additions = Breiseanna +contributors.contribution_type.deletions = Scriosadh +settings = Socruithe +settings.desc = Is é socruithe an áit ar féidir leat na socruithe don stóras a bhainistiú +settings.options = Stóras +settings.collaboration = Comhoibritheoirí +settings.collaboration.admin = Riarthóir +settings.collaboration.write = Scríobh +settings.collaboration.read = Léigh +settings.collaboration.owner = Úinéir +settings.collaboration.undefined = Neamhshainithe +settings.hooks = Crúcaí Gréasán +settings.githooks = Crúcanna Git +settings.basic_settings = Socruithe Bunúsacha +settings.mirror_settings = Socruithe Scáthán +settings.mirror_settings.docs = Cuir do stóras ar bun chun tiomáintí, clibeanna agus brainsí a shioncronú go huathoibríoch le stóras eile. +settings.mirror_settings.docs.disabled_pull_mirror.instructions = Socraigh do thionscadal chun tiomáintí, clibeanna agus brainsí a bhrú go huathoibríoch chuig stóras eile. Tá scátháin tarraingthe díchumasaithe ag riarthóir do shuíomh. +settings.mirror_settings.docs.disabled_push_mirror.instructions = Socraigh do thionscadal chun tiomáintí, clibeanna agus brainsí a tharraingt go huathoibríoch ó stóras eile. +settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning = Faoi láthair, ní féidir é seo a dhéanamh ach sa roghchlár "Imirce Nua". Le haghaidh tuilleadh eolais, téigh i gcomhairle le do thoil: +settings.mirror_settings.docs.disabled_push_mirror.info = Chuir riarthóir do shuíomh faoi dhíchumasú scátháin bhrú. +settings.mirror_settings.docs.no_new_mirrors = Tá do stóras ag teacht le hathruithe chuig nó ó stóras eile. Cuimhnigh le do thoil nach féidir leat scátháin nua a chruthú faoi láthair. +settings.mirror_settings.docs.can_still_use = Cé nach féidir leat scátháin atá ann cheana a mhodhnú nó cinn nua a chruthú, féadfaidh tú do scáthán atá ann cheana a úsáid fós. +settings.mirror_settings.docs.pull_mirror_instructions = Chun scáthán tarraingthe a shocrú, téigh i gcomhairle le do thoil: +settings.mirror_settings.docs.more_information_if_disabled = Is féidir leat tuilleadh eolais a fháil faoi scátháin bhrú agus tarraingthe anseo: +settings.mirror_settings.docs.doc_link_title = Conas is féidir liom na stórtha a scáthánú? +settings.mirror_settings.docs.doc_link_pull_section = an chuid "Ag tarraingt ó stóras" den doiciméadú. +settings.mirror_settings.docs.pulling_remote_title = Ag tarraingt ó stóras cianda +settings.mirror_settings.mirrored_repository = Stóras scátháin +settings.mirror_settings.pushed_repository = Stóras brúite +settings.mirror_settings.direction = Treo +settings.mirror_settings.direction.pull = Tarraingt +settings.mirror_settings.direction.push = Brúigh +settings.mirror_settings.last_update = Nuashonrú deireanach +settings.mirror_settings.push_mirror.none = Níl aon scátháin bhrú cumraithe +settings.mirror_settings.push_mirror.remote_url = URL Stóras Cianda Git +settings.mirror_settings.push_mirror.add = Cuir Scáthán Brúigh leis +settings.mirror_settings.push_mirror.edit_sync_time = Eagar eatramh sioncronaithe scátháin +settings.sync_mirror = Sioncronaigh Anois +settings.pull_mirror_sync_in_progress = Athruithe a tharraingt ón iargúlta %s i láthair na huaire. +settings.push_mirror_sync_in_progress = Athruithe a bhrú ar an iargúlta %s i láthair na huaire. +settings.site = Láithreán Gréasáin +settings.update_mirror_settings = Nuashonraigh Socruithe Scátháin +settings.branches.switch_default_branch = Athraigh Brainse Réamhshocraithe +settings.branches.update_default_branch = An Brainse Réamhshocraithe a nuashonrú +settings.branches.add_new_rule = Cuir Riail Nua leis +settings.advanced_settings = Ardsocruithe +settings.wiki_desc = Cumasaigh Stór Vicí +settings.use_internal_wiki = Úsáid Vicí Insuite +settings.use_external_wiki = Úsáid Vicí Seachtrach +settings.external_wiki_url = URL Vicí Seachtrach +settings.external_wiki_url_error = Ní URL bailí é URL seachtrach vicí. +settings.external_wiki_url_desc = Atreoraítear cuairteoirí chuig an URL wiki seachtrach agus iad ag cliceáil ar an gcluaisín wiki. +settings.issues_desc = Cumasaigh Rianóir Saincheist Stórais +settings.use_internal_issue_tracker = Úsáid Rianóir Saincheist Ionsuite +settings.use_external_issue_tracker = Úsáid Rianaire Eisiúint Sheachtrach +settings.external_tracker_url = URL Rianaithe Saincheisteanna Seachtrach +settings.external_tracker_url_error = Ní URL bailí é an URL rianaitheora saincheisteanna seachtrach. +settings.external_tracker_url_desc = Déantar cuairteoirí a atreorú chuig an URL rianaithe eisiúintí seachtracha nuair a chliceálann siad ar an táb saincheisteanna. +settings.tracker_url_format = Formáid URL Rianaithe Saincheist Seachtrach +settings.tracker_url_format_error = Ní URL bailí é an fhormáid URL rianaitheora saincheisteanna seachtrach. +settings.tracker_issue_style = Formáid Uimhir Rianaithe Saincheisteanna +settings.tracker_issue_style.numeric = Uimhriúil +settings.tracker_issue_style.alphanumeric = Alfauméireacha +settings.tracker_issue_style.regexp = Léiriú Rialta +settings.tracker_issue_style.regexp_pattern = Patrún Léirithe Rialta +settings.tracker_issue_style.regexp_pattern_desc = Úsáidfear an chéad ghrúpa a gabhadh in ionad {index}. +settings.tracker_url_format_desc = Úsáid na sealbhóirí áite {user}, {repo} agus {index} le haghaidh an ainm úsáideora, an t-ainm stórtha agus an t-innéacs eisiúna. +settings.enable_timetracker = Cumasaigh Rianú Ama +settings.allow_only_contributors_to_track_time = Lig do Rannpháirtithe Amach Am a Rianú +settings.pulls_desc = Cumasaigh Iarratais Tarraingthe Stóras +settings.pulls.ignore_whitespace = Déan neamhaird de spás bán le haghaidh coinbhleachtaí +settings.pulls.enable_autodetect_manual_merge = Cumasaigh cumasc láimhe autodetector (Nóta: I roinnt cásanna speisialta, is féidir míbhreithiúnais tarlú) +settings.pulls.allow_rebase_update = Cumasaigh brainse iarratais tarraingthe a nuashonrú trí athbhunú +settings.pulls.default_delete_branch_after_merge = Scrios brainse an iarratais tarraingthe tar éis cumasc de réir réamhshocraithe +settings.pulls.default_allow_edits_from_maintainers = Ceadaigh eagarthóirí ó chothabhálaí de réir réamhshocraithe +settings.releases_desc = Cumasaigh Eisiúintí Stórais +settings.admin_settings = Socruithe Riarthóra +settings.admin_enable_health_check = Cumasaigh Seiceálacha Sláinte Stórais (git fsck) +settings.admin_code_indexer = Innéacsaitheoir Cód +settings.admin_stats_indexer = Innéacsóir Staitisticí Cód +settings.admin_indexer_unindexed = Neamh-innéacsaithe +settings.reindex_button = Cuir le Scuaine Reindex +settings.reindex_requested = Athinnéacsú Iarrtha +settings.admin_enable_close_issues_via_commit_in_any_branch = Saincheist a dhúnadh trí ghealltanas a rinneadh i mbrainse neamh-mhainneachtana +settings.danger_zone = Crios Contúirte +settings.new_owner_has_same_repo = Tá stóras leis an ainm céanna ag an úinéir nua cheana féin. Roghnaigh ainm eile le do thoil. +settings.convert = Tiontaigh go Stóras Rialta +settings.convert_desc = Is féidir leat an scáthán seo a thiontú ina stór rialta. Ní féidir é seo a chur ar ais. +settings.convert_notices_1 = Déanfaidh an oibríocht seo an scáthán a thiontú ina stóras rialta agus ní féidir é a chur ar ais. +settings.convert_confirm = Tiontaigh Stóras +settings.convert_succeed = Tá an scáthán tiontaithe ina stóras rialta. +settings.convert_fork = Tiontaigh go Stóras Rialta +settings.convert_fork_desc = Is féidir leat an forc seo a thiontú ina stóras rialta. Ní féidir é seo a chur ar ais. +settings.convert_fork_notices_1 = Déanfaidh an oibríocht seo an forc a thiontú ina stóras rialta agus ní féidir é a chur ar ais. +settings.convert_fork_confirm = Tiontaigh Stóras +settings.convert_fork_succeed = Tá an forc tiontaithe ina stóras rialta. +settings.transfer.rejected = Diúltaíodh d'aistriú stóras. +settings.transfer.success = D'éirigh le haistriú stóras. +settings.transfer_abort = Cealaigh aistriú +settings.transfer_abort_invalid = Ní féidir leat aistriú stóras nach bhfuil ann a chealú. +settings.transfer_abort_success = Cuireadh an t-aistriú stóras chuig %s ar ceal go rathúil. +settings.transfer_desc = Aistrigh an stóras seo chuig úsáideoir nó chuig eagraíocht a bhfuil cearta riarthóra agat ina leith. +settings.transfer_in_progress = Tá aistriú leanúnach ann faoi láthair. Cealaigh é más mian leat an stóras seo a aistriú chuig úsáideoir eile. +settings.transfer_notices_1 = - Caillfidh tú rochtain ar an stóras má aistríonn tú é chuig úsáideoir aonair. +settings.transfer_notices_2 = - Coimeádfaidh tú rochtain ar an stóras má aistríonn tú é chuig eagraíocht a bhfuil (comh)úinéir agat. +settings.transfer_notices_3 = - Má tá an stóras príobháideach agus má aistrítear é chuig úsáideoir aonair, cinnteoidh an gníomh seo go bhfuil ar a laghad cead léite ag an úsáideoir (agus athraíonn sé ceadanna más gá). +settings.transfer_owner = Úinéir nua +settings.transfer_perform = Déan Aistriú +settings.transfer_started = `Tá an stóras seo marcáilte le haistriú agus tá sé ag fanacht le deimhniú ó "%s"` +settings.transfer_succeed = Tá an stóras aistrithe. +settings.signing_settings = Socruithe Fíoraithe Sínithe +settings.trust_model = Samhail Iontaobhas Sínithe +settings.trust_model.default = Múnla Iontaobhais Réamhshocraithe +settings.trust_model.default.desc = Úsáid an tsamhail iontaobhais stórais réamhshocraithe don suiteáil +settings.trust_model.collaborator = Comhoibritheoir +settings.trust_model.collaborator.long = Comhoibritheoir: Sínithe muinín ag comhoibrithe +settings.trust_model.collaborator.desc = Déanfar sínithe bailí ó chomhoibritheoirí an stóras seo a mharcáil mar 'iontaofa' – (cibé acu a mheaitseálann siad an tiomnóir nó nach bhfuil). Seachas sin, marcálfar sínithe bailí mar 'neamhiontaofa' má mheaitseálann an síniú an tiomnóir agus mar 'neamh-mheaitseáilte' mura bhfuil. +settings.trust_model.committer = Coimisitheoir +settings.trust_model.collaboratorcommitter = Comhoibritheo+Coimiteoir +settings.trust_model.collaboratorcommitter.long = Comhoibrí+Coiste: sínithe muiníne ó chomhoibrithe a mheaitseálann an tiomnóir +settings.wiki_delete = Scrios Sonraí Vicí +settings.wiki_delete_desc = Tá sonraí wiki stóras a scriosadh buan agus ní féidir iad a chur ar ais. +settings.wiki_delete_notices_1 = - Scriosfaidh agus díchumasóidh sé seo an stóras vicí do %s go buan. +settings.confirm_wiki_delete = Scrios Sonraí Vicí +settings.wiki_deletion_success = Scriosadh sonraí vicí an stórais. +settings.delete = Scrios an Stóras seo +settings.delete_desc = Tá scriosadh stóras buan agus ní féidir é a chealú. +settings.delete_notices_1 = - NÍ FÉIDIR an oibríocht seo a chealú. +settings.delete_notices_2 = - Scriosfaidh an oibríocht seo stór %s go buan lena n-áirítear cód, ceisteanna, nótaí tráchta, sonraí vicí agus socruithe comhoibrithe. +settings.delete_notices_fork_1 = - Beidh forcanna den stóras seo neamhspleách tar éis iad a scriosadh. +settings.deletion_success = Tá an stóras scriosta. +settings.update_settings_success = Nuashonraíodh na socruithe stóras. +settings.update_settings_no_unit = Ba cheart go gceadódh an stóras idirghníomhú de chineál éigin ar a laghad. +settings.confirm_delete = Scrios Stóras +settings.add_collaborator = Cuir Comhoibritheoir leis +settings.add_collaborator_success = Cuireadh an comhoibritheoir leis. +settings.add_collaborator_inactive_user = Ní féidir úsáideoir neamhghníomhach a chur mar chomhoibritheoir. +settings.add_collaborator_owner = Ní féidir úinéir a chur leis mar chomhoibritheoir. +settings.add_collaborator_duplicate = Tá an comhoibrí curtha leis an stóras seo cheana féin. +settings.delete_collaborator = Bain +settings.collaborator_deletion = Bain Comhoibritheoir +settings.collaborator_deletion_desc = Má dhéantar comhoibrí a bhaint, déanfar a rochtain ar an stóras seo a chúlghairm. Lean ort? +settings.remove_collaborator_success = Tá an comhoibritheoir bainte. +settings.org_not_allowed_to_be_collaborator = Ní féidir eagraíochtaí a chur leis mar chomhoibritheoir. +settings.change_team_access_not_allowed = Tá rochtain foirne a athrú don stóras teoranta d'úinéir eagraíochta +settings.team_not_in_organization = Níl an fhoireann san eagraíocht chéanna leis an stóras +settings.teams = Foirne +settings.add_team = Cuir Foireann leis +settings.add_team_duplicate = Tá an stóras ag an bhfoireann cheana féin +settings.add_team_success = Tá rochtain ag an bhfoireann anois ar an stóras. +settings.change_team_permission_tip = Tá cead na foirne socraithe ar leathanach socraithe foirne agus ní féidir é a athrú in aghaidh an stóras +settings.delete_team_tip = Tá rochtain ag an bhfoireann seo ar gach stórais agus ní féidir í a bhaint +settings.remove_team_success = Tá rochtain na foirne ar an stóras bainte amach. +settings.add_webhook = Cuir Crúca Gréasán leis +settings.add_webhook.invalid_channel_name = Ní féidir ainm cainéal Crúca Gréasán a bheith folamh agus ní féidir ach carachtar # a bheith ann. +settings.webhook_deletion = Bain Crúca Gréasán +settings.webhook_deletion_desc = Scriostar a shocruithe agus a stair seachadta a bhaineann le Crúca Gréasán a bhaint. Lean ar aghaidh? +settings.webhook_deletion_success = Tá an Crúca Gréasán bainte amach. +settings.webhook.test_delivery = Seachadadh Tástála +settings.webhook.test_delivery_desc = Déan tástáil ar an Crúca Gréasán seo le himeacht bhréige. +settings.webhook.test_delivery_desc_disabled = Chun an Crúca Gréasán seo a thástáil le himeacht bhréige, gníomhachtaigh é. +settings.webhook.request = Iarratas +settings.webhook.response = Freagra +settings.webhook.headers = Ceanntásca +settings.webhook.payload = Ábhar +settings.webhook.body = Comhlacht +settings.webhook.replay.description = Seinn an Crúca Gréasán seo arís. +settings.webhook.replay.description_disabled = Chun an Crúca Gréasán seo a athsheinm, gníomhachtaigh é. +settings.webhook.delivery.success = Cuireadh imeacht leis an scuaine seachadta. D'fhéadfadh sé cúpla soicind a thógáil sula dtaispeántar sé sa stair seachadta. +settings.githook_edit_desc = Mura bhfuil an hook neamhghníomhach, cuirfear ábhar samplach i láthair. Má fhágann tú ábhar go luach folamh díchumasófar an crúca seo. +settings.githook_name = Ainm Crúca +settings.githook_content = Ábhar Crúca +settings.update_githook = Nuashonraigh Crúca +settings.payload_url = URL spriocdhírithe +settings.http_method = Modh HTTP +settings.content_type = Cineál Ábhar POST +settings.secret = Rúnda +settings.slack_username = Ainm úsáideora +settings.slack_icon_url = URL deilbhín +settings.slack_color = Dath +settings.discord_username = Ainm úsáideora +settings.discord_icon_url = URL deilbhín +settings.event_desc = Truicear Ar: +settings.event_push_only = Imeachtaí Brúigh +settings.event_send_everything = Gach Imeacht +settings.event_choose = Imeachtaí Saincheaptha… +settings.event_header_repository = Imeachtaí Stóras +settings.event_create = Cruthaigh +settings.event_create_desc = Cruthaíodh brainse nó clib. +settings.event_delete = Scrios +settings.event_delete_desc = Brainse nó clib scriosta. +settings.event_fork = Forc +settings.event_fork_desc = Forcadh stóras. +settings.event_wiki = Vicí +settings.event_wiki_desc = Leathanach Vicí cruthaithe, athainmnithe, curtha in eagar nó scriosta. +settings.event_release = Scaoileadh +settings.event_release_desc = Scaoileadh foilsithe, nuashonraithe nó scriosta i stóras. +settings.event_push = Brúigh +settings.event_push_desc = Brúigh Git chuig stóras. +settings.event_repository = Stóras +settings.event_repository_desc = Stóras a cruthaíodh nó a scriosadh. +settings.event_header_issue = Imeachtaí Eisiúint +settings.event_issues_desc = Osclaíodh, dúnadh, athosclaíodh nó cuireadh an cheist in eagar. +settings.event_issue_assign_desc = Eisiúint sannta nó neamhshannta. +settings.event_issue_comment_desc = Trácht eisiúna cruthaithe, curtha in eagar nó a scriosadh. +settings.event_header_pull_request = Tarraingt Imeachtaí Iarratas +settings.event_pull_request_desc = Iarratas tarraingthe oscailte, dúnta, athoscailte nó curtha in eagar. +settings.event_pull_request_assign_desc = Iarratas tarraingthe sannta nó neamhshannta. +settings.event_pull_request_comment_desc = Trácht ar iarratas tarraingthe cruthaithe, curtha in eagar, nó scriosta. +settings.event_pull_request_review_request_desc = Tarraing athbhreithniú iarratais iarrtha nó baineadh iarratas athbhreithnithe. +settings.event_pull_request_approvals = Ceaduithe Iarratais Tarraing +settings.event_pull_request_merge = Cumaisc Iarratas Tarraing +settings.event_package = Pacáiste +settings.event_package_desc = Pacáiste a cruthaíodh nó a scriosadh i stóras. +settings.branch_filter = Scagaire brainse +settings.branch_filter_desc = Liosta bán brainse le haghaidh brú, cruthú brainse agus imeachtaí scriosta brainse, sonraithe mar phatrún glob. Má tá sé folamh nó *, tuairiscítear imeachtaí do gach brainse. Féach %[2]s doiciméadú le haghaidh comhréire. Samplaí: máistir, {master,release*}. +settings.authorization_header = Ceanntásc Údaraithe +settings.authorization_header_desc = Cuirfear san áireamh mar cheanntásc údaraithe d'iarratais nuair a bheidh ann Samplaí: %s. +settings.active = Gníomhach +settings.active_helper = Seolfar faisnéis faoi imeachtaí spreagtha chuig an URL Crúca Gréasán seo. +settings.add_hook_success = Cuireadh an Crúca Gréasán leis. +settings.update_webhook = Nuashonraigh Crúca Gréasán +settings.update_hook_success = Nuashonraíodh an Crúca Gréasán. +settings.delete_webhook = Bain Crúca Gréasán +settings.recent_deliveries = Seachadtaí le déana +settings.hook_type = Cineál Crúca +settings.slack_token = Comhartha +settings.slack_domain = Fearann +settings.slack_channel = Cainéal +settings.add_web_hook_desc = Comhtháthaigh %s isteach i do stóras. +settings.web_hook_name_gitea = Gitea +settings.web_hook_name_gogs = Gogs +settings.web_hook_name_slack = Slack +settings.web_hook_name_discord = Discord +settings.web_hook_name_dingtalk = DingTalk +settings.web_hook_name_telegram = Teileagram +settings.web_hook_name_matrix = Maitrís +settings.web_hook_name_msteams = Microsoft Teams +settings.web_hook_name_wechatwork = WeCom (Wechat Work) +settings.web_hook_name_packagist = Packagist +settings.packagist_username = Ainm úsáideora Pacagist +settings.packagist_api_token = Comhartha API +settings.packagist_package_url = URL pacáiste Packagist +settings.deploy_keys = Eochracha a imscaradh +settings.add_deploy_key = Cuir Eochair Imscartha leis +settings.deploy_key_desc = Tá rochtain tarraingthe léite amháin ag eochracha imscartha ar an stóras. +settings.is_writable = Cumasaigh Rochtain Scríobh +settings.is_writable_info = Lig don eochair imlonnaithe seo a bhrú chuig an stóras. +settings.no_deploy_keys = Níl aon eochracha imscartha ann fós. +settings.title = Teideal +settings.deploy_key_content = Ábhar +settings.key_been_used = Tá eochair imscartha le hábhar comhionann in úsáid cheana féin. +settings.key_name_used = Tá eochair imscartha leis an ainm céanna ann cheana féin. +settings.add_key_success = Tá an eochair imlonnaithe "%s" curtha leis. +settings.deploy_key_deletion = Bain Eochair Imlonnaithe +settings.deploy_key_deletion_desc = Ag baint eochair imscartha, cuirfear a rochtain ar an stóras seo a chúlghairm. Lean ar aghaidh? +settings.deploy_key_deletion_success = Tá an eochair imscartha bainte amach. +settings.branches = Brainsí +settings.protected_branch = Cosaint Brainse +settings.protected_branch.save_rule = Sábháil Riail +settings.protected_branch.delete_rule = Scrios Riail +settings.protect_disable_push = Díchumasaigh Brúigh +settings.protect_disable_push_desc = Ní cheadfar aon bhrú chuig an mbrainse seo. +settings.protect_enable_push = Cumasaigh Brúigh +settings.protect_enable_push_desc = Beidh cead ag aon duine a bhfuil rochtain scríofa aige/aici brú chuig an mbrainse seo (ach gan brú a bhrú). +settings.protect_enable_merge = Cumasaigh Cumaisc +settings.protect_enable_merge_desc = Beidh cead ag aon duine a bhfuil rochtain scríofa aige na hiarratais tarraingte a chumasc leis an mbrainse seo. +settings.protect_check_status_contexts = Cumasaigh Seiceáil Stádas +settings.protect_status_check_patterns_desc = Iontráil patrúin chun a shonrú cé na seiceálacha stádais a chaithfidh pas a fháil sular féidir brainsí a chumasc le brainse a chomhoibríonn leis an riail seo. Sonraíonn gach líne patrún. Ní féidir patrúin a bheith folamh. +settings.protect_check_status_contexts_desc = A cheangal ar sheiceálacha stádais pas a fháil roimh chumasc. Nuair a bheidh sé cumasaithe, ní mór gealltanais a bhrú ar dtús chuig brainse eile, ansin iad a chumasc nó a bhrú go díreach chuig brainse a thagann leis an riail seo tar éis do sheiceálacha stádais a bheith caite. Mura ndéantar comhthéacs ar bith a mheaitseáil, ní mór go n-éireodh leis an ngealltanas deiridh beag beann ar an gcomhthéacs. +settings.protect_check_status_contexts_list = Seiceálacha stádais a fuarthas sa tseachtain seo caite don stóras seo +settings.protect_status_check_matched = Comhoiriúnach +settings.protect_invalid_status_check_pattern = Patrún seiceála stádais neamhbhailí: "%s". +settings.protect_no_valid_status_check_patterns = Gan aon phatrúin seiceála stádais bailí. +settings.dismiss_stale_approvals = Déan seancheaduithe a dhíbhe +settings.dismiss_stale_approvals_desc = Nuair a bhrúitear gealltanais nua a athraíonn ábhar an iarratais tarraingthe chuig an mbrainse, déanfar sean-cheaduithe a dhíchur. +settings.ignore_stale_approvals = Déan neamhaird de sheancheaduithe +settings.ignore_stale_approvals_desc = Ná cuir faomhadh a rinneadh ar ghealltanais níos sine (athbhreithnithe seanchaite) san áireamh i dtreo cé mhéad faomhadh atá ag an PR. Ní bhaineann le hábhar má dhéantar athbhreithnithe seanchaite a dhíbhe cheana féin. +settings.require_signed_commits = Ceangaltais Sínithe a cheangal +settings.require_signed_commits_desc = Diúltaigh brú chuig an mbrainse seo má tá siad neamhshínithe nó neamh-fhíoraithe. +settings.protect_branch_name_pattern = Patrún Ainm Brainse Cosanta +settings.protect_patterns = Patrúin +settings.update_protect_branch_success = Tá cosaint brainse don riail "%s" nuashonraithe. +settings.remove_protected_branch_success = Baineadh cosaint brainse don riail "%s". +settings.remove_protected_branch_failed = Theip ar riail cosanta brainse "%s" a bhaint. +settings.protected_branch_deletion = Scrios Cosaint Brainse +settings.protected_branch_deletion_desc = Ligeann cosaint brainse a dhíchumasú d'úsáideoirí a bhfuil cead scríofa acu brú chuig an mbrainse. Lean ar aghaidh? +settings.block_rejected_reviews = Cuir bac ar chumasc ar léirmheasanna diúltaithe +settings.block_rejected_reviews_desc = Ní bheidh cumasc indéanta nuair a iarrann athbhreithnithe oifigiúla athruithe, fiú má tá go leor ceadaithe ann. +settings.block_on_official_review_requests = Cuir bac ar chumasc ar iarratais ar athbhreithniú oifigiúil +settings.block_on_official_review_requests_desc = Ní bheidh sé indéanta cumasc nuair a bhíonn iarratais oifigiúla ar athbhreithniú aige, fiú má tá go leor ceadaithe ann. +settings.block_outdated_branch = Cuir bac ar chumasc má tá an t-iarratas tarraingthe as dáta +settings.block_outdated_branch_desc = Ní bheidh cumasc indéanta nuair a bhíonn ceannbhrainse taobh thiar de bhronnbhrainse. +settings.default_branch_desc = Roghnaigh brainse stóras réamhshocraithe le haghaidh iarratas tarraingte agus geallann an cód: +settings.merge_style_desc = Stíleanna Cumaisc +settings.default_merge_style_desc = Stíl Cumaisc Réamhshocraithe +settings.choose_branch = Roghnaigh brainse… +settings.no_protected_branch = Níl aon bhrainsí cosanta ann. +settings.edit_protected_branch = Cuir in eagar +settings.protected_branch_required_rule_name = Ainm riail riachtanach +settings.protected_branch_required_approvals_min = Ní féidir ceaduithe riachtanacha a bheith diúltach. +settings.tags = Clibeanna +settings.tags.protection = Cosaint Clib +settings.tags.protection.pattern = Patrún Clib +settings.tags.protection.allowed = Ceadaithe +settings.tags.protection.allowed.users = Úsáideoirí ceadaithe +settings.tags.protection.allowed.teams = Foirne ceadaithe +settings.tags.protection.allowed.noone = Níl aon duine +settings.tags.protection.none = Níl aon chlibeanna cosanta ann. +settings.tags.protection.pattern.description = Is féidir leat ainm amháin nó patrún glob nó slonn rialta a úsáid chun clibeanna iolracha a mheaitseáil. Léigh tuilleadh sa treoir na gclibeanna cosanta. +settings.bot_token = Comhartha Bota +settings.chat_id = ID Comhrá +settings.thread_id = ID Snáithe +settings.matrix.homeserver_url = URL sheirbhíse baile +settings.matrix.room_id = ID seomra +settings.matrix.message_type = Cineál teachtaireachta +settings.archive.button = Cartlann Stóras +settings.archive.header = Cartlann an Stóras seo +settings.archive.text = Má dhéantar an stóras a chartlannú, beidh sé léite go hiomlán amháin. Beidh sé i bhfolach ón bpainéal. Aon duine (ní fiú tú!) beidh siad in ann tiomantas nua a dhéanamh, nó aon saincheisteanna nó iarratais a tharraingt a oscailt. +settings.archive.success = Rinneadh an stóras a chartlannú go rathúil. +settings.archive.error = Tharla earráid agus tú ag iarraidh an stóras a chartlannú. Féach an logáil le haghaidh tuilleadh sonraí. +settings.archive.error_ismirror = Ní féidir leat stóras scátháin a chartlannú. +settings.unarchive.button = Stóras gan cartlann +settings.unarchive.header = Díchartlannaigh an stóras seo +settings.unarchive.success = Rinneadh an stóras a dhíchartlann go rathúil. +settings.unarchive.error = Tharla earráid agus tú ag iarraidh an stóras a dhíchartlannú. Féach an logáil le haghaidh tuilleadh sonraí. +settings.update_avatar_success = Nuashonraíodh avatar an stóras. +settings.lfs = LFS +settings.lfs_filelist = Comhaid LFS a stóráiltear sa stóras seo +settings.lfs_no_lfs_files = Níl aon chomhaid LFS stóráilte sa stóras seo +settings.lfs_findcommits = Aimsigh gealltanais +settings.lfs_lfs_file_no_commits = Níor aimsíodh aon ghealltanais don chomhad LFS seo +settings.lfs_noattribute = Níl an tréith inghlasáilte sa bhrainse réamhshocraithe ag an gcosán seo +settings.lfs_delete = Scrios comhad LFS le OID %s +settings.lfs_findpointerfiles = Faigh comhaid pointeora +settings.lfs_locks = Glais +settings.lfs_invalid_locking_path = Cosan neamhbhailí: %s +settings.lfs_invalid_lock_directory = Ní féidir eolaire a ghlasáil: %s +settings.lfs_lock_already_exists = Tá an glas ann cheana féin: %s +settings.lfs_lock = Glas +settings.lfs_lock_path = Cosán comhad le haghaidh glasáil... +settings.lfs_locks_no_locks = Gan Glais +settings.lfs_lock_file_no_exist = Níl an comhad faoi ghlas sa bhrainse réamhshocraithe +settings.lfs_force_unlock = Díghlasáil Fórsa +settings.lfs_pointers.found = Aimsíodh %d pointeoir(í) blob - %d bainteach, %d neamhghaolmhar (%d in easnamh ón siopa) +settings.lfs_pointers.oid = OID +settings.lfs_pointers.inRepo = I Stóras +settings.lfs_pointers.exists = Ann sa siopa +settings.lfs_pointers.accessible = Inrochtana don Úsáideoir +settings.lfs_pointers.associateAccessible = Comhlach %d OID inrochtana +settings.rename_branch_failed_exist = Ní féidir brainse a athainmniú toisc go bhfuil spriocbhrainse %s ann. +settings.rename_branch_failed_not_exist = Ní féidir brainse %s a athainmniú toisc nach bhfuil sé ann. +settings.rename_branch_success = Ainmníodh brainse %s go rathúil go %s. +settings.rename_branch = Athainmnigh brainse +diff.browse_source = Brabhsáil Foinse +diff.parent = tuismitheoir +diff.commit = tiomantas +diff.git-notes = Nótaí +diff.options_button = Roghanna Diff +diff.download_patch = Íoslódáil an comhad paiste +diff.download_diff = Íoslódáil Comhad Diff +diff.show_split_view = Amharc Scoilt +diff.show_unified_view = Amharc Aontaithe +diff.whitespace_button = Spás bán +diff.whitespace_show_everything = Taispeáin gach athrú +diff.whitespace_ignore_all_whitespace = Déan neamhaird de spás bán nuair a dhéantar comparáid idir línte +diff.whitespace_ignore_amount_changes = Déan neamhaird de athruithe ar an méid spás bán +diff.whitespace_ignore_at_eol = Déan neamhaird ar athruithe ar spás bán ag EOL +diff.stats_desc = D'athraigh %d comhad le %d breiseanna agus %d scriosta +diff.stats_desc_file = %d athruithe: %d breiseanna agus scriosadh %d +diff.bin = BRUSCAIR +diff.bin_not_shown = Ní thaispeántar comhad dénártha. +diff.view_file = Féach ar an gComhad +diff.file_before = Roimhe +diff.file_after = Tar éis +diff.file_image_width = Leithead +diff.file_image_height = Airde +diff.file_byte_size = Méid +diff.file_suppressed = Tá difríocht comhad cosc orthu toisc go bhfuil sé ró-mhór +diff.file_suppressed_line_too_long = Cuirtear difríocht comhad faoi chois toisc go bhfuil líne amháin nó níos mó rófhada +diff.too_many_files = Níor taispeánadh roinnt comhad mar go bhfuil an iomarca comhad athraithe sa difríocht seo +diff.show_more = Taispeáin Tuilleadh +diff.load = Difríocht Luchtaigh +diff.generated = a ghintear +diff.vendored = curtha ar fáil +diff.comment.add_line_comment = Cuir trácht líne leis +diff.comment.placeholder = Fág trácht +diff.comment.add_single_comment = Cuir trácht aonair leis +diff.comment.add_review_comment = Cuir trácht leis +diff.comment.start_review = Tosaigh athbhreithniú +diff.comment.reply = Freagra +diff.review.header = Cuir isteach léirmheas +diff.review.placeholder = Trácht athbhreithnithe +diff.review.comment = Trácht +diff.review.approve = Ceadú +diff.review.self_reject = Ní féidir le húdair iarratais tarraing athruithe a iarraidh ar a n-iarratas tarraingthe +diff.review.reject = Iarr athruithe +diff.review.self_approve = Ní féidir le húdair iarratais tarraing a n-iarratas tarraingthe féin a chead +diff.committed_by = tiomanta ag +diff.protected = Cosanta +diff.image.side_by_side = Taobh le Taobh +diff.image.swipe = Scaoil +diff.image.overlay = Forleagan +diff.has_escaped = Tá carachtair Unicode i bhfolach ag an líne seo +diff.show_file_tree = Taispeáin crann comhad +diff.hide_file_tree = Folaigh crann comhad +releases.desc = Rian leaganacha tionscadal agus íoslódálacha. +release.releases = Eisiúintí +release.detail = Sonraí eisithe +release.tags = Clibeanna +release.new_release = Scaoileadh Nua +release.draft = Dréacht +release.prerelease = Réamh-eisiúint +release.stable = Cobhsaí +release.compare = Déan comparáid +release.edit = cuir in eagar +release.ahead.commits = Geallann %d +release.ahead.target = go %s ón scaoileadh seo +tag.ahead.target = chuig %s ón gclib seo +release.source_code = Cód Foinse +release.new_subheader = Eagraíonn eiseachtaí leaganacha tionscadail +release.edit_subheader = Eagraíonn eisiúintí leaganacha tionscadal. +release.tag_name = Ainm chlib +release.target = Sprioc +release.tag_helper = Roghnaigh clib atá ann cheana nó cruthaigh clib nua. +release.tag_helper_new = Clib nua. Cruthófar an chlib seo ón sprioc. +release.tag_helper_existing = Clib atá ann cheana. +release.title = Teideal scaoileadh +release.title_empty = Ní féidir leis an teideal a bheith folamh. +release.message = Déan cur síos ar an eisiúint seo +release.prerelease_desc = Marcáil mar Réamh-eisiúint +release.prerelease_helper = Marcáil an scaoileadh seo mí-oiriúnach le húsáid táirgeachta. +release.cancel = Cealaigh +release.publish = Foilsigh Eisiúint +release.save_draft = Sábháil Dréacht +release.edit_release = Eisiúint Nuashonraithe +release.delete_release = Scrios Scaoilte +release.delete_tag = Scrios Clib +release.deletion = Scrios Scaoilte +release.deletion_success = Tá an scaoileadh scriosta. +release.deletion_tag_desc = Scriosfar an chlib seo ón stóras. Ní athraítear inneachar agus stair na stórtha. Lean ort? +release.deletion_tag_success = Tá an chlib scriosta. +release.tag_name_already_exist = Tá eisiúint leis an ainm clib seo ann cheana féin. +release.tag_name_invalid = Níl ainm an chlib bailí. +release.tag_name_protected = Tá ainm an chlib cosanta. +release.tag_already_exist = Tá an t-ainm clib seo ann cheana féin. +release.downloads = Íoslódálacha +release.add_tag_msg = Úsáid teideal agus ábhar an eisiúna mar theachtaireacht chlibe. +release.releases_for = Eisiúintí do %s +release.tags_for = Clibeanna do %s +branch.name = Ainm Brainse +branch.already_exists = Tá brainse leis an ainm "%s" ann cheana féin. +branch.delete_head = Scrios +branch.delete = `Scrios Brainse "%s"` +branch.delete_html = Scrios Brainse +branch.delete_desc = Tá brainse a scriosadh buan. Cé go bhféadfadh an brainse scriosta leanúint ar aghaidh ag bheith ann ar feadh tréimhse ghearr sula mbaintear í i ndáiríre, NÍ FÉIDIR é a dhíchur i bhformhór Lean ar aghaidh? +branch.deletion_success = Tá brainse "%s" scriosta. +branch.deletion_failed = Theip ar scriosadh brainse "%s". +branch.delete_branch_has_new_commits = Ní féidir brainse “%s” a scriosadh toisc go bhfuil tiomáintí nua curtha leis tar éis a chumasc. +branch.create_branch = Cruthaigh brainse %s +branch.create_from = `ó "%s"` +branch.create_success = Tá brainse "%s" cruthaithe. +branch.branch_already_exists = Tá brainse "%s" sa stóras seo cheana. +branch.branch_name_conflict = Tagann an t-ainm brainse "%s" leis an mbrainse "%s" atá ann cheana féin. +branch.tag_collision = Ní féidir brainse "%s" a chruthú mar tá clib leis an ainm céanna sa stóras cheana féin. +branch.deleted_by = Scriosta ag %s +branch.restore_success = Tá brainse "%s" curtha ar ais. +branch.restore_failed = Theip ar chur ar ais brainse "%s". +branch.protected_deletion_failed = Tá brainse "%s" cosanta. Ní féidir é a scriosadh. +branch.default_deletion_failed = Is é brainse "%s" an brainse réamhshocraithe. Ní féidir é a scriosadh. +branch.restore = `Athchóirigh Brainse "%s"` +branch.download = `Brainse Íosluchtaithe "%s"` +branch.rename = `Athainmnigh Brainse "%s"` +branch.included_desc = Tá an brainse seo mar chuid den bhrainse réamhshocraithe +branch.included = San áireamh +branch.create_new_branch = Cruthaigh brainse ón mbrainse: +branch.confirm_create_branch = Cruthaigh brainse +branch.warning_rename_default_branch = Tá tú ag athainmniú an bhrainse réamhshocraithe. +branch.rename_branch_to = Athainmnigh "%s" go: +branch.create_branch_operation = Cruthaigh brainse +branch.new_branch = Cruthaigh brainse nua +branch.new_branch_from = `Cruthaigh brainse nua ó "%s"` +branch.renamed = Ainmníodh brainse %s go %s. +tag.create_tag = Cruthaigh clib %s +tag.create_tag_operation = Cruthaigh clib +tag.confirm_create_tag = Cruthaigh clib +tag.create_tag_from = `Cruthaigh clib nua ó "%s"` +tag.create_success = Tá clib "%s" cruthaithe. +topic.manage_topics = Bainistigh topaicí +topic.done = Déanta +topic.count_prompt = Ní féidir leat níos mó ná 25 topaicí a roghnú +find_file.no_matching = Níl aon chomhad meaitseála le fáil +error.csv.too_large = Ní féidir an comhad seo a rinneadh toisc go bhfuil sé ró-mhór. +error.csv.unexpected = Ní féidir an comhad seo a rindreáil toisc go bhfuil carachtar ann gan súil leis i líne %d agus i gcolún %d. +error.csv.invalid_field_count = Ní féidir an comhad seo a rindreáil toisc go bhfuil líon mícheart réimsí i líne %d. +error.broken_git_hook = Is cosúil go bhfuil crúcaí git den stór seo briste. Lean an doiciméadúchán chun iad a cheartú, ansin brúigh roinnt gealltanas chun an stádas a athnuachan. + +[graphs] +component_loading = Á lódáil %s... +component_loading_failed = Ní fhéadfaí %s a luchtú +component_loading_info = Seans go dtógfaidh sé seo beagán… +component_failed_to_load = Tharla earráid gan choinne. +code_frequency.what = minicíocht cód +contributors.what = ranníocaíochtaí +recent_commits.what = tiomantáin le déanaí + +[org] +org_name_holder = Ainm na hEagraíochta +org_full_name_holder = Ainm iomlán na hEagraíochta +org_name_helper = Ba cheart go mbeadh ainmneacha eagraíochta gearr agus i gcuimhne. +create_org = Cruthaigh Eagraíocht +members = Comhaltaí +teams = Foirne +code = Cód +lower_members = comhaltaí +lower_repositories = stórais +create_new_team = Foireann Nua +create_team = Cruthaigh Foireann +org_desc = Cur síos +team_name = Ainm Foirne +team_desc = Cur síos +team_name_helper = Ba chóir go mbeadh ainmneacha foirne gearr agus i gcuimhne. +team_desc_helper = Déan cur síos ar chuspóir nó ról na foirne. +team_access_desc = Rochtain stórais +team_permission_desc = Cead +team_unit_desc = Ceadaigh Rochtain ar Rannóga Stóras +team_unit_disabled = (Díchumasaithe) +form.name_reserved = Tá an t-ainm eagraíochta "%s" curtha in áirithe. +form.name_pattern_not_allowed = Ní cheadaítear an patrún "%s" in ainm eagraíochta. +form.create_org_not_allowed = Níl cead agat eagraíocht a chruthú. +settings = Socruithe +settings.options = Eagraíocht +settings.full_name = Ainm Iomlán +settings.email = Ríomhphost Teagmhála +settings.website = Láithreán Gréasáin +settings.location = Suíomh +settings.permission = Ceadanna +settings.repoadminchangeteam = Is féidir le riarthóir an stórais rochtain d'fhoirne a chur leis agus a bhaint +settings.visibility = Infheictheacht +settings.visibility.public = Poiblí +settings.visibility.limited_shortname = Teoranta +settings.visibility.private = Príobháideach (Infheicthe amháin do bhaill eagraíochta) +settings.visibility.private_shortname = Príobháideach +settings.update_settings = Nuashonrú Socruithe +settings.update_setting_success = Nuashonraíodh socruithe eagraíochta. +settings.change_orgname_prompt = Nóta: Athróidh ainm na heagraíochta ag athrú URL d'eagraíochta agus saorfar an sean-ainm. +settings.change_orgname_redirect_prompt = Déanfaidh an sean-ainm a atreorú go dtí go n-éilítear é. +settings.update_avatar_success = Nuashonraíodh avatar na heagraíochta. +settings.delete = Scrios Eagraíocht +settings.delete_account = Scrios an Eagraíocht seo +settings.delete_prompt = Bainfear an eagraíocht go buan. NÍ FÉIDIR é seo a chealú! +settings.confirm_delete_account = Deimhnigh scriosadh +settings.delete_org_title = Scrios Eagraíocht +settings.delete_org_desc = Scriosfar an eagraíocht seo go buan. Lean ar aghaidh? +settings.hooks_desc = Cuir crúcaí gréasán in leis a spreagfar do gach stóras faoin eagraíocht seo. +settings.labels_desc = Cuir lipéid leis ar féidir iad a úsáid ar shaincheisteanna do gach stóras faoin eagraíocht seo. +members.membership_visibility = Infheictheacht Ballraíochta: +members.public = Infheicthe +members.public_helper = dhéanamh i bhfolach +members.private = I bhfolach +members.private_helper = a dhéanamh le feiceáil +members.member_role = Ról Comhalta: +members.owner = Úinéir +members.member = Comhalta +members.remove = Bain +members.remove.detail = Bain %[1]s de %[2]s? +members.leave = Fágáil +members.invite_desc = Cuir ball nua le %s: +members.invite_now = Tabhair cuireadh Anois +teams.join = Bígí +teams.leave = Fág +teams.can_create_org_repo = Cruthaigh stórais +teams.can_create_org_repo_helper = Is féidir le baill stóras nua a chruthú san eagraíocht. Gheobhaidh an cruthaitheoir rochtain riarthóra ar an stóras nua. +teams.none_access = Gan Rochtain +teams.general_access_helper = Déanfar ceadanna baill a chinneadh ag an tábla ceadanna thíos. +teams.read_access = Léigh +teams.write_access = Scríobh +teams.admin_access = Rochtain Riarthóra +teams.admin_access_helper = Is féidir le baill tarraingt agus brú chuig stórais foirne agus comhoibritheoirí a chur leo. +teams.no_desc = Níl aon tuairisc ag an bhfoireann seo +teams.settings = Socruithe +teams.owners_permission_desc = Tá rochtain iomlán ag úinéirí ar gach stórais agus tá rochtain ag an riarthóir ar an eagraíocht. +teams.members = Baill Foirne +teams.update_settings = Nuashonrú Socruithe +teams.delete_team = Scrios Foireann +teams.add_team_member = Cuir Comhalta Foirne leis +teams.invite_team_member = Tabhair cuireadh chuig %s +teams.invite_team_member.list = Cuirí ar Feitheamh +teams.delete_team_title = Scrios Foireann +teams.delete_team_desc = Cúlghairtear rochtain stórais óna baill a scriosadh foirne. Lean ar aghaidh? +teams.delete_team_success = Tá an fhoireann scriosta. +teams.read_permission_desc = Deonaíonn an fhoireann seo rochtain Léamh: is féidir le baill stórtha foirne a fheiceáil agus a chlónáil. +teams.write_permission_desc = Tugann an fhoireann seo rochtain do Scríobh: is féidir le baill léamh ó stórtha foirne agus iad a bhrú chucu. +teams.create_repo_permission_desc = Ina theannta sin, tugann an fhoireann seo cead Cruthaigh Stóras: is féidir le baill stórtha nua a chruthú san eagraíocht. +teams.repositories = Stórais Foirne +teams.remove_all_repos_title = Bain gach stórais foirne +teams.remove_all_repos_desc = Bainfidh sé seo gach stórais ón bhfoireann. +teams.add_all_repos_title = Cuir gach stórais leis +teams.add_all_repos_desc = Cuirfidh sé seo stórais uile na heagraíochta leis an bhfoireann. +teams.add_duplicate_users = Is ball foirne é an úsáideoir cheana féin. +teams.repos.none = Ní raibh rochtain ag an bhfoireann seo ar aon stóras. +teams.members.none = Níl aon bhaill ar an bhfoireann seo. +teams.specific_repositories = Stórais Sonrach +teams.specific_repositories_helper = Ní bheidh rochtain ag comhaltaí ach ar stórtha a cuireadh leis an bhfoireann go sainráite. Ní bhainfear na stórtha a cuireadh leis cheana le Gach stóras go huathoibríoch trí é seo a roghnú. +teams.all_repositories = Gach stórais +teams.all_repositories_helper = Tá rochtain ag an bhfoireann ar gach stórais. Má roghnaíonn sé seo, cuirfear na stórais go léir atá ann cheana leis an bhfoireann. +teams.invite.title = Tugadh cuireadh duit dul isteach i bhfoireann %s san eagraíocht %s. +teams.invite.by = Ar cuireadh ó %s +teams.invite.description = Cliceáil ar an gcnaipe thíos le do thoil chun dul isteach san fhoireann. + +[admin] +dashboard = Deais +self_check = Féin-sheiceáil +identity_access = Féiniúlacht & Rochtain +users = Cuntais Úsáideora +organizations = Eagraíochtaí +assets = Sócmhainní Cód +repositories = Stórais +hooks = Crúcaí Gréasán +integrations = Comhtháthaithe +authentication = Foinsí Fíordheimhnithe +emails = Ríomhphoist Úsáideoirí +config = Cumraíocht +notices = Fógraí Córais +config_summary = Achoimre +config_settings = Socruithe +monitor = Monatóireacht +first_page = Ar dtús +last_page = Deiridh +total = Iomlán: %d +settings = Socruithe Riaracháin +dashboard.statistic = Achoimre +dashboard.system_status = Stádas an Chórais +dashboard.operation_name = Ainm Oibríochta +dashboard.operation_switch = Athraigh +dashboard.operation_run = Rith +dashboard.clean_unbind_oauth = Glan naisc OAuth neamhcheangailte +dashboard.clean_unbind_oauth_success = Scriosadh gach nasc OAuth neamhcheangailte. +dashboard.task.started = Tasc Tosaigh: %[1]s +dashboard.task.process = Tasc: %[1]s +dashboard.task.cancelled = Tasc: %[1]s cealaithe: %[3]s +dashboard.task.error = Earráid sa Tasc: %[1]s: %[3]s +dashboard.task.finished = Tasc: Tá %[1]s tosaithe ag %[2]s críochnaithe +dashboard.task.unknown = Tasc anaithnid: %[1]s +dashboard.cron.started = Cron tosaithe: %[1]s +dashboard.cron.process = Cron: %[1]s +dashboard.cron.cancelled = Cron: %[1]s cealaithe: %[3]s +dashboard.cron.error = Earráid i gCron: %s: %[3]s +dashboard.cron.finished = Cron: %[1]s críochnaithe +dashboard.delete_inactive_accounts = Scrios gach cuntas neamhghníomhach +dashboard.delete_inactive_accounts.started = Tasc scriostha gach cuntas neamhghníomhachtaithe tosaithe. +dashboard.delete_repo_archives.started = Scrios gach tasc cartlann stórais a thosaigh. +dashboard.delete_missing_repos = Scrios gach stóras atá in easnamh ar a gcuid comhad Git +dashboard.delete_missing_repos.started = Scrios gach stóras atá in easnamh ar a dtasc comhaid Git a thosaigh. +dashboard.delete_generated_repository_avatars = Scrios abhatáranna stórtha ginte +dashboard.sync_repo_tags = Clibeanna sioncraigh ó shonraí git go bunachar sonraí +dashboard.update_mirrors = Scátháin a nuashonrú +dashboard.repo_health_check = Seiceáil sláinte gach stóras +dashboard.check_repo_stats = Seiceáil gach staitisticí stórais +dashboard.archive_cleanup = Scrios sean-chartlanna stórais +dashboard.deleted_branches_cleanup = Brainsí scriosta a ghlanadh +dashboard.update_migration_poster_id = Nuashonraigh ID póstaer imir +dashboard.git_gc_repos = Bailíonn truflais gach stórais +dashboard.reinit_missing_repos = Aththosaigh gach stórais Git atá in easnamh a bhfuil taifid ann dóibh +dashboard.sync_external_users = Sioncrónaigh sonraí úsáideoirí seachtracha +dashboard.cleanup_hook_task_table = Tábla hook_task glantacháin +dashboard.cleanup_packages = Pacáistí glanta in éag +dashboard.server_uptime = Aga fónaimh Freastalaí +dashboard.current_goroutine = Goroutines Reatha +dashboard.current_memory_usage = Úsáid Cuimhne Reatha +dashboard.total_memory_allocated = Cuimhne Iomlán Leithdháilte +dashboard.memory_obtained = Cuimhne Faighte +dashboard.pointer_lookup_times = Amanna Cuardaigh Pointeora +dashboard.memory_allocate_times = Leithdháiltí Cuimhne +dashboard.memory_free_times = Saorálann Cuimhne +dashboard.current_heap_usage = Úsáid Charn Reatha +dashboard.heap_memory_obtained = Cuimhne Charn Faighte +dashboard.heap_memory_idle = Díomhaoin Cuimhne Carn +dashboard.heap_memory_in_use = Cuimhne Carm In Úsáid +dashboard.heap_memory_released = Cuimhne Carn Eisithe +dashboard.heap_objects = Cuspóirí Carn +dashboard.bootstrap_stack_usage = Úsáid Staca Bootstrap +dashboard.stack_memory_obtained = Cuimhne Staca Faighte +dashboard.mspan_structures_usage = Úsáid Struchtúir MSpan +dashboard.mspan_structures_obtained = Struchtúir MSpan a Faightear +dashboard.mcache_structures_usage = Úsáid Struchtúir MCache +dashboard.mcache_structures_obtained = Struchtúir MCache a Faightear +dashboard.profiling_bucket_hash_table_obtained = Tábla Hash Buicéad Próifílithe a Faightear +dashboard.gc_metadata_obtained = Meiteashonraí GC faighte +dashboard.other_system_allocation_obtained = Leithdháileadh Córais Eile a Fuarthas +dashboard.next_gc_recycle = Athchúrsáil GC Eile +dashboard.total_gc_pause = Sos Iomlán GC +dashboard.last_gc_pause = Sos GC Deireanach +dashboard.gc_times = Amanna GC +dashboard.delete_old_actions = Scrios gach sean-ghníomhaíocht ón mbunachar +dashboard.delete_old_actions.started = Scrios na sean-ghníomhaíocht go léir ón mbunachar sonraí tosaithe. +dashboard.update_checker = Seiceoir nuashonraithe +dashboard.delete_old_system_notices = Scrios gach seanfhógra córais ón mbunachar sonraí +dashboard.gc_lfs = Bailigh truflais meta rudaí LFS +dashboard.rebuild_issue_indexer = Atógáil innéacsóir eisiúna +users.new_account = Cruthaigh cuntas Úsáideora +users.name = Ainm úsáideora +users.full_name = Ainm Iomlán +users.activated = Gníomhachtaithe +users.admin = Riarachán +users.restricted = Srianta +users.reserved = In áirithe +users.bot = Bota +users.remote = Iargúlta +users.2fa = 2FA +users.repos = Stórais +users.created = Cruthaithe +users.last_login = Sínigh Isteach Deiridh +users.new_success = Tá an cuntas úsáideora "%s" cruthaithe. +users.edit = Eagar +users.auth_source = Foinse Fíordheimhnithe +users.local = Áitiúil +users.auth_login_name = Ainm Síniú Isteach Fíordheimhnithe +users.password_helper = Fág an pasfhocal folamh chun é a choinneáil gan athrú. +users.update_profile_success = Nuashonraíodh an cuntas úsáideora. +users.edit_account = Cuir Cuntas Úsáideora in Eagar +users.max_repo_creation = Uasmhéid Stóras +users.max_repo_creation_desc = (Cuir isteach -1 chun an teorainn réamhshocraithe domhanda a úsáid.) +users.update_profile = Nuashonraigh Cuntas Úsáideora +users.delete_account = Scrios Cuntas Úsáide +users.still_own_repo = Tá stórais amháin nó níos mó fós ag an úsáideoir seo. Scrios nó aistrigh na stórais seo ar dtús. +users.still_has_org = Is ball d'eagraíocht é an t-úsáideoir seo. Bain an t-úsáideoir ó aon eagraíochtaí ar dtús. +users.purge = Úsáideoir a Ghlanadh +users.still_own_packages = Tá pacáiste amháin nó níos mó fós ag an úsáideoir seo, scrios na pacáistí seo ar dtús. +users.deletion_success = Scriosadh an cuntas úsáideora. +users.reset_2fa = Athshocraigh 2FA +users.list_status_filter.menu_text = Scagaire +users.list_status_filter.reset = Athshocraigh +users.list_status_filter.is_active = Gníomhach +users.list_status_filter.not_active = Neamhghníomhach +users.list_status_filter.is_admin = Riarachán +users.list_status_filter.not_admin = Ní Riarachán +users.list_status_filter.is_restricted = Srianta +users.list_status_filter.not_restricted = Gan Srian +users.list_status_filter.is_prohibit_login = Cosc ar Logáil Isteach +users.list_status_filter.not_prohibit_login = Ceadaigh Logáil isteach +users.list_status_filter.is_2fa_enabled = 2FA Cumasaithe +users.list_status_filter.not_2fa_enabled = 2FA faoi mhíchumas +users.details = Sonraí Úsáideora +emails.primary = Bunscoile +emails.activated = Gníomhachtaithe +emails.filter_sort.email = Ríomhphost +emails.filter_sort.email_reverse = Ríomhphost (droim ar ais) +emails.updated = Nuashonraíodh an ríomhphost +emails.not_updated = Theip ar an seoladh ríomhphoist iarrtha a nuashonrú: %v +emails.duplicate_active = Tá an seoladh ríomhphoist seo gníomhach cheana féin d'úsáideoir difriúil. +emails.change_email_header = Nuashonraigh Airíonna Ríomhphoist +emails.change_email_text = An bhfuil tú cinnte gur mhaith leat an seoladh ríomhphoist seo a nuashonrú? +emails.delete = Scrios Ríomhphost +emails.delete_desc = An bhfuil tú cinnte gur mhaith leat an seoladh ríomhphoist seo a scriosadh? +emails.deletion_success = Tá an seoladh ríomhphoist scriosta. +emails.delete_primary_email_error = Ní féidir leat an ríomhphost príomhúil a scriosadh. +orgs.name = Ainm +orgs.teams = Foirne +orgs.members = Comhaltaí +orgs.new_orga = Eagraíocht Nua +repos.unadopted = Stórais Neamhghlactha +repos.owner = Úinéir +repos.name = Ainm +repos.private = Príobháideach +repos.issues = Saincheisteanna +repos.size = Méid +repos.lfs_size = Méid LFS +packages.total_size = Méid Iomlán: %s +packages.unreferenced_size = Méid gan tagairt: %s +packages.cleanup = Glan suas sonraí in éag +packages.cleanup.success = Glanadh suas sonraí in éag go rathúil +packages.owner = Úinéir +packages.creator = Cruthaitheoir +packages.name = Ainm +packages.version = Leagan +packages.type = Cineál +packages.repository = Stóráil +packages.size = Méid +packages.published = Foilsithe +defaulthooks = Réamhshocraithe Crúcaí Gréasán +defaulthooks.add_webhook = Cuir Crúca Gréasán Réamhshocraithe leis +defaulthooks.update_webhook = Nuashonraigh Réamhshocrú Crúca Gréasán +systemhooks = Córas Crúcaí Gréasán +systemhooks.add_webhook = Cuir Crúca Gréasán Córas leis +systemhooks.update_webhook = Nuashonraigh Córas Crúca Gréasán +auths.new = Cuir Foinse Fíordheimhni +auths.name = Ainm +auths.type = Cineál +auths.enabled = Cumasaithe +auths.syncenabled = Cumasaigh Sioncrónú Úsáideora +auths.updated = Nuashonraithe +auths.auth_type = Cineál Fíordheimhnithe +auths.auth_name = Ainm Fíordheimhnithe +auths.security_protocol = Prótacal Slándála +auths.domain = Fearann +auths.host = Óstach +auths.port = Calafort +auths.bind_dn = Ceangail DN +auths.bind_password = Ceangail Pasfhocal +auths.user_base = Bonn Cuardaigh Úsáideora +auths.user_dn = Úsáideoir DN +auths.attribute_username = Tréith Ainm Úsáideora +auths.attribute_name = Tréith Céad Ainm +auths.attribute_surname = Tréith Sloinne +auths.attribute_mail = Tréith ríomhphoist +auths.attribute_ssh_public_key = Tréith Eochair SSH Phoiblí +auths.attribute_avatar = Tréith Avatar +auths.attributes_in_bind = Faigh tréithe i gComhthéacs Bind DN +auths.allow_deactivate_all = Lig do thoradh cuardaigh folamh gach úsáideoir a dhíghníomhachtú +auths.use_paged_search = Úsáid Cuardach Leathanaigh +auths.search_page_size = Méid an Leathanaigh +auths.filter = Scagaire Úsáideora +auths.admin_filter = Scagaire Riaracháin +auths.restricted_filter = Scagaire Srianta +auths.verify_group_membership = Fíoraigh ballraíocht ghrúpa i LDAP (fág an scagaire folamh le scipeáil) +auths.group_search_base = Bonn Cuardaigh Grúpa DN +auths.group_attribute_list_users = Tréith Grúpa ina bhfuil Liosta Úsáideoirí +auths.user_attribute_in_group = Tréith Úsáideora atá Liostaithe i nGrúpa +auths.map_group_to_team = Léarscáil grúpaí LDAP chuig foirne na hEagraíochta (fág an réimse folamh le scipeáil) +auths.map_group_to_team_removal = Bain úsáideoirí ó fhoirne sioncronaithe mura mbaineann an t-úsáideoir leis an ngrúpa comhfhreagrach LDAP +auths.enable_ldap_groups = Cumasaigh grúpaí LDAP +auths.ms_ad_sa = MS AD Tréithe Cuardaigh +auths.smtp_auth = Cineál Fíordheimhnithe SMTP +auths.smtphost = Óstach SMTP +auths.smtpport = SMTP Calafort +auths.allowed_domains = Fearainn Ceadaithe +auths.force_smtps = Fórsa SMTPS +auths.force_smtps_helper = Úsáidtear SMTPS i gcónaí ar chalafort 465. Socraigh é seo chun SMTPS a chur i bhfeidhm ar chalafoirt eile. (Seachas sin úsáidfear STARTTLS ar chalafoirt eile má thacaíonn an t-óstach leis.) +auths.helo_hostname = Ainm Óstach HELO +auths.helo_hostname_helper = Ainm óstach a sheoltar le HELO. Fág bán chun an t-ainm óstach reatha a sheoladh. +auths.disable_helo = Díchumasaigh HELO +auths.pam_service_name = Ainm Seirbhíse PAM +auths.pam_email_domain = Fearann Ríomhphoist PAM (roghnach) +auths.oauth2_provider = Soláthraí OAuth2 +auths.oauth2_icon_url = URL deilbhín +auths.oauth2_clientID = Aitheantas Cliant (Eochair) +auths.oauth2_clientSecret = Rúnda Cliant +auths.openIdConnectAutoDiscoveryURL = URL Fionnachtana Uathoibríoch OpenID Connect +auths.oauth2_use_custom_url = Úsáid URLanna Saincheaptha in ionad URLanna Réamhshocraithe +auths.oauth2_tokenURL = URL Comhartha +auths.oauth2_authURL = Údaraigh URL +auths.oauth2_profileURL = URL Próifíl +auths.oauth2_emailURL = URL ríomhphoist +auths.skip_local_two_fa = Scipeáil 2FA áitiúil +auths.skip_local_two_fa_helper = Ciallaíonn fágáil gan socrú go mbeidh ar úsáideoirí áitiúla a bhfuil tacar 2FA acu 2FA a rith fós chun logáil isteach +auths.oauth2_tenant = Tionónta +auths.oauth2_scopes = Scóipeanna Breise +auths.oauth2_required_claim_name = Ainm Éilimh Riachtanach +auths.oauth2_required_claim_name_helper = Socraigh an t-ainm seo chun logáil isteach ón bhfoinse seo a shrianadh d'úsáideoirí a bhfuil éileamh acu leis an ainm seo +auths.oauth2_required_claim_value = Luach Éilimh Riachtanach +auths.oauth2_required_claim_value_helper = Socraigh an luach seo chun logáil isteach ón bhfoinse seo a shrianadh chuig úsáideoirí a bhfuil éileamh acu leis an ainm agus an luach seo +auths.oauth2_group_claim_name = Ainm éileamh ag soláthar ainmneacha grúpa don fhoinse seo (Roghnach) +auths.oauth2_admin_group = Luach Éilimh Grúpa d'úsáideoirí riarthóra. (Roghnach - teastaíonn ainm éilimh thuas) +auths.oauth2_restricted_group = Luach Éilimh Grúpa d'úsáideoirí srianta. (Roghnach - teastaíonn ainm éilimh thuas) +auths.oauth2_map_group_to_team = Map mhaígh grúpaí chuig foirne Eagraíochta. (Roghnach - éilíonn ainm an éilimh thuas) +auths.oauth2_map_group_to_team_removal = Bain úsáideoirí ó fhoirne sioncronaithe mura mbaineann an t-úsáideoir leis an ngrúpa comhfhreagrach. +auths.sspi_auto_create_users = Cruthaigh úsáideoirí go huathoibríoch +auths.sspi_auto_create_users_helper = Lig do mhodh auth SSPI cuntais nua a chruthú go huathoibríoch d'úsáideoirí a logálann isteach den chéad uair +auths.sspi_auto_activate_users = Gníomhachtaigh úsáideoirí go huathoibríoch +auths.sspi_auto_activate_users_helper = Lig modh auth SSPI úsáideoirí nua a ghníomhachtú go huathoibríoch +auths.sspi_strip_domain_names = Bain ainmneacha fearann ó ainm úsáideora +auths.sspi_strip_domain_names_helper = Má dhéantar iad a sheiceáil, bainfear ainmneacha fearainn ó ainmneacha logála isteach (m.sh. Beidh “DOMAIN\ user” agus "user@example.org" araon ní bheidh ach “úsáideoir”). +auths.sspi_separator_replacement = Deighilteoir le húsáid in ionad\,/agus @ +auths.sspi_separator_replacement_helper = An carachtar a úsáidfear chun na deighilteoirí a chur in ionad na n-ainmneacha logála síos-leibhéil (m.sh. an \ i "DOMAIN\úsáideoir") agus ainmneacha príomhoidí úsáideora (m.sh. an @ in "user@example.org"). +auths.sspi_default_language = Teanga úsáideora réamhshocraithe +auths.sspi_default_language_helper = Teanga réamhshocraithe d'úsáideoirí cruthaithe go huathoibríoch ag modh auth SSPI. Fág folamh más fearr leat teanga a bhrath go huathoibríoch. +auths.tips = Leideanna +auths.tips.oauth2.general = OAuth2 Fíordheimhniú +auths.tips.oauth2.general.tip = Agus fíordheimhniú OAuth2 nua á chlárú agat, ba chóir go mbeadh an URL glaonna ais/atreoraithe: +auths.tip.oauth2_provider = Soláthraí OAuth2 +auths.tip.nextcloud = `Cláraigh tomhaltóir OAuth nua ar do chás ag baint úsáide as an roghchlár seo a leanas "Socruithe -> Slándáil -> cliant OAuth 2.0"` +auths.tip.dropbox = Cruthaigh feidhmchlár nua ag %s +auths.tip.facebook = Cláraigh feidhmchlár nua ag %s agus cuir an táirge "Facebook Login" leis +auths.tip.github = Cláraigh feidhmchlár OAuth nua ar %s +auths.tip.gitlab_new = Cláraigh feidhmchlár nua ar %s +auths.tip.google_plus = Faigh dintiúir chliaint OAuth2 ó chonsól API Google ag %s +auths.tip.twitter = Téigh go %s, cruthaigh feidhmchlár agus cinntigh go bhfuil an rogha "Ceadaigh úsáid a bhaint as an bhfeidhmchlár seo chun logáil isteach le Twitter" cumasaithe +auths.tip.discord = Cláraigh feidhmchlár nua ar %s +auths.tip.gitea = Cláraigh feidhmchlár OAuth2 nua. Tá treoir le fáil ag %s +auths.tip.yandex = `Cruthaigh feidhmchlár nua ag %s. Roghnaigh na ceadanna seo a leanas ón rannán "Yandex.Passport API": "Rochtain ar sheoladh ríomhphoist", "Rochtain ar avatar úsáideora" agus "Rochtain ar ainm úsáideora, céad ainm agus sloinne, inscne"` +auths.tip.mastodon = Ionchur URL sampla saincheaptha don shampla mastodon is mian leat a fhíordheimhniú leis (nó bain úsáid as an gceann réamhshocraithe) +auths.edit = Cuir Foinse Fíordheimhnithe in Eagar +auths.activated = Tá an Foinse Fíordheimhnithe seo gníomhachtaithe +auths.new_success = Tá an fíordheimhniú "%s" curtha leis. +auths.update_success = Nuashonraíodh an fhoinse fíordheimhnithe. +auths.update = Nuashonraigh Foinse Fíordheimhnithe +auths.delete = Scrios Foinse Fíordheimhnithe +auths.delete_auth_title = Scrios Foinse Fíordheimhnithe +auths.delete_auth_desc = Má scriosann tú foinse fíordheimhnithe cuirtear cosc ​​ar úsáideoirí í a úsáid chun síniú isteach. Lean ort? +auths.still_in_used = Tá an fhoinse fíordheimhnithe fós in úsáid. Tiontaigh nó scrios aon úsáideoir a úsáideann an fhoinse fíordheimhnithe seo ar dtús. +auths.deletion_success = Tá an fhoinse fíordheimhnithe scriosta. +auths.login_source_exist = Tá an fhoinse fíordheimhnithe "%s" ann cheana. +auths.login_source_of_type_exist = Tá foinse fíordheimhnithe den chineál seo ann cheana féin. +auths.unable_to_initialize_openid = Ní féidir Soláthraí Ceangail OpenID a thionscnamh: %s +auths.invalid_openIdConnectAutoDiscoveryURL = URL Neamhbhailí Fionnachtana Uathoibríoch (ní mór gur URL bailí é seo ag tosú le http:// nó https://) +config.server_config = Cumraíocht Freastalaí +config.custom_conf = Cosán Comhad Cumraíochta +config.domain = Fearann ​​Freastalaí +config.offline_mode = Mód Áitiúil +config.disable_router_log = Díchumasaigh Loga an Ródaire +config.run_mode = Mód Rith +config.git_version = Leagan Git +config.app_data_path = Cosán Sonraí Aip +config.repo_root_path = Cosán Fréimhe Stórála +config.lfs_root_path = Cosán Fréamh LFS +config.log_file_root_path = Cosán Logála +config.script_type = Cineál Script +config.ssh_config = Cumraíocht SSH +config.ssh_enabled = Cumasaithe +config.ssh_start_builtin_server = Úsáid Freastalaí Ionsuite +config.ssh_domain = Fearainn Freastalaí SSH +config.ssh_port = Calafort +config.ssh_listen_port = Éist Calafort +config.ssh_root_path = Cosán Fréimhe +config.ssh_key_test_path = Cosán Tástáil Eochair +config.ssh_minimum_key_size_check = Seiceáil Íosta Méid Eochair +config.ssh_minimum_key_sizes = Méideanna Íosta Eochrach +config.lfs_config = Cumraíocht LFS +config.lfs_enabled = Cumasaithe +config.lfs_content_path = Cosán Ábhar LFS +config.db_config = Cumraíocht Bunachar Sonraí +config.db_type = Cineál +config.db_host = Óstach +config.db_name = Ainm +config.db_user = Ainm úsáideora +config.db_schema = Scéim +config.db_ssl_mode = SSL +config.db_path = Cosán +config.service_config = Cumraíocht Seirbhíse +config.register_email_confirm = Deimhniú Ríomhphost a éileamh chun Clárú +config.disable_register = Díchumasaigh Féin-Chlárú +config.allow_only_external_registration = Ceadaigh Clárú Trí Sheirbhísí Seachtracha amháin +config.enable_openid_signup = Cumasaigh Féinchlárú OpenID +config.enable_openid_signin = Cumasaigh Síniú isteach OpenID +config.show_registration_button = Taispeáin Cnaipe Cláraithe +config.mail_notify = Cumasaigh Fógraí Ríomhphoist +config.enable_captcha = Cumasaigh CAPTCHA +config.default_keep_email_private = Folaigh Seoltaí Ríomhphoist de réir Réamhshocrú +config.default_allow_create_organization = Ceadaigh Cruthú Eagraíochtaí de réir Réamhshocrú +config.enable_timetracking = Cumasaigh Rianú Ama +config.default_enable_timetracking = Cumasaigh Rianú Ama de réir Réamhshocrú +config.default_allow_only_contributors_to_track_time = Lig do Rannpháirtithe Amháin Rianú Am +config.no_reply_address = Fearann Ríomhphoist Folaithe +config.default_enable_dependencies = Cumasaigh Spleáchais Eisithe de réir Réamhshocrú +config.webhook_config = Cumraíocht Crúca Gréasán +config.queue_length = Fad scuaine +config.deliver_timeout = Teorainn Ama Seachadta +config.skip_tls_verify = Scipeáil Fíorú TLS +config.mailer_config = Cumraíocht Seoltóra +config.mailer_enabled = Cumasaithe +config.mailer_enable_helo = Cumasaigh HELO +config.mailer_name = Ainm +config.mailer_protocol = Prótacal +config.mailer_smtp_port = Calafort SMTP +config.mailer_user = Úsáideoir +config.mailer_use_sendmail = Úsáid Sendmail +config.mailer_sendmail_path = Cosán Sendmail +config.mailer_sendmail_args = Argóintí Breise chuig Sendmail +config.mailer_sendmail_timeout = Teorainn Ama Sendmail +config.mailer_use_dummy = Caochadán +config.test_email_placeholder = Ríomhphost (m.sh. test@example.com) +config.send_test_mail_submit = Seol +config.oauth_config = Cumraíocht OAuth +config.oauth_enabled = Cumasaithe +config.cache_config = Cumraíocht taisce +config.cache_adapter = Cuibheoir taisce +config.cache_interval = Eatramh Taisce +config.cache_conn = Ceangal Taisce +config.cache_item_ttl = Mír Taisce TTL +config.cache_test = Taisce Tástáil +config.cache_test_failed = Theip ar an taisce a thaiscéaladh: %v. +config.cache_test_slow = D'éirigh leis an tástáil taisce, ach tá an freagra mall: %s. +config.cache_test_succeeded = D'éirigh leis an tástáil taisce, fuair sé freagra i %s. +config.session_config = Cumraíocht Seisiúin +config.session_provider = Soláthraí Seisiúin +config.provider_config = Cumraíocht Soláthraí +config.cookie_name = Ainm Fianán +config.gc_interval_time = Am Eatramh GC +config.https_only = HTTPS Amháin +config.picture_config = Cumraíocht Pictiúr agus Avatar +config.picture_service = Seirbhís Pictiúr +config.disable_gravatar = Díchumasaigh Gravatar +config.enable_federated_avatar = Cumasaigh Avatars Cónaidhme +config.open_with_editor_app_help = Na heagarthóirí "Oscailte le" don roghchlár Clón. Má fhágtar folamh é, úsáidfear an réamhshocrú. Leathnaigh chun an réamhshocrú a fheiceáil. +config.git_config = Cumraíocht Git +config.git_gc_args = Argóintí GC +config.git_migrate_timeout = Teorainn Ama Imirce +config.git_mirror_timeout = Teorainn Ama Nuashonraithe Scátháin +config.git_clone_timeout = Teorainn Ama Oibríochta Clón +config.git_pull_timeout = Tarraing Am Oibríochta +config.git_gc_timeout = Teorainn Ama Oibriúcháin GC +config.log_config = Cumraíocht Logáil +config.logger_name_fmt = Logálaí: %s +config.disabled_logger = Díchumasaithe +config.access_log_mode = Mód Logáil Rochtana +config.access_log_template = Teimpléad Logáil Rochtana +config.xorm_log_sql = Logáil SQL +config.set_setting_failed = Theip ar shocrú %s a shocrú +monitor.stats = Staitisticí +monitor.cron = Tascanna Cron +monitor.name = Ainm +monitor.schedule = Sceideal +monitor.next = An chéad uair eile +monitor.previous = Am Roimhe Seo +monitor.execute_times = Forghníomhaíochtaí +monitor.process = Próisis reatha +monitor.stacktrace = Rian cruachta +monitor.processes_count = Próisis %d +monitor.download_diagnosis_report = Íoslódáil tuairisc diagnóis +monitor.desc = Cur síos +monitor.start = Am Tosaigh +monitor.execute_time = Am Forghníomhaithe +monitor.last_execution_result = Toradh +monitor.process.cancel = Cealaigh próiseas +monitor.process.children = Leanaí +monitor.queues = Scuaineanna +monitor.queue = Scuaine: %s +monitor.queue.name = Ainm +monitor.queue.type = Cineál +monitor.queue.exemplar = Cineál Eiseamláire +monitor.queue.numberworkers = Líon na nOibrithe +monitor.queue.activeworkers = Oibrithe Gníomhacha +monitor.queue.maxnumberworkers = Líon Uasta na nOibrithe +monitor.queue.numberinqueue = Uimhir i scuaine +monitor.queue.review_add = Athbhreithniú / Cuir Oibrithe leis +monitor.queue.settings.title = Socruithe Linn +monitor.queue.settings.desc = Fásann linnte go dinimiciúil mar fhreagra ar a gcuid scuaine oibrithe a bhlocáil. +monitor.queue.settings.maxnumberworkers = Uaslíon na n-oibrithe +monitor.queue.settings.maxnumberworkers.placeholder = Faoi láthair %[1]d +monitor.queue.settings.maxnumberworkers.error = Caithfidh uaslíon na n-oibrithe a bheith ina uimhir +monitor.queue.settings.submit = Nuashonrú Socruithe +monitor.queue.settings.changed = Socruithe Nuashonraithe +monitor.queue.settings.remove_all_items = Bain gach +monitor.queue.settings.remove_all_items_done = Baineadh na míreanna go léir sa scuaine. +notices.system_notice_list = Fógraí Córais +notices.operations = Oibríochtaí +notices.select_all = Roghnaigh Gach +notices.deselect_all = Díroghnaigh Gach +notices.inverse_selection = Roghnú Inbhéartha +notices.delete_selected = Scrios Roghnaithe +notices.delete_all = Scrios Gach Fógra +notices.type = Cineál +notices.type_1 = Stóras +notices.type_2 = Tasc +notices.desc = Cur síos +notices.op = Oibríocht. +notices.delete_success = Scriosadh na fógraí córais. +self_check.no_problem_found = Níor aimsíodh aon fhadhb fós. +self_check.database_collation_mismatch = Bí ag súil le comhthiomsú a úsáid sa bhunachar sonraí: %s +self_check.database_inconsistent_collation_columns = Tá comhthiomsú %s in úsáid ag an mbunachar sonraí, ach tá comhthiomsuithe mímheaitseála á n-úsáid ag na colúin seo. D'fhéadfadh sé a bheith ina chúis le roinnt fadhbanna gan choinne. + +[action] +create_repo = stóras cruthaithe %s +rename_repo = stóras athainmnithe ó %[1]s go %[3]s +commit_repo = brú chuig %[3]s ag %[4]s +create_issue = `osclaíodh ceist %[3]s#%[2]s` +close_issue = `eagrán dúnta %[3]s#%[2]s` +reopen_issue = `athoscailt an cheist %[3]s#%[2]s` +create_pull_request = `iarratas tarraingthe cruthaithe %[3]s#%[2]s` +close_pull_request = `iarratas tarraingthe dúnta %[3]s#%[2]s` +reopen_pull_request = `iarratas tarraingthe athoscailte %[3]s#%[2]s` +comment_issue = `trácht ar cheist %[3]s#%[2]s` +comment_pull = `déan trácht ar iarratas tarraingthe %[3]s#%[2]s` +merge_pull_request = `iarratas tarraingthe cumaisc %[3]s#%[2]s` +auto_merge_pull_request = `iarratas tarraingthe cumasctha go huathoibríoch %[3]s#%[2]s` +transfer_repo = aistrithe stóras %s go %s +push_tag = brú %[3]s go %[4]s +delete_tag = scriosta clib %[2]s ó %[3]s +delete_branch = brainse scriosta %[2]s ó %[3]s +compare_branch = Déan comparáid +compare_commits = Déan comparáid idir tiomáintí %d +compare_commits_general = Déan comparáid idir tiomáintí +mirror_sync_push = geallann synced do %[3]s ag %[4]s ón scáthán +mirror_sync_create = sioncronaigh tagairt nua %[3]s do %[4]s ón scáthán +mirror_sync_delete = sioncronaithe agus scriosta an tagairt %[2]s ag %[3]s ón scáthán +approve_pull_request = `ceadaithe %[3]s#%[2]s` +reject_pull_request = `athruithe molta le haghaidh %[3]s#%[2]s` +publish_release = `scaoileadh %[4]s ag %[3]s` +review_dismissed = `léirmheas ó %[4]s le haghaidh %[3]s#%[2]s` +review_dismissed_reason = Cúis: +create_branch = brainse cruthaithe %[3]s i %[4]s +starred_repo = le %[2]s le réalta +watched_repo = thosaigh sé ag breathnú ar %[2]s + +[tool] +now = anois +future = todhchaí +1s = 1 soicind +1m = 1 nóiméad +1h = 1 uair an chloig +1d = 1 lá +1w = 1 seachtain +1mon = 1 mhí +1y = 1 bhliain +seconds = %d soicind +minutes = %d nóiméad +hours = %d uair an chloig +days = %d laethanta +weeks = %d seachtain +months = %d míonna +years = %d bliain +raw_seconds = soicind +raw_minutes = nóiméad + +[dropzone] +default_message = Scaoil comhaid nó cliceáil anseo chun iad a uaslódáil. +invalid_input_type = Ní féidir leat comhaid den chineál seo a uaslódáil. +file_too_big = Sáraíonn méid comhaid ({{filesize}} MB) an t-uasmhéid de ({{maxFilesize}} MB). +remove_file = Bain an comhad + +[notification] +notifications = Fógraí +unread = Gan léamh +read = Léigh +no_unread = Gan aon fhógraí neamh-léite. +no_read = Gan aon fhógraí léite. +pin = Fógra bioráin +mark_as_read = Marcáil mar léite +mark_as_unread = Marcáil mar neamh-léite +mark_all_as_read = Marcáil gach ceann mar léite +subscriptions = Síntiúis +watching = Ag féachaint +no_subscriptions = Gan síntiúis + +[gpg] +default_key = Sínithe leis an eochair réamhshocraithe +error.extract_sign = Theip ar an síniú a bhaint +error.generate_hash = Theip ar hash gealltanas a ghiniúint +error.no_committer_account = Níl aon chuntas nasctha le seoladh ríomhphoist an tiomnóra + +[units] +unit = Aonad +error.no_unit_allowed_repo = Níl cead agat rochtain a fháil ar aon chuid den tiomantas seo. +error.unit_not_allowed = Níl cead agat an rannán stóras seo a rochtain. + +[packages] +title = Pacáistí +desc = Bainistigh pacáistí stórais. +empty = Níl aon phacáistí ann fós. +empty.documentation = Le haghaidh tuilleadh eolais ar chlárlann na bpacáistí, féach ar na doiciméid. +empty.repo = An ndearna tú uaslódáil ar phacáiste, ach nach bhfuil sé léirithe anseo? Téigh go socruithe pacáiste agus nasc leis an stóras seo é. +registry.documentation = Le haghaidh tuilleadh eolais ar chlárlann %s, féach ar na doiciméid. +filter.type = Cineál +filter.type.all = Gach +filter.no_result = Níor thug do scagaire aon torthaí. +filter.container.tagged = Clibeáilte +filter.container.untagged = Gan chlib +published_by = Foilsithe %[1]s ag %[3]s +published_by_in = Foilsithe ag %[1]s ag %[3]s in %[5]s +installation = Suiteáil +about = Maidir leis an bpacáiste seo +requirements = Riachtanais +dependencies = Spleithiúlachtaí +keywords = Eochairfhocail +details = Sonraí +details.author = Údar +details.license = Ceadúnas +assets = Sócmhainní +versions = Leaganacha +versions.view_all = Féach ar gach +dependency.id = ID +dependency.version = Leagan +search_in_external_registry = Cuardaigh i %s +alpine.registry = Socraigh an chlár seo tríd an url a chur i do chomhad /etc/apk/repositories: +alpine.registry.key = Íoslódáil eochair RSA poiblí na clárlainne isteach san fhillteán /etc/apk/keys/ chun an síniú innéacs a fhíorú: +alpine.registry.info = Roghnaigh $branch agus $repository ón liosta thíos. +alpine.install = Chun an pacáiste a shuiteáil, rith an t-ordú seo a leanas: +alpine.repository = Eolas Stórais +alpine.repository.branches = Brainsí +alpine.repository.repositories = Stórais +alpine.repository.architectures = Ailtireachtaí +cargo.registry = Socraigh an clárlann seo sa chomhad cumraíochta lasta (mar shampla ~/.cargo/config.toml): +cargo.install = Chun an pacáiste a shuiteáil ag baint úsáide as Cargo, reáchtáil an t-ordú seo a leanas: +chef.registry = Socraigh an clárlann seo i do chomhad ~/.chef/config.rb: +chef.install = Chun an pacáiste a shuiteáil, rith an t-ordú seo a leanas: +composer.registry = Socraigh an chlár seo i do chomhad ~/.composer/config.json: +composer.install = Chun an pacáiste a shuiteáil ag baint úsáide as Cumadóir, reáchtáil an t-ordú seo a leanas: +composer.dependencies = Spleithiúlachtaí +composer.dependencies.development = Spleithiúlachtaí Forbartha +conan.details.repository = Stóras +conan.registry = Socraigh an clárlann seo ón líne ordaithe: +conan.install = Chun an pacáiste a shuiteáil ag úsáid Conan, reáchtáil an t-ordú seo a leanas: +conda.registry = Socraigh an chlár seo mar stóras Conda i do chomhad .condarc: +conda.install = Chun an pacáiste a shuiteáil ag úsáid Conda, reáchtáil an t-ordú seo a leanas: +container.details.type = Cineál Íomhá +container.details.platform = Ardán +container.pull = Tarraing an íomhá ón líne ordaithe: +container.digest = Díleáigh +container.multi_arch = Córas Oibriúcháin / Ailtireacht +container.layers = Sraitheanna Íomhá +container.labels = Lipéid +container.labels.key = Eochair +container.labels.value = Luach +cran.registry = Cumraigh an chlárlann seo i do chomhad Rprofile.site: +cran.install = Chun an pacáiste a shuiteáil, rith an t-ordú seo a leanas: +debian.registry = Socraigh an clárlann seo ón líne ordaithe: +debian.registry.info = Roghnaigh $distribution agus $component ón liosta thíos. +debian.install = Chun an pacáiste a shuiteáil, rith an t-ordú seo a leanas: +debian.repository = Eolas Stóras +debian.repository.distributions = Dáiltí +debian.repository.components = Comhpháirteanna +debian.repository.architectures = Ailtireachtaí +generic.download = Íoslódáil pacáiste ón líne ordaithe: +go.install = Suiteáil an pacáiste ón líne ordaithe: +helm.registry = Socraigh an clárlann seo ón líne ordaithe: +helm.install = Chun an pacáiste a shuiteáil, rith an t-ordú seo a leanas: +maven.registry = Socraigh an clárlann seo i do chomhad pom.xml tionscadail: +maven.install = Chun an pacáiste a úsáid cuir na nithe seo a leanas sa bhloc spleáchais sa chomhad pom.xml: +maven.install2 = Rith tríd an líne ordaithe: +maven.download = Chun an spleáchas a íoslódáil, rith tríd an líne ordaithe: +nuget.registry = Socraigh an clárlann seo ón líne ordaithe: +nuget.install = Chun an pacáiste a shuiteáil ag úsáid NuGet, reáchtáil an t-ordú seo a leanas: +nuget.dependency.framework = Spriocchreat +npm.registry = Socraigh an chlárlann seo i do chomhad .npmrc do thionscadail: +npm.install = Chun an pacáiste a shuiteáil ag úsáid npm, reáchtáil an t-ordú seo a leanas: +npm.install2 = nó cuir leis an gcomhad package.json é: +npm.dependencies = Spleithiúlachtaí +npm.dependencies.development = Spleithiúlachtaí Forbartha +npm.dependencies.bundle = Spleáchais Chuachta +npm.dependencies.peer = Spleithiúlachtaí Piaraí +npm.dependencies.optional = Spleáchais Roghnacha +npm.details.tag = Clib +pub.install = Chun an pacáiste a shuiteáil ag úsáid Dart, reáchtáil an t-ordú seo a leanas: +pypi.requires = Teastaíonn Python +pypi.install = Chun an pacáiste a shuiteáil ag úsáid pip, reáchtáil an t-ordú seo a leanas: +rpm.registry = Socraigh an clárlann seo ón líne ordaithe: +rpm.distros.redhat = ar dháileadh bunaithe ar RedHat +rpm.distros.suse = ar dháileadh bunaithe ar SUSE +rpm.install = Chun an pacáiste a shuiteáil, rith an t-ordú seo a leanas: +rpm.repository = Eolas Stóras +rpm.repository.architectures = Ailtireachtaí +rpm.repository.multiple_groups = Tá an pacáiste seo ar fáil i ngrúpaí éagsúla. +rubygems.install = Chun an pacáiste a shuiteáil ag baint úsáide as gem, reáchtáil an t-ordú seo a leanas: +rubygems.install2 = nó cuir leis an Gemfile é: +rubygems.dependencies.runtime = Spleáchais Rith-Ama +rubygems.dependencies.development = Spleáchais Forbartha +rubygems.required.ruby = Éilíonn leagan Ruby +rubygems.required.rubygems = Éilíonn leagan RubyGem +swift.registry = Socraigh an clárlann seo ón líne ordaithe: +swift.install = Cuir an pacáiste i do chomhad Package.swift: +swift.install2 = agus reáchtáil an t-ordú seo a leanas: +vagrant.install = Chun bosca Vagrant a chur leis, reáchtáil an t-ordú seo a leanas: +settings.link = Nasc an pacáiste seo le stóras +settings.link.description = Má nascann tú pacáiste le stóras, liostaítear an pacáiste i liosta pacáistí an stórais. +settings.link.select = Roghnaigh Stóras +settings.link.button = Nuashonraigh Nasc Stórais +settings.link.success = D'éirigh le nasc an stórais a nuashonrú. +settings.link.error = Theip ar an nasc stóras a nuashonrú. +settings.delete = Scrios pacáiste +settings.delete.description = Tá pacáiste a scriosadh buan agus ní féidir é a chur ar ais. +settings.delete.notice = Tá tú ar tí %s (%s) a scriosadh. Tá an oibríocht seo dochúlaithe, an bhfuil tú cinnte? +settings.delete.success = Tá an pacáiste scriosta. +settings.delete.error = Theip ar an pacáiste a scriosadh. +owner.settings.cargo.title = Innéacs Clárlann Lasta +owner.settings.cargo.initialize = Innéacs a chur i dtosach +owner.settings.cargo.initialize.description = Tá gá le stóras innéacs speisialta Git chun an clárlann Cargo a úsáid. Tríd an rogha seo, cruthófar an stóras (nó athchruthófar é) agus cumrófar é go huathoibríoch. +owner.settings.cargo.initialize.error = Níorbh fhéidir an t-innéacs Cargo a thúsú: %v +owner.settings.cargo.initialize.success = Cruthaíodh an t-innéacs Cargo go rathúil. +owner.settings.cargo.rebuild = Innéacs Atógáil +owner.settings.cargo.rebuild.description = Is féidir atógáil a bheith úsáideach mura bhfuil an t-innéacs sioncronaithe leis na pacáistí Cargo stóráilte. +owner.settings.cargo.rebuild.error = Níorbh fhéidir an t-innéacs Cargo a atógáil: %v +owner.settings.cargo.rebuild.success = D'éirigh leis an innéacs Cargo a atógáil. +owner.settings.cleanuprules.add = Cuir Riail Glantacháin leis +owner.settings.cleanuprules.edit = Cuir Riail Glantacháin in eagar +owner.settings.cleanuprules.preview = Réamhamharc Riail Glantacháin +owner.settings.cleanuprules.preview.overview = Tá pacáistí %d beartaithe a bhaint. +owner.settings.cleanuprules.preview.none = Ní hionann riail glantacháin agus pacáistí ar bith. +owner.settings.cleanuprules.enabled = Cumasaithe +owner.settings.cleanuprules.pattern_full_match = Cuir patrún i bhfeidhm ar ainm an phacáiste iomlán +owner.settings.cleanuprules.keep.title = Coinnítear leaganacha a mheaitseálann leis na rialacha seo, fiú má mheaitseálann siad riail bhaint thíos. +owner.settings.cleanuprules.keep.count = Coinnigh an ceann is déanaí +owner.settings.cleanuprules.keep.count.1 = 1 leagan in aghaidh an phacáiste +owner.settings.cleanuprules.keep.count.n = Leaganacha %d in aghaidh an phacáiste +owner.settings.cleanuprules.keep.pattern = Coinnigh leaganacha meaitseála +owner.settings.cleanuprules.keep.pattern.container = Coinnítear an leagan is déanaí le haghaidh pacáistí Coimeádán i gcónaí. +owner.settings.cleanuprules.remove.title = Baintear leaganacha a mheaitseálann leis na rialacha seo, mura deir riail thuas iad a choinneáil. +owner.settings.cleanuprules.remove.days = Bain leaganacha níos sine ná +owner.settings.cleanuprules.remove.pattern = Bain leaganacha meaitseála +owner.settings.cleanuprules.success.update = Nuashonraíodh an riail ghlantacháin. +owner.settings.cleanuprules.success.delete = Scriosadh an riail glantacháin. +owner.settings.chef.title = Clárlann Chef +owner.settings.chef.keypair = Gin péire eochair +owner.settings.chef.keypair.description = Tá eochairphéire riachtanach le fíordheimhniú a dhéanamh ar chlárlann an Chef. Má tá péire eochrach ginte agat roimhe seo, má ghinfidh tú eochairphéire nua, scriosfar an seanphéire eochair. + +[secrets] +secrets = Rúin +description = Cuirfear rúin ar aghaidh chuig gníomhartha áirithe agus ní féidir iad a léamh ar mhalairt. +none = Níl aon rúin ann fós. +creation = Cuir Rúnda leis +creation.name_placeholder = carachtair alfanumair nó íoslaghda amháin nach féidir a thosú le GITEA_ nó GITHUB_ +creation.value_placeholder = Ionchur ábhar ar bith. Fágfar spás bán ag tús agus ag deireadh ar lár. +creation.success = Tá an rún "%s" curtha leis. +creation.failed = Theip ar an rún a chur leis. +deletion = Bain rún +deletion.description = Is buan rún a bhaint agus ní féidir é a chealú. Lean ort? +deletion.success = Tá an rún bainte. +deletion.failed = Theip ar rún a bhaint. + +[actions] +actions = Gníomhartha +runners = Reathaitheoirí +runners.new = Cruthaigh reathaí nua +runners.new_notice = Conas reathaí a thosú +runners.status = Stádas +runners.id = ID +runners.name = Ainm +runners.owner_type = Cineál +runners.description = Cur síos +runners.labels = Lipéid +runners.last_online = Am Ar Líne Deiridh +runners.runner_title = Reathaí +runners.task_list = Tascanna le déanaí ar an reathaí seo +runners.task_list.no_tasks = Níl aon tasc ann fós. +runners.task_list.run = Rith +runners.task_list.status = Stádas +runners.task_list.repository = Stóras +runners.task_list.commit = Tiomantas +runners.task_list.done_at = Déanta ag +runners.edit_runner = Cuir Reathaí in Eagar +runners.update_runner = Nuashonrú Athruithe +runners.update_runner_success = Nuashonraíodh an Reathaí +runners.update_runner_failed = Theip ar an reathaí a nuashonrú +runners.delete_runner = Scrios an reathaí seo +runners.delete_runner_success = Scriosadh an reathaí go rathúil +runners.delete_runner_failed = Theip ar an reathaí a scriosadh +runners.delete_runner_header = Deimhnigh an reathaí seo a scriosadh +runners.delete_runner_notice = Má tá tasc ar siúl ar an reathaí seo, cuirfear deireadh leis agus marcáil mar theip. Féadfaidh sé sreabhadh oibre tógála a bhriseadh. +runners.none = Níl aon reathaí ar fáil +runners.status.unspecified = Anaithnid +runners.status.idle = Díomhaoin +runners.status.active = Gníomhach +runners.status.offline = As líne +runners.version = Leagan +runners.reset_registration_token = Athshocraigh comhartha clár +runners.reset_registration_token_success = D'éirigh le hathshocrú comhartha clárúcháin an dara háit +runs.all_workflows = Gach Sreafaí Oibre +runs.commit = Tiomantas +runs.scheduled = Sceidealaithe +runs.pushed_by = bhrú ag +runs.invalid_workflow_helper = Tá comhad cumraíochta sreabhadh oibre nebhailí. Seiceáil do chomhad cumraithe le do thoil: %s +runs.no_matching_online_runner_helper = Gan aon reathaí ar líne a mheaitseáil le lipéad: %s +runs.no_job_without_needs = Caithfidh post amháin ar a laghad a bheith sa sreabhadh oibre gan spleáchas. +runs.no_job = Caithfidh post amháin ar a laghad a bheith sa sreabhadh oibre +runs.actor = Aisteoir +runs.status = Stádas +runs.actors_no_select = Gach aisteoir +runs.status_no_select = Gach stádas +runs.no_results = Níor mheaitseáil aon torthaí. +runs.no_workflows = Níl aon sreafaí oibre ann fós. +runs.no_runs = Níl aon rith ag an sreabhadh oibre fós. +runs.empty_commit_message = (teachtaireacht tiomantas folamh) +runs.expire_log_message = Glanadh logaí toisc go raibh siad ró-sean. +workflow.disable = Díchumasaigh sreabhadh oibre +workflow.enable = Cumasaigh sreabhadh oibre +workflow.disabled = Tá sreabhadh oibre díchumasaithe +need_approval_desc = Teastaíonn faomhadh chun sreafaí oibre a rith le haghaidh iarratas tarraingt forc. +variables = Athróga +variables.creation = Cuir Athróg leis +variables.none = Níl aon athróga ann fós. +variables.deletion = Bain athróg +variables.deletion.description = Tá athróg a bhaint buan agus ní féidir é a chur ar ais. Lean ar aghaidh? +variables.description = Cuirfear athróga chuig gníomhartha áirithe agus ní féidir iad a léamh ar mhalairt eile. +variables.id_not_exist = Níl athróg le ID %d ann. +variables.edit = Cuir Athróg in Eagar +variables.deletion.failed = Theip ar athróg a bhaint. +variables.deletion.success = Tá an athróg bainte. +variables.creation.failed = Theip ar athróg a chur leis. +variables.creation.success = Tá an athróg "%s" curtha leis. +variables.update.failed = Theip ar athróg a chur in eagar. +variables.update.success = Tá an t-athróg curtha in eagar. + +[projects] +deleted.display_name = Tionscadal scriosta +type-1.display_name = Tionscadal Aonair +type-2.display_name = Tionscadal Stórais +type-3.display_name = Tionscadal Eagrúcháin + +[git.filemode] +changed_filemode = %[1]s → %[2]s +directory = Eolaire +normal_file = Comhad gnáth +executable_file = Comhad infheidhmithe +symbolic_link = Nasc siombalach +submodule = Fo-mhodúl diff --git a/options/locale/locale_hu-HU.ini b/options/locale/locale_hu-HU.ini index 57555b90a2..411bad835a 100644 --- a/options/locale/locale_hu-HU.ini +++ b/options/locale/locale_hu-HU.ini @@ -1270,6 +1270,8 @@ topic.done=Kész +milestones.filter_sort.name = Név + [graphs] [org] @@ -1684,6 +1686,9 @@ config.cache_item_ttl = Gyorsítótárelem TTL értéke config.app_data_path = Alkalmazásadatok elérési útja +config_summary = Összefoglaló +config_settings = Beállítások + [action] create_repo=létrehozott tárolót: %s rename_repo=átnevezte a(z) %[1]s tárolót %[3]s-ra/re diff --git a/options/locale/locale_id-ID.ini b/options/locale/locale_id-ID.ini index 1e0044e4ce..673d1464b1 100644 --- a/options/locale/locale_id-ID.ini +++ b/options/locale/locale_id-ID.ini @@ -84,15 +84,93 @@ concept_code_repository=Repositori name=Nama +re_type = Konfirmasi Kata Sandi +webauthn_insert_key = Masukkan kunci keamanan anda +webauthn_sign_in = Tekan tombol pada kunci keamanan Anda. Jika kunci keamanan Anda tidak memiliki tombol, masukkan kembali. +webauthn_press_button = Silakan tekan tombol pada kunci keamanan Anda… +webauthn_use_twofa = Gunakan kode dua faktor dari telepon Anda +webauthn_error = Tidak dapat membaca kunci keamanan Anda. +webauthn_unsupported_browser = Browser Anda saat ini tidak mendukung WebAuthn. +webauthn_error_unknown = Terdapat kesalahan yang tidak diketahui. Mohon coba lagi. +webauthn_error_insecure = `WebAuthn hanya mendukung koneksi aman. Untuk pengujian melalui HTTP, Anda dapat menggunakan "localhost" atau "127.0.0.1"` +webauthn_error_unable_to_process = Server tidak dapat memproses permintaan Anda. +webauthn_error_duplicated = Kunci keamanan tidak diperbolehkan untuk permintaan ini. Pastikan bahwa kunci ini belum terdaftar sebelumnya. +webauthn_error_empty = Anda harus menetapkan nama untuk kunci ini. +webauthn_error_timeout = Waktu habis sebelum kunci Anda dapat dibaca. Mohon muat ulang halaman ini dan coba lagi. +new_project = Proyek Baru +new_project_column = Kolom Baru +ok = Oke +retry = Coba lagi +rerun = Jalankan ulang +rerun_all = Jalankan ulang semua job +remove_label_str = `Hapus item "%s"` +view = Tampilan +test = Pengujian +locked = Terkunci +copy = Salin +copy_url = Salin URL +copy_hash = Salin hash +copy_content = Salin konten +copy_branch = Salin nama branch +copy_success = Tersalin! +copy_error = Gagal menyalin +copy_type_unsupported = Tipe berkas ini tidak dapat disalin +error = Gangguan +error404 = Halaman yang akan kamu akses tidak dapat ditemukan atau kamu tidak memiliki akses untuk melihatnya. +go_back = Kembali +invalid_data = Data invalid: %v +never = Tidak Pernah +unknown = Tidak diketahui +rss_feed = Umpan Berita +pin = Sematkan +unpin = Lepas sematan +artifacts = Artefak +archived = Diarsipkan +concept_system_global = Global +concept_user_individual = Perorangan +show_full_screen = Tampilkan layar penuh +download_logs = Unduh Logs +confirm_delete_selected = Konfirmasi untuk menghapus semua item yang dipilih? +value = Nilai +filter = Saring +filter.is_archived = Diarsipkan +filter.not_archived = Tidak Diarsipkan +filter.public = Publik +filter.private = Pribadi + [aria] +navbar = Bar Navigasi +footer = Footer +footer.links = Tautan [heatmap] +number_of_contributions_in_the_last_12_months = %s Kontribusi pada 12 bulan terakhir +less = Lebih sedikit +more = Lebih banyak [editor] +buttons.heading.tooltip = Tambahkan heading +buttons.bold.tooltip = Tambahkan teks Tebal +buttons.italic.tooltip = Tambahkan teks Miring +buttons.quote.tooltip = Kutip teks +buttons.code.tooltip = Tambah Kode +buttons.link.tooltip = Tambahkan tautan +buttons.list.unordered.tooltip = Tambah daftar titik +buttons.list.ordered.tooltip = Tambah daftar angka +buttons.list.task.tooltip = Tambahkan daftar tugas +buttons.mention.tooltip = Tandai pengguna atau tim +buttons.ref.tooltip = Merujuk pada isu atau permintaan tarik +buttons.switch_to_legacy.tooltip = Gunakan editor versi lama +buttons.enable_monospace_font = Aktifkan font monospace +buttons.disable_monospace_font = Non-Aktifkan font monospace [filter] +string.asc = A - Z +string.desc = Z - A [error] +occurred = Terjadi kesalahan +not_found = Target tidak dapat ditemukan. [startpage] app_desc=Sebuah layanan hosting Git sendiri yang tanpa kesulitan @@ -124,6 +202,9 @@ require_sign_in_view=Harus Login Untuk Melihat Halaman admin_password=Kata Sandi admin_email=Alamat Email +email_title = Pengaturan email +smtp_from = Kirim Email Sebagai + [home] uname_holder=Nama Pengguna atau Alamat Surel password_holder=Kata Sandi @@ -141,6 +222,8 @@ show_private=Pribadi issues.in_your_repos=Dalam repositori anda +show_archived = Diarsipkan + [explore] repos=Repositori users=Pengguna @@ -492,6 +575,8 @@ email_notifications.submit=Pasang Pengaturan Email visibility.private=Pribadi +visibility.public = Publik + [repo] owner=Pemilik repo_name=Nama Repositori @@ -955,6 +1040,12 @@ branch.deleted_by=Dihapus oleh %s +desc.public = Publik +desc.archived = Diarsipkan +commitstatus.error = Gangguan +projects.new = Proyek Baru +milestones.filter_sort.name = Nama + [graphs] [org] @@ -1009,6 +1100,8 @@ teams.delete_team_success=Tim sudah di hapus. teams.repositories=Tim repositori teams.search_repo_placeholder=Cari repositori… +settings.visibility.public = Publik + [admin] dashboard=Dasbor organizations=Organisasi @@ -1267,6 +1360,9 @@ notices.op=Op. notices.delete_success=Laporan sistem telah dihapus. +config_settings = Pengaturan +users.list_status_filter.menu_text = Saring + [action] create_repo=repositori dibuat %s rename_repo=ganti nama gudang penyimpanan dari %[1]s ke %[3]s @@ -1342,6 +1438,56 @@ runs.commit=Memperbuat +runs.no_matching_online_runner_helper = Tidak ada runner online yang cocok dengan label: %s +runs.actor = Aktor +runs.status = Status +runs.actors_no_select = Semua aktor +runs.status_no_select = Semua status +runs.no_results = Tidak ada hasil yang cocok. +runs.no_workflows = Belum ada alur kerja. +runs.no_runs = Alur kerja belum berjalan. +runs.empty_commit_message = (pesan commit kosong) +workflow.disable = Nonaktifkan Alur Kerja +workflow.enable = Aktifkan Alur Kerja +workflow.disabled = Alur kerja dinonaktifkan. +need_approval_desc = Butuh persetujuan untuk menjalankan alur kerja untuk pull request fork. +variables = Variabel +variables.creation = Tambah Variabel +variables.none = Belum ada variabel. +variables.deletion = Hapus variabel +variables.deletion.description = Menghapus variabel bersifat permanen dan tidak dapat dibatalkan. Lanjutkan? +variables.description = Variabel akan diteruskan ke beberapa tindakan dan tidak dapat dibaca sebaliknya. +variables.id_not_exist = Variabel dengan ID %d tidak ada. +variables.edit = Edit Variabel +variables.deletion.failed = Gagal menghapus variabel. +variables.deletion.success = Variabel telah dihapus. +variables.creation.failed = Gagal menambahkan variabel. +variables.creation.success = Variabel "%s" telah ditambahkan. +variables.update.failed = Gagal mengedit variabel. +variables.update.success = Variabel telah diedit. + [projects] +type-1.display_name = Proyek Individu +type-2.display_name = Proyek Repositori +type-3.display_name = Proyek Organisasi [git.filemode] +changed_filemode = %[1]s → %[2]s +directory = Directory +normal_file = Normal file +executable_file = Executable file +symbolic_link = Symbolic link +submodule = Submodule + +[search] +search = Cari... +type_tooltip = Tipe pencarian +fuzzy_tooltip = Termasuk juga hasil yang mendekati kata pencarian +exact_tooltip = Hanya menampilkan hasil yang cocok dengan istilah pencarian +repo_kind = Cari repo... +user_kind = Telusuri pengguna... +org_kind = Cari organisasi... +team_kind = Cari tim... +code_kind = Cari kode... +code_search_unavailable = Pencarian kode saat ini tidak tersedia. Silahkan hubungi administrator. +branch_kind = Cari cabang... diff --git a/options/locale/locale_is-IS.ini b/options/locale/locale_is-IS.ini index 3a6e844de2..9b1d56fed9 100644 --- a/options/locale/locale_is-IS.ini +++ b/options/locale/locale_is-IS.ini @@ -114,6 +114,10 @@ value=Gildi sign_in_with_provider = Skrá inn með %s enable_javascript = Þessi síða krefst JavaScript. +filter = Sía +filter.is_archived = Safnvistað +filter.public = Opinbert + [aria] [heatmap] @@ -1118,6 +1122,8 @@ topic.done=Í lagi +milestones.filter_sort.name = Heiti + [graphs] [org] @@ -1287,6 +1293,9 @@ notices.type_2=Verkefni notices.desc=Lýsing +config_summary = Yfirlit +config_settings = Stillingar + [action] create_issue=`opnaði vandamál %[3]s#%[2]s` reopen_issue=`enduropnaði vandamál %[3]s#%[2]s` @@ -1371,3 +1380,5 @@ runs.commit=Framlag [projects] [git.filemode] + +[search] diff --git a/options/locale/locale_ja-JP.ini b/options/locale/locale_ja-JP.ini index 890c2e857c..67e96cdc0c 100644 --- a/options/locale/locale_ja-JP.ini +++ b/options/locale/locale_ja-JP.ini @@ -167,6 +167,8 @@ new_org.link = 新しい組織 test = テスト error413 = 割り当て量を使い切りしました。 +copy_path = パスをコピー + [aria] navbar=ナビゲーションバー footer=フッター @@ -3515,6 +3517,8 @@ config.app_slogan = インスタンスのスローガン config.cache_test = テストキャッシュ +config.cache_test_failed = キャッシュの調査に失敗しました: %v. + [action] create_repo=がリポジトリ %s を作成しました rename_repo=がリポジトリ名を %[1]s から %[3]s へ変更しました @@ -3758,6 +3762,8 @@ rpm.repository.multiple_groups = このパッケージは複数のグループ owner.settings.cargo.rebuild.no_index = 再構築できません、インデックスが初期化されていません。 npm.dependencies.bundle = バンドルされた依存関係 +search_in_external_registry = %s で検索 + [secrets] secrets=シークレット description=シークレットは特定のActionsに渡されます。 それ以外で読み出されることはありません。 @@ -3875,11 +3881,15 @@ workflow.dispatch.invalid_input_type = 入力タイプ「%s」が無効です。 workflow.dispatch.warn_input_limit = 最初の %d 個の入力のみを表示します。 runs.no_job = ワークフローには少なくとも1つのジョブが含まれている必要があります +runs.expire_log_message = ログは古すぎるため消去されています。 + [projects] type-1.display_name=個人プロジェクト type-2.display_name=リポジトリ プロジェクト type-3.display_name=組織プロジェクト +deleted.display_name = 削除されたプロジェクト + [git.filemode] changed_filemode=%[1]s → %[2]s directory=ディレクトリ diff --git a/options/locale/locale_ko-KR.ini b/options/locale/locale_ko-KR.ini index 00c474a17c..d2a175d58d 100644 --- a/options/locale/locale_ko-KR.ini +++ b/options/locale/locale_ko-KR.ini @@ -376,7 +376,7 @@ allow_password_change=사용자에게 비밀번호 변경을 요청 (권장됨) reset_password_mail_sent_prompt=확인 메일이 %s로 전송되었습니다. 받은 편지함으로 도착한 메일을 %s 안에 확인해서 비밀번호 찾기 절차를 완료하십시오. active_your_account=계정 활성화 account_activated=계정이 활성화 되었습니다 -prohibit_login = +prohibit_login = resent_limit_prompt=활성화를 위한 이메일을 이미 전송했습니다. 3분 내로 이메일을 받지 못한 경우 재시도해주세요. has_unconfirmed_mail=안녕하세요 %s, 이메일 주소(%s)가 확인되지 않았습니다. 확인 메일을 받으시지 못하겼거나 새로운 확인 메일이 필요하다면, 아래 버튼을 클릭해 재발송하실 수 있습니다. resend_mail=여기를 눌러 확인 메일 재전송 @@ -1425,6 +1425,8 @@ archive.title_date = 이 저장소는 %s에 보관처리되었습니다. 파일 +milestones.filter_sort.name = 이름 + [graphs] [org] @@ -1797,6 +1799,9 @@ emails.filter_sort.name_reverse = 사용자명 (예약됨) config.allow_dots_in_usernames = 사용자들이 마침표를 사용자명에 사용할 수 있도록 허가합니다. 이미 존재하는 계정에는 영향을 주지 않습니다. +config_summary = 요약 +config_settings = 설정 + [action] create_repo=저장소를 만들었습니다. %s rename_repo=저장소 이름을 %[1]s에서에서 %[3]s으로 변경함 diff --git a/options/locale/locale_si-LK.ini b/options/locale/locale_si-LK.ini index e52e5bcaf9..d55b238b1c 100644 --- a/options/locale/locale_si-LK.ini +++ b/options/locale/locale_si-LK.ini @@ -101,6 +101,11 @@ concept_user_organization=සංවිධානය name=නම +filter = පෙරහන +filter.is_archived = සංරක්ෂිත +filter.public = ප්‍රසිද්ධ +filter.private = පෞද්ගලික + [aria] [heatmap] @@ -1913,6 +1918,8 @@ error.csv.too_large=එය ඉතා විශාල නිසා මෙම ග error.csv.unexpected=%d පේළියේ සහ %dතීරුවේ අනපේක්ෂිත චරිතයක් අඩංගු බැවින් මෙම ගොනුව විදැහුම්කරණය කළ නොහැක. error.csv.invalid_field_count=මෙම ගොනුව රේඛාවේ වැරදි ක්ෂේත්ර සංඛ්යාවක් ඇති බැවින් එය විදැහුම්කරණය කළ නොහැක %d. +milestones.filter_sort.name = නම + [graphs] [org] @@ -2462,6 +2469,9 @@ notices.op=ඔප්. notices.delete_success=පද්ධති දැන්වීම් මකා දමා ඇත. +config_summary = සාරාංශය +config_settings = සැකසුම් + [action] create_repo=නිර්මිත ගබඩාව %s rename_repo=%[1]s සිට %[3]sදක්වා නම් කරන ලද ගබඩාව @@ -2554,3 +2564,5 @@ runs.commit=කැප [git.filemode] symbolic_link=සංකේතාත්මක සබැඳිය + +[search] diff --git a/options/locale/locale_sk-SK.ini b/options/locale/locale_sk-SK.ini index 3e5b4a63f6..a90ddd513b 100644 --- a/options/locale/locale_sk-SK.ini +++ b/options/locale/locale_sk-SK.ini @@ -142,6 +142,9 @@ name=Meno value=Hodnota issues = Problémy +filter.is_archived = Archivované +filter.private = Súkromný + [aria] navbar=Navigačná lišta footer=Päta @@ -1370,4 +1373,6 @@ runners.labels=Štítky [projects] [git.filemode] -symbolic_link=Symbolický odkaz \ No newline at end of file +symbolic_link=Symbolický odkaz + +[search] \ No newline at end of file diff --git a/options/locale/locale_tr-TR.ini b/options/locale/locale_tr-TR.ini index c23533ee7b..29acc94832 100644 --- a/options/locale/locale_tr-TR.ini +++ b/options/locale/locale_tr-TR.ini @@ -342,6 +342,8 @@ app_slogan_helper = Oluşum sloganınızı giriniz. Devre dışı bırakmak içi enable_update_checker_helper_forgejo = release.forgejo.org adresindeki TXT DNS kayıdı kullanılarak yeni Forgejo sürümleri düzenli olarak kontrol edilecektir. allow_dots_in_usernames = Kullanıcı isimlerinde noktaya izin ver. Var olan kullanıcıları etkilemez. +smtp_from_invalid = `"E-posta Olarak Gönder" adresi geçersiz` + [home] uname_holder=Kullanıcı adı veya e-posta adresi password_holder=Parola @@ -663,6 +665,9 @@ admin_cannot_delete_self = Yöneticiyken kullanıcınızı silemezsiniz. Lütfen username_error_no_dots = ` sadece alfanumerik karakterler ("0-9","a-z","A-Z"), tire ("-") ve alt tire ("-") içerebilir. Alfanumerik olmayan karakterlerle başlayamaz ve bitemez, ayrıca ardışık alfanumerik olmayan karakterler de kullanılamaz.` +unset_password = Oturum açma kullanıcısı parola belirlemedi. +unsupported_login_type = Oturum açma türü hesap silmeyi desteklemiyor. + [user] change_avatar=Profil resmini değiştir… joined_on=%s tarihinde katıldı @@ -2692,7 +2697,37 @@ activity.navbar.contributors = Katılımcılar contributors.contribution_type.deletions = Çıkarmalar settings.new_owner_blocked_doer = Yeni sahip sizi engelledi. +open_with_editor = %s ile aç +object_format = Nesne Biçimi +mirror_sync = eşitlendi +stars = Yıldızlar +desc.sha256 = SHA256 +vendored = Sağlanmış +generated = Üretilmiş +editor.push_out_of_date = İtme eskimiş. +commits.search_branch = Bu Dal +issues.edit.already_changed = Konuya yapılan değişiklikler kaydedilemiyor. İçerik başka kullanıcı tarafından değiştirilmiş gözüküyor. Diğerlerinin değişikliklerinin üzerine yazmamak için lütfen sayfayı yenileyin ve tekrar düzenlemeye çalışın +pulls.edit.already_changed = Değişiklik isteğine yapılan değişiklikler kaydedilemiyor. İçerik başka kullanıcı tarafından değiştirilmiş gözüküyor. Diğerlerinin değişikliklerinin üzerine yazmamak için lütfen sayfayı yenileyin ve tekrar düzenlemeye çalışın +pulls.nothing_to_compare_have_tag = Seçili dal/etiket aynı. +pulls.fast_forward_only_merge_pull_request = Sadece ileri sarma +comments.edit.already_changed = Yoruma yapılan değişiklikler kaydedilemiyor. İçerik başka kullanıcı tarafından değiştirilmiş gözüküyor. Diğerlerinin değişikliklerinin üzerine yazmamak için lütfen sayfayı yenileyin ve tekrar düzenlemeye çalışın +milestones.filter_sort.name = Ad +activity.navbar.pulse = Eğilim +activity.navbar.code_frequency = Kod Frekansı +activity.navbar.recent_commits = Son İşlemeler +settings.mirror_settings.pushed_repository = İtilmiş depo +settings.ignore_stale_approvals = Eskimiş onayları yoksay +settings.ignore_stale_approvals_desc = Daha eski işlemelere (eski incelemelere) yapılmış olan onayları, Dİ'nin kaç onayı olduğunu belirlerken sayma. Eskimiş incelemeler atıldıysa bu ilgisizdir. +error.broken_git_hook = Bu deponun Git İstemcileri bozuk gibi gözüküyor. Onarmak için lütfen belgelere bakın, daha sonra durumu yenilemek için bazı işlemeler itin. + [graphs] +component_loading = %s yükleniyor... +component_loading_failed = %s yüklenemedi +component_loading_info = Bu biraz sürebilir… +component_failed_to_load = Beklenmedik bir hata oluştu. +code_frequency.what = kod frekansı +contributors.what = katkılar +recent_commits.what = son işlemeler [org] org_name_holder=Organizasyon Adı @@ -3346,6 +3381,23 @@ notices.op=İşlem notices.delete_success=Sistem bildirimleri silindi. +self_check = Öz Denetim +config_summary = Özet +config_settings = Ayarlar +dashboard.sync_repo_tags = Etiketleri git verisinden veritabanına eşitle +emails.delete = E-postayı Sil +emails.delete_desc = Bu e-posta adresini silmek istediğinizden emin misiniz? +emails.deletion_success = E-posta adresi silindi. +emails.delete_primary_email_error = Ana e-posta adresini silemezsiniz. +config.cache_test = Önbelleği Sına +config.cache_test_failed = Önbelleğin incelenmesi başarısız oldu: %v. +config.cache_test_slow = Önbellek sınaması başarılı, ancak yanıt yavaş: %s. +config.cache_test_succeeded = Önbellek sınaması başarılı, %s sürede bir yanıt alındı. +config.open_with_editor_app_help = Klon menüsü için "Birlikte aç" düzenleyicileri. Boş bırakılırsa, varsayılan kullanılacaktır. Varsayılanı görmek için genişletin. +self_check.no_problem_found = Henüz bir sorun bulunmadı. +self_check.database_collation_mismatch = Veritabanının şu harmanlamayı kullanmasını bekle: %s +self_check.database_inconsistent_collation_columns = Veritabanı %s harmanlamasını kullanıyor, ancak bu sütunlar uyumsuz harmanlamalar kullanıyor. Bu beklenmedik sorunlar oluşturabilir. + [action] create_repo=depo %s oluşturuldu rename_repo=%[1]s olan depo adını %[3]s buna çevirdi @@ -3586,6 +3638,9 @@ owner.settings.chef.title=Chef Kütüğü owner.settings.chef.keypair=Anahtar çifti üret owner.settings.chef.keypair.description=Chef kütüğünde kimlik doğrulaması için bir anahtar çifti gereklidir. Eğer daha önce bir anahtar çifti ürettiyseniz, yeni bir anahtar çifti üretmek eski anahtar çiftini ıskartaya çıkartacaktır. +npm.dependencies.bundle = Paketlenmiş Bağımlılıklar +rpm.repository.multiple_groups = Bu paket birçok grupta mevcut. + [secrets] secrets=Gizlilikler description=Gizlilikler belirli işlemlere aktarılacaktır, bunun dışında okunamaz. @@ -3693,6 +3748,10 @@ runs.no_workflows.documentation = Gitea İşlem'i hakkında daha fazla bilgi iç variables.id_not_exist = %d kimlikli değişken mevcut değil. runs.no_workflows.quick_start = Gitea İşlem'i nasıl başlatacağınızı bilmiyor musunuz? Hızlı başlangıç rehberine bakabilirsiniz. +runs.no_job_without_needs = İş akışı en azından bağımlılığı olmayan bir görev içermelidir. +runs.no_job = İş akışı en azından bir görev içermelidir +runs.expire_log_message = Günlükler, çok eski oldukları için temizlendiler. + [projects] type-1.display_name=Kişisel Proje type-2.display_name=Depo Projesi @@ -3732,3 +3791,5 @@ keyword_search_unavailable = Anahtar kelime ile arama şu anda kullanıma açık fuzzy_tooltip = Arama terimine yakın olan eşleşmeleri dahil et union_tooltip = Boşlukla ayrılmış anahtar kelime eşleşmelerini dahil et exact_tooltip = Sadece arama terimiyle tam uyuşan sonuçları dahit et. +fuzzy = Bulanık +exact = Tam diff --git a/options/locale/locale_zh-HK.ini b/options/locale/locale_zh-HK.ini index deec042034..e2cb0d8b2c 100644 --- a/options/locale/locale_zh-HK.ini +++ b/options/locale/locale_zh-HK.ini @@ -134,6 +134,8 @@ copy_generic = 複製到剪貼簿 copy_url = 複製網址 copy_hash = 複製雜湊值 +filter.private = 私有庫 + [aria] footer = 頁尾 footer.links = 連結 @@ -791,6 +793,8 @@ settings.branches.update_default_branch = 更新預設分支 +milestones.filter_sort.name = 組織名稱 + [graphs] [org] @@ -1076,6 +1080,8 @@ users = 使用者帳戶 defaulthooks = 預設 Webhook +config_settings = 組織設定 + [action] create_repo=建立了儲存庫 %s rename_repo=重新命名儲存庫 %[1]s%[3]s @@ -1146,4 +1152,6 @@ runners.labels = 標籤 [projects] -[git.filemode] \ No newline at end of file +[git.filemode] + +[search] \ No newline at end of file diff --git a/options/locale/locale_zh-TW.ini b/options/locale/locale_zh-TW.ini index 7cc72ac1db..923769bb53 100644 --- a/options/locale/locale_zh-TW.ini +++ b/options/locale/locale_zh-TW.ini @@ -2842,6 +2842,17 @@ release.summary_card_alt = 儲存庫 %[2]s 中名為「%[1]s」的發行摘要 error.broken_git_hook = 此儲存庫的 Git 鉤子似乎已損壞。請按照文件修復它們,然後推送一些提交以重新整理狀態。 issues.reaction.alt_remove = 從留言中移除 %[1]s 的反應。 +vendored = 已供應 +settings.mirror_settings.docs.doc_link_pull_section = 文件中的「從遠端儲存庫拉取」部分。 +settings.event_pull_request_review_request_desc = 合併請求審核請求或審核請求已移除。 +settings.protect_status_check_patterns_desc = 輸入模式以指定其他分支在合併到受此規則保護的分支前必須通過的狀態檢查。每行指定一個模式,模式不得為空白。 +settings.protect_invalid_status_check_pattern = 狀態檢查模式無效: 「%s」。 +settings.ignore_stale_approvals_desc = 不計算在較舊提交上進行的核可(過時的審核)作為合併請求的核可數量。如果過時的審核已經被捨棄,則無關緊要。 +settings.tags.protection.pattern.description = 您可以使用單一名稱或 glob 模式或正則表達式來匹配多個標籤。詳情請參閱 受保護標籤指南。 +settings.thread_id = 線程 ID +settings.archive.text = 封存儲存庫將使其完全變為唯讀。它將從儀表板中隱藏。沒有人(甚至包括您!)將能夠進行新的提交,或打開任何問題或合併請求。 +diff.comment.add_line_comment = 新增行評論 + [graphs] component_loading = 載入中 %s… code_frequency.what = 寫程式頻率 @@ -3536,6 +3547,9 @@ users.admin.description = 授予此使用者透過網頁介面和 API 提供的 auths.tip.gitea = 註冊一個新的 OAuth2 應用程式。指南可在 %s 找到 +monitor.queue.activeworkers = 活躍工作者 +monitor.queue.settings.desc = 集區會根據工作者佇列的阻塞情況動態增長。 + [action] create_repo=建立了儲存庫 %s rename_repo=重新命名儲存庫 %[1]s%[3]s From 2382b745266089018cc06deae57d7b2739a222a7 Mon Sep 17 00:00:00 2001 From: 0ko <0ko@noreply.codeberg.org> Date: Sun, 16 Feb 2025 12:59:28 +0000 Subject: [PATCH 32/38] feat(ui): add MIME types for generated archives (#6959) * add MIME types `application/zip` and `application/gzip` to anchors of automatically generated archives. * add testing for that, and also for https://codeberg.org/forgejo/forgejo/pulls/2899 ## Why Many instances are struggling with crawlers that are fetching these links, causing archives to be generated. The content is actually never downloaded. [MDN describes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#type) this attribute as a "hint". So this hint can help a client to decide against fetching the href contents. I don't believe this change will actually improve the situation, however, I think this attribute is nice to have. ## MIME types It was a bit difficult to determine which are the right ones for this use case. [IANA lists](https://www.iana.org/assignments/media-types/media-types.xhtml) both `application/zip` and `application/gzip`. `application/zip` refers to [RFC6713](https://datatracker.ietf.org/doc/html/rfc6713) and `application/gzip` doesn't refer to an RFC directly. It also has [detailed information](https://www.iana.org/assignments/media-types/application/zip) about zip. [gzip is less detailed](https://www.iana.org/assignments/media-types/application/gzip). * [`application/zip`](https://www.iana.org/assignments/media-types/application/zip): > ZIP files are binary data and thus should be encoded for MIME mail transmission. This was written in 1993, but probably applies to the more modern web as well. * [`application/gzip`](https://datatracker.ietf.org/doc/rfc6713): > The 'application/gzip' media type describes a block of data that is compressed using gzip [RFC1952] compression. The data is a stream of bytes as described in RFC 1952. [RFC1952](https://datatracker.ietf.org/doc/rfc1952/) is a "GZIP file format specification", but there's a warning: "This RFC is not endorsed by the IETF and has no formal standing in the IETF standards process.". Anyway, I consider it as the right way to mark .tar.gz files too. Additional stuff that I read while researching: * https://stackoverflow.com/questions/2110269/add-mime-type-to-html-link Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6959 Reviewed-by: Earl Warren Reviewed-by: Otto Co-authored-by: 0ko <0ko@noreply.codeberg.org> Co-committed-by: 0ko <0ko@noreply.codeberg.org> --- templates/repo/release/list.tmpl | 4 ++-- tests/e2e/release.test.e2e.ts | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/templates/repo/release/list.tmpl b/templates/repo/release/list.tmpl index a760e0730e..54571f065a 100644 --- a/templates/repo/release/list.tmpl +++ b/templates/repo/release/list.tmpl @@ -72,7 +72,7 @@
    {{if $hasArchiveLinks}}
  • - + {{svg "octicon-file-zip" 16 "tw-mr-1"}}{{ctx.Locale.Tr "repo.release.source_code"}} (ZIP)
    @@ -83,7 +83,7 @@
  • - + {{svg "octicon-file-zip" 16 "tw-mr-1"}}{{ctx.Locale.Tr "repo.release.source_code"}} (TAR.GZ)
    diff --git a/tests/e2e/release.test.e2e.ts b/tests/e2e/release.test.e2e.ts index 6d1fff2102..4d916f717e 100644 --- a/tests/e2e/release.test.e2e.ts +++ b/tests/e2e/release.test.e2e.ts @@ -43,10 +43,17 @@ test('External Release Attachments', async ({page, isMobile}) => { // Validate release page and click edit await expect(page).toHaveURL('/user2/repo2/releases'); await expect(page.locator('.download[open] li')).toHaveCount(3); + await expect(page.locator('.download[open] li:nth-of-type(1)')).toContainText('Source code (ZIP)'); + await expect(page.locator('.download[open] li:nth-of-type(1) span[data-tooltip-content]')).toHaveAttribute('data-tooltip-content', 'This attachment is automatically generated.'); await expect(page.locator('.download[open] li:nth-of-type(1) a')).toHaveAttribute('href', '/user2/repo2/archive/2.0.zip'); + await expect(page.locator('.download[open] li:nth-of-type(1) a')).toHaveAttribute('type', 'application/zip'); + await expect(page.locator('.download[open] li:nth-of-type(2)')).toContainText('Source code (TAR.GZ)'); + await expect(page.locator('.download[open] li:nth-of-type(2) span[data-tooltip-content]')).toHaveAttribute('data-tooltip-content', 'This attachment is automatically generated.'); await expect(page.locator('.download[open] li:nth-of-type(2) a')).toHaveAttribute('href', '/user2/repo2/archive/2.0.tar.gz'); + await expect(page.locator('.download[open] li:nth-of-type(2) a')).toHaveAttribute('type', 'application/gzip'); + await expect(page.locator('.download[open] li:nth-of-type(3)')).toContainText('Test'); await expect(page.locator('.download[open] li:nth-of-type(3) a')).toHaveAttribute('href', 'https://forgejo.org/'); await save_visual(page); From 24784b214f83100106b4579df096258a52a4bb99 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sun, 16 Feb 2025 17:47:57 +0000 Subject: [PATCH 33/38] Revert "Update module github.com/minio/minio-go/v7 to v7.0.86 (forgejo) (#6945)" (#6961) This reverts commit 486acb04fa3bab041fc29e251f4381760028f2a3. Because of https://github.com/minio/crc64nvme/pull/1 The package builds fail https://codeberg.org/forgejo-integration/forgejo/actions/runs/7790#jobstep-10-2350 74.77 /go/pkg/mod/github.com/minio/crc64nvme@v1.0.0/crc64.go:128:9: undefined: updateAsm Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6961 Reviewed-by: Gusted Reviewed-by: Michael Kriese Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- assets/go-licenses.json | 5 ----- go.mod | 5 ++--- go.sum | 10 ++++------ 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/assets/go-licenses.json b/assets/go-licenses.json index 61e1717ffa..2c6bf78ec7 100644 --- a/assets/go-licenses.json +++ b/assets/go-licenses.json @@ -739,11 +739,6 @@ "path": "github.com/miekg/dns/LICENSE", "licenseText": "BSD 3-Clause License\n\nCopyright (c) 2009, The Go Authors. Extensions copyright (c) 2011, Miek Gieben. \nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, - { - "name": "github.com/minio/crc64nvme", - "path": "github.com/minio/crc64nvme/LICENSE", - "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" - }, { "name": "github.com/minio/md5-simd", "path": "github.com/minio/md5-simd/LICENSE", diff --git a/go.mod b/go.mod index bd8130ef81..c0a97b21fd 100644 --- a/go.mod +++ b/go.mod @@ -76,7 +76,7 @@ require ( github.com/meilisearch/meilisearch-go v0.29.0 github.com/mholt/archiver/v3 v3.5.1 github.com/microcosm-cc/bluemonday v1.0.27 - github.com/minio/minio-go/v7 v7.0.86 + github.com/minio/minio-go/v7 v7.0.85 github.com/msteinert/pam v1.2.0 github.com/nektos/act v0.2.52 github.com/niklasfasching/go-org v1.7.0 @@ -193,7 +193,7 @@ require ( github.com/go-openapi/jsonreference v0.20.4 // indirect github.com/go-openapi/swag v0.22.7 // indirect github.com/go-webauthn/x v0.1.14 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/goccy/go-json v0.10.4 // indirect github.com/golang-jwt/jwt/v4 v4.5.0 // indirect github.com/golang/geo v0.0.0-20230421003525-6adc56603217 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect @@ -223,7 +223,6 @@ require ( github.com/mattn/go-runewidth v0.0.16 // indirect github.com/mholt/acmez/v3 v3.0.1 // indirect github.com/miekg/dns v1.1.62 // indirect - github.com/minio/crc64nvme v1.0.0 // indirect github.com/minio/md5-simd v1.1.2 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect diff --git a/go.sum b/go.sum index dc79b6663a..b2d734d636 100644 --- a/go.sum +++ b/go.sum @@ -975,8 +975,8 @@ github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u1 github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= -github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-json v0.10.4 h1:JSwxQzIqKfmFX1swYPpUThQZp/Ka4wzJdK0LWVytLPM= +github.com/goccy/go-json v0.10.4/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f h1:3BSP1Tbs2djlpprl7wCLuiqMaUh5SJkkzI2gDs+FgLs= github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f/go.mod h1:Pcatq5tYkCW2Q6yrR2VRHlbHpZ/R4/7qyL1TCF7vl14= github.com/gogs/go-gogs-client v0.0.0-20210131175652-1d7215cd8d85 h1:UjoPNDAQ5JPCjlxoJd6K8ALZqSDDhk2ymieAZOVaDg0= @@ -1261,12 +1261,10 @@ github.com/miekg/dns v1.1.62 h1:cN8OuEF1/x5Rq6Np+h1epln8OiyPWV+lROx9LxcGgIQ= github.com/miekg/dns v1.1.62/go.mod h1:mvDlcItzm+br7MToIKqkglaGhlFMHJ9DTNNWONWXbNQ= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= -github.com/minio/crc64nvme v1.0.0 h1:MeLcBkCTD4pAoU7TciAfwsfxgkhM2u5hCe48hSEVFr0= -github.com/minio/crc64nvme v1.0.0/go.mod h1:eVfm2fAzLlxMdUGc0EEBGSMmPwmXD5XiNRpnu9J3bvg= github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34= github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM= -github.com/minio/minio-go/v7 v7.0.86 h1:DcgQ0AUjLJzRH6y/HrxiZ8CXarA70PAIufXHodP4s+k= -github.com/minio/minio-go/v7 v7.0.86/go.mod h1:VbfO4hYwUu3Of9WqGLBZ8vl3Hxnxo4ngxK4hzQDf4x4= +github.com/minio/minio-go/v7 v7.0.85 h1:9psTLS/NTvC3MWoyjhjXpwcKoNbkongaCSF3PNpSuXo= +github.com/minio/minio-go/v7 v7.0.85/go.mod h1:57YXpvc5l3rjPdhqNrDsvVlY0qPI6UTk1bflAe+9doY= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= From 37cd4108d6ba99366f6344a1c450db7b31961123 Mon Sep 17 00:00:00 2001 From: Beowulf Date: Sun, 16 Feb 2025 18:17:46 +0000 Subject: [PATCH 34/38] feat(ui): always show restart button for Actions jobs (#6923) Always show the rerun button if the job can be rerun. This PR just removes the handling for hiding the rerun button if the item isn't hovered. Closes #6737 Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6923 Reviewed-by: Gusted Co-authored-by: Beowulf Co-committed-by: Beowulf --- web_src/js/components/RepoActionView.vue | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/web_src/js/components/RepoActionView.vue b/web_src/js/components/RepoActionView.vue index 136ad3693d..a324b522d5 100644 --- a/web_src/js/components/RepoActionView.vue +++ b/web_src/js/components/RepoActionView.vue @@ -30,7 +30,6 @@ const sfc = { intervalID: null, currentJobStepsStates: [], artifacts: [], - onHoverRerunIndex: -1, menuVisible: false, isFullScreen: false, timeVisible: { @@ -457,13 +456,13 @@ export function initRepositoryActionView() {
    - +
    {{ job.name }}
    - + {{ job.duration }}
    From 3d0e9d399cd9737f9ea7c8705e61eded6b26280c Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 17 Feb 2025 07:36:06 +0000 Subject: [PATCH 35/38] Update renovate to v39.171.1 (forgejo) (#6967) Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/workflows/renovate.yml | 2 +- Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.forgejo/workflows/renovate.yml b/.forgejo/workflows/renovate.yml index a9265865d3..4385cafa3f 100644 --- a/.forgejo/workflows/renovate.yml +++ b/.forgejo/workflows/renovate.yml @@ -28,7 +28,7 @@ jobs: runs-on: docker container: - image: data.forgejo.org/renovate/renovate:39.164.1 + image: data.forgejo.org/renovate/renovate:39.171.2 steps: - name: Load renovate repo cache diff --git a/Makefile b/Makefile index 77336a60b9..b689d23c57 100644 --- a/Makefile +++ b/Makefile @@ -49,7 +49,7 @@ GOVULNCHECK_PACKAGE ?= golang.org/x/vuln/cmd/govulncheck@v1 # renovate: datasour DEADCODE_PACKAGE ?= golang.org/x/tools/cmd/deadcode@v0.29.0 # renovate: datasource=go GOMOCK_PACKAGE ?= go.uber.org/mock/mockgen@v0.4.0 # renovate: datasource=go GOPLS_PACKAGE ?= golang.org/x/tools/gopls@v0.17.1 # renovate: datasource=go -RENOVATE_NPM_PACKAGE ?= renovate@39.164.1 # renovate: datasource=docker packageName=data.forgejo.org/renovate/renovate +RENOVATE_NPM_PACKAGE ?= renovate@39.171.2 # renovate: datasource=docker packageName=data.forgejo.org/renovate/renovate # https://github.com/disposable-email-domains/disposable-email-domains/commits/main/ DISPOSABLE_EMAILS_SHA ?= 0c27e671231d27cf66370034d7f6818037416989 # renovate: ... From bc31f0601cf2eb2bb702b44d770550258ab8d78b Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 17 Feb 2025 07:40:38 +0000 Subject: [PATCH 36/38] Lock file maintenance (forgejo) (#6969) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed | 🔧 This Pull Request updates lock files to use the latest dependency versions. --- ### Configuration 📅 **Schedule**: Branch creation - "* 0-3 * * 1" (UTC), Automerge - "* 0-3 * * *" (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6969 Reviewed-by: Earl Warren Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- package-lock.json | 1621 +++++++++++++--------------- poetry.lock | 12 +- web_src/fomantic/package-lock.json | 162 +-- 3 files changed, 826 insertions(+), 969 deletions(-) diff --git a/package-lock.json b/package-lock.json index d4b776d51b..cf540e47e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -144,9 +144,9 @@ } }, "node_modules/@antfu/utils": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-8.1.0.tgz", - "integrity": "sha512-XPR7Jfwp0FFl/dFYPX8ZjpmU4/1mIXTjnZ1ba48BLMyKOV62/tiRjdsFcPs2hsYcSud4tzk7w3a3LjX8Fu3huA==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-8.1.1.tgz", + "integrity": "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" @@ -280,14 +280,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.8.tgz", - "integrity": "sha512-ef383X5++iZHWAXX0SXQR6ZyQhw/0KtTkrTz61WXRhFM6dhpHulO/RJz79L8S6ugZHJkOOkUrUdxgdF2YiPFnA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", + "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.8", - "@babel/types": "^7.26.8", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -337,18 +337,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", - "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.26.9.tgz", + "integrity": "sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-member-expression-to-functions": "^7.25.9", "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-replace-supers": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.25.9", + "@babel/traverse": "^7.26.9", "semver": "^6.3.1" }, "engines": { @@ -576,26 +576,26 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz", - "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz", + "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.7" + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.8.tgz", - "integrity": "sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", "license": "MIT", "dependencies": { - "@babel/types": "^7.26.8" + "@babel/types": "^7.26.9" }, "bin": { "parser": "bin/babel-parser.js" @@ -1114,13 +1114,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", - "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", + "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { @@ -1898,9 +1898,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz", - "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz", + "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==", "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" @@ -1910,32 +1910,32 @@ } }, "node_modules/@babel/template": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.8.tgz", - "integrity": "sha512-iNKaX3ZebKIsCvJ+0jd6embf+Aulaa3vNBqZ41kM7iTWjx5qzWKXGHiJUW3+nTpQ18SG11hdF8OAzKrpXkb96Q==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.8", - "@babel/types": "^7.26.8" + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.8.tgz", - "integrity": "sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", + "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.8", - "@babel/parser": "^7.26.8", - "@babel/template": "^7.26.8", - "@babel/types": "^7.26.8", + "@babel/generator": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1954,9 +1954,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.8.tgz", - "integrity": "sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -2239,292 +2239,275 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", "cpu": [ "mips64el" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/netbsd-arm64": { @@ -2544,20 +2527,19 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/openbsd-arm64": { @@ -2577,88 +2559,83 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-plugin-eslint-comments": { @@ -3490,9 +3467,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.6.tgz", - "integrity": "sha512-+GcCXtOQoWuC7hhX1P00LqjjIiS/iOouHXhMdiDSnq/1DGTox4SpUvO52Xm+div6+106r+TcvOeo/cxvyEyTgg==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.7.tgz", + "integrity": "sha512-l6CtzHYo8D2TQ3J7qJNpp3Q1Iye56ssIAtqbM2H8axxCEEwvN7o8Ze9PuIapbxFL3OHrJU2JBX6FIIVnP/rYyw==", "cpu": [ "arm" ], @@ -3504,9 +3481,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.6.tgz", - "integrity": "sha512-E8+2qCIjciYUnCa1AiVF1BkRgqIGW9KzJeesQqVfyRITGQN+dFuoivO0hnro1DjT74wXLRZ7QF8MIbz+luGaJA==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.7.tgz", + "integrity": "sha512-KvyJpFUueUnSp53zhAa293QBYqwm94TgYTIfXyOTtidhm5V0LbLCJQRGkQClYiX3FXDQGSvPxOTD/6rPStMMDg==", "cpu": [ "arm64" ], @@ -3518,9 +3495,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.6.tgz", - "integrity": "sha512-z9Ib+OzqN3DZEjX7PDQMHEhtF+t6Mi2z/ueChQPLS/qUMKY7Ybn5A2ggFoKRNRh1q1T03YTQfBTQCJZiepESAg==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.7.tgz", + "integrity": "sha512-jq87CjmgL9YIKvs8ybtIC98s/M3HdbqXhllcy9EdLV0yMg1DpxES2gr65nNy7ObNo/vZ/MrOTxt0bE5LinL6mA==", "cpu": [ "arm64" ], @@ -3532,9 +3509,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.6.tgz", - "integrity": "sha512-PShKVY4u0FDAR7jskyFIYVyHEPCPnIQY8s5OcXkdU8mz3Y7eXDJPdyM/ZWjkYdR2m0izD9HHWA8sGcXn+Qrsyg==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.7.tgz", + "integrity": "sha512-rSI/m8OxBjsdnMMg0WEetu/w+LhLAcCDEiL66lmMX4R3oaml3eXz3Dxfvrxs1FbzPbJMaItQiksyMfv1hoIxnA==", "cpu": [ "x64" ], @@ -3546,9 +3523,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.6.tgz", - "integrity": "sha512-YSwyOqlDAdKqs0iKuqvRHLN4SrD2TiswfoLfvYXseKbL47ht1grQpq46MSiQAx6rQEN8o8URtpXARCpqabqxGQ==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.7.tgz", + "integrity": "sha512-oIoJRy3ZrdsXpFuWDtzsOOa/E/RbRWXVokpVrNnkS7npz8GEG++E1gYbzhYxhxHbO2om1T26BZjVmdIoyN2WtA==", "cpu": [ "arm64" ], @@ -3560,9 +3537,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.6.tgz", - "integrity": "sha512-HEP4CgPAY1RxXwwL5sPFv6BBM3tVeLnshF03HMhJYCNc6kvSqBgTMmsEjb72RkZBAWIqiPUyF1JpEBv5XT9wKQ==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.7.tgz", + "integrity": "sha512-X++QSLm4NZfZ3VXGVwyHdRf58IBbCu9ammgJxuWZYLX0du6kZvdNqPwrjvDfwmi6wFdvfZ/s6K7ia0E5kI7m8Q==", "cpu": [ "x64" ], @@ -3574,9 +3551,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.6.tgz", - "integrity": "sha512-88fSzjC5xeH9S2Vg3rPgXJULkHcLYMkh8faix8DX4h4TIAL65ekwuQMA/g2CXq8W+NJC43V6fUpYZNjaX3+IIg==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.7.tgz", + "integrity": "sha512-Z0TzhrsNqukTz3ISzrvyshQpFnFRfLunYiXxlCRvcrb3nvC5rVKI+ZXPFG/Aa4jhQa1gHgH3A0exHaRRN4VmdQ==", "cpu": [ "arm" ], @@ -3588,9 +3565,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.6.tgz", - "integrity": "sha512-wM4ztnutBqYFyvNeR7Av+reWI/enK9tDOTKNF+6Kk2Q96k9bwhDDOlnCUNRPvromlVXo04riSliMBs/Z7RteEg==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.7.tgz", + "integrity": "sha512-nkznpyXekFAbvFBKBy4nNppSgneB1wwG1yx/hujN3wRnhnkrYVugMTCBXED4+Ni6thoWfQuHNYbFjgGH0MBXtw==", "cpu": [ "arm" ], @@ -3602,9 +3579,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.6.tgz", - "integrity": "sha512-9RyprECbRa9zEjXLtvvshhw4CMrRa3K+0wcp3KME0zmBe1ILmvcVHnypZ/aIDXpRyfhSYSuN4EPdCCj5Du8FIA==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.7.tgz", + "integrity": "sha512-KCjlUkcKs6PjOcxolqrXglBDcfCuUCTVlX5BgzgoJHw+1rWH1MCkETLkLe5iLLS9dP5gKC7mp3y6x8c1oGBUtA==", "cpu": [ "arm64" ], @@ -3616,9 +3593,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.6.tgz", - "integrity": "sha512-qTmklhCTyaJSB05S+iSovfo++EwnIEZxHkzv5dep4qoszUMX5Ca4WM4zAVUMbfdviLgCSQOu5oU8YoGk1s6M9Q==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.7.tgz", + "integrity": "sha512-uFLJFz6+utmpbR313TTx+NpPuAXbPz4BhTQzgaP0tozlLnGnQ6rCo6tLwaSa6b7l6gRErjLicXQ1iPiXzYotjw==", "cpu": [ "arm64" ], @@ -3630,9 +3607,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.6.tgz", - "integrity": "sha512-4Qmkaps9yqmpjY5pvpkfOerYgKNUGzQpFxV6rnS7c/JfYbDSU0y6WpbbredB5cCpLFGJEqYX40WUmxMkwhWCjw==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.7.tgz", + "integrity": "sha512-ws8pc68UcJJqCpneDFepnwlsMUFoWvPbWXT/XUrJ7rWUL9vLoIN3GAasgG+nCvq8xrE3pIrd+qLX/jotcLy0Qw==", "cpu": [ "loong64" ], @@ -3644,9 +3621,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.6.tgz", - "integrity": "sha512-Zsrtux3PuaxuBTX/zHdLaFmcofWGzaWW1scwLU3ZbW/X+hSsFbz9wDIp6XvnT7pzYRl9MezWqEqKy7ssmDEnuQ==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.7.tgz", + "integrity": "sha512-vrDk9JDa/BFkxcS2PbWpr0C/LiiSLxFbNOBgfbW6P8TBe9PPHx9Wqbvx2xgNi1TOAyQHQJ7RZFqBiEohm79r0w==", "cpu": [ "ppc64" ], @@ -3658,9 +3635,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.6.tgz", - "integrity": "sha512-aK+Zp+CRM55iPrlyKiU3/zyhgzWBxLVrw2mwiQSYJRobCURb781+XstzvA8Gkjg/hbdQFuDw44aUOxVQFycrAg==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.7.tgz", + "integrity": "sha512-rB+ejFyjtmSo+g/a4eovDD1lHWHVqizN8P0Hm0RElkINpS0XOdpaXloqM4FBkF9ZWEzg6bezymbpLmeMldfLTw==", "cpu": [ "riscv64" ], @@ -3672,9 +3649,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.6.tgz", - "integrity": "sha512-WoKLVrY9ogmaYPXwTH326+ErlCIgMmsoRSx6bO+l68YgJnlOXhygDYSZe/qbUJCSiCiZAQ+tKm88NcWuUXqOzw==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.7.tgz", + "integrity": "sha512-nNXNjo4As6dNqRn7OrsnHzwTgtypfRA3u3AKr0B3sOOo+HkedIbn8ZtFnB+4XyKJojIfqDKmbIzO1QydQ8c+Pw==", "cpu": [ "s390x" ], @@ -3686,9 +3663,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.6.tgz", - "integrity": "sha512-Sht4aFvmA4ToHd2vFzwMFaQCiYm2lDFho5rPcvPBT5pCdC+GwHG6CMch4GQfmWTQ1SwRKS0dhDYb54khSrjDWw==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.7.tgz", + "integrity": "sha512-9kPVf9ahnpOMSGlCxXGv980wXD0zRR3wyk8+33/MXQIpQEOpaNe7dEHm5LMfyRZRNt9lMEQuH0jUKj15MkM7QA==", "cpu": [ "x64" ], @@ -3700,9 +3677,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.6.tgz", - "integrity": "sha512-zmmpOQh8vXc2QITsnCiODCDGXFC8LMi64+/oPpPx5qz3pqv0s6x46ps4xoycfUiVZps5PFn1gksZzo4RGTKT+A==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.7.tgz", + "integrity": "sha512-7wJPXRWTTPtTFDFezA8sle/1sdgxDjuMoRXEKtx97ViRxGGkVQYovem+Q8Pr/2HxiHp74SSRG+o6R0Yq0shPwQ==", "cpu": [ "x64" ], @@ -3714,9 +3691,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.6.tgz", - "integrity": "sha512-3/q1qUsO/tLqGBaD4uXsB6coVGB3usxw3qyeVb59aArCgedSF66MPdgRStUd7vbZOsko/CgVaY5fo2vkvPLWiA==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.7.tgz", + "integrity": "sha512-MN7aaBC7mAjsiMEZcsJvwNsQVNZShgES/9SzWp1HC9Yjqb5OpexYnRjF7RmE4itbeesHMYYQiAtUAQaSKs2Rfw==", "cpu": [ "arm64" ], @@ -3728,9 +3705,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.6.tgz", - "integrity": "sha512-oLHxuyywc6efdKVTxvc0135zPrRdtYVjtVD5GUm55I3ODxhU/PwkQFD97z16Xzxa1Fz0AEe4W/2hzRtd+IfpOA==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.7.tgz", + "integrity": "sha512-aeawEKYswsFu1LhDM9RIgToobquzdtSc4jSVqHV8uApz4FVvhFl/mKh92wc8WpFc6aYCothV/03UjY6y7yLgbg==", "cpu": [ "ia32" ], @@ -3742,9 +3719,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.6.tgz", - "integrity": "sha512-0PVwmgzZ8+TZ9oGBmdZoQVXflbvuwzN/HRclujpl4N/q3i+y0lqLw8n1bXA8ru3sApDjlmONaNAuYr38y1Kr9w==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.7.tgz", + "integrity": "sha512-4ZedScpxxIrVO7otcZ8kCX1mZArtH2Wfj3uFCxRJ9NO80gg1XV0U/b2f/MKaGwj2X3QopHfoWiDQ917FRpwY3w==", "cpu": [ "x64" ], @@ -4690,9 +4667,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.13.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.1.tgz", - "integrity": "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==", + "version": "22.13.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz", + "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", "license": "MIT", "dependencies": { "undici-types": "~6.20.0" @@ -6127,9 +6104,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6176,9 +6153,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001699", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001699.tgz", - "integrity": "sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==", + "version": "1.0.30001700", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", + "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", "funding": [ { "type": "opencollective", @@ -6196,9 +6173,9 @@ "license": "CC-BY-4.0" }, "node_modules/chai": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", - "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", "dev": true, "license": "MIT", "dependencies": { @@ -7714,9 +7691,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.96", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.96.tgz", - "integrity": "sha512-8AJUW6dh75Fm/ny8+kZKJzI1pgoE8bKLZlzDU2W1ENd+DXKJrx7I7l9hb8UWR4ojlnb5OlixMt00QWiYJoVw1w==", + "version": "1.5.101", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.101.tgz", + "integrity": "sha512-L0ISiQrP/56Acgu4/i/kfPwWSgrzYZUnQrC0+QPFuhqlLP1Ir7qzPPDVS9BcKIyWTRU8+o6CC8dKw38tSWhYIA==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -7934,13 +7911,16 @@ } }, "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-to-primitive": { @@ -7962,431 +7942,6 @@ } }, "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" - } - }, - "node_modules/esbuild-loader": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-4.3.0.tgz", - "integrity": "sha512-D7HeJNdkDKKMarPQO/3dlJT6RwN2YJO7ENU6RPlpOz5YxSHnUNi2yvW41Bckvi1EVwctIaLzlb0ni5ag2GINYA==", - "license": "MIT", - "dependencies": { - "esbuild": "^0.25.0", - "get-tsconfig": "^4.7.0", - "loader-utils": "^2.0.4", - "webpack-sources": "^1.4.3" - }, - "funding": { - "url": "https://github.com/privatenumber/esbuild-loader?sponsor=1" - }, - "peerDependencies": { - "webpack": "^4.40.0 || ^5.0.0" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", - "cpu": [ - "mips64el" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild-loader/node_modules/esbuild": { "version": "0.25.0", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", @@ -8426,6 +7981,24 @@ "@esbuild/win32-x64": "0.25.0" } }, + "node_modules/esbuild-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-4.3.0.tgz", + "integrity": "sha512-D7HeJNdkDKKMarPQO/3dlJT6RwN2YJO7ENU6RPlpOz5YxSHnUNi2yvW41Bckvi1EVwctIaLzlb0ni5ag2GINYA==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "get-tsconfig": "^4.7.0", + "loader-utils": "^2.0.4", + "webpack-sources": "^1.4.3" + }, + "funding": { + "url": "https://github.com/privatenumber/esbuild-loader?sponsor=1" + }, + "peerDependencies": { + "webpack": "^4.40.0 || ^5.0.0" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -9300,9 +8873,9 @@ "license": "ISC" }, "node_modules/for-each": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.4.tgz", - "integrity": "sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, "license": "MIT", "dependencies": { @@ -10756,19 +10329,18 @@ } }, "node_modules/jackspeak": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz", - "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==", - "dev": true, + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": "20 || >=22" - }, "funding": { "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/jest-worker": { @@ -10816,15 +10388,15 @@ "license": "MIT" }, "node_modules/js-beautify": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.2.tgz", - "integrity": "sha512-mcG6CHJxxih+EFAbd5NEBwrosIs6MoJmiNLFYN6kj5SeJMf7n29Ii/H4lt6zGTvmdB9AApuj5cs4zydjuLeqjw==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.3.tgz", + "integrity": "sha512-rKKGuyTxGNlyN4EQKWzNndzXpi0bOl8Gl8YQAW1as/oMz0XhD6sHJO1hTvoBDOSzKuJb9WkwoAb34FfdkKMv2A==", "dev": true, "license": "MIT", "dependencies": { "config-chain": "^1.1.13", "editorconfig": "^1.0.4", - "glob": "^11.0.0", + "glob": "^10.4.2", "js-cookie": "^3.0.5", "nopt": "^8.0.0" }, @@ -10838,24 +10410,37 @@ } }, "node_modules/js-beautify/node_modules/glob": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", - "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^4.0.1", - "minimatch": "^10.0.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": "20 || >=22" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -11533,22 +11118,6 @@ "node": ">= 4" } }, - "node_modules/markdownlint-cli/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "node_modules/markdownlint-cli/node_modules/jsonc-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", @@ -11556,13 +11125,6 @@ "dev": true, "license": "MIT" }, - "node_modules/markdownlint-cli/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, "node_modules/markdownlint-cli/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -11579,23 +11141,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/markdownlint-cli/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/marked": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", @@ -12860,31 +12405,26 @@ "license": "MIT" }, "node_modules/path-scurry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", - "dev": true, + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": "20 || >=22" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", - "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "20 || >=22" - } + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" }, "node_modules/path-type": { "version": "4.0.0", @@ -12897,9 +12437,9 @@ } }, "node_modules/pathe": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz", - "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "license": "MIT" }, "node_modules/pathval": { @@ -13712,22 +13252,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/read-package-json/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", @@ -13738,13 +13262,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/read-package-json/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, "node_modules/read-package-json/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -13761,23 +13278,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/read-package-json/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -15359,27 +14859,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/sucrase/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/sucrase/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, "node_modules/sucrase/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -15395,22 +14874,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/sucrase/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -15598,9 +15061,9 @@ } }, "node_modules/terser": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.38.1.tgz", - "integrity": "sha512-GWANVlPM/ZfYzuPHjq0nxT+EbOEDDN3Jwhwdg1D8TU8oSkktp8w64Uq4auuGLxFSoNTRDncTq2hQHX1Ld9KHkA==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -15691,29 +15154,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/test-exclude/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/test-exclude/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, "node_modules/test-exclude/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -15730,23 +15170,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/test-exclude/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -16352,6 +15775,397 @@ "dev": true, "license": "BSD-2-Clause" }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/vite/node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -16359,6 +16173,45 @@ "dev": true, "license": "MIT" }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, "node_modules/vite/node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -16375,9 +16228,9 @@ } }, "node_modules/vite/node_modules/rollup": { - "version": "4.34.6", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.6.tgz", - "integrity": "sha512-wc2cBWqJgkU3Iz5oztRkQbfVkbxoz5EhnCGOrnJvnLnQ7O0WhQUYyv18qQI79O8L7DdHrrlJNeCHd4VGpnaXKQ==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.7.tgz", + "integrity": "sha512-8qhyN0oZ4x0H6wmBgfKxJtxM7qS98YJ0k0kNh5ECVtuchIJ7z9IVVvzpmtQyT10PXKMtBxYr1wQ5Apg8RS8kXQ==", "dev": true, "license": "MIT", "dependencies": { @@ -16391,25 +16244,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.34.6", - "@rollup/rollup-android-arm64": "4.34.6", - "@rollup/rollup-darwin-arm64": "4.34.6", - "@rollup/rollup-darwin-x64": "4.34.6", - "@rollup/rollup-freebsd-arm64": "4.34.6", - "@rollup/rollup-freebsd-x64": "4.34.6", - "@rollup/rollup-linux-arm-gnueabihf": "4.34.6", - "@rollup/rollup-linux-arm-musleabihf": "4.34.6", - "@rollup/rollup-linux-arm64-gnu": "4.34.6", - "@rollup/rollup-linux-arm64-musl": "4.34.6", - "@rollup/rollup-linux-loongarch64-gnu": "4.34.6", - "@rollup/rollup-linux-powerpc64le-gnu": "4.34.6", - "@rollup/rollup-linux-riscv64-gnu": "4.34.6", - "@rollup/rollup-linux-s390x-gnu": "4.34.6", - "@rollup/rollup-linux-x64-gnu": "4.34.6", - "@rollup/rollup-linux-x64-musl": "4.34.6", - "@rollup/rollup-win32-arm64-msvc": "4.34.6", - "@rollup/rollup-win32-ia32-msvc": "4.34.6", - "@rollup/rollup-win32-x64-msvc": "4.34.6", + "@rollup/rollup-android-arm-eabi": "4.34.7", + "@rollup/rollup-android-arm64": "4.34.7", + "@rollup/rollup-darwin-arm64": "4.34.7", + "@rollup/rollup-darwin-x64": "4.34.7", + "@rollup/rollup-freebsd-arm64": "4.34.7", + "@rollup/rollup-freebsd-x64": "4.34.7", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.7", + "@rollup/rollup-linux-arm-musleabihf": "4.34.7", + "@rollup/rollup-linux-arm64-gnu": "4.34.7", + "@rollup/rollup-linux-arm64-musl": "4.34.7", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.7", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.7", + "@rollup/rollup-linux-riscv64-gnu": "4.34.7", + "@rollup/rollup-linux-s390x-gnu": "4.34.7", + "@rollup/rollup-linux-x64-gnu": "4.34.7", + "@rollup/rollup-linux-x64-musl": "4.34.7", + "@rollup/rollup-win32-arm64-msvc": "4.34.7", + "@rollup/rollup-win32-ia32-msvc": "4.34.7", + "@rollup/rollup-win32-x64-msvc": "4.34.7", "fsevents": "~2.3.2" } }, @@ -16574,9 +16427,9 @@ } }, "node_modules/vue-component-type-helpers": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.2.0.tgz", - "integrity": "sha512-cYrAnv2me7bPDcg9kIcGwjJiSB6Qyi08+jLDo9yuvoFQjzHiPTzML7RnkJB1+3P6KMsX/KbCD4QE3Tv/knEllw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.2.2.tgz", + "integrity": "sha512-6lLY+n2xz2kCYshl59mL6gy8OUUTmkscmDFMO8i7Lj+QKwgnIFUZmM1i/iTYObtrczZVdw7UakPqDTGwVSGaRg==", "dev": true, "license": "MIT" }, diff --git a/poetry.lock b/poetry.lock index a544dbfd17..72118b2a01 100644 --- a/poetry.lock +++ b/poetry.lock @@ -44,13 +44,13 @@ files = [ [[package]] name = "cssbeautifier" -version = "1.15.2" +version = "1.15.3" description = "CSS unobfuscator and beautifier." optional = false python-versions = "*" files = [ - {file = "cssbeautifier-1.15.2-py3-none-any.whl", hash = "sha256:6daf7f6012ff2914092d675793a5a7f602ca36a10159d0cf5c119183004306e0"}, - {file = "cssbeautifier-1.15.2.tar.gz", hash = "sha256:02d42ffa6aefaa87f18452b437dbb73f6b98f42e9a84759810dc58f7a6bfc26c"}, + {file = "cssbeautifier-1.15.3-py3-none-any.whl", hash = "sha256:0dcaf5ce197743a79b3a160b84ea58fcbd9e3e767c96df1171e428125b16d410"}, + {file = "cssbeautifier-1.15.3.tar.gz", hash = "sha256:406b04d09e7d62c0be084fbfa2cba5126fe37359ea0d8d9f7b963a6354fc8303"}, ] [package.dependencies] @@ -115,13 +115,13 @@ files = [ [[package]] name = "jsbeautifier" -version = "1.15.2" +version = "1.15.3" description = "JavaScript unobfuscator and beautifier." optional = false python-versions = "*" files = [ - {file = "jsbeautifier-1.15.2-py3-none-any.whl", hash = "sha256:d599aed6dcb0d5431190e5ad7335900d5fdc67236082fe6b6d3fb61d568d7417"}, - {file = "jsbeautifier-1.15.2.tar.gz", hash = "sha256:6aff11af2c6cb9a2ce135f33a5b223cf5ee676ab7ff5da0edac01e23734f5755"}, + {file = "jsbeautifier-1.15.3-py3-none-any.whl", hash = "sha256:b207a15ab7529eee4a35ae7790e9ec4e32a2b5026d51e2d0386c3a65e6ecfc91"}, + {file = "jsbeautifier-1.15.3.tar.gz", hash = "sha256:5f1baf3d4ca6a615bb5417ee861b34b77609eeb12875555f8bbfabd9bf2f3457"}, ] [package.dependencies] diff --git a/web_src/fomantic/package-lock.json b/web_src/fomantic/package-lock.json index 30c3b7289d..1f39fad1c0 100644 --- a/web_src/fomantic/package-lock.json +++ b/web_src/fomantic/package-lock.json @@ -132,16 +132,16 @@ } }, "node_modules/@octokit/core": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.3.tgz", - "integrity": "sha512-z+j7DixNnfpdToYsOutStDgeRzJSMnbj8T1C/oQjB6Aa+kRfNjs/Fn7W6c8bmlt6mfy3FkgeKBRnDjxQow5dow==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.4.tgz", + "integrity": "sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg==", "license": "MIT", "peer": true, "dependencies": { "@octokit/auth-token": "^5.0.0", "@octokit/graphql": "^8.1.2", - "@octokit/request": "^9.1.4", - "@octokit/request-error": "^6.1.6", + "@octokit/request": "^9.2.1", + "@octokit/request-error": "^6.1.7", "@octokit/types": "^13.6.2", "before-after-hook": "^3.0.2", "universal-user-agent": "^7.0.0" @@ -161,9 +161,9 @@ } }, "node_modules/@octokit/core/node_modules/@octokit/endpoint": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.2.tgz", - "integrity": "sha512-XybpFv9Ms4hX5OCHMZqyODYqGTZ3H6K6Vva+M9LR7ib/xr1y1ZnlChYv9H680y77Vd/i/k+thXApeRASBQkzhA==", + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz", + "integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==", "license": "MIT", "peer": true, "dependencies": { @@ -182,14 +182,14 @@ "peer": true }, "node_modules/@octokit/core/node_modules/@octokit/request": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.0.tgz", - "integrity": "sha512-kXLfcxhC4ozCnAXy2ff+cSxpcF0A1UqxjvYMqNuPIeOAzJbVWQ+dy5G2fTylofB/gTbObT8O6JORab+5XtA1Kw==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz", + "integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==", "license": "MIT", "peer": true, "dependencies": { - "@octokit/endpoint": "^10.0.0", - "@octokit/request-error": "^6.0.1", + "@octokit/endpoint": "^10.1.3", + "@octokit/request-error": "^6.1.7", "@octokit/types": "^13.6.2", "fast-content-type-parse": "^2.0.0", "universal-user-agent": "^7.0.2" @@ -199,9 +199,9 @@ } }, "node_modules/@octokit/core/node_modules/@octokit/request-error": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.6.tgz", - "integrity": "sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==", + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz", + "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==", "license": "MIT", "peer": true, "dependencies": { @@ -253,13 +253,13 @@ "license": "ISC" }, "node_modules/@octokit/graphql": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.0.tgz", - "integrity": "sha512-gejfDywEml/45SqbWTWrhfwvLBrcGYhOn50sPOjIeVvH6i7D16/9xcFA8dAJNp2HMcd+g4vru41g4E2RBiZvfQ==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.1.tgz", + "integrity": "sha512-n57hXtOoHrhwTWdvhVkdJHdhTv0JstjDbDRhJfwIRNfFqmSo1DaK/mD2syoNUoLCyqSjBpGAKOG0BuwF392slw==", "license": "MIT", "peer": true, "dependencies": { - "@octokit/request": "^9.1.4", + "@octokit/request": "^9.2.2", "@octokit/types": "^13.8.0", "universal-user-agent": "^7.0.0" }, @@ -268,9 +268,9 @@ } }, "node_modules/@octokit/graphql/node_modules/@octokit/endpoint": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.2.tgz", - "integrity": "sha512-XybpFv9Ms4hX5OCHMZqyODYqGTZ3H6K6Vva+M9LR7ib/xr1y1ZnlChYv9H680y77Vd/i/k+thXApeRASBQkzhA==", + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz", + "integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==", "license": "MIT", "peer": true, "dependencies": { @@ -289,14 +289,14 @@ "peer": true }, "node_modules/@octokit/graphql/node_modules/@octokit/request": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.0.tgz", - "integrity": "sha512-kXLfcxhC4ozCnAXy2ff+cSxpcF0A1UqxjvYMqNuPIeOAzJbVWQ+dy5G2fTylofB/gTbObT8O6JORab+5XtA1Kw==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz", + "integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==", "license": "MIT", "peer": true, "dependencies": { - "@octokit/endpoint": "^10.0.0", - "@octokit/request-error": "^6.0.1", + "@octokit/endpoint": "^10.1.3", + "@octokit/request-error": "^6.1.7", "@octokit/types": "^13.6.2", "fast-content-type-parse": "^2.0.0", "universal-user-agent": "^7.0.2" @@ -306,9 +306,9 @@ } }, "node_modules/@octokit/graphql/node_modules/@octokit/request-error": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.6.tgz", - "integrity": "sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==", + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz", + "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==", "license": "MIT", "peer": true, "dependencies": { @@ -477,6 +477,16 @@ "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", "license": "MIT" }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@types/expect": { "version": "1.20.4", "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", @@ -484,9 +494,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.13.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.1.tgz", - "integrity": "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==", + "version": "22.13.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz", + "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", "license": "MIT", "dependencies": { "undici-types": "~6.20.0" @@ -1201,9 +1211,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -1239,9 +1249,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001699", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001699.tgz", - "integrity": "sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==", + "version": "1.0.30001700", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", + "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", "funding": [ { "type": "opencollective", @@ -1995,9 +2005,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.96", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.96.tgz", - "integrity": "sha512-8AJUW6dh75Fm/ny8+kZKJzI1pgoE8bKLZlzDU2W1ENd+DXKJrx7I7l9hb8UWR4ojlnb5OlixMt00QWiYJoVw1w==", + "version": "1.5.101", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.101.tgz", + "integrity": "sha512-L0ISiQrP/56Acgu4/i/kfPwWSgrzYZUnQrC0+QPFuhqlLP1Ir7qzPPDVS9BcKIyWTRU8+o6CC8dKw38tSWhYIA==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -4967,18 +4977,18 @@ } }, "node_modules/jackspeak": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz", - "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": "20 || >=22" - }, "funding": { "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/jquery": { @@ -4988,14 +4998,14 @@ "license": "MIT" }, "node_modules/js-beautify": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.2.tgz", - "integrity": "sha512-mcG6CHJxxih+EFAbd5NEBwrosIs6MoJmiNLFYN6kj5SeJMf7n29Ii/H4lt6zGTvmdB9AApuj5cs4zydjuLeqjw==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.3.tgz", + "integrity": "sha512-rKKGuyTxGNlyN4EQKWzNndzXpi0bOl8Gl8YQAW1as/oMz0XhD6sHJO1hTvoBDOSzKuJb9WkwoAb34FfdkKMv2A==", "license": "MIT", "dependencies": { "config-chain": "^1.1.13", "editorconfig": "^1.0.4", - "glob": "^11.0.0", + "glob": "^10.4.2", "js-cookie": "^3.0.5", "nopt": "^8.0.0" }, @@ -5018,38 +5028,35 @@ } }, "node_modules/js-beautify/node_modules/glob": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", - "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^4.0.1", - "minimatch": "^10.0.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": "20 || >=22" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/js-beautify/node_modules/minimatch": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", - "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": "20 || >=22" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -5481,13 +5488,10 @@ } }, "node_modules/lru-cache": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", - "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", - "license": "ISC", - "engines": { - "node": "20 || >=22" - } + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" }, "node_modules/macos-release": { "version": "2.5.1", @@ -6467,16 +6471,16 @@ } }, "node_modules/path-scurry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": "20 || >=22" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" From 1a77edcecbbe14163805f0f11a2f3a792afbd399 Mon Sep 17 00:00:00 2001 From: Dmitrii Sharshakov Date: Mon, 17 Feb 2025 10:19:42 +0000 Subject: [PATCH 37/38] chore: add a make option to disable stripping binaries for debug builds (#6965) Stripped binaries without symbols cannot be debugged and some developers might want to use a debugger. Make it configurable by STRIP make parameter. Signed-off-by: Dmitrii Sharshakov Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6965 Reviewed-by: Gusted Co-authored-by: Dmitrii Sharshakov Co-committed-by: Dmitrii Sharshakov --- Makefile | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index b689d23c57..75369dce35 100644 --- a/Makefile +++ b/Makefile @@ -127,6 +127,11 @@ FORGEJO_VERSION_API ?= ${FORGEJO_VERSION} show-version-api: @echo ${FORGEJO_VERSION_API} +# Strip binaries by default to reduce size, allow overriding for debugging +STRIP ?= 1 +ifeq ($(STRIP),1) + LDFLAGS := $(LDFLAGS) -s -w +endif LDFLAGS := $(LDFLAGS) -X "main.ReleaseVersion=$(RELEASE_VERSION)" -X "main.MakeVersion=$(MAKE_VERSION)" -X "main.Version=$(FORGEJO_VERSION)" -X "main.Tags=$(TAGS)" -X "main.ForgejoVersion=$(FORGEJO_VERSION_API)" LINUX_ARCHS ?= linux/amd64,linux/386,linux/arm-5,linux/arm-6,linux/arm64 @@ -827,7 +832,7 @@ check: test .PHONY: install $(TAGS_PREREQ) install: $(wildcard *.go) - CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) install -v -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' + CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) install -v -tags '$(TAGS)' -ldflags '$(LDFLAGS)' .PHONY: build build: frontend backend @@ -855,13 +860,13 @@ merge-locales: @echo "NOT NEEDED: THIS IS A NOOP AS OF Forgejo 7.0 BUT KEPT FOR BACKWARD COMPATIBILITY" $(EXECUTABLE): $(GO_SOURCES) $(TAGS_PREREQ) - CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' -o $@ + CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '$(LDFLAGS)' -o $@ forgejo: $(EXECUTABLE) ln -f $(EXECUTABLE) forgejo static-executable: $(GO_SOURCES) $(TAGS_PREREQ) - CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags 'netgo osusergo $(TAGS)' -ldflags '-s -w -linkmode external -extldflags "-static" $(LDFLAGS)' -o $(EXECUTABLE) + CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags 'netgo osusergo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -o $(EXECUTABLE) .PHONY: release release: frontend generate release-linux release-copy release-compress vendor release-sources release-check From 06556abb6d07c379dab4958e62f08bedff4f1d6d Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 17 Feb 2025 11:09:33 +0000 Subject: [PATCH 38/38] fix: delay deleting authorization token (#6937) - 1ce33aa38d1d258d14523ff2c7c2dbf339f22b74 extended the LTA table with a purpose column so it could be extended to other tokens. However some are single-use tokens and should be deleted after use. - This did not result in a good UX for activating user as they needed to also fill in their passwords and in the case that the password was incorrect the token would no longer be usable. - This patch modifies the code to allow for a little delay before deleting authorization tokens to do additional verification such as the password check. This cannot be done before the authorization token check as that the authorization token determines who the user is. - Resolves forgejo/forgejo#6912 - Adjusted existing unit test. Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6937 Reviewed-by: Otto Co-authored-by: Gusted Co-committed-by: Gusted --- models/user/user.go | 26 ++++++++++++-------------- models/user/user_test.go | 7 ++++--- routers/web/auth/auth.go | 23 +++++++++++++++++++---- routers/web/auth/password.go | 9 ++++++++- tests/integration/user_test.go | 24 ++++++++++++++++++++---- 5 files changed, 63 insertions(+), 26 deletions(-) diff --git a/models/user/user.go b/models/user/user.go index 846190a648..37dd69f42d 100644 --- a/models/user/user.go +++ b/models/user/user.go @@ -865,48 +865,46 @@ func countUsers(ctx context.Context, opts *CountUserFilter) int64 { // VerifyUserActiveCode verifies that the code is valid for the given purpose for this user. // If delete is specified, the token will be deleted. -func VerifyUserAuthorizationToken(ctx context.Context, code string, purpose auth.AuthorizationPurpose, delete bool) (*User, error) { +func VerifyUserAuthorizationToken(ctx context.Context, code string, purpose auth.AuthorizationPurpose) (user *User, deleteToken func() error, err error) { lookupKey, validator, found := strings.Cut(code, ":") if !found { - return nil, nil + return nil, nil, nil } authToken, err := auth.FindAuthToken(ctx, lookupKey, purpose) if err != nil { if errors.Is(err, util.ErrNotExist) { - return nil, nil + return nil, nil, nil } - return nil, err + return nil, nil, err } if authToken.IsExpired() { - return nil, auth.DeleteAuthToken(ctx, authToken) + return nil, nil, auth.DeleteAuthToken(ctx, authToken) } rawValidator, err := hex.DecodeString(validator) if err != nil { - return nil, err + return nil, nil, err } if subtle.ConstantTimeCompare([]byte(authToken.HashedValidator), []byte(auth.HashValidator(rawValidator))) == 0 { - return nil, errors.New("validator doesn't match") + return nil, nil, errors.New("validator doesn't match") } u, err := GetUserByID(ctx, authToken.UID) if err != nil { if IsErrUserNotExist(err) { - return nil, nil + return nil, nil, nil } - return nil, err + return nil, nil, err } - if delete { - if err := auth.DeleteAuthToken(ctx, authToken); err != nil { - return nil, err - } + deleteToken = func() error { + return auth.DeleteAuthToken(ctx, authToken) } - return u, nil + return u, deleteToken, nil } // ValidateUser check if user is valid to insert / update into database diff --git a/models/user/user_test.go b/models/user/user_test.go index e3479943e3..9ac63b5a72 100644 --- a/models/user/user_test.go +++ b/models/user/user_test.go @@ -756,13 +756,13 @@ func TestVerifyUserAuthorizationToken(t *testing.T) { assert.True(t, ok) t.Run("Wrong purpose", func(t *testing.T) { - u, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.PasswordReset, false) + u, _, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.PasswordReset) require.NoError(t, err) assert.Nil(t, u) }) t.Run("No delete", func(t *testing.T) { - u, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.UserActivation, false) + u, _, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.UserActivation) require.NoError(t, err) assert.EqualValues(t, user.ID, u.ID) @@ -772,9 +772,10 @@ func TestVerifyUserAuthorizationToken(t *testing.T) { }) t.Run("Delete", func(t *testing.T) { - u, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.UserActivation, true) + u, deleteToken, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.UserActivation) require.NoError(t, err) assert.EqualValues(t, user.ID, u.ID) + require.NoError(t, deleteToken()) authToken, err := auth.FindAuthToken(db.DefaultContext, lookupKey, auth.UserActivation) require.ErrorIs(t, err, util.ErrNotExist) diff --git a/routers/web/auth/auth.go b/routers/web/auth/auth.go index 92305ad26a..d592dff077 100644 --- a/routers/web/auth/auth.go +++ b/routers/web/auth/auth.go @@ -62,7 +62,7 @@ func autoSignIn(ctx *context.Context) (bool, error) { return false, nil } - u, err := user_model.VerifyUserAuthorizationToken(ctx, authCookie, auth.LongTermAuthorization, false) + u, _, err := user_model.VerifyUserAuthorizationToken(ctx, authCookie, auth.LongTermAuthorization) if err != nil { return false, fmt.Errorf("VerifyUserAuthorizationToken: %w", err) } @@ -672,7 +672,7 @@ func Activate(ctx *context.Context) { return } - user, err := user_model.VerifyUserAuthorizationToken(ctx, code, auth.UserActivation, false) + user, deleteToken, err := user_model.VerifyUserAuthorizationToken(ctx, code, auth.UserActivation) if err != nil { ctx.ServerError("VerifyUserAuthorizationToken", err) return @@ -693,6 +693,11 @@ func Activate(ctx *context.Context) { return } + if err := deleteToken(); err != nil { + ctx.ServerError("deleteToken", err) + return + } + handleAccountActivation(ctx, user) } @@ -741,7 +746,7 @@ func ActivatePost(ctx *context.Context) { return } - user, err := user_model.VerifyUserAuthorizationToken(ctx, code, auth.UserActivation, true) + user, deleteToken, err := user_model.VerifyUserAuthorizationToken(ctx, code, auth.UserActivation) if err != nil { ctx.ServerError("VerifyUserAuthorizationToken", err) return @@ -770,6 +775,11 @@ func ActivatePost(ctx *context.Context) { } } + if err := deleteToken(); err != nil { + ctx.ServerError("deleteToken", err) + return + } + handleAccountActivation(ctx, user) } @@ -830,7 +840,7 @@ func ActivateEmail(ctx *context.Context) { code := ctx.FormString("code") emailStr := ctx.FormString("email") - u, err := user_model.VerifyUserAuthorizationToken(ctx, code, auth.EmailActivation(emailStr), true) + u, deleteToken, err := user_model.VerifyUserAuthorizationToken(ctx, code, auth.EmailActivation(emailStr)) if err != nil { ctx.ServerError("VerifyUserAuthorizationToken", err) return @@ -840,6 +850,11 @@ func ActivateEmail(ctx *context.Context) { return } + if err := deleteToken(); err != nil { + ctx.ServerError("deleteToken", err) + return + } + email, err := user_model.GetEmailAddressOfUser(ctx, emailStr, u.ID) if err != nil { ctx.ServerError("GetEmailAddressOfUser", err) diff --git a/routers/web/auth/password.go b/routers/web/auth/password.go index 363c01c6a8..84f343bfca 100644 --- a/routers/web/auth/password.go +++ b/routers/web/auth/password.go @@ -116,7 +116,7 @@ func commonResetPassword(ctx *context.Context, shouldDeleteToken bool) (*user_mo } // Fail early, don't frustrate the user - u, err := user_model.VerifyUserAuthorizationToken(ctx, code, auth.PasswordReset, shouldDeleteToken) + u, deleteToken, err := user_model.VerifyUserAuthorizationToken(ctx, code, auth.PasswordReset) if err != nil { ctx.ServerError("VerifyUserAuthorizationToken", err) return nil, nil @@ -127,6 +127,13 @@ func commonResetPassword(ctx *context.Context, shouldDeleteToken bool) (*user_mo return nil, nil } + if shouldDeleteToken { + if err := deleteToken(); err != nil { + ctx.ServerError("deleteToken", err) + return nil, nil + } + } + twofa, err := auth.GetTwoFactorByUID(ctx, u.ID) if err != nil { if !auth.IsErrTwoFactorNotEnrolled(err) { diff --git a/tests/integration/user_test.go b/tests/integration/user_test.go index 3da8a3ae1d..04ba690886 100644 --- a/tests/integration/user_test.go +++ b/tests/integration/user_test.go @@ -920,11 +920,27 @@ func TestUserActivate(t *testing.T) { assert.False(t, authToken.IsExpired()) assert.EqualValues(t, authToken.HashedValidator, auth_model.HashValidator(rawValidator)) - req = NewRequest(t, "POST", "/user/activate?code="+code) - session.MakeRequest(t, req, http.StatusOK) + t.Run("No password", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() - unittest.AssertNotExistsBean(t, &auth_model.AuthorizationToken{ID: authToken.ID}) - unittest.AssertExistsAndLoadBean(t, &user_model.User{Name: "doesnotexist", IsActive: true}) + req = NewRequest(t, "POST", "/user/activate?code="+code) + session.MakeRequest(t, req, http.StatusOK) + + unittest.AssertExistsIf(t, true, &auth_model.AuthorizationToken{ID: authToken.ID}) + unittest.AssertExistsAndLoadBean(t, &user_model.User{Name: "doesnotexist"}, "is_active = false") + }) + + t.Run("With password", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + + req = NewRequestWithValues(t, "POST", "/user/activate?code="+code, map[string]string{ + "password": "examplePassword!1", + }) + session.MakeRequest(t, req, http.StatusSeeOther) + + unittest.AssertExistsIf(t, false, &auth_model.AuthorizationToken{ID: authToken.ID}) + unittest.AssertExistsAndLoadBean(t, &user_model.User{Name: "doesnotexist"}, "is_active = true") + }) } func TestUserPasswordReset(t *testing.T) {