Every commit scored for change-risk against this repo's own history, so 'elevated' means elevated here rather than on some global curve.
Needs review
80 commits sit in this repo's top risk tercile, which is 33% of the 244scored. The cut is drawn against this codebase's own history rather than a global curve, so a quiet repo still fills its top band, and here it starts at 7.8 out of 10. What pushes a commit up is size and spread together: a large change confined to one area scores below a smaller one scattered across a dozen files.
Commit categories over time, read off the subject line. Fixes carry the accent because that is the series this chart exists to show.
Consistently fix-driven across its history.
Ranked by change-risk, highest first. Priority is a tercile of this repo's own distribution, so a quiet repo still fills its top band.
| # | Commit | Author | When | Lines | Risk | Top driver |
|---|---|---|---|---|---|---|
| 1 | 8749725bInitial Release | h4ckf0r0day | 4mo ago | +19.8K -0 | 100%Elevated | more lines added than baseline |
| 2 | a727fe82Add GitBook-synced docs under docs/ | SGavrl | 2mo ago | +1.9K -0 | 99%Elevated | more lines added than baseline |
| 3 | 171dba23Feat/mcp agent skill tier1 (#215) | SGavrl | 2mo ago | +1.2K -30 | 99%Elevated | more lines added than baseline |
| 4 | ed75730efeat(js): implement WebCrypto SubtleCrypto secret-key algorithms | MrBeanDev | 1mo ago | +701 -23 | 98%Elevated | more lines added than baseline |
| 5 | 2e731a2afeat(api): add obscura-api crate with Browser + Page + Element + CookieStore (#191) | zhangyang-crazy-one | 2mo ago | +781 -140 | 98%Elevated | more lines added than baseline |
| 6 | bce055fdMCP support (#65) | Jordi Llonch | 3mo ago | +1.2K -1 | 98%Elevated | more lines added than baseline |
| 7 | 3b2c6c0dWPT conformance: legacy-charset URL encoding, IDL attribute reflection, FileAPI, Storage, Range (#237) | SGavrl | 2mo ago | +782 -56 | 96%Elevated | more lines added than baseline |
| 8 | 990f2a63feat(js): popover, legacy events, CDATA/PI, DOMTokenList, namedItem, attachShadow (#231) | SGavrl | 2mo ago | +565 -52 | 96%Elevated | more lines added than baseline |
| 9 | dc2a2e3b feat(js): DOM, namespace, validity, and parsing APIs surfaced by WPT conformance work (#230) | SGavrl | 2mo ago | +563 -5 | 96%Elevated | more lines added than baseline |
| 10 | 326096e2Engine tier1 compat fixes (#208) | SGavrl | 2mo ago | +576 -79 | 96%Elevated | more lines added than baseline |
| 11 | b98e4574engine: large compat + reliability pass (#206) | SGavrl | 2mo ago | +929 -245 | 96%Elevated | more lines added than baseline |
| 12 | 1da60326feat(cdp): implement Network.setCookie + deleteCookies, full field fidelity (#170) | Ben Younesclaudeassisted | 2mo ago | +492 -127 | 96%Elevated | more lines added than baseline |
| 13 | 07c6e735WPT conformance: WHATWG URL, DOM Range, and post-navigation event-loop settle (#233) | SGavrl | 2mo ago | +558 -57 | 95%Elevated | more lines added than baseline |
| 14 | 85739d3ffix(#19): serialize V8 work across pages with process-wide async lock (#36) | Timothy Olaleke | 3mo ago | +521 -3 | 95%Elevated | more lines added than baseline |
| 15 | f4cbb78fAdd Target.targetInfoChanged and DOMSnapshot.captureSnapshot for DOM agents (#282) | SGavrl | 2mo ago | +481 -0 | 94%Elevated | more lines added than baseline |
| 16 | b662ff8dfix(dom): make serialize, textContent, and import iterative (#367) | Andrey Mnatsakanov | 1mo ago | +243 -86 | 93%Elevated | more lines added than baseline |
| 17 | 906dcfcdfeat: cookie jar persistence + --storage-dir flag + fix HTTP cookie header filtering (#114) | zhangyang-crazy-one | 2mo ago | +343 -39 | 93%Elevated | more lines added than baseline |
| 18 | 10810e25fix(cdp): keep HTTP control plane reachable while V8 JS evaluation blocks (#173) | Ben Younes | 3mo ago | +330 -78 | 93%Elevated | more lines added than baseline |
| 19 | 6dd1e4e6Fix CDP click submit navigation parity (#69) | Alexandr Kondakov | 3mo ago | +450 -43 | 93%Elevated | more lines added than baseline |
| 20 | a4591707feat(cdp): implement Accessibility domain (getFullAXTree) | zhangyang-crazy-one | 3mo ago | +381 -1 | 93%Elevated | more lines added than baseline |
| 21 | 570ca154add Network.getResponseBody support | Rohit Madhu | 2mo ago | +276 -8 | 91%Elevated | more lines added than baseline |
| 22 | 1e9e9478Fix/v8 watchdog panic safety (#239) | SGavrl | 2mo ago | +335 -12 | 91%Elevated | more lines added than baseline |
| 23 | ee10e8ddfeat(engine): DOM + AbortSignal + storage fixes surfaced by WPT conformance work (#219) | SGavrl | 2mo ago | +464 -21 | 91%Elevated | more lines added than baseline |
| 24 | 71b9b4fbfix(js,dom): scope element queries, real timers, form/prepend/equal (#180) | SGavrl | 3mo ago | +264 -31 | 91%Elevated | more lines added than baseline |
| 25 | 3bf0da2fAdd Network.setBlockedURLs support (#315) | RohitMadhu | 2mo ago | +228 -21 | 90%Elevated | more lines added than baseline |
| 26 | 1a0644f7feat(cdp): bound every CDP command with a shared V8 watchdog (#250) | SGavrl | 2mo ago | +255 -34 | 90%Elevated | more lines added than baseline |
| 27 | b5039a8afeat(cli): add --file and --concurrency batch mode to fetch (#352) | SGavrl | 1mo ago | +244 -10 | 88%Elevated | more lines added than baseline |
| 28 | ff39fb6fdocs: add SECURITY.md and CONTRIBUTING.md | SGavrl | 1mo ago | +259 -0 | 88%Elevated | more lines added than baseline |
| 29 | 1f5066fcapi: add request/response interception API to Page (#306) | SGavrl | 1mo ago | +261 -7 | 88%Elevated | more lines added than baseline |
| 30 | 93b2fba6fix: creepjs stealth, AudioBuffer, Crypto, Worker, hasIframeProxy | SGavrl | 2mo ago | +266 -81 | 88%Elevated | more lines added than baseline |
| 31 | 9c3dd6b2WPT conformance: dom/ranges, FileAPI, detached documents (#236) | SGavrl | 2mo ago | +228 -30 | 88%Elevated | more lines added than baseline |
| 32 | 3d12f76dfeat(cli): add --dump assets to inventory page sub-resources (124) (#174) | Ben Younes | 3mo ago | +276 -4 | 87%Elevated | more lines added than baseline |
| 33 | 2e0981efstealth: route scripted fetch()/XHR through the wreq client | SGavrl | 2mo ago | +249 -1 | 85%Elevated | more lines added than baseline |
| 34 | 6ba3c635Security: block SSRF DNS-rebinding and widen the IP deny-set (#279) | charlesmamane26-sketch | 2mo ago | +187 -16 | 85%Elevated | more lines added than baseline |
| 35 | a23dad7cStealth profile consistency (#269) | johnnogueiraclaudeassisted | 2mo ago | +171 -26 | 85%Elevated | more lines added than baseline |
| 36 | c8d98845fix(build): switch reqwest from native-tls-vendored to rustls-tls (#229) | SGavrl | 2mo ago | +232 -158 | 85%Elevated | more lines added than baseline |
| 37 | ea89f050Fix puppeteer `exposeFunction` end-to-end: real bindings, preload timing, URL coercion (#166) | Marc Bachmannclaudeassisted | 2mo ago | +167 -22 | 85%Elevated | more lines added than baseline |
| 38 | 913e6a48fix(browser,cdp): correct document lifecycle ordering and add missing DOM methods | SGavrl | 3mo ago | +243 -148 | 85%Elevated | more lines added than baseline |
| 39 | 2e5d63ccInitial commit | h4ckf0r0day | 4mo ago | +203 -0 | 85%Elevated | more lines added than baseline |
| 40 | ad7a7a93fix(js): support in/Object.keys on style and dataset (CSSOM parity) (#357) | SGavrl | 1mo ago | +177 -13 | 82%Elevated | more lines added than baseline |
| 41 | 6c9d5c55Security: cap MCP HTTP request bodies and add optional Origin allowlist (#280) | charlesmamane26-sketch | 2mo ago | +141 -0 | 82%Elevated | more lines added than baseline |
| 42 | fd242194Perf/cdp fetch cache and cookie alloc (#216) | SGavrl | 2mo ago | +149 -38 | 82%Elevated | more lines added than baseline |
| 43 | 52fcf2a3fix(net,browser): detect response charset, decode non-UTF-8 pages (#182) | SGavrl | 3mo ago | +235 -8 | 82%Elevated | more lines added than baseline |
| 44 | a3b21bbbfix(cdp,js): playwright actionability stubs and objectId resolve (#178) | SGavrl | 3mo ago | +155 -6 | 82%Elevated | more lines added than baseline |
| 45 | cb701fc2feat(cli): add --v8-flags plumbing to configure V8 at startup (#130) (#131) | Adam Ma | 3mo ago | +154 -1 | 82%Elevated | more lines added than baseline |
| 46 | 2ff0f8fefix(cdp): read and validate contextId in Runtime.evaluate / callFunctionOn (#51) (#149) | Ben Younes | 3mo ago | +173 -2 | 82%Elevated | more lines added than baseline |
| 47 | 53a04fa9fix(wasm): preserve binary fetch responses (#48) | rifuki | 3mo ago | +217 -30 | 82%Elevated | more lines added than baseline |
| 48 | 56ab54e6stealth: gate JS behaviours, upgrade wreq, fix fp consistency | SGavrl | 2mo ago | +197 -108 | 80%Elevated | more lines added than baseline |
| 49 | a703b7acWPT conformance + perf: O(1) querySelector('#id'), HTML attribute folding, compareDocumentPosition, URLSearchParams, DOMParser (#238) | SGavrl | 2mo ago | +160 -15 | 80%Elevated | more lines added than baseline |
| 50 | 9ae36764 feat(stealth): many stealth improvements | Sander Spilleman | 2mo ago | +190 -731 | 80%Elevated | more lines added than baseline |
Two views of the same model: where the cuts fall, and what commit shape lands you above them.
Every scored commit, binned on the raw 0 to 10 score rather than the percentile. Percentile ranks are uniform by construction, so that axis has no shape to draw. The dashed lines are the tercile cuts behind each row's priority pill.
The 200 most recent commits, on their own recency sample rather than the feed above: that defaults to risk-sorted, so reusing it would plot only the top tercile and call it the spread. Big and scattered is what the model penalises. Click a dot to open it.
schluegge/OwObscura has 274 commits in its history from 34 contributors, the first of them Apr 13, 2026. In the last 90 days 51 files were touched, 307 times in total, most often bootstrap.js. Every commit is scored for change risk from its size, spread and the history of the files it touches.