Content Automation Add-on Changelog

All notable changes to the PodcasterPlus Blocks Content Automation Add-on plugin will be documented here.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[1.3.0] - 2025-12-15

Added

Post Excerpt Population

  • New option to automatically populate post excerpts from episode descriptions during import and auto-publishing
  • Episode descriptions are intelligently truncated to create meaningful excerpts for WordPress post listings
  • Toggle control available in both Import wizard (Step 2) and Auto-Publish settings
  • Option enabled by default for new imports and auto-publish configurations

WP-CLI Excerpt Command

  • New wp podcaster-plus-ca populate-excerpts command to backfill excerpts for existing posts
    • Extracts content from Episode Description blocks to create post excerpts
    • Supports dry-run mode (--dry-run) to preview changes without modifications
    • Post type filtering (--post-type) to target specific content types
    • Processing limits (--limit) for batch operations
    • Force mode (--force) to overwrite existing excerpts

WP-Cron Configuration Warning

  • Auto-Publish settings now display a helpful notice when server-side cron is not configured
  • Warning informs users about potential reliability issues on low-traffic sites
  • Includes link to WordPress documentation for proper cron setup

Improved

License Validation

  • Added license grace period handling for scheduled feed checks
  • Feed processing continues during temporary license API outages if license was recently valid
  • Enhanced logging for skipped feed checks due to invalid licenses
  • Prevents auto-publishing interruptions from transient connectivity issues

[1.2.0] - 2025-12-04

Changed

Naming Standardization

  • Standardized all naming conventions across the codebase from "PodcasterPlus" to "PodcasterPlus" for consistency in comments, documentation, and user-facing strings

Pattern Selection Improvements

  • Enhanced pattern handling to use pattern names (e.g., podcaster-plus/basic-player) instead of pattern IDs for Episode Processor lookups, improving reliability with both registry and user-created patterns
  • Refactored favorite pattern handling to support identification by both pattern name and ID, ensuring compatibility across different pattern types
  • Updated Pattern interface to support both plugin-registered and user-created patterns with additional fields for sync status, viewport width, and user pattern identification
  • Implemented state synchronization for PatternSelector component, ensuring UI accurately reflects changes from parent components
  • Added backward compatibility for pattern selection logic, supporting both old (name-based) and new (numeric ID) formats

Synced Pattern Support

  • Refactored Episode Processor get_pattern_content method to properly handle both synced and unsynced block patterns
  • Improved GUID injection logic based on pattern sync status for accurate episode selection block references
  • Enhanced REST Controller pattern_exists method to support user pattern identification by both slug and numeric post ID

Added

Episode Artwork Integration

  • Implemented episode artwork handling with media library integration, storing attachment IDs for imported episode images
  • Added methods to store episode data with attachment ID and update episode cache with image ID
  • New WP-CLI command wp podcaster-plus-ca fix-images to update episode images for existing posts
    • Supports dry-run mode (--dry-run) to preview changes without modifications
    • Post type filtering (--post-type) to target specific content types
    • Processing limits (--limit) for batch operations

Auto-Publish Start Date Tracking

  • Added auto_publish_start_date to REST API settings response, providing visibility into when auto-publishing was first enabled
  • Integrated start date tracking in the Auto-Publish settings interface for improved monitoring

Improved

Pattern Preview Display

  • Refined pattern preview styles for improved layout consistency and better visual presentation of server-side rendered content
  • Enhanced empty state design for pattern previews with cleaner styling and improved user feedback
  • Added ARIA labels to pattern preview containers for better screen reader accessibility

License Validation

  • Enhanced logging behavior to only log warnings after the WordPress init action has fired, improving debugging accuracy and reducing false positives during early initialization

Code Quality

  • Added comprehensive documentation to PatternPreviewRenderer component explaining the rendering approach and CSS handling
  • Updated logic to skip deprecated bundled patterns during block processing
  • Improved sync status tracking and user pattern identification throughout the admin interface

Fixed

