|
| 1 | +# Roadmap |
| 2 | + |
| 3 | +Forward-looking plans for ScriptHunt — zero-dependency, single-file HTML web app that searches Greasy Fork, Sleazy Fork, GitHub, and OpenUserJS in parallel. v0.0.4 today. |
| 4 | + |
| 5 | +## Planned Features |
| 6 | + |
| 7 | +### Sources |
| 8 | +- Add: GitHub Gists, GitLab snippets, userstyles.world (CSS), Chrome Web Store extensions |
| 9 | +- Add: AMO (Firefox addons), Tampermonkey script catalog, BuiltWith-style "detect what scripts this site has" |
| 10 | +- Source auth: optional GitHub token + OAuth device flow so authenticated searches get 5000 req/h instead of 60 |
| 11 | + |
| 12 | +### Search |
| 13 | +- Full-text query across `@description`, `@name`, `@match` with highlighted matches |
| 14 | +- Filter panel: license, min rating, install count range, updated within N months, has/lacks `@grant` types |
| 15 | +- Sort: daily installs, weekly installs, updated date, rating, author reputation |
| 16 | +- Saved queries pinned to sidebar |
| 17 | +- URL deep-linking for filters (`?q=reddit&src=gf,gh&sort=installs&since=90d`) |
| 18 | + |
| 19 | +### Results & Install |
| 20 | +- Expand a card to see source preview with syntax highlighting (Prism inline, no build step) |
| 21 | +- `@match` matrix — show which of the user's URL inputs each script actually targets |
| 22 | +- One-click install via `raw.githubusercontent.com` / `greasyfork.org/scripts/N/.user.js` redirects |
| 23 | +- Clipboard copy for install URL + QR code for mobile |
| 24 | +- Dedup across sources (name + author) — current behavior expanded with author-alias normalization |
| 25 | + |
| 26 | +### Performance & Offline |
| 27 | +- Service worker cache of static HTML + last-N searches for offline browse |
| 28 | +- IndexedDB of the user's install history to show "already installed" |
| 29 | +- Background revalidation — stale-while-revalidate on source fetches |
| 30 | + |
| 31 | +### Trust |
| 32 | +- Flag dangerous `@grant` combinations |
| 33 | +- Author reputation score (account age, total installs, fork count) |
| 34 | +- Source code diff when a script has an update since last visit |
| 35 | +- Malicious-pattern scanner (hardcoded exfil URLs, crypto miners, eval-of-remote-fetch) |
| 36 | + |
| 37 | +## Competitive Research |
| 38 | + |
| 39 | +- **Greasy Fork native search**: baseline — lacks cross-source merge and dedup. We win there. |
| 40 | +- **UserScript Finder** (sibling project): in-page companion to ScriptHunt. Keep feature parity so users can pick either. |
| 41 | +- **awesome-userscripts repos on GitHub**: community lists, curated. Ingest as a "curated" source with editorial labels. |
| 42 | +- **Chrome Web Store / AMO search**: browser extensions are the main alternative to userscripts. Surface them side-by-side so users pick the right tool. |
| 43 | + |
| 44 | +## Nice-to-Haves |
| 45 | + |
| 46 | +- RSS feed of "new scripts for this domain" users can subscribe to |
| 47 | +- Browser-extension companion that auto-opens ScriptHunt on any new domain you visit |
| 48 | +- "Kit" concept — curated bundles (YouTube Kit, Reddit Kit) that users install with one click |
| 49 | +- Script-version watcher — notify when a tracked script updates |
| 50 | +- Embed widget (`<iframe>` mode) for blogs to show scripts relevant to their topic |
| 51 | +- Side-by-side source diff between two scripts that claim to do the same thing |
| 52 | + |
| 53 | +## Open-Source Research (Round 2) |
| 54 | + |
| 55 | +### Related OSS Projects |
| 56 | +- https://github.com/greasyfork-org/greasyfork — upstream GF (OpenAPI-ish endpoints, scripts.json) |
| 57 | +- https://github.com/OpenUserJs/OpenUserJS.org — OpenUserJS source + API |
| 58 | +- https://github.com/ish4ra/greasyforksearch — multi-site aggregation reference |
| 59 | +- https://github.com/ChinaGodMan/UserScripts — Google CSE advanced-operator patterns |
| 60 | +- https://github.com/F9y4ng/GreasyFork-Scripts — search-engine-assistant UX ideas |
| 61 | +- https://github.com/awesome-scripts/awesome-userscripts — seed taxonomy / curation |
| 62 | +- https://github.com/violentmonkey/violentmonkey — install-handoff target |
| 63 | +- https://github.com/Tampermonkey/tampermonkey — install-handoff target |
| 64 | +- https://github.com/nextapps-de/flexsearch — zero-dep in-browser full-text index (fits single-file HTML) |
| 65 | +- https://github.com/krisk/Fuse — fuzzy search library (smaller footprint than flexsearch) |
| 66 | + |
| 67 | +### Features to Borrow |
| 68 | +- `scripts.json` bulk-fetch then client-side FlexSearch index — no backend, fits single-file deploy (greasyfork-org API) |
| 69 | +- Fuse.js fuzzy match for typos / synonyms (smaller than flexsearch, simpler) |
| 70 | +- Domain-match filter ("scripts that run on `*.youtube.com`") using GF's `applies-to` metadata |
| 71 | +- Install-count / rating / updated-at sortable columns backed by GF stats (greasyfork-org) |
| 72 | +- OpenUserJS federation via its `?output=json` endpoint (OpenUserJS) |
| 73 | +- Google Custom Search Engine fallback for GitHub-hosted scripts (ChinaGodMan pattern) |
| 74 | +- "Similar scripts" column using tag co-occurrence from awesome-userscripts graph |
| 75 | +- Install-handoff via clicking `install` navigates to `*.user.js` raw URL — Tampermonkey/Violentmonkey capture automatically |
| 76 | +- Embed widget (`<iframe>` mode) already in roadmap — implement as separate HTML shell rendering filtered view |
| 77 | +- RSS/Atom feed per search — "new scripts matching X" (GF already offers per-script RSS; aggregate client-side) |
| 78 | + |
| 79 | +### Patterns & Architectures Worth Studying |
| 80 | +- Static-first + client-side indexing: ship a nightly-built JSON of the top N scripts, index in-browser |
| 81 | +- Source-adapter layer with unified `ScriptResult` shape: `{ id, source, name, author, appliesTo[], installs, updatedAt, rawUrl }` |
| 82 | +- GitHub Pages + GitHub Actions nightly rebuild cron — zero hosting cost for always-fresh index |
| 83 | +- IndexedDB cache of last N searches with TTL, using Service Worker for offline access (PWA pattern) |
| 84 | +- Shareable query URL (`?q=...&source=gf,ouj&domain=youtube.com`) for linking results |
0 commit comments