commit 6010c5c8a94c1c09669506f8d0909b201835885e
parent 3e873414506d509799cc36d1a6c2722e4fb533cc
Author: triesap <tyson@radroots.org>
Date: Fri, 17 Jul 2026 22:08:43 +0000
build: qualify current NIP-46 dependency baseline
- align the standalone toolchain with Rust 1.97
- refresh the Nix overlay and valid library search paths
- adopt metadata-aware connect constructors and logout policy
- update schema expectations for the qualified signer migration
Diffstat:
9 files changed, 40 insertions(+), 8 deletions(-)
diff --git a/Cargo.toml b/Cargo.toml
@@ -3,7 +3,7 @@ name = "myc"
version = "0.1.0"
edition = "2024"
authors = ["Radroots Authors"]
-rust-version = "1.92.0"
+rust-version = "1.97.0"
license = "AGPL-3.0-or-later"
description = "Radroots NIP-46 remote signer for delegated Nostr accounts"
diff --git a/flake.lock b/flake.lock
@@ -29,11 +29,11 @@
]
},
"locked": {
- "lastModified": 1774926780,
- "narHash": "sha256-JMdDYn0F+swYBILlpCeHDbCSyzqkeSGNxZ/Q5J584jM=",
+ "lastModified": 1784265529,
+ "narHash": "sha256-ohQQiPOngux8ofsrSlloHCMDhRMvocXqJiG8uH45Q5k=",
"owner": "oxalica",
"repo": "rust-overlay",
- "rev": "962a0934d0e32f42d1b5e49186f9595f9b178d2d",
+ "rev": "068175006cfb69d5b541a140ed93e361488c9e53",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
@@ -42,7 +42,16 @@
++ pkgs.lib.optionals pkgs.stdenv.isDarwin [
pkgs.darwin.libiconv
];
- libraryPath = pkgs.lib.makeLibraryPath basePackages;
+ libraryPackages =
+ [
+ pkgs.libsodium
+ pkgs.openssl
+ pkgs.sqlite
+ ]
+ ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [
+ pkgs.darwin.libiconv
+ ];
+ libraryPath = pkgs.lib.makeLibraryPath libraryPackages;
includePath = pkgs.lib.makeSearchPathOutput "dev" "include" basePackages;
darwinLdFlags = pkgs.lib.optionalString pkgs.stdenv.isDarwin "-L${pkgs.darwin.libiconv}/lib";
darwinRustFlags = pkgs.lib.optionalString pkgs.stdenv.isDarwin "-L native=${pkgs.darwin.libiconv}/lib";
diff --git a/rust-toolchain.toml b/rust-toolchain.toml
@@ -1,2 +1,2 @@
[toolchain]
-channel = "1.92.0"
+channel = "1.97.0"
diff --git a/src/control.rs b/src/control.rs
@@ -91,6 +91,7 @@ pub async fn accept_client_uri(
remote_signer_public_key: runtime.signer_identity().public_key(),
secret: Some(client_uri.secret.clone()),
requested_permissions: client_uri.metadata.requested_permissions.clone(),
+ client_metadata: None,
};
let backend = runtime.signer_backend();
let Some(approval_requirement) = runtime
diff --git a/src/policy.rs b/src/policy.rs
@@ -557,7 +557,8 @@ fn required_permission_for_request(
RadrootsNostrConnectRequest::Connect { .. }
| RadrootsNostrConnectRequest::GetPublicKey
| RadrootsNostrConnectRequest::GetSessionCapability
- | RadrootsNostrConnectRequest::Ping => None,
+ | RadrootsNostrConnectRequest::Ping
+ | RadrootsNostrConnectRequest::Logout => None,
RadrootsNostrConnectRequest::SignEvent(unsigned_event) => {
Some(RadrootsNostrConnectPermission::with_parameter(
RadrootsNostrConnectMethod::SignEvent,
diff --git a/src/transport/nip46.rs b/src/transport/nip46.rs
@@ -817,6 +817,7 @@ mod tests {
remote_signer_public_key: runtime.signer_identity().public_key(),
secret: None,
requested_permissions: requested_permissions.into(),
+ client_metadata: None,
},
),
)
@@ -884,6 +885,7 @@ mod tests {
remote_signer_public_key: runtime.signer_identity().public_key(),
secret: Some("s3cr3t".to_owned()),
requested_permissions: Default::default(),
+ client_metadata: None,
},
),
)
@@ -925,6 +927,7 @@ mod tests {
remote_signer_public_key: runtime.signer_identity().public_key(),
secret: None,
requested_permissions: Default::default(),
+ client_metadata: None,
},
),
)
@@ -961,6 +964,7 @@ mod tests {
remote_signer_public_key: runtime.signer_identity().public_key(),
secret: Some("s3cr3t".to_owned()),
requested_permissions: Default::default(),
+ client_metadata: None,
},
),
)
@@ -974,6 +978,7 @@ mod tests {
remote_signer_public_key: runtime.signer_identity().public_key(),
secret: Some("s3cr3t".to_owned()),
requested_permissions: Default::default(),
+ client_metadata: None,
},
),
)
@@ -999,6 +1004,7 @@ mod tests {
remote_signer_public_key: runtime.signer_identity().public_key(),
secret: Some("s3cr3t".to_owned()),
requested_permissions: Default::default(),
+ client_metadata: None,
},
),
)
@@ -1031,6 +1037,7 @@ mod tests {
remote_signer_public_key: runtime.signer_identity().public_key(),
secret: Some("s3cr3t".to_owned()),
requested_permissions: Default::default(),
+ client_metadata: None,
},
),
)
@@ -1066,6 +1073,7 @@ mod tests {
remote_signer_public_key: runtime.signer_identity().public_key(),
secret: None,
requested_permissions: Default::default(),
+ client_metadata: None,
},
),
)
@@ -1081,6 +1089,7 @@ mod tests {
remote_signer_public_key: runtime.signer_identity().public_key(),
secret: None,
requested_permissions: Default::default(),
+ client_metadata: None,
},
),
)
@@ -1109,6 +1118,7 @@ mod tests {
remote_signer_public_key: runtime.signer_identity().public_key(),
secret: None,
requested_permissions: Default::default(),
+ client_metadata: None,
},
),
)
@@ -1130,6 +1140,7 @@ mod tests {
remote_signer_public_key: runtime.signer_identity().public_key(),
secret: None,
requested_permissions: vec![sign_event_permission(1)].into(),
+ client_metadata: None,
},
),
)
@@ -1189,6 +1200,7 @@ mod tests {
sign_event_permission(7),
]
.into(),
+ client_metadata: None,
},
),
)
@@ -1229,6 +1241,7 @@ mod tests {
remote_signer_public_key: runtime.signer_identity().public_key(),
secret: None,
requested_permissions: vec![sign_event_permission(1)].into(),
+ client_metadata: None,
},
),
)
@@ -1321,6 +1334,7 @@ mod tests {
remote_signer_public_key: runtime.signer_identity().public_key(),
secret: None,
requested_permissions: vec![sign_event_permission(1)].into(),
+ client_metadata: None,
},
),
)
@@ -1397,6 +1411,7 @@ mod tests {
remote_signer_public_key: runtime.signer_identity().public_key(),
secret: None,
requested_permissions: vec![sign_event_permission(1)].into(),
+ client_metadata: None,
},
),
)
@@ -1458,6 +1473,7 @@ mod tests {
RadrootsNostrConnectMethod::SwitchRelays,
)]
.into(),
+ client_metadata: None,
},
),
)
@@ -1541,6 +1557,7 @@ mod tests {
remote_signer_public_key: runtime.signer_identity().public_key(),
secret: None,
requested_permissions: vec![sign_event_permission(1)].into(),
+ client_metadata: None,
},
),
)
diff --git a/tests/nip46_e2e.rs b/tests/nip46_e2e.rs
@@ -556,6 +556,7 @@ fn connect_request_message(
remote_signer_public_key: signer_public_key,
secret: Some(secret.to_owned()),
requested_permissions: Default::default(),
+ client_metadata: None,
},
)
}
@@ -884,6 +885,7 @@ async fn live_listener_rejects_denied_clients_without_registering_connection() -
remote_signer_public_key: signer_public_key,
secret: Some("denied-secret".to_owned()),
requested_permissions: Default::default(),
+ client_metadata: None,
}
.method(),
response,
@@ -2128,6 +2130,7 @@ async fn trusted_client_reauths_after_authorized_ttl() -> TestResult<()> {
remote_signer_public_key: signer_public_key,
secret: None,
requested_permissions: "sign_event:1".parse().expect("requested permissions"),
+ client_metadata: None,
},
),
Timestamp::now().as_secs(),
@@ -2144,6 +2147,7 @@ async fn trusted_client_reauths_after_authorized_ttl() -> TestResult<()> {
remote_signer_public_key: signer_public_key,
secret: None,
requested_permissions: "sign_event:1".parse().expect("requested permissions"),
+ client_metadata: None,
}
.method(),
connect_response,
diff --git a/tests/operability_e2e.rs b/tests/operability_e2e.rs
@@ -360,7 +360,7 @@ async fn status_reports_sqlite_persistence_schema_state() -> TestResult<()> {
.as_ref()
.expect("signer sqlite schema")
.applied_migration_count,
- Some(2)
+ Some(3)
);
assert_eq!(
status