- Breadcrumb now sits below the tool name inside panel-header, wrapped
in #panel-header-text flex column; removes the need for the first HR
divider between breadcrumb and the CTA button
- #panel-open-tool changed from block/width:100% to inline-block with
auto width; #panel-cta-section centered with text-align so the button
is pill-sized and no longer overflows the panel
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Move Open Tool button to top (below breadcrumb), add HR dividers,
split Input→Output into its own section separate from Usage Context,
and rename Rating label to Community Rating.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Remove redundant top-level Terrorism category. All content is already
present under Threat Intelligence > Terrorism & Extremism (added via
THE-41), with updated URLs from the research expansion. No data is lost.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Backend (src/worker.js):
- Add POST /api/vote: upvote/downvote with toggle behavior, one vote per
session per tool, returns net score
- Add POST /api/report: flag tools as dead_link/paywalled/incorrect_info;
auto-creates GitHub issue via GitHub API when REPORT_THRESHOLD (3) unique
reports of the same type are received (requires GITHUB_TOKEN secret)
- Update GET /api/tool-stats to include votes { up, down, score }
- Extract validateCommon() and isRateLimited() helpers to reduce duplication
Frontend (public/js/arf.js):
- Replace static rating placeholder with _renderVoteUI(): renders thumbs
up/down buttons, reads cached vote from sessionStorage, fetches live score
async from /api/tool-stats
- Add _castVote(): fires POST /api/vote, updates button active state and
score display, persists user vote in sessionStorage
- Add _resetReportButtons() and _submitReport(): wire report buttons per
panel open, POST /api/report, show inline feedback message
HTML (public/index.html):
- Replace static rating span with vote row (thumbs up, score, thumbs down)
- Replace static GitHub report link with three report buttons + feedback div
CSS (public/css/panel.css):
- Add .vote-btn, .vote-score (.positive/.negative/.zero) styles
- Add .report-btn, .panel-report-feedback styles
- Remove old #panel-report-link styles (replaced by button row)
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Populate enrichment fields for all 17 tools in the Username category
(Username Search Engines + Specific Sites). Each tool now includes
description, status, pricing, bestFor, input/output, opsec rating,
and badge flags (localInstall, googleDork, registration, editUrl,
api, invitationOnly, deprecated).
All URLs verified as live on 2026-03-26.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
The osint_framework_kv namespace ID was truncated to "cdb975e31e"
in the initial commit. Updated to the full 32-character ID confirmed
by the board from the Cloudflare dashboard.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Add description, status, pricing, bestFor, input/output, opsec, and
opsecNote fields for: Maltego, theHarvester, SpiderFoot, Recon-ng,
Censys, BuiltWith, Have I Been Pwned, VirusTotal, and Wayback Machine.
Shodan was already enriched in THE-107. Tools appearing in multiple
categories are enriched at each location (13 entries total).
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- src/worker.js: Cloudflare Worker entry point handling POST /api/track
and GET /api/tool-stats, falling through to ASSETS for static files
- wrangler.jsonc: wire main entry point + CLICK_DATA KV binding
(namespace: osint_framework_kv, id: cdb975e31e)
- public/js/arf.js: fire sendBeacon to /api/track on Open Tool click
Privacy: no IPs stored, no cookies, client-generated session_hash only.
Dedup: one counted click per session per tool (1-hour TTL).
Rate limit: 60 req/min per session_hash (2-min TTL key).
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Board confirmed: mobile panel should be full-screen overlay with X button,
not a bottom sheet. Simplified @media breakpoint to 100vw/100vh with no
border-radius and inherited slide-right animation from desktop.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- Status (live/down/degraded/unknown) and pricing (free/freemium/paid/unknown)
pill badges always shown in panel badges row with semantic colors
- OPSEC section now renders colored badge (passive/active/unknown) + opsecNote text
- Description section always visible; shows italic placeholder when no data
- Usage context renders bestFor and input→output mapping; hidden when all empty
- CTA button label now shows "Open [Tool Name] ↗" with actual tool name
- Added badge pill CSS (.badge-live, .badge-down, etc.) to panel.css
- Seeded Shodan (Discovery subcategory) with all new enrichment fields as demo
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Apply remaining redirect URL updates in arf.json where the destination
is stable and safe. Skips redirects to login pages, parked domains,
and cross-domain redirects that need manual review.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- Delete .bowerrc: Bower was deprecated years ago; project uses npm.
The rule was already in .gitignore but the file was still committed.
- Untrack tools/link_audit_report.json: generated CI artifact should
not be in source control; add to .gitignore so reruns don't re-add it.
- Add .agents/ to .gitignore: Paperclip runtime dir, not project source.
- Fix package.json repo/bugs/homepage URLs: still pointed to old ARF
repo name instead of OSINT-Framework.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- Remove push-to-master trigger from link-check job; it now runs only on
the weekly cron schedule to avoid hammering external sites on every push
- Change schedule from Sunday 02:00 UTC to Saturday 08:00 UTC as requested
Co-Authored-By: Paperclip <noreply@paperclip.ing>
zoomToNode was using svgH/2 (y=400 in viewBox space) as the pan target.
Because the SVG sits below the header, the true viewport center is at
(window.innerHeight/2 - rect.top) / svgScale
not svgH/2. The discrepancy equals roughly the header height, which is
why the zoomed node consistently appeared too low.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Added IDCrawl under People Search Engines > General People Search after board-confirmed availability.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Added GitFive, Lenso.ai, CeWL, and Cupp to existing categories in public/arf.json based on verified researcher findings.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Clicking a search result now collapses the full tree, expands all
ancestor branches of the matched node, highlights the node with an
accent-colored circle and bold text, and pans the viewport to it.
A small ↗ icon remains in each result for users who want to open the
tool's website directly.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Added GitFive, Lenso.ai, CeWL, and Cupp to existing categories in public/arf.json based on verified researcher findings.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
zoomToNode(d) was called after every expand/collapse, causing jarring
viewport jumps as the tree layout reflows node positions. Removing it
lets users pan and zoom freely without unexpected repositioning.
Co-Authored-By: Paperclip <noreply@paperclip.ing>