VOOZH about

URL: https://deepwiki.com/Automattic/BuddyPress-VIP-Go/7-version-history

⇱ Version History | Automattic/BuddyPress-VIP-Go | DeepWiki


Loading...
Menu

Version History

This document provides a comprehensive chronological record of all changes made to the BuddyPress VIP Go plugin since its initial release. The version history tracks bug fixes, feature additions, compatibility improvements, and infrastructure enhancements across all releases. This information is sourced from CHANGELOG.md1-124

The plugin follows Keep a Changelog format and Semantic Versioning principles. For information about the current plugin architecture and how these changes fit into the overall system, see System Architecture. For details about development practices that enforce quality across versions, see Development Guide.

Sources: CHANGELOG.md1-6


Versioning Strategy

The plugin uses Semantic Versioning (MAJOR.MINOR.PATCH) with the current major version being 1.x. Given the plugin's role as a compatibility bridge between BuddyPress/BuddyBoss and WordPress VIP Go infrastructure, version increments follow this pattern:

Version ComponentIncrement TriggerExample
MAJOR (1.x.x)Breaking changes to public API or fundamental architecture changesInitial release: 1.0.0
MINOR (1.x.0)New features or significant functionality additions(Not yet used; all changes are patches)
PATCH (1.0.x)Bug fixes, compatibility fixes, infrastructure improvements1.0.1 through 1.0.12

All releases from 1.0.1 through 1.0.12 have been patch releases, indicating the plugin's mature, stable architecture focused on incremental compatibility and bug fixes rather than feature expansion.

Sources: CHANGELOG.md5-6


Release Timeline

The following timeline visualizes the cadence and focus areas of plugin releases:


Key Observations:

  • 2016-2025: 9-year stable period with no releases (initial version was production-ready)
  • April-July 2025: 5 rapid releases addressing edge cases and adding video support
  • December 2025-January 2026: 7 releases focused on BuddyBoss compatibility and filesystem timing issues

Sources: CHANGELOG.md8-110


Changes by Category

Bug Fixes by Theme

The following table categorizes all bug fixes by their underlying technical theme:

ThemeVersionsFix CountKey Issues Resolved
Filesystem Timing1.0.7, 1.0.112opendir() warnings due to filter registration timing relative to bp_init priority 8
BuddyBoss Default Avatars1.0.8, 1.0.102item_id=0 group avatar storage, opendir errors from avatar defaults
VIP Filesystem Compatibility1.0.6, 1.0.92Avatar upload handling, chunked video flock() incompatibility
BuddyPress Version Updates1.0.62BP 6.0+ filter rename, BP 10.0+ avatar history feature
Hook Arguments1.0.2, 1.0.32Incorrect parameter counts in action/filter calls
Component Activation1.0.11Fatal error when Groups component inactive
Cache Management1.0.42Video move cache invalidation, bp_core_reset_incrementor usage
Environment Detection1.0.5, 1.0.62DOING_AJAX check, simplified loading conditions
Email Notifications1.0.121Protocol-relative Gravatar URLs breaking in emails

Sources: CHANGELOG.md8-110


Detailed Version History

Version 1.0.12 (2026-01-27) - Gravatar HTTPS Fix

