From 32ea85a6dd6fd07b1d41071aca1a5ccb1394aeec Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Fri, 19 Jun 2026 07:09:17 +0000 Subject: [PATCH 1/5] chore(version): pre-release bump to 06.18.01-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 0c42e3c990..467bf497c1 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -4,7 +4,7 @@ MokoGitea MokoConsulting Moko fork of Gitea - adding project board REST API endpoints and custom enhancements - 06.18.00 + 06.18.01 v1.26.1+MOKO GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 6268a69220..cf359e632c 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: mokoplatform.Automation -# VERSION: 06.18.00 +# VERSION: 06.18.01 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" -- 2.52.0 From 65fdbdafd3278370d51abcc99fcd522b4d41b2a1 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 20 Jun 2026 12:55:20 -0500 Subject: [PATCH 2/5] feat: support .mokogitea, .profile, and .github as org/user profile repo names (#651) Primary profile repo name is now .mokogitea with fallback chain: .mokogitea > .profile > .github (and their -private variants). Co-Authored-By: Claude --- models/repo/repo_test.go | 2 ++ routers/web/shared/user/header.go | 55 ++++++++++++++++++++++++------- 2 files changed, 46 insertions(+), 11 deletions(-) diff --git a/models/repo/repo_test.go b/models/repo/repo_test.go index 7cf9d6a8a6..7bf3fb97a4 100644 --- a/models/repo/repo_test.go +++ b/models/repo/repo_test.go @@ -212,6 +212,8 @@ func TestIsUsableRepoName(t *testing.T) { assert.NoError(t, IsUsableRepoName("a")) assert.NoError(t, IsUsableRepoName("-1_.")) assert.NoError(t, IsUsableRepoName(".profile")) + assert.NoError(t, IsUsableRepoName(".mokogitea")) + assert.NoError(t, IsUsableRepoName(".github")) assert.Error(t, IsUsableRepoName("-")) assert.Error(t, IsUsableRepoName("🌞")) diff --git a/routers/web/shared/user/header.go b/routers/web/shared/user/header.go index abcd848697..61432906eb 100644 --- a/routers/web/shared/user/header.go +++ b/routers/web/shared/user/header.go @@ -93,11 +93,25 @@ func prepareContextForProfileBigAvatar(ctx *context.Context) { func FindOwnerProfileReadme(ctx *context.Context, doer *user_model.User, optProfileRepoName ...string) (profileDbRepo *repo_model.Repository, profileReadmeBlob *git.Blob) { profileRepoName := util.OptionalArg(optProfileRepoName, RepoNameProfile) - profileDbRepo, err := repo_model.GetRepositoryByName(ctx, ctx.ContextUser.ID, profileRepoName) - if err != nil { - if !repo_model.IsErrRepoNotExist(err) { - log.Error("FindOwnerProfileReadme failed to GetRepositoryByName: %v", err) + + // Try the primary name first, then GitHub-compatible fallbacks. + namesToTry := []string{profileRepoName} + if fallbacks, ok := profileFallbacks[profileRepoName]; ok { + namesToTry = append(namesToTry, fallbacks...) + } + + var err error + for _, name := range namesToTry { + profileDbRepo, err = repo_model.GetRepositoryByName(ctx, ctx.ContextUser.ID, name) + if err == nil { + break } + if !repo_model.IsErrRepoNotExist(err) { + log.Error("FindOwnerProfileReadme failed to GetRepositoryByName(%s): %v", name, err) + return nil, nil + } + } + if profileDbRepo == nil { return nil, nil } @@ -135,12 +149,19 @@ type PrepareOwnerHeaderResult struct { } const ( - RepoNameProfilePrivate = ".profile-private" - RepoNameProfile = ".profile" - RepoNameWikiPublic = ".profile" - RepoNameWikiPrivate = ".profile-private" + RepoNameProfile = ".mokogitea" + RepoNameProfilePrivate = ".mokogitea-private" + RepoNameWikiPublic = ".mokogitea" + RepoNameWikiPrivate = ".mokogitea-private" ) +// Fallback repo names — tried in order when the primary .mokogitea name doesn't exist. +// Priority: .mokogitea > .profile > .github +var profileFallbacks = map[string][]string{ + RepoNameProfile: {".profile", ".github"}, + RepoNameProfilePrivate: {".profile-private", ".github-private"}, +} + func RenderUserOrgHeader(ctx *context.Context) (result *PrepareOwnerHeaderResult, err error) { ctx.Data["IsPackageEnabled"] = setting.Packages.Enabled ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled @@ -210,10 +231,22 @@ func loadHeaderCount(ctx *context.Context) error { } // OrgWikiRepoExists checks whether a profile repo's wiki exists and has content. +// Tries fallback repo names (.mokogitea, .github) if the primary doesn't exist. func OrgWikiRepoExists(ctx *context.Context, ownerID int64, repoName string) bool { - dbRepo, err := repo_model.GetRepositoryByName(ctx, ownerID, repoName) - if err != nil { - log.Trace("OrgWikiRepoExists: repo %s not found for owner %d: %v", repoName, ownerID, err) + namesToTry := []string{repoName} + if fallbacks, ok := profileFallbacks[repoName]; ok { + namesToTry = append(namesToTry, fallbacks...) + } + + var dbRepo *repo_model.Repository + var err error + for _, name := range namesToTry { + dbRepo, err = repo_model.GetRepositoryByName(ctx, ownerID, name) + if err == nil { + break + } + } + if dbRepo == nil { return false } wikiRepo := dbRepo.WikiStorageRepo() -- 2.52.0 From 9ab646409f1c705e066c6dba82f2a4b290d2fa1b Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sat, 20 Jun 2026 17:56:32 +0000 Subject: [PATCH 3/5] chore(version): pre-release bump to 06.18.02-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 467bf497c1..9cbc25a3e3 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -4,7 +4,7 @@ MokoGitea MokoConsulting Moko fork of Gitea - adding project board REST API endpoints and custom enhancements - 06.18.01 + 06.18.02 v1.26.1+MOKO GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index cf359e632c..f2e5365f83 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: mokoplatform.Automation -# VERSION: 06.18.01 +# VERSION: 06.18.02 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" -- 2.52.0 From b98c46e17ce628563b7a3f9305178d56f1917738 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 20 Jun 2026 13:00:15 -0500 Subject: [PATCH 4/5] fix: stale error message, add fallback to wiki commit lookup - Fix log message in FindOwnerProfileReadme (was "GetRepositoryByName", now "GetDoerRepoPermission") - Add profile repo fallback to findOrgWikiCommit in wiki.go - Extract ProfileRepoFallbacks helper for reuse across packages Co-Authored-By: Claude --- routers/web/org/wiki.go | 21 ++++++++++++++++----- routers/web/shared/user/header.go | 25 ++++++++++++++----------- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/routers/web/org/wiki.go b/routers/web/org/wiki.go index 8a7280b31c..dc76d34747 100644 --- a/routers/web/org/wiki.go +++ b/routers/web/org/wiki.go @@ -158,13 +158,24 @@ func Wiki(ctx *context.Context) { } // findOrgWikiCommit locates the profile repo's wiki and returns its HEAD commit. -// The org wiki lives in the .wiki.git sidecar of the profile repo (e.g. .profile.wiki.git). +// The org wiki lives in the .wiki.git sidecar of the profile repo (e.g. .mokogitea.wiki.git). +// Tries fallback repo names (.profile, .github) if the primary doesn't exist. func findOrgWikiCommit(ctx *context.Context, orgID int64, repoName string) (*repo_model.Repository, *git.Commit) { - dbRepo, err := repo_model.GetRepositoryByName(ctx, orgID, repoName) - if err != nil { - if !repo_model.IsErrRepoNotExist(err) { - log.Error("findOrgWikiCommit: GetRepositoryByName(%d, %s): %v", orgID, repoName, err) + namesToTry := shared_user.ProfileRepoFallbacks(repoName) + + var dbRepo *repo_model.Repository + var err error + for _, name := range namesToTry { + dbRepo, err = repo_model.GetRepositoryByName(ctx, orgID, name) + if err == nil { + break } + if !repo_model.IsErrRepoNotExist(err) { + log.Error("findOrgWikiCommit: GetRepositoryByName(%d, %s): %v", orgID, name, err) + return nil, nil + } + } + if dbRepo == nil { return nil, nil } diff --git a/routers/web/shared/user/header.go b/routers/web/shared/user/header.go index 61432906eb..9b75cbc724 100644 --- a/routers/web/shared/user/header.go +++ b/routers/web/shared/user/header.go @@ -94,11 +94,7 @@ func prepareContextForProfileBigAvatar(ctx *context.Context) { func FindOwnerProfileReadme(ctx *context.Context, doer *user_model.User, optProfileRepoName ...string) (profileDbRepo *repo_model.Repository, profileReadmeBlob *git.Blob) { profileRepoName := util.OptionalArg(optProfileRepoName, RepoNameProfile) - // Try the primary name first, then GitHub-compatible fallbacks. - namesToTry := []string{profileRepoName} - if fallbacks, ok := profileFallbacks[profileRepoName]; ok { - namesToTry = append(namesToTry, fallbacks...) - } + namesToTry := ProfileRepoFallbacks(profileRepoName) var err error for _, name := range namesToTry { @@ -117,7 +113,7 @@ func FindOwnerProfileReadme(ctx *context.Context, doer *user_model.User, optProf perm, err := access_model.GetDoerRepoPermission(ctx, profileDbRepo, doer) if err != nil { - log.Error("FindOwnerProfileReadme failed to GetRepositoryByName: %v", err) + log.Error("FindOwnerProfileReadme failed to GetDoerRepoPermission: %v", err) return nil, nil } if profileDbRepo.IsEmpty || !perm.CanRead(unit.TypeCode) { @@ -155,13 +151,23 @@ const ( RepoNameWikiPrivate = ".mokogitea-private" ) -// Fallback repo names — tried in order when the primary .mokogitea name doesn't exist. +// profileFallbacks maps primary repo names to their fallback alternatives. // Priority: .mokogitea > .profile > .github var profileFallbacks = map[string][]string{ RepoNameProfile: {".profile", ".github"}, RepoNameProfilePrivate: {".profile-private", ".github-private"}, } +// ProfileRepoFallbacks returns the list of repo names to try for a given +// profile repo name, with the primary name first and fallbacks after. +func ProfileRepoFallbacks(repoName string) []string { + names := []string{repoName} + if fallbacks, ok := profileFallbacks[repoName]; ok { + names = append(names, fallbacks...) + } + return names +} + func RenderUserOrgHeader(ctx *context.Context) (result *PrepareOwnerHeaderResult, err error) { ctx.Data["IsPackageEnabled"] = setting.Packages.Enabled ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled @@ -233,10 +239,7 @@ func loadHeaderCount(ctx *context.Context) error { // OrgWikiRepoExists checks whether a profile repo's wiki exists and has content. // Tries fallback repo names (.mokogitea, .github) if the primary doesn't exist. func OrgWikiRepoExists(ctx *context.Context, ownerID int64, repoName string) bool { - namesToTry := []string{repoName} - if fallbacks, ok := profileFallbacks[repoName]; ok { - namesToTry = append(namesToTry, fallbacks...) - } + namesToTry := ProfileRepoFallbacks(repoName) var dbRepo *repo_model.Repository var err error -- 2.52.0 From 606504c2d255ebaaee8373c9d94568ee4475e141 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sat, 20 Jun 2026 18:01:21 +0000 Subject: [PATCH 5/5] chore(version): pre-release bump to 06.18.03-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 9cbc25a3e3..e37779f96d 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -4,7 +4,7 @@ MokoGitea MokoConsulting Moko fork of Gitea - adding project board REST API endpoints and custom enhancements - 06.18.02 + 06.18.03 v1.26.1+MOKO GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index f2e5365f83..d162991038 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: mokoplatform.Automation -# VERSION: 06.18.02 +# VERSION: 06.18.03 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" -- 2.52.0