[2.0.0] — 2026-07-30
Major release: the studio is no longer tied to the on-server Claude CLI. It can now
draft with any AI API, generate posts unattended, recommend what to write next, and
receive updates through the wpdeploy deployment server.
Added — Use any AI API (hybrid execution)
A provider layer lets the studio draft with Anthropic API, OpenAI, **Google
Gemini, or any OpenAI-compatible endpoint** (OpenRouter, Groq, Together, Azure,
local models), in addition to the existing free on-server Claude CLI.
Because PHP-FPM here cannot run the CLI (blocked proc_open / open_basedir), execution
is hybrid: CLI jobs are still handled by the hardened lonsdales-blog.service worker,
while API-provider jobs are processed by WordPress itself via a background WP-Cron event.
Both paths write back the same JSON contract, so the preview and post-builder are
unchanged. A provider column was added to {prefix}_blog_jobs and the worker now claims
only CLI jobs.
includes/providers/ — LBS_Provider interface + LBS_Provider_Base HTTP helper and
four adapters (Anthropic Messages API, OpenAI Chat Completions/Responses, Gemini
generateContent, generic OpenAI-compatible).
includes/class-lbs-ai.php — provider registry, configuration checks, adapter factory,
and the WordPress-side job processor + self-heal reaper.
- Research/web search is used where the provider supports it (on-server Claude, Anthropic,
OpenAI, Gemini); the generic endpoint has no web search and degrades gracefully.
- API keys are stored encrypted at rest (AES-256-GCM, salt-derived key) in a dedicated
option, never returned to the browser (includes/class-lbs-secrets.php).
- A Provider → Model picker on the Compose and Topic screens; a per-provider Test
button in Settings.
Added — Automation
Unattended, Draft-by-default generation driven by an hourly cron tick
(includes/class-lbs-automation.php), configured on Settings → Automation:
- New catalogue — draft a highlights post when a catalogue gains lots (first run
baselines existing catalogues so it never floods).
- Recurring — every N days, draft a highlights post from the next upcoming sale.
- Topic queue — drip-feed a list of topics into researched topic posts, one per cycle.
- Highlights heuristic —
LBS_Catalogue::highlights() ranks lots by photo + estimate;
also available as a picker helper.
- A master switch, a daily cap, per-feature Draft/Publish choice, and a configurable
provider/model. Completed auto-jobs are turned into posts automatically (manual jobs
still wait for editor review).
Added — Recommendations
includes/class-lbs-recommend.php + a Recommendations screen: an AI review of the
site's recent posts, categories, pages, and upcoming sales that returns ranked blog-post
ideas, each with a one-click Draft this that prefills the Topic composer.
Added — wpdeploy self-update
includes/class-lbs-updater.php (mirroring seo-aeo-optimizer) connects the plugin to
https://wpdeploy.smoothbyteit.dev: self-registration via request-access, update checks,
scoped download auth, and a REST remote-install trigger. Configured on **Settings →
Updates**. Ships with manifest.json.
Changed
- Settings reorganised into tabs: Content / AI Providers / Automation / Updates.
{prefix}_blog_jobs: added provider VARCHAR(32), widened model to VARCHAR(191).
Migration is additive and version-gated (never dbDelta, never ALTERs a running job).
LBS_Jobs::enqueue() now takes a $provider argument and schedules background
processing for API-provider jobs.
Notes
- The server worker (
/opt/lonsdales-blog-studio/blog_worker.php) received a matching
change to claim only claude_cli jobs. It lives on the server, not in this package.
- Server-side registration of the
lonsdales-blog-studio slug (version + changelog +
package) on the wpdeploy project (sbiserver4) is a manual step on that host.
---