Fixed:

  • Gravatar URL Protocol: Changed from protocol-relative (//) to absolute HTTPS (https://) to prevent broken avatars in email notifications where protocol context is missing

Technical Context: Email clients don't have a protocol context to resolve //gravatar.com URLs, resulting in broken images.

Sources: CHANGELOG.md8-12


Version 1.0.11 (2026-01-26) - opendir Timing Critical Fix

Fixed:

  • Filter Registration Timing: Moved opendir filters to register before bp_init priority 8 to prevent timing race condition

Technical Context: BuddyPress's bp_init action at priority 8 triggers filesystem operations in files.php that would fail if filters weren't yet registered. This fix ensures filters are in place before any directory operations occur.

Code References:

Sources: CHANGELOG.md14-18


Version 1.0.10 (2025-01-23) - BuddyBoss Group Avatar opendir Fix

Fixed:

  • Default Group Avatar Filter: Added filter to prevent BuddyBoss's default group avatar handling from calling opendir() on VIP filesystem

Technical Context: BuddyBoss attempts to read default group avatar directories using opendir(), which is incompatible with VIP Go's distributed filesystem.

Sources: CHANGELOG.md20-24


Version 1.0.9 (2025-01-21) - Chunked Video Upload Workaround

Fixed:

  • Local Temp Directory Redirect: Redirected chunked video uploads to local temp directory via bfu_temp_dir filter to avoid "Failed to create lock file" error

Technical Context: BuddyBoss's chunked video upload mechanism requires flock() for file locking, which VIP FHS doesn't support. The workaround uses local /tmp for assembly, then lets BuddyBoss move the complete file to VIP FHS. See Video Upload Architecture for details.

Code References:

  • Filter: vipbp_filter_chunked_upload_temp_dir in files.php
  • Cleanup: vipbp_delete_local_temp_file in files.php

Sources: CHANGELOG.md26-30


Version 1.0.8 (2025-01-12) - Default Group Avatar Storage Fix

Fixed:

  • Metadata Storage for item_id=0: When item_id=0 (default group avatar), store metadata in BP option vipbp-default-group-avatar instead of group meta
  • Fallback Logic: Added fallback to default group avatar for groups without specific avatars

Technical Context: BuddyBoss uses item_id=0 to represent the default group avatar. WordPress doesn't support group meta for non-existent items, requiring storage in the options table instead. See Metadata Storage Architecture for schema details.

Code References:

  • Storage: vipbp_store_group_avatar_meta in files.php
  • Retrieval: vipbp_get_group_avatar_meta in files.php

Sources: CHANGELOG.md32-37


Version 1.0.7 (2025-12-16) - opendir Filter Timing Fix

Fixed:

  • Filter Location: Moved bp_core_avatar_folder_dir filter outside bp_init callback to prevent opendir() warnings

Technical Context: The filter must be active before BuddyPress attempts directory operations during initialization. Moving it outside the bp_init callback ensures earlier registration.

Sources: CHANGELOG.md39-43


Version 1.0.6 (2025-12-16) - Major Compatibility Update

This version represents a significant compatibility overhaul with multiple fixes and infrastructure improvements.

Fixed:

  • Avatar Upload Handling: Improved VIP filesystem compatibility for avatar uploads
  • BuddyPress 6.0+ Support: Added support for renamed avatar filter in BP 6.0+
  • Avatar History Disabled: Disabled BP 10.0+ avatar history feature to prevent filesystem errors
  • Loading Conditions: Simplified by removing unnecessary DOING_AJAX check

Changed:

  • WordPress Version Bump: Increased minimum WordPress version from previous to 6.6
  • Development Environment: Added wp-env configuration for local development
  • Testing Infrastructure: Added GitHub Actions workflows and PHPUnit test suites
  • Documentation: Added note about plugin activation order in README

Technical Context:

  • Avatar history in BuddyPress 10.0+ maintains a log of previous avatars using filesystem operations incompatible with VIP FHS
  • The DOING_AJAX check was redundant because VIP environment detection already ensures proper loading context

Code References:

Infrastructure Files:

Sources: CHANGELOG.md45-59


Version 1.0.5 (2025-07-07) - AJAX Environment Check

Fixed:

  • AJAX Initialization: Added DOING_AJAX check before A8C_Files class initialization

Technical Context: Ensures the plugin doesn't attempt VIP filesystem operations during AJAX requests before the VIP environment is fully initialized. This check was later removed in 1.0.6 as redundant.

Sources: CHANGELOG.md61-65


Version 1.0.4 (2025-06-24) - Video Support

Fixed:

  • Video Cache Invalidation: Added bp_core_reset_incrementor calls after video moves to invalidate bp_media cache group
  • Group Video Support: Added support for group video uploads and overridden temp directory handling

Changed:

  • Documentation: Improved README and added Markdown linting

Technical Context: BuddyPress caches media queries using incrementor-based cache keys. Moving videos requires cache invalidation to prevent stale data.

Code References:

  • Cache flush: vipbp_flush_video_cache hooked to bp_video_after_save in files.php
  • Temp directory: vipbp_filter_chunked_upload_temp_dir on bfu_temp_dir in files.php

Sources: CHANGELOG.md67-77


Version 1.0.3 (2025-05-06) - XProfile Cover Hook Fix

Fixed:

  • Hook Data Passing: Passed extra data to xprofile_cover_image_uploaded hook to match expected parameters

Technical Context: The hook signature requires additional context data beyond the basic file information.

Sources: CHANGELOG.md79-83


Version 1.0.2 (2025-05-06) - Hook Arguments Fix

Fixed:

  • Parameter Count: Used correct number of arguments in hook call

Technical Context: WordPress hook system requires matching the declared argument count with the actual parameters passed.

Sources: CHANGELOG.md85-89


Version 1.0.1 (2025-04-29) - Groups Component Fix

Fixed:

  • Component Check: Fixed fatal error when Groups component is not active by adding bp_is_active('groups') checks before accessing group-specific functionality

Changed:

  • Documentation: Improved README and code documentation

Technical Context: BuddyPress has optional components. The plugin must check component availability before accessing component-specific functions or classes.

Maintenance:

  • Added development files including .phpcs.xml.dist, .editorconfig
  • Updated code standards to WordPress VIP standards
  • Registered on Packagist

Sources: CHANGELOG.md91-104


Version 1.0.0 (2016-04-22) - Initial Release

Added:

  • Initial implementation of BuddyPress media compatibility layer for WordPress VIP Go
  • Avatar upload, crop, and retrieval for users and groups
  • Cover image support
  • Integration with VIP Go File Hosting Service
  • Metadata-driven storage architecture avoiding physical file copies

Technical Context: This initial release established the core architecture that has remained stable for 9 years, requiring only compatibility patches for new BuddyPress/BuddyBoss versions and edge case fixes.

Sources: CHANGELOG.md106-110


Evolution of Major Features

The following diagram maps releases to the evolution of major features and architectural improvements:


Key Evolutionary Themes:

  1. Foundation (2016): Core architecture established with files.php and buddypress-vip-go.php
  2. Edge Cases (2025 Q2): Component checks, hook signatures
  3. Video Support (2025 Q2): BuddyBoss video integration via temp directory workaround
  4. Modernization (2025 Q3-Q4): Testing infrastructure, CI/CD, version requirement updates
  5. Filesystem Timing (2025 Q4-2026 Q1): Critical opendir() fixes requiring precise filter registration
  6. BuddyBoss Compatibility (2025-2026): Default avatar handling, flock() workaround, storage schema adjustments

Sources: CHANGELOG.md8-110


Technical Debt and Resolution Patterns

Analysis of the changelog reveals recurring patterns in how technical debt and edge cases were addressed:

Filesystem Operation Timing

Problem Pattern: VIP Go's distributed filesystem doesn't support standard PHP filesystem functions like opendir() and flock(). BuddyPress/BuddyBoss code assumes standard filesystem access.

Resolution Pattern:


Versions Addressing This: 1.0.7, 1.0.10, 1.0.11

Code References:

  • bp_core_avatar_folder_dir filter returning empty string: files.php
  • bp_core_avatar_folder_url filter returning empty string: files.php
  • Early registration outside bp_init callback: files.php

Metadata Storage Evolution

Problem Pattern: BuddyBoss uses item_id=0 for default group avatars, but WordPress doesn't support meta for non-existent items.

Resolution Pattern:

Storage Typeitem_id > 0item_id = 0Rationale
User Avatarsuser_meta with key vipbp-avatarsN/AStandard user meta
Group Avatarsgroup_meta with key vipbp-group-avatarsbp_option with key vipbp-default-group-avataritem_id=0 requires options fallback
User Coversuser_meta with key vipbp-user-coverN/AStandard user meta
Group Coversgroup_meta with key vipbp-group-coverN/AStandard group meta

Versions Addressing This: 1.0.8

Code References:

  • Conditional storage logic: files.php in vipbp_store_group_avatar_meta
  • Conditional retrieval logic: files.php in vipbp_get_group_avatar_meta

Hook Signature Corrections

Problem Pattern: WordPress filters/actions require exact parameter counts matching their declarations.

Resolution Pattern:


Versions Addressing This: 1.0.2, 1.0.3

Code References:

  • Hook parameter declarations: files.php in add_action and add_filter calls
  • Parameter passing in do_action calls: files.php

Sources: CHANGELOG.md8-110


Documentation Standards Evolution

The project adopted structured Markdown standards in version 1.0.4, as evidenced by .markdownlint.json:

StandardConfigurationPurpose
Code Fence Stylefenced with consistent backticksStandardized code block formatting
Heading StyleATX (# syntax)Consistent heading hierarchy
Line Length240 characters maxReadable diffs and editor wrapping
Link StyleShortcut syntax for referencesClean reference-style links
Allowed Languagesbash, html, javascript, json, markdown, php, textSyntax highlighting consistency

These standards ensure consistent documentation across README, CHANGELOG, and code comments.

Sources: .markdownlint.json1-57 CHANGELOG.md75-77


Version Distribution and Stability Metrics

Release Frequency by Year

YearVersions ReleasedAverage Days Between ReleasesPrimary Focus
20161 (1.0.0)N/AInitial release
2017-20240N/AStable period
202510 (1.0.1-1.0.10)~30 daysCompatibility fixes, infrastructure
20262 (1.0.11-1.0.12)1 dayCritical timing fixes

Change Type Distribution


Insights:

  • 60% Bug Fixes: Primarily compatibility and edge case resolution
  • 24% Infrastructure: Testing, CI/CD, development environment
  • 15% Features: Initial feature set (1.0.0) plus video support (1.0.4)

Sources: CHANGELOG.md8-110


Future Version Considerations

Based on the changelog pattern, future versions will likely address:

  1. BuddyPress/BuddyBoss Version Updates: As new BP versions introduce features requiring filesystem access
  2. PHP Version Support: Maintaining compatibility with newer PHP versions as VIP Go platform updates
  3. Additional Media Types: Potential support for new media types beyond avatars, covers, and videos
  4. Performance Optimizations: Cache strategy refinements based on production usage patterns
  5. Testing Coverage: Expanded integration test scenarios based on edge cases discovered in production

The plugin's mature architecture (stable since 2016) suggests future changes will continue as incremental compatibility patches rather than major architectural overhauls.

Sources: CHANGELOG.md1-124

Refresh this wiki

On this page