Client Report - Last updated June 8, 2026
📘 For an actively-maintained developer onboarding document, see
HANDOFF.md. This file is a high-level project summary suitable for client/stakeholder reporting.HANDOFF.mdis the practical guide for any developer taking over the codebase.
SourceHub is a comprehensive WordPress content syndication plugin that enables centralized editorial teams to distribute content across multiple WordPress sites (hub & spoke architecture) with full SEO integration, AI rewriting capabilities, and automated metadata synchronization.
- Project Start: July 2025
- Client Handoff: September 29, 2025
- Current Version: 2.4.2 (June 1, 2026)
- Development Duration: ~11 months active development (July 2025 - June 2026)
- Total Releases: 142 tagged releases
- Total Commits: 203 commits
- PHP Code: 22,691 lines
- JavaScript: 5,108 lines
- CSS: 3,861 lines
- Documentation: 15+ markdown files (12 obsolete debug notes archived to
docs/archive/in June 2026) - Total Custom Code: 31,660 lines
- Total Commits: 203
- Tagged Releases: 142
- Active Spokes in Production: 10 sites
- Total Project Files: 65+ files (PHP, JS, CSS, MD)
- Core Plugin Files: 37 files/directories
- Admin Interface Files: 7 major components
- Include Files: 17 core classes
v2.4.2 (June 1, 2026) - Latest
- Fixed duplicate hook registration causing 2× syndication jobs per save on WPEngine
- Added
static $initializedguards toHub_Manager::init()andSpoke_Manager::init() - Resolved root cause of
race_preventedentries on slow spokes (Williamson Source) - Eliminated last-write-wins content corruption from concurrent AI rewrites
v2.4.1 (May 26, 2026)
- Fixed GitUpdater release detection (added
Release Asset: true+Update URIheaders) - Documented branch-install vs release-install gotcha in
DEPLOYMENT.md
v2.4.0 (May 26, 2026) - Scheduled Posts Hardening
- Multiple defenses against WP core auto-flipping
future→publishwhenpost_date_gmtwas already in the past - Hub-side and spoke-side stale-future status guards
- Spoke permalink now persisted and surfaced in syndication meta box "View" link
- Fixed stuck-draft false positives (cron now skips drafts scheduled for the future)
- Improved retry logic to preserve original scheduled time for future posts
~3 releases (v2.1.0, v2.2.0, v2.3.0) focused on:
- Messaging system between hub editors (Slack-like in-plugin chat)
- Bug tracker improvements with email notifications
- Activity log filtering, pagination, and export hardening
- Auto-syndication rule engine refinements
~15 patch releases addressing:
- Sync status race conditions on fast-completing spokes
- Yoast meta save timing
- Featured image metadata sync (title, alt, caption, description)
- Gallery image processing
- CORS handling for Local by Flywheel environments
v2.0.0.3 (December 15, 2025)
- Activity Log timestamp improvements (full date/time display)
- Publication storage reference documentation
- Timezone conversion fixes
v2.0.0.2 (December 5, 2025)
- Critical race condition fix for fast spoke completions
- Pending completion flag optimization
v2.0.0.1 (December 5, 2025)
- Duplicate publish protection with 10-second debounce
- Multiple publish event handling
v2.0.0.0 (December 4, 2025) - MAJOR ARCHITECTURAL RELEASE
- Complete migration from wp-cron to Action Scheduler
- 100% reliable async processing across all hosting environments
- Eliminated all wp-cron dependencies
- Consistent behavior on WP Engine, Local, and all hosting platforms
70+ incremental releases focusing on:
- Delayed sync reliability (v1.9.9.x series - 12 releases)
- Race condition fixes
- Lock collision resolution
- Spoke completion tracking
- Object cache optimization
- WordPress cron diagnostics and fixes
9 releases addressing:
- Draft → publish transition handling
- Auto-draft post processing
- Status transition hooks
- Spoke selection persistence
10 releases improving:
- First publish syndication
- Yoast meta timing
- Double syndication prevention
- Deployment automation
8 releases adding:
- Async syndication processing
- Gallery image support
- Yoast focus keyword sync
- Shortcode preservation
- Calendar improvements
4 releases implementing:
- Auto-retry system
- Sync status tracking
- Performance timing
- Duplicate prevention
4 releases adding:
- Bug Tracker with @mentions
- Activity Logs pagination & filtering
- Export functionality
- Avatar integration
15+ releases establishing:
- Git Updater integration
- Calendar time display
- Post format sync
- Validation system
- Role-based access control
- ✅ Hub & Spoke architecture
- ✅ Real-time content distribution
- ✅ Async processing with Action Scheduler
- ✅ Automatic retry logic
- ✅ Comprehensive error handling
- ✅ Lock-based concurrency control
- ✅ Featured image synchronization with metadata (title, alt, caption, description)
- ✅ Gallery image support
- ✅ Category and tag mapping
- ✅ Post format preservation
- ✅ Shortcode preservation
- ✅ Smart Links (internal link adaptation)
- ✅ Custom Smart Links (per-spoke URL mapping)
- ✅ Full Yoast SEO metadata sync
- ✅ Focus keyword/keyphrase
- ✅ Meta title and description
- ✅ OG images and social metadata
- ✅ Canonical URLs
- ✅ Indexable data
- ✅ OpenAI GPT-4o Mini integration
- ✅ Automatic content rewriting
- ✅ Per-post AI override controls
- ✅ Quote preservation in rewrites
- ✅ Title and excerpt rewriting
- ✅ Modern Material Design UI
- ✅ Real-time sync status tracking
- ✅ Connection management dashboard
- ✅ Activity logs with filtering & export
- ✅ Editorial calendar view
- ✅ Bug tracker with email notifications
- ✅ Comprehensive settings panels
- ✅ Role-based access control
- ✅ REST API endpoints
- ✅ Comprehensive logging system
- ✅ Git Updater support for automatic updates
- ✅ Action Scheduler integration
- ✅ Database optimization with indexes
- ✅ Deployment automation scripts
Challenge: WordPress wp-cron is unreliable on many hosting platforms (WP Engine, etc.) Solution: Migrated entire plugin to Action Scheduler (WooCommerce's battle-tested library) Impact: 100% reliable execution across all environments
Challenge: Fast spokes completing before slow spokes caused sync failures Solution: Pre-populated sync status, proper completion tracking, pending flags Impact: Eliminated posts stuck in draft status
Challenge: Yoast doesn't build indexables until second save Solution: Delayed sync with shutdown hooks and proper timing Impact: Complete Yoast metadata now syncs on first publish
Challenge: Activity Logs page loading in 21 seconds Solution: Fixed N+1 queries, added composite indexes, eliminated infinite loops Impact: Page load reduced to <1 second
Challenge: Internal links break when content moves to different domains Solution: Custom TinyMCE integration with base URL + custom URL mapping Impact: Seamless internal link adaptation across spoke sites
- Duplicate Syndication - Debounce logic prevents multiple publish events
- Lock Collisions - Proper lock timing and delayed sync scheduling
- Object Cache Staleness - Force fresh database reads for sync status
- Spoke Post ID Bug - Return actual post IDs instead of boolean true
- CORS Issues - Converted AJAX to page reloads for Local by Flywheel compatibility
- Validation Loop - Added static guards to prevent infinite initialization
- Featured Image Metadata - Complete metadata sync (title, alt, caption, description)
- Gallery Images - Draft-first approach for proper gallery processing
- First Publish Failures - Multiple hooks to catch all publish scenarios
- Connection Testing - Proper API key handling from form vs database
- ✅ WP Engine (production)
- ✅ Local by Flywheel (development)
- ✅ Standard WordPress hosting
- ✅ Multisite networks
- ✅ All major PHP versions (7.4+)
README.md- Plugin overview and setupCHANGELOG.md- Complete version history (281 lines)DEPLOYMENT.md- Deployment proceduresPUBLICATION_STORAGE_REFERENCE.md- Database integration guideCONTRIBUTING.md- Development guidelines
SMART_LINKS_README.md- Smart Links feature guideVALIDATION-SYSTEM.md- Content validation systemGIT-UPDATER-SETUP.md- Auto-update configurationPLUGIN-ICON-GUIDE.md- Branding assets
activitylog.md- Activity log analysis (184KB)logs.md- Comprehensive logging guidePERFORMANCE-DEBUG.md- Performance optimization notesDEBUG-CUSTOM-SMART-LINKS.md- Smart Links debuggingBUTTON-DEBUG-TEST.md- UI component testing- Multiple test and debug markdown files
- Local by Flywheel (development)
- WP Engine (production)
- Multiple WordPress versions (5.0 - 6.4)
- PHP 7.4, 8.0, 8.1, 8.2
- First publish syndication
- Update syndication
- Scheduled post publishing
- Multiple spoke sites (2-10+ spokes)
- Fast vs slow spoke response times
- Network failures and retries
- Concurrent post saves
- User role permissions
- API authentication
- Image processing
- Yoast SEO integration
- AI rewriting
Based on commit history, version releases, and code complexity:
~100 hours - Architecture design, initial plugin structure, core functionality development, testing
- Database schema design
- Hub & Spoke architecture planning
- Initial syndication engine
- Early testing and iteration
- Pre-production development
~80 hours - Git repository initialization, refinement, database optimization, core syndication
~120 hours - Smart Links, AI integration, admin UI, calendar, bug tracker
~100 hours - Race conditions, async processing, Action Scheduler migration
~40 hours - Final bug fixes, documentation, timezone handling
This includes:
- Architecture and design
- Core development
- Testing and debugging
- Documentation
- Client communication
- Bug fixes and iterations
- Version 2.4.2 deployed to main branch and live on hub2a.wpenginepowered.com + 10 spoke sites
- Duplicate hook registration root cause resolved (June 2026)
- Scheduled post premature-publish bug resolved (May 2026)
- Developer handoff documentation completed (June 2026 — see
HANDOFF.md) - Repo documentation cleaned: 12 obsolete debug notes archived to
docs/archive/ - Automated deployment pipeline established via GitUpdater + tagged releases
- ✅ Hub & Spoke syndication
- ✅ Yoast SEO integration
- ✅ AI content rewriting
- ✅ Smart Links
- ✅ Activity logging
- ✅ Editorial calendar
- ✅ Bug tracker
- ✅ Role-based access
- ✅ Automatic updates via Git Updater
- Requires Action Scheduler library (included)
- Yoast SEO plugin required for SEO features
- OpenAI API key required for AI rewriting
- Multi-language support (WPML integration)
- Advanced scheduling rules
- Content approval workflows
- Analytics dashboard
- Custom field mapping
- Media library synchronization
- Comment syndication
- User synchronization
- Bulk operations interface
- REST API expansion for third-party integrations
- GitHub: https://github.com/mikefreemantn/SourceHub
- Current Branch: main
- Latest Release: v2.4.2
- License: GPL v2 or later
- WordPress Compatibility: 5.0+
- PHP Requirement: 7.4+
- Production Hub: hub2a.wpenginepowered.com (WP Engine)
- Production Spokes: 10 sites (Williamson, Sumner, Rutherford, Wilson, Robertson, Cannon, Davidson, Maury, Dickson, Cheatham)
SourceHub represents a comprehensive, production-ready WordPress content syndication solution. Across 11 months of active development (July 2025 - June 2026), the project has delivered 142 tagged releases, 31,000+ lines of custom code, and resolved a long list of complex technical challenges including async processing, race conditions on slow spokes, SEO timing issues, scheduled post status transitions, and the duplicate-hook-registration bug that took multiple weeks to diagnose in mid-2026.
The project demonstrates expertise in:
- WordPress plugin architecture
- Async processing and job queuing
- REST API development
- Database optimization
- UI/UX design
- SEO integration
- AI/ML integration
- DevOps and deployment automation
- Technical documentation
Project Status: Production Ready & Ready for Developer Handoff
Original report: December 15, 2025 Updated: June 8, 2026 — v2.4.2, handoff-ready Developer: Mike Freeman - Man Over Machine Contact: https://manovermachine.com