Pattern Selection

  • Fixed pattern ID comparisons to handle string values, improving compatibility with API responses
  • Resolved state synchronization issues where pattern changes from parent components were not reflected in the PatternSelector UI

Technical Improvements

  • Updated tested WordPress version to 6.9.0
  • Enhanced Admin UI block processing with sync-aware operations
  • Improved getPatternName function for accurate pattern title retrieval by name or ID
  • Refined type definitions in TypeScript for better pattern management support
  • Added comprehensive test coverage for synced and unsynced pattern processing in Episode Processor
  • Enhanced test bootstrap with WEEK_IN_SECONDS constant and mock functions for wp_block pattern testing

[1.1.0] - 2025-11-26

Added

Processed Episodes Management

  • New REST API endpoints for managing processed episode records:
    • POST /processed-episodes/cleanup-orphans - Scan and remove orphaned records
    • DELETE /processed-episodes/{guid} - Remove specific episode from history to allow re-import
    • GET /processed-episodes/stats - Retrieve statistics including total, orphaned count, and breakdown by source
  • Automatic cleanup of processed episode records when WordPress posts are permanently deleted via before_delete_post hook
  • Weekly scheduled orphan cleanup via Action Scheduler to catch records missed by deletion hooks
  • Post deletion detection maintains duplicate prevention integrity

WP-CLI Commands

  • wp podcaster-plus-ca cleanup-orphans - Scan and clean orphaned processed episode records with dry-run support
  • wp podcaster-plus-ca clear-history - Clear specific episode GUID or entire history to allow re-imports

Improved

  • Enhanced duplicate prevention system with automatic orphan detection and cleanup
  • Better recovery from edge cases where posts are deleted outside normal WordPress flow
  • Improved data integrity between processed episodes table and actual WordPress posts

Technical Improvements

  • New podcaster_plus_ca_cleanup_orphans action hook for scheduled maintenance
  • Post deletion hook integration at priority 10 on before_delete_post
  • Batch processing for orphan cleanup (100 records per execution)
  • Activity logging for all cleanup operations

Documentation

  • Complete REST API reference for processed episodes endpoints
  • Comprehensive WP-CLI documentation for new cleanup and history commands
  • Updated hooks and filters guide with new action hooks
  • New workflow examples for re-importing deleted episodes and complete resets

[1.0.1] - 2025-11-17

Fixed

  • Admin UI Disappearance: Resolved intermittent issue where the Content Automation admin interface would disappear after page reloads, caused by transient license cache corruption during WordPress initialization race conditions
  • Stale RSS Feed Cache: Fixed bug where changing the RSS feed URL in parent plugin settings would not update cached feed data, causing imports to use outdated episode information

Improved

  • License Validation: Implemented conditional negative caching that only stores invalid license results after WordPress fully initializes, preventing premature cache corruption
  • Cache Invalidation: Changed feed cache key strategy from static identifier to URL-based hashing, ensuring feed URL changes automatically invalidate old cache entries
  • Error Recovery: Reduced negative license cache TTL from 5 minutes to 2 minutes for faster recovery from transient errors
  • Diagnostic Logging: Enhanced logging throughout license validation and feed cache operations for improved troubleshooting
  • Defensive Programming: Added comprehensive null checks and early returns to prevent crashes during edge cases

Technical Improvements

  • URL-based feed cache keys using md5($feed_url) for automatic invalidation
  • WordPress initialization lifecycle handling improvements
  • Cache operation logging (hit/miss/store) for debugging
  • Maintained 5-minute feed cache TTL for optimal performance

Upgrade Note: This is a recommended update for all v1.0.0 users. The fixes improve reliability and eliminate two edge cases that could disrupt workflow. No manual intervention required - cache transition is automatic.


[1.0.0] - 2025-11-17

Added

