What's New
S3 Backend Compatibility
- S3 key encoding for SeaweedFS and Garage —
@and special characters in object keys now properly encoded (#258) - S3 colon in digest paths — SHA-256 digest paths with colons work correctly on all S3 implementations (#254)
- Tested S3 backends: MinIO, SeaweedFS, Garage — all 13 registries work with each backend
Registry Improvements
- Repo index for all 13 registries — browse UI now shows packages for NuGet, RubyGems, Terraform, Ansible, Pub, Conan (#252)
- Circuit breaker for upstream health tracking — prevents cascading failures when upstreams are down (#252)
- TLS CA support — custom CA certificates for HTTPS upstreams behind corporate proxies (#252)
- NuGet HTTPS scheme — service index URLs now respect
public_urlscheme, fixing Visual Studio/dotnet restore behind reverse proxy (#258) - Cache-Control headers for Terraform, NuGet, RubyGems, Conan, Ansible (#251)
UI & UX
- Folder icons and install commands for all 13 registries
- NuGet version list with expand/collapse
- Maven hierarchical browsing
- Detail pages for NuGet, RubyGems, Terraform, Ansible, Pub, Conan
Reliability
- Proxy index invalidation moved to after successful storage write (prevents stale cache on S3 failures)
- Storage errors in proxy handlers logged instead of being silently swallowed
- NuGet gzip decompression for registration API responses
- Ansible Galaxy API v3 discovery
Bug Fixes
- Fix
@encoding in S3 keys causing SeaweedFS 400 errors (#257, #258) - Fix NuGet service index generating
http://URLs whenpublic_urlishttps://(#256, #258) - Fix repo index not updating for new-format registries after proxy cache (#252)
CI & Quality
- Changelog verification gate — validates release note claims against code (#242)
- git-cliff automation for conventional changelog (#239)
- Dead code cleanup — removed unused functions and modules (#250)
Stats
- Tests: 898 passed
- Image:
ghcr.io/getnora-io/nora:0.8.1