✨ Enhancements
- download: serve HTTP Range on the proxy route - by @peter-svensson, chenrui333, @LouisHaftmann, Claude Opus 5.5 and @chenrui333 in #270 (f894c)
- storage: add Azure Blob Storage driver - by @LouisHaftmann, Jonas Beck and Claude Opus 5.5 in #280 (b4c66)
🐛 Fixes
- download: pipe the body instead of sendStream - by @LouisHaftmann, @peter-svensson, @chenrui333 and Claude Opus 5.5 in #282 (5b498)
- storage:
- return already_exists for a duplicate entry - by @pcmxgti, @LouisHaftmann and Claude Opus 5.5 in #277 (25b48)
- stop concurrent CreateCacheEntry calls from reserving the same entry twice - by @LouisHaftmann and Claude Opus 5.5 in #283 (a0918)
- match cache keys exactly on every database, like GitHub does - by @LouisHaftmann and Claude Opus 5.5 in #286 (0fd30)
- upload:
- let storage pace the block body instead of buffering it - by @chenrui333 in #275 (ca311)
- fail a block with 404 instead of silently dropping it - by @LouisHaftmann and Claude Opus 5.5 in #285 (c92b8)
🔧 Chore
- release: v9.9.0 - (aedd8)
📦 Build
- standardize on Node 26 - by @LouisHaftmann in #272 (c8760)
- pin Node to 26.12.1 and upgrade pnpm to 12 - by @LouisHaftmann and Claude Opus 5.5 in #287 (1e174)