Conversation
The `ProjectDirs::from(...)` API and `data_dir()` accessor we use are unchanged across the 6.x major; the bump is a clean drop-in. The 5 -> 6 release otherwise tightens platform-specific path resolution (notably some Windows / macOS edges) and dropped support for older Rust toolchains. Lockfile shrinks because directories 6 prunes a few transitive duplicates (e.g. dirs-sys variants). Smoke test: cargo build --release --locked / cargo test green; binary launches, settings load.
There was a problem hiding this comment.
Pull request overview
Updates the directories crate to the v6 major release to keep dependencies current while maintaining the existing settings/data directory resolution logic in src/dirs.rs.
Changes:
- Bump
directoriesdependency from5.0.1to6. - Update
Cargo.locktodirectories 6.0.0and its transitive dependency graph (dirs-sys,windows-sys,redox_users, etc.).
Reviewed changes
Copilot reviewed 1 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| Cargo.toml | Bumps directories to major v6. |
| Cargo.lock | Locks directories 6.0.0 and updates transitive dependencies accordingly. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| [dependencies] | ||
| async-io = "2" | ||
| directories = "5.0.1" | ||
| directories = "6" |
There was a problem hiding this comment.
Bumping directories to v6 can change the resolved data directory on Windows/macOS (per upstream’s platform path tightening). Since CI currently only runs on Ubuntu, consider adding at least a basic Windows/macOS build/smoke test (or explicitly documenting that Linux is the only supported platform) to avoid shipping a silent settings-location change on those platforms.
| directories = "6" | |
| directories = "5" |
There was a problem hiding this comment.
Declining the suggestion to revert to directories = "5" — the whole point of this PR is to take the major bump (one of the held-back items from #16). The Win/Mac path-resolution tightening you mention is real but is upstream's call, not something to dodge by staying on 5 forever. Cross-platform smoke test in CI is a fair separate ask, tracked-worthy if you want me to file an issue. For Linux (the only platform actually shipped today via release.yaml) the path layout under ~/.local/share/daplink-easyflash/ is unchanged.
| async-io = "2" | ||
| directories = "5.0.1" | ||
| directories = "6" | ||
| iced = "0.13.1" |
There was a problem hiding this comment.
directories v6 drops support for older Rust toolchains; since the project doesn’t currently declare an MSRV (no rust-version in [package]), it may be worth adding one so users get a clear error if they build with an older compiler than your supported baseline.
Per Copilot review on PR #19. directories 6 dropped support for older toolchains, so making the project's baseline explicit avoids a confusing build error for users on an older rustc. 1.80 matches the highest MSRV among our current direct deps (iced 0.13). Will bump when iced 0.14 lands.
Summary
Second of the held-back majors from #16. After auditing our usage in src/dirs.rs, the bump is API-compatible:
ProjectDirs::from("cc", "steami", "daplink-easyflash")— unchanged signature..data_dir()accessor — unchanged signature.directories 6.0.0mostly tightened platform path resolution on Windows and macOS and dropped older Rust toolchain support. No runtime behavior change for our XDG-data layout on Linux, the path of record for the project.Test plan
cargo build --release --lockedgreen locally.cargo test --release --lockedgreen (4 tests still pass).Settings loaded !printed (thedirs::get_settings_dir()round-trip works).Held back from #16
This is the second of two pending majors (after #18 for iced 0.14). After this lands, only
sysinfo 0.31 -> 0.38remains.