Bulk Import Feature

  • Import your entire podcast back-catalogue from RSS feeds with flexible scope options (last 20, 50, all episodes, or custom range)
  • Four-step import wizard with pattern selection, post configuration, episode content options, and confirmation
  • Real-time progress monitoring with pause, resume, and cancel controls
  • Background processing via Action Scheduler prevents browser timeouts for large imports
  • Batch processing system handles 10 episodes per batch for optimal performance
  • Episode content options: include/exclude descriptions and artwork
  • Duplicate detection using episode GUID prevents importing episodes that already exist
  • CSV export of import logs for analysis and record-keeping
  • Comprehensive error handling with detailed reporting and recovery options

Auto-Publishing Engine

  • Automated episode detection and publishing when new episodes appear in your RSS feed
  • Configurable feed monitoring with hourly to daily check intervals (1-24 hours)
  • Priority-based pattern rules system for automatic pattern assignment by category or title pattern
  • Drag-and-drop interface for managing pattern rule priority
  • Pattern testing panel to preview which pattern will be applied to episodes
  • Publishing delays from 0-48 hours allow time for review before posts go live
  • Manual feed checks with instant "Check Now" button and detailed results
  • Historical episode skipping ensures only new episodes are auto-published (won't import your back-catalogue)
  • Smart feed caching with URL-based cache keys for improved performance

Notification System

  • Email notifications for all major events (import completion, auto-publish success/failure)
  • Granular notification preferences with per-event-type controls
  • Admin dashboard notices for important activities
  • Deep linking from email notifications directly to relevant admin tabs
  • Rate limiting prevents email spam during bulk operations
  • Customizable notification recipients

Activity Logging

  • Comprehensive activity log tracks all import, auto-publish, and system events
  • Five log levels: success, error, warning, info, and skipped
  • Advanced filtering by source (import/auto-publish/system), level, and date range
  • Full-text search across log messages and details
  • Pagination for performance with large log histories
  • CSV export for external analysis and troubleshooting
  • Structured JSON details for technical debugging

Developer Features

  • Complete REST API with 20+ endpoints for all plugin functionality
  • WP-CLI commands for command-line control of imports and auto-publishing
  • Action Scheduler integration for reliable background job processing
  • WordPress coding standards compliant codebase
  • Comprehensive PHPUnit test coverage (80%+)
  • TypeScript-powered React admin interface built with WordPress components
  • Extensive hooks and filters for customization
  • Detailed inline documentation and comprehensive developer guides

User Interface

  • Modern React-based admin interface with three main tabs (Import, Auto-Publish, Activity Log)
  • Pattern preview system shows real-time rendering of selected patterns
  • Responsive design works seamlessly on desktop and tablet devices
  • WordPress component library integration for native admin experience
  • Accessibility-focused design with ARIA labels and keyboard navigation
  • Loading states and error boundaries for graceful error handling

Security & Performance

  • SSRF protection for RSS feed fetching prevents server-side request forgery attacks
  • Input sanitization and output escaping throughout
  • Capability checks and nonce verification on all admin actions
  • Feed caching with transients reduces server load
  • Memory-efficient processing for feeds with 500+ episodes
  • Database indexes optimize query performance
  • Rate limiting prevents abuse

Technical Improvements

  • Bundled Action Scheduler 3.9.3 for reliable background processing
  • Four custom database tables with optimized indexes for tracking episodes, pattern rules, activity logs, and import sessions
  • Database version management system supports future schema migrations
  • Singleton pattern implementation across core classes ensures proper resource management
  • Comprehensive error handling with WP_Error integration throughout
  • Parent plugin integration via minimal coupling design
  • Automatic database upgrades with version detection
  • Episode data caching reduces redundant API calls

Documentation

  • Complete user guides for bulk import, auto-publishing, and pattern rules
  • Comprehensive troubleshooting guide with common issues and solutions
  • REST API reference documentation
  • Database schema documentation
  • WP-CLI command reference
  • Architecture overview for developers
  • Hooks and filters reference
  • Contributing guide for developers
  • GitHub Actions workflows for automated testing and releases

[0.0.1] - 2025-08-11

Added

  • Initial plugin concept and foundation
  • Basic project structure and configuration
  • Early development framework