QuickDID is a high-performance AT Protocol identity resolution service written in Rust. It provides handle-to-DID resolution with Redis-backed caching and queue processing.

release: 1.0.0-rc.3

Signed-off-by: Nick Gerakines <nick.gerakines@gmail.com>

+30
CHANGELOG.md
··· 7 7 8 8 ## [Unreleased] 9 9 10 + ## [1.0.0-rc.3] - 2025-09-06 11 + 12 + ### Added 13 + - SQLite support for persistent caching and queue processing 14 + - Rate limiting with semaphore-based concurrency control (`RESOLVER_MAX_CONCURRENT`) 15 + - Timeout support for rate limit permit acquisition (`RESOLVER_MAX_CONCURRENT_TIMEOUT_MS`) 16 + - SQLite queue adapter with work shedding capabilities (`QUEUE_SQLITE_MAX_SIZE`) 17 + - Comprehensive error system with unique identifiers (e.g., `error-quickdid-config-1`) 18 + - 12-factor app compliance with environment-only configuration 19 + 20 + ### Changed 21 + - Configuration now exclusively uses environment variables (removed clap dependency) 22 + - Command-line arguments limited to `--version` and `--help` only 23 + - Improved error handling with strongly-typed errors using `thiserror` throughout 24 + - Enhanced documentation with accurate configuration defaults and examples 25 + - Updated README with complete architecture overview and deployment strategies 26 + - Cache priority system: Redis → SQLite → Memory (first available) 27 + 28 + ### Fixed 29 + - Error messages now consistently follow `error-quickdid-<domain>-<number>` format 30 + - Configuration validation for all TTL and timeout values 31 + - Documentation inconsistencies in CLAUDE.md development guide 32 + - Queue adapter validation to include 'sqlite' option 33 + 34 + ### Removed 35 + - `clap` crate dependency (replaced with simple argument handling) 36 + - `anyhow!()` macro usage in favor of proper error types 37 + - Command-line configuration options (following 12-factor methodology) 38 + 10 39 ## [1.0.0-rc.2] - 2025-09-05 11 40 12 41 ### Changed ··· 51 80 - Unnecessary feature flags (axum macros, deadpool-redis script) 52 81 - 4 unused dependencies reducing compilation time 53 82 83 + [1.0.0-rc.3]: https://tangled.sh/@smokesignal.events/quickdid/tree/v1.0.0-rc.3 54 84 [1.0.0-rc.2]: https://tangled.sh/@smokesignal.events/quickdid/tree/v1.0.0-rc.2 55 85 [1.0.0-rc.1]: https://tangled.sh/@smokesignal.events/quickdid/tree/v1.0.0-rc.1
+1 -1
Cargo.lock
··· 1895 1895 1896 1896 [[package]] 1897 1897 name = "quickdid" 1898 - version = "1.0.0-rc.2" 1898 + version = "1.0.0-rc.3" 1899 1899 dependencies = [ 1900 1900 "anyhow", 1901 1901 "async-trait",
+1 -1
Cargo.toml
··· 1 1 [package] 2 2 name = "quickdid" 3 - version = "1.0.0-rc.2" 3 + version = "1.0.0-rc.3" 4 4 edition = "2024" 5 5 authors = ["Nick Gerakines <nick.gerakines@gmail.com>"] 6 6 description = "A fast and scalable com.atproto.identity.resolveHandle service"
+1 -1
Dockerfile
··· 19 19 LABEL org.opencontainers.image.licenses="MIT" 20 20 LABEL org.opencontainers.image.authors="Nick Gerakines <nick.gerakines@gmail.com>" 21 21 LABEL org.opencontainers.image.source="https://tangled.sh/@smokesignal.events/quickdid" 22 - LABEL org.opencontainers.image.version="1.0.0-rc.2" 22 + LABEL org.opencontainers.image.version="1.0.0-rc.3" 23 23 24 24 WORKDIR /app 25 25 COPY --from=builder /app/target/release/quickdid /app/quickdid
+1 -1
docs/production-deployment.md
··· 158 158 # Identifies your service to other AT Protocol services 159 159 # Default: Auto-generated with current version from Cargo.toml 160 160 # Format: quickdid/{version} (+https://github.com/smokesignal.events/quickdid) 161 - USER_AGENT=quickdid/1.0.0-rc.2 (+https://quickdid.example.com) 161 + USER_AGENT=quickdid/1.0.0-rc.3 (+https://quickdid.example.com) 162 162 163 163 # Custom DNS nameservers (comma-separated) 164 164 # Use for custom DNS resolution or to bypass local DNS