Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| da66b19e77 | |||
| a506e39955 |
@@ -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>
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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}}
|
||||
|
||||
Reference in New Issue
Block a user