Skip to content

Commit 2d3ea6b

Browse files
0xrinegadeclaude
andcommitted
feat(research): Add visual boxes around wallet addresses
VISUAL CLARITY: Each wallet address now displayed in a clear box using box-drawing chars: ┌───────────────────────────────────┐ │ ExchangeHotWallet1234567890ABCDEF │ └───────────────────────────────────┘ BENEFITS: - Instantly see where each wallet address starts/ends - Easier to copy-paste addresses (clear boundaries) - Professional forensic report appearance - Addresses stand out from labels and metadata Uses Unicode box-drawing characters: - ┌ ─ ┐ (top corners and horizontal) - │ (vertical sides) - └ ─ ┘ (bottom corners) All 10 tests passing. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent bf7a269 commit 2d3ea6b

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/services/research_agent.rs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -384,28 +384,40 @@ impl TransferGraph {
384384
// Node header - NO TRUNCATION, show full address + label
385385
let label_text = node.and_then(|n| n.label.as_ref()).map(|l| format!(" [{}]", l)).unwrap_or_default();
386386

387+
// Draw box around wallet address for visual clarity
388+
let addr_len = addr.len();
389+
let box_top = format!("┌{}┐", "─".repeat(addr_len + 2));
390+
let box_mid = format!("│ {} │", addr);
391+
let box_bot = format!("└{}┘", "─".repeat(addr_len + 2));
392+
387393
if is_origin {
388394
output.push_str(&format!("{}{}\n",
389395
cfg.origin_icon,
390396
label_text
391397
));
392-
output.push_str(&format!(" {}{}\n", addr, convergence_marker));
398+
output.push_str(&format!(" {}\n", box_top));
399+
output.push_str(&format!(" {}{}\n", box_mid, convergence_marker));
400+
output.push_str(&format!(" {}\n", box_bot));
393401
} else if Some(addr) == self.target.as_deref() {
394402
output.push_str(&format!("{}{}{}{}\n",
395403
parent_prefix,
396404
cfg.target_icon,
397405
label_text,
398406
convergence_marker
399407
));
400-
output.push_str(&format!("{} {}\n", parent_prefix, addr));
408+
output.push_str(&format!("{} {}\n", parent_prefix, box_top));
409+
output.push_str(&format!("{} {}\n", parent_prefix, box_mid));
410+
output.push_str(&format!("{} {}\n", parent_prefix, box_bot));
401411
} else {
402-
output.push_str(&format!("{}{}{} {}{}\n",
412+
output.push_str(&format!("{}{}{}{}\n",
403413
parent_prefix,
404414
cfg.node_icon,
405415
label_text,
406-
addr,
407416
convergence_marker
408417
));
418+
output.push_str(&format!("{} {}\n", parent_prefix, box_top));
419+
output.push_str(&format!("{} {}\n", parent_prefix, box_mid));
420+
output.push_str(&format!("{} {}\n", parent_prefix, box_bot));
409421
}
410422

411423
// Render outgoing transfers

0 commit comments

Comments
 (0)