Replace file-path-based zip entries with in-memory content via file_get_contents. Rename .pro entry to 'data' (raw protobuf), add addStoredEntry() helper with CM_STORE compression, and remove temp directory management.
- Create ProBundleExportService with generateBundle() method - Generate flat ZIP with .pro file + image files at root level - Add downloadBundle() method to ServiceController - Add services.download-bundle route - Add .probundle download buttons to Information, Moderation, Sermon blocks - Add 3 tests verifying ZIP structure and validation - All tests pass (206/206, 1129 assertions)