From 2828d7c0ae68114380c0e3fab32c6921174d9ff2 Mon Sep 17 00:00:00 2001 From: redshift <213178690+1ftredsh@users.noreply.github.com> Date: Tue, 28 Apr 2026 15:04:14 +0530 Subject: [PATCH] feat(cli): highlight user npub in npubs list and suggest adding it if missing --- src/cli.ts | 15 ++++++++++++++- src/utils/daemon-client.ts | 10 ++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/cli.ts b/src/cli.ts index adba3a8..5184b92 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -9,6 +9,7 @@ import { getDaemonBaseUrl, getNpubSuffix, addDaemonClient, + getUserNpub, } from "./utils/daemon-client"; import { existsSync, mkdirSync } from "fs"; import { execSync } from "child_process"; @@ -911,6 +912,8 @@ npubsCmd .description("List configured admin npubs") .action(async () => { await ensureDaemonRunning(); + const config = await loadConfig(); + const userNpub = getUserNpub(config); const result = await callDaemon("/npubs"); if (result.error) { console.log(result.error); @@ -926,8 +929,18 @@ npubsCmd return; } console.log(`Admin npubs (${npubs.length}):`); + let found = false; for (const npub of npubs) { - console.log(`- ${npub}`); + const marker = npub === userNpub ? " → you" : ""; + if (npub === userNpub) found = true; + console.log(`- ${npub}${marker}`); + } + if (userNpub && !found) { + console.log(""); + console.log( + "Your npub is not in the admin list. Ask the admin to add your npub:", + ); + console.log(` ${userNpub}`); } }); diff --git a/src/utils/daemon-client.ts b/src/utils/daemon-client.ts index 49893b1..6557808 100644 --- a/src/utils/daemon-client.ts +++ b/src/utils/daemon-client.ts @@ -136,6 +136,16 @@ export function getNpubSuffix(config: RoutstrdConfig): string | null { } } +export function getUserNpub(config: RoutstrdConfig): string | null { + if (!config.nsec) return null; + try { + const secretKey = parseSecretKey(config.nsec); + return npubFromSecretKey(secretKey); + } catch { + return null; + } +} + export async function startDaemonProcess(): Promise { // Ensure logs directory exists (logger handles date-based files) if (!existsSync(LOGS_DIR)) {