Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions crates/rattler/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Changed

- prefix.dev OAuth logins now request Basilisk query access while retaining channel access. Pixi users must upgrade to the eventual Pixi release containing this change, then run `pixi auth logout prefix.dev` and `pixi auth login prefix.dev` to update existing credentials.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this can be removed its auto generated


## [0.48.1](https://github.com/conda/rattler/compare/rattler-v0.48.0...rattler-v0.48.1) - 2026-08-03

### Other
Expand Down
21 changes: 19 additions & 2 deletions crates/rattler/src/cli/auth.rs
Original file line number Diff line number Diff line change
Expand Up @@ -268,14 +268,15 @@ fn normalize_login_host(host: &str) -> String {
.unwrap_or_else(|| host.trim_end_matches('/').to_string())
}

/// prefix.dev's default channel scopes
/// prefix.dev's default OAuth scopes.
#[cfg(feature = "oauth")]
const PREFIX_DEV_OAUTH_SCOPES: &[&str] = &[
"openid",
"profile",
"offline_access",
"channel:read",
"channel:upload",
"basilisk:query",
];

/// Built-in OAuth defaults for a known host.
Expand Down Expand Up @@ -1524,7 +1525,23 @@ mod tests {
let prefix = default_oauth_config_for_host("prefix.dev").unwrap();
assert_eq!(prefix.issuer_url, "https://prefix.dev");
assert_eq!(prefix.client_id, "rattler");
assert!(prefix.scopes.iter().any(|s| s == "channel:upload"));
assert_eq!(
prefix
.scopes
.into_iter()
.collect::<std::collections::HashSet<_>>(),
[
"openid",
"profile",
"offline_access",
"channel:read",
"channel:upload",
"basilisk:query",
]
.into_iter()
.map(ToString::to_string)
.collect()
);
}

#[cfg(feature = "oauth")]
Expand Down
3 changes: 3 additions & 0 deletions crates/rattler_networking/src/oauth_refresh.rs
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,9 @@ mod tests {
let success_count = success_count.clone();
let invalid_grant_count = invalid_grant_count.clone();
move |form| {
// Omitting scope preserves the originally granted channel and
// Basilisk access (RFC 6749 section 6).
assert!(!form.contains_key("scope"));
let presented = form.get("refresh_token").cloned().unwrap_or_default();
let mut valid = valid_refresh_token.lock().unwrap();
if presented == *valid {
Expand Down
Loading