Releases: StarryReverie/selector4nix
Releases · StarryReverie/selector4nix
Release list
v0.10.0 Release
https://github.com/StarryReverie/selector4nix/blob/v0.10.0/CHANGELOG.md
What's Changed
- Add
/{storePathHash}.lsendpoint by @StarryReverie in #168 - feat: add substituters[].max_concurrent_requests for per-substituter concurrency limits by @luochen1990 in #167
- feat: add proxy.resolution_policy for tiered substituter querying by @luochen1990 in #166
- Polish configuration page in dashboard for better UX by @StarryReverie in #169
- Sort substituter list in dashboard deterministically by @StarryReverie in #170
- Update staled license declaration in readme by @StarryReverie in #171
- chore(deps): bump Rust dependency redb to 4.2.0 by @renovate[bot] in #172
- Optimize
/{storePathHash}.lsendpoint's responsiveness by @StarryReverie in #173 - Change npm dependencies to
devDependenciesand maintain npm lockfile by @StarryReverie in #174 - chore(deps): bump Node.js dependency vite to 8.2.2 by @renovate[bot] in #175
- Add
/log/{deriver}endpoint by @StarryReverie in #176 - chore(deps): bump Rust dependency log to 0.4.34 by @renovate[bot] in #177
- Change some error kinds from
RuletoInputby @StarryReverie in #178
New Contributors
- @luochen1990 made their first contribution in #167
Full Changelog: v0.9.1...v0.10.0
v0.9.1 Release
https://github.com/StarryReverie/selector4nix/blob/v0.9.1/CHANGELOG.md
What's Changed
- chore(deps): bump Rust dependency minijinja to 2.22.0 by @renovate[bot] in #148
- chore(deps): bump Rust dependency minijinja-autoreload to 2.22.0 by @renovate[bot] in #149
- Add a workaround for harmonia when requesting NARs using chunked streaming by @StarryReverie in #150
- chore(deps): bump Rust dependency minijinja-autoreload to 2.23.0 by @renovate[bot] in #154
- chore(deps): bump Rust dependency clap to 4.6.6 by @renovate[bot] in #152
- chore(deps): bump Node.js dependency vite to 8.2.1 by @renovate[bot] in #151
- chore(deps): bump Rust dependency async-trait to 0.1.92 by @renovate[bot] in #155
- Update substituter's status after acquiring a NAR stream by @StarryReverie in #158
- chore(deps): bump Rust dependency moka to 0.12.16 by @renovate[bot] in #159
- chore(deps): bump rust-futures monorepo to 0.3.34 by @renovate[bot] in #160
- chore(deps): bump Rust dependency minijinja-autoreload to 2.24.0 by @renovate[bot] in #161
- Add a workaround for ranged HTTP responses with 200 of subsequent chunks for harmonia by @StarryReverie in #163
- Fix stateful parameters preserving and forgetting NAR URL's query parameters from upstream on cache miss by @StarryReverie in #164
- Refactor by enforcing invariants of parsing NAR query parameters by @StarryReverie in #165
Full Changelog: v0.9.0...v0.9.1
v0.9.0 Release
https://github.com/StarryReverie/selector4nix/blob/v0.9.0/CHANGELOG.md
What's Changed
- chore(deps): bump Rust dependency futures to 0.3.33 by @renovate[bot] in #101
- chore(deps): bump Rust dependency anyhow to 1.0.104 by @renovate[bot] in #108
- chore(deps): bump Rust dependency async-trait to 0.1.91 by @renovate[bot] in #109
- chore(deps): bump Rust dependency serde to 1.0.229 by @renovate[bot] in #110
- chore(deps): bump Rust dependency fastrand to 2.5.0 by @renovate[bot] in #111
- Add periodic cache cleanup by @StarryReverie in #112
- Refactor by extracting common test fixtures helpers by @StarryReverie in #115
- chore(deps): bump Rust dependency serde_json to 1.0.151 by @renovate[bot] in #114
- chore(deps): bump Rust dependency clap to 4.6.3 by @renovate[bot] in #113
- chore(deps): bump Rust dependency tokio to 1.53.1 by @renovate[bot] in #116
- chore(deps): bump Rust dependency snafu to 0.9.2 by @renovate[bot] in #117
- Add active NAR transferring display in dashboard by @StarryReverie and @XYenon in #118
- Refactor by reorganizing crates by @StarryReverie in #119
- Add pre-built binary caching support based on Cachix by @StarryReverie in #120
- chore(deps): bump Rust dependency toml to 1.1.4 by @renovate[bot] in #121
- Build Nix derivations with crane by @StarryReverie in #122
- Add caching for Nix-based workflows and validate workspace hack crate by @StarryReverie in #127
- Update all Rust crates and workspace hack by @StarryReverie in #130
- chore(deps): bump Rust dependency http to 1.5.0 by @renovate[bot] in #132
- Refactor by rewriting dashboard overview page by @StarryReverie in #133
- Set renovate bot's commit message format for Node.js dependencies by @StarryReverie in #135
- Fix CI cache miss by adding extra dependent substituters by @StarryReverie in #137
- Fix
unused_variableswarning by @StarryReverie in #136 - chore(deps): bump Node.js dependency vite to 8.2.0 by @renovate[bot] in #134
- Refactor by restructuring modules and renaming usecases in application layer by @StarryReverie in #138
- chore(deps): bump Rust dependency clap to 4.6.5 by @renovate[bot] in #139
- Add treefmt configuration by @StarryReverie in #140
- Add transferring page to the new dashboard by @StarryReverie in #141
- Add cache page to the new dashboard by @StarryReverie in #142
- Change configuration schema and apply stricter configuration validation by @StarryReverie in #143
- Add configuration page to the new dashboard and remove the old dashboard by @StarryReverie in #145
- Sort substituters by priority for overview page by @StarryReverie in #146
- Add a changelog file by @StarryReverie in #147
Full Changelog: v0.8.0...v0.9.0
v0.8.0 Release
Highlights
- Concurrent chunked NAR transfer: NAR files are now fetched through multiple concurrent connections. This feature is enabled by default and transparently falls back to single-connection transfer for servers that do not support range requests. Credits to @mio-19 for the idea.
- Status dashboard: The proxy's web interface now displays a live dashboard showing substituter availability, cache statistics, and current configuration.
- Earlier substituter fallback: NAR file streaming now detects unavailable substituters sooner and falls back to alternatives without waiting for timeouts.
New Features
- Added concurrent chunked NAR file transfer, enabled by default. Configurable via
network.chunked_streaming,network.streaming_chunk_max_len, andnetwork.streaming_window_max_len. - Added a dynamic status dashboard at the proxy's root URL.
Improvements
- NAR file streaming falls back to alternative substituters earlier when the selected substituter becomes unavailable.
What's Changed
- chore(deps): bump Rust dependency anyhow to 1.0.103 by @renovate[bot] in #79
- chore(deps): bump Rust dependency arc-swap to 1.9.2 by @renovate[bot] in #80
- feat(frontend): add dynamic status dashboard by @XYenon in #81
- chore(deps): bump Rust dependency serde_json to 1.0.150 by @renovate[bot] in #82
- Polish dashboard UI by @StarryReverie in #84
- Deprecate build support by garnix by @StarryReverie in #85
- Fallback earlier when streaming NAR file if selected substituter is already unavailable by @StarryReverie in #86
- chore(deps): bump Rust dependency bytes to 1.12.1 by @renovate[bot] in #87
- Refactor by extracting streaming client to subcrate by @StarryReverie in #88
- Add concurrent chunked NAR file transfer by @StarryReverie in #89
- Update flake inputs and bump Rust toolchain version to 1.96.1 by @StarryReverie in #90
- Revert "chore: update flake inputs and bump Rust toolchain version to 1.96.1" by @StarryReverie in #91
- Add configuration items for chunked NAR streaming by @StarryReverie in #92
- chore(deps): bump Rust dependency toml to 1.1.3 by @renovate[bot] in #93
- Enable all testcases from all crates in the workspace by @StarryReverie in #94
- Add CONTRIBUTING.md, architecture, and conventions documentations by @StarryReverie in #96
- chore(deps): bump Rust dependency which to 8.0.5 by @renovate[bot] in #95
- chore(deps): bump Rust dependency clap to 4.6.2 by @renovate[bot] in #97
- Refactor by unifying error handling and re-designing API by @StarryReverie in #100
- chore(deps): bump Rust dependency tokio to 1.53.0 by @renovate[bot] in #98
Full Changelog: v0.7.0...v0.8.0
v0.7.0 Release
What's Changed
- feat: carry credentials when downloading NAR files by @XYenon in #72
- chore(deps): bump Rust dependency getset to 0.1.7 by @renovate[bot] in #71
- chore(deps): bump Rust dependency which to 8.0.4 by @renovate[bot] in #73
- chore(deps): bump Rust dependency bytes to 1.12.0 by @renovate[bot] in #74
- chore(deps): update actions/checkout action to v7 by @renovate[bot] in #75
- Passthrough
curl and Nix client User-Agent to upstream substituters by @StarryReverie in #76 - Enable
__structuredAttrsfor all derivations by @StarryReverie in #77 - Apply NAR file streaming throttling per substituter host by @StarryReverie in #78
Full Changelog: v0.6.1...v0.7.0
v0.6.1 Release
What's Changed
- chore(deps): bump Rust dependency which to 8.0.3 by @renovate[bot] in #69
- Fix NAR info request timeout reported by Nix client by @StarryReverie in #70
Full Changelog: v0.6.0...v0.6.1
v0.6.0 Release
Highlights
- Persistent query result caching: Query results can now be persisted to disk via the
--cache-dirCLI flag orSELECTOR4NIX_CACHE_DIRenvironment variable, allowing cache survival across process restarts - Module support for persistent caching: Added
enablePersistentCachingoption to NixOS, nix-darwin, and Home Manager modules - Internal refactoring: Ongoing refactoring of the internal architecture to improve long-term maintainability
- System testing: Added system tests for cache persistence, and parallelized the CI test workflow for faster feedback
New Features
- Added optional persistent caching for NAR info and NAR file location query results, configurable via
--cache-dirflag,SELECTOR4NIX_CACHE_DIRenvironment variable, or theenablePersistentCachingmodule option - Set a more conservative default for maximum concurrent requests
Bug Fixes
- Fixed 403 errors when fetching crates during Nix builds
What's Changed
- Allow manually triggering workflows by @StarryReverie in #44
- Refactor by removing dead code in
Substituteraggregate by @StarryReverie in #45 - Refactor by replacing index with
Substituterrepository by @StarryReverie in #46 - chore: Configure Renovate by @renovate[bot] in #47
- Fix 403 errors when fetching crates by using fix in nixos-unstable-small by @StarryReverie in #54
- Fix false-positive CI failures by dropping magic-nix-cache-action by @StarryReverie in #51
- chore(deps): bump Rust dependency reqwest to 0.13.4 by @renovate[bot] in #48
- chore(deps): bump Rust dependency which to 8.0.2 by @renovate[bot] in #52
- chore(deps): bump Rust dependency tokio to 1.52.3 by @renovate[bot] in #49
- Add TTL-cache KVDB utility by @StarryReverie in #55
- Refactor by extracting common domain models to a shared module by @StarryReverie in #56
- Use explicit expiry management for NAR info by @StarryReverie in #57
- Add in-memory repository for
NarInfoby @StarryReverie in #58 - Add optional persistent caching along with existing in-memory caching by @StarryReverie in #59
- chore(deps): bump Rust dependency snafu to 0.9.1 by @renovate[bot] in #60
- Add explicit expiry management for NAR file and optionally use persistent caching by @StarryReverie in #62
- Move renovate.json by @StarryReverie in #63
- Add
enablePersistentCachingoption for NixOS/nix-darwin/Home Manager modules by @StarryReverie in #61 - Refactor by extracting common system test utilities by @StarryReverie in #64
- Add system test for query result cache persistence by @StarryReverie in #65
- Parallelize system test workflow via dynamic matrix by @StarryReverie in #66
- chore(deps): re-target nixpkgs on nixos-unstable and update flake inputs by @StarryReverie in #67
- Set a more conservative
max_concurrent_requestsdefault value by @StarryReverie in #68
New Contributors
Full Changelog: v0.5.0...v0.6.0
v0.5.0 Release
Highlights
- Private substituter authentication: Private caches can now be accessed via HTTP Basic authentication, with a dedicated credentials file and
credentialFileoption in NixOS/nix-darwin/Home Manager modules for declarative setup - Auxiliary endpoints and home page: Added a
/healthendpoint for health checking, an optionalpriorityquery parameter to/nix-cache-infoendpoint, and a simple landing page at the root path - Internal refactoring: Ongoing refactoring of the internal architecture and Nix flake structure to improve long-term maintainability
- System testing: Added automated system tests running in CI across Linux and Darwin platforms
New Features
- Added support for private substituters via HTTP Basic authentication, with a dedicated credentials file
- Added
credentialFileoption to NixOS, nix-darwin, and Home Manager modules for declarative credential configuration - Added optional
priorityparameter per substituter, reflected in the/nix-cache-inforesponse - Improved substituter probing and health recovery strategy
- Added
/healthendpoint - Added a landing home page
Bug Fixes
- Fixed credential file having no read permission when running as a systemd dynamic user service
Documentation
- Clarified licensing scope for Rust source code, Nix code, and documentation
What's Changed
- Refactor by simplify component naming and changing module structure by @StarryReverie in #26
- Refactor by improving
Substituteraggregate cohesion by @StarryReverie in #27 - Add a dedicated configuraion file for development environment by @StarryReverie in #28
- Improve the strategy of substituter probing and health recovery by @StarryReverie in #29
- Add support for private substituter based on HTTP Basic authentication by @StarryReverie in #30
- Add
credentialFileoption to NixOS/nix-darwin/Home Manager modules by @StarryReverie in #31 - Update flake inputs by @StarryReverie in #32
- Add system test for NAR info querying by @StarryReverie in #33
- Register system test executables in Nix flake and add system test workflow by @StarryReverie in #34
- Update rust toolchain to 1.95.0 by @StarryReverie in #35
- Support cooperative shutdown mechanism in internal actor runtime by @StarryReverie in #36
- Add optional
priorityparameter in/nix-cache-infoendpoint by @StarryReverie in #37 - Add
/healthendpoint by @StarryReverie in #38 - Add home page by @StarryReverie in #39
- Refactor Nix Flake by using flake-parts partition by @StarryReverie in #40
- Fix no read permission for credential file when running as systemd dynamic user service by @StarryReverie in #41
- Use magic-nix-cache-action in workflows by @StarryReverie in #42
- Clarify licenses and add documentation sections by @StarryReverie in #43
Full Changelog: v0.4.2...v0.5.0
v0.4.2 Release
What's Changed
- Fix race condition in
NarInfoquery task cancellation by @StarryReverie in #25
Full Changelog: v0.4.1...v0.4.2
v0.4.1 Release
Highlights
- Harmonia compatibility fix: Fixed parsing of non-compressed NAR files, improving compatibility with substituters like Harmonia
- Progressive Refactoring: Improved internal architecture for long-term maintainability.
Bug Fixes
- Fixed query parameters being dropped when extracting NAR file names from relative upstream NAR info URLs
- Fixed failure to parse non-compressed NAR URLs (
.narextension without compression suffix) from harmonia and other substituters
What's Changed
- Refactor
Naraggregate by spliting itNarInfoandNarFileby @StarryReverie in #21 - Refactor by decoupling
NarInfoandNarFileaggregates by @StarryReverie in #22 - Refactor by spliting
NarInfoDatainto two more specific variants by @StarryReverie in #23 - Fix query params dropping and failure of parsing non-compressed NAR URL by @StarryReverie in #24
Full Changelog: v0.4.0...v0.4.1