- README.md is now English (was README.en.md)
- README.zh.md is now Chinese (was README.md)
- Updated all cross-language links in README.md, README.zh.md, README.ja.md
- No content changes, only file rename and link updates
- Add scripts/gemini_image_generate.py to repo (was only in local skill dir)
- Update SKILL.md section 4: add step-by-step setup for image generation env
- No changes to app.py or any existing logic; script is a standalone addition
- Users can now set up image generation by following SKILL.md instructions
- POST /assets/generate-rpg-background now returns immediately with a
task_id, runs generation in a background thread
- Added GET /assets/generate-rpg-background/poll?task_id=xxx for
frontend to poll completion status
- Frontend polls every 3s with elapsed time display
- Prevents Cloudflare's 100s timeout from killing the connection
- Also extracted shared error handling into _handleGenError()
The fetchStatus function had a duplicated else branch that broke the
try/catch structure, resulting in 'Missing catch or finally after try'
error which prevented the entire page from loading.
- add_no_cache_headers now only applies long-cache headers to 2xx responses
- non-2xx static responses (e.g. 404) get no-cache to prevent CDN from
caching error pages (which was the root cause of office.hyacinth.im
failing to load - Cloudflare cached a 404 for phaser.js for 2.7 days)
- add version cache-bust param to phaser.js script tag (matching all
other static assets)