From 9e74b596d1a2cdb4f1f0aa5460aec25a7f30b622 Mon Sep 17 00:00:00 2001 From: peptiderepo Date: Sun, 19 Apr 2026 14:14:02 +0700 Subject: [PATCH] chore: bump version to 0.4.0 Semantic dedup, LLM topic avoidance, featured image fix, chained-job race condition fix, stall detection fix. Co-Authored-By: Claude Opus 4.6 --- CHANGELOG.md | 30 ++++++++++++++++++++++++++++++ prautoblogger.php | 4 ++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 349e733..c03b950 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,36 @@ All notable changes to PRAutoBlogger will be documented in this file. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project uses [Semantic Versioning](https://semver.org/). +## [0.4.0] — 2026-04-19 + +### Added +- **Semantic dedup via embedding cosine similarity.** Replaces keyword-overlap + dedup (60% word match) with MiniLM-L12-v2 embeddings via OpenRouter. Catches + rephrasings like "BPC-157 dosing" vs "how much BPC-157 to take" that keyword + matching misses. Automatic fallback to keywords if embedding API unavailable. + Cost: ~$0.00001 per generation run. + - `includes/core/class-semantic-dedup.php` — Dedup engine with embedding + + keyword fallback. + - `includes/providers/class-open-router-embedding-provider.php` — OpenRouter + `/embeddings` client with batch support and cosine similarity helper. + +- **LLM-aware topic avoidance.** Analysis prompt now includes the last 30 days + of published article titles with explicit "do not suggest similar topics" + instruction. Zero additional cost — appended to the existing analysis call. + +### Changed +- Dedup window widened from 7 days to 30 days (semantic similarity is precise + enough to avoid over-blocking). +- `class-idea-scorer.php` refactored to delegate dedup to `Semantic_Dedup`. + +### Fixed +- Featured images displayed at 300×300 (WordPress "medium" size) instead of full + width. Changed theme to use `the_post_thumbnail('full')` with responsive CSS. +- Race condition causing duplicate article generation when the AJAX status poller + re-scheduled a cron event for an article already being generated. +- False stall detection on multi-article runs (measured elapsed time from start + instead of idle time since last progress update). + ## [Unreleased] ### Added diff --git a/prautoblogger.php b/prautoblogger.php index ca19052..6c5a9d2 100644 --- a/prautoblogger.php +++ b/prautoblogger.php @@ -8,7 +8,7 @@ declare(strict_types=1); * Plugin Name: PRAutoBlogger * Plugin URI: https://peptiderepo.com/prautoblogger * Description: Monitors social media for trending topics, generates SEO-friendly blog posts using AI, and publishes them on a daily schedule with full cost tracking and self-improvement metrics. - * Version: 0.3.0 + * Version: 0.4.0 * Requires at least: 6.0 * Requires PHP: 7.4 * Author: PeptideRepo @@ -35,7 +35,7 @@ if ( ! defined( 'ABSPATH' ) ) { | and limits without magic strings. */ -define( 'PRAUTOBLOGGER_VERSION', '0.3.0' ); +define( 'PRAUTOBLOGGER_VERSION', '0.4.0' ); define( 'PRAUTOBLOGGER_DB_VERSION', '1.1.0' ); define( 'PRAUTOBLOGGER_PLUGIN_FILE', __FILE__ ); define( 'PRAUTOBLOGGER_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );