Skip to content

Commit a65d061

Browse files
committed
feat: expose source result provenance
1 parent 1be9631 commit a65d061

6 files changed

Lines changed: 329 additions & 40 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ All notable changes to ScriptHunt will be documented in this file.
88
- Hardened the optional Cloudflare Worker with exact HTTPS target allowlisting, redirect rejection, bounded 5 MB response streaming, upstream timeout/failure handling, and status/content-type propagation.
99
- Prevented failed, empty, oversized, invalid-content, and non-userscript responses from receiving or caching a clean security score, and retained successful scan provenance.
1010

11+
### Added
12+
- Added versioned source result envelopes and visible per-source provenance for partiality, pagination, latency, cache use, privacy route, HTTP status, and normalized failures.
13+
- Added a public-proxy fallback preference with target-URL disclosure and an explicit failure state when no allowed proxy route remains.
14+
- Added visible GitHub repository/authenticated-code modes, effective query qualifiers, incomplete-result warnings, and 1,000-result ceiling evidence while preserving repository results when code search fails.
15+
1116
## [v0.5.1]
1217

1318
### Security

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,11 @@ npm run qa
6262
| **Advanced Filters** | Visible controls for source, license, installs, updated date, catalog language, @grant, risk, and applies-to domain |
6363
| **Applies-To Evidence** | Site-filtered results show source site matches alongside parsed `@match`, `@include`, and `@exclude` metadata evidence |
6464
| **Filter Results** | Instantly narrow loaded results by name/description/author without re-querying sources |
65-
| **Source Health** | Persists failing source cooldowns with retry controls and copyable diagnostics that omit secrets |
65+
| **Source Health** | Persists failing source cooldowns with retry controls and versioned per-source provenance for partiality, route, latency, HTTP status, and cache use |
6666
| **Offline Recent Searches** | Stores recent successful searches locally, labels stale cached results, and exposes revalidation when online |
6767
| **Cache Diagnostics** | Shows offline/scan cache counts, browser quota estimates, and independent cache-clear recovery controls |
6868
| **Source Toggles** | Enable/disable sources with preferences persisted across sessions |
69-
| **Live Status Chips** | Real-time per-source indicators with CORS proxy health and suspension status |
69+
| **Live Status Chips** | Real-time per-source indicators with partial-result reasons, search mode, privacy route, latency, cache use, and suspension status |
7070
| **Sort Controls** | Sort by relevance, trust score, total/daily installs, rating, last updated, or name |
7171
| **Infinite Scroll** | Automatic pagination fetches next page from all active sources |
7272
| **Staleness Indicators** | Active/Aging/Stale badges on result cards based on last update date |
@@ -210,10 +210,10 @@ To use your custom proxy, open **Diagnostics**, enter the HTTPS Worker URL, save
210210
## FAQ / Troubleshooting
211211

212212
**GitHub results seem broad / not all are userscripts**
213-
GitHub source searches repositories (not individual files) using keyword matching against `userscript OR tampermonkey OR greasemonkey`. With a GitHub token set, code search additionally finds individual `.user.js` files for more precise results.
213+
GitHub source searches repositories (not individual files) using keyword matching against `userscript OR tampermonkey OR greasemonkey`. With a GitHub token set, authenticated code search additionally finds individual `.user.js` files. Status chips and diagnostics disclose the active mode, effective qualifiers, incomplete responses, code-search failures, and GitHub's 1,000-result ceiling.
214214

215215
**OpenUserJS or Gists return no results or fail**
216-
These sources depend on CORS proxy availability. If all proxies are down or rate-limited, the source will show a "Failed" status chip and auto-pause with exponential backoff. Results from other sources will still display normally.
216+
These sources depend on CORS proxy availability. Public proxy services receive the target search or script URL. Diagnostics lets you disable public fallback and use only a custom proxy; without either route, proxy-dependent sources fail explicitly while other source results remain available.
217217

218218
**Rate limits**
219219
GitHub enforces 10 search requests/minute for unauthenticated users (30/min with a token). Heavy pagination or rapid searching may trigger a 403 response — the app tracks rate limits and auto-backs off.
@@ -228,9 +228,9 @@ Yes. Deploy the included Cloudflare Worker template (free tier: 100K requests/da
228228
- **Single-file HTML** — no build step, no bundler, no framework
229229
- **Vanilla JavaScript (ES2022)** — async/await, Promise.allSettled, AbortController, DOMParser, Popover API
230230
- **CSS Custom Properties** — full theming via variables with 4 theme modes
231-
- **Source Adapter Registry**adding a new source requires only a `SOURCES` entry with a `search()` function
231+
- **Source Adapter Registry**built-in searches return a schema-v1 envelope with items, totals/pagination, partiality, latency, cache, route, HTTP status, and normalized failure evidence
232232
- **Google Fonts** — JetBrains Mono (logo/monospace) + Outfit (UI)
233-
- **CORS Proxy** — allorigins.win → codetabs → everyorigin fallback chain with exponential backoff
233+
- **CORS Proxy**optional custom route followed by an opt-out public allorigins.win → codetabs → everyorigin fallback chain with explicit target-URL disclosure
234234
- **PWA** — manifest.json + service worker for installability, explicit update prompts, offline shell fallback notices, and local recent-search recovery
235235
- **localStorage + IndexedDB** - preferences, favorites, source toggles, theme, recent search results, and scan cache persist locally; diagnostics can clear recoverable caches without deleting user records; no tracking, no cookies, no server-side state
236236
- **Versioned JSON payloads** - favorites and installed-list exports use schema v1; imports validate URLs, report skipped invalid rows, and still accept manager-style `scripts` arrays plus legacy arrays

0 commit comments

Comments
 (0)