From 24e3bb54db579fb9aad8df2a591527dc77fe4cb4 Mon Sep 17 00:00:00 2001 From: salmonik Date: Sun, 1 Nov 2026 19:19:49 +0100 Subject: v4.0.7: finish the Phase 1 boundary with a command shell The terminal command line moves to client::shell: a typed line becomes a core Command or an adapter action (connect, login, register, set-credential, host maintenance). ClientCore loses submit_line and the last TUI-shaped effects (Interactive, SetPrompt, ListHosts, ForgetHost, AnimateRoulette); the adapter animates roulette from the Result view. Adds forget-login, which drops the stored credential for the pinned key and keeps trust, distinct from logout (session only) and forget-host (trust too). --- src/client/database.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/client/database.rs') diff --git a/src/client/database.rs b/src/client/database.rs index c4601b5..40ee8b4 100644 --- a/src/client/database.rs +++ b/src/client/database.rs @@ -151,6 +151,21 @@ pub fn forget_host(conn: &Connection, host: &str) -> Result Result { + let removed = conn.execute( + "DELETE FROM credentials WHERE fingerprint = ?1", + [fingerprint], + )?; + Ok(removed > 0) +} + /// List all remembered hosts with their fingerprints. pub fn get_all_hosts(conn: &Connection) -> Vec<(String, Option)> { let mut stmt = conn -- cgit v1.2.3