Compare commits

...

2 Commits

Author SHA1 Message Date
gitea-actions[bot] da66b19e77 chore(release): build 06.15.00-rc [skip ci] 2026-06-09 20:03:52 +00:00
Jonathan Miller a506e39955 fix: switch org wiki tab from standalone repos to .profile wiki sidecars
Generic: Project CI / Tests (pull_request) Blocked by required conditions
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (pull_request) Blocked by required conditions
Generic: Repo Health / Repository health (pull_request) Blocked by required conditions
Generic: Repo Health / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Site Health (pull_request) Has been skipped
Branch Policy Check / Verify merge target (pull_request) Failing after 1s
Universal: PR Check / Branch Policy (pull_request) Failing after 2s
Generic: Repo Health / Access control (pull_request) Successful in 3s
Universal: PR Check / Validate PR (pull_request) Failing after 10s
Generic: Repo Health / Scripts governance (push) Blocked by required conditions
Generic: Repo Health / Repository health (push) Blocked by required conditions
Generic: Repo Health / Report Issues (push) Blocked by required conditions
Generic: Repo Health / Access control (push) Successful in 2s
Generic: Repo Health / Site Health (push) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Has been skipped
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Has been skipped
Universal: Auto Version Bump / Version Bump (push) Failing after 12s
Universal: Build & Release / Promote to RC (pull_request) Successful in 33s
Generic: Project CI / Lint & Validate (pull_request) Successful in 40s
PR RC Release / Build RC Release (pull_request) Failing after 40s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 53s
The org wiki tab previously read from standalone `wiki` and
`wiki-private` repos. Those repos have been migrated into the
`.profile` and `.profile-private` repo wikis (Gitea wiki sidecars).

- Update RepoNameWikiPublic/Private constants to .profile/.profile-private
- findOrgWikiCommit now opens WikiStorageRepo() instead of main repo
- OrgWikiRepoExists checks wiki sidecar via GetDefaultBranch
- Update empty state and settings template text

