From 2db8276c0969a0ddecff20c86b48f00e13237383 Mon Sep 17 00:00:00 2001 From: s0lray Date: Thu, 26 Mar 2026 14:57:19 -0400 Subject: [PATCH] Add api, invitationOnly, deprecated badges to tool panel (THE-116) Show boolean feature badges in the tool details panel when true: - API (blue): tool has a public API - Invite Only (amber): tool requires an invitation - Deprecated (dark red): tool is no longer actively maintained Co-Authored-By: Paperclip --- public/css/panel.css | 7 ++++++- public/js/arf.js | 10 ++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/public/css/panel.css b/public/css/panel.css index 7128b1c..aa0bd1c 100644 --- a/public/css/panel.css +++ b/public/css/panel.css @@ -335,7 +335,12 @@ .badge-active { background: #c84040; } /* Unknown / fallback */ -.badge-unknown { background: #606060; } +.badge-unknown { background: #606060; } + +/* Boolean feature badges */ +.badge-api { background: #1e90cc; } +.badge-invitation-only { background: #b87800; } +.badge-deprecated { background: #8b3030; } /* OPSEC row layout */ .opsec-row { diff --git a/public/js/arf.js b/public/js/arf.js index a935de5..2234b2b 100644 --- a/public/js/arf.js +++ b/public/js/arf.js @@ -451,6 +451,16 @@ function openPanel(d) { var pricingClass = ["free","freemium","paid"].indexOf(pricing) !== -1 ? pricing : "unknown"; badgeHtml += ' ' + escapeHtml(pricing) + ''; + if (d.data.api === true) { + badgeHtml += ' API'; + } + if (d.data.invitationOnly === true) { + badgeHtml += ' Invite Only'; + } + if (d.data.deprecated === true) { + badgeHtml += ' Deprecated'; + } + badgesEl.innerHTML = badgeHtml; badgesEl.classList.remove("empty"); }