Skip to content

Commit 45bc3cc

Browse files
authored
chore(release): 0.15.1 (#42)
1 parent b720810 commit 45bc3cc

9 files changed

Lines changed: 41 additions & 25 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10-
### Added
11-
12-
- **OpenTelemetry spans** around `protect()` and rule evaluation. Pass a tracer: `new WebDecoy({ tracer: trace.getTracer('webdecoy') })`. Injected rather than imported, so the package stays dependency-free and edge-safe — the `Tracer` type is a structural subset of OpenTelemetry's, so `trace.getTracer()` works with no adapter, and omitting it means no spans, no dependency and no behaviour change. Attributes cover the decision id (which joins a span to its dashboard row), the conclusion, the deciding rule, and whether the request cost a round trip to ingest. A tracer that throws cannot fail a request.
10+
## [0.15.1] - 2026-09-16
1311

1412
### Changed
1513

1614
- **`ClearanceOptions.scope` is documented as reserved.** It was described as a route-group scope that limits where a token is valid. No validator enforces that: a clearance token is bound to the organization, and each protected path's verification level is the way to require stronger proof. Passing `scope` (or `data-scope` on the script tag) still works and still has no effect.
1715

16+
## [0.15.0] - 2026-08-28
17+
18+
### Fixed
19+
20+
- **A datacenter or VPN IP alone no longer forwards a request for server verification.** Local analysis scored a datacenter/VPN address high enough on its own to forward the request, so a real visitor on a VPN, with a normal browser and full headers, was sent for server-side scoring exactly like a bot. The SDK now forwards on a genuine local bot signal (a bot or automation user agent, or missing headers every real browser sends) or when TLS details are available to fingerprint. A datacenter IP and an absent `Sec-CH-UA` no longer force a forward, alone or together; both still travel with a request that is forwarded for another reason. Trade-off: a bot that perfectly imitates a browser from a datacenter IP, with no TLS details, is no longer forwarded on the IP alone.
21+
22+
## [0.14.0] - 2026-08-28
23+
24+
### Changed
25+
26+
- **Breaking: server-to-server traffic defaults to `https://in.webdecoy.com`.** The default `apiUrl` moved from `https://ingest.webdecoy.com`. Server-to-server calls carry no browser fingerprint, so the fronted hostname costs nothing and adds DDoS absorption and rate limiting in front of ingest. If you set `apiUrl` explicitly, nothing changes. `@webdecoy/client` keeps the direct hostname, because a browser's own TLS handshake is part of what it reports.
27+
1828
- **One adapter core.** Express, Fastify, Next.js (middleware and Pages wrapper) and the fetch guard each carried their own copy of skip-path matching, the 429 and 403 payloads, and honeytoken arming — five copies of one set of decisions, and five places the next correction can fail to land. They now share `adapter-core.ts`; the framework-specific response mechanics are untouched, and every honeytoken-injection test passes unchanged. Fastify keeps its awaited arming, which has no window where early requests are served without the link.
1929

30+
### Added
31+
32+
- **OpenTelemetry spans** around `protect()` and rule evaluation. Pass a tracer: `new WebDecoy({ tracer: trace.getTracer('webdecoy') })`. Injected rather than imported, so the package stays dependency-free and edge-safe — the `Tracer` type is a structural subset of OpenTelemetry's, so `trace.getTracer()` works with no adapter, and omitting it means no spans, no dependency and no behaviour change. Attributes cover the decision id (which joins a span to its dashboard row), the conclusion, the deciding rule, and whether the request cost a round trip to ingest. A tracer that throws cannot fail a request.
33+
34+
- **Six more crawlers are recognised:** DuckAssistBot, SofyaBot, Reflectionbot, xAI-SearchBot, LinkupBot, and IbouBot (classified as a search crawler).
35+
2036
## [0.13.0] - 2026-08-22
2137

2238
### Added

‎package-lock.json‎

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎packages/client/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@webdecoy/client",
3-
"version": "0.15.0",
3+
"version": "0.15.1",
44
"description": "Web Decoy browser widget - signal collection, proof-of-work, and captcha UI",
55
"main": "./dist/index.js",
66
"module": "./dist/index.mjs",

‎packages/client/src/clearance.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
/**
2-
* wd_clearance minting (WAF Enforcement PRD FR6 / closes the #124 loop).
2+
* wd_clearance minting.
33
*
44
* Real browsers earn a signed clearance token from WebDecoy's ingest service and
5-
* carry it in a first-party cookie. The edge validator (FR7) lets tokened
5+
* carry it in a first-party cookie. The edge validator lets tokened
66
* sessions through; a decoy hit denies the token's fp (deny-at-mint + live-token
77
* revocation). This is the *allow-and-observe* path — it mints silently during
88
* normal browsing so the loop covers monitor mode, not just the enforce-mode

‎packages/express/package.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@webdecoy/express",
3-
"version": "0.15.0",
3+
"version": "0.15.1",
44
"description": "Web Decoy middleware for Express.js",
55
"main": "./dist/index.js",
66
"types": "./dist/index.d.ts",
@@ -40,7 +40,7 @@
4040
"url": "https://github.com/WebDecoy/node/issues"
4141
},
4242
"dependencies": {
43-
"@webdecoy/node": "^0.15.0"
43+
"@webdecoy/node": "^0.15.1"
4444
},
4545
"peerDependencies": {
4646
"express": "^4.18.0 || ^5.0.0"

‎packages/fastify/package.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@webdecoy/fastify",
3-
"version": "0.15.0",
3+
"version": "0.15.1",
44
"description": "Web Decoy plugin for Fastify",
55
"main": "./dist/index.js",
66
"types": "./dist/index.d.ts",
@@ -40,7 +40,7 @@
4040
"url": "https://github.com/WebDecoy/node/issues"
4141
},
4242
"dependencies": {
43-
"@webdecoy/node": "^0.15.0",
43+
"@webdecoy/node": "^0.15.1",
4444
"fastify-plugin": "^4.5.1"
4545
},
4646
"peerDependencies": {

‎packages/hono/package.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@webdecoy/hono",
3-
"version": "0.15.0",
3+
"version": "0.15.1",
44
"description": "Web Decoy middleware for Hono — Cloudflare Workers, Bun, Deno, Node",
55
"main": "./dist/index.js",
66
"types": "./dist/index.d.ts",
@@ -44,7 +44,7 @@
4444
"url": "https://github.com/WebDecoy/node/issues"
4545
},
4646
"dependencies": {
47-
"@webdecoy/node": "^0.15.0"
47+
"@webdecoy/node": "^0.15.1"
4848
},
4949
"peerDependencies": {
5050
"hono": "^4.0.0"

‎packages/nextjs/package.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@webdecoy/nextjs",
3-
"version": "0.15.0",
3+
"version": "0.15.1",
44
"description": "Web Decoy middleware for Next.js",
55
"main": "./dist/index.js",
66
"types": "./dist/index.d.ts",
@@ -42,7 +42,7 @@
4242
"url": "https://github.com/WebDecoy/node/issues"
4343
},
4444
"dependencies": {
45-
"@webdecoy/node": "^0.15.0"
45+
"@webdecoy/node": "^0.15.1"
4646
},
4747
"peerDependencies": {
4848
"next": ">=13.0.0"

‎packages/webdecoy/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@webdecoy/node",
3-
"version": "0.15.0",
3+
"version": "0.15.1",
44
"description": "Web Decoy SDK for Node.js - Bot detection with TLS fingerprinting",
55
"main": "./dist/index.js",
66
"types": "./dist/index.d.ts",

0 commit comments

Comments
 (0)