Changelog
Technical changes shipped to Quickmock — features, fixes, security hardening. Source-of-truth is the git history; this page is the curated developer-facing view.
2026-05-25 — Site content pass
Added
- This /changelog page itself, in EN and RU, with hreflang and an entry in
sitemap.xml.
- Home page: a Quick glossary section (Mock API, Endpoint, TTL, Faker token, Content-Type) for readers landing here without context.
- Home page: a Who built this block with author bio and direct links to GitHub, LinkedIn, Telegram — and a Why I built Quickmock personal-story section, so the page isn't a faceless tool landing.
- Visible Last updated stamp at the bottom of the home page;
dateModified mirrored into the WebApplication JSON-LD so AI crawlers see freshness.
Fixed
?lang=<code> in the URL now actually serves that language. Previously the canonical / hreflang links pointed at ?lang=ru but the resolver only read the cookie and Accept-Language, so a bot following the hreflang link saw English content — the multilingual signal was a lie.
Security
- Origin hardening for
/m/*: the public mock router now strips request-altering headers a malicious caller could use to confuse downstream proxies, slugs were lengthened (more entropy), and internal error messages are redacted before they reach the wire — no DSN fragments, no stack frames.
- Language switcher (
POST /language) now accepts same-origin absolute Referers, so the redirect-back path works behind reverse proxies that rewrite the Referer header. Cross-origin Referers are still rejected.
Fixed
- RealIP middleware now trusts
X-Forwarded-For / X-Real-IP when the immediate peer is loopback or a private/link-local address. Previously XFF was honored only for loopback peers, so behind Docker Compose every request was attributed to the bridge gateway (e.g. 172.18.0.1) — making creator_ip and request_ip useless and turning the per-IP mock limit into a global one.
- Mock router now stores incoming request headers with lowercased keys, so
request_headers->>'user-agent' works regardless of wire casing.
- UI: slug examples updated to the new 12-char format; Copy-URL button restored on the mock detail page.
2026-05-21 — UGC disclaimer
Added
- Footer disclaimer and Terms-of-use modal: mocks are user-generated content, prohibited categories (malware, phishing, CSAM, attack infrastructure) are spelled out, and an abuse-report channel is published.
- Footer modal stays usable on small viewports — close button is no longer clipped on mobile.
2026-05-20 — Dynamic tokens
Added
- Faker / now token substitution in response bodies:
{{`{{faker.uuid}}`}}, {{`{{faker.email}}`}}, {{`{{faker.name}}`}}, {{`{{now.iso8601}}`}}, plus 18 more (people, IDs, network, text, time). The mock stores the template as-is and renders fresh random values on every hit, so one mock can serve different data per call. Full list lives under Dynamic tokens on the create form.
2026-05-18 — Hardening & quality of life
Fixed
- Docker Compose deploy now waits for the
--wait healthcheck instead of polling /healthz in a shell loop, so deploys no longer print the cosmetic curl: (52) Empty reply while the proxy and Go process finish racing.
POSTGRES_PASSWORD example in .env.example now warns against base64-encoded values — pgx's DSN parser chokes on + / = in the password.
2026-05-17 — Initial public release
Added
- Core mock engine: create, view, edit, delete; all HTTP methods including
ANY.
- Public
/m/:slug router with configurable status, body, headers, response delay (0–30 s), and TTL.
- Live request inspector: HTMX 2-second poll, per-mock counter, clear-logs.
- cURL import — paste a
curl … command to pre-fill the create form.
- Code snippets on the mock detail page for JavaScript, Python, Go, and PHP.
- Read-only share preview at
/share/:slug with Open Graph tags.
- Per-IP rate limit (5000 hits / 8 hours) and per-IP active-mock cap (50).
- 512 KB max response body, enforced by handler and a DB
CHECK constraint.
- Docker Compose stack (app + Postgres + Redis + one-shot migration container) and a bare-metal systemd path.
- EN + RU localization, language switcher (cookie + Accept-Language).
- Privacy by design: no third-party JS, no analytics, no fonts CDN; CI enforces this on every build.
Full git history on GitHub →
← Back to home