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>
- 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>
D3 migration to v7 is complete. The old vendored v3 file is no longer
referenced anywhere — index.html loads js/d3.min.js which is copied
from node_modules by the postinstall script. CI smoke test already
validates the correct filename.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
lychee v0.23.0 dropped --exclude-mail; mail links are now excluded by
default. Keeping the flag causes exit code 2 and breaks every CI run.
Fixes THE-85.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- Replace hardcoded px/font values in search area with CSS tokens
(--space-*, --font-size-*, --radius-sm, --font-family, --color-accent)
- Add focus box-shadow on search input using accent color
- Add box-shadow to search results dropdown
- Add @media (max-width: 768px) breakpoints: scale header font,
make legend responsive (position:relative, width:auto)
These changes were present in feat/the-72 but were not carried forward
when THE-66 (search) and THE-73 (badges) merged into master independently.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Both zoomToNode() (pan/zoom, THE-79) and the search/badge additions from
master (THE-66, THE-73) are preserved. No logic changes to either side.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- Apply d3.zoom() to SVG container for mouse wheel zoom and drag-to-pan
- Implement zoomToNode() that auto-centers viewport on clicked/expanded node
- Store svgEl reference separately from vis group for zoom target
- Add grab/grabbing cursor CSS on SVG to communicate interactivity
- Preserve compatibility with dark mode, viewBox/responsive SVG, null-child safety
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Adds overpass-turbo.eu as a geolocation resource. This is a clean
cherry-pick of the valid data change from PR#535 — the CSS changes
from that PR were dropped as obsolete (superseded by THE-32/THE-72).
The duplicate Twitter > Location / Mapping entry was also excluded
per board direction.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Reduce #header font-size from 40px to 16px at max-width 768px to
prevent overlap with the D3 tree on narrow screens. Switch .legend
from absolute/fixed-width to relative/auto so it no longer overflows
viewports narrower than 400px.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Parse (T)/(D)/(R)/(M) suffixes from tool names and render them as
colored tspan elements in the SVG tree. Add matching badge pill styles
to the HTML legend so it visually matches the tree indicators.
- T (tool) → blue #4a9eda
- D (dork) → orange #e8944a
- R (registration) → amber #c8a030
- M (manual URL) → purple #9a7eda
Badge colors are theme-invariant; they work on both dark and light
backgrounds without separate light-mode overrides.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
feat(data): expand Terrorism category with 9 new vetted resources
Adds subcategories and resources from legitimate government, academic,
NGO, and think tank sources identified in THE-41 research:
- Academic Research: GTD (existing), START Consortium Portal
- Sanctions & Watchlists: OFAC, UN SC Consolidated List, OpenSanctions
- Research Centers: ISD, CSIS Terrorism Program, RAND
- Terrorist Financing: U.S. Treasury TFTP
All resources verified live and from authoritative institutions.
Adds a debounced text search input above the D3 tree that filters all
~1,000+ tool nodes by name and description. Results appear as a flat
list with breadcrumb paths; clearing the input hides the panel.
- No build step required: vanilla JS, no new dependencies
- Sanitizes HTML output (escapeHtml/escapeAttr) and validates URLs (http/https only)
- Dark and light mode compatible via existing CSS variables
- Results capped at 50 to keep rendering fast
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Board feedback: dark mode looked blue rather than properly dark.
Changed backgrounds from navy (#1a1a2e, #16213e) to neutral darks
(#1a1a1a, #2d2d2d), node fills to gray (#3a3a3a), and node stroke
to steelblue to match light mode styling.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Paperclip <noreply@paperclip.ing>
#767676 on white = 4.54:1, just above the 4.5:1 AA threshold.
#999 (previous value) was 2.85:1, which failed.
Closes THE-37.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Closes THE-34, THE-35, THE-36.
- Replaces all hardcoded colors in arf.css with CSS custom properties
- Dark palette defined on :root (default); light palette on body.light-mode
- Removes old .dark-Mode class; D3 inline styles now read CSS vars at render time
- goDark() toggles light-mode class and persists preference to localStorage
- Flash-prevention inline script in body applies stored theme before first paint
- Toggle button label reflects current theme state
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Adds subcategories and resources from legitimate government, academic,
NGO, and think tank sources identified in THE-41 research:
- Academic Research: GTD (existing), START Consortium Portal
- Sanctions & Watchlists: OFAC, UN SC Consolidated List, OpenSanctions
- Research Centers: ISD, CSIS Terrorism Program, RAND
- Terrorist Financing: U.S. Treasury TFTP
All resources verified live and from authoritative institutions.
Co-Authored-By: Paperclip <noreply@paperclip.ing>