loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

linting: fix typos, add toml validation (#7007)

- adds the `toml` plugin to the `eslint` linting → expect to have `options/setting/config.toml` by #6862
- fixes `make lint-codespell` commands
- related concerning `codespell`: #3270
- info: codespell check is and was not activated in the workflows (could maybe, runs only few seconds on my system)

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7007
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Robert Wolff <mahlzahn@posteo.de>
Co-committed-by: Robert Wolff <mahlzahn@posteo.de>

authored by

Robert Wolff
Robert Wolff
and committed by
Earl Warren
dc5bc1fe e8ebb5d6

+94 -38
+7 -7
Makefile
··· 173 173 WEB_DIRS := web_src/js web_src/css 174 174 175 175 STYLELINT_FILES := web_src/css web_src/js/components/*.vue 176 - SPELLCHECK_FILES := $(GO_DIRS) $(WEB_DIRS) docs/content templates options/locale/locale_en-US.ini .github $(wildcard *.go *.js *.ts *.vue *.md *.yml *.yaml *.toml) 176 + SPELLCHECK_FILES := $(GO_DIRS) $(WEB_DIRS) docs/content templates options/locale/locale_en-US.ini .github $(wildcard *.go *.js *.ts *.vue *.md *.yml *.yaml) 177 177 178 178 GO_SOURCES := $(wildcard *.go) 179 179 GO_SOURCES += $(shell find $(GO_DIRS) -type f -name "*.go" ! -path modules/options/bindata.go ! -path modules/public/bindata.go ! -path modules/templates/bindata.go) ··· 431 431 lint-backend-fix: lint-go-fix lint-go-vet lint-editorconfig lint-disposable-emails-fix 432 432 433 433 .PHONY: lint-codespell 434 - lint-codespell: 435 - codespell 434 + lint-codespell: deps-py 435 + @poetry run codespell 436 436 437 437 .PHONY: lint-codespell-fix 438 - lint-codespell-fix: 439 - codespell -w 438 + lint-codespell-fix: deps-py 439 + @poetry run codespell -w 440 440 441 441 .PHONY: lint-codespell-fix-i 442 - lint-codespell-fix-i: 443 - codespell -w -i 3 -C 2 442 + lint-codespell-fix-i: deps-py 443 + @poetry run codespell -w -i 3 -C 2 444 444 445 445 .PHONY: lint-js 446 446 lint-js: node_modules
+3 -1
eslint.config.mjs
··· 14 14 import globals from 'globals'; 15 15 import vue from 'eslint-plugin-vue'; 16 16 import vueScopedCss from 'eslint-plugin-vue-scoped-css'; 17 + import toml from 'eslint-plugin-toml'; 17 18 import tseslint from 'typescript-eslint'; 18 19 19 20 export default tseslint.config( ··· 35 36 sonarjs, 36 37 unicorn, 37 38 playwright, 39 + toml, 38 40 'vitest-globals': vitestGlobals, 39 41 vue, 40 42 'vue-scoped-css': vueScopedCss, ··· 1166 1168 'vue-scoped-css/enforce-style-type': [0], 1167 1169 }, 1168 1170 }, 1169 - 1171 + ...toml.configs['flat/recommended'], 1170 1172 );
+2 -2
models/repo/release.go
··· 140 140 return err 141 141 } 142 142 143 - // GetTotalDownloadCount returns the summary of all dowload count of files attached to the release 143 + // GetTotalDownloadCount returns the summary of all download count of files attached to the release 144 144 func (r *Release) GetTotalDownloadCount(ctx context.Context) (int64, error) { 145 145 var archiveCount int64 146 146 if !r.HideArchiveLinks { ··· 194 194 return fmt.Sprintf("%s/releases/summary-card/%s", r.Repo.HTMLURL(), util.PathEscapeSegments(r.TagName)) 195 195 } 196 196 197 - // DisplayName retruns the name of the release 197 + // DisplayName returns the name of the release 198 198 func (r *Release) DisplayName() string { 199 199 if r.IsTag && r.Title == "" { 200 200 return r.TagName
+1 -1
models/user/redirect.go
··· 69 69 } 70 70 71 71 // GetUserRedirect returns the redirect for a given username, this is a 72 - // case-insenstive operation. 72 + // case-insensitive operation. 73 73 func GetUserRedirect(ctx context.Context, userName string) (*Redirect, error) { 74 74 userName = strings.ToLower(userName) 75 75 redirect := &Redirect{LowerName: userName}
+1 -1
models/user/user_test.go
··· 665 665 {"Hi Its <Mee>", "ee@mail.box", `"Hi Its Mee" <ee@mail.box>`}, 666 666 {"Sinéad.O'Connor", "sinead.oconnor@gmail.com", "=?utf-8?b?U2luw6lhZC5PJ0Nvbm5vcg==?= <sinead.oconnor@gmail.com>"}, 667 667 {"Æsir", "aesir@gmx.de", "=?utf-8?q?=C3=86sir?= <aesir@gmx.de>"}, 668 - {"new😀user", "new.user@alo.com", "=?utf-8?q?new=F0=9F=98=80user?= <new.user@alo.com>"}, // codespell-ignore 668 + {"new😀user", "new.user@alo.com", "=?utf-8?q?new=F0=9F=98=80user?= <new.user@alo.com>"}, // codespell:ignore 669 669 {`"quoted"`, "quoted@test.com", `"quoted" <quoted@test.com>`}, 670 670 {`gusted`, "gusted@test.com", `"gusted" <gusted@test.com>`}, 671 671 {`Joe Q. Public`, "john.q.public@example.com", `"Joe Q. Public" <john.q.public@example.com>`},
+1 -1
modules/git/grep.go
··· 125 125 // (eg, global pattern = "src/**" and path = "node_modules/") 126 126 127 127 // FIXME: this is a bit too restrictive, and fails to consider cases where the 128 - // gloabally set include pattern refers to a file than a directory 128 + // globally set include pattern refers to a file than a directory 129 129 // (eg, global pattern = "**.go" and path = "modules/git") 130 130 exprMatched := false 131 131 for _, expr := range setting.Indexer.IncludePatterns {
+1 -1
modules/highlight/highlight_test.go
··· 124 124 { 125 125 name: "test.gradle.kts", 126 126 code: "@file:Suppress(\"UnstableApiUsage\")", 127 - want: lines("<span class=\"nd\">@file</span><span class=\"p\">:</span><span class=\"n\">Suppress</span><span class=\"p\">(</span><span class=\"s2\">&#34;</span><span class=\"s2\">UnstableApiUsage</span><span class=\"s2\">&#34;</span><span class=\"p\">)</span>"), 127 + want: lines("<span class=\"nd\">@file</span><span class=\"p\">:</span><span class=\"n\">Suppress</span><span class=\"p\">(</span><span class=\"s2\">&#34;</span><span class=\"s2\">UnstableApiUsage</span><span class=\"s2\">&#34;</span><span class=\"p\">)</span>"), // codespell:ignore 128 128 lexerName: "Kotlin", 129 129 }, 130 130 }
+5 -5
modules/indexer/code/bleve/tokenizer/hierarchy/hierarchy.go
··· 31 31 rv := make(analysis.TokenStream, 0, 8) 32 32 count, off := 1, 0 33 33 34 - // iterate till all directory seperators 34 + // iterate till all directory separators 35 35 for i := bytes.IndexRune(input[off:], '/'); i != -1; i = bytes.IndexRune(input[off:], '/') { 36 - // the index is relative to input[offest...] 37 - // add this index to the accumlated offset to get the index of the current seperator in input[0...] 36 + // the index is relative to input[offset...] 37 + // add this index to the accumulated offset to get the index of the current separator in input[0...] 38 38 off += i 39 39 rv = append(rv, &analysis.Token{ 40 - Term: input[:off], // take the slice, input[0...index of seperator] 40 + Term: input[:off], // take the slice, input[0...index of separator] 41 41 Start: 0, 42 42 End: off, 43 43 Position: count, 44 44 Type: analysis.AlphaNumeric, 45 45 }) 46 - // increment the offset after considering the seperator 46 + // increment the offset after considering the separator 47 47 off++ 48 48 count++ 49 49 }
+2 -2
modules/indexer/internal/bleve/query.go
··· 13 13 // NumericEqualityQuery generates a numeric equality query for the given value and field 14 14 func NumericEqualityQuery(value int64, field string) *query.NumericRangeQuery { 15 15 f := float64(value) 16 - tru := true // codespell-ignore 17 - q := bleve.NewNumericRangeInclusiveQuery(&f, &f, &tru, &tru) // codespell-ignore 16 + tru := true // codespell:ignore 17 + q := bleve.NewNumericRangeInclusiveQuery(&f, &f, &tru, &tru) // codespell:ignore 18 18 q.SetField(field) 19 19 return q 20 20 }
+1 -1
modules/markup/markdown/markdown_test.go
··· 471 471 // no backticks 472 472 "rgb(166, 32, 64)", 473 473 // typo 474 - "`hsI(0, 100%, 50%)`", // codespell-ignore 474 + "`hsI(0, 100%, 50%)`", // codespell:ignore 475 475 // looks like a color but not really 476 476 "`hsl(40, 60, 80)`", 477 477 }
+1 -1
options/locale/locale_en-US.ini
··· 171 171 fuzzy = Fuzzy 172 172 fuzzy_tooltip = Include results that also match the search term closely 173 173 union = Union 174 - union_tooltip = Include results that match any of the whitespace seperated keywords 174 + union_tooltip = Include results that match any of the whitespace separated keywords 175 175 exact = Exact 176 176 exact_tooltip = Include only results that match the exact search term 177 177 regexp = RegExp
+53
package-lock.json
··· 4 4 "requires": true, 5 5 "packages": { 6 6 "": { 7 + "name": "forgejo", 7 8 "dependencies": { 8 9 "@citation-js/core": "0.7.14", 9 10 "@citation-js/plugin-bibtex": "0.7.16", ··· 80 81 "eslint-plugin-playwright": "2.1.0", 81 82 "eslint-plugin-regexp": "2.7.0", 82 83 "eslint-plugin-sonarjs": "3.0.1", 84 + "eslint-plugin-toml": "0.12.0", 83 85 "eslint-plugin-unicorn": "56.0.1", 84 86 "eslint-plugin-vitest-globals": "1.5.0", 85 87 "eslint-plugin-vue": "9.32.0", ··· 8379 8381 "node": ">=10" 8380 8382 } 8381 8383 }, 8384 + "node_modules/eslint-plugin-toml": { 8385 + "version": "0.12.0", 8386 + "resolved": "https://registry.npmjs.org/eslint-plugin-toml/-/eslint-plugin-toml-0.12.0.tgz", 8387 + "integrity": "sha512-+/wVObA9DVhwZB1nG83D2OAQRrcQZXy+drqUnFJKymqnmbnbfg/UPmEMCKrJNcEboUGxUjYrJlgy+/Y930mURQ==", 8388 + "dev": true, 8389 + "license": "MIT", 8390 + "dependencies": { 8391 + "debug": "^4.1.1", 8392 + "eslint-compat-utils": "^0.6.0", 8393 + "lodash": "^4.17.19", 8394 + "toml-eslint-parser": "^0.10.0" 8395 + }, 8396 + "engines": { 8397 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 8398 + }, 8399 + "funding": { 8400 + "url": "https://github.com/sponsors/ota-meshi" 8401 + }, 8402 + "peerDependencies": { 8403 + "eslint": ">=6.0.0" 8404 + } 8405 + }, 8382 8406 "node_modules/eslint-plugin-unicorn": { 8383 8407 "version": "56.0.1", 8384 8408 "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-56.0.1.tgz", ··· 15282 15306 "resolved": "https://registry.npmjs.org/toastify-js/-/toastify-js-1.12.0.tgz", 15283 15307 "integrity": "sha512-HeMHCO9yLPvP9k0apGSdPUWrUbLnxUKNFzgUoZp1PHCLploIX/4DSQ7V8H25ef+h4iO9n0he7ImfcndnN6nDrQ==", 15284 15308 "license": "MIT" 15309 + }, 15310 + "node_modules/toml-eslint-parser": { 15311 + "version": "0.10.0", 15312 + "resolved": "https://registry.npmjs.org/toml-eslint-parser/-/toml-eslint-parser-0.10.0.tgz", 15313 + "integrity": "sha512-khrZo4buq4qVmsGzS5yQjKe/WsFvV8fGfOjDQN0q4iy9FjRfPWRgTFrU8u1R2iu/SfWLhY9WnCi4Jhdrcbtg+g==", 15314 + "dev": true, 15315 + "license": "MIT", 15316 + "dependencies": { 15317 + "eslint-visitor-keys": "^3.0.0" 15318 + }, 15319 + "engines": { 15320 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 15321 + }, 15322 + "funding": { 15323 + "url": "https://github.com/sponsors/ota-meshi" 15324 + } 15325 + }, 15326 + "node_modules/toml-eslint-parser/node_modules/eslint-visitor-keys": { 15327 + "version": "3.4.3", 15328 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 15329 + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 15330 + "dev": true, 15331 + "license": "Apache-2.0", 15332 + "engines": { 15333 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 15334 + }, 15335 + "funding": { 15336 + "url": "https://opencollective.com/eslint" 15337 + } 15285 15338 }, 15286 15339 "node_modules/tr46": { 15287 15340 "version": "0.0.3",
+2
package.json
··· 1 1 { 2 + "name": "forgejo", 2 3 "type": "module", 3 4 "engines": { 4 5 "node": ">= 18.0.0" ··· 80 81 "eslint-plugin-regexp": "2.7.0", 81 82 "eslint-plugin-sonarjs": "3.0.1", 82 83 "eslint-plugin-unicorn": "56.0.1", 84 + "eslint-plugin-toml": "0.12.0", 83 85 "eslint-plugin-vitest-globals": "1.5.0", 84 86 "eslint-plugin-vue": "9.32.0", 85 87 "eslint-plugin-vue-scoped-css": "2.9.0",
+2 -3
pyproject.toml
··· 14 14 ignore="H005,H006,H013,H016,H020,H021,H030,H031" 15 15 16 16 [tool.codespell] 17 - skip = '.git,*.pdf,*.svg,package-lock.json,go.mod,locale,license,*.git,objects,*.fr-fr.*,*.de-de.*,*.css,go.sum,*.key,gitignore,pyproject.toml,diff_test.go,go-licenses.json,pyproject.toml,*.lock,venvs' 17 + skip = '.git,*.pdf,*.svg,package-lock.json,go.mod,locale,locale_next,license,*.git,objects,*.fr-fr.*,*.de-de.*,*.css,go.sum,*.key,gitignore,pyproject.toml,diff_test.go,go-licenses.json,pyproject.toml,*.lock,venvs,node_modules,plural_rules.go,testdata,disposable_email_domain_data.go' 18 18 # precise hits for CamelCased words,various other curious cases which require regex to ignore 19 19 # entire line or some portion of it 20 20 # TODO: Resolve Treshold typo in API and remove from here 21 - ignore-regex = '(\b(Treshold|mx claus|commitT|ReadBy|#afile|respOne|commitI|[cC]rossReference|SMove|reVer|CheckIn|NotIn)\b|shouldbe\.|women’s.*womens|"emoji":.*|,bu,|assert\.Equal.*"fo\b|github\.com/unknwon|Copyright 2014 Unknwon|allowed\.noone|[hH]eadErr|atLeast|{"\\U.*)|Iif|FilterIn|.*codespell-ignore.*' 22 - #|.*(Maskenpflicht|Geimpft),.*)' 21 + ignore-regex = '(\b(Treshold|mx claus|commitT|ReadBy|#afile|respOne|commitI|[cC]rossReference|SMove|reVer|CheckIn|NotIn)\b|shouldbe\.|women’s.*womens|"emoji":.*|,bu,|assert\.Equal.*"fo\b|github\.com/unknwon|Copyright 2014 Unknwon|allowed\.noone|[hH]eadErr|atLeast|{"\\U.*)|Iif|FilterIn|ZiSe' 23 22 # te - TreeEntry variable 24 23 # commiter - wrong spelling but seems used in API 25 24 # ALLWAYS - is a config var
+1 -1
release-notes-published/10.0.0.md
··· 430 430 - [PR](https://codeberg.org/forgejo/forgejo/pulls/5651): <!--number 5651 --><!--line 0 --><!--description bGluayB0byBzZWN1cml0eSBwb2xpY3kgaW4gc2VjdXJpdHkudHh0-->link to security policy in security.txt<!--description--> 431 431 - [PR](https://codeberg.org/forgejo/forgejo/pulls/5646): <!--number 5646 --><!--line 0 --><!--description Y2hvcmUocmVsZWFzZS1ub3Rlcyk6IG5vIG5lZWQgdG8gc3BlY2lmeSB0aGV5IGFyZSBkcmFmdA==-->chore(release-notes): no need to specify they are draft<!--description--> 432 432 - [PR](https://codeberg.org/forgejo/forgejo/pulls/5644): <!--number 5644 --><!--line 0 --><!--description Y29uZjogSW1wcm92ZSBkZWxldGVfb2xkX2FjdGlvbnMgZGVzY3JpcHRpb24=-->conf: Improve delete_old_actions description<!--description--> 433 - - [PR](https://codeberg.org/forgejo/forgejo/pulls/5641): <!--number 5641 --><!--line 0 --><!--description bWFrZSBzeW5jcm9uaXplIHRhZ3MgdG8gZGF0YWJhc2UgaGFuZGxlIGFubm90ZWQgdGFncw==-->make synchronize tags to database handle annoted tags<!--description--> 433 + - [PR](https://codeberg.org/forgejo/forgejo/pulls/5641): <!--number 5641 --><!--line 0 --><!--description bWFrZSBzeW5jcm9uaXplIHRhZ3MgdG8gZGF0YWJhc2UgaGFuZGxlIGFubm90ZWQgdGFncw==-->make synchronize tags to database handle annotated tags<!--description--> 434 434 - [PR](https://codeberg.org/forgejo/forgejo/pulls/5640): <!--number 5640 --><!--line 0 --><!--description UmV2ZXJ0ICJhZGQgZ2FwIGJldHdlZW4gYnJhbmNoIGRyb3Bkb3duIGFuZCBQUiBidXR0b24i-->Revert "add gap between branch dropdown and PR button"<!--description--> 435 435 - [PR](https://codeberg.org/forgejo/forgejo/pulls/5638): <!--number 5638 --><!--line 0 --><!--description QmV0dGVyIG1lc3NhZ2VzIGZvciBjYXNlcyBvZiBwcml2YXRlIHByb2ZpbGVz-->Better messages for cases of private profiles<!--description--> 436 436 - [PR](https://codeberg.org/forgejo/forgejo/pulls/5637): <!--number 5637 --><!--line 0 --><!--description ZmVhdChjaSk6IGFsbG93IG1hbnVhbCB0cmlnZ2VyaW5nIG9mIHRoZSB0ZXN0IHN1aXRl-->feat(ci): allow manual triggering of the test suite<!--description-->
+1 -1
release-notes-published/10.0.1.md
··· 19 19 - [PR](https://codeberg.org/forgejo/forgejo/pulls/6817) ([backported](https://codeberg.org/forgejo/forgejo/pulls/6832)): <!--number 6832 --><!--line 0 --><!--description Zml4OiBhdm9pZCB5LWF4aXMgY2xpcHBpbmcgZm9yIGJyYW5jaCBuYW1l-->fix: avoid y-axis clipping for branch name<!--description--> 20 20 - [PR](https://codeberg.org/forgejo/forgejo/pulls/6646) ([backported](https://codeberg.org/forgejo/forgejo/pulls/6810)): <!--number 6810 --><!--line 0 --><!--description Y2k6IGZpeCBnbyB2ZXJzaW9uIGNoZWNr-->ci: fix go version check<!--description--> 21 21 - [PR](https://codeberg.org/forgejo/forgejo/pulls/6808) ([backported](https://codeberg.org/forgejo/forgejo/pulls/6809)): <!--number 6809 --><!--line 0 --><!--description Y2hvcmUoaTE4bik6IGxpbnQgZXJyb3Jz-->chore(i18n): lint errors<!--description--> 22 - - [PR](https://codeberg.org/forgejo/forgejo/pulls/6782) ([backported](https://codeberg.org/forgejo/forgejo/pulls/6783)): <!--number 6783 --><!--line 0 --><!--description Zml4OiBtYWtlIGF1dGhvciBzZWFyY2ggY2FzZSBpbnNlbnN0aXZl-->fix: make author search case insenstive<!--description--> 22 + - [PR](https://codeberg.org/forgejo/forgejo/pulls/6782) ([backported](https://codeberg.org/forgejo/forgejo/pulls/6783)): <!--number 6783 --><!--line 0 --><!--description Zml4OiBtYWtlIGF1dGhvciBzZWFyY2ggY2FzZSBpbnNlbnN0aXZl-->fix: make author search case insensitive<!--description--> 23 23 - [PR](https://codeberg.org/forgejo/forgejo/pulls/6620) ([backported](https://codeberg.org/forgejo/forgejo/pulls/6770)): <!--number 6770 --><!--line 0 --><!--description Zml4KHVpKTogYWRkIHRyaWFuZ2xlIGRvd24gb2N0aWNvbiB0byBjb2RlIHNlYXJjaCBvcHRpb25zIGRyb3Bkb3du-->fix(ui): add triangle down octicon to code search options dropdown<!--description--> 24 24 - [PR](https://codeberg.org/forgejo/forgejo/pulls/6708) ([backported](https://codeberg.org/forgejo/forgejo/pulls/6749)): <!--number 6749 --><!--line 0 --><!--description U2V0IGV4cGxvcmUgcGFnZXMgdG8gY29uZmlndXJhYmxlIGRlZmF1bHQgc29ydA==-->Set explore pages to configurable default sort<!--description--> 25 25 - [PR](https://codeberg.org/forgejo/forgejo/pulls/6734) ([backported](https://codeberg.org/forgejo/forgejo/pulls/6748)): <!--number 6748 --><!--line 0 --><!--description RGlzYWJsZSBhdXRvZm9jdXMgb24gdGhlIGRhc2hib2FyZCByZXBvc2l0b3J5IHNlYXJjaCBib3g=-->Disable autofocus on the dashboard repository search box<!--description-->
+1 -1
release-notes-published/8.0.1.md
··· 14 14 - Bug fixes 15 15 - [PR](https://codeberg.org/forgejo/forgejo/pulls/4896) ([backported](https://codeberg.org/forgejo/forgejo/pulls/4901)): <!--number 4901 --><!--line 0 --><!--description ZGlzYWxsb3cgamF2YXNjcmlwdDogVVJJIGluIHRoZSByZXBvc2l0b3J5IGRlc2NyaXB0aW9u-->disallow javascript: URI in the repository description<!--description--> 16 16 - [PR](https://codeberg.org/forgejo/forgejo/pulls/4852) ([backported](https://codeberg.org/forgejo/forgejo/pulls/4865)): <!--number 4865 --><!--line 0 --><!--description RW5zdXJlIGFsbCBmaWx0ZXJzIGFyZSBwZXJzaXN0ZW50IGluIGlzc3VlIGZpbHRlcnM=-->Ensure all filters are persistent in issue filters<!--description--> 17 - - [PR](https://codeberg.org/forgejo/forgejo/pulls/4828) ([backported](https://codeberg.org/forgejo/forgejo/pulls/4840)): <!--number 4840 --><!--line 0 --><!--description QWxsb3cgNCBjaGFyYWNodGVyIFNIQSBpbiBgL3NyYy9jb21taXRg-->Allow 4 charachter SHA in `/src/commit`<!--description--> 17 + - [PR](https://codeberg.org/forgejo/forgejo/pulls/4828) ([backported](https://codeberg.org/forgejo/forgejo/pulls/4840)): <!--number 4840 --><!--line 0 --><!--description QWxsb3cgNCBjaGFyYWNodGVyIFNIQSBpbiBgL3NyYy9jb21taXRg-->Allow 4 character SHA in `/src/commit`<!--description--> 18 18 - Localization 19 19 - [PR](https://codeberg.org/forgejo/forgejo/pulls/4668) ([backported](https://codeberg.org/forgejo/forgejo/pulls/4881)): <!--number 4881 --><!--line 0 --><!--description aTE4bjogYmFja3BvcnQgb2YgIzQ2NjggYW5kICM0NzgzIHRvIHY4-->i18n: backport of #4668 and #4783 to v8<!--description--> 20 20 <!--end release-notes-assistant-->
+1 -1
routers/api/v1/repo/collaborators.go
··· 295 295 // Only allow the request in any of the following situations: 296 296 // - The user is the instance admin. 297 297 // - The user is the repository admin. 298 - // - The user is querying the permissiosn of themselves. 298 + // - The user is querying the permissions of themselves. 299 299 if !ctx.IsUserSiteAdmin() && ctx.Doer.ID != collaborator.ID && !ctx.IsUserRepoAdmin() { 300 300 ctx.Error(http.StatusForbidden, "User", "Only admins can query all permissions, repo admins can query all repo permissions, collaborators can query only their own") 301 301 return
+1 -1
services/repository/gitgraph/graph_models.go
··· 199 199 if len(data) < 5 { 200 200 return nil, fmt.Errorf("malformed data section on line %d with commit: %s", row, string(line)) 201 201 } 202 - // Format is a slight modifcation from RFC1123Z 202 + // Format is a slight modification from RFC1123Z 203 203 t, err := time.Parse("Mon, _2 Jan 2006 15:04:05 -0700", string(data[2])) 204 204 if err != nil { 205 205 return nil, fmt.Errorf("could not parse date of commit: %w", err)
+1 -1
templates/repo/actions/dispatch.tmpl
··· 33 33 {{if eq $val.Type "boolean"}} 34 34 <div class="ui checkbox"> 35 35 <label><strong>{{if $val.Description}}{{$val.Description}}{{else}}{{$key}}{{end}}</strong></label> 36 - {{/* These two inputs need to stay in exactly this order (checkbox first, hidden second) or boolean fields wont work correctly! */}} 36 + {{/* These two inputs need to stay in exactly this order (checkbox first, hidden second) or boolean fields won't work correctly! */}} 37 37 <input type="checkbox" name="inputs[{{$key}}]" value="on" {{if eq $val.Default "true"}}checked{{end}}> 38 38 <input type="hidden" name="inputs[{{$key}}]" value="off" autocomplete="off"> 39 39 </div>
+1 -1
tests/integration/api_fork_test.go
··· 123 123 }).AddTokenAuth(token) 124 124 MakeRequest(t, req, http.StatusAccepted) 125 125 126 - t.Run("Anomynous", func(t *testing.T) { 126 + t.Run("Anonymous", func(t *testing.T) { 127 127 defer tests.PrintCurrentTest(t)() 128 128 129 129 req := NewRequest(t, "GET", "/api/v1/repos/user2/repo1/forks")
+1 -1
tests/integration/feed_user_test.go
··· 134 134 }) 135 135 136 136 t.Run("View permission", func(t *testing.T) { 137 - t.Run("Anomynous", func(t *testing.T) { 137 + t.Run("Anonymous", func(t *testing.T) { 138 138 defer tests.PrintCurrentTest(t)() 139 139 req := NewRequest(t, "GET", "/org3/repo3/rss/branch/master") 140 140 MakeRequest(t, req, http.StatusNotFound)
+1 -1
tests/integration/repo_fork_test.go
··· 249 249 250 250 testRepoFork(t, session, "user2", "repo1", org23.Name, "repo1") 251 251 252 - t.Run("Anomynous", func(t *testing.T) { 252 + t.Run("Anonymous", func(t *testing.T) { 253 253 defer tests.PrintCurrentTest(t)() 254 254 255 255 req := NewRequest(t, "GET", "/user2/repo1/forks")
+1 -1
tests/integration/repo_generate_test.go
··· 194 194 }) 195 195 defer f() 196 196 197 - // The repo.TemplateID field is not initalized. Luckly the ID field holds the expected value 197 + // The repo.TemplateID field is not initialized. Luckily, the ID field holds the expected value 198 198 templateID := strconv.FormatInt(template.ID, 10) 199 199 200 200 testRepoGenerate(
+1 -1
web_src/fomantic/build/semantic.js
··· 344 344 cancelled: function() { 345 345 return (module.cancelled || false); 346 346 }, 347 - succesful: function() { // codespell-ignore 347 + succesful: function() { // codespell:ignore 348 348 module.verbose('This behavior will be deleted due to typo. Use "was successful" instead.'); 349 349 return module.was.successful(); 350 350 },
+1 -1
web_src/js/components/RepoActionView.vue
··· 262 262 263 263 try { 264 264 this.loading = true; 265 - // Since no async operations occured since fetching myLoadingLogCursors, we can be sure that we have the most 265 + // Since no async operations occurred since fetching myLoadingLogCursors, we can be sure that we have the most 266 266 // recent needed log cursors, so we can reset needLoadingWithLogCursors -- it could be stale if exceptions 267 267 // occurred in previous load attempts. 268 268 this.needLoadingWithLogCursors = null;