v1.7.4
The 1.7 line — "Reach + Pro." Getting knowledge around: peer-to-peer and LAN ZIM sharing, BitTorrent with mirror nodes that carry a whole catalogue through an internet blackout, accessibility, and UX that holds up at 1000+ ZIMs — while the almanac quietly grew up. This release caps that arc.
Closes the two live issues the post-1.7.3 audit surfaced, and grows the almanac up: an accurate Chinese calendar, a real high-res moon, and a solar system you can travel out to.
🔒 Security
/dl/no longer serves whole ZIMs to the public internet on host-networked deploys behind a containerized reverse proxy. Honors Cloudflare's un-forgeableCF-Connecting-IP, trusts a forwarded client only from a private proxy hop (optionalZIMI_TRUSTED_PROXIESallowlist), and refuses forwarded values claiming loopback.
🌘 Almanac
- Accurate Chinese calendar — real astronomical new moons + solar-term leap months; verified against the HK Observatory (New Year dates + leap months 2014–2033). Browsable calendar system with the 闰 leap marker and correct zodiac.
- Holidays on every calendar — worldwide/regional/astronomical events (international days, Easter cycle, solstices, meteor showers, Hindu/Sikh) project onto Hebrew/Islamic/Chinese/… grids by absolute date instead of vanishing off Gregorian.
- Real high-res moon — reprojected from NASA's seamless lunar albedo map (genuine crater detail, subtle true colour); the animated sky moon shares the hero's shading, earthshine dark side and all.
- Travel the solar system — Voyager 1/2, Pioneer 10/11 and New Horizons plotted at their real bearings past Neptune, creeping outward as the clock runs, framed by labelled asteroid, Kuiper and heliopause markers.
- Easier location — the world map cycles through overlapping cities on repeated clicks; search reaches 354 cities.
🐛 Fixed
- A libzim segfault under normal use — a background thread read a shared archive with no lock; it now uses its own handle. Added a real-ZIM concurrency stress test.
- Search could silently drop a ZIM under concurrent load (archive published before its lock).
- LAN discovery advertised the wrong BitTorrent port when a custom port was set.
- Malformed HTTP Range headers no longer 500 the download endpoint.
- Clean "Zimi" almanac breadcrumb; in-place location refresh (no scroll jump/flash).
✨ Added
- New / Updated ZIM badges — clear the moment you open the ZIM, week backstop.
- Country holidays get their own colour on the calendar.
660 tests green. Full detail in CHANGELOG.md.
🤖 Generated with Claude Code