-
4debe8287a
wp-plugin-info.json: update for 1.2.1
main
Vladimir Bryzgalov
2026-05-01 20:20:30 +05:00
-
0cc1266912
release: 1.2.1
v1.2.1
Vladimir Bryzgalov
2026-05-01 20:20:29 +05:00
-
f510ac484a
fix(cron): self-heal scheduled events on every boot + on plugin upgrade
Vladimir Bryzgalov
2026-05-01 20:19:34 +05:00
-
ad14d0e6e3
docs: add deploy-to-sites guide for juniors
Vladimir Bryzgalov
2026-04-22 00:12:18 +05:00
-
1fd330fa0e
refactor(release): use pretty download_url from /releases/{id} API
Vladimir Bryzgalov
2026-04-22 00:08:49 +05:00
-
79e46ccf7e
fix(release): post-mortem fixes discovered during 1.2.0 release
Vladimir Bryzgalov
2026-04-21 23:55:16 +05:00
-
1a15f0c872
wp-plugin-info.json: update for 1.2.0
Vladimir Bryzgalov
2026-04-21 23:53:53 +05:00
-
b0fb5c8e3d
release: 1.2.0
v1.2.0
Vladimir Bryzgalov
2026-04-21 23:50:23 +05:00
-
34e5571fea
fix(release): replace \s with [[:space:]] in bump sed (BSD compat)
Vladimir Bryzgalov
2026-04-21 21:21:06 +05:00
-
42b98e5438
feat(release): release.sh for one-shot releases to Gitea
Vladimir Bryzgalov
2026-04-21 21:16:15 +05:00
-
73045a1f0c
docs(readme): add 1.2.0 changelog entry
Vladimir Bryzgalov
2026-04-21 21:11:07 +05:00
-
e71cb4e15f
test(archive): git archive includes runtime files, excludes dev files
Vladimir Bryzgalov
2026-04-21 21:10:49 +05:00
-
6422f1bf98
chore: extend .gitattributes export-ignore to cover all dev files
Vladimir Bryzgalov
2026-04-21 21:10:31 +05:00
-
ee5bf2a3c5
chore: ignore dist/ (release.sh build artifact)
Vladimir Bryzgalov
2026-04-21 21:10:22 +05:00
-
5b8eeffecb
feat(updates): wire PUC v5 registration into Plugin::boot()
Vladimir Bryzgalov
2026-04-21 21:08:34 +05:00
-
e4c31e3c40
test(update-checker): wp-plugin-info.json validity + version/download_url invariants
Vladimir Bryzgalov
2026-04-21 21:06:29 +05:00
-
3ec9b488dd
feat(updates): add wp-plugin-info.json skeleton for PUC Generic JSON source
Vladimir Bryzgalov
2026-04-21 21:06:02 +05:00
-
a5082da0da
test(update-checker): invariants for vendored PUC loader and factory class
Vladimir Bryzgalov
2026-04-21 21:05:45 +05:00
-
05aa819608
chore(deps): vendor plugin-update-checker v5.6
Vladimir Bryzgalov
2026-04-21 21:03:37 +05:00
-
c0ff5a9227
docs: finalize self-hosted updates spec + implementation plan (1.2.0)
Vladimir Bryzgalov
2026-04-21 20:59:52 +05:00
-
995131371d
chore: ignore .worktrees/ (feature worktree workspaces)
Vladimir Bryzgalov
2026-04-21 20:59:33 +05:00
-
f7d81a4517
docs(spec): DRAFT design for self-hosted updates from Gitea (1.2.0)
Vladimir Bryzgalov
2026-04-21 18:46:35 +05:00
-
4dbf3a6ded
Merge feat/silent-drop: silent drop label + dry-run + counters (1.1.0)
Vladimir Bryzgalov
2026-04-21 18:14:40 +05:00
-
-
714b4712ad
fix: wire is_hard_drop_enabled + drop_score_threshold settings into Classifier filter chain
Vladimir Bryzgalov
2026-04-21 17:25:20 +05:00
-
030eaca408
chore: bump version to 1.1.0 with silent-drop changelog
Vladimir Bryzgalov
2026-04-21 17:18:14 +05:00
-
22722ae9e9
feat(admin): silent-drop counter line in dashboard widget
Vladimir Bryzgalov
2026-04-21 17:16:34 +05:00
-
ea5666318b
feat(admin): silent-drop block in settings page (dry-run, hard-rule, threshold, stats, reset)
Vladimir Bryzgalov
2026-04-21 17:14:56 +05:00
-
2fcebcc756
feat(formatter): [БЫЛО БЫ DROPPED] header + triggered-rule line in dry-run mode
Vladimir Bryzgalov
2026-04-21 17:12:16 +05:00
-
42e311c05a
feat(source): drop label → skip enqueue (or marked enqueue in dry-run); cf7stg_should_enqueue filter
Vladimir Bryzgalov
2026-04-21 16:30:07 +05:00
-
24367c1ccb
feat(activator): seed silent-drop options (dry-run on by default) on activate
Vladimir Bryzgalov
2026-04-21 16:26:38 +05:00
-
0034531a3a
fix(settings): wp_date() respects WP timezone; clarify counter is not atomic
Vladimir Bryzgalov
2026-04-21 16:25:30 +05:00
-
ae70b42dcb
feat(settings): silent-drop options + counter with rolling today→yesterday
Vladimir Bryzgalov
2026-04-21 16:22:57 +05:00
-
f415f429ed
refactor(classifier): single-pass hard-drop trigger; cleaner drop reason rendering
Vladimir Bryzgalov
2026-04-21 16:20:28 +05:00
-
a70785beca
feat(classifier): label 'drop' via hard-rule + score threshold (-5 default)
Vladimir Bryzgalov
2026-04-21 16:14:49 +05:00
-
18a07c9b1b
test(classifier): exact-count assertions for placeholder fixture; document SERVICE_FIELD_KEYS prefix semantics
Vladimir Bryzgalov
2026-04-21 16:08:57 +05:00
-
249f195257
feat(classifier): count_placeholder_fields() helper for drop-logic
Vladimir Bryzgalov
2026-04-21 16:06:32 +05:00
-
1168a733a4
test(classifier): boundary + array-value tests for has_short_latin_name; @return tags
Vladimir Bryzgalov
2026-04-21 16:04:18 +05:00
-
660a0d2b7c
feat(classifier): has_short_latin_name() helper for drop-logic
Vladimir Bryzgalov
2026-04-21 16:01:58 +05:00
-
b5c939e9e4
fix(classifier): iterate all email candidates per field; document method contract
Vladimir Bryzgalov
2026-04-21 15:59:12 +05:00
-
eae8fafb32
feat(classifier): has_valid_email_anywhere() helper for drop-logic
Vladimir Bryzgalov
2026-04-21 15:56:14 +05:00
-
1d2586e290
test(fixtures): real spam submissions from TG screenshots (3 cases)
Vladimir Bryzgalov
2026-04-21 15:53:54 +05:00
-
bd45e84634
test: stable filter ordering, base TestCase reset, priority-aware remove_all_filters
Vladimir Bryzgalov
2026-04-21 15:51:46 +05:00
-
40d5a2c23d
test: stateful WP shims (add_filter/get_option/is_email) for upcoming silent-drop tests
Vladimir Bryzgalov
2026-04-21 15:48:07 +05:00
-
9a55404918
docs: implementation plan for silent drop (1.1.0) — 14 tasks, TDD
Vladimir Bryzgalov
2026-04-21 15:37:42 +05:00
-
-
287d313f1b
docs(spec): drop skull emoji, clarify dry-run default on fresh install + upgrade
Vladimir Bryzgalov
2026-04-21 15:30:38 +05:00
-
ee6a791867
docs: design for silent drop (1.1.0) — hard-rule, score threshold, dry-run, counters
Vladimir Bryzgalov
2026-04-21 15:27:15 +05:00
-
0cdfde9529
chore: bump version to 1.0.4 with changelog of pilot fixes
Vladimir Bryzgalov
2026-04-18 00:39:11 +05:00
-
8efb82ca43
fix: phone leak, field-by-value detection, strict Flamingo email fallback
Vladimir Bryzgalov
2026-04-18 00:22:39 +05:00
-
dbdfc9afa9
feat(admin): always-on dashboard widget + default retro days = 0
Vladimir Bryzgalov
2026-04-18 00:12:45 +05:00
-
2de8f0be57
fix(formatter+telegram): drop tel: inline button, mark all 4xx as permanent
Vladimir Bryzgalov
2026-04-17 23:55:06 +05:00
-
1f89052f72
fix(flamingo-helper): extract field values from _field_* meta, not _fields
Vladimir Bryzgalov
2026-04-17 23:46:52 +05:00
-
22239321d0
fix(activator): register cron_schedules filter during activation
Vladimir Bryzgalov
2026-04-17 23:26:06 +05:00
-
2e0a829e06
docs+tests: fix autoloader — underscores → hyphens + slug fallback
Vladimir Bryzgalov
2026-04-17 23:02:53 +05:00
-
0c1be5b4cd
feat: plugin bootstrap, autoloader, activation/deactivation hooks
Vladimir Bryzgalov
2026-04-17 23:02:20 +05:00
-
a9d19a75a3
feat(admin): settings page with token/chat/site-title, test button, retro, queue state
Vladimir Bryzgalov
2026-04-17 22:53:53 +05:00
-
6eb2844429
chore: uninstall cleanup, WP readme
Vladimir Bryzgalov
2026-04-17 22:51:33 +05:00
-
f5816e4648
feat(admin): dashboard widget shown only when there are failed queue items
Vladimir Bryzgalov
2026-04-17 22:50:29 +05:00
-
fef22c1ff8
feat(activator): create queue table, schedule cron, guard PHP/WP versions
Vladimir Bryzgalov
2026-04-17 22:49:25 +05:00
-
aa66d15eb5
feat(retro-importer): queue last-N Flamingo spam posts with dedup
Vladimir Bryzgalov
2026-04-17 22:48:21 +05:00
-
eb199c6d40
feat(cf7-source): capture spam submissions via wpcf7_spam and submission status
Vladimir Bryzgalov
2026-04-17 22:47:13 +05:00
-
4ce2fac42d
feat(dispatcher): WP-Cron tick with backoff and retention cleanup
Vladimir Bryzgalov
2026-04-17 22:45:38 +05:00
-
786a306f29
feat(telegram-client): sendMessage wrapper classifying permanent/transient errors
Vladimir Bryzgalov
2026-04-17 22:44:41 +05:00
-
1f85d009c4
feat(settings): options wrapper with wp-config constant override
Vladimir Bryzgalov
2026-04-17 22:43:36 +05:00
-
f24cadc799
feat(flamingo-helper): locate flamingo_inbound posts and extract fields/reason
Vladimir Bryzgalov
2026-04-17 22:42:38 +05:00
-
09f2638066
feat(queue): CRUD, dedup, retention, status counters
Vladimir Bryzgalov
2026-04-17 22:41:30 +05:00
-
cc37aa2647
feat(crypto): AES-256-CBC token encryption via AUTH_KEY
Vladimir Bryzgalov
2026-04-17 22:40:08 +05:00
-
6961bb1b72
feat(telegram): exception carrying permanent/retry_after flags
Vladimir Bryzgalov
2026-04-17 22:39:04 +05:00
-
d3bd360357
feat(message-formatter): build Telegram HTML payload with inline tel button
Vladimir Bryzgalov
2026-04-17 22:37:10 +05:00
-
a7b796d381
docs: honeypot is a hard override on label=spam
Vladimir Bryzgalov
2026-04-17 22:21:51 +05:00
-
90940dd928
feat(classifier): weighted heuristic for client/unclear/spam scoring
Vladimir Bryzgalov
2026-04-17 22:21:10 +05:00
-
3dd0f41446
feat(phone-parser): normalize RU phones and extract first candidate
Vladimir Bryzgalov
2026-04-17 22:08:57 +05:00
-
558483ef44
docs: fix punycode example and regex delimiter in plan/spec
Vladimir Bryzgalov
2026-04-17 22:04:15 +05:00
-
6068a6a54f
feat(domain-formatter): decode punycode hosts to Cyrillic with fallbacks
Vladimir Bryzgalov
2026-04-17 22:03:33 +05:00
-
6aa1ef41e6
chore: add composer + phpunit dev scaffolding
Vladimir Bryzgalov
2026-04-17 21:53:22 +05:00
-
be00b7996c
docs: add plan→bd ID map
Vladimir Bryzgalov
2026-04-17 21:46:18 +05:00
-
4569b5f586
docs: add implementation plan for cf7-spam-to-telegram
Vladimir Bryzgalov
2026-04-17 21:36:35 +05:00
-
b1d8dfd044
bd init: initialize beads issue tracking
Vladimir Bryzgalov
2026-04-17 21:28:59 +05:00
-
3a998c36d2
docs: add design spec for cf7-spam-to-telegram plugin
Vladimir Bryzgalov
2026-04-17 21:26:51 +05:00