Bug: update.sh overwrites locally-refreshed catalog data
update.sh uses rsync --delete to copy application files, which overwrites apps/lxc/data/community_scripts.json and apps/vmcreator/data/vm_community_scripts.json with the versions committed to the repo at release time. Any catalog data the user had refreshed via the UI is lost, and they must manually click "Update" in the LXC and VM community scripts sections again after every app update.
Proposed Fix
1. GitHub Actions weekly catalog rebuild
Add a scheduled workflow file at .github/workflows/rebuild-catalogs.yml that runs on GitHub's own infrastructure (no impact on the user's server). Every Sunday, GitHub spins up a temporary runner that:
- Checks out the ProxOrchestrator repo
- Runs
apps/lxc/build_catalog.py and apps/vmcreator/build_vm_catalog.py, which clone the upstream community-scripts/ProxmoxVE repo and parse the latest script metadata
- Commits any changes to
community_scripts.json, community_categories.json, vm_community_scripts.json, and vm_community_categories.json back to the repo (requires contents: write permission on the workflow — standard for this pattern)
This means the bundled catalog data in the repo stays fresh automatically. New installs ship with recent script data out of the box, and update.sh naturally pulls the latest JSON via git as part of the normal update flow — no manual refresh needed.
2. Post-update catalog refresh in update.sh
The weekly CI run keeps the bundled data current to within ~7 days, but update.sh should also trigger a background catalog rebuild after migrations and service restart — wrapping the existing rebuild_catalog() logic in a Django management command. This closes the gap between the last CI run and the actual update date, ensuring users always get fully current data after updating.
Expected outcome
- New installs: catalog is already populated with recent scripts
- After
update.sh: catalog is automatically refreshed to the latest available data
- Users never need to manually trigger a catalog update unless they want an on-demand mid-week refresh
Bug:
update.shoverwrites locally-refreshed catalog dataupdate.shusesrsync --deleteto copy application files, which overwritesapps/lxc/data/community_scripts.jsonandapps/vmcreator/data/vm_community_scripts.jsonwith the versions committed to the repo at release time. Any catalog data the user had refreshed via the UI is lost, and they must manually click "Update" in the LXC and VM community scripts sections again after every app update.Proposed Fix
1. GitHub Actions weekly catalog rebuild
Add a scheduled workflow file at
.github/workflows/rebuild-catalogs.ymlthat runs on GitHub's own infrastructure (no impact on the user's server). Every Sunday, GitHub spins up a temporary runner that:apps/lxc/build_catalog.pyandapps/vmcreator/build_vm_catalog.py, which clone the upstreamcommunity-scripts/ProxmoxVErepo and parse the latest script metadatacommunity_scripts.json,community_categories.json,vm_community_scripts.json, andvm_community_categories.jsonback to the repo (requirescontents: writepermission on the workflow — standard for this pattern)This means the bundled catalog data in the repo stays fresh automatically. New installs ship with recent script data out of the box, and
update.shnaturally pulls the latest JSON via git as part of the normal update flow — no manual refresh needed.2. Post-update catalog refresh in
update.shThe weekly CI run keeps the bundled data current to within ~7 days, but
update.shshould also trigger a background catalog rebuild after migrations and service restart — wrapping the existingrebuild_catalog()logic in a Django management command. This closes the gap between the last CI run and the actual update date, ensuring users always get fully current data after updating.Expected outcome
update.sh: catalog is automatically refreshed to the latest available data