v2.9.9-Preview-251
- Queue concurrent `saveApps` calls so later writes for the same app ID win and duplicate entries are collapsed. - Write each app JSON to a unique `.json.tmp_*` file and atomically rename it into place; clean up the temp file on failure. - Remove stale `.json.tmp*` files left by interrupted saves while loading apps. - Add tests verifying concurrent saves resolve to the latest write and failed replacements clean up their temp files.