From 2f377e85523e757f4815122ca49f6073f5d8d360 Mon Sep 17 00:00:00 2001 From: Bart van der Braak Date: Thu, 22 Jan 2026 00:25:14 +0100 Subject: [PATCH 1/9] Update material-icon-theme to v5.31.0 (#36427) --- options/fileicon/material-icon-rules.json | 10 ++++++++++ options/fileicon/material-icon-svgs.json | 14 ++++++++------ package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/options/fileicon/material-icon-rules.json b/options/fileicon/material-icon-rules.json index c893cfac4e1..8ee5dde0b2e 100644 --- a/options/fileicon/material-icon-rules.json +++ b/options/fileicon/material-icon-rules.json @@ -3495,6 +3495,10 @@ "..cursor": "folder-cursor", "_.cursor": "folder-cursor", "__.cursor__": "folder-cursor", + ".gemini": "folder-gemini-ai", + "..gemini": "folder-gemini-ai", + "_.gemini": "folder-gemini-ai", + "__.gemini__": "folder-gemini-ai", "input": "folder-input", ".input": "folder-input", "_input": "folder-input", @@ -7068,6 +7072,10 @@ "..cursor": "folder-cursor-open", "_.cursor": "folder-cursor-open", "__.cursor__": "folder-cursor-open", + ".gemini": "folder-gemini-ai-open", + "..gemini": "folder-gemini-ai-open", + "_.gemini": "folder-gemini-ai-open", + "__.gemini__": "folder-gemini-ai-open", "input": "folder-input-open", ".input": "folder-input-open", "_input": "folder-input-open", @@ -7860,6 +7868,7 @@ "tfvars": "terraform", "tfstate": "terraform", "tfbackend": "terraform", + "terraformignore": "terraform", "tofu": "opentofu", "blade.php": "laravel", "inky.php": "laravel", @@ -8599,6 +8608,7 @@ ".ruff.toml": "ruff", "uv.toml": "uv", ".uv.toml": "uv", + "uv.lock": "uv", "sconstruct": "scons", "sconscript": "scons", "scsub": "scons", diff --git a/options/fileicon/material-icon-svgs.json b/options/fileicon/material-icon-svgs.json index c0dc16e8a94..6713c4afa9c 100644 --- a/options/fileicon/material-icon-svgs.json +++ b/options/fileicon/material-icon-svgs.json @@ -67,7 +67,7 @@ "biome": "", "bitbucket": "", "bithound": "", - "blender": "", + "blender": "", "blink": "", "blink_light": "", "blitz": "", @@ -102,7 +102,7 @@ "circleci_light": "", "citation": "", "clangd": "", - "claude": "", + "claude": "", "cline": "", "clojure": "", "cloudfoundry": "", @@ -237,8 +237,8 @@ "folder-bibliography": "", "folder-bicep-open": "", "folder-bicep": "", - "folder-blender-open": "", - "folder-blender": "", + "folder-blender-open": "", + "folder-blender": "", "folder-bloc-open": "", "folder-bloc": "", "folder-bower-open": "", @@ -255,8 +255,8 @@ "folder-circleci": "", "folder-class-open": "", "folder-class": "", - "folder-claude-open": "", - "folder-claude": "", + "folder-claude-open": "", + "folder-claude": "", "folder-client-open": "", "folder-client": "", "folder-cline-open": "", @@ -379,6 +379,8 @@ "folder-functions": "", "folder-gamemaker-open": "", "folder-gamemaker": "", + "folder-gemini-ai-open": "", + "folder-gemini-ai": "", "folder-generator-open": "", "folder-generator": "", "folder-gh-workflows-open": "", diff --git a/package.json b/package.json index 9ca7075fa69..38ffc6fd3f7 100644 --- a/package.json +++ b/package.json @@ -99,7 +99,7 @@ "happy-dom": "20.3.0", "jiti": "2.6.1", "markdownlint-cli": "0.47.0", - "material-icon-theme": "5.30.0", + "material-icon-theme": "5.31.0", "nolyfill": "1.0.44", "postcss-html": "1.8.1", "spectral-cli-bundle": "1.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0769a6afc57..2bbd9da1914 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -301,8 +301,8 @@ importers: specifier: 0.47.0 version: 0.47.0 material-icon-theme: - specifier: 5.30.0 - version: 5.30.0 + specifier: 5.31.0 + version: 5.31.0 nolyfill: specifier: 1.0.44 version: 1.0.44 @@ -3118,8 +3118,8 @@ packages: engines: {node: '>= 12'} hasBin: true - material-icon-theme@5.30.0: - resolution: {integrity: sha512-GAB9vZGEVBQWD7NfZpx6mzkV47IJ6MaSFRLTXIhk9eCKrHbT5BlCwkeieu1Db/hDJHrQ/n+RdMvGtZa70FCGCQ==} + material-icon-theme@5.31.0: + resolution: {integrity: sha512-PPeGSRa+8stQEKvCr2Xym9KIqf2SPwl1chc7cxbK+aY6ORpwOcowtARQEXstZBjQwXTE5GnfE0zg0MFFy+XPzA==} engines: {vscode: ^1.55.0} mathml-tag-names@4.0.0: @@ -7113,7 +7113,7 @@ snapshots: marked@4.3.0: {} - material-icon-theme@5.30.0: + material-icon-theme@5.31.0: dependencies: chroma-js: 3.2.0 events: 3.3.0 From 111c822a309adc7a6d8ce052d32ee1abe2ce920d Mon Sep 17 00:00:00 2001 From: Sebastian Ertz Date: Thu, 22 Jan 2026 00:55:24 +0100 Subject: [PATCH 2/9] Update chroma to v2.23.0 (#36423) --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 76b69d50982..5843630970d 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/ProtonMail/go-crypto v1.3.0 github.com/PuerkitoBio/goquery v1.10.3 github.com/SaveTheRbtz/zstd-seekable-format-go/pkg v0.8.0 - github.com/alecthomas/chroma/v2 v2.22.0 + github.com/alecthomas/chroma/v2 v2.23.0 github.com/aws/aws-sdk-go-v2/credentials v1.18.10 github.com/aws/aws-sdk-go-v2/service/codecommit v1.32.2 github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb diff --git a/go.sum b/go.sum index 2c48fb008d1..814766e79b8 100644 --- a/go.sum +++ b/go.sum @@ -98,8 +98,8 @@ github.com/SaveTheRbtz/zstd-seekable-format-go/pkg v0.8.0/go.mod h1:1HmmMEVsr+0R github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/chroma/v2 v2.2.0/go.mod h1:vf4zrexSH54oEjJ7EdB65tGNHmH3pGZmVkgTP5RHvAs= -github.com/alecthomas/chroma/v2 v2.22.0 h1:PqEhf+ezz5F5owoDeOUKFzW+W3ZJDShNCaHg4sZuItI= -github.com/alecthomas/chroma/v2 v2.22.0/go.mod h1:NqVhfBR0lte5Ouh3DcthuUCTUpDC9cxBOfyMbMQPs3o= +github.com/alecthomas/chroma/v2 v2.23.0 h1:u/Orux1J0eLuZDeQ44froV8smumheieI0EofhbyKhhk= +github.com/alecthomas/chroma/v2 v2.23.0/go.mod h1:NqVhfBR0lte5Ouh3DcthuUCTUpDC9cxBOfyMbMQPs3o= github.com/alecthomas/repr v0.0.0-20220113201626-b1b626ac65ae/go.mod h1:2kn6fqh/zIyPLmm3ugklbEi5hg5wS435eygvNfaDQL8= github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= From 58cd8244ba49987beb69ce589e063851530e0770 Mon Sep 17 00:00:00 2001 From: Tyrone Yeh Date: Thu, 22 Jan 2026 08:24:37 +0800 Subject: [PATCH 3/9] Fix markdown newline handling during IME composition (#36421) ### Summary Fix incorrect newline handling in markdown editor when using IME input. ### Details While composing text with an IME, pressing Enter should not trigger markdown indentation logic. This change skips indentation handling during composition by checking `e.isComposing`. This prevents unexpected line breaks and formatting issues for CJK users. --- web_src/js/features/comp/EditorMarkdown.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/web_src/js/features/comp/EditorMarkdown.ts b/web_src/js/features/comp/EditorMarkdown.ts index da7bbcfef71..cdc9bdaf9a1 100644 --- a/web_src/js/features/comp/EditorMarkdown.ts +++ b/web_src/js/features/comp/EditorMarkdown.ts @@ -186,6 +186,7 @@ export function markdownHandleIndention(tvs: TextareaValueSelection): MarkdownHa } function handleNewline(textarea: HTMLTextAreaElement, e: KeyboardEvent) { + if (e.isComposing) return; const ret = markdownHandleIndention({value: textarea.value, selStart: textarea.selectionStart, selEnd: textarea.selectionEnd}); if (!ret.handled || !ret.valueSelection) return; // FIXME: the "handled" seems redundant, only valueSelection is enough (null for unhandled) e.preventDefault(); From a3a3e581aa387969ce6410ab54c4775e9023ec40 Mon Sep 17 00:00:00 2001 From: GiteaBot Date: Thu, 22 Jan 2026 00:41:46 +0000 Subject: [PATCH 4/9] [skip ci] Updated translations via Crowdin --- options/locale/locale_fr-FR.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/options/locale/locale_fr-FR.json b/options/locale/locale_fr-FR.json index 86e1f84965b..22be98d2ff5 100644 --- a/options/locale/locale_fr-FR.json +++ b/options/locale/locale_fr-FR.json @@ -3284,8 +3284,6 @@ "admin.config.git_gc_args": "Arguments de GC", "admin.config.git_migrate_timeout": "Délai imparti pour une migration", "admin.config.git_mirror_timeout": "Délai imparti pour mettre à jour le miroir", - "admin.config.git_clone_timeout": "Délai imparti pour l'opération \"Clone\"", - "admin.config.git_pull_timeout": "Délai imparti pour l'opération \"Pull\"", "admin.config.git_gc_timeout": "Délai imparti pour l'opération \"GC\"", "admin.config.log_config": "Configuration du journal", "admin.config.logger_name_fmt": "Journal : %s", From 6a5f9e12f908943ab62439dceb951ae56ec4a749 Mon Sep 17 00:00:00 2001 From: luo jiyin Date: Thu, 22 Jan 2026 09:17:06 +0800 Subject: [PATCH 5/9] Fix typos: unknow -> unknown, pktLineTypeUnknow -> pktLineTypeUnknown (#36419) --- cmd/hook.go | 10 +++++----- models/git/branch_test.go | 2 +- modules/setting/storage.go | 6 +++--- tests/integration/api_user_org_perm_test.go | 8 ++++---- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/cmd/hook.go b/cmd/hook.go index 3a03b65a371..6004f679acf 100644 --- a/cmd/hook.go +++ b/cmd/hook.go @@ -596,8 +596,8 @@ Gitea or set your environment appropriately.`, "") hookOptions.RefFullNames = make([]git.RefName, 0, hookBatchSize) for { - // note: pktLineTypeUnknow means pktLineTypeFlush and pktLineTypeData all allowed - rs, err = readPktLine(ctx, reader, pktLineTypeUnknow) + // note: pktLineTypeUnknown means pktLineTypeFlush and pktLineTypeData all allowed + rs, err = readPktLine(ctx, reader, pktLineTypeUnknown) if err != nil { return err } @@ -616,7 +616,7 @@ Gitea or set your environment appropriately.`, "") if hasPushOptions { for { - rs, err = readPktLine(ctx, reader, pktLineTypeUnknow) + rs, err = readPktLine(ctx, reader, pktLineTypeUnknown) if err != nil { return err } @@ -713,8 +713,8 @@ Gitea or set your environment appropriately.`, "") type pktLineType int64 const ( - // UnKnow type - pktLineTypeUnknow pktLineType = 0 + // Unknown type + pktLineTypeUnknown pktLineType = 0 // flush-pkt "0000" pktLineTypeFlush pktLineType = iota // data line diff --git a/models/git/branch_test.go b/models/git/branch_test.go index 5be435172b8..7728d72f3ef 100644 --- a/models/git/branch_test.go +++ b/models/git/branch_test.go @@ -114,7 +114,7 @@ func TestFindRenamedBranch(t *testing.T) { assert.True(t, exist) assert.Equal(t, "master", branch.To) - _, exist, err = git_model.FindRenamedBranch(t.Context(), 1, "unknow") + _, exist, err = git_model.FindRenamedBranch(t.Context(), 1, "unknown") assert.NoError(t, err) assert.False(t, exist) } diff --git a/modules/setting/storage.go b/modules/setting/storage.go index ee246158d94..9ee3f01633d 100644 --- a/modules/setting/storage.go +++ b/modules/setting/storage.go @@ -172,11 +172,11 @@ func getStorageSectionByType(rootCfg ConfigProvider, typ string) (ConfigSection, targetType := targetSec.Key("STORAGE_TYPE").String() if targetType == "" { if !IsValidStorageType(StorageType(typ)) { - return nil, 0, fmt.Errorf("unknow storage type %q", typ) + return nil, 0, fmt.Errorf("unknown storage type %q", typ) } targetSec.Key("STORAGE_TYPE").SetValue(typ) } else if !IsValidStorageType(StorageType(targetType)) { - return nil, 0, fmt.Errorf("unknow storage type %q for section storage.%v", targetType, typ) + return nil, 0, fmt.Errorf("unknown storage type %q for section storage.%v", targetType, typ) } return targetSec, targetSecIsTyp, nil @@ -202,7 +202,7 @@ func getStorageTargetSection(rootCfg ConfigProvider, name, typ string, sec Confi } } - // check stoarge name thirdly + // check storage name thirdly targetSec, _ := rootCfg.GetSection(storageSectionName + "." + name) if targetSec != nil { targetType := targetSec.Key("STORAGE_TYPE").String() diff --git a/tests/integration/api_user_org_perm_test.go b/tests/integration/api_user_org_perm_test.go index 85bb1db1709..54d42daef5c 100644 --- a/tests/integration/api_user_org_perm_test.go +++ b/tests/integration/api_user_org_perm_test.go @@ -129,22 +129,22 @@ func TestUnknowUser(t *testing.T) { session := loginUser(t, "user1") token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeReadUser, auth_model.AccessTokenScopeReadOrganization) - req := NewRequest(t, "GET", "/api/v1/users/unknow/orgs/org25/permissions"). + req := NewRequest(t, "GET", "/api/v1/users/unknown/orgs/org25/permissions"). AddTokenAuth(token) resp := MakeRequest(t, req, http.StatusNotFound) var apiError api.APIError DecodeJSON(t, resp, &apiError) - assert.Equal(t, "user redirect does not exist [name: unknow]", apiError.Message) + assert.Equal(t, "user redirect does not exist [name: unknown]", apiError.Message) } -func TestUnknowOrganization(t *testing.T) { +func TestUnknownOrganization(t *testing.T) { defer tests.PrepareTestEnv(t)() session := loginUser(t, "user1") token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeReadUser, auth_model.AccessTokenScopeReadOrganization) - req := NewRequest(t, "GET", "/api/v1/users/user1/orgs/unknow/permissions"). + req := NewRequest(t, "GET", "/api/v1/users/user1/orgs/unknown/permissions"). AddTokenAuth(token) resp := MakeRequest(t, req, http.StatusNotFound) var apiError api.APIError From 85c790140403029b6d73423f2582608f8506fa5c Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Thu, 22 Jan 2026 10:22:20 +0800 Subject: [PATCH 6/9] Fix issue filter menu layout (#36426) Fix #36420 --- templates/projects/list.tmpl | 2 +- templates/user/dashboard/issues.tmpl | 2 +- web_src/css/repo.css | 8 +++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/templates/projects/list.tmpl b/templates/projects/list.tmpl index e769543f6ad..c37f479fd01 100644 --- a/templates/projects/list.tmpl +++ b/templates/projects/list.tmpl @@ -23,7 +23,7 @@ {{template "shared/search/combo" dict "Value" .Keyword "Placeholder" (ctx.Locale.Tr "search.project_kind")}} -
+