feat: migrate update_stream_config metadata to org-level custom fields #492
Open
opened 2026-06-05 01:00:00 +00:00 by jmiller
·
0 comments
Labels
Clear labels
breaking-change
ci-cd
config
dependencies
deploy-failure
docker
documentation
good first issue
health-check
help wanted
mokostandards
pending: testing
priority: critical
priority: high
priority: low
priority: medium
push-failure
security
size/l
size/m
size/s
size/xl
size/xs
standards-drift
standards-update
status: blocked
status: in-progress
status: needs-review
status: on-hold
status: wontfix
sync-failure
tech-debt
type: bug
type: bug
type: chore
type: enhancement
type: feature
type: refactor
type: version
upstream
upstream
work-in-progress
bug
chore
documentation
enhancement
feature
pending: dependency
pending: deployment
pending: design
pending: documentation
pending: feedback
pending: review
pending: testing
priority: critical
priority: high
priority: low
priority: medium
refactor
roadmap
scope: client
scope: dolibarr
scope: infrastructure
scope: joomla
scope: waas
security
status: blocked
status: duplicate
status: in-progress
status: needs-review
status: wontfix
Breaking API or behavior change
CI/CD pipeline changes
Configuration changes
Dependency updates
Deployment failed
Docker/container changes
Documentation changes
Good for newcomers
Repo health check result
Extra attention needed
Related to MokoStandards framework
Feature implemented but not yet tested with documented proof
Must fix immediately
Important, fix soon
Nice to have
Normal priority
Git push operation failed
Security vulnerability or hardening
200-500 lines changed
50-200 lines changed
10-50 lines changed
500+ lines changed
< 10 lines changed
Deviates from MokoStandards
MokoStandards compliance update
Blocked by dependency or decision
Actively being worked on
Awaiting code review
Paused intentionally
Will not be addressed
Sync or mirror failed
Technical debt and TODO/FIXME items
Something isn't working
Maintenance, dependencies, cleanup
Improvement to existing feature
New functionality
Code restructuring without behavior change
Version bump or release
Inherited from upstream Gitea
Draft or incomplete work
Something is not working
Maintenance and housekeeping
Documentation improvements
Improvement to existing functionality
New feature or request
Blocked by another issue or external dependency
Tested and approved, awaiting deployment to production
Needs UI/UX or architecture design before implementation
Feature works, needs documentation/wiki update
Awaiting feedback or decision from stakeholder
Implementation complete, awaiting code review
Feature implemented but not yet tested
Must fix immediately
Should fix soon
Nice to have
Fix when convenient
Code restructuring without behavior change
Planned feature or enhancement tracked on the roadmap
Client-specific work
Dolibarr modules and customizations
Server, CI, backups, monitoring
Joomla templates and extensions
MokoWaaS platform
Security vulnerability or hardening
Waiting on external dependency
Duplicate of another issue
Being worked on
Ready for review
Will not be addressed
No labels
Status
—
Type
Feature
Status
—
Priority
—
Milestone
No items
No Milestone
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: MokoConsulting/MokoGitea#492
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Replace the hardcoded metadata columns in
update_stream_configwith org-level repo-scoped custom fields. The Update Server feed generator and all related workflows will read from custom field values instead of the dedicated config table columns.Scope
This is a multi-phase migration that touches MokoGitea code, moko-platform workflows, and all Joomla/Dolibarr repo manifests.
Phase 1: Create Custom Fields for All Metadata
Add org-level repo-scoped custom fields matching the
update_stream_configcolumns:platformextension_namedisplay_nameextension_typetarget_versionphp_minimumsupport_urldownload_gatingkey_prefixFields already created: Platform, Package Type (maps to Extension Type), Language, Entry Point, Standards Version
Fields still needed: Extension Name, Display Name, Target Version, PHP Minimum, Support URL, Download Gating, Key Prefix
Phase 2: Populate Values from Existing Config
For every repo with an
update_stream_configrow, copy the column values into the corresponding custom field values via SQL or API.Phase 3: Update Feed Generator
Refactor
services/updateserver/joomla.go(GenerateJoomlaXML) to read metadata from custom field values instead ofUpdateStreamConfig:Same for Dolibarr, WordPress, Composer, PrestaShop, Drupal, WHMCS generators.
Phase 4: Update Licensing Settings UI
The repo Settings > Update Server page currently has form fields for extension_name, display_name, etc. These should be removed since the data now lives in Settings > Metadata.
Keep only licensing-specific settings in Update Server:
Phase 5: Refactor moko-platform
Manifest Reader
cli/manifest_read.phpcurrently reads.mokogitea/manifest.xmlGET /api/v1/repos/{owner}/{repo}/metadataWorkflows
auto-release.ymluses manifest.xml for platform detectionpr-check.ymlvalidates manifest.xml formatrepo-health.ymlchecks for manifest.xml presenceBulk Sync
automation/sync-all-repos.shpushes manifest.xml to all reposPhase 6: Remove Old Columns
Once all consumers are migrated:
update_stream_config: extension_name, display_name, description, extension_type, maintainer, maintainer_url, info_url, target_version, php_minimum, support_url, key_prefixUpdateStreamConfigPhase 7: Deprecate manifest.xml
.mokogitea/manifest.xmlfrom all reposTesting Checklist
Dependencies
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com