| @@ -1,36 +1,35 @@ | ||
| 1 | 1 | # Friends |
| 2 | 2 | |
| 3 | 3 | - Contributors: akirk |
| 4 | 4 | - Tags: friends, rss, decentralized, social-network, own-your-data |
| 5 | -- Requires at least: 5.0 | |
| 6 | -- Tested up to: 6.3 | |
| 7 | -- Requires PHP: 5.6 | |
| 8 | -- License: [GPLv2 or later](http://www.gnu.org/licenses/gpl-2.0.html) | |
| 9 | -- Stable tag: 2.8.1 | |
| 5 | +- Requires PHP: 7.2 | |
| 6 | +- Tested up to: 7.0 | |
| 7 | +- License: GPL-2.0-or-later | |
| 8 | +- Stable tag: 4.3.2 | |
| 10 | 9 | |
| 11 | -Your own WordPress at the center of your online activity. Follow friends and other websites and establish friendship relationships between blogs. | |
| 10 | +A self-hosted social reader for WordPress: follow people via RSS and ActivityPub, with multiple themes and a plugin ecosystem. | |
| 12 | 11 | |
| 12 | +[](https://wordpress.org/plugins/friends/) [](https://playground.wordpress.net/?networking=yes&blueprint-url=https://raw.githubusercontent.com/akirk/friends/refs/heads/main/assets/blueprints/blueprint.json) [](https://playground.wordpress.net/?networking=yes&blueprint-url=https://raw.githubusercontent.com/akirk/friends/refs/heads/main/assets/blueprints/blueprint-prefilled.json) | |
| 13 | + | |
| 13 | 14 | ## Description |
| 14 | 15 | |
| 15 | -The Friends plugin allows you to follow content from other WordPress sites, and interact with them on your own site. You can follow friends and others via RSS. If you also have the ActivityPub plugin installed, you can follow people on Mastodon and other ActivityPub-compatible social networks. | |
| 16 | +The Friends plugin turns your WordPress into a self-hosted social reader. Follow people via RSS and ActivityPub (Mastodon and other Fediverse platforms) and read their posts through one of several built-in themes — Mastodon-style, Google Reader-style, or the default view — with dark mode support. | |
| 16 | 17 | |
| 17 | -**Since version 2.6.0, no users will be created for subscriptions.** | |
| 18 | +**Combine this plugin with the ActivityPub plugin to participate in the Fediverse from your own site. Use the Enable Mastodon Apps plugin to use mobile and desktop Mastodon apps with your WordPress.** | |
| 18 | 19 | |
| 19 | -**Combine this plugin with the ActivityPub plugin to make your own WordPress your own Mastodon instance. Use the Enable Mastodon Apps to use mobile and desktop Mastodon apps with your own site.** | |
| 20 | +The plugin is designed to be extensible: other plugins can add parsers for new feed sources, new themes, and new functionality like saving posts to a collection or sending them to an eReader. | |
| 20 | 21 | |
| 21 | -The Friends Plugin also has a "friend request" function which allows blogs to become friends with each other. This then allows private publishing on your blog while each of their friends has their own blog but will be able to see your privately published posts. | |
| 22 | - | |
| 23 | -There are many small aspects that make it powerful self-hosted social reader: | |
| 24 | - | |
| 25 | 22 | You can... |
| 26 | -- Have multiple feeds per person, so you can subscribe to their blog(s) and social media account(s). | |
| 27 | -- Categorize incoming content with Post Formats and view all posts of a certain format across your friends. | |
| 28 | -- Define rules to filter incoming content (sometimes you’re not interested in everything your friends do). | |
| 29 | -- Turn your favorite blog into your personal newsletter by receiving full-post notification e-mails | |
| 30 | -- Use feed rules to filter out content you are not interested in. | |
| 31 | -- Receive ePubs of your friends' posts to your eReader (via another plugin). | |
| 32 | -- Collect posts (from your feeds or around the web) in a collection for later reference (via another plugin). | |
| 23 | +- Choose from multiple themes: Mastodon-style, Google Reader-style, and a block theme with dark mode. | |
| 24 | +- Organize your subscriptions into folders. | |
| 25 | +- Have multiple feeds per person (blog, social media, etc.). | |
| 26 | +- Categorize incoming content with Post Formats and view all posts of a certain format across your feeds. | |
| 27 | +- Define rules to filter incoming content. | |
| 28 | +- Get full-post email notifications from your favorite blogs. | |
| 29 | +- Save posts to a collection for later reference (via the Post Collection plugin). | |
| 30 | +- Send posts to your eReader (via the Send to E-Reader plugin). | |
| 31 | +- Subscribe to any site with one click using the [Friends browser extension](https://chromewebstore.google.com/detail/friends/ledbghpaplkpclndlommpbokndieflhl) (also available [for Firefox](https://addons.mozilla.org/en-US/firefox/addon/wpfriends/)). | |
| 33 | 32 | |
| 34 | 33 | [](https://www.youtube.com/watch?v=4bz6GluXnsk) |
| 35 | 34 | |
| 36 | 35 | ### Philosophy |
| @@ -37,14 +36,11 @@ | ||
| 37 | 36 | |
| 38 | 37 | The Friends Plugin was built to make use of what WordPress provides: |
| 39 | 38 | |
| 40 | 39 | - You use the WordPress infrastructure (Gutenberg or Classic Editor, what you prefer) to create your posts. |
| 41 | -- If a post is private, only logged-in friends can see it. They can only log in through their own Friends plugin on their blog. | |
| 42 | -- Therefore, your friend is just a user on your WordPress blog, their posts are theirs, you can delete them to unfriend them. | |
| 43 | -- No extra tables: The Friends plugin just uses a post type, options and some taxonomies to store its data. When you delete the plugin, your WordPress will be slim like before. | |
| 40 | +- Followed people are stored as taxonomy terms, their posts are cached as a custom post type — delete the term to unfollow. | |
| 41 | +- No extra tables: The Friends plugin just uses a post type, options, and some taxonomies to store its data. When you delete the plugin, your WordPress will be as slim as before. | |
| 44 | 42 | |
| 45 | -In future, I could see mobile apps instead of talking to a third party, to talk to your own blog. It will have your friends' posts already fetched. Maybe the apps will be specialized, like Twitter or Instagram, where you'd only interact with and create posts in the specific post format. | |
| 46 | - | |
| 47 | 43 | The logo was created by Ramon Dodd, @ramonopoly. Thank you! |
| 48 | 44 | |
| 49 | 45 | Documentation for the plugin can be found on the [GitHub project Wiki](https://github.com/akirk/friends/wiki). |
| 50 | 46 | |
| @@ -57,287 +53,659 @@ | ||
| 57 | 53 | |
| 58 | 54 | ## Frequently Asked Questions |
| 59 | 55 | |
| 60 | 56 | ### Does this plugin create custom tables? |
| 61 | -No, all the functionality is achieved with standard WordPress means. Subscriptions or Friends are minimal-permission users on your install. External posts are cached in a custom post types and attributed to those users. | |
| 57 | +No, all the functionality is achieved with standard WordPress means. Followed people are stored as taxonomy terms, and their posts are cached in a custom post type. | |
| 62 | 58 | |
| 63 | -### Why does this create users on my WordPress install? | |
| 64 | -I believe this is a very elegant way to attribute content and it allows to delete the users content when you delete them. The users have minimal privileges, so they cannot be used to post actual content to your site. | |
| 59 | +### What's the point? If I want to follow people I can use a social network. | |
| 60 | +That's exactly the point — with WordPress you own your data and decide where to host it. You get all the benefits of open source software without depending on a third party. | |
| 65 | 61 | |
| 66 | -The users can only be used for login through your specific friend's WordPress install (they are created with a strong password throw-away password), if they have been upgraded to a "friend" or "aquaintance" user. | |
| 62 | +### What happens if I modify or delete a post? | |
| 63 | +Cached posts are stored as the custom post type `friend_post_cache`. When you unfollow someone, their cached posts are removed with them. | |
| 67 | 64 | |
| 68 | -### Why is the friendship established between WordPress sites and not WordPress users? | |
| 69 | -For one, this allows to stick with established WordPress configurations and terminologies. For example, you can use the WordPress mobile apps to post privately to your site. | |
| 65 | +### Is there a browser extension? | |
| 66 | +Yes — install it for [Chrome](https://chromewebstore.google.com/detail/friends/ledbghpaplkpclndlommpbokndieflhl) or [Firefox](https://addons.mozilla.org/en-US/firefox/addon/wpfriends/). It adds a toolbar button that lets you subscribe to the site you are currently visiting with one click. Pair it with the API key on the Friends → Browser Extension page to also expose quick actions from other Friends-aware plugins (saving to a collection, sending to your eReader, etc.). | |
| 70 | 67 | |
| 71 | -Secondly, a lot of WordPresses are like cell phones. Some are used by more than one person but mostly there is a 1:1 relationship between a WordPress blog and a person. | |
| 68 | +## Screenshots | |
| 72 | 69 | |
| 73 | -If someone has multiple WordPresses this actually allows to segment your friendships. Close friends might want to follow all your blogs but you'd only add your photographer friends to your photoblog. | |
| 70 | +1. Mastodon-style theme | |
| 71 | +2. Google Reader-style theme | |
| 72 | +3. Default view with compact mode | |
| 73 | +4. Multiple feeds per person, even on social networks | |
| 74 | +5. Categorize incoming content with Post Formats and view all posts of a certain format across your feeds | |
| 75 | +6. Use rules to filter incoming content | |
| 76 | +7. Organize subscriptions into folders | |
| 77 | +8. Followed people are stored as taxonomy terms | |
| 74 | 78 | |
| 75 | -### What if the friend request is deleted or not accepted? | |
| 76 | -You'll still see the public posts from the other WordPress, you've subscribed to its public RSS feed. | |
| 79 | +## Changelog | |
| 77 | 80 | |
| 78 | -### What's the point? If I want to post something privately I can use Facebook. | |
| 79 | -Well, that's actually exactly the point. Facebook owns your data, with WordPress you can decide where you want to host it and have all the benefits of running open source software. | |
| 81 | +### 4.3.2 | |
| 82 | +- A mention that links to somebody on another server is no longer mistaken for a mention of a friend who happens to have the same name. ([#721]) | |
| 83 | +- Fixed the link preview image being inset with a visible margin in the Mastodon and Twitter themes. ([#722]) | |
| 84 | +- Show likes received on direct messages. ([#723]) | |
| 85 | +- The sidebar Follow field now opens the Add Friend review instead of silently reloading the Friends page. ([#724]) | |
| 86 | +- Accept Mastodon-style handles when adding friends. ([#725]) | |
| 87 | +- Standard-format Friend posts now support link previews. ([#726]) | |
| 88 | +- Redirect to the current subscriptions page after unfriending and remove stale links to the deleted friends-list admin screen. ([#727]) | |
| 89 | +- Use the frontend Following page for subscriptions links instead of the legacy WordPress users screen. ([#728]) | |
| 90 | +- Fix direct message delivery status visibility for latest and consecutive outgoing messages. ([#729]) | |
| 91 | +- Prevent duplicate imports and notifications for future-dated feed items. ([#730]) | |
| 92 | +- Avoid keyword notifications for matches that only appear in known URL tracking parameters. ([#731]) | |
| 93 | +- Restore the setting for choosing the main Friends user. ([#732]) | |
| 94 | +- Add Blockroll integration for exposing Friends subscriptions as a Blogroll block source. ([#733]) | |
| 95 | +- Redirect the friendly Friends settings URL to the settings admin page. ([#734]) | |
| 80 | 96 | |
| 81 | -### What happens if I modify or delete a post? | |
| 82 | -There is a cache of your friends post in form of a Custom Post Type friend_post that is updated when you change a post. When you delete a post your friends' WordPresses are notified and they delete the cached post. | |
| 97 | +### 4.3.1 | |
| 98 | +- Fix direct messages being federated as a Tombstone so they never arrived at the recipient. ([#718]) | |
| 99 | +- Fix a fatal error when receiving a direct message from a sender whose feed doesn't resolve to a friend user. ([#719]) | |
| 83 | 100 | |
| 84 | -## Screenshots | |
| 101 | +### 4.3.0 | |
| 102 | +- Notify Mastodon apps about received direct messages. ([#711]) | |
| 103 | +- Show a link preview card for posts that link to an article, with a setting to turn it off. ([#712]) | |
| 104 | +- Fix a fatal error that stopped the friends page from rendering when the ActivityPub plugin is not active. ([#714]) | |
| 85 | 105 | |
| 86 | -1. Compact view is like Google Reader | |
| 87 | -2. You can use it like a Feed Reader | |
| 88 | -3. But it is centered around users; you can have multiple feeds per person, even on social networks (parsing capabilities provided by plugins) | |
| 89 | -4. Extensible with plugins itself | |
| 90 | -5. Use the customizer to adapt it to your liking | |
| 91 | -6. Categorize incoming content with Post Formats and view all posts of a certain format across your friends | |
| 92 | -7. Use rules to filter incoming content (sometimes you’re not interested in everything your friends do) | |
| 93 | -8. Friends users are plain WordPress users with low privileges | |
| 94 | -9. A Friend Request is accepted in the users screen. Delete the user to reject it or accept the request to make them a friend | |
| 106 | +### 4.2.2 | |
| 107 | +- Fix the mobile direct messages layout and keyboard behavior. ([#693]) | |
| 108 | +- Add delivery status indicators for ActivityPub direct messages. ([#694]) | |
| 109 | +- Update CI actions to avoid Node module deprecation warnings. ([#695]) | |
| 110 | +- Update CI actions to avoid Node module deprecation warnings. ([#696]) | |
| 111 | +- Show direct message delivery status in the conversation overview and recover delivery tracking for older ActivityPub outbox items. ([#703]) | |
| 112 | +- Quiet public posts created through Mastodon apps are stored as published posts with quiet-public ActivityPub visibility. ([#704]) | |
| 113 | +- Document browser extension inline action responses that can update form state after saving. ([#705]) | |
| 114 | +- Avoid a duplicate-key database error when the same ActivityPub activity is redelivered. ([#707]) | |
| 115 | +- Fix a fatal error when unfollowing an account that isn't a Friends subscription through a Mastodon app. ([#709]) | |
| 95 | 116 | |
| 96 | -## Changelog | |
| 117 | +### 4.2.1 | |
| 118 | +- Render ActivityPub custom emoji in actor display names. ([#681]) | |
| 119 | +- Parse direct XML feeds even when they are served with a text/plain content type. ([#683]) | |
| 120 | +- Hydrate Enable Mastodon Apps favourite and bookmark state from Friends reactions. ([#684]) | |
| 121 | +- Fix local replies on cached ActivityPub posts not entering the outbox. ([#685]) | |
| 122 | +- Avoid slow ActivityPub host lookups by caching actor handles for cached posts. ([#686]) | |
| 123 | +- Fix ActivityPub re-follow actions for pending subscriptions. ([#687]) | |
| 124 | +- Update the Playground workflow to add the test link to the pull request description instead of posting a comment. ([#688]) | |
| 125 | +- Clarify ActivityPub feed unfollow and removal actions. ([#689]) | |
| 126 | +- Fix default frontend theme colors so the page follows system dark mode. ([#690]) | |
| 127 | +- Persist Mastodon API boosts locally so announced boosts also appear in Mastodon account statuses. ([#691]) | |
| 97 | 128 | |
| 98 | -### 2.8.1 | |
| 99 | -- Fix broken outgoing activities with version 1.0 of the ActivityPub plugin ([#258]) | |
| 129 | +### 4.2.0 | |
| 130 | +- Add a direct messages view with a conversation list and chat layout. ([#671]) | |
| 131 | +- Show direct messages from ActivityPub users you do not follow and surface follower status on their profile. ([#672]) | |
| 132 | +- Link profile message previews to the direct messages view. ([#673]) | |
| 133 | +- Send ActivityPub direct messages through the outbox so delivery can use the normal persistence and retry flow. ([#674]) | |
| 134 | +- Improve direct message links, drafts, grouping, and live refresh behavior. ([#675]) | |
| 135 | +- Support ActivityPub custom emoji in boosted actor names. ([#676]) | |
| 136 | +- Run CI checks on PR heads after the changelog workflow adds its generated commit. ([#677]) | |
| 137 | +- Fix action icon alignment on follower and following pages. ([#678]) | |
| 138 | +- Run normal PR checks after workflow-generated changelog commits. ([#679]) | |
| 100 | 139 | |
| 101 | -### 2.8.0 | |
| 102 | -- Fix invalid callback | |
| 140 | +### 4.1.0 | |
| 141 | +- Add a frontend Add Friend page with feed review and OPML import support. ([#516]) | |
| 142 | +- Surface the Friends browser extension in more places so users can discover it: the Browser Extension submenu is now always visible under Friends, the settings page describes what the extension does and links to the Chrome and Firefox stores, and the Tools → Bookmarklets card and README mention it as well. ([#663]) | |
| 143 | +- Document that a category can be specified. ([#664]) | |
| 144 | +- Prevent the ActivityPub plugin from federating cached friend posts so remote content stored locally is never announced as the site's own activity. ([#665]) | |
| 145 | +- Add generic inline browser extension action dispatching so companion plugins can provide authenticated in-popup actions through Friends filters. ([#666]) | |
| 146 | +- Show and pad the welcome content in the shipped frontend themes. ([#667]) | |
| 147 | +- Add WordPress Abilities for AI Assistant to manage Friends subscriptions, feeds, single-feed refreshes, bulk refreshes, and cached timeline items. ([#668]) | |
| 148 | +- Require changelog entries to come from PR body details and add release-prep dry-run validation. ([#669]) | |
| 103 | 149 | |
| 104 | -### 2.7.9 | |
| 105 | -- Fix broken replies with version 1.0 of the ActivityPub plugin ([#257]) | |
| 150 | +### 4.0.6 | |
| 151 | +- Fix conversation accounts for migrated users by falling back to friends_feed_url meta when post_author is 0. ([#655]) | |
| 152 | +- Add a search field to the Followers, Following, and Mutual pages. ([#658]) | |
| 153 | +- Add a Twitter/X-inspired frontend theme. ([#653]) | |
| 154 | +- Avoid a fatal error in follower notifications when the ActivityPub plugin (7.5.0+) passes a WP_Post instead of a Follower model — the email handlers now resolve the Actor via Remote_Actors so new- and lost-follower emails work again, ending the inbox retry loop that this caused. ([#661]) | |
| 155 | +- Mobile fixes: show the Friends icon in the admin bar on mobile and swap the generic group glyph for the Friends logo mark; stack chips and search on separate rows in the Google Reader theme on narrow screens; remove duplicate compose box from the Twitter theme mobile panel. ([#656]) | |
| 156 | +- Fix loading indicator in Google Reader, Mastodon, and Twitter themes spinning the host element's text like a propeller; use a rotating pseudo-element instead. ([#659]) | |
| 157 | +- Twitter theme: add a second widget area ("Friends Sidebar 2") shown in the right column. ([#657]) | |
| 106 | 158 | |
| 107 | -### 2.7.8 | |
| 108 | -- Fix some incompatibilities with version 1.0 of the ActivityPub plugin ([#256]) | |
| 159 | +### 4.0.5 | |
| 160 | +- Fix search pagination losing search results on infinite scroll and add search controls (clear search, sort order). ([#636]) | |
| 161 | +- Fix comment textarea causing horizontal scrollbar on mobile. ([#637]) | |
| 162 | +- Fix TypeError when updating the Friends dashboard widget. ([#638]) | |
| 163 | +- Add ActivityPub integration tests to CI and test for comment federation on cached posts. ([#639]) | |
| 164 | +- Show ActivityPub comment form for posts whose permalink host is a known ActivityPub instance, with a fallback message linking to the source for non-ActivityPub posts. ([#641]) | |
| 165 | +- Add `friends_browser_extension_actions` filter to allow plugins to register actions in the browser extension. ([#642]) | |
| 166 | +- Remove the plugin installer page and update the README for 4.0. ([#643]) | |
| 167 | +- Fix reblog account handle for WordPress blog-wide ActivityPub actors using ?author=0 URLs. ([#644]) | |
| 168 | +- Add compose box to the Mastodon theme with @mention autocomplete and a setting to exclude status posts from the main RSS feed. ([#646]) | |
| 169 | +- Use ap_actor post ID as account ID in Mastodon API when ActivityPub plugin is active. ([#647]) | |
| 170 | +- Remove extra whitespace inside link tags that caused imprecise hover text in templates. ([#649]) | |
| 171 | +- Add collapsible mobile panel for compose and search in Mastodon theme. ([#650]) | |
| 172 | +- Fix Mastodon theme search autocomplete styling and prevent User_Query from returning non-subscription WordPress users. ([#651]) | |
| 109 | 173 | |
| 110 | -### 2.7.7 | |
| 111 | -- No longer send your own comments out via ActivityPub, should be moved into the ActivityPub plugin ([#255]) | |
| 112 | -- Hide block options for ClassicPress ([#252]) | |
| 113 | -- Change feed table from horizontal to vertical ([#248]) | |
| 174 | +### 4.0.4 | |
| 175 | +- Mastodon theme: compact mode, mobile sidebar, and profile page cosmetics ([#634]) | |
| 114 | 176 | |
| 115 | -### 2.7.6 | |
| 116 | -- Added an option to enable/disable Gutenberg on the frontend ([#245]) | |
| 117 | -- Fixed that a faulty "hide from friends page" value could cause missing posts in the main feed | |
| 118 | -- Change so that the [Send to E-Reader plugin] can enable downloading the ePub from a special URL | |
| 177 | +### 4.0.3 | |
| 178 | +- Fix header image centering in Mastodon theme ([#632]) | |
| 179 | +- Fix Mastodon theme design issues ([#630]) | |
| 180 | +- Add AJAX feed refresh on the frontend ([#631]) | |
| 119 | 181 | |
| 120 | -### 2.7.5 | |
| 121 | -- Fix following users from Enable Mastodon Apps | |
| 122 | -- Fix disappearing posts after untrashing them | |
| 182 | +### 4.0.2 | |
| 183 | +- Clean up edit-friend UI: add username field, remove legacy roles ([#629]) | |
| 184 | +- Fix crash in admin_edit_user_link for virtual subscriptions ([#628]) | |
| 185 | +- Fix fatal error during feed discovery when content is null ([#627]) | |
| 186 | +- Strip style tags and convert iframe embeds during feed sanitization ([#624]) | |
| 187 | +- Defer theme name translations to avoid early textdomain loading ([#625]) | |
| 188 | +- Google Reader: expand single post view, remove comments border ([#623]) | |
| 123 | 189 | |
| 124 | -### 2.7.4 | |
| 125 | -- Allow specifying a URL as avatar ([#243]) | |
| 126 | -- Add more mastodon style urls for ActivityPub parsing autodetection (when there is no mime-type in the rel=me) | |
| 127 | -- Fixed a bug where comments were not retrieved via the comments RSS feed | |
| 128 | -- Fixed the require codeword checkbox | |
| 190 | +### 4.0.1 | |
| 191 | +- Restore Add Friend admin page ([#622]) | |
| 192 | +- Rename Subscriptions to Following in the frontend ([#616]) | |
| 193 | +- Use Friends avatar for non-reblog posts ([#621]) | |
| 194 | +- Fix author page performance regression ([#617]) | |
| 195 | +- Make Mastodon theme header non-sticky on mobile ([#620]) | |
| 196 | +- Fix avatar rendering in Mastodon theme and always show filters ([#615]) | |
| 197 | +- Add ActivityPub subscription status check ([#613]) | |
| 198 | +- Remove Spectre CSS and Sass, use plain CSS with native nesting ([#614]) | |
| 199 | +- Add header image readability styling to all themes ([#612]) | |
| 200 | +- Fix fatal error and stuck Pending migrations ([#610]) | |
| 201 | +- Add new themes to the Friends plugin documentation | |
| 129 | 202 | |
| 130 | -### 2.7.3 | |
| 131 | -- Add get_posts args support for virtual users ([#242]), this allows the Enable Mastodon Apps to work with external mentions after [#215] | |
| 203 | +### 4.0.0 | |
| 204 | +- Remove Friendship functionality ([#515]) | |
| 205 | +- Provide a block theme for the Friends page ([#362]) | |
| 206 | +- Move post_tag to a friend_tag taxonomy ([#559]) | |
| 207 | +- Implement Dark Mode for Friends Page ([#571]) | |
| 208 | +- Improve Compatibility with ActivityPub 7.0 ([#574]) | |
| 209 | +- Improve ActivityPub integration and migration UI ([#575]) | |
| 210 | +- Use the ActivityPub header image if available ([#576]) | |
| 211 | +- Fix the external actor display ([#577], [#578]) | |
| 212 | +- Improve external mention behavior ([#579]) | |
| 213 | +- Fix the links for ActivityPub comments ([#580]) | |
| 214 | +- Prevent apostrophes in friend usernames and migrate existing ones ([#581]) | |
| 215 | +- Refactor Friend Tag ([#583]) | |
| 216 | +- Use preferredUsername instead of display name for ActivityPub suggested-username ([#585]) | |
| 217 | +- Don't convert replies to comments without mentions ([#586]) | |
| 218 | +- Fix batch pagination bug in migrations and add undo support ([#587]) | |
| 219 | +- Optimize Mastodon API performance ([#592]) | |
| 220 | +- Don't assume WP_HTML_Tag_Processor is available ([#553]) | |
| 221 | +- Add News page with update announcements and migration improvements ([#598]) | |
| 222 | +- Add subscription folders ([#599]) | |
| 223 | +- Fix followers page and add filtering, sorting, and pagination ([#600]) | |
| 224 | +- Add Google Reader theme ([#601]) | |
| 225 | +- Add subscriptions page with filtering, sorting, and pagination ([#603]) | |
| 226 | +- Fix video controls, reaction scroll loss, and PHP warning ([#604]) | |
| 227 | +- Add Mastodon-style theme ([#605]) | |
| 228 | +- Fix folder support in friend-list widget and block ([#607]) | |
| 132 | 229 | |
| 133 | -### 2.7.2 | |
| 134 | -- Prepare for Activitypub Update which in its current state could cause a fatal ([#241]) | |
| 135 | -- Post Collection compatibility: Allow trashing of Post Collection posts ([#240]) | |
| 136 | -- Post Collection compatibility: Allow the post collection to be included in the autocomplete ([#239]) | |
| 137 | -- Fix updating of user data when the subscription is a virtual user ([#238]) | |
| 230 | +### 3.6.0 | |
| 231 | +- Add support for PeerTube ([#546]) | |
| 232 | +- Show as who you'll follow ([#545]) | |
| 233 | +- Add support for following via textbox on Mastodon ([#544]) | |
| 234 | +- Fix broken redirect for non-existing friends ([#539]) | |
| 235 | +- Don't use iframes in autogenerated youtube embeds ([#540]) | |
| 236 | +- Update function call in ActivityPub ([#543]) | |
| 138 | 237 | |
| 139 | -### 2.7.1 | |
| 140 | -- Update Blocks Everywhere for WordPress 6.3 compatbility ([#236]) | |
| 141 | -- ActivityPub: Also detect standard fediverse urls and assign the post-format status ([#237]) | |
| 238 | +### 3.5.2 | |
| 239 | +- Expose following list via ActivityPub ([#538]) | |
| 240 | +- Convert query vars serialization to json ([#537]) | |
| 241 | +- Don't replace tags outside of the friends page ([#536]) | |
| 242 | +- Use EMA account data for a local user ([#535]) | |
| 243 | +- EMA: Fix following number for own user ([#534]) | |
| 244 | +- Remove external hover links ([#533]) | |
| 245 | +- Plugin Check Fixes ([#532]) | |
| 246 | +- Ajaxify Post Count display on the main friends page ([#531]) | |
| 247 | +- Always apply replace rules and fix html entity replacing ([#530]) | |
| 142 | 248 | |
| 143 | -### 2.7.0 | |
| 144 | -- Improve the Onboarding Experience ([#231]) | |
| 145 | -- Expose the ActivityPub plugin more on the Add Friend screen ([#234]) | |
| 146 | -- Fixed Quick Subscribe ([#233]) | |
| 147 | -- Recognize the published date for announces ([#232]) | |
| 148 | -- Allow setting the Collapsed view as default ([#224]) but don't collapse when there is just a single post ([#229]) | |
| 249 | +### 3.5.1 | |
| 250 | +- Fix undefined user_id variable ([#525]) | |
| 251 | +- Fix broken rewrite rules ([#524]) | |
| 149 | 252 | |
| 150 | -### 2.6.0 | |
| 151 | -- Don't create a user when only following someone ([#215]). This means that if you only want to use the Friends plugin to follow people, it will no longer create a user for each follow. | |
| 152 | -- Fix the hardcoded friends url path on the refresh widget ([#223]) | |
| 153 | -- ActivityOPub: add support incoming video attachments ([#222]) | |
| 154 | -- Friends Page: Status View improvements ([#220]): Style the collapsed status view better. Move the Quick post toggle. Add Reply button and dropdown entry. | |
| 155 | -- Friends Page: Allow private sharing of a post on your friends page ([#217]). Adds a new "Share" item to the dropdown which gives you a special link that can be viewed by anyone. | |
| 156 | -- A number of small PHP 8.1 fixes | |
| 253 | +### 3.5.0 | |
| 254 | +- Prevent friends page running wide in compact view ([#522]) | |
| 255 | +- Prevent fatal for boosted post ([#521]) | |
| 256 | +- Flush Rewrite Rules later ([#520]) | |
| 157 | 257 | |
| 158 | -### 2.5.3 | |
| 159 | -- Add a new Reply To field to the Status post form ([#210]), also see the related update to the Firefox extension at https://addons.mozilla.org/addon/wpfriends/ | |
| 160 | -- Fix a Fatal regarding ActivityPub metadata | |
| 258 | +### 3.4.9 | |
| 259 | +- Message fixes ([#518], [#519]) | |
| 260 | +- Display only images in compact mode ([#517]) | |
| 161 | 261 | |
| 162 | -### 2.5.2 | |
| 163 | -- Create better display name from follows from the Enable Mastodon Apps plugin | |
| 164 | -- Relay the external mentions user to the Enable Mastodon Apps plugin | |
| 262 | +### 3.4.8 | |
| 263 | +- Enable Mastodon Apps: Fix wrong reblog attribution ([#510]) | |
| 165 | 264 | |
| 166 | -### 2.5.1 | |
| 167 | -- Prevent creation of a new feed for a virtual external mentions feed | |
| 265 | +### 3.4.7 | |
| 266 | +- Remove profile link from the Activitypub Follower e-mail ([#507]) | |
| 267 | +- Add support for Youtube Feeds ([#508]) | |
| 268 | +- Enable Mastodon Apps: Fix broken posting experience without ActivityPub plugin ([#506]) | |
| 168 | 269 | |
| 169 | -### 2.5.0 | |
| 170 | -- Fix/improve outgoing ActivityPub mention behavior for comments ([#205] and [#206]) | |
| 171 | -- Support for external ActivityPub mentions ([#206]) | |
| 270 | +### 3.4.6 | |
| 271 | +- EMA: Fix wrong display of blog author for friends posts in subscriptions ([#505]) | |
| 272 | +- Allow CORS request for moz-extensions to the frontpage ([#501]) | |
| 273 | +- Fix Fatal when accessing the Activitypub outbox ([#504]) | |
| 172 | 274 | |
| 173 | -- ### 2.4.0 | |
| 174 | -- Reactions: Make it possible to issue reactions from outside ([#201]) | |
| 175 | -- Add Reblogging and Announce support for ActivityPub ([#168]) | |
| 176 | -- Add filters and metadata to make the Enable Mastodon Apps plugin possible ([#200]) | |
| 177 | -- ActivityPub: Auto-approve comments by people you follow ([#199]) | |
| 178 | -- Add more explicit plugin recommendations ([#203] and [#202]) | |
| 275 | +### 3.4.5 | |
| 276 | +- Enable Mastodon Apps: Fix user query ([#500]) | |
| 179 | 277 | |
| 180 | -### 2.3.1 | |
| 181 | -- Remove stale ActivityPub version and use the information from WordPress.org ([#195]) | |
| 182 | -- Allow mixing of post formats on the frontend | |
| 183 | -- Allow filtering notifications by the incoming feed ([#196]) | |
| 184 | -- Fix friends menu on other site ([#189]) | |
| 185 | -- Added missing space to generated SQL query ([#191]) | |
| 278 | +### 3.4.4 | |
| 279 | +- Friends Page: ensure friends posts can be collapsed / uncollapsed ([#496]) | |
| 280 | +- Friends Page: Allow clicking on collapsed links ([#497]) | |
| 186 | 281 | |
| 187 | -### 2.3.0 | |
| 188 | -- The Wiki now contains a [Hooks Documentation](https://github.com/akirk/friends/wiki/Hooks) ([#167]) | |
| 189 | -- Frontend: Add CSS rule to fix odd resizing ([#166]) | |
| 190 | -- Frontend: Add a "Show hidden items" in the main feed header ([#172]) | |
| 191 | -- Frontend: Upgrade Blocks Everywhere, hide Quick Post Panel by default ([#180], [#183]) | |
| 192 | -- Frontend: Don't let the Post Kinds plugin interfere with the friends query ([#176]) | |
| 193 | -- Admin: Fix inconsistencies with links to the new friends list link ([#184]) props @pfefferle | |
| 194 | -- Admin: Tweak text for "Show Hidden Items" setting, per-feed. ([#173]) props @alecmuffett | |
| 282 | +### 3.4.3 | |
| 283 | +- Rerelease of 3.4.2, which got stuck somewhere on WordPress.org | |
| 195 | 284 | |
| 196 | -### 2.2.0 | |
| 197 | -- Fix remote friends plugin detection on public Friends page when headers are stripped ([#160]). | |
| 198 | -- Permissions: Allow using the friends plugin as an Editor ([#121]). An administrator account no longer required, you only need one to set the main user and adjust blog-level settings. | |
| 199 | -- Automatic status: Add option to disable creation of automatic status post drafts ([#141]). | |
| 200 | -- ActivityPub: Support for outgoing mentions (prepared in [activitypub#213] by removing the parser from there for quicker iteration). Implemented in [#137]. | |
| 201 | -- ActivityPub: Use the avatar from ActivityPub ([#142]) and allow setting it after the fact (it won't change automatically). | |
| 202 | -- ActivityPub: Add outbox support ([#163]) which means that when you now subscribe to someone new, it will fetch old posts. | |
| 285 | +### 3.4.2 | |
| 286 | +- Many small UI Updates ([#494]): | |
| 287 | + - Added a keyboard shortcut for edit (press e) when you have the capabilities to edit a post (for example in a post collection) | |
| 288 | + - Don't hide the header overflow in mobile anymore | |
| 289 | + - Fix reply menu item to open comments on the same page | |
| 290 | + - Add a "still loading" text when loading comments takes long | |
| 291 | + - Show reply and boost menu links only for ActivityPub posts | |
| 292 | + - Show the comment form even if you disabled commenting globally on your WordPress | |
| 203 | 293 | |
| 204 | -### 2.1.3 | |
| 205 | -- Feeds: fixed a bug where when adding a new user and subscribing to an ActivityPub feed at the same time, the ActivityPub account won't be followed (would need a deactivate/actiate of the feed). | |
| 206 | -- Taxonomies: Hide the user-feed and reactions taxonomies from the public and delete their entries when uninstalling the plugin ([#132]). | |
| 207 | -- Improved PHP8 compatibility and start testing with PHP8.2 in the CI. | |
| 294 | +### 3.4.1 | |
| 295 | +- DMs: Preview lastest message ([#493]) | |
| 296 | +- Fix broken DMs when using the blog user in Activitypub ([#492]) | |
| 208 | 297 | |
| 209 | -### 2.1.2 | |
| 210 | -- Frontend: add option to show/hide hidden entries on a user page ([#124]). | |
| 211 | -- Admin: Fix that the main settings page would not save. | |
| 212 | -- Plugins (ActivityPub): Add a function to get all friends for a specific parser. This is for [activitypub#213]. | |
| 213 | -- Plugins: Allow plugins to suggest a better display name and username for friends via two new hooks `friends_suggest_user_login` and `friends_suggest_display_name`. | |
| 298 | +### 3.4.0 | |
| 299 | +- Fix old posts not being deleted for ActivityPub ([#476]) | |
| 300 | +- Implement DMs for ActivityPub and EMA ([#489]) | |
| 301 | +- Improve Frontend margins ([#490]) | |
| 302 | +- Replace string ids for subscriptions with high ints ([#483]) | |
| 303 | +- Fix redirect after converting user ([#484]) | |
| 304 | +- Fix replying to posts with a different permalink ([#478]) | |
| 305 | +- EMA: Implement following endpoint data ([#480]) | |
| 306 | +- EMA: Remove old filters ([#482]) | |
| 307 | +- Extension: Allow moz-extension as a URL protocol ([#477]) | |
| 214 | 308 | |
| 215 | -### 2.1.1 | |
| 216 | -- Friends messages and status posting UI: Bring back the Gutenberg Editor using the updated blocks-everywhere ([#122]). | |
| 217 | -- Admin: Fix a redirect problem on the autostatus admin page. | |
| 218 | -- Status posts: fix collapsing them and only output the status post box on the main status feed to avoid confusion when your posts don't show up on an author status page. | |
| 309 | +### 3.3.5 | |
| 310 | +- Use Outbox of the upcoming ActivityPub 5.3.0 and fix announce+like bug with Activitypub 5.2.0 ([#463]) | |
| 311 | +- Fix editing widgets in a block theme ([#475]) | |
| 312 | +- Augment bookmarks and favourites endpoints in EMA ([#474]) | |
| 313 | +- Improve the display of boosted posts ([#473]) | |
| 219 | 314 | |
| 220 | -### 2.1.0 | |
| 221 | -- Plugins: Add filters for allowing ActivityPub integrations (see [activitypub#172]): `friends_rewrite_incoming_url`, `friends_user_feed_activated`, `friends_user_feed_deactivated`. | |
| 222 | -- Plugins: Add ActivityPub to the Friends Plugins installer. | |
| 223 | -- Frontend: Add ability to read a post's comments inside the Friends plugin using the comments button (if it supplies a comments feed in its RSS which all WordPresses do) ([#113]). | |
| 224 | -- Frontend: Add different styling for images and status feed. Add a "post status" box to the status feed. | |
| 225 | -- Frontend: Allow starring friends + new widget to display those starred friends for convenient access. | |
| 226 | -- Frontend: Add a recent friends widget that displays your newest friends and subscriptions for convenient access. | |
| 227 | -- Admin: Introduce tabs on various friends settings for a better overview ([#116]). | |
| 228 | -- Admin: Remove the Welcome admin notice in favor a Welcome screen inside the friends plugin. | |
| 229 | -- Admin: Improve the friend space usage calculation for friends with many posts. | |
| 230 | -- Admin: Improve Automattic Status ([#111]). | |
| 231 | -- Core: Improved the WP_Query for the frontend to allow to show your reactions to the posts ([#114]). | |
| 232 | -- Core: allow frontend detection earlier in the WordPress boot process allowing our `add_theme_support()`s to kick in based on whether we are on the frontend. | |
| 233 | -- Core: Fetch feeds based on their due date. This will allow adjusting feed fetch intervals individually for feeds ([#109]). | |
| 234 | -- Multisite: Improve activation code so that the friend roles should now be created more reliably on new multisite blogs ([#107]). | |
| 235 | -- Plugins: Add filters for the Friends roles plugin: `friends_plugin_roles`. | |
| 315 | +### 3.3.4 | |
| 316 | +- Reduce the size of the Follow link ([#472]) | |
| 317 | +- Fix unfollowing in Enable Mastodon Apps ([#471]) | |
| 318 | +- Bring back the collapse button for statuses ([#470]) | |
| 319 | +- Update plugins.json by @liviacarolgouvea ([#468]) | |
| 320 | +- Don't rewrite data URLs ([#467]) | |
| 321 | +- Prepare for the next Enable Mastodon Update ([#466]) | |
| 322 | +- Don't add domain for mentions ([#465]) | |
| 323 | +- Boosting: Show when there is a problem retrieving a URL ([#464]) | |
| 324 | +- Fix wrong link in User Notifications ([#462]) | |
| 325 | +- Don't double fetch URL for boosting ([#461]) | |
| 326 | +- Prevent 404s for static templates ([#452]) | |
| 327 | +- ActivityPub parser: avoid PHP warning by @jeherve ([#459]) | |
| 328 | +- Dashboard: make widget title translatable by @jeherve ([#457]) | |
| 329 | +- At A Glance messaging: ensure numbers are correctly displayed by @jeherve ([#458]) | |
| 330 | +- Prevent error when no summary is set ([#453]) | |
| 331 | +- Fix reversed Diff for post updates in the log ([#450]) | |
| 236 | 332 | |
| 237 | -### 2.0.2 | |
| 238 | -- Fix namespace on activation, deactivation and uninstall hooks | |
| 333 | +### 3.3.3 | |
| 334 | +- Remove the setting to change the post formats in the main query loop because it was confusing ([#446]) | |
| 335 | +- Protect posts that I have reacted on ([#447]) | |
| 336 | +- Fix Typo which prevented unannounces ([#443]) | |
| 337 | +- Plugins: Fix the More Details link ([#445]) | |
| 338 | +- Check the right user option about the follower e-mail ([#444]) | |
| 239 | 339 | |
| 240 | -### 2.0.1 | |
| 241 | -- Fix a problem with retrieving and up to date plugins.json file from Github | |
| 340 | +### 3.3.2 | |
| 341 | +- Fixed sending ActivityPub boosts ([#440]) | |
| 342 | +- Fixed deleting by global retention number ([#439]) | |
| 242 | 343 | |
| 243 | -### 2.0.0 | |
| 244 | -- Improved handling of updated feed items and how they are stored as revisions | |
| 245 | -- PHP: Introduced a namespace, changed the plugin hooks to friends_loaded and friends_load_parsers | |
| 246 | -- Add checks for diagnosing the correct functioning to Site Health | |
| 344 | +### 3.3.1 | |
| 345 | +- Fix some styling issues ([#437]) | |
| 346 | +- Fix FediPress installation ([#435]) | |
| 247 | 347 | |
| 248 | -### 1.9.1 | |
| 249 | -- Fix a fatal error | |
| 348 | +### 3.3.0 | |
| 349 | +- Styling Overhaul! ([#431]) | |
| 350 | +- Add the FediPress theme ([#433]) | |
| 351 | +- Incoming Feed Items: Fix in-article hash links ([#426]) | |
| 352 | +- Add more functions for a browser extension ([#427]) | |
| 353 | +- Browser Extension: API Key per user ([#429]) | |
| 354 | +- Fix parsing Pixelfed's Image attachments ([#430]) | |
| 355 | +- Add the friend's avatar to the page header ([#422]) | |
| 356 | +- Add inline follow link ([#432]) | |
| 357 | +- Log the newly supported ActivityPub events to the Friends Log ([#423]) | |
| 358 | +- Augment the ActivityPub New Follower E-Mail ([#434]) | |
| 250 | 359 | |
| 251 | -### 1.9.0 | |
| 252 | -- New feature: Keyword Matcher (get a notification if an incoming post contains keywords you can specify) | |
| 253 | -- New feature: Automatic status posts (automatically create draft status posts for certain events, they need to be published manually) | |
| 254 | -- Disable Gutenberg in messages until Gutenberg-Everywhere has been fixed | |
| 360 | +### 3.2.3 | |
| 361 | +- ActivityPub: Support update of posts and people ([#421]) | |
| 362 | +- Add support for ActivityPub Move activity ([#420]) | |
| 363 | +- Make tagged Friend Posts accessible ([#419]) | |
| 364 | +- Uninstall: Delete more taxonomy entries ([#415]) | |
| 365 | +- Standardize REST Error messages ([#413]) | |
| 366 | +- Use the ActivityPub blog user as an actor if set to blog profile only ([#411]) | |
| 367 | +- Add a Duplicate Remover ([#409]) | |
| 255 | 368 | |
| 256 | -### 1.8.5 | |
| 257 | -- Multisite: fix adding user to site instead of requiring a new username | |
| 369 | +### 3.2.2 | |
| 370 | +- Move permissions checks into a dedicated permission_callback ([#408]) | |
| 371 | +- Add more checks around friendships ([#407]) | |
| 258 | 372 | |
| 259 | -### 1.8.4 | |
| 260 | -- Fixes for a PHP fatal and some notices | |
| 373 | +Hoping that this hardening will bring back the plugin to the WordPress.org directory after [this issue](https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/friends/friends-321-missing-authorization) was reported. While I am unsure it qualified to get the plugin taken down, I've done some hardening and bugfixing in the above pull requests. Unfortunately it was not reported in a way that it could be patched in time. If you have a security issue to report, please follow the instructions on [https://github.com/akirk/friends/blob/main/SECURITY.md](https://github.com/akirk/friends/blob/main/SECURITY.md) and/or report through [https://github.com/akirk/friends/security](https://github.com/akirk/friends/security). | |
| 261 | 374 | |
| 262 | -### 1.8.3 | |
| 263 | -- Improve default feed selection when adding a friend | |
| 264 | -- Fix improper plugin directory when a friends plugin installed from Github | |
| 375 | +### 3.2.1 | |
| 376 | +- OPML Import: Support OPMLs without nesting ([#403]) | |
| 265 | 377 | |
| 266 | -### 1.8.2 | |
| 267 | -- Move plugin updater data to Github | |
| 378 | +### 3.2.0 | |
| 379 | +- Improve Translate Live compatibility ([#401]) | |
| 380 | +- Fix blog follower count in sidebar ([#400]) | |
| 268 | 381 | |
| 269 | -### 1.8.1 | |
| 270 | -- Fix whitespace missing in feed additions | |
| 382 | +### 3.1.9 | |
| 383 | +- Fix bug with loading the main theme ([#398]) | |
| 271 | 384 | |
| 272 | -### 1.8.0 | |
| 273 | -- Small bugfixes (main query modification, menu conflict, show the friends menu in wp-admin, allow regex to match post length) | |
| 274 | -- Use the Gutenberg editor for blog to blog messaging | |
| 385 | +### 3.1.8 | |
| 386 | +- Fix missing JavaScript on the frontend ([#396]) | |
| 275 | 387 | |
| 276 | -### 1.7.0 | |
| 277 | -- Add Emoji reactions | |
| 278 | -- Add blog to blog messaging | |
| 388 | +### 3.1.7 | |
| 389 | +- Add a theme selector ([#393]) | |
| 390 | +- Followers: Add Support for ActivityPub plugins blog profile ([#394]) | |
| 391 | +- Generate the suggested user login from the display name ([#395]) | |
| 279 | 392 | |
| 280 | -[Send to E-Reader plugin]: https://github.com/akirk/friends-send-to-e-reader | |
| 281 | -[#258]: https://github.com/akirk/friends/pull/258 | |
| 282 | -[#257]: https://github.com/akirk/friends/pull/257 | |
| 283 | -[#256]: https://github.com/akirk/friends/pull/256 | |
| 284 | -[#255]: https://github.com/akirk/friends/pull/255 | |
| 285 | -[#252]: https://github.com/akirk/friends/pull/252 | |
| 286 | -[#248]: https://github.com/akirk/friends/pull/248 | |
| 287 | -[#245]: https://github.com/akirk/friends/pull/245 | |
| 288 | -[#243]: https://github.com/akirk/friends/pull/243 | |
| 289 | -[#241]: https://github.com/akirk/friends/pull/241 | |
| 290 | -[#240]: https://github.com/akirk/friends/pull/240 | |
| 291 | -[#239]: https://github.com/akirk/friends/pull/239 | |
| 292 | -[#238]: https://github.com/akirk/friends/pull/238 | |
| 293 | -[#237]: https://github.com/akirk/friends/pull/237 | |
| 294 | -[#236]: https://github.com/akirk/friends/pull/236 | |
| 295 | -[#231]: https://github.com/akirk/friends/pull/231 | |
| 296 | -[#234]: https://github.com/akirk/friends/pull/234 | |
| 297 | -[#233]: https://github.com/akirk/friends/pull/233 | |
| 298 | -[#232]: https://github.com/akirk/friends/pull/232 | |
| 299 | -[#224]: https://github.com/akirk/friends/pull/224 | |
| 300 | -[#229]: https://github.com/akirk/friends/pull/229 | |
| 301 | -[#223]: https://github.com/akirk/friends/pull/223 | |
| 302 | -[#222]: https://github.com/akirk/friends/pull/222 | |
| 303 | -[#220]: https://github.com/akirk/friends/pull/220 | |
| 304 | -[#217]: https://github.com/akirk/friends/pull/217 | |
| 305 | -[#215]: https://github.com/akirk/friends/pull/215 | |
| 306 | -[#210]: https://github.com/akirk/friends/pull/210 | |
| 307 | -[#206]: https://github.com/akirk/friends/pull/206 | |
| 308 | -[#205]: https://github.com/akirk/friends/pull/205 | |
| 309 | -[#201]: https://github.com/akirk/friends/pull/201 | |
| 310 | -[#168]: https://github.com/akirk/friends/pull/168 | |
| 311 | -[#200]: https://github.com/akirk/friends/pull/200 | |
| 312 | -[#199]: https://github.com/akirk/friends/pull/199 | |
| 313 | -[#203]: https://github.com/akirk/friends/pull/203 | |
| 314 | -[#202]: https://github.com/akirk/friends/pull/202 | |
| 315 | -[#195]: https://github.com/akirk/friends/pull/195 | |
| 316 | -[#196]: https://github.com/akirk/friends/pull/196 | |
| 317 | -[#189]: https://github.com/akirk/friends/pull/189 | |
| 318 | -[#191]: https://github.com/akirk/friends/pull/191 | |
| 319 | -[#184]: https://github.com/akirk/friends/pull/184 | |
| 320 | -[#183]: https://github.com/akirk/friends/pull/183 | |
| 321 | -[#180]: https://github.com/akirk/friends/pull/180 | |
| 322 | -[#176]: https://github.com/akirk/friends/pull/176 | |
| 323 | -[#173]: https://github.com/akirk/friends/pull/173 | |
| 324 | -[#172]: https://github.com/akirk/friends/pull/172 | |
| 325 | -[#167]: https://github.com/akirk/friends/pull/167 | |
| 326 | -[#166]: https://github.com/akirk/friends/pull/166 | |
| 327 | -[#160]: https://github.com/akirk/friends/pull/160 | |
| 328 | -[#121]: https://github.com/akirk/friends/pull/121 | |
| 329 | -[#141]: https://github.com/akirk/friends/pull/141 | |
| 330 | -[#137]: https://github.com/akirk/friends/pull/137 | |
| 331 | -[#142]: https://github.com/akirk/friends/pull/142 | |
| 332 | -[#163]: https://github.com/akirk/friends/pull/163 | |
| 333 | -[#132]: https://github.com/akirk/friends/pull/132 | |
| 334 | -[#124]: https://github.com/akirk/friends/pull/124 | |
| 335 | -[#122]: https://github.com/akirk/friends/pull/122 | |
| 336 | -[#113]: https://github.com/akirk/friends/pull/113 | |
| 337 | -[#116]: https://github.com/akirk/friends/pull/116 | |
| 338 | -[#111]: https://github.com/akirk/friends/pull/111 | |
| 339 | -[#114]: https://github.com/akirk/friends/pull/114 | |
| 340 | -[#109]: https://github.com/akirk/friends/pull/109 | |
| 341 | -[#107]: https://github.com/akirk/friends/pull/107 | |
| 342 | -[activitypub#213]: https://github.com/pfefferle/wordpress-activitypub/pull/213 | |
| 343 | -[activitypub#172]: https://github.com/pfefferle/wordpress-activitypub/pull/172 | |
| 393 | +### 3.1.6 | |
| 394 | +- Site Health: Check if the cron job is enabled ([#391]) | |
| 395 | +- Fix starring of a friend ([#392]) | |
| 396 | +- Layout improvements props @liviagouvea in ([#384]) | |
| 397 | + | |
| 398 | +### 3.1.5 | |
| 399 | +- Fix next page articles attached in the wrong place ([#388]) | |
| 400 | +- Allow an extra redirect when discovering feeds ([#389]) | |
| 401 | + | |
| 402 | +### 3.1.4 | |
| 403 | +- Fix Warning: Undefined variable $account ([#385]) | |
| 404 | +- Fixes for Friend Messages ([#387]) | |
| 405 | +- Add Podcast Support ([#386]) | |
| 406 | + | |
| 407 | +### 3.1.3 | |
| 408 | +- Add AJAX refreshing of feeds ([#382]) | |
| 409 | +- Fix Fatal in the MF2 library ([#381]) | |
| 410 | + | |
| 411 | +### 3.1.2 | |
| 412 | +- Fix support for threads.net ([#378]) | |
| 413 | +- Add a warning if a user has not enabled ActivityPub on their threads.net account ([#377]) | |
| 414 | +- Upgrade and improve the MF2 library ([#374]) | |
| 415 | + | |
| 416 | +### 3.1.1 | |
| 417 | +- Improve Name Detection ([#372]) | |
| 418 | +- Add a Button to the Welcome page ([#373]) | |
| 419 | + | |
| 420 | +### 3.1.0 | |
| 421 | +- Add mark tag CSS to emails to ensure highlighting ([#365]) | |
| 422 | +- Only show the dashboard widgets if the user has enough permissions ([#368]) | |
| 423 | +- Prevent retrieving the same feed in parallel ([#366]) | |
| 424 | +- Add Friend: Use more info from the given URL ([#369]) | |
| 425 | +- Log ActivityPub actions and add the publish date to Announcements ([#364]) | |
| 426 | +- Improve OPML Support ([#370]) | |
| 427 | +- Update blueprints for previewing in WordPress Playground ([#371]) | |
| 428 | + | |
| 429 | +### 3.0.0 | |
| 430 | +- Show Mutual Followers and allow removing of followers ([#359]) | |
| 431 | +- Add an e-mail notification for new and lost followers ([#358]) | |
| 432 | +- Add the ability to disable notifications per post format and feed parser ([#357]) | |
| 433 | +- Fix 404 on the New private post widget props @liviacarolgouvea ([#361]) | |
| 434 | +- Improve ghost.org ActivityPub compatibility ([#356]) | |
| 435 | + | |
| 436 | +[#356]: https://github.com/akirk/friends/pull/356 | |
| 437 | +[#357]: https://github.com/akirk/friends/pull/357 | |
| 438 | +[#358]: https://github.com/akirk/friends/pull/358 | |
| 439 | +[#359]: https://github.com/akirk/friends/pull/359 | |
| 440 | +[#361]: https://github.com/akirk/friends/pull/361 | |
| 441 | +[#364]: https://github.com/akirk/friends/pull/364 | |
| 442 | +[#365]: https://github.com/akirk/friends/pull/365 | |
| 443 | +[#366]: https://github.com/akirk/friends/pull/366 | |
| 444 | +[#368]: https://github.com/akirk/friends/pull/368 | |
| 445 | +[#369]: https://github.com/akirk/friends/pull/369 | |
| 446 | +[#370]: https://github.com/akirk/friends/pull/370 | |
| 447 | +[#371]: https://github.com/akirk/friends/pull/371 | |
| 448 | +[#372]: https://github.com/akirk/friends/pull/372 | |
| 449 | +[#373]: https://github.com/akirk/friends/pull/373 | |
| 450 | +[#374]: https://github.com/akirk/friends/pull/374 | |
| 451 | +[#377]: https://github.com/akirk/friends/pull/377 | |
| 452 | +[#378]: https://github.com/akirk/friends/pull/378 | |
| 453 | +[#381]: https://github.com/akirk/friends/pull/381 | |
| 454 | +[#382]: https://github.com/akirk/friends/pull/382 | |
| 455 | +[#384]: https://github.com/akirk/friends/pull/384 | |
| 456 | +[#385]: https://github.com/akirk/friends/pull/385 | |
| 457 | +[#386]: https://github.com/akirk/friends/pull/386 | |
| 458 | +[#387]: https://github.com/akirk/friends/pull/387 | |
| 459 | +[#388]: https://github.com/akirk/friends/pull/388 | |
| 460 | +[#389]: https://github.com/akirk/friends/pull/389 | |
| 461 | +[#391]: https://github.com/akirk/friends/pull/391 | |
| 462 | +[#392]: https://github.com/akirk/friends/pull/392 | |
| 463 | +[#393]: https://github.com/akirk/friends/pull/393 | |
| 464 | +[#394]: https://github.com/akirk/friends/pull/394 | |
| 465 | +[#395]: https://github.com/akirk/friends/pull/395 | |
| 466 | +[#396]: https://github.com/akirk/friends/pull/396 | |
| 467 | +[#398]: https://github.com/akirk/friends/pull/398 | |
| 468 | +[#400]: https://github.com/akirk/friends/pull/400 | |
| 469 | +[#401]: https://github.com/akirk/friends/pull/401 | |
| 470 | +[#403]: https://github.com/akirk/friends/pull/403 | |
| 471 | +[#407]: https://github.com/akirk/friends/pull/407 | |
| 472 | +[#408]: https://github.com/akirk/friends/pull/408 | |
| 473 | +[#409]: https://github.com/akirk/friends/pull/409 | |
| 474 | +[#411]: https://github.com/akirk/friends/pull/411 | |
| 475 | +[#413]: https://github.com/akirk/friends/pull/413 | |
| 476 | +[#415]: https://github.com/akirk/friends/pull/415 | |
| 477 | +[#419]: https://github.com/akirk/friends/pull/419 | |
| 478 | +[#420]: https://github.com/akirk/friends/pull/420 | |
| 479 | +[#421]: https://github.com/akirk/friends/pull/421 | |
| 480 | +[#422]: https://github.com/akirk/friends/pull/422 | |
| 481 | +[#423]: https://github.com/akirk/friends/pull/423 | |
| 482 | +[#426]: https://github.com/akirk/friends/pull/426 | |
| 483 | +[#427]: https://github.com/akirk/friends/pull/427 | |
| 484 | +[#429]: https://github.com/akirk/friends/pull/429 | |
| 485 | +[#430]: https://github.com/akirk/friends/pull/430 | |
| 486 | +[#431]: https://github.com/akirk/friends/pull/431 | |
| 487 | +[#432]: https://github.com/akirk/friends/pull/432 | |
| 488 | +[#433]: https://github.com/akirk/friends/pull/433 | |
| 489 | +[#434]: https://github.com/akirk/friends/pull/434 | |
| 490 | +[#435]: https://github.com/akirk/friends/pull/435 | |
| 491 | +[#437]: https://github.com/akirk/friends/pull/437 | |
| 492 | +[#439]: https://github.com/akirk/friends/pull/439 | |
| 493 | +[#440]: https://github.com/akirk/friends/pull/440 | |
| 494 | +[#443]: https://github.com/akirk/friends/pull/443 | |
| 495 | +[#444]: https://github.com/akirk/friends/pull/444 | |
| 496 | +[#445]: https://github.com/akirk/friends/pull/445 | |
| 497 | +[#446]: https://github.com/akirk/friends/pull/446 | |
| 498 | +[#447]: https://github.com/akirk/friends/pull/447 | |
| 499 | +[#450]: https://github.com/akirk/friends/pull/450 | |
| 500 | +[#452]: https://github.com/akirk/friends/pull/452 | |
| 501 | +[#453]: https://github.com/akirk/friends/pull/453 | |
| 502 | +[#457]: https://github.com/akirk/friends/pull/457 | |
| 503 | +[#458]: https://github.com/akirk/friends/pull/458 | |
| 504 | +[#459]: https://github.com/akirk/friends/pull/459 | |
| 505 | +[#461]: https://github.com/akirk/friends/pull/461 | |
| 506 | +[#462]: https://github.com/akirk/friends/pull/462 | |
| 507 | +[#463]: https://github.com/akirk/friends/pull/463 | |
| 508 | +[#464]: https://github.com/akirk/friends/pull/464 | |
| 509 | +[#465]: https://github.com/akirk/friends/pull/465 | |
| 510 | +[#466]: https://github.com/akirk/friends/pull/466 | |
| 511 | +[#467]: https://github.com/akirk/friends/pull/467 | |
| 512 | +[#468]: https://github.com/akirk/friends/pull/468 | |
| 513 | +[#470]: https://github.com/akirk/friends/pull/470 | |
| 514 | +[#471]: https://github.com/akirk/friends/pull/471 | |
| 515 | +[#472]: https://github.com/akirk/friends/pull/472 | |
| 516 | +[#473]: https://github.com/akirk/friends/pull/473 | |
| 517 | +[#474]: https://github.com/akirk/friends/pull/474 | |
| 518 | +[#475]: https://github.com/akirk/friends/pull/475 | |
| 519 | +[#476]: https://github.com/akirk/friends/pull/476 | |
| 520 | +[#477]: https://github.com/akirk/friends/pull/477 | |
| 521 | +[#478]: https://github.com/akirk/friends/pull/478 | |
| 522 | +[#480]: https://github.com/akirk/friends/pull/480 | |
| 523 | +[#482]: https://github.com/akirk/friends/pull/482 | |
| 524 | +[#483]: https://github.com/akirk/friends/pull/483 | |
| 525 | +[#484]: https://github.com/akirk/friends/pull/484 | |
| 526 | +[#489]: https://github.com/akirk/friends/pull/489 | |
| 527 | +[#490]: https://github.com/akirk/friends/pull/490 | |
| 528 | +[#492]: https://github.com/akirk/friends/pull/492 | |
| 529 | +[#493]: https://github.com/akirk/friends/pull/493 | |
| 530 | +[#494]: https://github.com/akirk/friends/pull/494 | |
| 531 | +[#496]: https://github.com/akirk/friends/pull/496 | |
| 532 | +[#497]: https://github.com/akirk/friends/pull/497 | |
| 533 | + | |
| 534 | +[#500]: https://github.com/akirk/friends/pull/500 | |
| 535 | + | |
| 536 | +[#501]: https://github.com/akirk/friends/pull/501 | |
| 537 | +[#504]: https://github.com/akirk/friends/pull/504 | |
| 538 | +[#505]: https://github.com/akirk/friends/pull/505 | |
| 539 | + | |
| 540 | +[#506]: https://github.com/akirk/friends/pull/506 | |
| 541 | +[#507]: https://github.com/akirk/friends/pull/507 | |
| 542 | +[#508]: https://github.com/akirk/friends/pull/508 | |
| 543 | + | |
| 544 | +[#510]: https://github.com/akirk/friends/pull/510 | |
| 545 | + | |
| 546 | +[#517]: https://github.com/akirk/friends/pull/517 | |
| 547 | +[#518]: https://github.com/akirk/friends/pull/518 | |
| 548 | +[#519]: https://github.com/akirk/friends/pull/519 | |
| 549 | + | |
| 550 | +[#520]: https://github.com/akirk/friends/pull/520 | |
| 551 | +[#521]: https://github.com/akirk/friends/pull/521 | |
| 552 | +[#522]: https://github.com/akirk/friends/pull/522 | |
| 553 | + | |
| 554 | +[#524]: https://github.com/akirk/friends/pull/524 | |
| 555 | +[#525]: https://github.com/akirk/friends/pull/525 | |
| 556 | + | |
| 557 | +[#530]: https://github.com/akirk/friends/pull/530 | |
| 558 | +[#531]: https://github.com/akirk/friends/pull/531 | |
| 559 | +[#532]: https://github.com/akirk/friends/pull/532 | |
| 560 | +[#533]: https://github.com/akirk/friends/pull/533 | |
| 561 | +[#534]: https://github.com/akirk/friends/pull/534 | |
| 562 | +[#535]: https://github.com/akirk/friends/pull/535 | |
| 563 | +[#536]: https://github.com/akirk/friends/pull/536 | |
| 564 | +[#537]: https://github.com/akirk/friends/pull/537 | |
| 565 | +[#538]: https://github.com/akirk/friends/pull/538 | |
| 566 | + | |
| 567 | +[#539]: https://github.com/akirk/friends/pull/539 | |
| 568 | +[#540]: https://github.com/akirk/friends/pull/540 | |
| 569 | +[#543]: https://github.com/akirk/friends/pull/543 | |
| 570 | +[#544]: https://github.com/akirk/friends/pull/544 | |
| 571 | +[#545]: https://github.com/akirk/friends/pull/545 | |
| 572 | +[#546]: https://github.com/akirk/friends/pull/546 | |
| 573 | +[#362]: https://github.com/akirk/friends/pull/362 | |
| 574 | +[#515]: https://github.com/akirk/friends/pull/515 | |
| 575 | +[#516]: https://github.com/akirk/friends/pull/516 | |
| 576 | +[#547]: https://github.com/akirk/friends/pull/547 | |
| 577 | +[#551]: https://github.com/akirk/friends/pull/551 | |
| 578 | +[#553]: https://github.com/akirk/friends/pull/553 | |
| 579 | +[#559]: https://github.com/akirk/friends/pull/559 | |
| 580 | +[#562]: https://github.com/akirk/friends/pull/562 | |
| 581 | +[#566]: https://github.com/akirk/friends/pull/566 | |
| 582 | +[#567]: https://github.com/akirk/friends/pull/567 | |
| 583 | +[#571]: https://github.com/akirk/friends/pull/571 | |
| 584 | +[#574]: https://github.com/akirk/friends/pull/574 | |
| 585 | +[#575]: https://github.com/akirk/friends/pull/575 | |
| 586 | +[#576]: https://github.com/akirk/friends/pull/576 | |
| 587 | +[#577]: https://github.com/akirk/friends/pull/577 | |
| 588 | +[#578]: https://github.com/akirk/friends/pull/578 | |
| 589 | +[#579]: https://github.com/akirk/friends/pull/579 | |
| 590 | +[#580]: https://github.com/akirk/friends/pull/580 | |
| 591 | +[#581]: https://github.com/akirk/friends/pull/581 | |
| 592 | +[#583]: https://github.com/akirk/friends/pull/583 | |
| 593 | +[#585]: https://github.com/akirk/friends/pull/585 | |
| 594 | +[#586]: https://github.com/akirk/friends/pull/586 | |
| 595 | +[#587]: https://github.com/akirk/friends/pull/587 | |
| 596 | +[#592]: https://github.com/akirk/friends/pull/592 | |
| 597 | +[#598]: https://github.com/akirk/friends/pull/598 | |
| 598 | +[#599]: https://github.com/akirk/friends/pull/599 | |
| 599 | +[#600]: https://github.com/akirk/friends/pull/600 | |
| 600 | +[#601]: https://github.com/akirk/friends/pull/601 | |
| 601 | +[#603]: https://github.com/akirk/friends/pull/603 | |
| 602 | +[#604]: https://github.com/akirk/friends/pull/604 | |
| 603 | +[#605]: https://github.com/akirk/friends/pull/605 | |
| 604 | +[#607]: https://github.com/akirk/friends/pull/607 | |
| 605 | + | |
| 606 | +[#610]: https://github.com/akirk/friends/pull/610 | |
| 607 | +[#612]: https://github.com/akirk/friends/pull/612 | |
| 608 | +[#613]: https://github.com/akirk/friends/pull/613 | |
| 609 | +[#614]: https://github.com/akirk/friends/pull/614 | |
| 610 | +[#615]: https://github.com/akirk/friends/pull/615 | |
| 611 | +[#616]: https://github.com/akirk/friends/pull/616 | |
| 612 | +[#617]: https://github.com/akirk/friends/pull/617 | |
| 613 | +[#620]: https://github.com/akirk/friends/pull/620 | |
| 614 | +[#621]: https://github.com/akirk/friends/pull/621 | |
| 615 | +[#622]: https://github.com/akirk/friends/pull/622 | |
| 616 | + | |
| 617 | +[#623]: https://github.com/akirk/friends/pull/623 | |
| 618 | +[#624]: https://github.com/akirk/friends/pull/624 | |
| 619 | +[#625]: https://github.com/akirk/friends/pull/625 | |
| 620 | +[#627]: https://github.com/akirk/friends/pull/627 | |
| 621 | +[#628]: https://github.com/akirk/friends/pull/628 | |
| 622 | +[#629]: https://github.com/akirk/friends/pull/629 | |
| 623 | + | |
| 624 | +[#630]: https://github.com/akirk/friends/pull/630 | |
| 625 | +[#631]: https://github.com/akirk/friends/pull/631 | |
| 626 | +[#632]: https://github.com/akirk/friends/pull/632 | |
| 627 | + | |
| 628 | +[#634]: https://github.com/akirk/friends/pull/634 | |
| 629 | + | |
| 630 | +[#636]: https://github.com/akirk/friends/pull/636 | |
| 631 | +[#637]: https://github.com/akirk/friends/pull/637 | |
| 632 | +[#638]: https://github.com/akirk/friends/pull/638 | |
| 633 | +[#639]: https://github.com/akirk/friends/pull/639 | |
| 634 | +[#641]: https://github.com/akirk/friends/pull/641 | |
| 635 | +[#642]: https://github.com/akirk/friends/pull/642 | |
| 636 | +[#643]: https://github.com/akirk/friends/pull/643 | |
| 637 | +[#644]: https://github.com/akirk/friends/pull/644 | |
| 638 | +[#646]: https://github.com/akirk/friends/pull/646 | |
| 639 | +[#647]: https://github.com/akirk/friends/pull/647 | |
| 640 | +[#649]: https://github.com/akirk/friends/pull/649 | |
| 641 | +[#650]: https://github.com/akirk/friends/pull/650 | |
| 642 | +[#651]: https://github.com/akirk/friends/pull/651 | |
| 643 | + | |
| 644 | +[#653]: https://github.com/akirk/friends/pull/653 | |
| 645 | +[#655]: https://github.com/akirk/friends/pull/655 | |
| 646 | +[#656]: https://github.com/akirk/friends/pull/656 | |
| 647 | +[#657]: https://github.com/akirk/friends/pull/657 | |
| 648 | +[#658]: https://github.com/akirk/friends/pull/658 | |
| 649 | +[#659]: https://github.com/akirk/friends/pull/659 | |
| 650 | +[#661]: https://github.com/akirk/friends/pull/661 | |
| 651 | + | |
| 652 | +[#663]: https://github.com/akirk/friends/pull/663 | |
| 653 | +[#664]: https://github.com/akirk/friends/pull/664 | |
| 654 | +[#665]: https://github.com/akirk/friends/pull/665 | |
| 655 | +[#666]: https://github.com/akirk/friends/pull/666 | |
| 656 | +[#667]: https://github.com/akirk/friends/pull/667 | |
| 657 | +[#668]: https://github.com/akirk/friends/pull/668 | |
| 658 | +[#669]: https://github.com/akirk/friends/pull/669 | |
| 659 | + | |
| 660 | +[#671]: https://github.com/akirk/friends/pull/671 | |
| 661 | +[#672]: https://github.com/akirk/friends/pull/672 | |
| 662 | +[#673]: https://github.com/akirk/friends/pull/673 | |
| 663 | +[#674]: https://github.com/akirk/friends/pull/674 | |
| 664 | +[#675]: https://github.com/akirk/friends/pull/675 | |
| 665 | +[#676]: https://github.com/akirk/friends/pull/676 | |
| 666 | +[#677]: https://github.com/akirk/friends/pull/677 | |
| 667 | +[#678]: https://github.com/akirk/friends/pull/678 | |
| 668 | +[#679]: https://github.com/akirk/friends/pull/679 | |
| 669 | + | |
| 670 | +[#681]: https://github.com/akirk/friends/pull/681 | |
| 671 | +[#683]: https://github.com/akirk/friends/pull/683 | |
| 672 | +[#684]: https://github.com/akirk/friends/pull/684 | |
| 673 | +[#685]: https://github.com/akirk/friends/pull/685 | |
| 674 | +[#686]: https://github.com/akirk/friends/pull/686 | |
| 675 | +[#687]: https://github.com/akirk/friends/pull/687 | |
| 676 | +[#688]: https://github.com/akirk/friends/pull/688 | |
| 677 | +[#689]: https://github.com/akirk/friends/pull/689 | |
| 678 | +[#690]: https://github.com/akirk/friends/pull/690 | |
| 679 | +[#691]: https://github.com/akirk/friends/pull/691 | |
| 680 | + | |
| 681 | +[#693]: https://github.com/akirk/friends/pull/693 | |
| 682 | +[#694]: https://github.com/akirk/friends/pull/694 | |
| 683 | +[#695]: https://github.com/akirk/friends/pull/695 | |
| 684 | +[#696]: https://github.com/akirk/friends/pull/696 | |
| 685 | +[#703]: https://github.com/akirk/friends/pull/703 | |
| 686 | +[#704]: https://github.com/akirk/friends/pull/704 | |
| 687 | +[#705]: https://github.com/akirk/friends/pull/705 | |
| 688 | +[#707]: https://github.com/akirk/friends/pull/707 | |
| 689 | +[#709]: https://github.com/akirk/friends/pull/709 | |
| 690 | + | |
| 691 | +[#711]: https://github.com/akirk/friends/pull/711 | |
| 692 | +[#712]: https://github.com/akirk/friends/pull/712 | |
| 693 | +[#714]: https://github.com/akirk/friends/pull/714 | |
| 694 | + | |
| 695 | +[#718]: https://github.com/akirk/friends/pull/718 | |
| 696 | +[#719]: https://github.com/akirk/friends/pull/719 | |
| 697 | + | |
| 698 | +[#721]: https://github.com/akirk/friends/pull/721 | |
| 699 | +[#722]: https://github.com/akirk/friends/pull/722 | |
| 700 | +[#723]: https://github.com/akirk/friends/pull/723 | |
| 701 | +[#724]: https://github.com/akirk/friends/pull/724 | |
| 702 | +[#725]: https://github.com/akirk/friends/pull/725 | |
| 703 | +[#726]: https://github.com/akirk/friends/pull/726 | |
| 704 | +[#727]: https://github.com/akirk/friends/pull/727 | |
| 705 | +[#728]: https://github.com/akirk/friends/pull/728 | |
| 706 | +[#729]: https://github.com/akirk/friends/pull/729 | |
| 707 | +[#730]: https://github.com/akirk/friends/pull/730 | |
| 708 | +[#731]: https://github.com/akirk/friends/pull/731 | |
| 709 | +[#732]: https://github.com/akirk/friends/pull/732 | |
| 710 | +[#733]: https://github.com/akirk/friends/pull/733 | |
| 711 | +[#734]: https://github.com/akirk/friends/pull/734 | |