Fixes #594
2026-06-09 15:02:44 -05:00
7 changed files with 26 additions and 59 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
<name>MokoGitea</name>
<org>MokoConsulting</org>
<description>Moko fork of Gitea - adding project board REST API endpoints and custom enhancements</description>
<version>06.14.00</version>
<version>06.15.00</version>
<version-prefix>v1.26.1+MOKO</version-prefix>
<license spdx="GPL-3.0-or-later">GNU General Public License v3</license>
</identity>
+1 -1
View File
@@ -5,7 +5,7 @@
# FILE INFORMATION
# DEFGROUP: Gitea.Workflow
# INGROUP: mokoplatform.Automation
# VERSION: 06.14.00
# VERSION: 06.15.00
# BRIEF: Auto-create feature branch when an issue is opened
name: "Universal: Issue Branch"
+2 -39
View File
@@ -1,6 +1,8 @@
# Changelog
## [Unreleased]
## [06.15.00] --- 2026-06-09
All notable changes to MokoGitea are documented here. Versions follow the format
`v{upstream}-moko.{major}.{minor}` (e.g. `v1.26.1-moko.06.03`).
@@ -157,42 +159,3 @@ All notable changes to MokoGitea are documented here. Versions follow the format
* fix(build): restore build/ directory after accidental deletion
* fix(licenses): master key banner removed, master keys sort first in table
* fix(issues): issue sidebar loads org-level fields instead of legacy repo-level fields
## [v1.26.1-moko.05] - 2026-05-31
* BREAKING CHANGES
* Deprecated Issue.Ref branch selector UI (#307)
* Removed branch/tag selector from issue sidebar and new issue form
* DB column and commit-close logic preserved for backward compatibility
* FEATURES
* feat(ui): generic combo-multiselect component (#361)
* Reusable dropdown with search, checkable items, and selected-items display
* Template: `shared/combolist.tmpl`
* feat(updates): extension metadata settings for update feed generation
* feat(licenses): platform enforcement, key deletion, expired key cleanup
* feat(actions): rebrand actions bot user to mokogitea-actions (#233, #234)
* Backward-compatible: recognizes github-actions[bot], gitea-actions[bot]
* feat(actions): actions bot user in branch protection whitelist (#233, #234)
* WhitelistActionsUser, MergeWhitelistActionsUser, ForcePushAllowlistActionsUser
* TECH DEBT
* chore: full namespace migration to code.mokoconsulting.tech (#336, #337, #344)
* fix(blame): set HasSourceRenderedToggle for renderable files (#344)
* fix(settings): translate team permission strings via data-locale (#344)
* fix(dropzone): use relative path for non-image attachment markdown links (#344)
* fix(templates): add required validation to issue dropdown fields (#350)
* refactor(go): replace ValuesRepository with maps.Values (Go 1.21+) (#357)
* refactor(go): remove CanEnableEditor wrapper (#357)
* fix(ts): parseIssueHref uses URL pathname and trims appSubUrl (#360)
* fix(actions): enforce MaxJobNumPerRun (256) limit (#360)
* fix(css): use calc(infinity * 1px) for --border-radius-full (#361)
* fix(css): remove legacy .center class, replace with tw-text-center (#361)
* fix(routes): remove dead legacy /cherry-pick/{sha} route
* fix(feed): use full ref name instead of ShortName for file feed revision
* BUGFIXES
* fix(build): use slices.Collect for maps.Values (Go 1.23+ compat)
* fix(licenses): remove duplicate DeleteLicenseKey declaration
* fix(licenses): only show licenses tab when licensing is enabled
* fix(licenses): show feed URLs based on repo update platform setting
* fix(updates): correct dlid prefix and align XML with Joomla standard
* INFRASTRUCTURE
* fix(ci): auto-deploy to production on merge to main (#235)
+11 -9
View File
@@ -157,7 +157,8 @@ func Wiki(ctx *context.Context) {
ctx.HTML(http.StatusOK, tplOrgWiki)
}
// findOrgWikiCommit locates the convention wiki repo and returns its HEAD commit.
// 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).
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 {
@@ -167,19 +168,20 @@ func findOrgWikiCommit(ctx *context.Context, orgID int64, repoName string) (*rep
return nil, nil
}
if dbRepo.IsEmpty {
// Open the wiki git repo (.wiki.git sidecar), not the main repo.
wikiGitRepo, err := gitrepo.RepositoryFromRequestContextOrOpen(ctx, dbRepo.WikiStorageRepo())
if err != nil {
// Wiki repo doesn't exist yet — not an error, just no wiki.
return nil, nil
}
gitRepo, err := gitrepo.RepositoryFromRequestContextOrOpen(ctx, dbRepo)
if err != nil {
log.Error("findOrgWikiCommit: OpenRepository(%s): %v", dbRepo.FullName(), err)
return nil, nil
branch := dbRepo.DefaultWikiBranch
if branch == "" {
branch = "main"
}
commit, err := gitRepo.GetBranchCommit(dbRepo.DefaultBranch)
commit, err := wikiGitRepo.GetBranchCommit(branch)
if err != nil {
log.Error("findOrgWikiCommit: GetBranchCommit(%s, %s): %v", dbRepo.FullName(), dbRepo.DefaultBranch, err)
log.Error("findOrgWikiCommit: GetBranchCommit wiki(%s, %s): %v", dbRepo.FullName(), branch, err)
return nil, nil
}
+7 -5
View File
@@ -137,8 +137,8 @@ type PrepareOwnerHeaderResult struct {
const (
RepoNameProfilePrivate = ".profile-private"
RepoNameProfile = ".profile"
RepoNameWikiPublic = "wiki"
RepoNameWikiPrivate = "wiki-private"
RepoNameWikiPublic = ".profile"
RepoNameWikiPrivate = ".profile-private"
)
func RenderUserOrgHeader(ctx *context.Context) (result *PrepareOwnerHeaderResult, err error) {
@@ -209,11 +209,13 @@ func loadHeaderCount(ctx *context.Context) error {
return nil
}
// OrgWikiRepoExists checks whether a convention wiki repo exists and is non-empty.
// OrgWikiRepoExists checks whether a profile repo's wiki exists and has content.
func OrgWikiRepoExists(ctx *context.Context, ownerID int64, repoName string) bool {
dbRepo, err := repo_model.GetRepositoryByName(ctx, ownerID, repoName)
if err != nil || dbRepo.IsEmpty {
if err != nil {
return false
}
return true
// Check if the wiki sidecar repo exists by trying to get its default branch.
_, err = gitrepo.GetDefaultBranch(ctx, dbRepo.WikiStorageRepo())
return err == nil
}
+2 -2
View File
@@ -68,11 +68,11 @@
<div class="field">
<div class="ui radio checkbox">
<input class="enable-system-radio" name="wiki_mode" type="radio" value="" data-context="#external_wiki_box" data-target="#internal_wiki_box" {{if eq .Org.WikiMode ""}}checked{{end}}>
<label>Internal wiki (uses <code>wiki</code> / <code>wiki-private</code> repos)</label>
<label>Internal wiki (uses <code>.profile</code> / <code>.profile-private</code> repo wikis)</label>
</div>
</div>
<div id="internal_wiki_box" class="field tw-pl-4 {{if ne .Org.WikiMode ""}}disabled{{end}}">
<p class="help">Create repos named <code>wiki</code> (public) and/or <code>wiki-private</code> (members-only) under this organization.</p>
<p class="help">Enable the wiki on <code>.profile</code> (public) and/or <code>.profile-private</code> (members-only) repos.</p>
</div>
<div class="field">
<div class="ui radio checkbox">
+2 -2
View File
@@ -11,8 +11,8 @@
This organization doesn't have a wiki yet.
</div>
<p class="tw-text-center">
Create a repository named <code>wiki</code> (public) or <code>wiki-private</code> (members-only)
with markdown files to get started.
Enable the wiki on the <code>.profile</code> (public) or <code>.profile-private</code> (members-only)
repository to get started.
</p>
</div>
{{else}}