Commit Graph
25 Commits
Author SHA1 Message Date
s0lrayandPaperclip b50c831d1e Add half-star and 0-star community ratings (THE-122)
Replace integer-only 1-5 stars with 0-5 scale in 0.5 increments.
Each star has left/right click zones for half/full values, plus a
dedicated 0-star button. Backend validation updated to accept the
new range. Half-filled stars rendered via CSS linear-gradient on
background-clip: text.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-26 23:01:21 -04:00
s0lrayandPaperclip 4b1510a8af Replace thumbs up/down voting with 5-star community rating (THE-122)
- HTML: Replace #panel-rating empty span with #star-rating (5 .star-btn
  buttons) + #rating-avg display row
- CSS: Replace .vote-btn/.vote-score styles with .star-btn/.filled/
  .user-rated and #rating-avg styles
- JS: Replace _renderVoteUI/castVote/updateScoreDisplay with
  _renderVoteUI/_castRating/_applyStarFill/_updateRatingDisplay;
  hover highlights 1-N stars, click submits/toggles rating 1-5,
  sessionStorage key changed from vote: to rating:
- Worker: handleVote now accepts { rating: 1-5|null } instead of
  { direction: "up"|"down"|null }; KV keys changed from votes:up/down
  to ratings:sum/count; handleStats returns ratings:{average,count}
  instead of votes:{up,down,score}

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-26 22:55:10 -04:00
s0lrayandPaperclip 810b6f6159 Center header title and fit tree to browser viewport on desktop (THE-120)
- Remove <hr/> from header flex container that broke title centering
- Apply viewport-fit zoom logic on all screen sizes, not just mobile
- Set SVG height to calc(100vh - 120px) so tree fills available space
- Add overflow:hidden to body to prevent scrolling past viewport
- Remove unnecessary top:20px offset from header

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-26 20:02:00 -04:00
s0lrayandPaperclip 4e5e88cf0b Add Notes and theme toggle buttons to desktop header (THE-120)
Move theme toggle from legend to header as "Light Mode"/"Dark Mode"
button visible on both desktop and mobile. Add "Notes" button in
header (desktop only; mobile keeps floating pill). Legend and notes
content now load into a 400px slide-in side panel on desktop, matching
the full-screen mobile overlay. Escape key closes notes panel.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-26 19:54:31 -04:00
s0lrayandPaperclip c4531cb053 Add mobile-only theme toggle in header and notes overlay panel (THE-118)
On mobile (<=768px), the legend, notes, and about sections consumed most
of the viewport, leaving the D3 tree nearly unusable. This moves the
theme toggle into the header as a compact "Light Mode"/"Dark Mode"
button, hides the below-tree content, and adds a floating "Notes"
button that opens all that content in a full-screen overlay panel
(matching the existing tool detail panel pattern). Desktop layout
is completely unchanged.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-26 18:12:49 -04:00
s0lrayandPaperclip 51a8adbbda Move Report an Issue into sticky panel footer (THE-114)
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-26 11:08:51 -04:00
s0lrayandGitHub fa3c5d1e73 Merge branch 'master' into feature/THE-114-panel-ui-adjustments 2026-03-26 11:01:52 -04:00
s0lrayandPaperclip 6d0b6e0a34 Move breadcrumb to header and shrink Open Tool button (THE-114)
- 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>
2026-03-26 10:56:14 -04:00
s0lrayandPaperclip ef885f481e Restructure tool details panel layout (THE-114)
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>
2026-03-26 10:49:47 -04:00
s0lrayandPaperclip 7412c6ab19 Add Phase 3 community voting and issue reporting (THE-109, THE-110)
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>
2026-03-26 00:56:24 -04:00
s0lrayandPaperclip 0e7fdcfdbf Add tool details panel UI and D3 wiring (THE-104, THE-105)
THE-104: Build panel UI component
- New public/css/panel.css using existing design tokens
- Fixed-position slide-in panel (340px desktop, 100vw bottom-sheet on mobile)
- 250ms GPU-accelerated translateX() slide animation with will-change
- All section placeholders: header, breadcrumb, badges, description, usage,
  OPSEC, rating, report link, CTA button
- Dark mode via body.light-mode CSS variable overrides
- Graceful empty states (sections hidden via .empty class)

THE-105: Wire panel to D3 tree interactions
- Leaf-node clicks (nodes with url, no children) open panel instead of navigating
- parseName() for clean title + badge rendering
- Breadcrumb built by walking parent chain to root
- Selected-node ring via _panelSelected flag + stroke style in nodeUpdate
- Close triggers: ✕ button, Escape key, overlay click, canvas click, same-node re-click
- Clicking another leaf swaps panel content in-place
- Session hash via crypto.randomUUID() stored in sessionStorage

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-25 23:00:21 -04:00
s0lrayandGitHub c59d584c06 Merge branch 'master' into feat/the-73-tool-status-badges 2026-03-24 23:54:10 -04:00
s0lrayandPaperclip b684b3cd88 feat(ui): replace text suffixes with color-coded SVG badges (THE-73)
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>
2026-03-24 18:51:15 -04:00
s0lrayandPaperclip ab65f65a5f feat(ui): add client-side search for tools (THE-66)
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>
2026-03-24 17:56:24 -04:00
s0lrayandPaperclip 05c15eaf47 feat(ui): implement dark mode as default with CSS variables and theme persistence
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>
2026-03-24 07:27:28 -04:00
s0lrayandPaperclip 82a9c32850 Migrate D3 v3 to v7: update arf.js, index.html, and CI
- Replace d3.layout.tree() with d3.tree()
- Replace d3.svg.diagonal() with d3.linkHorizontal() (x/y accessors swap coords)
- Replace d3.json(url, cb) with d3.json(url).then(cb)
- Replace d3.hierarchy() for root node; use .descendants() and .links()
- Strip svg: namespace prefixes from append/insert calls
- Update xlink:href to href on anchor elements
- Update data accessors to use d.data.name, d.data.url, etc.
- Fix .style("fill") call (was malformed in v3 code)
- Update event handler signature to (event, d) for D3 v7
- Use node.merge(nodeEnter) and link.merge(linkEnter) for v5+ update pattern
- Add public/js/d3.min.js (v7.9.0) copied from node_modules
- Update index.html to load d3.min.js instead of d3.v3.min.js
- Update CI smoke test to check for d3.min.js
- Keep d3.v3.min.js in place until visual parity confirmed

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-23 17:28:56 -04:00
s0lrayandGitHub 43a3abd6ef Merge pull request #471 from comdotharman0/patch-1
Update index.html
2026-03-14 19:34:46 -04:00
s0lrayandGitHub 827c70ce91 Merge pull request #305 from gabrielsozinho/master
feat: add noscript tag
2026-03-14 12:11:29 -04:00
Harman Singh SranandGitHub 82997536f1 Update index.html 2025-06-19 07:38:04 +05:30
Kyle Matthews 9c5e4caaea Added Dark Mode/Fixed file placement problem 2024-10-02 19:22:42 -04:00
gabrielsozinho f8bebb0a14 feat: add noscript tag 2022-12-31 14:57:11 -03:00
s0lray eab26d3e9f Website typo
Words are hard…
2017-03-01 19:18:47 -05:00
s0lray 4a32c697ba site updates
site updates
2017-01-19 21:35:47 -05:00
s0lray 1168431908 Added legend and tagged all links
Tagged all the links with symbols from the legend where appropriate.
2016-10-18 17:26:23 -04:00
treefort f7a6d43aee moved dist files into /public
…updating relative paths commensurately
2016-08-19 00:08:00 -04:00