This is a Solved issue.
I'm posting this to help anyone who runs into similar issues.
On dodbits.com (My main domain in the hosted files), JDownloads 4.x suddenly broke after a hosting change + Joomla update, while my other site sturmbot.org (same setup) worked fine.
Symptoms...
Categories auto‑unpublished
"Folder not found" warnings
Empty ZIP downloads
Scan tool creating duplicate categories/files
Some categories saved, others failed
Files visible in FTP but not detected by JDownloads
Root Cause
This was not a JDownloads bug.
My host compared dodbits.com with sturmbot.org and found two environment differences:
open_basedir did not include the JDownloads folders
Some folders under /public_html had incorrect ownership after migration
PHP‑FPM could not access the JDownloads directory, so JDownloads behaved as if folders were missing.
Fix
Host updated:
open_basedir to include /public_html/dods/jdownloads/
Ownership to match the correct PHP user
After that, JDownloads immediately worked normally. However, more had to be done in the JDownloads back end.
Cleanup
Renamed a few category folders (In public_html/<joomla install folder name>/jdownloads) to match category names exactly in the "JDownloads: Edit Category" screen, Some had a "_" where there should have been a space.
Published categories again
Saved each category
Warning - Ran Scan tool → deleted duplicate files → deleted duplicate categories (But... be careful as it can make duplicate categories and even downloads if that is done when the ownership of the folders isn't correct)
Everything is now stable.
Conclusion
This was caused when I migrated to a new host AND upgraded from Joomla 5X to version 6.1.3. The secondary domain was not affected by these issues, however the main domain had many issues when updating to Joomala ver 6, then the issues with JDownloads happened after that.
If JDownloads shows folder errors, empty ZIPs, or duplicate categories and permissions look correct, get your hosting team to check:
open_basedir
folder ownership
PHP‑FPM pool configuration
This solved the issue completely.
I hope this helps others.