The biggest release in PeepSo history (so far) is finally here. Please read this post carefully before updating, to be aware of all the breaking changes shipped in this release.
We highly recommend testing this release on a staging site first.
Update: patch 3.0.0.3 is now available.
Wer wartet mit Besonnenheit
Rammstein – Rammlied
Der wird belohnt zur rechten Zeit
Nun, das Warten hat ein Ende
Leiht euer Ohr einer Legende
1. Breaking Changes, redesign & Gecko Customizer
PeepSo 3 and Gecko 3 deliver a new design, new very powerful Gecko Customizer and some changes to the overrides system. Some big design changes could not have been implemented with a graceful backwards compatibility and/or fallback.
This means the PeepSo 3 upgrade might not be as smooth as usual.
- Please read at least the first section of this post carefully
- Test this release on a staging site first
- Ask before you act – if you have any questions or doubts, do not hesitate to send a support ticket
- Ask questions via comments / community posts only if you are not in a hurry
1.1 Breaking Changes
A) New Technical Requirements
PHP 7.0 is required and PHP 7.4 is recommended. PHP 5 is no longer supported.
PHP 7.1 and 7.2 will be dropped by the end of 2020.
WordPress 5.0 is required and 5.5 is recommended. WordPress 4.x is no longer supported.
B) New Configuration Requirements
Several options in PeepSo and Gecko were moved around, renamed or changed the way they work. This is a list of areas that might immediate reconfiguration after upgrading
- You might have to reconfigure your colors and fonts
- You might have to reconfigure your layout: column sizes, header height, sticky header/sidebars and more
- You might have to reconfigure your footer: widgets and copyright text
- You might have to reconfigure your sidebars, including the options governing sidebar presence on specific pages
- You might have to reconfigure your Gecko widget preferences
C) Overrides
The default overrides path has changed from ROOT/wp-content/peepso/overrides/ to ROOT/wp-content/peepso/custom/.
You will need new overrides if you are using any. These only apply if you have customized one of the three main areas:
Image overrides can be simply moved from old directory scheme to the new.
Completely new PHP overrides need to be written – do not copy PHP overrides from PeepSo 2, as they will most likely crash your site. Create new overrides based off PeepSo 3 files.
CSS overrides will stop working due to completely new CSS selectors. We recommend you try recreating them in Gecko Customizer first. There are many new options that were previously unavailable. What can’t be recreated with Gecko Customizer will need new CSS overrides.
1.2 Redesign
All the above breaking changes are caused by the complete refactoring of the HTML and CSS. Among other things, we implemented CSS Custom Properties which allow changing properties of multiple elements with one line of code.
The refactoring is quite invisible – but the resulting new design is a visible major improvement over PeepSo 2. Our goal was to improve the aesthetics while keeping most of the familiar form & function. Some UI elements were moved, hidden until needed or otherwise redesigned. The list is way too long to write down, but you can see it with your own eyes on our own website.
1.3 Gecko Customizer
The WordPress Customizer is a great tool, but we always felt terribly limited trying to build the features of our dreams with it. Gecko 3 ships its own Gecko Customizer which has some terrific new features like multiple custom presets, granular control over colors, fonts, and layout in general. When presets are put in place your users can even select which preset they want to use. Light? Dark? Orange? More about the customizer in a separate blog post.
2. New Features
2.1 Notifications
The new notification engine is well underway, and we plan to introduce many more epic features later on. PeepSo 3 ships the first phase of improvements which will serve as the foundation of the future notification engine.
A) Reorganize & Simplify
We removed many redundant notification preferences and instead merged them all into one single preference. For example, instead a separate setting for “someone liked my photo / video / post / etc” it’s now all included in a single preference “someone liked my post”. This simplifies the user experience immensely and allows them control the experience more easily.
To reflect that, the actual notifications were simplified as well. The user is no longer informed “someone liked your photo / album / video / etc.”, but instead it’s simply “someone liked your post”. The idea here is to simplify the engine architecture, make the user experience more uniform, and – probably most importantly – make it easier on the translators. This is one of the most important user-facing areas of the application, and translators often struggled with creating translations that made sense grammar-wise when glued together in all the different scenarios.
B) E-mail Notification Intensity
This is a big new feature aimed at reducing notification fatigue. The users can now decide whether they prefer all enabled e-mail notifications to be sent out immediately, or rather if they prefer a digest of unread on-site notifications sent out once in a while. It has an added benefit of not notifying the user about things they already read – an approach that will later be expanded to live e-mail notifications too – once we ship the completely new engine based on a cron-job and capable of delivering push notifications.
C) Admin Defined Default Notifications
The administrators now can define default notifications (on-site and e-mail) enabled for newly registered users. This should make it easier to avoid potential notification fatigue and repelling new users from your websites.
2.2 Group category pages
We have been often asked about sub-groups but we always were (and still are) rather against the idea. But it turns out we have been sitting on a pretty decent ready-made tool… so, without further ado: Group categories now have their own pages. The pages contain the group category stream – a stream made up from all group posts within the category the current user has the right to see. Administrators can define custom avatars and covers (in the front-end) and custom URL slug (in the back-end).
This allows you to categorize your community content in more ways, and since one group can be in multiple categories, the resulting system is more flexible than the idea of sub-groups.
In the future we plan to expose more groups and categories options in the front-end, giving more control to non-admin users.
2.3 E-commerce
A) New plugin: Easy Digital Downloads
PeepSo Monetization: Easy Digital Downloads lets you integrate EDD panels right into user profiles, so they can see their purchases, downloads etc. in the Community context. The integration is also capable of creating automatic posts when new purchases are made, diving more sales through social proof marketing. This plugin is running on our own website – but we chose only to enable the profile integration.
B) – WooCommerce Product Vendors
Having a community based around a multiple vendor shop seems to be a dream of many PeepSo customers. PeepSo 3 ships an integration with WooCommerce Product Vendors to try and fulfill that dream. The integration is built right into the PeepSo Monetization: WooCommerce plugin, as a free upgrade to everyone who owns it.
2.4 Embeds
There is a new setting called “fallback to img tag”. When enabled, PeepSo will attempt to infer a thumbnail from page content if the returned embed has no apparent image. We also introduced a way to debug embeds using the postbox. It will let us efficiently debug embed issues in support tickets.
2.5 Deep link registration redirect
You can now decide to redirect newly registered users back to the deep link they originally landed on. PeepSo will attempt to keep track of their original point of entry and bring them back there once they register. This should improve user experience compared to being redirected to an arbitrary page defined by admin.
2.6 Early Access
PeepSo Early Access is a new plugin exclusive to Ultimate Bundle license holders. When activated, it creates an “Early Access” tab in PeepSo configuration. In that tab the administrator can access all the “future features” we are currently working on, but are either not ready to release yet, or want to release to the Ultimate Bundle subscribers first. Each “future feature” is clearly described, including an indicator if about the development stage (alpha, beta, RC, done), if it’s ready for production and/or supported. There are currently three Early Access features available for testing.
A) Resend a-mail activation
This allows administrators to define how many times (and in what time intervals) an activation link e-mail should be sent to each user who fails to confirm their account. It should improve user registration process in case of some intermittent e-mail sending issues, or if the user simply ignores the first message.
B) Web push
The Web Push standard allows sending push notifications to compatible browsers (desktop and Android, excluding iOS). This early implementation lets you experiment with it.
C) New search
We are working on bringing a “search everywhere” feature to PeepSo, allowing the users to instantly search all of the community posts, members, groups, categories, hashtags instead of having to visit a dedicated page. It will also be compatible with CPTs.
D) …and more
Future releases of PeepSo Early Access will introduce more experimental “future features”. The one in line is the WP XML Sitemaps integration, which will expose public community posts to search engines.
3. Under The Hood
3.1 Performance & Compatibility
A) No more transients
WordPress transients are an API used for ephemeral storage with a defined expiration date – in theory perfect for caching various pieces data – among other things, PeepSo used them to cache licensing calls, widget outputs and user tags.
Unfortunately, due to rather exotic design choice by WordPress developers, the transient storage tends to stop working on hosting providers that use aggressive object caching. Their explanation is: “transient record expiration date is just the maximum date – they might expire sooner than that, perhaps even immediately”.
After long and rather traumatic process of debugging transient issues on multiple “managed hosting” servers we finally decided to abandon the substandard existing solution and write our own. PeepSo 3 was already well underway, which gave us a good excuse for a clean cut.
PeepSo Mayfly (named after an insect that only lives about 24 hours) is our own custom ephemeral storage solution, much better, faster, easier to use and dependable than transients. Modeled after other industry standards like Cassandra, it allows us to create records that will stay around until deleted or expired, without the risk of them disappearing or never being created. We also have a dedicated integer API which we use it for various counters without running into race conditions (which is a rather permanent condition when working with numbers via WordPress API). Since it’s based off a custom table and not the WP options table, it should significantly lower database load.
B) Third party compatibility
Phasing out transients immediately improved our compatibility with WordPress.com, Pressly and other managed WordPress hosting providers. We are also shipping multiple compatibility improvements for Elementor, Yoast SEO, Visual Composer and Paid Memberships Pro.
C) โฆand more
We improved multiple areas of the application, which is expected to result in smoother operation and lowered load. That includes both some SQL improvements and implementing more Don’t Repeat Yourself (DRY) principle in the front-end design (for example using one template for all pop-up windows instead one template per window).
There was over 250 developer issues that we had to tackle in the course of this release. They’re being broken down to a more comprehensible list that will be presented in our changelog too.
4. Thank you
I would like to thank all the PeepSo users & customers – on behalf the whole PeepSo team – for supporting us in this journey and for your immeasurable patience with us. This release – the biggest in the history of our company – took much longer than originally planned. We wanted it to be perfect, or at least as close to perfect as a project of this magnitude can be build by a small team like ours.
We extend special thanks to our testers who volunteered their time to test PeepSo 3 Early Access for nearly 3 months of closed Beta / RC testing, providing great feedback and bug reports.
I would also like to thank my team personally – I couldn’t be more proud of the effort you all poured in this project. Especially the last couple of months where we crunched serious overtime getting things done.
5. Update #1: Day One Patch 3.0.0.1
More beginner-friendly Customizer UI
Some users found the idea of duplicating an existing preset a little confusing, mostly because we didn’t do good job explaining it. We have improved the description of actions required and highlighted the duplication button
Styling improvements
This release ships nearly 50 CSS fixes for minor and very minor display issues found in PeepSo 3.0.0.0, including, but not limited to, improved z-index on multiple items, better RTL support, third party integration improvements and better handling of very long texts.
E-Mail Notification Intensity
We added more options to the user configuration, to make the setting more useful. Before, there was nothing between “1 hour” and “1 day” for the user to choose from. We added “2 hours”, “3 hours”, “4 times a day” and “2 times a day”.
Autoloader issues
One client experienced fatal errors when PeepSo attempted to extend its own classes. We hardened the logic with additional checks to ensure all required classes are auto-loaded.
Early Access
Early Access 3.0.0.1 ships an early implementation experimental WP XML Sitemaps integration. Browser Push was renamed to Web Push, and since the config options were renamed as well, it needs to be configured anew.
6. Update #2: October 26 patch 3.0.0.2
We continued to improve the CSS across the board based on reports from our early adopters (thank you!). We fixed some very minor PHP bugs too.
WooCommerce Vendors
We shipped some final admin / configuration improvements to our WooCommerce Product Vendors integration to make it more obvious how to use it. We also added an option to customize the labels in the main profile menu.
Gecko Customizer – rounded corners
We added a setting to control global rounded corners and improved how the avatar rounded corners works.
Early Access
The Early Access plugin was improved with better version lock and shipped an early implementation of cache buster – a solution intended to add an unique string to asset URLs based on the time they were last modified, to improve compatibility with browser cache.
6. Update #3: October 28 patch 3.0.0.3
This is the last micro-release, and the next one will be PeepSo 3.0.1.0. We fixed multiple small CSS issues related to items overlapping each other (z-index) or not keeping to their bounds (overflow). Lots of final touches related to alignment and image styling.
WooCommerce Vendors
If one user runs multiple vendors, we now offer a drop-down to narrow down the results in his WooCommerce Product Vendors profile tab.
Gecko Customizer – rounded corners
We hide the Gecko logo on smaller screens to save space, fixed an issue where footer text could not be successfully emptied and made sure the footer styling also applies to landing pages.
Early Access
The Early Access plugin introduced a Cache busting proof of concept.
Reactions & comments
Due to increased security measures, you can now only log-in using your e-mail address.
If you do not remember your e-mail address, send us an email at support@peepso.com
Comments