v0.0.8 - Fix: Enter on empty buffer generates mnemonic; Enter on typed text loads it; no more 'g' key interception
This commit is contained in:
Generated
+1
-1
@@ -1490,7 +1490,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "nsigner"
|
||||
version = "0.0.6"
|
||||
version = "0.0.7"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"chacha20poly1305",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "nsigner"
|
||||
version = "0.0.7"
|
||||
version = "0.0.8"
|
||||
edition = "2021"
|
||||
license = "MIT"
|
||||
description = "Attended Nostr signing daemon — Rust port of n_signer"
|
||||
|
||||
+1
-1
@@ -31,4 +31,4 @@ pub mod error;
|
||||
pub use error::NsignerError;
|
||||
|
||||
/// Version string (matches C NSIGNER_VERSION).
|
||||
pub const VERSION: &str = "v0.0.7";
|
||||
pub const VERSION: &str = "v0.0.8";
|
||||
|
||||
+14
-20
@@ -587,31 +587,25 @@ impl App {
|
||||
// ── Seed entry ──────────────────────────────────────────────────────
|
||||
|
||||
fn handle_seed_key(&mut self, key: KeyEvent) {
|
||||
// 'g' generates a new mnemonic only when the input buffer is empty.
|
||||
// If the user has already started typing, 'g' is just a letter in a
|
||||
// mnemonic word.
|
||||
if (key.code == KeyCode::Char('g') || key.code == KeyCode::Char('G'))
|
||||
&& self.unlock_input.buffer.is_empty()
|
||||
{
|
||||
match self.mnemonic.generate(12) {
|
||||
Ok(phrase) => {
|
||||
self.generated_phrase = phrase;
|
||||
self.seed_generate_mode = true;
|
||||
self.screen = Screen::SeedDisplay;
|
||||
}
|
||||
Err(_) => {
|
||||
self.seed_attempts += 1;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
if edit_key(&mut self.unlock_input, key) {
|
||||
return;
|
||||
}
|
||||
if key.code == KeyCode::Enter {
|
||||
let input = self.unlock_input.buffer.trim().to_string();
|
||||
self.unlock_input = InputField::new("");
|
||||
if !input.is_empty() {
|
||||
if input.is_empty() {
|
||||
// Enter on an empty buffer generates a fresh mnemonic.
|
||||
match self.mnemonic.generate(12) {
|
||||
Ok(phrase) => {
|
||||
self.generated_phrase = phrase;
|
||||
self.seed_generate_mode = true;
|
||||
self.screen = Screen::SeedDisplay;
|
||||
}
|
||||
Err(_) => {
|
||||
self.seed_attempts += 1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
match self.mnemonic.load(&input) {
|
||||
Ok(()) => self.enter_main(),
|
||||
Err(_) => {
|
||||
@@ -1292,7 +1286,7 @@ impl App {
|
||||
let area = f.area();
|
||||
let mut lines = vec![
|
||||
Line::from(""),
|
||||
Line::from("Enter seed phrase or G to generate new:"),
|
||||
Line::from("Enter seed phrase (Enter to load, or Enter on empty to generate):"),
|
||||
Line::from(""),
|
||||
Line::from(Span::styled(
|
||||
format!("> {}", self.unlock_input.buffer),
|
||||
|
||||
Reference in New Issue
Block a user