- Consolidate 4 JSON cache files into .cache/ folder
- Update all path references in recommender.py and 3 scripts
- Update README.md with new cache paths
- New cities: Hong Kong, Singapore, Amsterdam, Berlin, Vienna,
Lisbon, Budapest, Athens, Mumbai, Mexico City
- All 28 cities now have LLM recommendations (7 categories each)
- Japanese and Traditional Chinese translations pre-warmed for all
- Updated README with ✈️ logo and latest documentation
- Updated warmup.py CITIES list to include all 28
- .gitignore .hermes/ directory
Replace fragile md5(content-hash) key with deterministic
(city, cat_hash, language) key. Survives image enrichment,
field re-ordering, and any content-level changes. Fixes
translation spinner on any language switch (e.g. Japanese
-> Traditional Chinese).
- Root cause: max_tokens=2048 truncated LLM output, dropping _local fields
- Fixed: bumped to 8192 in translate_items()
- Enhanced prompt + auto-retry with warning when _local fields missing
- All 28 Tokyo/Kyoto combos translated (14× Japanese + 14× Traditional Chinese)
- Full 4 _local fields present on every item
Items that can't find a specific image now get image_url='' instead
of sharing a generic city photo. Frontend already shows 🏛️ emoji
fallback for empty image_url.
Also added 10 new cities to warmup queue.
Improve image enrichment: city context in Tier 1 + smarter warmup health check
- _fetch_wiki_image() now accepts city param — tries '{name}, {city}'
and '{name} ({city})' search queries when bare name yields few candidates
- _enrich_one_item() passes city to Tier 1 (was only used by Tiers 2-6)
- check_items() in warmup: 3-pass fix (missing → fallback replace → retry),
detects city-level fallback images shared by >=3 items and replaces them
- New --fix mode: re-check existing cached images without LLM calls
(python scripts/warmup.py --fix --city Tokyo)
- Image cache cleaned: 540 → 519 entries (transients removed)
Unified warmup script + provider observability + Tokyo caches
- New scripts/warmup.py: unified warmup with per-combo checkpointing
(saves all 3 caches after every combo), per-provider logging,
health check + duplicate detection built in, resumable progress
- Added provider_log parameter to get_recommendations() and
get_recommendations_cached() — captures provider name, model,
status, timing, item count per attempt
- Added duplicate image detection to check_cache.py (fallback fix)
- Tokyo caches populated: all 7 categories (19 or 16 items each)
- LLM 44, Images 543, Geocode 142 entries
v0.0.5 — Deterministic cache, Surprise Me, image fixes, health check