История изменений

Технические изменения в Quickmock — фичи, фиксы, ужесточения безопасности. Источник правды — git-история; эта страница — собранный «человеко-читаемый» срез для разработчиков.

2026-05-25 — Контент на главной

Добавлено

  • Сама эта /changelog страница, на EN и RU, с hreflang и записью в sitemap.xml.
  • На главной — секция Краткий глоссарий (Mock API, Эндпоинт, TTL, Faker-токен, Content-Type) для тех, кто пришёл сюда без контекста.
  • На главной — блок Кто это сделал с био автора и прямыми ссылками на GitHub, LinkedIn, Telegram; плюс секция Зачем я это сделал с историей создания — чтобы страница не выглядела «безымянной утилитой».
  • Видимая отметка Обновлено внизу главной; dateModified продублирован в WebApplication JSON-LD, чтобы AI-краулеры видели свежесть.

Исправлено

  • ?lang=<code> в URL теперь действительно отдаёт указанный язык. Раньше canonical / hreflang ссылались на ?lang=ru, но резолвер читал только cookie и Accept-Language, поэтому бот, идущий по hreflang, видел английский контент — мультиязычный сигнал был обманом.

2026-05-23

Безопасность

  • Усиление origin для /m/*: публичный mock-router теперь вырезает заголовки, через которые злоумышленник мог запутать downstream-прокси; slug-и стали длиннее (больше энтропии); внутренние сообщения об ошибках редактируются перед отдачей наружу — никаких фрагментов DSN, никаких стек-фреймов.
  • Переключение языка (POST /language) теперь принимает same-origin абсолютные Referer-ы — редирект «обратно» работает за reverse-прокси, которые переписывают Referer. Cross-origin Referer-ы по-прежнему отбрасываются.

Исправлено

  • Middleware RealIP теперь доверяет X-Forwarded-For / X-Real-IP, когда непосредственный peer — loopback или private / link-local адрес. Раньше XFF принимался только от loopback, поэтому за Docker Compose все запросы атрибутировались bridge-шлюзу (например, 172.18.0.1) — creator_ip и request_ip становились бесполезными, а лимит «50 моков на IP» превращался в глобальный.
  • Mock router теперь сохраняет ключи входящих заголовков в нижнем регистре, чтобы request_headers->>'user-agent' работал независимо от регистра в проводе.
  • UI: примеры slug-ов обновлены на новый 12-символьный формат; кнопка «Copy URL» на странице мока починена.

2026-05-21 — Дисклеймер UGC

Добавлено

  • Дисклеймер в подвале и модалка с условиями использования: содержимое моков — UGC, явно перечислены запрещённые категории (вредоносное ПО, фишинг, CSAM, инфраструктура для атак), опубликован канал для жалоб.
  • Модалка в футере остаётся юзабельной на маленьких экранах — кнопка закрытия больше не уезжает за край на мобильных.

2026-05-20 — Динамические токены

Добавлено

  • Подстановка faker / now токенов в теле ответа: {{`{{faker.uuid}}`}}, {{`{{faker.email}}`}}, {{`{{faker.name}}`}}, {{`{{now.iso8601}}`}} и ещё 18 других (люди, ID, сеть, текст, время). Мок хранит шаблон как есть и подставляет свежие случайные значения на каждый запрос — один мок отдаёт разные данные в разных вызовах. Полный список — в разделе Динамические токены на форме создания.

2026-05-18 — Усиление и удобство

Исправлено

  • Docker Compose деплой теперь ждёт --wait healthcheck вместо опроса /healthz в shell-цикле — деплои больше не печатают косметический curl: (52) Empty reply в момент, когда прокси и Go-процесс заканчивают «гонку».
  • Пример POSTGRES_PASSWORD в .env.example теперь предупреждает против base64 — pgx DSN-парсер ломается на + / = в пароле.

2026-05-17 — Первый публичный релиз

Добавлено

  • Ядро mock-движка: создание, просмотр, редактирование, удаление; все HTTP-методы, включая ANY.
  • Публичный роутер /m/:slug с настраиваемыми статусом, телом, заголовками, задержкой ответа (0–30 с) и TTL.
  • Живой инспектор запросов: HTMX-опрос раз в 2 секунды, счётчик попаданий, очистка лога.
  • Импорт из cURL — вставь команду curl …, и форма создания заполнится сама.
  • Сниппеты кода на странице мока для JavaScript, Python, Go, PHP.
  • Превью только для чтения по /share/:slug с Open Graph тегами.
  • Per-IP rate limit (5000 хитов / 8 часов) и потолок активных моков на IP (50).
  • Максимальный размер тела ответа — 512 КБ, обеспечивается handler-ом и DB CHECK-констрейнтом.
  • Docker Compose стек (app + Postgres + Redis + one-shot миграционный контейнер) и bare-metal путь через systemd.
  • EN + RU локализация, переключатель языка (cookie + Accept-Language).
  • Privacy by design: никакого стороннего JS, никакой аналитики, никакого CDN-шрифтов; CI это проверяет на каждом билде.

Полная git-история на GitHub →

← На главную