Skip to content

Commit a171f61

Browse files
committed
chore: v1.5.0 — API Studio, Upstash rate limiting, contact form hardening
1 parent 5c42ff2 commit a171f61

2 files changed

Lines changed: 38 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,43 @@ InfraLens's history as a standalone product (2026-01-06 to 2026-08-10) is
99
frozen in [`docs/infralens/CHANGELOG.md`](docs/infralens/CHANGELOG.md).
1010
InfraLens changes since its native migration are recorded here.
1111

12+
## [1.5.0] — 2026-08-17
13+
14+
### Added
15+
16+
- **API Studio** (`/tools/api-studio`) — a new developer tool for building,
17+
sending, and inspecting HTTP requests directly from the browser: method,
18+
URL, query params, headers, Bearer/Basic auth, and a JSON/text/URL-encoded
19+
body, sent through a secured backend proxy (`POST /api/api-studio/request`)
20+
that reuses InfraLens's SSRF/DNS/redirect validation stack untouched
21+
rather than duplicating it. Responses show status, timing, size, headers,
22+
and a formatted/raw body; requests are saved to a local IndexedDB history
23+
(reopen/resend/delete/clear, capped at 100 entries) and can be exported as
24+
ready-to-use `fetch` or `curl` code. Gated by its own rate-limit policy
25+
and a per-client concurrency cap, both enforced before any outbound
26+
attempt. `/tools` is now grouped into Web & API / Developer Utilities
27+
categories to make room for it; the footer's tool list follows the same
28+
order.
29+
30+
### Changed
31+
32+
- **Rate limiting moved off the in-memory limiter** — InfraLens and MetaLens
33+
now share a distributed, Upstash-backed rate-limit module
34+
(`src/lib/rate-limit`) instead of a process-local `Map`, which gave every
35+
serverless instance its own independent counter and reset on cold start.
36+
Each tool keeps its own quota bucket; InfraLens's policy relaxes from 1
37+
request/30s to 5/min + 30/h. The shared client-identifier helper also
38+
drops `cf-connecting-ip` from the trusted header chain — this deployment
39+
has no Cloudflare in front of it, so that header was accepted without
40+
ever being sanitized.
41+
42+
### Security
43+
44+
- **Contact form** had no abuse protection at all — now rate-limited
45+
(3 submissions/15min + 10/24h before the email is sent), plus a
46+
honeypot field, a minimum form-fill-time check, and server-side max
47+
field lengths.
48+
1249
## [1.4.4] — 2026-08-16
1350

1451
### Fixed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "randy-code",
3-
"version": "1.4.4",
3+
"version": "1.5.0",
44
"private": true,
55
"packageManager": "pnpm@10.7.0",
66
"scripts": {

0 commit comments

Comments
 (0)