diff --git a/wp-plugin-info.json b/wp-plugin-info.json
index ea40d1b..9e2fdbd 100644
--- a/wp-plugin-info.json
+++ b/wp-plugin-info.json
@@ -1,16 +1,16 @@
{
- "name": "CF7 Spam → Telegram",
- "slug": "cf7-spam-to-telegram",
- "version": "1.1.0",
- "download_url": "https://git.netranking.ru/bryzgalov/cf7-spam-to-telegram/releases/download/v1.1.0/cf7-spam-to-telegram-1.1.0.zip",
- "homepage": "https://git.netranking.ru/bryzgalov/cf7-spam-to-telegram",
- "requires": "6.0",
- "tested": "6.9",
- "requires_php": "7.4",
- "last_updated": "2026-04-21 00:00:00",
- "author": "Vladimir Bryzgalov",
- "sections": {
- "description": "Forwards CF7 spam submissions to Telegram with heuristic classification (client/unclear/spam/drop labels).",
- "changelog": "
1.1.0
- Silent drop: hard-rule/score threshold + dry-run mode, Settings block, Dashboard counter.
"
- }
+ "name": "CF7 Spam → Telegram",
+ "slug": "cf7-spam-to-telegram",
+ "version": "1.2.0",
+ "download_url": "https://git.netranking.ru/attachments/a04cdb20-7e80-4703-8c30-1000e5945e8b",
+ "homepage": "https://git.netranking.ru/bryzgalov/cf7-spam-to-telegram",
+ "requires": "6.0",
+ "tested": "6.9",
+ "requires_php": "7.4",
+ "last_updated": "2026-04-21 18:53:53",
+ "author": "Vladimir Bryzgalov",
+ "sections": {
+ "description": "Forwards CF7 spam submissions to Telegram with heuristic classification (client/unclear/spam/drop labels).",
+ "changelog": "1.2.0
- New: Self-hosted plugin updates from Gitea via Plugin Update Checker v5.6. WordPress admin shows updates automatically (checked hourly). Source: https://git.netranking.ru/bryzgalov/cf7-spam-to-telegram/raw/branch/main/wp-plugin-info.json
- Dev: release.sh — one-shot release script (bump → release commit → push → build clean zip via git archive --worktree-attributes → Gitea release + asset upload → regenerate wp-plugin-info.json with actual download_url → JSON commit + push). Two fast-forward commits per release, no force-push.
- Dev: .gitattributes export-ignore covers tests/, docs/, composer.*, phpunit.xml, .beads/, .claude/, CLAUDE.md, AGENTS.md, release.sh, dist/, .git* — git archive produces clean zip without dev files.
- Dev: .gitignore adds dist/ for local release build artifact.
1.1.0
- New: Silent drop — заявки, удовлетворяющие hard-rule (нет позитивных сигналов + короткое латинское имя или ≥3 полей-плейсхолдеров) или score ≤ -5, не отправляются в TG. По умолчанию при установке/апгрейде включён dry-run режим (помечает сообщение «[БЫЛО БЫ DROPPED]»); реальный дроп включается чекбоксом в настройках.
- New: Settings → блок «Silent drop» с переключателями dry-run, hard-rule, score-порогом и статистикой счётчиков.
- New: Dashboard widget показывает количество дропов.
- New: filter `cf7stg_should_enqueue` для внешних override-правил.
- New: filter `cf7stg_hard_drop_rules` для точечного отключения hard-rules.
1.0.4
- Fix: PhoneParser больше не склеивает цифры из соседних полей при flatten через `\\n` / `\\t`.
- Fix: Flamingo `_from_email` используется как `your-email` только если содержит `@`; `_from_name` больше не маппится.
- New: `FieldDetector` — fallback-поиск имени и e-mail по значению, когда на форме нестандартные ключи полей (`text-211`, `name_user` и т.п.).
- UX: Dashboard-виджет «CF7 Spam → Telegram» отображается всегда (статус очереди), а не только при ошибках.
- UX: В ретроспективной выгрузке по умолчанию `0` дней (без ограничения по дате).
1.0.3
- Fix: Убрана `tel:`-кнопка в inline_keyboard (Telegram Bot API отклонял `tel:` URL с HTTP 400).
- Fix: HTTP 4xx ответы Telegram (кроме 429 rate-limit) теперь классифицируются как permanent — записи сразу помечаются failed, без 5 бесполезных retry.
- Fix: `FlamingoHelper::extract_fields` берёт значения из `_field_*` мета, а не из пустого `_fields`-массива.
1.0.2
- Fix: Activator регистрирует `cron_schedules` фильтр до `wp_schedule_event` — без этого кастомный интервал `cf7stg_every_minute` не существовал в момент активации и cron никогда не срабатывал.
- Fix: Autoloader корректно маппит классы с `_` (например, `Settings_Page`, `Interface_Spam_Source`) в файлы с дефисами.
- Fix: Поправлен неверный Punycode-пример в документации.
- Fix: Honeypot теперь hard override → label=spam (weighted -5 был недостаточен для перевеса положительных сигналов).
1.0.0
"
+ }
}