Version 2.3.0
Version 2.3.0 is a major BuddyPress feature release.
For Version 2.3.0, the database version (_bp_db_version in wp_options) was 9848, and the Trac revision was 9912. Read the full ticket log here here.
Highlights
- Upload Profile Pictures with Drag and Drop – You can now drag and drop any image you choose to upload as your profile photo. The interface is mobile-ready and now includes integration with phone or laptop cameras. This is an example of what can be developed using the new Attachments API, the long-awaited foundation for media-related BuddyPress components and features.
 - Companion Stylesheets For Themes – Improved styling and integration of BuddyPress components with bundled WordPress themes, Twenty Fifteen and Twenty Fourteen. Codex guide
 - Blog Post Activity – BuddyPress now generates better excerpts in the activity stream for posts containing images or other embedded media content.
 - Member Type Directories – Create directories of member types on your site using the Member Type API.
 - Star Private Messages – Mark important messages in your inbox with a star.
 - Notification Meta – Notifications made infinitely more extensible with an additional metadata table.
 
User Features
Activity
- BuddyPress now generates better excerpts in the activity stream for posts containing images or other embedded media content (#6177)
 - Only show “Favorites” nav items if favorites are enabled (#6214)
 - Activity Akismet integration requires Akismet v3+ (#6191)
 
Administration
- Activity admin: Fix loading image when replying to an item in multisite.(#6337)
 - XProfile admin: Allow administrators to set a user’s photo using the new Avatars UI (#6290, r9759)
 - XProfile admin: Update Profile Fields UI (#6318, #6313, #6315)
 - Show the “Are you sure?” prompt in the BuddyPress admin area before deleting specific items (#6317)
 - Add 
<label>element for options on the “Settings > BuddyPress > Components” screen (#6284) 
Blogs
- Fix issue when recording a site with no name into BuddyPress (#4852)
 - Do not show “New Site” activity filter on single group pages and other instances (#6411)
 - Delete cache when editing a site on the “Network Admin > Sites” page (#6365)
 - Add CSS 
'count'/'no-count'class to the displayed user’s “Sites” profile nav label (#6207) 
Core
- Fix issue when using a WordPress timezone with 
bp_format_time()(#2693) - Use protocol-relative URLs for Gravatar (
//www.gravatar.com) (#6135) - Let jCrop set initial crop coordinates on its own (#6282)
 - In 
bp_create_excerpt(), do not strip HTML comments. Fixes issue when using the<!--more-->tag in blog posts. (#3680) - Add better support for touchscreen devices for the login widget (#6269)
 
Friends
- Fix issue when attempting to update an existing friendship relationship (#6247)
 
Groups
- Use new Avatars UI to upload a group’s photo by drag-and-drop (#6290,
r9757) - Allow group avatars to be disabled (#4677)
 
Members
- Introduce member-type-specific Members directories. Plugin developers should view the codex article and the commit message for more info. (#6286)
 - Filter return value of 
wp_registration_url()so it returns the URL of BuddyPress’s register page (#6208) 
Messages
- Allow users to star private messages #6331)
 - Ensure corresponding notifications are deleted when a message thread is deleted (#6329)
 - Cache results when fetching messages and checking message access (#6221)
 - Cache results when fetching the recipients of a private message thread (#6220)
 
Notifications
- Clear cache when updating a notification (#6445)
 
Profiles
- Use new Avatars UI to upload your photo by drag-and-drop or by taking a photo using your webcam (#6290,
r9757) - Fix broken selection of default values for checkboxes, select boxes, and multi-select boxes (#6134)
 - Allow field options named 
'0'to be created (#6443) 
Settings
- When a user is changing their password, display an error message if the new password is the same as the current password (#6111)
 
Theme
- Improved styling and integration with WordPress bundled theme, Twenty Fifteen (#6291)
 - Improved styling and integration with WordPress bundled theme, Twenty Fourteen (#6338)
 - When loading RTL CSS, do not load the LTR CSS as well (#6200)
 - Fix issue when enqueuing additional assets (#5972)
 
Development, Themes, Plugins
Activity
- Introduce 
comment_date_recorded_raw()functions for retrieving an unformatteddate_recordedvalue for an activity stream comment (r9824) - Update 
bp_activity_thumbnail_content_imagesto check that height/width attributes exist on<img>
tags before trying to reference them (#6159) - Improvements to 
BP_Activity_Activity::delete()method (#6323) - When adding an activity, allow arguments to be filtered using 
bp_parse_args()(#6293) - Pass 
$new_contentand previous$contentvariables to'bp_insert_activity_meta'filter (r9721) - Pass the user ID of the immediate parent comment author to the 
'bp_activity_sent_reply_to_reply_email'(#6375) - Add hook documentation (r9833)
 - Remove usage of 
extract()inbp_has_activities()(r9536) 
Administration
- BuddyPress. The capital P is for ‘Proud’ (#6227)
 - Fix 
<br />elements in the Dashboard contextual help for Profiles (#6439) 
Blogs
- Make sure tracked post types registered using the 
'bp_blogs_record_post_post_types'filter will have the same activity tracking arguments as thepostpost type (#6306) - Specify a 
'directory_title'for the bp-blogs component (#6339) - Improvements to 
bp_get_blog_class()function (r9886) - Beautify 
bp-blogs-widgets.php(r9469) 
Core
- Introduce Attachments API. Developers can view this codex article for more info about the API. (#6278)
 - Overhaul avatar code to use new Attachments API (#6290, r9623, r9624)
 - Introduce 
BP_Media_Extractorclass. This parses a block of text and extracts info about media contained within it. Developers can view how activity excerpts are generated as an example. (r9619) - Introduce ability for components to register new features in the 
BP_Componentclass. Developers can view how the star private messages feature is implemented as an example. (r9844) - Introduce 
bp_core_get_root_option()and use throughout codebase (#6045) - Introduce 
'bp_core_user_get_specific_users_count_sql'and'bp_core_user_get_specific_users_paged_sql'filters inBP_Core_User::get_specific_users()(#6352) - Add hook documentation (#5929, r9848)
 - Update 
caret.jsto version 0.2.2. This library is used in the @mentions suggestions UI. (r9795) - Load 
atwho.jsandcaret.jsin page footer (r9796) - Do not add a trailing slash to links in 
bp_core_new_subnav_item()(#6353) - Improved attribute escaping when outputting subnav link items (r9702)
 - Introduce 
bp_pre_schema_upgrade()and use it to drop oldmeta_keyindexes (r9716) - Add max index length to 
meta_keyDB indices (r9695) - Improve AJAX referer determination during URI parsing (#6252)
 - Do not let 
bp_create_excerpt()truncate to empty strings (#6254) - Undeprecate jquery.scroll-to.js (#6216)
 - Add hook documentation (#5940)
 - Replace all remaining 
$bpglobal touches withbuddypress()(#5138) - Improvements to escaping URLs (#6390, r9802, r9803)
 - Beautify 
/deprecated/2.1.php(r9470) 
Friends
- No changes.
 
General
- Delete 
buddypress.potfrom repository root. For GlotPress going forward, we will be using:
plugins.svn.wordpress.org/buddypress/trunk/buddypress.pot(#5621) - Formalize usage of directory permalinks throughout BuddyPress components (r9466, r9467,
r9468, r9472) - Split each component’s classes file, and move each individual class into its own file (#6083)
 - Rename component admin files to avoid confusion with non-admin files sharing the same name (#6051)
 - Pass additional arguments to all widgets using the 
'widget_title'filter (#6222) - Improved plural forms for localizable strings (#6368)
 - HTTPSify all external URLs if applicable (#6184)
 - Update 
bp_setup_current_user()to avoid output warning on the WordPress Customizer screen (#6046) - Fix strict standards warnings (#5108, #6185)
 - Various PHPDoc improvements (r9457, r9461, r9462, r9465, r9712, r9862, r9877)
 - Various unit test fixes and improvements (#6009, #6223, #6419, r9483, r9560, r9578,
r9579, r9580, r9610, r9655, r9797, r9817, r9818) - Various Grunt improvements (#6263, #6264, #6267, #6351, #6380, r9584, r9902)
 - Various JSHint improvements (#6265, #6266)
 - Various SVN improvements (#6283, #6409, r9486, r9766)
 - Various improvements brought about by Scrutinizer-CI (#5891, r9462, r9637)
 - Simplify 
ABSPATHchecks (r9458) - Capitalization of “JavaScript” where appropriate (#6249)
 
Groups
- Add hook documentation (#5943)
 - Introduce 
'groups_action_sort_creation_steps'action (#6232) - Introduce 
'before'/'after'hooks inBP_Groups_Memberdelete()andremove()methods (#6327) - Pass template object to ‘loop_start’ and ‘loop_end’ actions in groups template classes (#6228)
 - Improve documentation for 
BP_Group_Extensionclass (r9798) - Limit scope of group invitation delete methods in 
groups_uninvite_user()andgroups_reject_invite()(#6209, r9810) - Use 
groups_remove_member()instead ofgroups_uninvite_user()ingroups_leave_group()(#6209, r9811) - Alter 
groups_remove_member()to allow it to work outside of a single-group context
may not be true (#6209, r9811) - Streamline last activity update meta calls (#6158)
 - Bug fixes for 
bp_group_status_message()function(#6319) - Improvements to 
bp_get_group_class()function (r9885) - Remove redundant 
$_FILEScheck inbp_get_group_has_avatar()function (#6203) - Avoid PHP notices when calling 
groups_delete_groupmeta()on group with no metadata (#6326) 
Legacy Forums
bp_the_topic_post_is_mine()is an amazing function, but it doesn’t need to call itself (r9792)
Members
- Introduce 
bp_has_member_type()(#6138) - Introduce 
bp_remove_member_type()function (#6188) - Better logic for blog switching when processing member type tax query (r9661)
 - Improvements to 
bp_member_class()function (#6384, r9884) - Add hook documentation (#5944, #6262, r9669)
 - Pass additional arguments to various member avatar filters (#6392)
 - Improvements to member widget classes (#6361, #6362, #6363)
 
Messages
- Introduce 
bp_get_max_thread_recipients_to_list()function (#6150) - Introduce 
messages_get_message_thread_id()function (r9845) - Add 
$thread_idparameter toBP_Messages_Thread::get_recipients()(r9752) 
Notifications
- Introduce notification metadata table to allow plugin developers to record information about a notification (#6257)
 - Support meta queries in 
bp_has_notifications()stack (r9574) - Pass the notification object to the 
'bp_get_the_notification_description'filter (#6239) 
Profiles
- Introduce 
BP_XProfile_Meta_Queryclass (r9722) - Introduce 
'bp_xprofile_admin_new_field_additional_settings'action (#6272) - Introduce 
'bp_xprofile_groups'cache group, to replace'bp'cache group usage (r9676) - Refactor 
bp_has_profile()stack to support passing arguments as associative arrays (r9686) - Improvements to 
bp_xprofile_update_meta_cache()(r9693) - Sanitize field options on save (r9719)
 - Improve parameter sanitization in 
xprofile_insert_field()(#6354) - Process 
'is_default_option'properly inxprofile_insert_field()andBP_XProfile_Field::save()(#6137) - Use 
self::get()inBP_XProfile_Group::populate()to inherit caching goodness (r9677) - Move field 
save()sanitization into filters for consistency between save method & saving via the admin UI. (r9678, r9681) - Clean up 
bp_profile_group_tabs()(r9684) - Remove usage of 
extract()inbp_has_profile()(r9685) - Avoid debug notices in 
BP_XProfile_Field:;admin_validate()method (r9659) - Remove unused parameter from 
BP_XProfile_ProfileData::get_data_for_user()(r9674) - Correct i18n string in 
bp_profile_last_updated()(r9794) 
Settings
- Add missing 
breakto switch statement inbp_settings_action_general()(r9793) 
Theme
- Load theme-specific supplementary CSS stylesheet if found.  BuddyPress will look for a CSS file called
{stylesheet}.css, where{stylesheet}is the slug of the current theme or parent theme. This
will enable theme developers to add custom modifications for BuddyPress without overriding the main bp-legacybuddypress.cssstylesheet. (r9694) - Add improved CSS classes to notification table elements (#6289)
 - Add 
'sitewide-notices'CSS class to notice loop template (#6424) - Add styles to new 
'warning'message type (#6423) - Add hook documentation (#5948)
 - Send proper page number in AJAX pagination requests (#6394)
 - Change placement of invite nonce and submit button in 
invites-loop.phpandsend-invites.phptemplates (#5924) - Remove nested form on sites directory template (#6427)
 - Remove redundant ARIA 
role="main"declarations from templates (#6456) - For AJAX private message replies, use the message loop and message loop template functions (#6321)
 - Add missing 
'bp_messages_inbox_list_header'hook to message loop template (#6328) - Use 
bp_member_class()function in message loop template (r9884) - Streamline toggling of 
$wp_queryproperties during theme compatibility (#6153) - Do not look for minified assets when running from a trunk installation (#6213,
#6457) - Use strict comparisons in 
buddypress.js(r9528) - Bring window reload code in 
buddypress.jsup to modern standards (r9529)