diff --git a/src/ui/dashboard.rs b/src/ui/dashboard.rs index c14e9c8..010199e 100644 --- a/src/ui/dashboard.rs +++ b/src/ui/dashboard.rs @@ -24,11 +24,11 @@ async fn render(state: &AppState) -> anyhow::Result> { let stats_html = format!( r#"
-
{}
Indexed
+
{}
Torrents
{}
Publishers
-
{}
Queued
+
{}
In queue
{}
Published
-
{last_seen}
Last ingest
+
{last_seen}
Last activity
"#, stats.torrent_count, stats.publisher_count, @@ -47,15 +47,13 @@ async fn render(state: &AppState) -> anyhow::Result> { relays .iter() .map(|r| { - let (dot, ts_str) = match r.last_event { - Some(ts) => ("dot-ok", format!("last event {}", fmt_ts_ago(ts))), - // "no events yet" is normal on a fresh start — the relay is connected - // but kindexr hasn't received any NIP-35 events from it this session. - None => ("dot-dim", "connected — no events received yet".into()), + let ts_str = match r.last_event { + Some(ts) => format!("last event {}", fmt_ts_ago(ts)), + None => "no events yet".into(), }; format!( r#"
- {url} + {url} {ts_str}
"#, url = esc(&r.url), @@ -64,12 +62,18 @@ async fn render(state: &AppState) -> anyhow::Result> { .collect() }; + let all = relays.len(); + let conn_label = if relay_count as usize == all { + format!("{relay_count} relays connected") + } else { + format!("{relay_count} of {all} relays connected") + }; + let relays_html = format!( r#"
-
Relays — {relay_count} connected / {} configured
+
{conn_label}
{relay_rows}
"#, - relays.len(), ); // Recent ingest table @@ -101,7 +105,7 @@ async fn render(state: &AppState) -> anyhow::Result> { let recent_html = format!( r#"
-
Recent ingest
+
Recently indexed
@@ -124,25 +128,25 @@ fn build_network_html(state: &AppState) -> String { "tor" => ( "badge-warn", "Tor", - "SOCKS5 → 127.0.0.1:9050 — all outbound traffic routed through Tor".to_string(), + "All connections go through Tor (127.0.0.1:9050)".to_string(), ), "i2p" => ( "badge-accent", "I2P", - "SOCKS5 → 127.0.0.1:4446 — all outbound traffic routed through I2P".to_string(), + "All connections go through I2P (127.0.0.1:4446)".to_string(), ), "socks5" => { let addr = proxy.url.trim_start_matches("socks5://").trim_start_matches("socks5h://"); ( "badge-accent", "SOCKS5", - format!("SOCKS5 → {addr} — all outbound traffic proxied"), + format!("All connections go through {addr}"), ) } _ => ( "badge-dim", "Direct", - format!("No proxy — outbound connections use your host's network stack directly"), + "No proxy, using your server's network directly".to_string(), ), }; @@ -161,7 +165,7 @@ fn build_network_html(state: &AppState) -> String {
-
Proxy / anonymity
+
Network
{proxy_label}
{proxy_detail}
diff --git a/src/ui/indexed.rs b/src/ui/indexed.rs index 877f621..c03020f 100644 --- a/src/ui/indexed.rs +++ b/src/ui/indexed.rs @@ -83,7 +83,7 @@ async fn render(state: &AppState, params: &Params) -> anyhow::ResultIndexed ({total} total) + r#"

Content ({total} total)

{search}
TitleCategoryPublisherWhen
diff --git a/src/ui/mod.rs b/src/ui/mod.rs index f6cd71b..a85793a 100644 --- a/src/ui/mod.rs +++ b/src/ui/mod.rs @@ -66,7 +66,7 @@ async fn torrent_blob_handler( pub fn page(active: &str, title: &str, body: &str) -> axum::response::Html { let nav = [ ("dashboard", "/ui", "Dashboard"), - ("indexed", "/ui/indexed", "Indexed"), + ("indexed", "/ui/indexed", "Content"), ("publishers", "/ui/publishers", "Publishers"), ("published", "/ui/published", "Published"), ("settings", "/ui/settings", "Settings"), diff --git a/src/ui/published.rs b/src/ui/published.rs index 88d78a6..dc6c96e 100644 --- a/src/ui/published.rs +++ b/src/ui/published.rs @@ -39,7 +39,7 @@ async fn render(state: &AppState, params: &Params) -> anyhow::Result Published - Pending queue + Pending "#, c_done = if tab == "done" { "cur" } else { "" }, c_pend = if tab == "pending" { "cur" } else { "" }, @@ -64,7 +64,7 @@ async fn render(state: &AppState, params: &Params) -> anyhow::Result format!(r#"[error]"#, esc(e)), None => { let sched = fmt_ts_ago(r.scheduled_at); - format!(r#"in {sched}"#) + format!(r#"scheduled {sched}"#) } }, }; diff --git a/src/ui/publishers.rs b/src/ui/publishers.rs index 3e3d09f..7dd8293 100644 --- a/src/ui/publishers.rs +++ b/src/ui/publishers.rs @@ -47,24 +47,23 @@ async fn render(state: &AppState, params: &ListParams) -> anyhow::Result -
Override publisher trust
+
Set trust level
+ placeholder="npub1… or hex pubkey" required>
- Local override only — nothing is broadcast to Nostr. - The Follow depth column is read from your operator pubkey's real Nostr follow list. - This form lets you override trust for anyone regardless of whether you follow them. - Blocking silently drops all future events from that pubkey at ingest. + This is local only, nothing gets posted to Nostr. + Click any publisher row to copy their npub into the box above. + Blocking drops all future posts from that person.
"#; @@ -173,8 +172,8 @@ function fillVouch(el) {{
- - + + {table_rows}
IdentityTrustFollow depthEventsReportsLast seenActionsPublisherTrustFollowsPostsReportsLast seen