From 880d542c5652ff4d9e77508cfd0767987bb9fe16 Mon Sep 17 00:00:00 2001 From: s0lray Date: Tue, 24 Mar 2026 07:23:37 -0400 Subject: [PATCH 1/4] 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. Co-Authored-By: Paperclip --- public/arf.json | 160 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 157 insertions(+), 3 deletions(-) diff --git a/public/arf.json b/public/arf.json index 7fc678a..545a0e4 100644 --- a/public/arf.json +++ b/public/arf.json @@ -4641,6 +4641,56 @@ "name": "FOCA (T)", "type": "url", "url": "https://github.com/ElevenPaths/FOCA" + }, + { + "name": "Exiv2 (T)", + "type": "url", + "url": "https://exiv2.org/" + }, + { + "name": "MediaInfo (T)", + "type": "url", + "url": "https://mediaarea.net/en/MediaInfo" + }, + { + "name": "Apache Tika (T)", + "type": "url", + "url": "https://tika.apache.org/" + }, + { + "name": "oletools (T)", + "type": "url", + "url": "https://github.com/decalage2/oletools" + }, + { + "name": "MAT2 (T)", + "type": "url", + "url": "https://0xacab.org/jvoisin/mat2" + }, + { + "name": "Hachoir (T)", + "type": "url", + "url": "https://github.com/vstinner/hachoir" + }, + { + "name": "Forensically", + "type": "url", + "url": "https://29a.ch/photo-forensics/" + }, + { + "name": "C2PA Verify", + "type": "url", + "url": "https://contentcredentials.org/verify" + }, + { + "name": "Metadata2Go", + "type": "url", + "url": "https://www.metadata2go.com/" + }, + { + "name": "Get-Metadata", + "type": "url", + "url": "https://www.get-metadata.com/" } ] }, @@ -4807,9 +4857,73 @@ "type": "folder", "children": [ { - "name": "Global Terrorism Database", - "type": "url", - "url": "https://www.start.umd.edu/data-tools/GTD" + "name": "Academic Research", + "type": "folder", + "children": [ + { + "name": "Global Terrorism Database", + "type": "url", + "url": "https://www.start.umd.edu/data-tools/GTD" + }, + { + "name": "START Consortium Research Portal", + "type": "url", + "url": "https://www.start.umd.edu/" + } + ] + }, + { + "name": "Sanctions and Watchlists", + "type": "folder", + "children": [ + { + "name": "OFAC Sanctions List Search", + "type": "url", + "url": "https://sanctionssearch.ofac.treas.gov/" + }, + { + "name": "UN Security Council Consolidated Sanctions List", + "type": "url", + "url": "https://main.un.org/securitycouncil/en/content/un-sc-consolidated-list" + }, + { + "name": "OpenSanctions", + "type": "url", + "url": "https://www.opensanctions.org/" + } + ] + }, + { + "name": "Research Centers and Institutes", + "type": "folder", + "children": [ + { + "name": "Institute for Strategic Dialogue (ISD)", + "type": "url", + "url": "https://www.isdglobal.org/" + }, + { + "name": "CSIS Warfare and Terrorism Program", + "type": "url", + "url": "https://www.csis.org/programs/warfare-irregular-threats-and-terrorism-program" + }, + { + "name": "RAND Corporation Terrorism Research", + "type": "url", + "url": "https://www.rand.org/topics/terrorism.html" + } + ] + }, + { + "name": "Terrorist Financing", + "type": "folder", + "children": [ + { + "name": "U.S. Treasury Terrorist Finance Tracking Program", + "type": "url", + "url": "https://home.treasury.gov/policy-issues/terrorism-and-illicit-finance/terrorist-finance-tracking-program-tftp" + } + ] } ] }, @@ -5431,6 +5545,46 @@ "name": "DeepSeek", "type": "url", "url": "https://www.deepseek.com/" + }, + { + "name": "Microsoft Copilot", + "type": "url", + "url": "https://copilot.microsoft.com/" + }, + { + "name": "You.com", + "type": "url", + "url": "https://you.com/" + }, + { + "name": "GPTZero", + "type": "url", + "url": "https://gptzero.me/" + }, + { + "name": "AI or Not", + "type": "url", + "url": "https://www.aiornot.com/" + }, + { + "name": "Hive AI Generated Content Detection", + "type": "url", + "url": "https://hivemoderation.com/ai-generated-content-detection" + }, + { + "name": "WasItAI", + "type": "url", + "url": "https://wasitai.com/" + }, + { + "name": "Illuminarty", + "type": "url", + "url": "https://app.illuminarty.ai/" + }, + { + "name": "TrueMedia", + "type": "url", + "url": "https://www.truemedia.org/" } ] }, From 66b742e2d3168d296806b648947c9522d64cf7da Mon Sep 17 00:00:00 2001 From: thumpersecure Date: Tue, 24 Mar 2026 16:19:37 -0400 Subject: [PATCH 2/4] Update arf.json Fixed link to opt out guide 2025 --- public/arf.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/arf.json b/public/arf.json index 11d3f92..367fe9a 100644 --- a/public/arf.json +++ b/public/arf.json @@ -6269,7 +6269,7 @@ { "name": "Awesome Opt-Out Guide 2026", "type": "url", - "url": "https://github.com/tycrek/degoogle" + "url": "https://github.com/thumpersecure/opt-out-manual-2026" } ] }, From b52bfbcbe27d71d24586e332d5a43595b70a1786 Mon Sep 17 00:00:00 2001 From: s0lray Date: Tue, 24 Mar 2026 18:46:05 -0400 Subject: [PATCH 3/4] feat(ui): responsive SVG viewport, Inter typography, expanded CSS tokens (THE-72) - Replace fixed SVG width/height attrs with viewBox + preserveAspectRatio so the tree scales naturally across screen sizes - Switch font-family to Inter/system-font stack via --font-family token - Add spacing tokens (--space-1 through --space-6, 4px scale) - Add border-radius tokens (--radius-sm, --radius-md) - Add shadow tokens (--shadow-sm, --shadow-md) with light-mode overrides - Add --color-accent and --color-border for future theming use - Add font-size tokens (--font-size-sm/base/lg/xl) - Wire up new tokens throughout existing CSS rules Co-Authored-By: Paperclip --- public/css/arf.css | 120 +++++++++++++++++++++++++++++++++++++++++++-- public/js/arf.js | 7 ++- 2 files changed, 120 insertions(+), 7 deletions(-) diff --git a/public/css/arf.css b/public/css/arf.css index 3238f8b..913e807 100644 --- a/public/css/arf.css +++ b/public/css/arf.css @@ -1,5 +1,6 @@ -/* === Color tokens === */ +/* === Design tokens === */ :root { + /* Colors */ --color-bg: #1a1a1a; --color-surface: #2d2d2d; --color-text-primary: #e0e0e0; @@ -12,6 +13,32 @@ --color-noscript-border: #7a4a00; --color-legend: #e0e0e0; --color-header: #e0e0e0; + --color-accent: #4a9eda; + --color-border: #444; + + /* Shadows */ + --shadow-sm: 0 1px 3px rgba(0,0,0,0.4); + --shadow-md: 0 4px 12px rgba(0,0,0,0.5); + + /* Border radius */ + --radius-sm: 3px; + --radius-md: 6px; + + /* Spacing (4px base scale) */ + --space-1: 4px; + --space-2: 8px; + --space-3: 12px; + --space-4: 16px; + --space-5: 24px; + --space-6: 32px; + + /* Typography */ + --font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, + 'Helvetica Neue', Arial, sans-serif; + --font-size-sm: 11px; + --font-size-base: 14px; + --font-size-lg: 16px; + --font-size-xl: 40px; } body.light-mode { @@ -27,13 +54,16 @@ body.light-mode { --color-noscript-border: rgb(255, 204, 153); --color-legend: #000000; --color-header: #000000; + --color-border: #ddd; + --shadow-sm: 0 1px 3px rgba(0,0,0,0.12); + --shadow-md: 0 4px 12px rgba(0,0,0,0.15); } body { background-color: var(--color-bg); color: var(--color-text-primary); - font-size: 14px; - font-family: "Helvetica Neue", Helvetica; + font-size: var(--font-size-base); + font-family: var(--font-family); } noscript p { @@ -55,8 +85,14 @@ noscript p { position: relative; } +svg { + display: block; + width: 100%; + height: auto; +} + #header { - font-size: 40px; + font-size: var(--font-size-xl); font-weight: bold; top: 20px; text-align: center; @@ -68,7 +104,7 @@ noscript p { top: 0px; right: 0; width: 330px; - font-size: 11px; + font-size: var(--font-size-sm); color: var(--color-legend); } @@ -105,3 +141,77 @@ h3 { a { color: var(--color-node-stroke); } + +/* Search */ +#search-container { + text-align: center; + padding: var(--space-2) 0 var(--space-1); +} + +#search-input { + width: 400px; + max-width: 90vw; + padding: var(--space-2) var(--space-3); + font-size: var(--font-size-base); + font-family: var(--font-family); + background: var(--color-surface); + color: var(--color-text-primary); + border: 1px solid var(--color-link); + border-radius: var(--radius-sm); + outline: none; +} + +#search-input:focus { + border-color: var(--color-accent); + box-shadow: 0 0 0 2px rgba(74, 158, 218, 0.25); +} + +#search-results { + margin: var(--space-2) auto 0; + width: 600px; + max-width: 90vw; + text-align: left; + background: var(--color-surface); + border: 1px solid var(--color-link); + border-radius: var(--radius-sm); + box-shadow: var(--shadow-md); + max-height: 400px; + overflow-y: auto; + display: none; +} + +#search-results.visible { + display: block; +} + +.search-result-item { + padding: var(--space-2) var(--space-3); + border-bottom: 1px solid var(--color-link); + font-size: 13px; +} + +.search-result-item:last-child { + border-bottom: none; +} + +.search-result-item a { + font-weight: bold; + color: var(--color-node-stroke); + text-decoration: none; +} + +.search-result-item a:hover { + text-decoration: underline; +} + +.search-result-path { + color: var(--color-text-secondary); + font-size: var(--font-size-sm); + margin-top: 2px; +} + +.search-no-results { + padding: var(--space-3); + color: var(--color-text-secondary); + text-align: center; +} diff --git a/public/js/arf.js b/public/js/arf.js index b3fa05f..0da0161 100644 --- a/public/js/arf.js +++ b/public/js/arf.js @@ -12,9 +12,12 @@ var diagonal = d3.linkHorizontal() .x(function(d) { return d.y; }) .y(function(d) { return d.x; }); +var svgW = width + margin[1] + margin[3]; +var svgH = height + margin[0] + margin[2]; + var vis = d3.select("#body").append("svg") - .attr("width", width + margin[1] + margin[3]) - .attr("height", height + margin[0] + margin[2]) + .attr("viewBox", "0 0 " + svgW + " " + svgH) + .attr("preserveAspectRatio", "xMidYMid meet") .append("g") .attr("transform", "translate(" + margin[3] + "," + margin[0] + ")"); From b1ff67beb5427b738c8da07675658c173c2bf906 Mon Sep 17 00:00:00 2001 From: s0lray Date: Tue, 24 Mar 2026 19:10:44 -0400 Subject: [PATCH 4/4] fix(ui): add mobile media queries for header and legend (THE-74) 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 --- public/css/arf.css | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/public/css/arf.css b/public/css/arf.css index 913e807..8865ccd 100644 --- a/public/css/arf.css +++ b/public/css/arf.css @@ -215,3 +215,19 @@ a { color: var(--color-text-secondary); text-align: center; } + +/* === Mobile responsive === */ +@media (max-width: 768px) { + #header { + font-size: var(--font-size-lg); + top: 10px; + } + + .legend { + position: relative; + width: auto; + max-width: 100%; + padding: var(--space-2) var(--space-3); + box-sizing: border-box; + } +}