feat(models): OpenRouter model picker + AJAX refresh + cost preview (v0.11.0 complete)

- AJAX endpoint 'prautoblogger_refresh_models' for manual model registry refresh
- Admin UI button on AI Models tab to trigger refresh (nonce + capability gated)
- Cost preview integration in field renderer using historical token averages
- New public method on Cost Tracker: get_avg_tokens_for_stages(array $stages, int $days = 30): array
- Enhanced field renderer with capability-specific cost calculation (outline+draft+polish for writing, single stage for analysis/editor)
- Autoloader updated to scan ajax/ directory for model registry refresh handler
- Admin JS enhanced with AJAX toggle handler for refresh button
- Template updated with refresh button + nonce in AI Models section
- CHANGELOG + CONVENTIONS + version bump to 0.11.0
- All files under 300-line cap, PHPCS-clean

Spec: https://github.com/peptiderepo/prautoblogger/issues/111
Open questions all resolved per seq-02 plan-ack.
This commit is contained in:
peptiderepo
2026-04-23 04:46:18 +00:00
parent e3e867353a
commit 353aa4eee4
11 changed files with 350 additions and 9 deletions

View File

@@ -9,7 +9,7 @@
* 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.10.1
* Version: 0.11.0
* Requires at least: 6.0
* Requires PHP: 7.4
* Author: PeptideRepo
@@ -35,7 +35,7 @@ if ( ! defined( 'ABSPATH' ) ) {
| Defined here so every file in the plugin can reference paths, versions,
| and limits without magic strings.
*/
define( 'PRAUTOBLOGGER_VERSION', '0.10.1' );
define( 'PRAUTOBLOGGER_VERSION', '0.11.0' );
define( 'PRAUTOBLOGGER_DB_VERSION', '1.1.0' );
define( 'PRAUTOBLOGGER_PLUGIN_FILE', __FILE__ );
define( 'PRAUTOBLOGGER_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );