Key Changes​

This new release brings many new features to Invision Community.

Additional Information​

Security

  • Added a new Referrer-Policy setting to allow the admin to control whether a Referrer-Policy header of strict-origin-when-cross-origin is explicitly used.
  • Added recommendation through an AdminCP notification to disable display name logins to mitigate username enumeration + brute force attack attempts.
  • Improved handling of areas that may allow username or email address enumeration.
  • Improved image upload handling to strip sensitive EXIF data.
  • Fixed an issue where NULL byte sequences in uploaded filenames could be erroneously allowed.
  • Fixed an SQL error that could be triggered by manipulating certain requests.
  • Fixed an issue where moderators could potentially execute arbitrary PHP code if the Pages application is installed.
  • Fixed certain scenarios where the CSRF token could be captured by external parties.
  • Fixed an SSRF when generating class names dynamically. *
  • Fixed an issue where stream RSS keys could be easily predictable in certain cases.
Core

  • Fixed an issue where guests logging in may be inadvertently redirected to a page displaying javascript source code
  • Added logging to Member History when adding or removing a member from a club.
  • Fixed an issue where some communities may see an old test bulletin when upgrading.
  • Removed the ability to set poll vote counts directly
  • Fixed theme conflicting checking potentially throwing an error before upgrading on PHP 8.
  • Fixed an issue where using the browser's back button would not reload profile content.
  • Fixed a niche issue where some widgets may show an error after deleting a member group.
  • Fixed an issue where clearing site caches on the Health Dashboard requires working Javascript.
  • Fixed an issue where the ACP-Support tools would show an error after Ticket Submission even if the ticket was submitted successfully.
  • Fixed an issue where the Achievement notification settings in the ACP and Frontend would be shown on systems where achievements were disabled globally.
  • Fixed an issue where a loading icon would appear in the top left pf profile views due to unneccessary URL requests being made.
  • Fixed an issue where a single image page builder widget did not honour the max-height setting.
  • Fixed an issue where the system would import achievement rules for not installed applications.
  • Fixed an issue involving a missing language string under the Storage Settings area in the AdminCP for badges.
  • Fixed an issue where a mobile menu template error may show if sub items are not links.
  • Fixed an issue where Admins were unable to view Club content when rules are required to be accepted.
  • Fixed an issue with outgoing SendGrid emails.
  • Fixed an issue where sending a request with the If-Modified-Since header set to an invalid timestamp causes an uncaught error
  • Fixed an issue where Admins were unable to view Club content when rules are required to be accepted.
  • Fixed an issue with outgoing SendGrid emails.
  • Fixed an issue with a mis-spelling of "achievement" in the achievement rebuild area in the AdmnCP.
  • Fixed an issue that caused legacy upgrades to error-out under certain circumstances when using PHP 8.
  • Fixed an issue where the active users widget may show the wrong information.
  • Fixed an issue with a mis-spelling of "achievement" in the achievement rebuild area in the AdminCP.
  • Fixed issues encountered when upgrading from a legacy version of IP.Board.
  • Fixed an issue with a mis-spelling of "achievement" in the achievement rebuild area in the AdmnCP.
  • Fixed an issue that caused legacy upgrades to error-out under certain circumstances when using PHP 8.
  • Fixed broken ACP Permission checks for the badges page.
  • Fixed an issue where webhook requests would be fired twice under certain circumstances.
  • Changed the Download for a Language to open as a modal when showing additional settings.
  • Fixed an issue where a member would see a 404 error when loading a comment that they didn't have access to
  • Fixed Third Party plugins not being included in the list of third party hooks in the Support Dashboard.
  • Added support for web push notifications.
  • Implemented a new AdminCP support Health Dashboard in place of the support tool.
  • Improved uploader UI across the suite.
  • Added support for Emoji 13.0 emojis.
  • Added support for WebShare API.
  • Added an option to disable relative dates.
  • Improved security of AdminCP member list.
  • Improved security of attachments for guests.
  • Improved performance of attachment lookups in the editor.
  • Improved performance of the Followed Content activity stream.
  • Improved performance of handling custom meta tags.
  • Improved randomization of randomly sorted content feed widgets.
  • Improved performance of session handling.
  • Improved upgrade error messages.
  • Added a simple offline page, displayed when users have no internet connection.
  • Improved performance of Emoji menu in the editor.
  • Added support for PHP 8.
  • Added support for uploaded webp images (if the server's image handling software supports webp).
  • Added incoming and outgoing email addresses to the new installation onboarding wizard.
  • Added additional options for handling media enclosures in imported RSS feeds.
  • Added support for anonymous posting.
  • Added a block to user profiles to show the number of solutions the member has submitted, and a page to view all solutions.
  • Added ability to search by email address when looking for members in the Moderator CP for moderators with permission to view email addresses.
  • Added a new notification when content is approved.
  • Added new option for \IPS\OUTPUT_CACHE_METHOD to disable output caching, but still send cache headers.
  • Added support for s-maxage, stale-if-error, stale-while-revalidate cache-control directives.
  • Added a link to re-enable a disabled messenger on mobile.
  • Added pruning of IP addresses for stored ratings based on the AdminCP IP address pruning configuration.
  • Added some AdminCP search keywords. Added ability to pay renewal invoices in the AdminCP Marketplace.
  • Added native lazy loading attribute for user profile images and reactions.
  • Added canonical tag for Leaderboard > Past Leaders page.
  • Added a missing language string for the administrators permissions.
  • Separated "Reaction" and "My Stuff" notification preferences so that reaction notifications can be controlled separately.
  • Improved page performance metrics by adding font-display style to FontAwesome and preloading woff2 font file.
  • Reintroduced the ability to automatically embed Facebook and Instagram links in posts.
  • Changed AdminCP sessions to be valid for up to 1 hour by default.
  • Changed most multi-select form inputs in the AdminCP to checkbox sets.
  • Changed IP banning to not be run for guests.
  • Changed warning point verbiage to use numeric pluralization to better support non-English languages.
  • Changed the way how the widget manager send the data to resolve an error when too many widgets are placed on the page.
  • Changed file storage configuration manager to prevent Community In The Cloud clients from selecting filesystem storage handlers.
  • Changed the email in the profile hovercard into a mailto link
  • Improved 304 response caching removing database connection.
  • Improved pluralized verbiage for automatic moderation.
  • Implemented caching for "Active Users" and "Who's Online" blocks.
  • Implemented a minor performance improvement when fetching groups.
  • Improved performance of staff directory page by removing unnecessary queries.
  • Improved performance of the ModeratorCP where hidden posts are listed.
  • Improved performance of multi-moderation actions.
  • Improved performance of sending emails to multiple recipients when there are promote items to be included.
  • Improved inline quoting to account for text copied from code blocks.
  • Updated WordPress login handler to use new Miniorange OAuth server endpoints.
  • Moved the "Tags" text color theme setting to the "Front End Colors" tab.
  • Adjusted guest posts that require approval to not show the post pending approval.
  • Adjusted caching headers for guests in some areas.
  • Improved reliability of address autocomplete.
  • Improved WordPress OAuth for WordPress servers that do not allow the authorization HTTP header.
  • Improved speed of re-indexing some content items after moderation.
  • Improved performance of marking something as read in some cases.
  • Improved soft deleting comments/reviews to remove code duplication.
  • Improved rich embedding to support embedding of short links provided by the TikTok app (vm.tiktok.com links).
  • Improved the appearance of the Notification Settings screen.
  • Clarified the purpose of the Date field when configuring an Activity Stream block.
  • Fixed a long-standing issue where pagination would not show on tables after AJAX requests where the page did not contain pagination when first loaded.
  • Fixed "Post Before Registering" + word filters set to hold the content for moderator approval working together.
  • Fixed “Unlimited” not working for “Maximum image dimensions to save” setting.
  • Fixed an issue where the wrong author may be notified when a comment or review is embedded.
  • Fixed an issue specify dimensions for images in posts manually.
  • Fixed an issue where items to be moderated are not reflected in the interface when moving to other pages.
  • Fixed a potential javascript error when a broken video is posted.
  • Fixed unhiding topics from edit screen.
  • Fixed bad admin logs when managing group administrators and moderators in the AdminCP.
  • Fixed an issue where pruning members or mass moving members to a new group can result in an old cached group count still displaying in the AdminCP.
  • Fixed exact word filters requiring moderator approval resulting in the word being stripped from the title instead of triggering moderator approval.
  • Fixed posting a status update taking a long time if the user has a lot of followers.
  • Fixed Authy setup on Firefox.
  • Fixed web manifest not working when the site is in offline mode.
  • Fixed an issue where the "Can login anonymously" group setting may not apply as expected when a user belongs to more than one group.
  • Fixed incorrect timezone detection for users in Argentina.
  • Fixed an issue where certain custom profile fields would not be formatted when exporting the member list from the AdminCP.
  • Fixed some UI issues with right-to-left languages.
  • Fixed an issue where moving a read content item to a new container results in it becoming unread.
  • Fixed pressing ctrl/cmd+enter multiple times causing duplicate posts.
  • Fixed image dialog in editor not showing correctly on iOS.
  • Fixed an issue where profanity filters set to hold content for moderator approval may apply against the previous content instead of the new content when editing a content item.
  • Fixed an issue with specific CKEditor plugins for Community In The Cloud clients.
  • Fixed orphaned files being left over when deleting custom fields throughout the Suite.
  • Fixed orphaned files being left over in some cases when uninstalling applications.
  • Fixed a performance issue viewing "Unread Content" activity streams in some configurations.
  • Fixed an issue handling dates associated with ratings for content.
  • Fixed images pasted into editor sometimes being inserted in wrong location.
  • Fixed an RTL display issue with the caret arrow connecting an editor with a profile photo.
  • Fixed an RTL display issue with the attachment box in posts.
  • Fixed an issue where pasting links in Microsoft Edge may not allow them to embed.
  • Fixed an issue where the link to disable your messenger was not displaying.
  • Fixed opacity of button after repositining cover image.
  • Fixed a minor issue where Community in the Cloud clients could see a countdown timer that says "You may continue in 0:010 seconds".
  • Fixed the not translatable enabled/disabled string in the moderator history for comment approval enabled/disabled log entries.
  • Fixed the "Preview" button in an editor potentially causing attachments to be associated with the wrong post.
  • Fixed an issue where the UTF-8 converter "Fix collations" process may get stuck if it times out on a large table.
  • Fixed an issue where the DeleteImageProxyFiles task would never finish or not update its progress appropriately .
  • Fixed some invalid CSS syntax.
  • Fixed an issue with the deletecontent task that can cause the task to lock when ran via cron.
  • Fixed an issue moving Icons & Logos to a new storage handler when one or more of the images is broken.
  • Fixed certain activity statistics showing inaccurate previous period values.
  • Fixed an issue where users may be able to bypass image restrictions in signatures.
  • Fixed a bug where exact profanity filters were treated case sensitive.
  • Fixed an issue where status update pagination may not work correctly.
  • Fixed an issue where URLs in editor fields may be corrupted when exporting member lists.
  • Fixed an issue where attachments may inadvertently force a post into moderation when Link Moderation is enabled.
  • Fixed an issue where Plugins & Languages may not show an update is available.
  • Fixed an issue where updating plugins will leave deleted or renamed javascript files behind.
  • Fixed an issue where the core_output_cache table size could get very large.
  • Fixed a bug with pagination links when viewing a member's list of ignored members.
  • Fixed a bug where the member list export process may show a percentage complete greater than 100.
  • Fixed an issue where unbroken words can break email layouts.
  • Fixed an issue where customized email templates do not inherit template parameter changes during upgrade.
  • Fixed an issue specify dimensions for images in posts manually.
  • Fixed an error upgrading third party applications on Community In The Cloud accounts in some cases.
  • Fixed an issue where it was not possible to login through OAuth if the OAuth server had guest access disabled.
  • Fixed an RTL display issue with the caret arrow connecting an editor with a profile photo.
  • Fixed an issue where numeric fields could be incorrectly treated as incomplete during profile completion.
  • Fixed an issue where too many cookies could be set when using custom profile fields with editors in them.
  • Fixed an issue where the email failure AdminCP notification may mistakingly be sent even when other emails are sending correctly.
  • Fixed an issue where creating a ban filter would break with IN_DEV being enabled.
  • Fixed an issue where the login form may not redirect the user to their original location in some situations.
  • Fixed an error that can occur when a Marketplace login expires.
  • Fixed a bug where RSS imports may create a broken image depending upon the "Maximum image dimensions to save" configuration.
  • Fixed a bug where the fontsize template plugin may return an invalid value when certain language packs are used.
  • Fixed an error with the REST API reference page when a referenced application is not installed.
  • Fixed a potential issue that can occur when the Sitemap generator runs via cron.
  • Fixed a javascript error that can occur in the AdminCP when using custom analytics tracking codes.
  • Fixed an issue where item counts could be unreadable in the moderator control panel IP tools on small displays.
  • Fixed an issue where the layout for the move dialog could be broken with long container names.
  • Fixed an issue where the move members task could stop working when the target group doesn't exist.
  • Fixed moderator permission checks in report center.
  • Fixed an issue with structured data throughout the Suite for users with automatically generated letter photos.
  • Fixed an error viewing reports that had comments.
  • Fixed a display issue that can occur when a spoiler is found inside a quote.
  • Fixed a bug where comments from ignored users may display incorrectly when added to a comment stream from an inline notification (i.e. "View new post" within a topic you are viewing).
  • Fixed editing code blocks inside certain other elements (such as spoilers) adding extra line breaks.
  • Fixed club cover photos becoming orphaned when the club is deleted.
  • Fixed member cover photos becoming orphaned when the member is deleted.
  • Fixed an issue where it was not possible to report content items unless the member group was set to be able to report all content types.
  • Fixed an issue where meta descriptions could have quotes stripped.
  • Fixed an issue dismissing upgrade notifications if the page has not finished loading yet.
  • Fixed an issue that can occur if a license check fails.
  • Fixed an issue where sub-nodes would not load on a chart's custom form.
  • Fixed an issue where comments may be added to a comment feed (such as posts within a topic) more than once when clicking the link to show new replies.
  • Fixed a bug where code syntax highlighting in a post may incorrectly highlight code in a language other than the chosen one.
  • Fixed the Warning Action form throwing an error while IN_DEV.
  • Fixed an issue where some status update functionality may still show if the status module is disabled.
  • Fixed streams showing read content when they should only show unread content on occasion.
  • Fixed streams allowing "all" to be specified for date range when using MySQL search, which is restricted to the last 365 days.
  • Fixed automatic linking of URLs in posts not working after emptying browser storage.
  • Fixed an issue where the moderator control panel could throw an error if status update reports were present.
  • Fixed share link not being auto-selected for easy copying when the dialog to share a comment is opened.
  • Fixed a link that can cause the page title to be removed resulting in the current URL displaying as the page title in the browser.
  • Fixed a javascript error that can occur upon selecting a Pixabay image from the "Choose stock photo" selector.
  • Fixed an issue where the 'Expand' link on collapsed quotes could appear twice when a comment is added to the page.
  • Fixed an issue where icons overlap on blocks in the Admin CP statistics areas.
  • Fixed an issue where quotes split in the editor with a double-enter keystroke would not retain quote data or notify original author correctly.
  • Fixed an issue when logging in with LinkedIn.
  • Fixed certain hidden content such as empty widgets not always being hidden.
  • Fixed an issue where the Tag autocomplete field in certain situations (e.g. Gallery submission screen) would have a misplaced results dropdown.
  • Fixed an issue where search result snippets may not have shown the relevant text containing the matched search term.
  • Fixed an issue where quoting a user whose username has a leading zero would cause the zero to be dropped when the quote is displayed.
  • Fixed an issue where spacing around embedded images in an email may not accurately reflect how it appeared in the editor.
  • Fixed an issue where the AdminCP upgrader would not update the versions of disabled applications.
  • Fixed an issue where Mapbox maps could show both a clustered group of markers and single items in the same view.
  • Fixed a bug where viewing streams with custom parameters to adjust the filters will not display the correct results when clicking the "Load More" button.
  • Fixed an error when attempting to force a password reset for a member with no current password.
  • Fixed an issue displaying the current notification preferences overview when MySQL read/write separation is used.
  • Fixed an issue when viewing/updating legacy 3.x applications via Marketplace.
  • Fixed report center comments not having the image proxy stripped when upgrading from previous versions.
  • Fixed Google Adsense code being stripped from posts even if submitted with HTML posting allowed.
  • Fixed an error when disabling languages in some circumstances.
  • Fixed guests not able to report content if using Keycaptcha.
  • Fixed attachments in translatable fields.
  • Fixed an issue with lazy loading in certain situations and certain locales.
  • Fixed an issue with the mobile navigation menu where parent items with unique links would not show as clickable sub-items.
  • Fixed "Stop all email notifications" not disabling digests.
  • Optimized the staff directory to reduce page loading times.
  • Fixed some broken AdminCP live search results on CiC.
  • Fixed the background color of ACP Drop Areas and the color of treelist links for the AdminCP dark theme.
  • Fixed an issue where radio form element descriptions may be misaligned.
  • Fixed an issue with an error message not showing the folder name when plugin installation fails.
  • Fixed an issue where some external links did not open in a new window despite the relevant setting being enabled.
  • Fixed an invalid Open Graph type tag being specified.
  • Fixed a missing confirmation when deleting content via the moderator approval queue.
  • Fixed an issue where status update notification text could be inaccurate.
  • Fixed certain options available for custom streams not working as expected.
  • Fixed an issue where status update notification text could be inaccurate.
  • Fixed a false positive report that images raise security exceptions in some cases.
  • Fixed the "•••" button in the author response being always displayed, even if the logged in member can't edit or delete the response.
  • Fixed Search Activity Statistics resulting in an error due to a MySQL issue in some cases.
  • Fixed content pagination not populating correctly in some applications with restricted moderators.
  • Fixed a bug where resizing a window could result in a horizontal scrollbar when an upload widget exists on the page.
  • Fixed a DB error happening when somebody tries to post too many data to a textarea field.
  • Fixed an issue where Safari may reload each page after the user logs out.
  • Fixed messenger link still displaying on profiles on mobile devices if the user does not have permission to access the messenger module.
  • Fixed an issue where the number short format wouldn't work after a language import.
  • Fixed an issue where club custom fields would show autosave values for different clubs.
  • Fixed an uncaught exception when following a malformed "follow" URL.
  • Fixed inline moderator actions in content items showing the wrong moderator name in some circumstances.
  • Fixed an issue where referral cookies may not be set when guests view a page served from the cache.
  • Fixed an issue where referrals from deleted members could cause an error.
  • Fixed an issue where member exports can contain html for profile fields.
  • Fixed chunk uploading when using Amazon S3 with some S3-compatible providers.
  • Fixed broken 3rd party ACP permissions on CiC.
  • Fixed a typo when flagging a member as a spammer.
  • Fixed an issue where editor contents may be lost or incorrect when paginating through a topic and using the editor on different pages.
  • Fixed an issue where font-awesome <i> tags submitted in source mode are stripped by CKEditor.
  • Fixed an issue where AdminCP theme resource may continously be written to disk.
  • Fixed statistical charts not working in some locales.
  • Fixed sitemaps not generating properly.
  • Upgraded CKEditor to 4.16.
  • Optimized Redis when storing data and sessions.
  • Removed the mobile "hamburger" menu on mobile pages, which was inadvertently added on 4.5.
  • Removed unnecessary Pragma header where used.
  • Removed HTML5 shiv in AdminCP.
  • Removed view options for guests in clubs.
  • Removed support for Twitch embeds as Twitch has removed their oembed endpoint with no plans to introduce a new one.
  • Removed notification sounds.
  • Removed orphaned 'Activity/Content Discovery' module.
  • Fixed incorrect css variable names affecting .ipsMenu children.
  • Fixed the background color of selected text in ACP Code Editors while using dark mode.
  • Fixed the caret color in ACP Code Editors while using dark mode.
  • Fixed various minor issues with the AdminCP Marketplace.
  • Changed the color css variable on #elRegisterButton so it uses the correct variable.
  • Removed an excess closing anchor tag from the coppa template file.
  • Fixed an issue where the width of the layout would stretch, caused by long strings of content.
  • Removed support for Memcache, APC, XCache, WinCache. Use Redis instead.
  • Made the 404/403 error pages more friendly.
  • Added a new Spam Defense option to allow registration but require moderator approval of all new posts.
  • Added an option to the profanity word filters to hold for moderation when a member has less than a set number of posts.
  • Fixed an issue where Member Sync onEmailChange may be called before validation when changing email via validating screen.
  • Fixed importing members from CSV to Date custom fields not importing properly.
  • Fixed an issue where font-sizes on mobiles weren't following the Font Scale setting.
  • Fixed an issue where tags associated with hidden content were included when generating statistics.
  • Fixed an issue with the Easy Mode theme editor in Safari which caused the "Select" tool to return incorrect styles.
  • Fixed an separate issue with the Easy Mode theme editor where a JS could be thrown due to a race condition.
  • Fixed an issue where review ratings are not recalculated properly when a review is deleted.
  • Fixed a potential redirect loop when re-accepting Terms of Service and / or Privacy Policy changes.
  • Fixed an issue where content was missing the proper share logo.
  • Fixed an issue where post attachments sometimes used different styles within a list. Attachments in a list will always use a smaller 'inline' style now.
  • Worked around a bug in MySQL when viewing statistics in the AdminCP.
  • Fixed some HTML validation errors.
  • Fixed an issue where uninstalling an application wouldn't delete the associated rss feed import data.
  • Fixed an issue where changing table filters could cause the table to be stuck in loading state due to an underlying error.
  • Fixed an issue where a cached Widget returned the wrong timezone based time.
  • Fixed an issue where banned members could see that there are announcements, but could not read the announcement.
  • Fixed issue where poll choices are cleared because poll question title is empty on Edit Topic submit.
  • Advert impression counters are incremented via Redis to reduce MySQL write queries where Redis is available.
  • Fixed an issue where some SMTP servers may fail to generate valid DKIM hashes.
  • Removed browser caching for "upgrade in progress" page.
  • Fixed an issue where the Privacy Page does not redirect to an external link.
  • Fixed an issue when an anonymmous online status doesn't persist across logins when using button log in methods
Forums

  • Fixed an issue where language string instead of the final parsed strings were used for Webhook Requests.
  • Fixed an issue where the member's "solved count" would not show in QA forums.
  • Fixed a bug that caused the wrong database table to be indexed when loading number of archived posts made by a given user
  • Implemented notifications to the topic author when a question or topic is marked as solved.
  • Implemented notifications to the poster when their post is marked as the solution to a topic or the best reply to a question.
  • Implemented maximum dimensions of 800px x 800px for forum grid images to allow the software to reduce the size of extremely large images.
  • Changed "popular posts" in the topic statistics area to make each displayed post a link to the post.
  • Changed "posted images" in the topic statistics area to link attached images to the post they were attached to.
  • Changed the unarchiving task to process quicker.
  • Changed digest emails to honor the email truncation option.
  • Changed the "Unsolved" option for topic feed widgets to restrict results to Question and Answer forums or forums with "Mark as solved" enabled.
  • Added option to display inline moderation actions in between posts (if enabled) without the moderator name to non-moderators.
  • Added per-group option to hide inline moderation actions shown in between posts.
  • Added statistic block to show "Percentage of topics solved" to compare topics posted vs those marked solved within question and answer forums, or forums that allow a solution to be marked.
  • Added statistic block to show "Average time to solved" for question and answer forums, or forums that allow a solution to be marked.
  • Added the missing 'features' color field to forums categories.
  • Added lazy load support to preview images in Topic Summary sidebar.
  • Added lazy load support to forums when in grid view.
  • Added support for the expanded topic view display within the fluid topic listing interface.
  • Fixed an issue changing time periods when viewing new topic and post statistic charts.
  • Fixed issues setting and unsetting best answers on topics.
  • Fixed "solved" interface elements displaying for topics within forums where the ability to mark topic solutions has been disabled.
  • Fixed an issue where viewing a topic when the last post is hidden does not mark the topic as read.
  • Fixed reaction count showing incorrectly when viewing whole topic’s reactions (i.e. from expanded view).
  • Fixed a bad id attribute in the post template.
  • Optimized queries when all forums do not use a password.
  • Improved performance of topic embeds.
  • Improved performance of very large topics.
  • Improved performance of the Forum Statistics widget on large forums.
  • Improved performance of topic statistics.
  • Improved performance of expanded forum view for large forums.
  • Added the ability to show when specific group(s) have replied to a topic when viewing a list of topics
  • Added filters to the topic list view to quickly isolate hidden topics and topics with hidden posts.
  • Fixed an issue where the border-radius was incorrectly 0px in Q&A Forums.
  • Improved results for "Popular Questions This Month" tab for Q&A Forums.
  • Fixed an issue where club forums wouldn't show in Fluid View if only one root category exists.
  • Fixed an issue where topic feeds could show cached read/unread status.
  • Fixed an issue where Grid Card Images could show lost links.
  • Fixed an issue where Youtube Shorts URLs would not embed.
  • Fixed the position of the queued content badge in fluid view, which was overlapping the topic stats.
  • Fixed an issue where topics marked manually for unarchiving would not be processed.
REST / OAuth

  • Fixed OAuth login if guests cannot access site.
  • Fixed creating a content item by the REST API not triggering a webhook.
  • Fixed Zapier's API calls showing in logs without a name for the key.
  • Fixed some duplicated error codes.
Pages

  • Fixed an issue where the page builder widgets did not have the correct data attributes when used in a Pages page.
  • Fixed an issue that may occur during upgrade when Database file storage is used.
  • Added a data-pageName parameter for the body tag with the page path (folder/name) for better CSS targeting.
  • Changed two column page builder pages to use vertical widget layouts.
  • Changed category fiters in databases to not require CSRF keys in order to apply filtering.
  • Improved AdminCP logging of certain actions.
  • .well-known can now be used as a folder name for Apple Pay verification in Commerce.
  • Fixed an error that can occur after a database is deleted if there are pending review or comment deletions for the database.
  • Fixed an error when creating a new block in the "Custom" block category has been deleted.
  • Fixed orphaned files being left over when deleting fields, records and databases in the AdminCP.
  • Fixed an error where saving templates for similar blocks with the same template name can result in an error.
  • Fixed an issue where deleting a page may delete all pages within an unrelated subfolder.
  • Fixed an issue when hiding a comment on a database with forum syncing using multi-moderation triggers a page not found error.
  • Fixed an error attempting to use the advanced search for a Pages database in the AdminCP.
  • Fixed unclear AdminCP logs when performing actions such as copying, editing or deleting a database.
  • Fixed an issue where record authors couldn't respond to reviews.
  • Fixed a PHP notice for certain reciprocal database link fields.
  • Fixed orphaned review records being left behind when a database is deleted.
  • Fixed an issue where automatically-generated topics did not trigger notifications for followers of the forum.
  • Fixed an issue where "Publish Date" may not show correctly in record feed sort options.
  • Fixed an issue where deleting a database which was used as reciprocal field in another database would result in error.
  • Fixed an issue where importing RSS feeds to Pages could set the wrong author.
  • Fixed an issue where article images would float outside of their content box if the article only contained a few lines of text.
  • Fixed an issue with attachments not properly associating with comments on a record and not being deleted if the comment is deleted when syncing comments with the forums.
  • Fixed an issue where copying blocks could result in lost attachments or languages strings.
  • Fixed an issue where HTML logic of a page may be stored in the search index.
  • Fixed and issue where inline editing an item field wouldn't update the reciprocal map.
  • Fixed an issue with the REST API where a GET request to records with a category parameter would result in a DB error.
  • Fixed an issue where it's possible to create two Folders with the same name, causing conflicts.
  • Fixed an issue where the API can delete a forum even if a database posts topics to that forum.
  • Fixed an issue where deleting a database wouldn't delete the associated rss feed import data.
  • Fixed a niche issue where it was possible for a record name to show on the online list when the viewer does not have permission to view it.
Commerce

  • Fixed an error occurring when checking out as a guest after following a referral link.
  • Fixed an issue where a refund may not automatically happen if a payment is made via PayPal Subscriptions and refused by a fraud rule.
  • Fixed an issue where refunding/cancelling an invoice with a referral commission would not revoke the commission.
  • Fixed an issue where the AdminCP invoice view may not show all of the commissions on the invoice.
  • Fixed an error during checkout due to renewals when performing stock checks.
  • Added a confirmation pop-up when mass approving account withdrawals.
  • Added an option to limit Withdrawal requests to one per currency at any time.
  • Added a missing language string for the review widgets.
  • Renewal invoice warning emails will now show tax included, if applicable.
  • Improved email normalization for MaxMind fraud detection.
  • Subscriptions Grace Period setting will now allow a value of 0.
  • Fixed Commerce generating incomplete accounts when the "Ask to provide a display name?" setting is off.
  • Fixed an issue where you may be able to purchase more than the number of items in stock.
  • Fixed race-condition potentially causing duplicate purchase records or transactions.
  • Fixed interactions on invoice table when viewing a purchase in AdminCP.
  • Fixed error trying to access a customer's support request history from the sidebar when viewing a support request.
  • Fixed error trying to approve a transaction from a Stripe dispute page.
  • Fixed some countries not showing in Markets statistics page.
  • Fixed an error attempting to delete support replies in the AdminCP.
  • Fixed error reporting when checking out with Stripe on a free trial with incorrect card details.
  • Fixed billing name not being passed to Stripe when paying with card.
  • Fixed an error when running PHP 7.4 and adding items with certain configurations to the cart.
  • Fixed an issue with certain email notifications generated by Commerce resulting in errors or potentially incorrectly formatted amounts.
  • Fixed an issue where editing a purchase's grace period would enable renewals on the purchase even if there are none specified.
  • Fixed an issue where guest location tracking via cookie did not work correctly.
  • Fixed an issue where replying to a support request and returning to the list of requests does not mark the request as read.
  • Fixed an issue where customers could not reactivate subscriptions where an existing subscription was cancelled but allowed the customer to reactivate.
  • Fixed an issue where checking out with an item without a renewal charge could in some circumstances cause an error.
  • Fixed some missing friendly URLs on various pages of Commerce.
  • Fixed an issue where disabled subscriptions couldn't be canceled.
  • Fixed an issue where renewal terms were not presented on the front end in the order they are specified in the AdminCP.
  • Fixed an issue where support tabs in the AdminCP would not wrap and could cause the page to stretch.
  • Fixed an error when running PHP 7.4 when creating new support streams in the Admin CP.
  • Fixed an issue where if a customer cancels a PayPal billing agreement immediately after the initial payment before the webhook for that payment is received, the payment becomes associated with a blank invoice.
  • Fixed an issue where a user may be prompted to provide card details when purchasing a free trial, even if the product being purchased is restricted to non-card payment methods.
  • Fixed an issue with Member Filters happening when members where filtered by subscriptions and purchases.
  • Fixed an issue where copying a donation goal would not copy the donation goal description.
  • Fixed an issue where copying a support department would not copy the support department submission screen text.
  • Fixed an issue where copying a support severity would not copy the support severity description.
  • Fixed an issue where deleting a support status would not remove the custom language strings in the database.
  • Fixed an issue where copying or deleting a shipping rate did not copy or delete the delivery estimate text.
  • Fixed an issue where copying or deleting a product filter did not copy or delete the public name.
  • Fixed an issue where copying or deleting a product did not copy or delete various translatable fields, such as the client area page content and email notification subjects.
  • Fixed an issue where canceling an ad purchase would result in an error.
  • Fixed an issue where users may not see the correct page after checkout if email validation is in use.
  • Fixed an IN_DEV error editing Pages templates that was thrown for applications without any Pages Templates.
  • Fixed an error that can occur in some situations when allowing upgrading purchases between renewals pro-rata.
  • Fixed an issue where Stripe webhook events may fail in some circumstances.
  • Fixed an issue where API requests may cause an error if referencing transactions from deleted members.
  • Fixed an issue where merging members could leave members as alternative contacts for themselves.
  • Fixed an issue where the first step may be skipped during checkout even if custom fields are required.
Gallery

  • Added ability to remove category and album cover photos.
  • Adjusted default Gallery bandwidth retention period from unlimited to 1 year.
  • Improved performance of certain areas of Gallery.
  • Improved performance of the Gallery Statistics widget on large galleries.
  • Fixed not being able to upload to Gallery if albums are required, and the member had previously created an album, but the member can no longer create new albums.
  • Fixed not being able to toggle "Enable maps by default" on in the Gallery settings.
  • Fixed multiquoting comments.
  • Fixed an issue where maximum allowed file sizes for images or movies may not be applied as expected in certain configurations.
  • Fixed a CSRF error when mass-managing Gallery category content (moving to another category or deleting).
  • Fixed an issue toggling maps enabled for images in certain cases.
  • Fixed albums not being hidden when a user is flagged as a spammer.
  • Fixed an issue with the submission progress bar for some locales.
Downloads

  • Added an option to require a change log to be submitted with new version updates.
  • Added the ability for files to be re-activated after renewals are cancelled.
  • Added statistics pertaining to the most downloaded files
  • Changed the "Upload a new version" process to also verify the user can add to the category, in addition to being able to edit the file.
  • Fixed an issue where downloading small files can fail.
  • Fixed several issues handling watermarks and original non-watermarked screenshots.
  • Fixed an issue where group limitations on maximum file submission size may not apply correctly when a member belongs to more than one group.
  • Fixed an issue with submit buttons showing for club Downloads categories that a user does not have permission to submit to.
  • Fixed an issue in the logic that determines whether a renewal invoice should be generated.
  • Fixed an issue where downloads digest emails can contain broken thumbnails.
  • Fixed an issue where rejected pending versions could leave screenshots and thumbnails orphaned on disk.
  • Fixed an issue where a lot of files submitted that were queued as pending files could cause an error.
  • Fixed the hardcoded "Change how the notification is sent" text when the notification blurb.
  • Fixed an issue where the API can delete a forum even if a downloads category posts topics to that forum.
  • Removed the not working search options from the custom fields edit form.
Blogs

  • Added ability to manage entry categories for group blogs when viewing the blog on the front end.
  • Fixed a bug where flagging a user as a spammer will disable all group blogs the user has access to submit entries to.
  • Fixed pagination when showing blog entries in a particular category.
  • Fixed an issue where creating a blog in the frontend would show the previous created blogs description.
  • Fixed entry cover photos becoming orphaned when the entry is deleted.
  • Fixed some breadcrumb links not using friendly URLs.
  • Fixed some broken language phrases when Forums and Pages are not installed.
  • Fixed an issue where some members couldn't report specific blog entries.
  • Fixed an issue where the AdminCP livesearch results link to categories instead of blogs.
  • Removed view options for guests in blogs.
  • Removed Aggregate rating from JSON-LD structured data
  • Added a warning message when deleting a blog that this action will permanently delete the blog and all its entries.
Calendar

  • Fixed an issue where the cover photo may be deleted when duplicating an event.
  • Fixed an error when editing iCalendar feed imports in the AdminCP.
  • Fixed a bug where recurring events in upcoming event widgets may display the wrong date.
  • Fixed a bug where events may show on the daily view in calendar on days the event does not occur.
  • Fixed event cover photos becoming orphaned when the event is deleted.
  • Fixed a minor bug where ranged events crossing from one week into another may not be visually represented as doing so.
  • Fixed a bug where iCalendar feeds that are imported into Calendar may cause previously viewed events to show as unread.
  • Fixed events occurring on the same day not ordering properly in the Upcoming Events widget.
REST / OAuth

  • Fixed creating a content item by the REST API not triggering a webhook.
  • Fixed creating a topic in a category (i.e. a container which cannot have topics posted to it) not reporting an error.
Converter

  • Added support for wpForo 1.9.x.
  • Added support for converting Markdown formatted posts in Vanilla.
  • Improved converters to skip invalid child applications that do not exist.
  • Improved performance of the Vanilla converter.
  • Fixed an issue where large filenames could cause a logging error.
  • Fixed an issue where pre-configured CMS Category permissions may not be correct.
  • Fixed custom fields not converting properly from WordPress.
  • Fixed an issue where acronyms may not convert from Invision Community.
  • Fixed a niche issue where a temporary database column may be missing.
  • Fixed an issue converting checkbox set custom fields in some cases.
  • Fixed an issue where legacy SMF attachments may not be converted.
  • Fixed an issue converting some types of SMF profile photos.
  • Fixed an issue where emoticons in content may not get converted properly.
  • Fixed an issue where a conversion from IPS forums would fail.
  • Fixed an issue where long topic titles in 3rd party applications could cause forum conversions to fail.
  • Fixed some issues when converting from Vanilla and your files used to be in S3.
  • Fixed a niche issue where really old vBulletin avatars may not be converted.

Changes affecting third-party developers and designers​

  • Upgraded Whoops to version 2.9.1.
  • Added support for web push notifications. To support these kinds of notifications, you will need to add parsemobile* methods in your Notification extensions.
  • Added a $count parameter to \IPS\Content::definiteArticle/_definiteArticle(). If an integer is passed, a pluralized phrase will be used, if available. You should add pluralized strings for any __defart_* strings you've already created. The key should be in the format __defart_*_plural.
  • Added constant ACP_SESSION_TIMEOUT to allow administrators to control how long AdminCP sessions are valid for.
  • Added a per-application setting to hide the application on the announcement creation form (this setting's use may be expanded in the future).
  • Added theme settings to control header height (desktop & mobile sizes), which are used in the existing CSS variables.
  • Added version to the filename of exported apps/plugins/themes/languages.
  • Added \IPS\DateTime::roundedDiff() and \IPS\DateTime::roundedDiffFromSeconds() to return a human-readable rounded diff of two datetime objects, or a diff based on a supplied number of seconds, respectively.
  • Added a new 'enforceMaxLimit' option for \IPS\Form\Helper\Password elements to bypass the max 72 character limit.
  • Added an option to set orderResults to FALSE for \IPS\Helpers\Form\Item instances to return results in the order the user specified.
  • Added a new javascript utility method to adjust external links to force them to open in a new window: ips.utils.links.updateExternalLinks. This is called automatically on the contentChange event, but may also be called manually in situations where the contentChange event is not fired.
  • Improved the extensibility of Cache/DataStore methods.
  • Updated some uses of border-radius to use existing CSS variables.
  • Changed template groups and locations to be case-sensitive, which fixes an issue enabling designers mode on a server using a case-sensitive file system.
  • Changed the logic that controls how pagination is shown in templates. The data-role="tablePagination" element should now always exist in the table DOM; it will be shown/hidden dynamically if pagination is required after AJAX requests.
  • Fixed an error that can occur when dev sync runs if you are not logged in and the application has a whatsnew.json file in its latest version folder.
  • Fixed broken progress bar when enabling designers mode.
  • Fixed numeric values passed to the REST API /core/members/{id} endpoint not always adjusting the property, and sometimes causing an SQL error.
  • Fixed the "Upcoming Events" widget not showing when developer mode is enabled.
  • Fixed an issue using the hide option for contentAction when deleting a member via the REST API.
  • Fixed eq() pseudo-selector no longer being supported in theme hooks.
  • Fixed required() pseudo-selector not working in theme hooks.
  • Fixed \IPS\Content\Statistics not working for applications that use a database column prefix.
  • Fixed theme hooks on Forums > index > forumGridItem not working as expected.
  • Fixed a missing redirect when hiding comments using multi-moderation on classes that do not define a $hideLogKey property.
  • Fixed the constructor for \IPS\nexus\DomainLookup not honoring the $performWhoisLookup parameter.
  • Fixed some inconsistent HTML with building the quick search menu options.
  • Fixed an error that can occur when sessions are cleared.
  • Fixed a bug where a notification flash instance without an image passed (i.e. a notification with no author) results in a broken image.
  • Fixed an issue where it was not possible to use form headers in widget configuration forms.
  • Fixed installing plugins generating an invalid widgets.json file.
  • Fixed an error deleting Pages templates in the AdminCP when developer mode is enabled.
  • Fixed issues adding/editing database indexes for applications.
  • Fixed an issue where you could not hook into \IPS\Redis.
  • Fixed an undefined index notice parsing valid ICS feeds with no events in them.
  • Fixed an inaccurate Redis log entry indicating read server used instead of write server.
  • Abstracted code in \IPS\core\modules\admin\members\members::export() to make it easier to apply hooks to member list exports.
  • Removed ability to reorder queries for upgrader in the developer center. Developers should manually reorder the JSON file if necessary.
  • Removed the onOtherAppUninstall() method from application Uninstall extensions in favor of onOtherUninstall().
  • Removed several deprecated methods and properties throughout the Suite and verified core code no longer references those methods and properties.
  • Enforced the $type parameter for \IPS\Email::buildFromContent() and \IPS\Email::buildFromTemplate() with an error if the type is not specified.
  • The markRead() method will no longer consider an updated column if last_comment or last_review is defined.
  • A number of caching improvements have been implemented, please make sure your pages are sending no-cache headers if you do not want them cached.
  • Non-AJAX requests that retain a CSRF token in the URL with a 200 response code will now trigger a development error recommending to redirect the request or otherwise remove the CSRF token. Leaving a CSRF token in the URL while generating a page can represent a security risk if remote images (for example) are embedded on the page, as the CSRF token could be susceptible to interception by the remote party.
  • Support for notification sounds in the browser has been removed. If you rely on playing sounds, you will need to implement this functionality in your application.
  • Add new method was added to the IPS\Content\Item class which is called when an item is deleted. It's receiving the comment/review ids which are going to be deleted, allowing you to remove any additional cleanup calls based on the comments and reviews in this item.
  • Updated the ModCP content restore (soft delete) to use the built in restore() method instead of using its own code.
  • Account settings will no longer prompt for re-authentication if the account does not have a way of re-authenticating. Applies mostly to custom SSO integrations.
Important Method Changes:

  • Added a $seperator parameter to \IPS\CustomField::displayValues which can be used to define a custom seperator when displaying multiple values .
  • Updated method signature for \IPS\Node\Model::getLastCommentTime().
  • Added a $count parameter to \IPS\Content::definiteArticle/_definiteArticle(). If an integer is passed, a pluralized phrase will be used, if available. You should add pluralized strings for any __defart_* strings you've already created. The key should be in the format __defart_*_plural.
This new release adds many new features to the Invision community .

Key Changes​

This new release brings many new features to Invision Community.

Additional Information​

Core

  • Added support for web push notifications.
  • Implemented a new AdminCP support Health Dashboard in place of the support tool.
  • Improved uploader UI across the suite.
  • Added support for Emoji 13.0 emojis.
  • Added support for WebShare API.
  • Added an option to disable relative dates.
  • Improved security of AdminCP member list.
  • Improved security of attachments for guests.
  • Improved performance of attachment lookups in the editor.
  • Improved performance of the Followed Content activity stream.
  • Improved performance of handling custom meta tags.
  • Improved randomization of randomly sorted content feed widgets.
  • Improved performance of session handling.
  • Improved upgrade error messages.
  • Added a simple offline page, displayed when users have no internet connection.
  • Improved performance of Emoji menu in the editor.
  • Added support for PHP 8.
  • Added support for uploaded webp images (if the server's image handling software supports webp).
  • Added incoming and outgoing email addresses to the new installation onboarding wizard.
  • Added additional options for handling media enclosures in imported RSS feeds.
  • Added support for anonymous posting.
  • Added a block to user profiles to show the number of solutions the member has submitted, and a page to view all solutions.
  • Added ability to search by email address when looking for members in the Moderator CP for moderators with permission to view email addresses.
  • Added a new notification when content is approved.
  • Added new option for \IPS\OUTPUT_CACHE_METHOD to disable output caching, but still send cache headers.
  • Added support for s-maxage, stale-if-error, stale-while-revalidate cache-control directives.
  • Added a link to re-enable a disabled messenger on mobile.
  • Added pruning of IP addresses for stored ratings based on the AdminCP IP address pruning configuration.
  • Added some AdminCP search keywords. Added ability to pay renewal invoices in the AdminCP Marketplace.
  • Added native lazy loading attribute for user profile images and reactions.
  • Added canonical tag for Leaderboard > Past Leaders page.
  • Added a missing language string for the administrators permissions.
  • Separated "Reaction" and "My Stuff" notification preferences so that reaction notifications can be controlled separately.
  • Improved page performance metrics by adding font-display style to FontAwesome and preloading woff2 font file.
  • Reintroduced the ability to automatically embed Facebook and Instagram links in posts.
  • Changed AdminCP sessions to be valid for up to 1 hour by default.
  • Changed most multi-select form inputs in the AdminCP to checkbox sets.
  • Changed IP banning to not be run for guests.
  • Changed warning point verbiage to use numeric pluralization to better support non-English languages.
  • Changed the way how the widget manager send the data to resolve an error when too many widgets are placed on the page.
  • Changed file storage configuration manager to prevent Community In The Cloud clients from selecting filesystem storage handlers.
  • Changed the email in the profile hovercard into a mailto link
  • Improved 304 response caching removing database connection.
  • Improved pluralized verbiage for automatic moderation.
  • Implemented caching for "Active Users" and "Who's Online" blocks.
  • Implemented a minor performance improvement when fetching groups.
  • Improved performance of staff directory page by removing unnecessary queries.
  • Improved performance of the ModeratorCP where hidden posts are listed.
  • Improved performance of multi-moderation actions.
  • Improved performance of sending emails to multiple recipients when there are promote items to be included.
  • Improved inline quoting to account for text copied from code blocks.
  • Updated WordPress login handler to use new Miniorange OAuth server endpoints.
  • Moved the "Tags" text color theme setting to the "Front End Colors" tab.
  • Adjusted guest posts that require approval to not show the post pending approval.
  • Adjusted caching headers for guests in some areas.
  • Improved reliability of address autocomplete.
  • Improved WordPress OAuth for WordPress servers that do not allow the authorization HTTP header.
  • Improved speed of re-indexing some content items after moderation.
  • Improved performance of marking something as read in some cases.
  • Improved soft deleting comments/reviews to remove code duplication.
  • Improved rich embedding to support embedding of short links provided by the TikTok app (vm.tiktok.com links).
  • Improved the appearance of the Notification Settings screen.
  • Clarified the purpose of the Date field when configuring an Activity Stream block.
  • Fixed a long-standing issue where pagination would not show on tables after AJAX requests where the page did not contain pagination when first loaded.
  • Fixed "Post Before Registering" + word filters set to hold the content for moderator approval working together.
  • Fixed “Unlimited” not working for “Maximum image dimensions to save” setting.
  • Fixed an issue where the wrong author may be notified when a comment or review is embedded.
  • Fixed an issue specify dimensions for images in posts manually.
  • Fixed an issue where items to be moderated are not reflected in the interface when moving to other pages.
  • Fixed a potential javascript error when a broken video is posted.
  • Fixed unhiding topics from edit screen.
  • Fixed bad admin logs when managing group administrators and moderators in the AdminCP.
  • Fixed an issue where pruning members or mass moving members to a new group can result in an old cached group count still displaying in the AdminCP.
  • Fixed exact word filters requiring moderator approval resulting in the word being stripped from the title instead of triggering moderator approval.
  • Fixed posting a status update taking a long time if the user has a lot of followers.
  • Fixed Authy setup on Firefox.
  • Fixed web manifest not working when the site is in offline mode.
  • Fixed an issue where the "Can login anonymously" group setting may not apply as expected when a user belongs to more than one group.
  • Fixed incorrect timezone detection for users in Argentina.
  • Fixed an issue where certain custom profile fields would not be formatted when exporting the member list from the AdminCP.
  • Fixed some UI issues with right-to-left languages.
  • Fixed an issue where moving a read content item to a new container results in it becoming unread.
  • Fixed pressing ctrl/cmd+enter multiple times causing duplicate posts.
  • Fixed image dialog in editor not showing correctly on iOS.
  • Fixed an issue where profanity filters set to hold content for moderator approval may apply against the previous content instead of the new content when editing a content item.
  • Fixed an issue with specific CKEditor plugins for Community In The Cloud clients.
  • Fixed orphaned files being left over when deleting custom fields throughout the Suite.
  • Fixed orphaned files being left over in some cases when uninstalling applications.
  • Fixed a performance issue viewing "Unread Content" activity streams in some configurations.
  • Fixed an issue handling dates associated with ratings for content.
  • Fixed images pasted into editor sometimes being inserted in wrong location.
  • Fixed an RTL display issue with the caret arrow connecting an editor with a profile photo.
  • Fixed an RTL display issue with the attachment box in posts.
  • Fixed an issue where pasting links in Microsoft Edge may not allow them to embed.
  • Fixed an issue where the link to disable your messenger was not displaying.
  • Fixed opacity of button after repositining cover image.
  • Fixed a minor issue where Community in the Cloud clients could see a countdown timer that says "You may continue in 0:010 seconds".
  • Fixed the not translatable enabled/disabled string in the moderator history for comment approval enabled/disabled log entries.
  • Fixed the "Preview" button in an editor potentially causing attachments to be associated with the wrong post.
  • Fixed an issue where the UTF-8 converter "Fix collations" process may get stuck if it times out on a large table.
  • Fixed an issue where the DeleteImageProxyFiles task would never finish or not update its progress appropriately .
  • Fixed some invalid CSS syntax.
  • Fixed an issue with the deletecontent task that can cause the task to lock when ran via cron.
  • Fixed an issue moving Icons & Logos to a new storage handler when one or more of the images is broken.
  • Fixed certain activity statistics showing inaccurate previous period values.
  • Fixed an issue where users may be able to bypass image restrictions in signatures.
  • Fixed a bug where exact profanity filters were treated case sensitive.
  • Fixed an issue where status update pagination may not work correctly.
  • Fixed an issue where URLs in editor fields may be corrupted when exporting member lists.
  • Fixed an issue where attachments may inadvertently force a post into moderation when Link Moderation is enabled.
  • Fixed an issue where Plugins & Languages may not show an update is available.
  • Fixed an issue where updating plugins will leave deleted or renamed javascript files behind.
  • Fixed an issue where the core_output_cache table size could get very large.
  • Fixed a bug with pagination links when viewing a member's list of ignored members.
  • Fixed a bug where the member list export process may show a percentage complete greater than 100.
  • Fixed an issue where unbroken words can break email layouts.
  • Fixed an issue where customized email templates do not inherit template parameter changes during upgrade.
  • Fixed an issue specify dimensions for images in posts manually.
  • Fixed an error upgrading third party applications on Community In The Cloud accounts in some cases.
  • Fixed an issue where it was not possible to login through OAuth if the OAuth server had guest access disabled.
  • Fixed an RTL display issue with the caret arrow connecting an editor with a profile photo.
  • Fixed an issue where numeric fields could be incorrectly treated as incomplete during profile completion.
  • Fixed an issue where too many cookies could be set when using custom profile fields with editors in them.
  • Fixed an issue where the email failure AdminCP notification may mistakingly be sent even when other emails are sending correctly.
  • Fixed an issue where creating a ban filter would break with IN_DEV being enabled.
  • Fixed an issue where the login form may not redirect the user to their original location in some situations.
  • Fixed an error that can occur when a Marketplace login expires.
  • Fixed a bug where RSS imports may create a broken image depending upon the "Maximum image dimensions to save" configuration.
  • Fixed a bug where the fontsize template plugin may return an invalid value when certain language packs are used.
  • Fixed an error with the REST API reference page when a referenced application is not installed.
  • Fixed a potential issue that can occur when the Sitemap generator runs via cron.
  • Fixed a javascript error that can occur in the AdminCP when using custom analytics tracking codes.
  • Fixed an issue where item counts could be unreadable in the moderator control panel IP tools on small displays.
  • Fixed an issue where the layout for the move dialog could be broken with long container names.
  • Fixed an issue where the move members task could stop working when the target group doesn't exist.
  • Fixed moderator permission checks in report center.
  • Fixed an issue with structured data throughout the Suite for users with automatically generated letter photos.
  • Fixed an error viewing reports that had comments.
  • Fixed a display issue that can occur when a spoiler is found inside a quote.
  • Fixed a bug where comments from ignored users may display incorrectly when added to a comment stream from an inline notification (i.e. "View new post" within a topic you are viewing).
  • Fixed editing code blocks inside certain other elements (such as spoilers) adding extra line breaks.
  • Fixed club cover photos becoming orphaned when the club is deleted.
  • Fixed member cover photos becoming orphaned when the member is deleted.
  • Fixed an issue where it was not possible to report content items unless the member group was set to be able to report all content types.
  • Fixed an issue where meta descriptions could have quotes stripped.
  • Fixed an issue dismissing upgrade notifications if the page has not finished loading yet.
  • Fixed an issue that can occur if a license check fails.
  • Fixed an issue where sub-nodes would not load on a chart's custom form.
  • Fixed an issue where comments may be added to a comment feed (such as posts within a topic) more than once when clicking the link to show new replies.
  • Fixed a bug where code syntax highlighting in a post may incorrectly highlight code in a language other than the chosen one.
  • Fixed the Warning Action form throwing an error while IN_DEV.
  • Fixed an issue where some status update functionality may still show if the status module is disabled.
  • Fixed streams showing read content when they should only show unread content on occasion.
  • Fixed streams allowing "all" to be specified for date range when using MySQL search, which is restricted to the last 365 days.
  • Fixed automatic linking of URLs in posts not working after emptying browser storage.
  • Fixed an issue where the moderator control panel could throw an error if status update reports were present.
  • Fixed share link not being auto-selected for easy copying when the dialog to share a comment is opened.
  • Fixed a link that can cause the page title to be removed resulting in the current URL displaying as the page title in the browser.
  • Fixed a javascript error that can occur upon selecting a Pixabay image from the "Choose stock photo" selector.
  • Fixed an issue where the 'Expand' link on collapsed quotes could appear twice when a comment is added to the page.
  • Fixed an issue where icons overlap on blocks in the Admin CP statistics areas.
  • Fixed an issue where quotes split in the editor with a double-enter keystroke would not retain quote data or notify original author correctly.
  • Fixed an issue when logging in with LinkedIn.
  • Fixed certain hidden content such as empty widgets not always being hidden.
  • Fixed an issue where the Tag autocomplete field in certain situations (e.g. Gallery submission screen) would have a misplaced results dropdown.
  • Fixed an issue where search result snippets may not have shown the relevant text containing the matched search term.
  • Fixed an issue where quoting a user whose username has a leading zero would cause the zero to be dropped when the quote is displayed.
  • Fixed an issue where spacing around embedded images in an email may not accurately reflect how it appeared in the editor.
  • Fixed an issue where the AdminCP upgrader would not update the versions of disabled applications.
  • Fixed an issue where Mapbox maps could show both a clustered group of markers and single items in the same view.
  • Fixed a bug where viewing streams with custom parameters to adjust the filters will not display the correct results when clicking the "Load More" button.
  • Fixed an error when attempting to force a password reset for a member with no current password.
  • Fixed an issue displaying the current notification preferences overview when MySQL read/write separation is used.
  • Fixed an issue when viewing/updating legacy 3.x applications via Marketplace.
  • Fixed report center comments not having the image proxy stripped when upgrading from previous versions.
  • Fixed Google Adsense code being stripped from posts even if submitted with HTML posting allowed.
  • Fixed an error when disabling languages in some circumstances.
  • Fixed guests not able to report content if using Keycaptcha.
  • Fixed attachments in translatable fields.
  • Fixed an issue with lazy loading in certain situations and certain locales.
  • Fixed an issue with the mobile navigation menu where parent items with unique links would not show as clickable sub-items.
  • Fixed "Stop all email notifications" not disabling digests.
  • Optimized the staff directory to reduce page loading times.
  • Fixed some broken AdminCP live search results on CiC.
  • Fixed the background color of ACP Drop Areas and the color of treelist links for the AdminCP dark theme.
  • Fixed an issue where radio form element descriptions may be misaligned.
  • Fixed an issue with an error message not showing the folder name when plugin installation fails.
  • Fixed an issue where some external links did not open in a new window despite the relevant setting being enabled.
  • Fixed an invalid Open Graph type tag being specified.
  • Fixed a missing confirmation when deleting content via the moderator approval queue.
  • Fixed an issue where status update notification text could be inaccurate.
  • Fixed certain options available for custom streams not working as expected.
  • Fixed an issue where status update notification text could be inaccurate.
  • Fixed a false positive report that images raise security exceptions in some cases.
  • Fixed the "•••" button in the author response being always displayed, even if the logged in member can't edit or delete the response.
  • Fixed Search Activity Statistics resulting in an error due to a MySQL issue in some cases.
  • Fixed content pagination not populating correctly in some applications with restricted moderators.
  • Fixed a bug where resizing a window could result in a horizontal scrollbar when an upload widget exists on the page.
  • Fixed a DB error happening when somebody tries to post too many data to a textarea field.
  • Fixed an issue where Safari may reload each page after the user logs out.
  • Fixed messenger link still displaying on profiles on mobile devices if the user does not have permission to access the messenger module.
  • Fixed an issue where the number short format wouldn't work after a language import.
  • Fixed an issue where club custom fields would show autosave values for different clubs.
  • Fixed an uncaught exception when following a malformed "follow" URL.
  • Fixed inline moderator actions in content items showing the wrong moderator name in some circumstances.
  • Fixed an issue where referral cookies may not be set when guests view a page served from the cache.
  • Fixed an issue where referrals from deleted members could cause an error.
  • Fixed an issue where member exports can contain html for profile fields.
  • Fixed chunk uploading when using Amazon S3 with some S3-compatible providers.
  • Fixed broken 3rd party ACP permissions on CiC.
  • Fixed a typo when flagging a member as a spammer.
  • Fixed an issue where editor contents may be lost or incorrect when paginating through a topic and using the editor on different pages.
  • Fixed an issue where font-awesome <i> tags submitted in source mode are stripped by CKEditor.
  • Fixed an issue where AdminCP theme resource may continously be written to disk.
  • Fixed statistical charts not working in some locales.
  • Fixed sitemaps not generating properly.
  • Upgraded CKEditor to 4.16.
  • Optimized Redis when storing data and sessions.
  • Removed the mobile "hamburger" menu on mobile pages, which was inadvertently added on 4.5.
  • Removed unnecessary Pragma header where used.
  • Removed HTML5 shiv in AdminCP.
  • Removed view options for guests in clubs.
  • Removed support for Twitch embeds as Twitch has removed their oembed endpoint with no plans to introduce a new one.
  • Removed notification sounds.
  • Removed orphaned 'Activity/Content Discovery' module.
  • Fixed incorrect css variable names affecting .ipsMenu children.
  • Fixed the background color of selected text in ACP Code Editors while using dark mode.
  • Fixed the caret color in ACP Code Editors while using dark mode.
  • Fixed various minor issues with the AdminCP Marketplace.
  • Changed the color css variable on #elRegisterButton so it uses the correct variable.
  • Removed an excess closing anchor tag from the coppa template file.
  • Fixed an issue where the width of the layout would stretch, caused by long strings of content.
  • Removed support for Memcache, APC, XCache, WinCache. Use Redis instead.
  • Made the 404/403 error pages more friendly.
  • Added a new Spam Defense option to allow registration but require moderator approval of all new posts.
  • Added an option to the profanity word filters to hold for moderation when a member has less than a set number of posts.
  • Fixed an issue where Member Sync onEmailChange may be called before validation when changing email via validating screen.
  • Fixed importing members from CSV to Date custom fields not importing properly.
  • Fixed an issue where font-sizes on mobiles weren't following the Font Scale setting.
  • Fixed an issue where tags associated with hidden content were included when generating statistics.
  • Fixed an issue with the Easy Mode theme editor in Safari which caused the "Select" tool to return incorrect styles.
  • Fixed an separate issue with the Easy Mode theme editor where a JS could be thrown due to a race condition.
  • Fixed an issue where review ratings are not recalculated properly when a review is deleted.
  • Fixed a potential redirect loop when re-accepting Terms of Service and / or Privacy Policy changes.
  • Fixed an issue where content was missing the proper share logo.
  • Fixed an issue where post attachments sometimes used different styles within a list. Attachments in a list will always use a smaller 'inline' style now.
  • Worked around a bug in MySQL when viewing statistics in the AdminCP.
  • Fixed some HTML validation errors.
  • Fixed an issue where uninstalling an application wouldn't delete the associated rss feed import data.
  • Fixed an issue where changing table filters could cause the table to be stuck in loading state due to an underlying error.
  • Fixed an issue where a cached Widget returned the wrong timezone based time.
  • Fixed an issue where banned members could see that there are announcements, but could not read the announcement.
  • Fixed issue where poll choices are cleared because poll question title is empty on Edit Topic submit.
  • Advert impression counters are incremented via Redis to reduce MySQL write queries where Redis is available.
  • Fixed an issue where some SMTP servers may fail to generate valid DKIM hashes.
  • Removed browser caching for "upgrade in progress" page.
  • Fixed an issue where the Privacy Page does not redirect to an external link.
  • Fixed an issue when an anonymmous online status doesn't persist across logins when using button log in methods
Forums

  • Implemented notifications to the topic author when a question or topic is marked as solved.
  • Implemented notifications to the poster when their post is marked as the solution to a topic or the best reply to a question.
  • Implemented maximum dimensions of 800px x 800px for forum grid images to allow the software to reduce the size of extremely large images.
  • Changed "popular posts" in the topic statistics area to make each displayed post a link to the post.
  • Changed "posted images" in the topic statistics area to link attached images to the post they were attached to.
  • Changed the unarchiving task to process quicker.
  • Changed digest emails to honor the email truncation option.
  • Changed the "Unsolved" option for topic feed widgets to restrict results to Question and Answer forums or forums with "Mark as solved" enabled.
  • Added option to display inline moderation actions in between posts (if enabled) without the moderator name to non-moderators.
  • Added per-group option to hide inline moderation actions shown in between posts.
  • Added statistic block to show "Percentage of topics solved" to compare topics posted vs those marked solved within question and answer forums, or forums that allow a solution to be marked.
  • Added statistic block to show "Average time to solved" for question and answer forums, or forums that allow a solution to be marked.
  • Added the missing 'features' color field to forums categories.
  • Added lazy load support to preview images in Topic Summary sidebar.
  • Added lazy load support to forums when in grid view.
  • Added support for the expanded topic view display within the fluid topic listing interface.
  • Fixed an issue changing time periods when viewing new topic and post statistic charts.
  • Fixed issues setting and unsetting best answers on topics.
  • Fixed "solved" interface elements displaying for topics within forums where the ability to mark topic solutions has been disabled.
  • Fixed an issue where viewing a topic when the last post is hidden does not mark the topic as read.
  • Fixed reaction count showing incorrectly when viewing whole topic’s reactions (i.e. from expanded view).
  • Fixed a bad id attribute in the post template.
  • Optimized queries when all forums do not use a password.
  • Improved performance of topic embeds.
  • Improved performance of very large topics.
  • Improved performance of the Forum Statistics widget on large forums.
  • Improved performance of topic statistics.
  • Improved performance of expanded forum view for large forums.
  • Added the ability to show when specific group(s) have replied to a topic when viewing a list of topics
  • Added filters to the topic list view to quickly isolate hidden topics and topics with hidden posts.
  • Fixed an issue where the border-radius was incorrectly 0px in Q&A Forums.
  • Improved results for "Popular Questions This Month" tab for Q&A Forums.
  • Fixed an issue where club forums wouldn't show in Fluid View if only one root category exists.
  • Fixed an issue where topic feeds could show cached read/unread status.
  • Fixed an issue where Grid Card Images could show lost links.
  • Fixed an issue where Youtube Shorts URLs would not embed.
  • Fixed the position of the queued content badge in fluid view, which was overlapping the topic stats.
  • Fixed an issue where topics marked manually for unarchiving would not be processed.
REST / OAuth

  • Fixed OAuth login if guests cannot access site.
  • Fixed creating a content item by the REST API not triggering a webhook.
  • Fixed Zapier's API calls showing in logs without a name for the key.
  • Fixed some duplicated error codes.
Pages

  • Added a data-pageName parameter for the body tag with the page path (folder/name) for better CSS targeting.
  • Changed two column page builder pages to use vertical widget layouts.
  • Changed category fiters in databases to not require CSRF keys in order to apply filtering.
  • Improved AdminCP logging of certain actions.
  • .well-known can now be used as a folder name for Apple Pay verification in Commerce.
  • Fixed an error that can occur after a database is deleted if there are pending review or comment deletions for the database.
  • Fixed an error when creating a new block in the "Custom" block category has been deleted.
  • Fixed orphaned files being left over when deleting fields, records and databases in the AdminCP.
  • Fixed an error where saving templates for similar blocks with the same template name can result in an error.
  • Fixed an issue where deleting a page may delete all pages within an unrelated subfolder.
  • Fixed an issue when hiding a comment on a database with forum syncing using multi-moderation triggers a page not found error.
  • Fixed an error attempting to use the advanced search for a Pages database in the AdminCP.
  • Fixed unclear AdminCP logs when performing actions such as copying, editing or deleting a database.
  • Fixed an issue where record authors couldn't respond to reviews.
  • Fixed a PHP notice for certain reciprocal database link fields.
  • Fixed orphaned review records being left behind when a database is deleted.
  • Fixed an issue where automatically-generated topics did not trigger notifications for followers of the forum.
  • Fixed an issue where "Publish Date" may not show correctly in record feed sort options.
  • Fixed an issue where deleting a database which was used as reciprocal field in another database would result in error.
  • Fixed an issue where importing RSS feeds to Pages could set the wrong author.
  • Fixed an issue where article images would float outside of their content box if the article only contained a few lines of text.
  • Fixed an issue with attachments not properly associating with comments on a record and not being deleted if the comment is deleted when syncing comments with the forums.
  • Fixed an issue where copying blocks could result in lost attachments or languages strings.
  • Fixed an issue where HTML logic of a page may be stored in the search index.
  • Fixed and issue where inline editing an item field wouldn't update the reciprocal map.
  • Fixed an issue with the REST API where a GET request to records with a category parameter would result in a DB error.
  • Fixed an issue where it's possible to create two Folders with the same name, causing conflicts.
  • Fixed an issue where the API can delete a forum even if a database posts topics to that forum.
  • Fixed an issue where deleting a database wouldn't delete the associated rss feed import data.
  • Fixed a niche issue where it was possible for a record name to show on the online list when the viewer does not have permission to view it.
Commerce

  • Added a confirmation pop-up when mass approving account withdrawals.
  • Added an option to limit Withdrawal requests to one per currency at any time.
  • Added a missing language string for the review widgets.
  • Renewal invoice warning emails will now show tax included, if applicable.
  • Improved email normalization for MaxMind fraud detection.
  • Subscriptions Grace Period setting will now allow a value of 0.
  • Fixed Commerce generating incomplete accounts when the "Ask to provide a display name?" setting is off.
  • Fixed an issue where you may be able to purchase more than the number of items in stock.
  • Fixed race-condition potentially causing duplicate purchase records or transactions.
  • Fixed interactions on invoice table when viewing a purchase in AdminCP.
  • Fixed error trying to access a customer's support request history from the sidebar when viewing a support request.
  • Fixed error trying to approve a transaction from a Stripe dispute page.
  • Fixed some countries not showing in Markets statistics page.
  • Fixed an error attempting to delete support replies in the AdminCP.
  • Fixed error reporting when checking out with Stripe on a free trial with incorrect card details.
  • Fixed billing name not being passed to Stripe when paying with card.
  • Fixed an error when running PHP 7.4 and adding items with certain configurations to the cart.
  • Fixed an issue with certain email notifications generated by Commerce resulting in errors or potentially incorrectly formatted amounts.
  • Fixed an issue where editing a purchase's grace period would enable renewals on the purchase even if there are none specified.
  • Fixed an issue where guest location tracking via cookie did not work correctly.
  • Fixed an issue where replying to a support request and returning to the list of requests does not mark the request as read.
  • Fixed an issue where customers could not reactivate subscriptions where an existing subscription was cancelled but allowed the customer to reactivate.
  • Fixed an issue where checking out with an item without a renewal charge could in some circumstances cause an error.
  • Fixed some missing friendly URLs on various pages of Commerce.
  • Fixed an issue where disabled subscriptions couldn't be canceled.
  • Fixed an issue where renewal terms were not presented on the front end in the order they are specified in the AdminCP.
  • Fixed an issue where support tabs in the AdminCP would not wrap and could cause the page to stretch.
  • Fixed an error when running PHP 7.4 when creating new support streams in the Admin CP.
  • Fixed an issue where if a customer cancels a PayPal billing agreement immediately after the initial payment before the webhook for that payment is received, the payment becomes associated with a blank invoice.
  • Fixed an issue where a user may be prompted to provide card details when purchasing a free trial, even if the product being purchased is restricted to non-card payment methods.
  • Fixed an issue with Member Filters happening when members where filtered by subscriptions and purchases.
  • Fixed an issue where copying a donation goal would not copy the donation goal description.
  • Fixed an issue where copying a support department would not copy the support department submission screen text.
  • Fixed an issue where copying a support severity would not copy the support severity description.
  • Fixed an issue where deleting a support status would not remove the custom language strings in the database.
  • Fixed an issue where copying or deleting a shipping rate did not copy or delete the delivery estimate text.
  • Fixed an issue where copying or deleting a product filter did not copy or delete the public name.
  • Fixed an issue where copying or deleting a product did not copy or delete various translatable fields, such as the client area page content and email notification subjects.
  • Fixed an issue where canceling an ad purchase would result in an error.
  • Fixed an issue where users may not see the correct page after checkout if email validation is in use.
  • Fixed an IN_DEV error editing Pages templates that was thrown for applications without any Pages Templates.
  • Fixed an error that can occur in some situations when allowing upgrading purchases between renewals pro-rata.
  • Fixed an issue where Stripe webhook events may fail in some circumstances.
  • Fixed an issue where API requests may cause an error if referencing transactions from deleted members.
  • Fixed an issue where merging members could leave members as alternative contacts for themselves.
  • Fixed an issue where the first step may be skipped during checkout even if custom fields are required.
Gallery

  • Added ability to remove category and album cover photos.
  • Adjusted default Gallery bandwidth retention period from unlimited to 1 year.
  • Improved performance of certain areas of Gallery.
  • Improved performance of the Gallery Statistics widget on large galleries.
  • Fixed not being able to upload to Gallery if albums are required, and the member had previously created an album, but the member can no longer create new albums.
  • Fixed not being able to toggle "Enable maps by default" on in the Gallery settings.
  • Fixed multiquoting comments.
  • Fixed an issue where maximum allowed file sizes for images or movies may not be applied as expected in certain configurations.
  • Fixed a CSRF error when mass-managing Gallery category content (moving to another category or deleting).
  • Fixed an issue toggling maps enabled for images in certain cases.
  • Fixed albums not being hidden when a user is flagged as a spammer.
  • Fixed an issue with the submission progress bar for some locales.
Downloads

  • Added an option to require a change log to be submitted with new version updates.
  • Added the ability for files to be re-activated after renewals are cancelled.
  • Added statistics pertaining to the most downloaded files
  • Changed the "Upload a new version" process to also verify the user can add to the category, in addition to being able to edit the file.
  • Fixed an issue where downloading small files can fail.
  • Fixed several issues handling watermarks and original non-watermarked screenshots.
  • Fixed an issue where group limitations on maximum file submission size may not apply correctly when a member belongs to more than one group.
  • Fixed an issue with submit buttons showing for club Downloads categories that a user does not have permission to submit to.
  • Fixed an issue in the logic that determines whether a renewal invoice should be generated.
  • Fixed an issue where downloads digest emails can contain broken thumbnails.
  • Fixed an issue where rejected pending versions could leave screenshots and thumbnails orphaned on disk.
  • Fixed an issue where a lot of files submitted that were queued as pending files could cause an error.
  • Fixed the hardcoded "Change how the notification is sent" text when the notification blurb.
  • Fixed an issue where the API can delete a forum even if a downloads category posts topics to that forum.
  • Removed the not working search options from the custom fields edit form.
Blogs

  • Added ability to manage entry categories for group blogs when viewing the blog on the front end.
  • Fixed a bug where flagging a user as a spammer will disable all group blogs the user has access to submit entries to.
  • Fixed pagination when showing blog entries in a particular category.
  • Fixed an issue where creating a blog in the frontend would show the previous created blogs description.
  • Fixed entry cover photos becoming orphaned when the entry is deleted.
  • Fixed some breadcrumb links not using friendly URLs.
  • Fixed some broken language phrases when Forums and Pages are not installed.
  • Fixed an issue where some members couldn't report specific blog entries.
  • Fixed an issue where the AdminCP livesearch results link to categories instead of blogs.
  • Removed view options for guests in blogs.
  • Removed Aggregate rating from JSON-LD structured data
Calendar

  • Fixed an issue where the cover photo may be deleted when duplicating an event.
  • Fixed an error when editing iCalendar feed imports in the AdminCP.
  • Fixed a bug where recurring events in upcoming event widgets may display the wrong date.
  • Fixed a bug where events may show on the daily view in calendar on days the event does not occur.
  • Fixed event cover photos becoming orphaned when the event is deleted.
  • Fixed a minor bug where ranged events crossing from one week into another may not be visually represented as doing so.
  • Fixed a bug where iCalendar feeds that are imported into Calendar may cause previously viewed events to show as unread.
  • Fixed events occurring on the same day not ordering properly in the Upcoming Events widget.
REST / OAuth

  • Fixed creating a content item by the REST API not triggering a webhook.
  • Fixed creating a topic in a category (i.e. a container which cannot have topics posted to it) not reporting an error.
Converter

  • Added support for wpForo 1.9.x.
  • Added support for converting Markdown formatted posts in Vanilla.
  • Improved converters to skip invalid child applications that do not exist.
  • Improved performance of the Vanilla converter.
  • Fixed an issue where large filenames could cause a logging error.
  • Fixed an issue where pre-configured CMS Category permissions may not be correct.
  • Fixed custom fields not converting properly from WordPress.
  • Fixed an issue where acronyms may not convert from Invision Community.
  • Fixed a niche issue where a temporary database column may be missing.
  • Fixed an issue converting checkbox set custom fields in some cases.
  • Fixed an issue where legacy SMF attachments may not be converted.
  • Fixed an issue converting some types of SMF profile photos.
  • Fixed an issue where emoticons in content may not get converted properly.
  • Fixed an issue where a conversion from IPS forums would fail.
  • Fixed an issue where long topic titles in 3rd party applications could cause forum conversions to fail.
  • Fixed some issues when converting from Vanilla and your files used to be in S3.
  • Fixed a niche issue where really old vBulletin avatars may not be converted.

Changes affecting third-party developers and designers​

  • Upgraded Whoops to version 2.9.1.
  • Added support for web push notifications. To support these kinds of notifications, you will need to add parsemobile* methods in your Notification extensions.
  • Added a $count parameter to \IPS\Content::definiteArticle/_definiteArticle(). If an integer is passed, a pluralized phrase will be used, if available. You should add pluralized strings for any __defart_* strings you've already created. The key should be in the format __defart_*_plural.
  • Added constant ACP_SESSION_TIMEOUT to allow administrators to control how long AdminCP sessions are valid for.
  • Added a per-application setting to hide the application on the announcement creation form (this setting's use may be expanded in the future).
  • Added theme settings to control header height (desktop & mobile sizes), which are used in the existing CSS variables.
  • Added version to the filename of exported apps/plugins/themes/languages.
  • Added \IPS\DateTime::roundedDiff() and \IPS\DateTime::roundedDiffFromSeconds() to return a human-readable rounded diff of two datetime objects, or a diff based on a supplied number of seconds, respectively.
  • Added a new 'enforceMaxLimit' option for \IPS\Form\Helper\Password elements to bypass the max 72 character limit.
  • Added an option to set orderResults to FALSE for \IPS\Helpers\Form\Item instances to return results in the order the user specified.
  • Added a new javascript utility method to adjust external links to force them to open in a new window: ips.utils.links.updateExternalLinks. This is called automatically on the contentChange event, but may also be called manually in situations where the contentChange event is not fired.
  • Improved the extensibility of Cache/DataStore methods.
  • Updated some uses of border-radius to use existing CSS variables.
  • Changed template groups and locations to be case-sensitive, which fixes an issue enabling designers mode on a server using a case-sensitive file system.
  • Changed the logic that controls how pagination is shown in templates. The data-role="tablePagination" element should now always exist in the table DOM; it will be shown/hidden dynamically if pagination is required after AJAX requests.
  • Fixed an error that can occur when dev sync runs if you are not logged in and the application has a whatsnew.json file in its latest version folder.
  • Fixed broken progress bar when enabling designers mode.
  • Fixed numeric values passed to the REST API /core/members/{id} endpoint not always adjusting the property, and sometimes causing an SQL error.
  • Fixed the "Upcoming Events" widget not showing when developer mode is enabled.
  • Fixed an issue using the hide option for contentAction when deleting a member via the REST API.
  • Fixed eq() pseudo-selector no longer being supported in theme hooks.
  • Fixed required() pseudo-selector not working in theme hooks.
  • Fixed \IPS\Content\Statistics not working for applications that use a database column prefix.
  • Fixed theme hooks on Forums > index > forumGridItem not working as expected.
  • Fixed a missing redirect when hiding comments using multi-moderation on classes that do not define a $hideLogKey property.
  • Fixed the constructor for \IPS\nexus\DomainLookup not honoring the $performWhoisLookup parameter.
  • Fixed some inconsistent HTML with building the quick search menu options.
  • Fixed an error that can occur when sessions are cleared.
  • Fixed a bug where a notification flash instance without an image passed (i.e. a notification with no author) results in a broken image.
  • Fixed an issue where it was not possible to use form headers in widget configuration forms.
  • Fixed installing plugins generating an invalid widgets.json file.
  • Fixed an error deleting Pages templates in the AdminCP when developer mode is enabled.
  • Fixed issues adding/editing database indexes for applications.
  • Fixed an issue where you could not hook into \IPS\Redis.
  • Fixed an undefined index notice parsing valid ICS feeds with no events in them.
  • Fixed an inaccurate Redis log entry indicating read server used instead of write server.
  • Abstracted code in \IPS\core\modules\admin\members\members::export() to make it easier to apply hooks to member list exports.
  • Removed ability to reorder queries for upgrader in the developer center. Developers should manually reorder the JSON file if necessary.
  • Removed the onOtherAppUninstall() method from application Uninstall extensions in favor of onOtherUninstall().
  • Removed several deprecated methods and properties throughout the Suite and verified core code no longer references those methods and properties.
  • Enforced the $type parameter for \IPS\Email::buildFromContent() and \IPS\Email::buildFromTemplate() with an error if the type is not specified.
  • The markRead() method will no longer consider an updated column if last_comment or last_review is defined.
  • A number of caching improvements have been implemented, please make sure your pages are sending no-cache headers if you do not want them cached.
  • Non-AJAX requests that retain a CSRF token in the URL with a 200 response code will now trigger a development error recommending to redirect the request or otherwise remove the CSRF token. Leaving a CSRF token in the URL while generating a page can represent a security risk if remote images (for example) are embedded on the page, as the CSRF token could be susceptible to interception by the remote party.
  • Support for notification sounds in the browser has been removed. If you rely on playing sounds, you will need to implement this functionality in your application.
  • Add new method was added to the IPS\Content\Item class which is called when an item is deleted. It's receiving the comment/review ids which are going to be deleted, allowing you to remove any additional cleanup calls based on the comments and reviews in this item.
  • Updated the ModCP content restore (soft delete) to use the built in restore() method instead of using its own code.
  • Account settings will no longer prompt for re-authentication if the account does not have a way of re-authenticating. Applies mostly to custom SSO integrations.
Important Method Changes:

  • Added a $seperator parameter to \IPS\CustomField::displayValues which can be used to define a custom seperator when displaying multiple values .
  • Updated method signature for \IPS\Node\Model::getLastCommentTime().
  • Added a $count parameter to \IPS\Content::definiteArticle/_definiteArticle(). If an integer is passed, a pluralized phrase will be used, if available. You should add pluralized strings for any __defart_* strings you've already created. The key should be in the format __defart_*_plural.

Key Changes​

This is a maintenance release to fix bugs.

Additional Information​

Security

  • Fixes an XSS vulnerability when quoting posts and comments.
  • Fixes an XSS vulnerability when lightbox images are built.
  • This release also contains the patch from 4.5.4 that resolves a security issue with the Downloads REST API
Core

  • Fixed an issue moving Icons & Logos to a new storage handler when one or more of the images is broken.
  • Fixed an issue when logging in with LinkedIn.

Key Changes​

This is a maintenance release to fix bugs.

Additional Information​

Core
  • Changed follow pruning to not prune member follows.
  • Changed deprecated phpredis zSize alias calls to use the proper zCardmethod call instead.
  • Optimized the Legacy Parser (used in 3.x upgrades and conversions) when it's used more than once in one process.
  • Clarified content anonymization option on Member REST API delete documentation.
  • Clarified visibility option for feed widget blocks.
  • Optimized the prune IP Address process.
  • Updated Mapbox API calls to be compatible with newer Static Tiles API.
  • Reduced MySQL query count in some areas.
  • Losing merged topics now redirect to the winning topic when accessed via search engines, bookmarks, etc.
  • Removed 'unread' dot from messenger list since it did not behave consistently with other places in the suite.
  • Added a support tool and upgrader check to verify that InnoDB tables are not using Compact row format.
  • Added some canonical tags for SEO purposes.
  • Added the ability to rebuild historical posted content to change the 'rel' attributes of links.
  • Added a missing language string present in certain form elements asking for time intervals.
  • Applied a change to prevent Ezoic preventing the Marketplace login process.
  • Applied limits to CSS width, height and border-width properties for posted content to prevent page layout concerns.
  • Reduced overhead when using S3 with a PNG favicon image.
  • Fixed an issue where attachments are not properly claimed for status updates.
  • Fixed an issue where newly submitted content may appear unread initially.
  • Fixed an error resending failed emails from the email error logs.
  • Fixed "someone linked to your content" notifications sending duplicates when editing the content containing the link.
  • Fixed an issue where edit log history may show that entries are pruned after "-1 days".
  • Fixed an issue with certain templates that caused them to always be flagged as modified in every release.
  • Fixed an issue where theme setting changes could take affect in the AdminCP.
  • Fixed an issue with tag URLs that contain ampersands (&) in the tag.
  • Fixed an issue with the database checker adjusting database indexes.
  • Fixed an issue where reported content shows as unread if there are no item markers stored for the member.
  • Fixed an issue where disabled registrations prevented new users from being able to set a local password.
  • Colors for active pagination items have been updated to use the pagination_active theme setting.
  • Fixes an issue where caching prevented an updated resource image from being displayed.
  • Fixed an error with large files that have extremely long filenames.
  • Fixed an error when S3 buckets have a dot ('.') in the bucket name which resulted in broken download URLs.
  • Fixed an issue where uninstalling plugins would not clean up block manager configuration.
  • Fixed an issue with the permission matrix where checking an entire column also checks disabled checkboxes.
  • Fixed an issue where old image proxy URLs may not properly return a 410 Gone response to search engines.
  • Fixed broken links to comments that have been promoted on the Our Picks page.
  • Fixed an issue with the main navigation bar support link in the AdminCP that may launch the support wizard in the last saved step.
  • Fixed an issue where the JS controller auto-loader may not work.
  • Fixed a layout issue when managing advertisements in the AdminCP.
  • Fixed a minor grammar issue present when configuring club moderators in the AdminCP.
  • Fixed some minor broken HTML tags in club headers.
  • Fixed an issue where in extremely rare cases, the MySQL database password may be included in debug information for administrators in the AdminCP.
  • Fixed an issue where some streams incorrectly state there is no more activity to view.
  • Fixed an issue where dropdown menu items could not be re-ordered.
  • Fixed an issue where links to new items in personal messages could be incorrect.
  • Fixed an issue where Redis could consume a lot of memory on busy sites.
  • Fixed an issue where announcements with a far past date could cause an error.
  • Fixed an issue where the per content item moderator approval permission would not apply correctly.
  • Fixed an issue where dismissing an AdminCP notification may not take effect until the page is refreshed.
  • Fixed a missing upgrader language string.
Forums
  • Adjusted default archiving configuration for Community In The Cloud customers.
  • Fixed an issue where search index permissions may not be updated correctly when toggling "can view other topics" setting.
  • Fixed Archived Posts throwing an error when a newly archived post is in Our Picks.
  • Fixed per-forum themes not working correctly.
  • Fixed an issue where long Hidden Reasons in posts would cause an overflow.
  • Fixed a missing javascript confirmation when clicking "Mark forum as read" from within a forum.
  • Fixed "Most Votes" forum sorting option being presented in non Q&A forums.
  • Fixed an issue where moved topic links, merged topic links and deleted topics and posts were counted in ACP statistic graphs.
  • Fixed an issue where merging topics would not update the topic summary.
  • Fixed an issue where topic and post 'by forum' statistics could time out when there are numerous forums.
  • Fixed an issue where the URL for the latest comment in an archived question would show an EX0.
Pages
  • Fixed an issue where long strings such as code blocks may stretch the page layout in databases.
  • Fixed an issue importing databases with multiple upload fields.
  • Fixed an issue where thumbnail settings for record images were lost when importing a database.
  • Fixed an issue where comments have padding removed after editing when comments are linked to a forum.
  • Fixed an issue uploading some images as record images in Pages using Firefox.
  • Fixed an issue where it was not possible to have more than one unique field left empty.
Commerce
  • Restored a task that helps keep PayPal billing agreements in sync.
  • Added an option to manually check PayPal billing agreements for any missed transactions.
  • Fixed an error attempting to downgrade an expired subscription.
  • Fixed an issue where the VAT number input would show as required.
  • Fixed an error checking out using PayPal and Braintree in certain configurations.
  • Fixed an error using an Upload field type as a custom customer field.
  • Fixed an issue where active subscription badges could appear on top of menus.
  • Fixed broken HTML in the "Featured Product" widget.
  • Fixed possible timeout when applying discounts to high values.
Calendar
  • Fixed an issue with weekly recurring events that recurred less frequently than every week.
Downloads
  • Removed the ability to renew a paid file when the member cannot download the file.
  • Fixed an error adding custom fields if Commerce is not installed, or if paid file integration is disabled.
Gallery
  • Fixed an issue where the link to albums was missing from new image email notifications.
  • Fixed a performance issue with the Gallery when clubs are enabled but set not to show throughout the community.
Converter
  • Added 'edit name' and 'edit reason' to posts converted from phpBB.
  • Fixed an issue where converted phpBB word filters may be too greedy.
  • Fixed an issue where banned members were not banned after conversion from phpBB.

Changes affecting third-party developers and designers​

  • Added a new constant DEV_DISABLE_ACP_SESSION_TIMEOUT that allows developers (IN_DEV must be enabled) to disable the ACP session timeout check.
  • Creating a plugin now creates a 1.0.0 version entry by default.
  • Updated the Notifications extension template.
  • Removed the undoOnly parameter in the /core/members/{id}/warning/{id} deletion endpoint and added a deleteOnly parameter in its place.
  • Removed an unused variable in the \IPS\Helpers\Form::customTemplate() method.
  • Clarified an error message that can occur when installing a plugin with IN_DEV enabled.
  • Fixed an issue with applying template hooks to core > front > modcp > reports.
  • Fixed some various REST API bugs.
  • Fixed an issue where CSS templates weren't imported while installing a plugin while IN_DEV is enabled.

Key Changes
We are pleased to announce that Invision Community 4.5 is now available and packed with new features, enhancements, and even a new look!
Major New Features / Enhancements
- New Front-End Design
- AdminCP Dark Mode
- Site Statistics, Search Insights, and Club Statistics
- Marketplace now built into the AdminCP
- Mobile App for iOS and Android (Beta)
- Zapier Integration for Invision Cloud Communities
In addition to these new enhancements, there are countless other additions and improvements. Check out our product blog to see what we have been up to.
Before Upgrading
Before proceeding with your upgrade, please note that all third party resources are disabled during the upgrade process. We strongly recommend ensuring that all of your installed applications, plugins and themes have Invision Community 4.5 compatible updates available to allow continued use.
Please see the full release notes for other important changes, feature removals and deprecations.
Additional Information
Deprecations
The following items have been marked as deprecated in Invision Community 4.5. This means that while they currently work, they will be removed in a future version and will no longer receive bug reports.
Commerce:
  • Authorize.net Payment Gateway.
  • Web Hosting & Domain support.
Core:
  • BBCode parsing support - upgrading users will be asked during upgrade if they wish to retain BBCode parsing support, while new installations will have the option off by default.
  • APC, Memcache, Wincache and Xcache caching engines , we recommend using Redis instead.
Feature Removal
The following features have been removed in Invision Community 4.5.
Core:
  • We will no longer address any issues specific to Internet Explorer 11 and below and will not ensure compatibility with those versions.
  • ImageProxy has been removed. On upgrade, there is an option to restore the original remote image links, or direct links to the cached image which will be retained.
Downloads:
  • REST API 'files' response in REST API, see /downloads/files/{id}/download instead.
Latest Changes
Core

  • Fixed an error when upgrading from IPB3.
  • Added a safe search option for Pixabay.
  • Upgraded CKEditor to 4.15.
  • Set highest compatible Elastic Search version to 7.6.2
  • Fixed a potential JavaScript error when the "Maximum image dimensions to display" setting is set to blank.
  • Fixed an issue with certain type-ahead fields, such as the "Allowed file extensions" setting in the AdminCP.
  • Fixed an error that can occur with certain URLs during the image proxy removal background task.
  • Fixed an issue where guests are able to post in public clubs.
  • Fixed an error that can occur when attempting to join a club that requires rules to be acknowledged.
  • Fixed missing Club Members page pagination.
  • Fixed an issue where a user can reach the change password page under Account Settings by visiting the URL directly even if they are unable to set a local password.
  • Fixed an issue where duplicated HTML menu IDs could lead to moderating an unintended review or comment.
  • Fixed CSV Chart Export resulting in an CSRF error.
  • Fixed license key expiry notification "Check Again" button producing a CSRF error.
  • Fixed an upgrade error that can occur with certain table prefixes.
  • Fixed an error when exporting members with custom fields.
  • Fixed an error setting the default application if no existing application is set as the default.
  • Fixed an error running the UTF8MB4 conversion step from the AdminCP.
  • Fixed an error that can occur when very long status updates or replies are rebuilt following the 4.5.x upgrade.
  • Fixed an issue where posts outside of the current topic could show in the popular posts section of the new topic summary sidebar.
  • Fixed the s3Delete task throwing an error if Theme resources were changed to a different file storage configuration.
  • Fixed an issue where it was not possible to embed external media with the allow remote images setting disabled.
  • Fixed an issue when installing/updating applications with bundled Pages Templates.
  • Fixed an issue displaying the progress for the background task that prunes large tables.
  • Fixed tasks for plugins not working in Community in the Cloud.
  • Fixed an issue where AdminCP theme resources & CSS may not be cleaned up.
  • Fixed a CSRF error when paginating through search statistics in the AdminCP.
  • Removed the ability to add a demo site to the mobile app directory.
  • Removed an invalid "Hide (user) signature" option when the user is unable to ignore a given member.
  • Fixed a UI issue with messages where the background of the header would sometimes be incorrectly colored.
Pages
  • Fixed link to "Edit Templates" when adding or editing a database reloading the page.
  • Fixed a potential undefined variable error while IN_DEV.
  • Fixed an error adding a record to a database not embedded into a page.
  • Fixed an error running the background task to remove the image proxy from Pages databases that have content fields which do not hold textual content (i.e. Date fields set as the content field).
Commerce
  • Fixed an issue where clicking through tabs while configuring a custom product on an invoice may result in the group being reset.
  • Fixed an issue where deleting client notes failed because of a csrf error.
  • Fixed an error applying a tax rate to a custom package when generating an invoice in the AdminCP.
  • Added missing "Consumer" and "Business" options when entering addresses during checkout with business tax rates enabled.
  • The legacy referrals section will now redirect to the new location in the system application.
Forums
  • Fixed an issue where restricted moderators with permission are unable to view topics in forums that do not allow topics to be viewed by other users.
  • Fixed an issue where topics with thousands of replies can be slow to load.
  • Fixed a potential timeout attempting to delete topics if old invalid remote archive database credentials are stored.
  • Fixed the clearincompletemembers task locking if an old remote archive database was configured but is no longer available.
  • Fixed an issue where forums may not load in the GraphQL API.
Downloads
  • Fixed an issue where linked files and screenshots may not be handled properly when submitting new versions.
  • Fixed an issue where topics with thousands of replies can be slow to load.
  • Fixed an issue with topic meta data bubbles showing the topic author as having performed moderator actions in some cases.
  • Fixed an error that can occur if an invalid post is marked as the solution for a topic.
Blog
  • Fixed a potential SQL error when upgrading.
  • Fixed an error that can occur if a blog entry is moved between blogs.
Gallery
  • Fixed an error downloading video files when downloaded images are set to be watermarked.
  • Fixed a timeout issue that can occur when rebuilding Gallery images.
  • Fixed an issue where long, unbroken image names could stretch gallery widgets on mobiles.
Calendar
  • Fixed an issue where editing an all day calendar event may result in the event shifting forward or backward by one day on the edit form.
  • Fixed an issue where repeating events may range on multiple days incorrectly.
Changes affecting third-party developers and designers
  • Fixed hooks.json not being rebuilt after deleting a plugin hook.
Key Changes
We are pleased to announce that Invision Community 4.5 is now available and packed with new features, enhancements, and even a new look!

Major New Features / Enhancements

- New Front-End Design
- AdminCP Dark Mode
- Site Statistics, Search Insights, and Club Statistics
- Marketplace now built into the AdminCP
- Mobile App for iOS and Android (Beta)
- Zapier Integration for Invision Cloud Communities

In addition to these new enhancements, there are countless other additions and improvements. Check out our product blog to see what we have been up to.

Before Upgrading
Before proceeding with your upgrade, please note that all third party resources are disabled during the upgrade process. We strongly recommend ensuring that all of your installed applications, plugins and themes have Invision Community 4.5 compatible updates available to allow continued use.

Please see the full release notes for other important changes, feature removals and deprecations.



Additional Information
Deprecations

The following items have been marked as deprecated in Invision Community 4.5. This means that while they currently work, they will be removed in a future version and will no longer receive bug reports.

Commerce:

  • Authorize.net Payment Gateway.
  • Web Hosting & Domain support.
Core:

  • BBCode parsing support - upgrading users will be asked during upgrade if they wish to retain BBCode parsing support, while new installations will have the option off by default.
  • APC, Memcache, Wincache and Xcache caching engines , we recommend using Redis instead.
Feature Removal

The following features have been removed in Invision Community 4.5.

Core:

  • We will no longer address any issues specific to Internet Explorer 11 and below and will not ensure compatibility with those versions.
  • ImageProxy has been removed. On upgrade, there is an option to restore the original remote image links, or direct links to the cached image which will be retained.
Downloads:

  • REST API 'files' response in REST API, see /downloads/files/{id}/download instead.


Security

  • Improved password strength checks to detect password values set identically to the account username or email address and to consider them weak.
  • Improved method of encrypting certain text.
  • Improved AdminCP session handling, removing the session ID from URLs and introducing alternate CSRF protections.
  • Improved email change process to invalidate any pending password reset requests.
  • Fixed user not being prompted for two-factor authentication when signing in from a new device.
  • Fixed an issue where it was possible to bypass the messenger recipient count limit.
  • Fixed a niche issue where it was possible in certain configurations to view others profile field attachments on the registration page.
  • Fixed a race condition issue where it was possible to artificially inflate or reduce a user's reputation score.
  • Limited password inputs to 72 characters max to reduce the chance of a malicious user forcing unnecessary computationally expensive operations on the server.
  • Fixed an issue where AdminCP sessions may be usable longer than expected if a community receives little activity.
Core

  • Added beta of Zapier integration for Invision Cloud communities.
  • Added new activity feed and twitter feed widgets
  • Added new view modes, enhanced existing and added more functionality to topic view.
  • Added an initial onboarding screen in the AdminCP for new installations.
  • Added the ability to filter members in the AdminCP by rank.
  • Added the ability to mark a post as the solution without needing the full QA mode.
  • Added the ability to ony show a preview of new private message / new content email notifications to stimulate re-engagement back to the community.
  • Added the ability to have TikTok links become embeddable in an editor.
  • Added the ability to select from stock photos when uploading images.
  • Added the ability to disable advertisements on non-content pages and error pages.
  • Added support for chunked uploading to Amazon S3 which allows for larger file sizes to be uploaded.
  • Added support for PHP 7.4.
  • Added support for Sign in with Apple.
  • Added support for version 4 of the bit.ly link shortening API.
  • Added new options to prune follows, known IP addresses, known devices, and item markers, and default options for some existing prune options have been updated.
  • Added the ability for Club Owners and Leaders to create and manage static pages within their clubs.
  • Added the ability to show content messages only to staff members (moderators).
  • Added a list of members who reacted to content in the tooltip when hovering on the reaction icon.
  • Added overview statistics pages in the AdminCP.
  • Added the plugin version to the ACP plugin list.
  • Added a type-ahead search option when selecting tags from a closed tag input field that contains more than 20 tags.
  • Added support for non-English searches in Giphy when the site is using a language Giphy supports.
  • Added additional static-type links to the sitemap file.
  • Added the ability to filter by custom profile fields in bulk mail, group promotions and exporting member lists.
  • Added the ability to create custom phrases within the language system.
  • Added the Invision Community Marketplace to the AdminCP.
  • Statistics can now be downloaded as CSV files.
  • Added the ability for Club Owners and Leaders to manage the visibility of the members page.
  • Improved referrals tracking and introduced a global community invite feature.
  • Improved the live meta tag editor.
  • Improved performance of several areas of the software.
  • Improved in-AdminCP upgrader to be able to handle more types of upgrades and improve reliability.
  • Improved "Allowed characters in display names" setting to give pre-defined options.
  • Improved performance of thumbnail generation.
  • Added a setting that determines which comment you see first when opening an item.
  • Added the ability for administrators to force users to reset their passwords.
  • Added pending club invites to the club directory sidebar.
  • Added a setting to disable automatic language detection.
  • Added the ability for members to cancel club join requests.
  • Added the ability to include club content to widgets.
  • Added the ability to include/exclude widgets in clubs.
  • Added an AdminCP statistics page for Clubs.
  • Added search term tracking and a statistics page to monitor search term usage.
  • Added a clarification notice to the edit log on the front end when edit logs are pruned.
  • Added a friendlier error message when uploads fail due to a server problem.
  • Added current percentage completed to progress bars.
  • Added ability to filter reputation given and received statistics in the AdminCP by date.
  • Added a check for the PHP file_uploads configuration directive to the support tool.
  • Added theme settings to set maximum logo width at each device size.
  • Changing the default application will be logged to the ACP Admin Log.
  • Added ability for club leaders to specify rules for a club, and force members to acknowledge them.
  • Added the database name and username to database queries to identify slow queries between multiple installations on a single database server.
  • Removed the separation by app in the block manager.
  • Removed the ability to import profile photos from a remote URL to improve security.
  • Removed the image proxy feature to improve security.
  • Removed Digg and Delicious share links.
  • Removed the "What's New" link from the user menu in the AdminCP if the administrator is restricted and cannot reach the page.
  • Removed the newsletter widget from showing in the sidebar by default on new installations.
  • Improved display name availability check when name contains multiple concurrent spaces.
  • Improved memory usage when uploading large images by handling resizing and rotation in the user's browser, rather than by the server.
  • Improved GeoIP lookup caches to store for longer periods of time.
  • Improved randomization for widgets that order by "random".
  • Improved logging of curl-related errors to include the URL that curl attempted to connect to.
  • Improved host detection for guest page caching.
  • Minor styling updates for embeds.
  • Logging in anonymously is now more reliably tracked across multiple devices.
  • Long quotes will now automatically truncate with a "Read more" link to expand the quote to improve usability when long quotes are used.
  • Updates search compatibility for Elastic Search 7.
  • Upgraded CKEditor to 4.14.1.
  • Flagging a member as a spammer will now remove any profile cover photo they may have uploaded.
  • The clubs map now centers around available clubs rather than showing a whole world view.
  • Changed the redirect targets from clubs, to redirect to a club feature after the feature creation and when a member joines a club.
  • Changed the "Maintenance Tasks Not Running" admin notification to check for two or more tasks that have not ran to reduce false positive notifications in the event a feature is enabled which enables a task which has not ran in a long time.
  • Restored the ability to view a list of members through the advanced search without appending unnecessary extra parameters to the URL.
  • Adjusted certain code to remove reliance on MySQL functionality deprecated as of version 8.0.17.
  • Changed the parser to allow <picture> HTML tags through to prevent errors with RSS imports that may use them.
  • Changed the content deletion process so that reports related to the content are no longer deleted.
  • Added logging out as a controller that can bypass forced account completion when a login handler cannot prepopulate a username or an email address.
  • Added rel="nofollow" to certain links in order to instruct search engines not to follow them.
  • Added the ability to export member reputation points when downloading a member list from the AdminCP.
  • Added a confirmation dialog to the "Restore default streams" button in the AdminCP.
  • Improved Google Maps setup page in AdminCP.
  • The Report Center now properly handles content pending deletion.
  • Updated Google Charts to use the latest API (v47).
  • Improved editing a members secondary group by automatically switching between Checkboxes and a Select menu depending on how many groups are present.
  • Improved the way how traffic run tasks are called.
  • Updated the email failure AdminCP notification to run on login instead of email send.
  • Updated the recommended PHP version to 7.3.
  • Search result snippets are now truncated on the server before being served to the browser to increase efficiency.
  • Tags are now shown in search results/streams on mobile devices.
  • Updated the URL used for Twitter oEmbed requests.
  • Added support for converting words to links as well as acronyms in posting settings.
  • Adjusted Easy Mode theme editor to remove support for gradients and simplify the user interface. Added support for 'invert' to easily create dark themes.
  • Fixed an issue where some nodes may not be available in various areas of the software (for instance, forums not being available to move subforums to when deleting a parent forum, and custom Pages blocks not being available to select in the widget manager).
  • Fixed attachments not being claimed when added to Club Editor custom fields.
  • Fixed an issue where admin-validated post-before-register accounts would not trigger follow notifications to be sent.
  • Fixed an issue where bulk mail content count filters caused an error.
  • Fixed an issue where editing a comment and using a word filter entry configured to hold the content for moderator approval may not actually do so.
  • Fixed an issue where stream filters were not updating when the time period was changed.
  • Fixed an issue where items in the main menu "more" overflow can appear in the wrong order.
  • Fixed public club content not showing in streams and searches for guests.
  • Fixed an issue where anonymous users may be displayed in the "Who's Online" widget.
  • Fixed an issue where the files overview member link targeted the wrong location.
  • Fixed an issue where admin control panel failed mail notifications could show a template error.
  • Fixed an issue where predefined tags would not show in category settings when using a closed system.
  • Fixed an issue where searching PMs would only show 25 results.
  • Fixed an issue where incomplete members may not be cleared out of the database.
  • Fixed an issue where Mapbox geolocation could return invalid location data in some circumstances.
  • Fixed an issue where mass moving/pruning members could return no results.
  • Fixed an issue where choosing to move club content while deleting a club resulted in that content being deleted instead of being moved.
  • Fixed an issue where 'and' could be duplicated in lists of followers.
  • Fixed an issue where the selected security questions during registration may reset if the form reloads with an error.
  • Fixed an issue calculating member's age in some locations.
  • Fixed an issue where groups could not be configured to allow reporting of personal conversations.
  • Fixed an issue where HTML advertisements could be saved without any HTML code, resulting in a PHP notice being triggered when previewing the ad.
  • Fixed an issue where dates can show in the wrong format in some configurations.
  • Fixed an issue where uninstalling an application may leave behind attachments for that application.
  • Fixed an error that can prevent inline notifications from showing up.
  • Fixed an issue where the stream condensed/expanded toggles did not work when visiting the URLs directly.
  • Fixed an issue where multimoderaction actions on ony page would redirect to the first page.
  • Fixed a conflict that can occur when two or more external databases are set up for login handling.
  • Fixed an issue where it was possible to bypass profanity filters when using quick title edit.
  • Fixed an issue where the requirement checker may not highlight issues with a storage configuration if only one exists.
  • Fixed an issue where the wrong file size may be shown in upload errors.
  • Fixed an issue where content types that are not searchable may be shown as filter options in streams.
  • Fixed an issue where the support tool would not clear guest page caches.
  • Fixed an issue where personal conversation replies cause a member's "last post" date to be reset incorrectly.
  • Fixed an issue where it was not possible to comment on a reported status update.
  • Fixed some issues with status update/profile comment submissions that fail due to being too large.
  • Fixed an issue where the default module may not be correctly set when installing a new application.
  • Fixed an issue where meta tags could be added to pages they were not intended for.
  • Fixed an issue where group promotion rules for date joined, last posted and last visited may not match correctly.
  • Fixed an issue where disabling clubs in the settings would still leave the "Allow club moderators" setting visible.
  • Fixed an issue where RSS exports may not show all available areas.
  • Fixed some issues tracking and resetting limits when a per-post attachment limit is applied to a group.
  • Fixed an issue where giphy thumbnails may show distorted if your "Maximum image dimensions to display" setting is set very low.
  • Fixed an issue where guest cache may throw an error if a database issue is encountered.
  • Fixed a potential issue that can occur when upgrading with InnoDB tables when MySQL is set to use MyISAM by default.
  • Fixed an issue where unnecessary profile sitemap files may be processed.
  • Fixed a javascript error that can occur due to lazy loading in some cases.
  • Fixed an issue where the drag handles may not show up correctly when attempting to adjust the tab order on the club nav bar.
  • Fixed an issue where certain URLs may not be fetched as expected.
  • Fixed an issue where members that can hide their own content may not people to hide items when creating them.
  • Fixed an issue where blog entries do not update club last activity time.
  • Fixed an issue where it was not possible to move club content to other clubs when deleting sections.
  • Fixed an issue with certain embeds (such as Spotify) in certain environments.
  • Fixed an issue where the "Flagged as spammer" email notification would be missing the details about who was flagged as a spammer.
  • Fixed Unsubscribe Links not working in some cases when Email Link Tracking is in use.
  • Fixed an issue where resorting hidden content in the Moderator CP redirects you to the report center.
  • Fixed an error viewing reports of content items queued for deletion.
  • Fixed signature images not displaying in the AdminCP when image lazy loading is enabled.
  • Fixed an issue where editing content meta messages will not show existing attachments on the edit form.
  • Updated HTMLPurifier to 4.12.0.
  • Removed the ability for an administrator to override a user's time zone.
  • Centralised RSS importing and added support for image enclosures on export and import.
  • Fixed an issue where multiple YouTube embeds in an editor could lead to the editor wrapper overflowing its bounds.
  • Fixed default country when entering an address being incorrectly detected for some users.
  • Fixed an issue where restoring certain default menu items resulted in missing language strings.
  • Fixed an issue where two moderator groups applying to a single user may allow the user to revoke warnings even if they do not have permission.
  • Fixed an issue where carousel widgets would not be scrollable in certain configurations.
  • Fixed certain content links such as links to direct posts not always taking you to the correct page in a multipage topic.
  • Fixed an issue where setting a limit for the maximum items on a sitemap would include the oldest instead of the newest content.
  • Fixed an issue where a 'flash of unstyled content' may appear in Firefox when lazy-loading embedded content.
  • Fixed an issue in the AdminCP where a tooltip would appear off the edge of the screen where a member had no display name set.
  • Fixed an issue where deleting a reaction would not redirect back to the reputation settings tab.
  • Fixed an issue where terms and tags can be removed from search queries in some circumstances.
  • Fixed an issue where some addresses could be saved with a location unintentionally.
  • Fixed a styling issue with the 'Back Button' in the Menu Manager.
  • Fixed potentially being sent to a random page when splitting comments from one content item to another content item.
  • Fixed an issue where deleting reactions would leave the images on the file system.
  • Fixed some structured markup validation concerns.
  • Fixed an error that can occur for guests who have chosen to use a theme which is subsequently deleted.
  • Fixed an SQL error during certain (intentionally invalid) AdminCP login attempts.
  • Fixed an issue where a database can occur if the login form is submitted with no credentials supplied in specific scenarios.
  • Fixed an issue where clubs may reflect an incorrect last activity date.
  • Fixed an issue where signature options would still show when ignoring users even with signatures disabled.
  • Fixed an issue where the member last visit time may not be set for new members.
  • Fixed an issue where checkbox set custom fields could not be set as searchable.
  • Fixed an issue where an administrator who could manage member moderators or group moderators (but not both) will not see the correct options when adding moderators.
  • Fixed extraneous spaces/newlines displaying on some forms.
  • Fixed an issue where partially uploaded files can be orphaned on disk.
  • Fixed an issue where topic links were not correctly using the user unread/first/last post preference.
  • Fixed an issue where members could be informed they were on mod queue because of a warning that had already expired.
  • Fixed an issue where already pending post before register content is not processed if the feature is disabled.
  • Fixed an error that can occur when a cron-based request results in content being parsed, such as when running tasks via cron following an upgrade from 3.x.
  • Fixed an issue where saving group display name changes with blank values caused an error.
  • Fixed a potential SQL error that can occur when upgrading from IP.Board 3.4.9.
  • Fixed an issue paginating in tables when certain special characters were included in the URL.
  • Fixed a potential error that can occur when uninstalling some third party applications.
  • Fixed an issue with language pack list formats when first adding a new language pack.
  • Fixed an issue where when lazy-loading is enabled, a lightbox would not be available for images that had not yet loaded into the browser.
  • Fixed an issue where the REST API would return an error while fetching a clubs data.
  • Fixed an issue where clicking Back in a browser after navigating to a new page of a table would not load the correct content.
  • Fixed an issue where dropdown menus in the main navigation bar may disappear when moving the mouse cursor.
  • Fixed a styling inconsistency in the AdminCP with the clubs page when clubs are disabled.
  • Fixed an EX0 error that can occur with widgets in specific configurations.
  • Fixed an issue where deleting a comment or review may incorrect update the count on the respective tab or remove the tab altogether.
  • Fixed clicking a tag not working when Friendly URL's were disabled.
  • Fixed an issue where certain columns would not be automatically detected when importing members from a CSV.
  • Fixed an error viewing clubs on PHP 7.4.
  • Fixed an issue where anonymous users may show online to administrators when they are not online.
  • Fixed Twitch embeds broken following an update on Twitch.tv.
  • Fixed an error using advanced table searches on PHP 7.4.
  • Fixed excess whitespace being included in the editor when certain text is used in an editor for a promoted item.
  • Fixed an issue using the "insert existing attachment" feature in the AdminCP in some cases.
  • Fixed some outdated phrasing when unsubscribing from emails.
  • Fixed an issue where the "Keep aspect ratio" option when editing image dimensions in the editor may not default correctly.
  • Fixed an incorrect message showing when banning an account in the AdminCP.
  • Fixed an issue where links in plain text emails could break with click tracking enabled.
  • Fixed editor buttons not replacing multiple instances of a {content} variable.
  • Fixed an inability to edit a post containing a badly embedded quote.
  • Fixed an issue where emoji may still replace in the editor even if the setting is disabled.
  • Fixed background task progress bar reporting incorrectly in some cases.
  • Fixed quicksearch menu closing on the front end when clicking on certain rows instead of the labels directly.
  • Fixed some javascript errors that can occur when the page is updated via AJAX.
  • Fixed an SQL error that can occur during upgrades in some cases.
  • Fixed page title reflecting "undefined" when editing permissions for certain editor buttons in the AdminCP.
  • Fixed some buttons in the AdminCP moving into the page header out of the tab the button belongs to when reloading the page.
  • Fixed the "note for member" field when warning a member being wiped when the reason for the warning is changed.
  • Fixed an issue where the REST API can output other members 'last activity' times regardless of anonymous setting.
  • The "Mobile Nav Background" theme setting has correctly been renamed to "Main Nav Background".
  • Fixed a broken page layout on the Username History page.
  • Attachment titles are no longer excessively cropped vertically.
  • The Reconfirm Terms page has been wrapped in .ipsBox to improve contrast in certain themes.
  • Notifications to the author are no longer sent for linked content inside quotes.
  • Fixed an issue where "Posting" and "Profiles" AdminCP menu items may not show even if the restricted administrator has access to parts of them.
  • Fixed an issue where validating members showed in search results.
  • Fixed an error with Windows that can cause certain date and language string values to be broken.
  • Fixed template disk cache files not being made writable in some environments.
  • Fixed an issue where invalid SMTP email credentials could cause content to be posted twice in some cases.
  • Fixed performance issue sending usage report.
  • Fixed an issue viewing all reactions for individual comments.
  • Removed certain logging when using OAuth2 which was unnecessary and could consume a lot of database space.
  • Fixed an issue where the front session handler may be unintentionally started when using \IPS\Output::i()->sendOutput().
  • Removed the Delete and Flag As Spammer buttons from member rows when filtering on groups.
  • Fixed an issue where the front session handler may be unintentionally started when using \IPS\Output::i()->sendOutput().
  • Fixed an issue where uploading a new emoticon with IN_DEV being enabled would result in an exception with PHP 7.4.
  • Fixed an issue where a previous bug could cause the remote image proxy task to error.
  • Fixed an issue sorting personal conversation IP address lookup results by date in the AdminCP.
  • Fixed birthdays sometimes not showing on profiles.
  • Fixed an issue where profiles of users that have followers disabled would show an error with PHP 7.3.
  • Fixed an issue where newly created club icons do not show when editing.
  • Fixed mobile Twitter links not automatically embedding.
  • Fixed a rare error that can occur when deleting a block using the block manager.
  • Fixed an issue where copying a node (such as a forum) that had content pending moderator approval can result in the new node indicating there is content to approve when it is empty.
  • Fixed an error preventing certain image uploads pasted into the editor from uploading correctly.
  • Fixed an issue where it may not be possible to save the 'exclude groups from leaderboard' setting.
  • Fixed an issue displaying colored emoji in some environments.
  • Fixed an issue where the live meta tag editor wouldn't save the form if only the site title was set without having any further tags.
  • Fixed autocomplete fields not initially expanding to show all text when a value is pasted into the field.
  • Fixed deleting a category, while also deleting children, not deleting child categories further than the first child level.
  • Fixed an issue where new comment notifications could show guests in the commenter list when using post before register.
  • Fixed an issue where club filter options would show in activity streams when no clubs were available.
  • Fixed an issue where it was not possible to complete a password reset if the community was offline and email click tracking was enabled.
  • Fixes an invalid “Thank you for vote” message when voting validation fails.
  • Fixed an issue where deleted comments in certain applications may still show inline to moderators with approval to view them.
  • Fixed an issue where setting up 2FA Security questions would result in an error with PHP 7.4.
  • Fixed an issue where coverphotos set to bottom-align on desktop would show gapping on mobile.
  • Fixed an issue where large images in emails may not behave responsively on all devices.
  • Fixed page title duplicating in the Twitter share box when clicking the Twitter share link.
  • Fixed an undefined variable in an upgrader HTML template.
  • Fixed an issue with carousels not advancing to the next image in some edge cases.
  • Fixed an issue where paginating in a comment feed (e.g. a topic) wouldn't work reliably if an anchor (e.g. #comment) was present in the URL.
  • Fixed an issue where users may be incorrectly prompted about new replies in a topic when navigating to a different page via the "back" button.
  • Fixed an issue in the mobile hamburger menu where sub-items may appear to be 'missing' because the menu is actually scrolled down too far.
  • Fixed issues with submenus sometimes opening off-screen when on small devices or when using an RTL language.
  • Fixed an issue where in certain situations, autocomplete results would be incorrectly positioned on mobile devices.
  • Fixed an issue where hovercards may sometimes display partially off-screen.
  • Fixed an issue where the progress bar can exceed 100% when enabling designer's mode.
  • Fixed an issue where new-style Twitter embeds may appear narrow in some browsers.
  • Fixed an issue where the filesystem datastore directory configuration option may still show if selecting to use Redis for caching.
  • Fixed a minor SEO concern reported by the latest version of Lighthouse.
  • Fixed an issue where files may not be deleted when using S3.
  • Fixed dialog window titles clipping out of view if paginating a table within a dialog.
  • Fixed an error with the UTF8 converter that can occur in certain cases.
  • Fixed # anchor being added to the URL in the address bar when closing the drawer element on mobile.
  • Fixed the members/notifications REST API endpoint returning notifications in the wrong order.
  • Fixed a potential syntax error when performing a MySQL search.
  • Changed upgrades to write current upgrade step data to the database instead of to a temporary file on disk.
  • Changed the support tool to only run database checks against enabled applications.
  • Changed the auto-upgrader to only run database checks against enabled IPS applications.
  • Removed custom theme CSS from AdminCP pages.
  • Removed unnecessary down caret from submenus on the primary navigation bar in some cases.
  • Removed the obscure hash from CSS and JS files to prevent duplicate files that are not always cleaned up.
Calendar

  • Improved performance for specific (common) recurring event patterns.
  • Changed the "Upcoming Events" widget to honor the configured widget cache period (previously we forced the widget to cache for 12 hours).
  • Fixed an issue where event reminders would still send for the original date if an event is edited.
  • Fixed an issue where the "repeat until" end date, if specified, may not reflect the correct date after saving the event.
  • Fixed an issue where creating a recurring even could fail.
  • Fixed an issue where reminders could be sent for events no longer viewable.
  • Fixed an issue with some events showing up incorrectly on the day after they occur, in addition to the correct date.
  • Fixed importing iCal files failing in some cases.
Pages

  • Added page builder widgets to create visually interesting pages.
  • Added support for moving comments on records between the Forums and Pages applications.
  • Added Open Graph tags for non-database pages where appropriate.
  • Tags for Manual HTML pages and Blocks now include custom phrases from the language system, with the ability to add new ones directly from the form.
  • Editor type blocks created in the AdminCP under Pages > Blocks are now translatable for communities with multiple languages.
  • Improved performance of large Pages databases.
  • Improved template management.
  • Added lazyload for YouTube, SoundCloud & Spotify fields.
  • Removed a deprecated option to use a special gateway or index for Pages.
  • Removed a hardcoded limit of 5MB for files uploaded to the media manager.
  • Changed the "Show that the message has been edited" setting to be disabled by default, to keep it consistent with the rest of the suite.
  • Fixed an issue where comment and record attachments could become incorrectly associated, or become editable by other users submitting comments or records.
  • Fixed an issue where hidden records or comments contained a wrong hide reason.
  • Fixed an issue with JSON+LD structured data which can cause Google Webmaster Tools to flag structured data for Pages database entries as invalid.
  • Fixed a potential overflow concern on the database record submission form for smaller devices.
  • Fixed an issue where records may not redirect properly when the wrong casing is used in a static friendly URL.
  • Fixed an issue where records will not redirect properly after being moved when a static friendly URL value is used.
  • Fixed an issue where externally embedded blocks do not work if "Allow community to be embedded in an iframe" is not set to "Anywhere".
  • Fixed an issue where it wasn't possible to use pagination on non-database pages.
  • Fixed an issue where it wasn't possible to set the future publish moderator permission on individual databases.
  • Fixed an issue where the task to remove unneeded sidebar blocks could become frozen.
  • Fixed an issue where the database categories block would show without a border when displayed horizontally.
  • Fixed an issue where block templates would not be set correctly.
  • Fixed an error deleting a database category that contained a subcategory with records.
  • Fixed an issue where duplicate block keys may occur when a specific block key is not supplied.
  • Fixed an issue where menu titles would not correctly use database titles when set as an override.
  • Fixed an issue where ratings may not display correctly if reviews are disabled.
  • Fixed an issue where the sitemap lastMod value may incorrectly be set.
  • Fixed a database error that can occur when upgrading IP.Content from prior to Invision Community 4.x.
  • Fixed an issue where title and content fields would not be presented in the "quick update" form when viewing a Pages record if they were configured to do so.
  • Fixed an issue saving Pages templates when comparing the modified template to the default.
  • Fixed an error when attempting to delete a review response in a Pages database.
  • Fixed Mention notification not sending when updating custom fields for a record while viewing the record.
  • Fixed a bug where the width/height attributes for Youtube fields in databases may not be honored.
  • Fixed an issue where number fields would reflect a value of 0 when no value is supplied.
  • Fixed an issue where a Pages database record may incorrectly appear as authored by the administrator editing the record.
  • Fixed an issue where a select field set as the title field for a database would not require the user to select a non-blank option.
  • Fixed an issue where the sitemap rebuild task could break while trying to build the sitemap for a not existing database.
  • Fixed an issue where creating and editing Page Templates would redirect to a wrong template after saving the recently created template.
  • Fixed an error that can occur in Pages databases when the page the database is on has a custom non-default theme applied.
  • Fixed an issue where the insert into post icon would show for record images even though this is not functional.
  • Removed the ability to edit topics automatically created by a Pages database record.
Commerce

  • Added ability to have trial periods for Packages and Subscription Plans, and take card details upfront if it is a free trial.
  • Added ability to define different tax rates for consumers, businesses and EU VAT-registered businesses.
  • Added ability to mass upgrade/downgrade or cancel purchases of a given product.
  • Added option to update existing purchases when changing tax rate for a product which renews.
  • Improved add address link in client area to load form in a modal.
  • Improved product list in AdminCP to include counts of current purchases and better indicate if the product can be purchased (including its stock level, if applicable) and/or upgraded/downgraded.
  • Improved UI in storefront for products which have renewal terms to make it clearer what the real cost is.
  • Improved UI in storefront when viewing products that has the "Allow users to purchase more than one?" setting disabled that the user has already purchased.
  • Improved how expired subscriptions are handled, prompting user to renew rather than start a new subscription. This also fixes an issue where a user may abuse initial term pricing if it is cheaper than renewals. Users can no longer completely cancel an existing subscription (but can still stop renewals).
  • Improved warning page when deleting a product to clarify the steps which should be taken to retire a product.
  • Improved default invoice timeline settings (by default renewal invoices now sent 12 hours before expiry).
  • Improved the error messages shown when a user attempts to visit an invoice in order to pay it but is not logged in, or is logged in to a different account.
  • Updated PayPal gateway to use new Subscriptions API.
  • Updated Stripe gateway for latest supported currencies and card types.
  • Added a missing language in the Administrator logs for enabling subscriptions.
  • Fixed expiration date of subscription sometimes being lost when upgrading/downgrading plan.
  • Fixed renewal invoices being regenerated if cancelled.
  • Fixed an issue where Stripe payment gateways could only be saved if the webhook created had all available events configured to be sent, instead of just the events we need.
  • Fixed wrong package price being used when generating an invoice in the AdminCP and using a non-default currency.
  • Fixed Stripe webhooks potentially reporting an error.
  • Fixed an issue checking out using Braintree combined with coupons.
  • Fixed support request emails containing not displaying non-latin characters correctly if "Outgoing Email Format" is set to "Normal email".
  • Fixed attachments not being claimed in Editor custom fields for Purchases, Support Requests and Customers.
  • Fixed PayPal Billing Agreements mis-charging for purchases manually renewed early.
  • Fixed customers being able to cancel orders while payment is under review.
  • Fixed an issue where copying product physical settings would cause all values to be reset.
  • Fixed an issue where the estimated tax for a product may be inaccurate, particularly when logging in and out with multiple accounts to test.
  • Fixed an issue where deleting a payment method can cause errors to throw when viewing a transaction made through that method.
  • Fixed an issue where updating a product could fail because of a not existing license or license type.
  • Fixed an issue where referrals may not be counted during guest checkout.
  • Fixed issues saving the Easy Post settings form.
  • Fixed incorrect sorting of product filters in Commerce categories.
  • Fixed an inability to choose any product groups to mass-move products to from within the AdminCP.
  • Fixed an issue where recurring payments through Stripe may not succeed for specific customers who purchased in the past.
  • Fixed an issue where checking out using Stripe may not correctly show the payment completed screen.
  • Fixed an issue where non billing contacts were shown a link to pay invoices.
  • Fixed an issue where required upload custom fields in support requests could be skipped.
  • Fixed an issue where support custom fields could display incorrectly.
  • Fixed an issue where member groups would not be restored when users immediately cancel a subscription if they were manually added to the subscription package.
  • Fixed an error checking out when purchasing a paid file from Downloads with a title length longer than 128 characters.
  • Fixed an issue where copying the product filters field value to other products failed. Copy possibility was removed now.
  • Fixed inconsistent use of "Gift Voucher" vs "Gift Card".
  • Fixed an error that can occur when processing incoming support requests if attachments are linked in them.
  • Fixed a problem formatting currencies in some environments.
  • Fixed an error editing Commerce packages on PHP 7.4.
  • Fixed an issue where the wrong tax rate may be applied to an invoice when manually generating a renewal invoice.
  • Fixed an issue with the Admin Notification for shipments where associated invoices would not be shown.
  • Fixed an untranslated language string when managing addresses during a checkout.
  • Fixed an untranslated date when printing invoices.
  • Fixed an unnecessary API call being made for regular PayPal purchases and refunds.
  • Fixed an issue where it may not be possible to give permission to edit email copy settings to restricted admins.
  • Fixed cancelling/refunding a purchase for a product also deleting child purchases, which would also cause an error when viewing the invoice for the child purchases.
  • Fixed a typo.
  • Fixed an issue where purchases from disabled applications would break the purchases list and the purchase details pages in the ACP and frontend.
  • Removed “Update payment details” button from invoice notifications, which was causing confusion as payment wouldn't actually be reattempted.
  • Subscription package cover photos will not be shown if none of the packages have images.
  • Fixed an issue where the "My Details" menu item shows to guests.
  • Fixed an issue where coupon expiry dates may not save or display correctly when editing.
  • Fixed guests being able to submit responses to reviews on products.
  • Fixed possible uncaught exception if an error occurs when upgrading/downgrading subscription plans.
  • Fixed minor UI issue when trying to mass change / cancel purchases of a product which doesn't have any other products in the same group.
  • Removed the "Associate Purchase" button from support requests in the AdminCP if the administrator is restricted and cannot reach the page.
Converters

  • Added support for converting Blog & Blog Entry categories.
  • Added support for converting vB3/4 Avatar Gallery avatars.
  • Added support for converter Club Pages.
  • Added support for new edit name/date/reason functionality in Calendar, Blog & Downloads.
  • Added support for converting WoltLab Suite Core (3.1) and WoltLab Suite Forum (5.1)
  • Added URL redirect support for two very old vBulletin formats: showthread.php?postid=x and showthread.php?threadid=x.
  • Added a new redirect for Photopost showphoto.php URLs.
  • Added the ability to auto detect the PhpBB avatar salt/hash.
  • Improved performance for XenForo & vBulletin conversions.
  • Updated RSS import conversion methods to support new functionality.
  • Fixed an issue where converting SVG sprites from XenForo would cause the conversion to halt.
  • Fixed a missing language string when converting blog attachments.
  • Fixed current status showing HTML code.
  • Fixed an issue where you may not be prompted for a path when converting Club icons.
  • Fixed an issue where orphaned (without valid category) articles are not converted from vB CMS.
  • Fixed an issue where certain Youtube video embeds may not convert properly from vBulletin.
  • Fixed a potential issue converting inline attachments in vBulletin/XenForo where the inline position may be lost.
  • Fixed attachments and editor autosave behaviour not working correctly when using the bulk submission process.
  • Fixed an edge-case scenario where a conversion would not convert any data.
  • Fixed an error that could occur when rebuilding posts following a conversion.
  • Fixed album descriptions not being parsed following a conversion.
  • Fixed an issue where resuming a conversion that had been interrupted during private message reply conversion, would start from the first reply.
  • Fixed an issue reconverting steps using the converter developer mode.
  • Removed a duplicate language string.
Forums

  • Added ability for Forums created within Clubs to be set so that users can only see the topics they posted (e.g. for a support forum).
  • Added the dateModified property to the structured data that is produced for search engines.
  • Added support for accessing RSS feeds even when guests cannot access the forum.
  • Added an option to mark an individual topic to require moderation for new posts.
  • Exposed some additional configuration options for redirect forums.
  • Improved configuration of topic and post feed widgets to disable forums that cannot be selected.
  • Fixed an issue where deleting a user may leave topics they've posted in forums with "Can view other user's topics" disabled incorrectly showing up in activity streams.
  • Fixed an issue where topics in forums with "Users can view other user's topics" disabled may still see those topics in feed blocks from the forum.
  • Fixed an issue where moved topics may result in the original forum showing as unread indefinitely if a link is left to the new location.
  • Fixed an issue where the ACP - "Popular Now" forum settings couldn't be saved.
  • Fixed an issue where splitting and merging posts may not update popular topic info correctly.
  • Fixed an issue where reputation information may become unassociated with posts when upgrading from 3.4.x.
  • Fixed an issue redirecting certain legacy (3.4.x) topic links following an upgrade to 4.x.
  • Fixed an issue where mass-moving topics from one forum to another from the AdminCP ignores the "last comment" filter option.
  • Fixed some structured data errors, particularly when forums allow ratings to be issued on topics.
  • Fixed an issue where merging links could cause an infinite redirect.
  • Fixed an error message that may display if "Post Before Registering" is disabled and a user attempts to sign in by clicking the button that shows below a topic.
  • Fixed "Start new topic" button not displaying on the index page on mobile for guests when post before registering was enabled.
  • Fixed an issue where an error could be shown when viewing very old topics or the placeholder topic on new installs.
  • Fixed an issue where the pagination wouldn't link to the comments area with disabled JS.
  • Fixed deleting a member not appropriately referencing remote archive databases.
  • Removed a duplicate language string ( 'any_time' ) which can prevent translating this string.
Gallery

  • Added support for accessing RSS feeds even when guests cannot access the Gallery.
  • Added a link to the group settings page and clarifying text for the "Albums" category-level setting.
  • Fixed videos not playing inline when embedded in content.
  • Fixed follow notifications being sent when a member being followed submits images to Gallery despite no notification method being set for following a member.
  • Fixed an issue with editing tags on multiple images consecutively in the lightbox.
  • Fixed EXIF metadata not being read for images in some cases.
  • Fixed a broken AdminCP livesearch keyword pointing to a setting that no longer exists.
  • Fixed an issue toggling the setting on the "show map" form for images in Gallery.
  • Fixed an issue on the ACP - Bandwidth Stats site which would result in an uncaught exception.
  • Fixed a language string clash when both Gallery and Pages are installed which may result in being unable to translate a specific language string.
  • Fixed an issue where editing tags for an image and then immediately attempting to edit the image details would cause the tag field not to load correctly.
  • Removed ability to attach files in image descriptions.
Downloads

  • Added support for accessing RSS feeds even when guests cannot access the Downloads area.
  • Added new 'popular' sort option to REST API for files.
  • Added new /downloads/files/{id}/download endpoint for file downloads.
  • Added new /downloads/files/{id}/buy endpoint for generating invoices.
  • Added multiple items to REST API file response.
  • Added new category setting to determine if a file can have more than one file uploaded at once.
  • Added new 'minimum cost' setting for paid files.
  • Added new 'maximum filesize' per-group setting as an upper cap on submission sizes for the group.
  • Added ability to define where the download disclaimer shows (before purchase, before download or both).
  • Added ability for custom fields to only appear to purchasers of a file.
  • Improved the 'new version' file approval process, versions can now be moderated without hiding the existing version.
  • File topics now get marked read (for the file author) when they are created.
  • Separated new version update notifications from follows.
  • Fixed an issue where Downloads files inserted into editors using "Insert other media" would display "Unavailable" below the filename, instead of the size and download count.
  • Fixed a potential layout issue when editing a file that has screenshots.
  • Fixed attachments not being claimed in Editor custom fields for Files.
  • Fixed an issue where unapproved files could show in latest file info.
  • Fixed an issue where the "Similar Content" widget may not show as many results as configured if you disable a Downloads category.
  • Fixed an issue where moderators would not be notified of new versions requiring approval.
  • Fixed an error saving a category in the AdminCP if the option to post a topic to the forums is enabled but no forum is selected.
  • Fixed an issue where files which have a topic_id associated to it but where the topic doesn't exist anymore, would break the REST API.
  • Fixed an issue rebuilding topics for Downloads categories when using cron-based tasks.
  • Hid certain paid file settings in the AdminCP when accepting paid files is turned off in Downloads.
Blog

  • Added the ability to categorize Blogs and Blog Entries.
  • Added support for accessing RSS feeds even when guests cannot access the blog.
  • Fixed an issue where flagging a member as a spammer would hide/delete entries but not blogs.
  • Fixed an issue where members browsing private blogs could appear in the online user list.
  • Fixed an issue where club blogs could show with the wrong title when embedded elsewhere.
  • Fixed an issue where blog entries would return a wrong dateModified jsonLd date.
  • Fixed an issue where an error can occur on long comments on Blog entries when rebuilding from an upgrade from 3.x.
  • Fixed an issue where blog attachments could break the 'My Attachments' Page.
REST, GraphQL & OAuth

  • Added a GraphQL API to power the Invision Community native apps
  • Added support for Proof Key for Code Exchange by OAuth Public Clients.
  • Added ability to order content items by last updated.
  • Added parentId to node REST API endpoint responses.
  • Added ability to send an X-Authorization header for communities running on a server with PHP in CGI mode, which may not make the Authorization header available. Previously the only alternative was to send the API key in the URL query string, which is undesirable for security.
  • Added parentId to node REST API endpoint responses.
  • Fixed several issues editing, updating and deleting clubs and club members via the REST API.
  • Fixed issue where REST API reference may not show client or member only notices.
  • Fixed Pages REST API create record endpoint not properly refreshing cached information at the category level.
  • Fixed Pages REST API create record endpoint allowing creation of records without a title and body, which results in a broken record to be saved.
  • Fixed the REST API documentation missing some properties which are included in the response when calling a database record.
  • Fixed Forums REST API create forum endpoint ignoring several parameters.
Upgrader

Third-Party / Developer / Designer Mode

  • All automatically created plugin directories contain now an index.html file.
  • Automatically generated hook code contains now the return type and nullable parameters from the parent method.
  • Added a new extension type OverviewStatistics which allows you to add blocks to the Stats > Activity > Overview and Stats > Users > Overview pages in the AdminCP.
  • Added new public method mapUrl() to the Google and Mapbox mapping classes, allowing you to fetch the map URL without the template wrapper.
  • Added ability to pass an instance of \IPS\Db to \IPS\Helpers\Table\Db constructors (and/or override the property after construction) to create tables that query against remote databases.
  • Added support in converter libraries to pass last_vote as an instance of \IPS\DateTime for consistency with other timestamp parameters.
  • Added support to pass a second parameter to contentImages() to ignore permission checks which is useful in places like widgets when "Honor permissions" is disabled.
  • Added support to pass $tab and $after in the following form helper methods: addHeader(), addSeparator(), addMessage(), addHtml(), addMatrix(), and addDummy().
  • Added a minimize method and minimizeAfterReset option to editor JS widget to enable editors to be minimized programatically.
  • Added a showAllNodes option to \IPS\Helpers\Form\Node to force all nodes to display even on the front end.
  • Added a returnFullQuery() method to \IPS\Db\Select which will automatically replace binds so you can see the query that would execute easier.
  • Added option to REST API to include club nodes in the returned list (affects Downloads/Forums/Calendar), defaults to not include club nodes.
  • Added a preSave() method for the ModeratorPermissions extension which can be used to adjust submitted moderator permissions before they are saved.
  • Added events ips.editorMenuOpen and ips.editorMenuClosed to be fired when a mention or emoticon event starts and stops while typing into an editor.
  • Added update checking and author information for language packs.
  • Changed method \IPS\Helpers\Form\FormAbstract::utf8mb4Check() from protected to public.
  • Improved error reporting for SEO_TEMPLATE_IS_NOT_VALID_FOR_URL exceptions to return the query string and seo template that caused the error.
  • Changed the \IPS\File\Amazon::generateTemporaryDownloadUrl() method so that it can be defined by any file storage handler engine and used automatically.
  • Fixed an issue creating multi-column indexes that spanned both textual and date-type columns.
  • Fixed an error that can occur with IN_DEV enabled when importing calendar events from ical file or feed.
  • Fixed an issue where content item implementations that do not implement \IPS\Content\Searchable were still shown as filter options in streams.
  • Fixed an issue with IN_DEV database schema synchronization for custom databases in Pages.
  • Fixed an issue using the \IPS\Helpers\Table\Db table helper with excluded columns in some cases.
  • Fixed IPS\Helpers\Form\WidthHeight instances only working in the AdminCP by moving the template to the global template location.
  • Fixed an issue where select boxes with numeric values may not retain their selections properly if a form reloads due to an error.
  • Fixed a potential undefined index issue throughout the Suite in the language system.
  • Fixed a potential error calling \IPS\Member\Group::groups from certain contexts, such as cron.
  • Fixed an undefined index in Pages when submitting a new record in some configurations.
  • Fixed ratings for content from an application not being deleted when the application is uninstalled.
  • Fixed default scrollScope for the infScroll javascript UI widget not working.
  • Fixed an error attempting to call parent in a hook when using the hook editor within the AdminCP.
  • Fixed undefined variable $form in \IPS\core\modules\front\system\register being passed to profile step formatFormValues() method calls.
  • Fixed an issue where profile completion extensions could not be created without sub steps.
  • Fixed an issue where the title of an advertisement wasn't deleted while the advertisement deletion.
  • Fixed a pagination issue when the content item does not use an SEO slug component in the URL.
  • Removed an unused mobile class property in IPS\Http\Useragent.
  • Removed database schema functionality deprecated in MySQL 8.0.17, including specifying binary on a column, specifying lengths and zerofill for numeric column types, and specifying decimal places for float/double column types.
  • AdminCP menu entries now support two new parameters: menu_checks allows you to define additional input key => value mappings in an array which will also be checked to determine if you are viewing the menu entry page in question, and menu_controller allows you to override the controller check when generating the menu key. This is used by Pages, for instance, to support highlighting the dynamically generated menu entries.
  • AdminCP menu entries now support multiple keys in the restriction parameter, separated by commas. If any key matches, the administrator will see the menu item. Useful for tabbed screens where an administrator may not be able to access some tabs but does have access to others.
  • Application.php files for individual applications can now define a sitemapLinks() method to return additional links to add to the sitemap without having to generate an entire sitemap extension. This should only be used to return a small handful of static links, and sitemap extensions should be used to add a dynamic number of links.
  • Applications can now define a global.css which will automatically be loaded in streams and in searches to ensure you have the ability to apply custom styles to search results.
  • An unnecessary profile field validation check in the registration controller was removed.
  • Uninstalling an application will now remove attachment maps belonging to the application, allowing the attachments to be cleaned up if they are otherwise not being used.
Changes affecting third-party developers and designers
  • jQuery has been updated to version 3.5, which has some breaking changes. However, we are also including jQuery Migrate which re-implements some older APIs while functionality is updated. Check the browser console while developing your applications and aim to resolve any JQMIGRATE messages that your app in particular generates. Migration messages generated by Invision Community and its dependencies will be fixed over time. See https://github.com/jquery/jquery-migrate/blob/master/warnings.md for more information.
  • All AdminCP controllers now require CSRF-protection as on the front-end.
  • File storage handlers must now handle chunked uploading differently. See \IPS\File\FileSystem::chunkInit(), \IPS\File\FileSystem::chunkProcess() and \IPS\File\FileSystem::chunkFinish() - these 3 need to be implemented, replacing the previous chunkAppend() method.
  • Building applications will now store a flag for which module is set as the default, and that module will be set as the default module when users install your application (or upgrade your application, if no other module is already set as the default). The default module will not be reset or changed during upgrades automatically. If you must change a default module during the upgrade, you may do so manually with a database query, however be mindful that administrators may legitimately wish to adjust which module is the default in any given application.
  • Pages comment and review loading now enforce that the comment or review belongs to the specified database. You cannot use \IPS\cms\Records\Comment::load() to load a comment or \IPS\cms\Records\Review::load() to load a review, but must ensure the comment or review ID you are loading belongs to the class it is loaded through (e.g. if loading comment ID 1 and it belongs to database ID 1, you must now use \IPS\cms\Records\Comment1::load()).
  • Dynamic Charts now support the ability to download the generated data as CSV. Details here:
  • BBCode parsing is now considered deprecated, and may be enabled or disabled. If you must rely upon BBCode parsing occurring, you may need to parse content through \IPS\Text\LegacyParser instead of the general \IPS\Text\Parser class.
  • The ability to use SQLCALCFOUND_ROWS has been removed globally because it has been deprecated as of MySQL 8.0.17. If you relied on this functionality to fetch a total row count (i.e. for pagination purposes), you will need to update your code to explicitly run a count query to fetch the total row count separately.
  • Added a new parameter to \IPS\Content\Item::markRead() to force an update even if the content already appears to be read.
  • The postComplete() method for a Queue background task (if defined) was not previously called when preQueueData() returned NULL, which has changed. The postComplete() method will now be called, and a new parameter $processed can be checked to determine if the queue task did anything or not. If you define the postComplete() method for any Queue background tasks, you should add a second parameter $processed which defaults to TRUE.
  • A new variable was introduced in \IPS\Dispatcher\Controller to allow you to set specific controllers and controller actions as "non-content specific", so that google ads & co aren't served on this pages. Please keep this in mind for your custom controllers.
  • The \IPS\Helpers\Form\Node class was incorrectly relying on "view" permissions in some cases to determine if a node should be included in the form helper select box (even in areas like the AdminCP where the nodes should be available even if you cannot view them). This should not pose any issue for third parties, but you may wish to review your node helper instances and ensure all nodes are always shown when appropriate (e.g. nodes the administrator cannot view on the front end are still available for selection in the AdminCP when appropriate, or that they are not available to select when they shouldn't be selectable).
  • Applications built in Invision Community 4.5 will automatically remove deleted language strings when your application is upgraded.
  • A new background task PruneLargeTable has been added which can aid in pruning potentially large database tables.
  • The \IPS\Db::i()->delete() method can now accept an array for $statementColumn and will join the inner table on instead of using a subselect.
  • Some (but not all) implementations of loadFromUrl() previously performed permission checks, however these have been removed and it is now up to user-land code to perform these permission checks when needed.
  • An exception is now thrown if an invalid file storage exception is called in \IPS\File::get() when in development mode.
  • Added a $rowClasses param as the last param when creating a form field, that can be used to pass additional CSS classes to the form row template.
  • Added a urlencode and rawurlencode option for language strings which will urlencode/rawurlencode the entire language string that is returned.
  • Added a $currency parameter to \IPS\nexus\Package::price() to override default customer's currency.
  • Simplification of the .ipsResponsive classes to allow them to be used in a larger variety of cases.
  • Removed image dependency from .ipsStepBar allowing its color scheme to be edited via css.
  • Removed icomoon dependency from css. The icons which were created using this font have been replaced with FontAwesome and pure css equivalents. The icomoon files are still present, so they can be imported using custom.css if necessary.
  • A data-role attribute has been added to list items in .cAuthorPane_info, allowing for more accurate CSS targeting of author stats.
  • The padding and margin values under the .cSearchExpanded class have been replaced with a pseudo element. If you have modified this class or #elSearch, some minor adjustments may be required to ensure the alignment of your search form is correct in your theme.
  • Headers (.ipsWidgettitle, .ipsTypesectionTitle, etc) will now respect the font-family of the body element if the "Headline Font" setting is set to Default.
  • Changed the default font-family from a Helvetica stack to a system-ui stack.
  • Centralised display name checks in a new method \IPS\Login::usernameIsAllowed().
  • Added a new method \IPS\Text\Parser::hasContent() that determines if any actual content was supplied from an editor. This can be used in templates (for example) to adapt the layout depending on whether a node has a description or not.
  • New CSS utility families have been added: ipsFlex, ipsPad (updated to include more variants) and ipsMargin. All support responsive prefixes (md: and sm:) to control how the classes behave at different device sizes. For example, ipsFlex-fd:row sm:ipsFlex-fd:column would make an element flex-row by default, but flex-column on small screens. Similarly, ipsMargin_top sm:ipsMargin_top:half would apply 15px margin-top by default, but only 7px on small screens. See the CSS framework for complete class availability.
  • All hex values inside theme .css files have been replaced with {theme="setting"} equivalents, allowing for a more consistent color scheme, especially with dark themes.
  • The HTML structure for the navigation bar on .ipsLayout_minimal pages is now identical to regular pages.
  • Changed \IPS\Member::generateLetterPhoto() to a public method and added an option to return the letter and color, vs the entire SVG data string.
  • Changed polls to use the poll $url rather than the general form action in the pollForm template.
  • Added new font scale theme settings to keep typography on a fixed scale where appropriate. To aid usage, a new {fontsize} plugin tag is included, which accepts either a font scale size key (e.g. small, medium) or a number in pixels. The new global font scale setting will automatically be honored when the {fontsize} tag is used.
  • Added \IPS\Helpers\Form\Enum which can be used to display a ChecboxSet or Multi-Select box depending on the amount of options present on the form. Useful when Checkboxes are ideal UI, however the amount of options can be dynamic, which can cause issues when many options are present.
  • Applications and Plugins can now create language strings using \IPS\Lang::saveCustom(). The first parameter will now accept either a string or an instance of \IPS\Application for an Application, or an integer or an instance of \IPS\Plugin for a plugin.
  • CodeMirror Form Helpers can now accept a tagLinks option. When used, links (similar to links built in the header of the AdminCP) can be added to the headers for that specific section to allow direct linking to another area. Note, however, that if you need to perform AJAX functions, you will need to include that manually in any JavaScript controllers you implement on the form.
  • CodeMirror Form Helpers can now accept a tagSource option. This should be an \IPS\Http\Url instance, which will then load any tags via AJAX.
  • \IPS\Data\Store::i()->failedMailCount has been replaced with a new method \IPS\Email::countFailedMail() for a real time count
  • Settings have been added to themes to set a maximum logo size at large, medium and small device sizes.
  • The getQueryWhereClausemethod in Bulk Mail Extensions should return only a simple array with the where clause instead of a DB where clause with the parameter binding.
  • Applications and Plugins now have the ability to include Pages templates when they are built. The templates will be imported when the plugin/application is installed.
  • \IPS\File::get() now has a third parameter to accept an integer of the filesize if it is already known. This is a performance improvement for when filesize() is used.
  • If file storage contents are declared 'private' (and use S3 storage) the REST API will now return a signed URL for these resources.
  • The \IPS\Content\Content::urlFromIndexData() method now accepts a third parameter definining the do action, similar to the existing url() method.
  • Fixed an issue where the subnode flag may be lost when mass moving or deleting content.
Deprecations
  • Core: Apc, Memcache, Wincache and Xcache caching engines, we recommend using Redis instead.
  • Core: We will no longer address any issues specific to Internet Explorer 11 and below and will not ensure compatability with those versions.
  • Core: BBCode parsing support - upgrading users will be asked during upgrade if they wish to retain BBCode parsing support, while new installations will have the option off by default. BBCode parsing may be removed entirely in a future release.
  • Commerce: Authorize.net Payment Gateway.
  • Commerce: Web Hosting & Domain support.
  • Downloads: REST API 'files' response in REST API, see /downloads/files/{id}/download instead.
Key Changes
We are pleased to announce that Invision Community 4.5 is now available and packed with new features, enhancements, and even a new look!

Major New Features / Enhancements

- New Front-End Design
- AdminCP Dark Mode
- Site Statistics, Search Insights, and Club Statistics
- Marketplace now built into the AdminCP
- Mobile App for iOS and Android (Beta)
- Zapier Integration for Invision Cloud Communities

In addition to these new enhancements, there are countless other additions and improvements. Check out our product blog to see what we have been up to.

Before Upgrading
Before proceeding with your upgrade, please note that all third party resources are disabled during the upgrade process. We strongly recommend ensuring that all of your installed applications, plugins and themes have Invision Community 4.5 compatible updates available to allow continued use.

Please see the full release notes for other important changes, feature removals and deprecations.



Additional Information
Deprecations

The following items have been marked as deprecated in Invision Community 4.5. This means that while they currently work, they will be removed in a future version and will no longer receive bug reports.

Commerce:

  • Authorize.net Payment Gateway.
  • Web Hosting & Domain support.
Core:

  • BBCode parsing support - upgrading users will be asked during upgrade if they wish to retain BBCode parsing support, while new installations will have the option off by default.
  • APC, Memcache, Wincache and Xcache caching engines , we recommend using Redis instead.
Feature Removal

The following features have been removed in Invision Community 4.5.

Core:

  • We will no longer address any issues specific to Internet Explorer 11 and below and will not ensure compatibility with those versions.
  • ImageProxy has been removed. On upgrade, there is an option to restore the original remote image links, or direct links to the cached image which will be retained.
Downloads:

  • REST API 'files' response in REST API, see /downloads/files/{id}/download instead.


Security

  • Improved password strength checks to detect password values set identically to the account username or email address and to consider them weak.
  • Improved method of encrypting certain text.
  • Improved AdminCP session handling, removing the session ID from URLs and introducing alternate CSRF protections.
  • Improved email change process to invalidate any pending password reset requests.
  • Fixed user not being prompted for two-factor authentication when signing in from a new device.
  • Fixed an issue where it was possible to bypass the messenger recipient count limit.
  • Fixed a niche issue where it was possible in certain configurations to view others profile field attachments on the registration page.
  • Fixed a race condition issue where it was possible to artificially inflate or reduce a user's reputation score.
  • Limited password inputs to 72 characters max to reduce the chance of a malicious user forcing unnecessary computationally expensive operations on the server.
  • Fixed an issue where AdminCP sessions may be usable longer than expected if a community receives little activity.
Core

  • Added beta of Zapier integration for Invision Cloud communities.
  • Added new activity feed and twitter feed widgets
  • Added new view modes, enhanced existing and added more functionality to topic view.
  • Added an initial onboarding screen in the AdminCP for new installations.
  • Added the ability to filter members in the AdminCP by rank.
  • Added the ability to mark a post as the solution without needing the full QA mode.
  • Added the ability to ony show a preview of new private message / new content email notifications to stimulate re-engagement back to the community.
  • Added the ability to have TikTok links become embeddable in an editor.
  • Added the ability to select from stock photos when uploading images.
  • Added the ability to disable advertisements on non-content pages and error pages.
  • Added support for chunked uploading to Amazon S3 which allows for larger file sizes to be uploaded.
  • Added support for PHP 7.4.
  • Added support for Sign in with Apple.
  • Added support for version 4 of the bit.ly link shortening API.
  • Added new options to prune follows, known IP addresses, known devices, and item markers, and default options for some existing prune options have been updated.
  • Added the ability for Club Owners and Leaders to create and manage static pages within their clubs.
  • Added the ability to show content messages only to staff members (moderators).
  • Added a list of members who reacted to content in the tooltip when hovering on the reaction icon.
  • Added overview statistics pages in the AdminCP.
  • Added the plugin version to the ACP plugin list.
  • Added a type-ahead search option when selecting tags from a closed tag input field that contains more than 20 tags.
  • Added support for non-English searches in Giphy when the site is using a language Giphy supports.
  • Added additional static-type links to the sitemap file.
  • Added the ability to filter by custom profile fields in bulk mail, group promotions and exporting member lists.
  • Added the ability to create custom phrases within the language system.
  • Added the Invision Community Marketplace to the AdminCP.
  • Statistics can now be downloaded as CSV files.
  • Added the ability for Club Owners and Leaders to manage the visibility of the members page.
  • Improved referrals tracking and introduced a global community invite feature.
  • Improved the live meta tag editor.
  • Improved performance of several areas of the software.
  • Improved in-AdminCP upgrader to be able to handle more types of upgrades and improve reliability.
  • Improved "Allowed characters in display names" setting to give pre-defined options.
  • Improved performance of thumbnail generation.
  • Added a setting that determines which comment you see first when opening an item.
  • Added the ability for administrators to force users to reset their passwords.
  • Added pending club invites to the club directory sidebar.
  • Added a setting to disable automatic language detection.
  • Added the ability for members to cancel club join requests.
  • Added the ability to include club content to widgets.
  • Added the ability to include/exclude widgets in clubs.
  • Added an AdminCP statistics page for Clubs.
  • Added search term tracking and a statistics page to monitor search term usage.
  • Added a clarification notice to the edit log on the front end when edit logs are pruned.
  • Added a friendlier error message when uploads fail due to a server problem.
  • Added current percentage completed to progress bars.
  • Added ability to filter reputation given and received statistics in the AdminCP by date.
  • Added a check for the PHP file_uploads configuration directive to the support tool.
  • Added theme settings to set maximum logo width at each device size.
  • Changing the default application will be logged to the ACP Admin Log.
  • Added ability for club leaders to specify rules for a club, and force members to acknowledge them.
  • Added the database name and username to database queries to identify slow queries between multiple installations on a single database server.
  • Removed the separation by app in the block manager.
  • Removed the ability to import profile photos from a remote URL to improve security.
  • Removed the image proxy feature to improve security.
  • Removed Digg and Delicious share links.
  • Removed the "What's New" link from the user menu in the AdminCP if the administrator is restricted and cannot reach the page.
  • Removed the newsletter widget from showing in the sidebar by default on new installations.
  • Improved display name availability check when name contains multiple concurrent spaces.
  • Improved memory usage when uploading large images by handling resizing and rotation in the user's browser, rather than by the server.
  • Improved GeoIP lookup caches to store for longer periods of time.
  • Improved randomization for widgets that order by "random".
  • Improved logging of curl-related errors to include the URL that curl attempted to connect to.
  • Improved host detection for guest page caching.
  • Minor styling updates for embeds.
  • Logging in anonymously is now more reliably tracked across multiple devices.
  • Long quotes will now automatically truncate with a "Read more" link to expand the quote to improve usability when long quotes are used.
  • Updates search compatibility for Elastic Search 7.
  • Upgraded CKEditor to 4.14.1.
  • Flagging a member as a spammer will now remove any profile cover photo they may have uploaded.
  • The clubs map now centers around available clubs rather than showing a whole world view.
  • Changed the redirect targets from clubs, to redirect to a club feature after the feature creation and when a member joines a club.
  • Changed the "Maintenance Tasks Not Running" admin notification to check for two or more tasks that have not ran to reduce false positive notifications in the event a feature is enabled which enables a task which has not ran in a long time.
  • Restored the ability to view a list of members through the advanced search without appending unnecessary extra parameters to the URL.
  • Adjusted certain code to remove reliance on MySQL functionality deprecated as of version 8.0.17.
  • Changed the parser to allow <picture> HTML tags through to prevent errors with RSS imports that may use them.
  • Changed the content deletion process so that reports related to the content are no longer deleted.
  • Added logging out as a controller that can bypass forced account completion when a login handler cannot prepopulate a username or an email address.
  • Added rel="nofollow" to certain links in order to instruct search engines not to follow them.
  • Added the ability to export member reputation points when downloading a member list from the AdminCP.
  • Added a confirmation dialog to the "Restore default streams" button in the AdminCP.
  • Improved Google Maps setup page in AdminCP.
  • The Report Center now properly handles content pending deletion.
  • Updated Google Charts to use the latest API (v47).
  • Improved editing a members secondary group by automatically switching between Checkboxes and a Select menu depending on how many groups are present.
  • Improved the way how traffic run tasks are called.
  • Updated the email failure AdminCP notification to run on login instead of email send.
  • Updated the recommended PHP version to 7.3.
  • Search result snippets are now truncated on the server before being served to the browser to increase efficiency.
  • Tags are now shown in search results/streams on mobile devices.
  • Updated the URL used for Twitter oEmbed requests.
  • Added support for converting words to links as well as acronyms in posting settings.
  • Adjusted Easy Mode theme editor to remove support for gradients and simplify the user interface. Added support for 'invert' to easily create dark themes.
  • Fixed an issue where some nodes may not be available in various areas of the software (for instance, forums not being available to move subforums to when deleting a parent forum, and custom Pages blocks not being available to select in the widget manager).
  • Fixed attachments not being claimed when added to Club Editor custom fields.
  • Fixed an issue where admin-validated post-before-register accounts would not trigger follow notifications to be sent.
  • Fixed an issue where bulk mail content count filters caused an error.
  • Fixed an issue where editing a comment and using a word filter entry configured to hold the content for moderator approval may not actually do so.
  • Fixed an issue where stream filters were not updating when the time period was changed.
  • Fixed an issue where items in the main menu "more" overflow can appear in the wrong order.
  • Fixed public club content not showing in streams and searches for guests.
  • Fixed an issue where anonymous users may be displayed in the "Who's Online" widget.
  • Fixed an issue where the files overview member link targeted the wrong location.
  • Fixed an issue where admin control panel failed mail notifications could show a template error.
  • Fixed an issue where predefined tags would not show in category settings when using a closed system.
  • Fixed an issue where searching PMs would only show 25 results.
  • Fixed an issue where incomplete members may not be cleared out of the database.
  • Fixed an issue where Mapbox geolocation could return invalid location data in some circumstances.
  • Fixed an issue where mass moving/pruning members could return no results.
  • Fixed an issue where choosing to move club content while deleting a club resulted in that content being deleted instead of being moved.
  • Fixed an issue where 'and' could be duplicated in lists of followers.
  • Fixed an issue where the selected security questions during registration may reset if the form reloads with an error.
  • Fixed an issue calculating member's age in some locations.
  • Fixed an issue where groups could not be configured to allow reporting of personal conversations.
  • Fixed an issue where HTML advertisements could be saved without any HTML code, resulting in a PHP notice being triggered when previewing the ad.
  • Fixed an issue where dates can show in the wrong format in some configurations.
  • Fixed an issue where uninstalling an application may leave behind attachments for that application.
  • Fixed an error that can prevent inline notifications from showing up.
  • Fixed an issue where the stream condensed/expanded toggles did not work when visiting the URLs directly.
  • Fixed an issue where multimoderaction actions on ony page would redirect to the first page.
  • Fixed a conflict that can occur when two or more external databases are set up for login handling.
  • Fixed an issue where it was possible to bypass profanity filters when using quick title edit.
  • Fixed an issue where the requirement checker may not highlight issues with a storage configuration if only one exists.
  • Fixed an issue where the wrong file size may be shown in upload errors.
  • Fixed an issue where content types that are not searchable may be shown as filter options in streams.
  • Fixed an issue where the support tool would not clear guest page caches.
  • Fixed an issue where personal conversation replies cause a member's "last post" date to be reset incorrectly.
  • Fixed an issue where it was not possible to comment on a reported status update.
  • Fixed some issues with status update/profile comment submissions that fail due to being too large.
  • Fixed an issue where the default module may not be correctly set when installing a new application.
  • Fixed an issue where meta tags could be added to pages they were not intended for.
  • Fixed an issue where group promotion rules for date joined, last posted and last visited may not match correctly.
  • Fixed an issue where disabling clubs in the settings would still leave the "Allow club moderators" setting visible.
  • Fixed an issue where RSS exports may not show all available areas.
  • Fixed some issues tracking and resetting limits when a per-post attachment limit is applied to a group.
  • Fixed an issue where giphy thumbnails may show distorted if your "Maximum image dimensions to display" setting is set very low.
  • Fixed an issue where guest cache may throw an error if a database issue is encountered.
  • Fixed a potential issue that can occur when upgrading with InnoDB tables when MySQL is set to use MyISAM by default.
  • Fixed an issue where unnecessary profile sitemap files may be processed.
  • Fixed a javascript error that can occur due to lazy loading in some cases.
  • Fixed an issue where the drag handles may not show up correctly when attempting to adjust the tab order on the club nav bar.
  • Fixed an issue where certain URLs may not be fetched as expected.
  • Fixed an issue where members that can hide their own content may not people to hide items when creating them.
  • Fixed an issue where blog entries do not update club last activity time.
  • Fixed an issue where it was not possible to move club content to other clubs when deleting sections.
  • Fixed an issue with certain embeds (such as Spotify) in certain environments.
  • Fixed an issue where the "Flagged as spammer" email notification would be missing the details about who was flagged as a spammer.
  • Fixed Unsubscribe Links not working in some cases when Email Link Tracking is in use.
  • Fixed an issue where resorting hidden content in the Moderator CP redirects you to the report center.
  • Fixed an error viewing reports of content items queued for deletion.
  • Fixed signature images not displaying in the AdminCP when image lazy loading is enabled.
  • Fixed an issue where editing content meta messages will not show existing attachments on the edit form.
  • Updated HTMLPurifier to 4.12.0.
  • Removed the ability for an administrator to override a user's time zone.
  • Centralised RSS importing and added support for image enclosures on export and import.
  • Fixed an issue where multiple YouTube embeds in an editor could lead to the editor wrapper overflowing its bounds.
  • Fixed default country when entering an address being incorrectly detected for some users.
  • Fixed an issue where restoring certain default menu items resulted in missing language strings.
  • Fixed an issue where two moderator groups applying to a single user may allow the user to revoke warnings even if they do not have permission.
  • Fixed an issue where carousel widgets would not be scrollable in certain configurations.
  • Fixed certain content links such as links to direct posts not always taking you to the correct page in a multipage topic.
  • Fixed an issue where setting a limit for the maximum items on a sitemap would include the oldest instead of the newest content.
  • Fixed an issue where a 'flash of unstyled content' may appear in Firefox when lazy-loading embedded content.
  • Fixed an issue in the AdminCP where a tooltip would appear off the edge of the screen where a member had no display name set.
  • Fixed an issue where deleting a reaction would not redirect back to the reputation settings tab.
  • Fixed an issue where terms and tags can be removed from search queries in some circumstances.
  • Fixed an issue where some addresses could be saved with a location unintentionally.
  • Fixed a styling issue with the 'Back Button' in the Menu Manager.
  • Fixed potentially being sent to a random page when splitting comments from one content item to another content item.
  • Fixed an issue where deleting reactions would leave the images on the file system.
  • Fixed some structured markup validation concerns.
  • Fixed an error that can occur for guests who have chosen to use a theme which is subsequently deleted.
  • Fixed an SQL error during certain (intentionally invalid) AdminCP login attempts.
  • Fixed an issue where a database can occur if the login form is submitted with no credentials supplied in specific scenarios.
  • Fixed an issue where clubs may reflect an incorrect last activity date.
  • Fixed an issue where signature options would still show when ignoring users even with signatures disabled.
  • Fixed an issue where the member last visit time may not be set for new members.
  • Fixed an issue where checkbox set custom fields could not be set as searchable.
  • Fixed an issue where an administrator who could manage member moderators or group moderators (but not both) will not see the correct options when adding moderators.
  • Fixed extraneous spaces/newlines displaying on some forms.
  • Fixed an issue where partially uploaded files can be orphaned on disk.
  • Fixed an issue where topic links were not correctly using the user unread/first/last post preference.
  • Fixed an issue where members could be informed they were on mod queue because of a warning that had already expired.
  • Fixed an issue where already pending post before register content is not processed if the feature is disabled.
  • Fixed an error that can occur when a cron-based request results in content being parsed, such as when running tasks via cron following an upgrade from 3.x.
  • Fixed an issue where saving group display name changes with blank values caused an error.
  • Fixed a potential SQL error that can occur when upgrading from IP.Board 3.4.9.
  • Fixed an issue paginating in tables when certain special characters were included in the URL.
  • Fixed a potential error that can occur when uninstalling some third party applications.
  • Fixed an issue with language pack list formats when first adding a new language pack.
  • Fixed an issue where when lazy-loading is enabled, a lightbox would not be available for images that had not yet loaded into the browser.
  • Fixed an issue where the REST API would return an error while fetching a clubs data.
  • Fixed an issue where clicking Back in a browser after navigating to a new page of a table would not load the correct content.
  • Fixed an issue where dropdown menus in the main navigation bar may disappear when moving the mouse cursor.
  • Fixed a styling inconsistency in the AdminCP with the clubs page when clubs are disabled.
  • Fixed an EX0 error that can occur with widgets in specific configurations.
  • Fixed an issue where deleting a comment or review may incorrect update the count on the respective tab or remove the tab altogether.
  • Fixed clicking a tag not working when Friendly URL's were disabled.
  • Fixed an issue where certain columns would not be automatically detected when importing members from a CSV.
  • Fixed an error viewing clubs on PHP 7.4.
  • Fixed an issue where anonymous users may show online to administrators when they are not online.
  • Fixed Twitch embeds broken following an update on Twitch.tv.
  • Fixed an error using advanced table searches on PHP 7.4.
  • Fixed excess whitespace being included in the editor when certain text is used in an editor for a promoted item.
  • Fixed an issue using the "insert existing attachment" feature in the AdminCP in some cases.
  • Fixed some outdated phrasing when unsubscribing from emails.
  • Fixed an issue where the "Keep aspect ratio" option when editing image dimensions in the editor may not default correctly.
  • Fixed an incorrect message showing when banning an account in the AdminCP.
  • Fixed an issue where links in plain text emails could break with click tracking enabled.
  • Fixed editor buttons not replacing multiple instances of a {content} variable.
  • Fixed an inability to edit a post containing a badly embedded quote.
  • Fixed an issue where emoji may still replace in the editor even if the setting is disabled.
  • Fixed background task progress bar reporting incorrectly in some cases.
  • Fixed quicksearch menu closing on the front end when clicking on certain rows instead of the labels directly.
  • Fixed some javascript errors that can occur when the page is updated via AJAX.
  • Fixed an SQL error that can occur during upgrades in some cases.
  • Fixed page title reflecting "undefined" when editing permissions for certain editor buttons in the AdminCP.
  • Fixed some buttons in the AdminCP moving into the page header out of the tab the button belongs to when reloading the page.
  • Fixed the "note for member" field when warning a member being wiped when the reason for the warning is changed.
  • Fixed an issue where the REST API can output other members 'last activity' times regardless of anonymous setting.
  • The "Mobile Nav Background" theme setting has correctly been renamed to "Main Nav Background".
  • Fixed a broken page layout on the Username History page.
  • Attachment titles are no longer excessively cropped vertically.
  • The Reconfirm Terms page has been wrapped in .ipsBox to improve contrast in certain themes.
  • Notifications to the author are no longer sent for linked content inside quotes.
  • Fixed an issue where "Posting" and "Profiles" AdminCP menu items may not show even if the restricted administrator has access to parts of them.
  • Fixed an issue where validating members showed in search results.
  • Fixed an error with Windows that can cause certain date and language string values to be broken.
  • Fixed template disk cache files not being made writable in some environments.
  • Fixed an issue where invalid SMTP email credentials could cause content to be posted twice in some cases.
  • Fixed performance issue sending usage report.
  • Fixed an issue viewing all reactions for individual comments.
  • Removed certain logging when using OAuth2 which was unnecessary and could consume a lot of database space.
  • Fixed an issue where the front session handler may be unintentionally started when using \IPS\Output::i()->sendOutput().
  • Removed the Delete and Flag As Spammer buttons from member rows when filtering on groups.
  • Fixed an issue where the front session handler may be unintentionally started when using \IPS\Output::i()->sendOutput().
  • Fixed an issue where uploading a new emoticon with IN_DEV being enabled would result in an exception with PHP 7.4.
  • Fixed an issue where a previous bug could cause the remote image proxy task to error.
  • Fixed an issue sorting personal conversation IP address lookup results by date in the AdminCP.
  • Fixed birthdays sometimes not showing on profiles.
  • Fixed an issue where profiles of users that have followers disabled would show an error with PHP 7.3.
  • Fixed an issue where newly created club icons do not show when editing.
  • Fixed mobile Twitter links not automatically embedding.
  • Fixed a rare error that can occur when deleting a block using the block manager.
  • Fixed an issue where copying a node (such as a forum) that had content pending moderator approval can result in the new node indicating there is content to approve when it is empty.
  • Fixed an error preventing certain image uploads pasted into the editor from uploading correctly.
  • Fixed an issue where it may not be possible to save the 'exclude groups from leaderboard' setting.
  • Fixed an issue displaying colored emoji in some environments.
  • Fixed an issue where the live meta tag editor wouldn't save the form if only the site title was set without having any further tags.
  • Fixed autocomplete fields not initially expanding to show all text when a value is pasted into the field.
  • Fixed deleting a category, while also deleting children, not deleting child categories further than the first child level.
  • Fixed an issue where new comment notifications could show guests in the commenter list when using post before register.
  • Fixed an issue where club filter options would show in activity streams when no clubs were available.
  • Fixed an issue where it was not possible to complete a password reset if the community was offline and email click tracking was enabled.
  • Fixes an invalid “Thank you for vote” message when voting validation fails.
  • Fixed an issue where deleted comments in certain applications may still show inline to moderators with approval to view them.
  • Fixed an issue where setting up 2FA Security questions would result in an error with PHP 7.4.
  • Fixed an issue where coverphotos set to bottom-align on desktop would show gapping on mobile.
  • Fixed an issue where large images in emails may not behave responsively on all devices.
  • Fixed page title duplicating in the Twitter share box when clicking the Twitter share link.
  • Fixed an undefined variable in an upgrader HTML template.
  • Fixed an issue with carousels not advancing to the next image in some edge cases.
  • Fixed an issue where paginating in a comment feed (e.g. a topic) wouldn't work reliably if an anchor (e.g. #comment) was present in the URL.
  • Fixed an issue where users may be incorrectly prompted about new replies in a topic when navigating to a different page via the "back" button.
  • Fixed an issue in the mobile hamburger menu where sub-items may appear to be 'missing' because the menu is actually scrolled down too far.
  • Fixed issues with submenus sometimes opening off-screen when on small devices or when using an RTL language.
  • Fixed an issue where in certain situations, autocomplete results would be incorrectly positioned on mobile devices.
  • Fixed an issue where hovercards may sometimes display partially off-screen.
  • Fixed an issue where the progress bar can exceed 100% when enabling designer's mode.
  • Fixed an issue where new-style Twitter embeds may appear narrow in some browsers.
  • Fixed an issue where the filesystem datastore directory configuration option may still show if selecting to use Redis for caching.
  • Fixed a minor SEO concern reported by the latest version of Lighthouse.
  • Fixed an issue where files may not be deleted when using S3.
  • Fixed dialog window titles clipping out of view if paginating a table within a dialog.
  • Fixed an error with the UTF8 converter that can occur in certain cases.
  • Fixed # anchor being added to the URL in the address bar when closing the drawer element on mobile.
  • Fixed the members/notifications REST API endpoint returning notifications in the wrong order.
  • Fixed a potential syntax error when performing a MySQL search.
  • Changed upgrades to write current upgrade step data to the database instead of to a temporary file on disk.
  • Changed the support tool to only run database checks against enabled applications.
  • Changed the auto-upgrader to only run database checks against enabled IPS applications.
  • Removed custom theme CSS from AdminCP pages.
  • Removed unnecessary down caret from submenus on the primary navigation bar in some cases.
  • Removed the obscure hash from CSS and JS files to prevent duplicate files that are not always cleaned up.
Calendar

  • Improved performance for specific (common) recurring event patterns.
  • Changed the "Upcoming Events" widget to honor the configured widget cache period (previously we forced the widget to cache for 12 hours).
  • Fixed an issue where event reminders would still send for the original date if an event is edited.
  • Fixed an issue where the "repeat until" end date, if specified, may not reflect the correct date after saving the event.
  • Fixed an issue where creating a recurring even could fail.
  • Fixed an issue where reminders could be sent for events no longer viewable.
  • Fixed an issue with some events showing up incorrectly on the day after they occur, in addition to the correct date.
  • Fixed importing iCal files failing in some cases.
Pages

  • Added page builder widgets to create visually interesting pages.
  • Added support for moving comments on records between the Forums and Pages applications.
  • Added Open Graph tags for non-database pages where appropriate.
  • Tags for Manual HTML pages and Blocks now include custom phrases from the language system, with the ability to add new ones directly from the form.
  • Editor type blocks created in the AdminCP under Pages > Blocks are now translatable for communities with multiple languages.
  • Improved performance of large Pages databases.
  • Improved template management.
  • Added lazyload for YouTube, SoundCloud & Spotify fields.
  • Removed a deprecated option to use a special gateway or index for Pages.
  • Removed a hardcoded limit of 5MB for files uploaded to the media manager.
  • Changed the "Show that the message has been edited" setting to be disabled by default, to keep it consistent with the rest of the suite.
  • Fixed an issue where comment and record attachments could become incorrectly associated, or become editable by other users submitting comments or records.
  • Fixed an issue where hidden records or comments contained a wrong hide reason.
  • Fixed an issue with JSON+LD structured data which can cause Google Webmaster Tools to flag structured data for Pages database entries as invalid.
  • Fixed a potential overflow concern on the database record submission form for smaller devices.
  • Fixed an issue where records may not redirect properly when the wrong casing is used in a static friendly URL.
  • Fixed an issue where records will not redirect properly after being moved when a static friendly URL value is used.
  • Fixed an issue where externally embedded blocks do not work if "Allow community to be embedded in an iframe" is not set to "Anywhere".
  • Fixed an issue where it wasn't possible to use pagination on non-database pages.
  • Fixed an issue where it wasn't possible to set the future publish moderator permission on individual databases.
  • Fixed an issue where the task to remove unneeded sidebar blocks could become frozen.
  • Fixed an issue where the database categories block would show without a border when displayed horizontally.
  • Fixed an issue where block templates would not be set correctly.
  • Fixed an error deleting a database category that contained a subcategory with records.
  • Fixed an issue where duplicate block keys may occur when a specific block key is not supplied.
  • Fixed an issue where menu titles would not correctly use database titles when set as an override.
  • Fixed an issue where ratings may not display correctly if reviews are disabled.
  • Fixed an issue where the sitemap lastMod value may incorrectly be set.
  • Fixed a database error that can occur when upgrading IP.Content from prior to Invision Community 4.x.
  • Fixed an issue where title and content fields would not be presented in the "quick update" form when viewing a Pages record if they were configured to do so.
  • Fixed an issue saving Pages templates when comparing the modified template to the default.
  • Fixed an error when attempting to delete a review response in a Pages database.
  • Fixed Mention notification not sending when updating custom fields for a record while viewing the record.
  • Fixed a bug where the width/height attributes for Youtube fields in databases may not be honored.
  • Fixed an issue where number fields would reflect a value of 0 when no value is supplied.
  • Fixed an issue where a Pages database record may incorrectly appear as authored by the administrator editing the record.
  • Fixed an issue where a select field set as the title field for a database would not require the user to select a non-blank option.
  • Fixed an issue where the sitemap rebuild task could break while trying to build the sitemap for a not existing database.
  • Fixed an issue where creating and editing Page Templates would redirect to a wrong template after saving the recently created template.
  • Fixed an error that can occur in Pages databases when the page the database is on has a custom non-default theme applied.
  • Fixed an issue where the insert into post icon would show for record images even though this is not functional.
  • Removed the ability to edit topics automatically created by a Pages database record.
Commerce

  • Added ability to have trial periods for Packages and Subscription Plans, and take card details upfront if it is a free trial.
  • Added ability to define different tax rates for consumers, businesses and EU VAT-registered businesses.
  • Added ability to mass upgrade/downgrade or cancel purchases of a given product.
  • Added option to update existing purchases when changing tax rate for a product which renews.
  • Improved add address link in client area to load form in a modal.
  • Improved product list in AdminCP to include counts of current purchases and better indicate if the product can be purchased (including its stock level, if applicable) and/or upgraded/downgraded.
  • Improved UI in storefront for products which have renewal terms to make it clearer what the real cost is.
  • Improved UI in storefront when viewing products that has the "Allow users to purchase more than one?" setting disabled that the user has already purchased.
  • Improved how expired subscriptions are handled, prompting user to renew rather than start a new subscription. This also fixes an issue where a user may abuse initial term pricing if it is cheaper than renewals. Users can no longer completely cancel an existing subscription (but can still stop renewals).
  • Improved warning page when deleting a product to clarify the steps which should be taken to retire a product.
  • Improved default invoice timeline settings (by default renewal invoices now sent 12 hours before expiry).
  • Improved the error messages shown when a user attempts to visit an invoice in order to pay it but is not logged in, or is logged in to a different account.
  • Updated PayPal gateway to use new Subscriptions API.
  • Updated Stripe gateway for latest supported currencies and card types.
  • Added a missing language in the Administrator logs for enabling subscriptions.
  • Fixed expiration date of subscription sometimes being lost when upgrading/downgrading plan.
  • Fixed renewal invoices being regenerated if cancelled.
  • Fixed an issue where Stripe payment gateways could only be saved if the webhook created had all available events configured to be sent, instead of just the events we need.
  • Fixed wrong package price being used when generating an invoice in the AdminCP and using a non-default currency.
  • Fixed Stripe webhooks potentially reporting an error.
  • Fixed an issue checking out using Braintree combined with coupons.
  • Fixed support request emails containing not displaying non-latin characters correctly if "Outgoing Email Format" is set to "Normal email".
  • Fixed attachments not being claimed in Editor custom fields for Purchases, Support Requests and Customers.
  • Fixed PayPal Billing Agreements mis-charging for purchases manually renewed early.
  • Fixed customers being able to cancel orders while payment is under review.
  • Fixed an issue where copying product physical settings would cause all values to be reset.
  • Fixed an issue where the estimated tax for a product may be inaccurate, particularly when logging in and out with multiple accounts to test.
  • Fixed an issue where deleting a payment method can cause errors to throw when viewing a transaction made through that method.
  • Fixed an issue where updating a product could fail because of a not existing license or license type.
  • Fixed an issue where referrals may not be counted during guest checkout.
  • Fixed issues saving the Easy Post settings form.
  • Fixed incorrect sorting of product filters in Commerce categories.
  • Fixed an inability to choose any product groups to mass-move products to from within the AdminCP.
  • Fixed an issue where recurring payments through Stripe may not succeed for specific customers who purchased in the past.
  • Fixed an issue where checking out using Stripe may not correctly show the payment completed screen.
  • Fixed an issue where non billing contacts were shown a link to pay invoices.
  • Fixed an issue where required upload custom fields in support requests could be skipped.
  • Fixed an issue where support custom fields could display incorrectly.
  • Fixed an issue where member groups would not be restored when users immediately cancel a subscription if they were manually added to the subscription package.
  • Fixed an error checking out when purchasing a paid file from Downloads with a title length longer than 128 characters.
  • Fixed an issue where copying the product filters field value to other products failed. Copy possibility was removed now.
  • Fixed inconsistent use of "Gift Voucher" vs "Gift Card".
  • Fixed an error that can occur when processing incoming support requests if attachments are linked in them.
  • Fixed a problem formatting currencies in some environments.
  • Fixed an error editing Commerce packages on PHP 7.4.
  • Fixed an issue where the wrong tax rate may be applied to an invoice when manually generating a renewal invoice.
  • Fixed an issue with the Admin Notification for shipments where associated invoices would not be shown.
  • Fixed an untranslated language string when managing addresses during a checkout.
  • Fixed an untranslated date when printing invoices.
  • Fixed an unnecessary API call being made for regular PayPal purchases and refunds.
  • Fixed an issue where it may not be possible to give permission to edit email copy settings to restricted admins.
  • Fixed cancelling/refunding a purchase for a product also deleting child purchases, which would also cause an error when viewing the invoice for the child purchases.
  • Fixed a typo.
  • Fixed an issue where purchases from disabled applications would break the purchases list and the purchase details pages in the ACP and frontend.
  • Removed “Update payment details” button from invoice notifications, which was causing confusion as payment wouldn't actually be reattempted.
  • Subscription package cover photos will not be shown if none of the packages have images.
  • Fixed an issue where the "My Details" menu item shows to guests.
  • Fixed an issue where coupon expiry dates may not save or display correctly when editing.
  • Fixed guests being able to submit responses to reviews on products.
  • Fixed possible uncaught exception if an error occurs when upgrading/downgrading subscription plans.
  • Fixed minor UI issue when trying to mass change / cancel purchases of a product which doesn't have any other products in the same group.
  • Removed the "Associate Purchase" button from support requests in the AdminCP if the administrator is restricted and cannot reach the page.
Converters

  • Added support for converting Blog & Blog Entry categories.
  • Added support for converting vB3/4 Avatar Gallery avatars.
  • Added support for converter Club Pages.
  • Added support for new edit name/date/reason functionality in Calendar, Blog & Downloads.
  • Added support for converting WoltLab Suite Core (3.1) and WoltLab Suite Forum (5.1)
  • Added URL redirect support for two very old vBulletin formats: showthread.php?postid=x and showthread.php?threadid=x.
  • Added a new redirect for Photopost showphoto.php URLs.
  • Added the ability to auto detect the PhpBB avatar salt/hash.
  • Improved performance for XenForo & vBulletin conversions.
  • Updated RSS import conversion methods to support new functionality.
  • Fixed an issue where converting SVG sprites from XenForo would cause the conversion to halt.
  • Fixed a missing language string when converting blog attachments.
  • Fixed current status showing HTML code.
  • Fixed an issue where you may not be prompted for a path when converting Club icons.
  • Fixed an issue where orphaned (without valid category) articles are not converted from vB CMS.
  • Fixed an issue where certain Youtube video embeds may not convert properly from vBulletin.
  • Fixed a potential issue converting inline attachments in vBulletin/XenForo where the inline position may be lost.
  • Fixed attachments and editor autosave behaviour not working correctly when using the bulk submission process.
  • Fixed an edge-case scenario where a conversion would not convert any data.
  • Fixed an error that could occur when rebuilding posts following a conversion.
  • Fixed album descriptions not being parsed following a conversion.
  • Fixed an issue where resuming a conversion that had been interrupted during private message reply conversion, would start from the first reply.
  • Fixed an issue reconverting steps using the converter developer mode.
  • Removed a duplicate language string.
Forums

  • Added ability for Forums created within Clubs to be set so that users can only see the topics they posted (e.g. for a support forum).
  • Added the dateModified property to the structured data that is produced for search engines.
  • Added support for accessing RSS feeds even when guests cannot access the forum.
  • Added an option to mark an individual topic to require moderation for new posts.
  • Exposed some additional configuration options for redirect forums.
  • Improved configuration of topic and post feed widgets to disable forums that cannot be selected.
  • Fixed an issue where deleting a user may leave topics they've posted in forums with "Can view other user's topics" disabled incorrectly showing up in activity streams.
  • Fixed an issue where topics in forums with "Users can view other user's topics" disabled may still see those topics in feed blocks from the forum.
  • Fixed an issue where moved topics may result in the original forum showing as unread indefinitely if a link is left to the new location.
  • Fixed an issue where the ACP - "Popular Now" forum settings couldn't be saved.
  • Fixed an issue where splitting and merging posts may not update popular topic info correctly.
  • Fixed an issue where reputation information may become unassociated with posts when upgrading from 3.4.x.
  • Fixed an issue redirecting certain legacy (3.4.x) topic links following an upgrade to 4.x.
  • Fixed an issue where mass-moving topics from one forum to another from the AdminCP ignores the "last comment" filter option.
  • Fixed some structured data errors, particularly when forums allow ratings to be issued on topics.
  • Fixed an issue where merging links could cause an infinite redirect.
  • Fixed an error message that may display if "Post Before Registering" is disabled and a user attempts to sign in by clicking the button that shows below a topic.
  • Fixed "Start new topic" button not displaying on the index page on mobile for guests when post before registering was enabled.
  • Fixed an issue where an error could be shown when viewing very old topics or the placeholder topic on new installs.
  • Fixed an issue where the pagination wouldn't link to the comments area with disabled JS.
  • Fixed deleting a member not appropriately referencing remote archive databases.
  • Removed a duplicate language string ( 'any_time' ) which can prevent translating this string.
Gallery

  • Added support for accessing RSS feeds even when guests cannot access the Gallery.
  • Added a link to the group settings page and clarifying text for the "Albums" category-level setting.
  • Fixed videos not playing inline when embedded in content.
  • Fixed follow notifications being sent when a member being followed submits images to Gallery despite no notification method being set for following a member.
  • Fixed an issue with editing tags on multiple images consecutively in the lightbox.
  • Fixed EXIF metadata not being read for images in some cases.
  • Fixed a broken AdminCP livesearch keyword pointing to a setting that no longer exists.
  • Fixed an issue toggling the setting on the "show map" form for images in Gallery.
  • Fixed an issue on the ACP - Bandwidth Stats site which would result in an uncaught exception.
  • Fixed a language string clash when both Gallery and Pages are installed which may result in being unable to translate a specific language string.
  • Fixed an issue where editing tags for an image and then immediately attempting to edit the image details would cause the tag field not to load correctly.
  • Removed ability to attach files in image descriptions.
Downloads

  • Added support for accessing RSS feeds even when guests cannot access the Downloads area.
  • Added new 'popular' sort option to REST API for files.
  • Added new /downloads/files/{id}/download endpoint for file downloads.
  • Added new /downloads/files/{id}/buy endpoint for generating invoices.
  • Added multiple items to REST API file response.
  • Added new category setting to determine if a file can have more than one file uploaded at once.
  • Added new 'minimum cost' setting for paid files.
  • Added new 'maximum filesize' per-group setting as an upper cap on submission sizes for the group.
  • Added ability to define where the download disclaimer shows (before purchase, before download or both).
  • Added ability for custom fields to only appear to purchasers of a file.
  • Improved the 'new version' file approval process, versions can now be moderated without hiding the existing version.
  • File topics now get marked read (for the file author) when they are created.
  • Separated new version update notifications from follows.
  • Fixed an issue where Downloads files inserted into editors using "Insert other media" would display "Unavailable" below the filename, instead of the size and download count.
  • Fixed a potential layout issue when editing a file that has screenshots.
  • Fixed attachments not being claimed in Editor custom fields for Files.
  • Fixed an issue where unapproved files could show in latest file info.
  • Fixed an issue where the "Similar Content" widget may not show as many results as configured if you disable a Downloads category.
  • Fixed an issue where moderators would not be notified of new versions requiring approval.
  • Fixed an error saving a category in the AdminCP if the option to post a topic to the forums is enabled but no forum is selected.
  • Fixed an issue where files which have a topic_id associated to it but where the topic doesn't exist anymore, would break the REST API.
  • Fixed an issue rebuilding topics for Downloads categories when using cron-based tasks.
  • Hid certain paid file settings in the AdminCP when accepting paid files is turned off in Downloads.
Blog

  • Added the ability to categorize Blogs and Blog Entries.
  • Added support for accessing RSS feeds even when guests cannot access the blog.
  • Fixed an issue where flagging a member as a spammer would hide/delete entries but not blogs.
  • Fixed an issue where members browsing private blogs could appear in the online user list.
  • Fixed an issue where club blogs could show with the wrong title when embedded elsewhere.
  • Fixed an issue where blog entries would return a wrong dateModified jsonLd date.
  • Fixed an issue where an error can occur on long comments on Blog entries when rebuilding from an upgrade from 3.x.
  • Fixed an issue where blog attachments could break the 'My Attachments' Page.
REST, GraphQL & OAuth

  • Added a GraphQL API to power the Invision Community native apps
  • Added support for Proof Key for Code Exchange by OAuth Public Clients.
  • Added ability to order content items by last updated.
  • Added parentId to node REST API endpoint responses.
  • Added ability to send an X-Authorization header for communities running on a server with PHP in CGI mode, which may not make the Authorization header available. Previously the only alternative was to send the API key in the URL query string, which is undesirable for security.
  • Added parentId to node REST API endpoint responses.
  • Fixed several issues editing, updating and deleting clubs and club members via the REST API.
  • Fixed issue where REST API reference may not show client or member only notices.
  • Fixed Pages REST API create record endpoint not properly refreshing cached information at the category level.
  • Fixed Pages REST API create record endpoint allowing creation of records without a title and body, which results in a broken record to be saved.
  • Fixed the REST API documentation missing some properties which are included in the response when calling a database record.
  • Fixed Forums REST API create forum endpoint ignoring several parameters.
Upgrader

Third-Party / Developer / Designer Mode

  • All automatically created plugin directories contain now an index.html file.
  • Automatically generated hook code contains now the return type and nullable parameters from the parent method.
  • Added a new extension type OverviewStatistics which allows you to add blocks to the Stats > Activity > Overview and Stats > Users > Overview pages in the AdminCP.
  • Added new public method mapUrl() to the Google and Mapbox mapping classes, allowing you to fetch the map URL without the template wrapper.
  • Added ability to pass an instance of \IPS\Db to \IPS\Helpers\Table\Db constructors (and/or override the property after construction) to create tables that query against remote databases.
  • Added support in converter libraries to pass last_vote as an instance of \IPS\DateTime for consistency with other timestamp parameters.
  • Added support to pass a second parameter to contentImages() to ignore permission checks which is useful in places like widgets when "Honor permissions" is disabled.
  • Added support to pass $tab and $after in the following form helper methods: addHeader(), addSeparator(), addMessage(), addHtml(), addMatrix(), and addDummy().
  • Added a minimize method and minimizeAfterReset option to editor JS widget to enable editors to be minimized programatically.
  • Added a showAllNodes option to \IPS\Helpers\Form\Node to force all nodes to display even on the front end.
  • Added a returnFullQuery() method to \IPS\Db\Select which will automatically replace binds so you can see the query that would execute easier.
  • Added option to REST API to include club nodes in the returned list (affects Downloads/Forums/Calendar), defaults to not include club nodes.
  • Added a preSave() method for the ModeratorPermissions extension which can be used to adjust submitted moderator permissions before they are saved.
  • Added events ips.editorMenuOpen and ips.editorMenuClosed to be fired when a mention or emoticon event starts and stops while typing into an editor.
  • Added update checking and author information for language packs.
  • Changed method \IPS\Helpers\Form\FormAbstract::utf8mb4Check() from protected to public.
  • Improved error reporting for SEO_TEMPLATE_IS_NOT_VALID_FOR_URL exceptions to return the query string and seo template that caused the error.
  • Changed the \IPS\File\Amazon::generateTemporaryDownloadUrl() method so that it can be defined by any file storage handler engine and used automatically.
  • Fixed an issue creating multi-column indexes that spanned both textual and date-type columns.
  • Fixed an error that can occur with IN_DEV enabled when importing calendar events from ical file or feed.
  • Fixed an issue where content item implementations that do not implement \IPS\Content\Searchable were still shown as filter options in streams.
  • Fixed an issue with IN_DEV database schema synchronization for custom databases in Pages.
  • Fixed an issue using the \IPS\Helpers\Table\Db table helper with excluded columns in some cases.
  • Fixed IPS\Helpers\Form\WidthHeight instances only working in the AdminCP by moving the template to the global template location.
  • Fixed an issue where select boxes with numeric values may not retain their selections properly if a form reloads due to an error.
  • Fixed a potential undefined index issue throughout the Suite in the language system.
  • Fixed a potential error calling \IPS\Member\Group::groups from certain contexts, such as cron.
  • Fixed an undefined index in Pages when submitting a new record in some configurations.
  • Fixed ratings for content from an application not being deleted when the application is uninstalled.
  • Fixed default scrollScope for the infScroll javascript UI widget not working.
  • Fixed an error attempting to call parent in a hook when using the hook editor within the AdminCP.
  • Fixed undefined variable $form in \IPS\core\modules\front\system\register being passed to profile step formatFormValues() method calls.
  • Fixed an issue where profile completion extensions could not be created without sub steps.
  • Fixed an issue where the title of an advertisement wasn't deleted while the advertisement deletion.
  • Fixed a pagination issue when the content item does not use an SEO slug component in the URL.
  • Removed an unused mobile class property in IPS\Http\Useragent.
  • Removed database schema functionality deprecated in MySQL 8.0.17, including specifying binary on a column, specifying lengths and zerofill for numeric column types, and specifying decimal places for float/double column types.
  • AdminCP menu entries now support two new parameters: menu_checks allows you to define additional input key => value mappings in an array which will also be checked to determine if you are viewing the menu entry page in question, and menu_controller allows you to override the controller check when generating the menu key. This is used by Pages, for instance, to support highlighting the dynamically generated menu entries.
  • AdminCP menu entries now support multiple keys in the restriction parameter, separated by commas. If any key matches, the administrator will see the menu item. Useful for tabbed screens where an administrator may not be able to access some tabs but does have access to others.
  • Application.php files for individual applications can now define a sitemapLinks() method to return additional links to add to the sitemap without having to generate an entire sitemap extension. This should only be used to return a small handful of static links, and sitemap extensions should be used to add a dynamic number of links.
  • Applications can now define a global.css which will automatically be loaded in streams and in searches to ensure you have the ability to apply custom styles to search results.
  • An unnecessary profile field validation check in the registration controller was removed.
  • Uninstalling an application will now remove attachment maps belonging to the application, allowing the attachments to be cleaned up if they are otherwise not being used.
Changes affecting third-party developers and designers
  • jQuery has been updated to version 3.5, which has some breaking changes. However, we are also including jQuery Migrate which re-implements some older APIs while functionality is updated. Check the browser console while developing your applications and aim to resolve any JQMIGRATE messages that your app in particular generates. Migration messages generated by Invision Community and its dependencies will be fixed over time. See https://github.com/jquery/jquery-migrate/blob/master/warnings.md for more information.
  • All AdminCP controllers now require CSRF-protection as on the front-end.
  • File storage handlers must now handle chunked uploading differently. See \IPS\File\FileSystem::chunkInit(), \IPS\File\FileSystem::chunkProcess() and \IPS\File\FileSystem::chunkFinish() - these 3 need to be implemented, replacing the previous chunkAppend() method.
  • Building applications will now store a flag for which module is set as the default, and that module will be set as the default module when users install your application (or upgrade your application, if no other module is already set as the default). The default module will not be reset or changed during upgrades automatically. If you must change a default module during the upgrade, you may do so manually with a database query, however be mindful that administrators may legitimately wish to adjust which module is the default in any given application.
  • Pages comment and review loading now enforce that the comment or review belongs to the specified database. You cannot use \IPS\cms\Records\Comment::load() to load a comment or \IPS\cms\Records\Review::load() to load a review, but must ensure the comment or review ID you are loading belongs to the class it is loaded through (e.g. if loading comment ID 1 and it belongs to database ID 1, you must now use \IPS\cms\Records\Comment1::load()).
  • Dynamic Charts now support the ability to download the generated data as CSV. Details here:
  • BBCode parsing is now considered deprecated, and may be enabled or disabled. If you must rely upon BBCode parsing occurring, you may need to parse content through \IPS\Text\LegacyParser instead of the general \IPS\Text\Parser class.
  • The ability to use SQLCALCFOUND_ROWS has been removed globally because it has been deprecated as of MySQL 8.0.17. If you relied on this functionality to fetch a total row count (i.e. for pagination purposes), you will need to update your code to explicitly run a count query to fetch the total row count separately.
  • Added a new parameter to \IPS\Content\Item::markRead() to force an update even if the content already appears to be read.
  • The postComplete() method for a Queue background task (if defined) was not previously called when preQueueData() returned NULL, which has changed. The postComplete() method will now be called, and a new parameter $processed can be checked to determine if the queue task did anything or not. If you define the postComplete() method for any Queue background tasks, you should add a second parameter $processed which defaults to TRUE.
  • A new variable was introduced in \IPS\Dispatcher\Controller to allow you to set specific controllers and controller actions as "non-content specific", so that google ads & co aren't served on this pages. Please keep this in mind for your custom controllers.
  • The \IPS\Helpers\Form\Node class was incorrectly relying on "view" permissions in some cases to determine if a node should be included in the form helper select box (even in areas like the AdminCP where the nodes should be available even if you cannot view them). This should not pose any issue for third parties, but you may wish to review your node helper instances and ensure all nodes are always shown when appropriate (e.g. nodes the administrator cannot view on the front end are still available for selection in the AdminCP when appropriate, or that they are not available to select when they shouldn't be selectable).
  • Applications built in Invision Community 4.5 will automatically remove deleted language strings when your application is upgraded.
  • A new background task PruneLargeTable has been added which can aid in pruning potentially large database tables.
  • The \IPS\Db::i()->delete() method can now accept an array for $statementColumn and will join the inner table on instead of using a subselect.
  • Some (but not all) implementations of loadFromUrl() previously performed permission checks, however these have been removed and it is now up to user-land code to perform these permission checks when needed.
  • An exception is now thrown if an invalid file storage exception is called in \IPS\File::get() when in development mode.
  • Added a $rowClasses param as the last param when creating a form field, that can be used to pass additional CSS classes to the form row template.
  • Added a urlencode and rawurlencode option for language strings which will urlencode/rawurlencode the entire language string that is returned.
  • Added a $currency parameter to \IPS\nexus\Package::price() to override default customer's currency.
  • Simplification of the .ipsResponsive classes to allow them to be used in a larger variety of cases.
  • Removed image dependency from .ipsStepBar allowing its color scheme to be edited via css.
  • Removed icomoon dependency from css. The icons which were created using this font have been replaced with FontAwesome and pure css equivalents. The icomoon files are still present, so they can be imported using custom.css if necessary.
  • A data-role attribute has been added to list items in .cAuthorPane_info, allowing for more accurate CSS targeting of author stats.
  • The padding and margin values under the .cSearchExpanded class have been replaced with a pseudo element. If you have modified this class or #elSearch, some minor adjustments may be required to ensure the alignment of your search form is correct in your theme.
  • Headers (.ipsWidgettitle, .ipsTypesectionTitle, etc) will now respect the font-family of the body element if the "Headline Font" setting is set to Default.
  • Changed the default font-family from a Helvetica stack to a system-ui stack.
  • Centralised display name checks in a new method \IPS\Login::usernameIsAllowed().
  • Added a new method \IPS\Text\Parser::hasContent() that determines if any actual content was supplied from an editor. This can be used in templates (for example) to adapt the layout depending on whether a node has a description or not.
  • New CSS utility families have been added: ipsFlex, ipsPad (updated to include more variants) and ipsMargin. All support responsive prefixes (md: and sm:) to control how the classes behave at different device sizes. For example, ipsFlex-fd:row sm:ipsFlex-fd:column would make an element flex-row by default, but flex-column on small screens. Similarly, ipsMargin_top sm:ipsMargin_top:half would apply 15px margin-top by default, but only 7px on small screens. See the CSS framework for complete class availability.
  • All hex values inside theme .css files have been replaced with {theme="setting"} equivalents, allowing for a more consistent color scheme, especially with dark themes.
  • The HTML structure for the navigation bar on .ipsLayout_minimal pages is now identical to regular pages.
  • Changed \IPS\Member::generateLetterPhoto() to a public method and added an option to return the letter and color, vs the entire SVG data string.
  • Changed polls to use the poll $url rather than the general form action in the pollForm template.
  • Added new font scale theme settings to keep typography on a fixed scale where appropriate. To aid usage, a new {fontsize} plugin tag is included, which accepts either a font scale size key (e.g. small, medium) or a number in pixels. The new global font scale setting will automatically be honored when the {fontsize} tag is used.
  • Added \IPS\Helpers\Form\Enum which can be used to display a ChecboxSet or Multi-Select box depending on the amount of options present on the form. Useful when Checkboxes are ideal UI, however the amount of options can be dynamic, which can cause issues when many options are present.
  • Applications and Plugins can now create language strings using \IPS\Lang::saveCustom(). The first parameter will now accept either a string or an instance of \IPS\Application for an Application, or an integer or an instance of \IPS\Plugin for a plugin.
  • CodeMirror Form Helpers can now accept a tagLinks option. When used, links (similar to links built in the header of the AdminCP) can be added to the headers for that specific section to allow direct linking to another area. Note, however, that if you need to perform AJAX functions, you will need to include that manually in any JavaScript controllers you implement on the form.
  • CodeMirror Form Helpers can now accept a tagSource option. This should be an \IPS\Http\Url instance, which will then load any tags via AJAX.
  • \IPS\Data\Store::i()->failedMailCount has been replaced with a new method \IPS\Email::countFailedMail() for a real time count
  • Settings have been added to themes to set a maximum logo size at large, medium and small device sizes.
  • The getQueryWhereClausemethod in Bulk Mail Extensions should return only a simple array with the where clause instead of a DB where clause with the parameter binding.
  • Applications and Plugins now have the ability to include Pages templates when they are built. The templates will be imported when the plugin/application is installed.
  • \IPS\File::get() now has a third parameter to accept an integer of the filesize if it is already known. This is a performance improvement for when filesize() is used.
  • If file storage contents are declared 'private' (and use S3 storage) the REST API will now return a signed URL for these resources.
  • The \IPS\Content\Content::urlFromIndexData() method now accepts a third parameter definining the do action, similar to the existing url() method.
  • Fixed an issue where the subnode flag may be lost when mass moving or deleting content.
Deprecations
  • Core: Apc, Memcache, Wincache and Xcache caching engines, we recommend using Redis instead.
  • Core: We will no longer address any issues specific to Internet Explorer 11 and below and will not ensure compatability with those versions.
  • Core: BBCode parsing support - upgrading users will be asked during upgrade if they wish to retain BBCode parsing support, while new installations will have the option off by default. BBCode parsing may be removed entirely in a future release.
  • Commerce: Authorize.net Payment Gateway.
  • Commerce: Web Hosting & Domain support.
  • Downloads: REST API 'files' response in REST API, see /downloads/files/{id}/download instead.
Key Changes
Deprecations

The following items have been marked as deprecated in Invision Community 4.5. This means that while they currently work, they will be removed in a future version and will no longer receive bug reports.

Commerce:

  • Authorize.net Payment Gateway.
  • Web Hosting & Domain support.
Core:

  • BBCode parsing support - upgrading users will be asked during upgrade if they wish to retain BBCode parsing support, while new installations will have the option off by default.
  • APC, Memcache, Wincache and Xcache caching engines , we recommend using Redis instead.
Feature Removal

The following features have been removed in Invision Community 4.5.

Core:

  • We will no longer address any issues specific to Internet Explorer 11 and below and will not ensure compatibility with those versions.
  • ImageProxy has been removed. On upgrade, there is an option to restore the original remote image links, or direct links to the cached image which will be retained.
Downloads:

  • REST API 'files' response in REST API, see /downloads/files/{id}/download instead.


Additional Information
Security

  • Improved password strength checks to detect password values set identically to the account username or email address and to consider them weak.
  • Improved method of encrypting certain text.
  • Improved AdminCP session handling, removing the session ID from URLs and introducing alternate CSRF protections.
  • Improved email change process to invalidate any pending password reset requests.
  • Fixed user not being prompted for two-factor authentication when signing in from a new device.
  • Fixed an issue where it was possible to bypass the messenger recipient count limit.
  • Fixed a niche issue where it was possible in certain configurations to view others profile field attachments on the registration page.
  • Fixed a race condition issue where it was possible to artificially inflate or reduce a user's reputation score.
  • Limited password inputs to 72 characters max to reduce the chance of a malicious user forcing unnecessary computationally expensive operations on the server.
  • Fixed an issue where AdminCP sessions may be usable longer than expected if a community receives little activity.
Core

  • Added beta of Zapier integration for Invision Cloud communities.
  • Added new activity feed and twitter feed widgets
  • Added new view modes, enhanced existing and added more functionality to topic view.
  • Added an initial onboarding screen in the AdminCP for new installations.
  • Added the ability to filter members in the AdminCP by rank.
  • Added the ability to mark a post as the solution without needing the full QA mode.
  • Added the ability to ony show a preview of new private message / new content email notifications to stimulate re-engagement back to the community.
  • Added the ability to have TikTok links become embeddable in an editor.
  • Added the ability to select from stock photos when uploading images.
  • Added the ability to disable advertisements on non-content pages and error pages.
  • Added support for chunked uploading to Amazon S3 which allows for larger file sizes to be uploaded.
  • Added support for PHP 7.4.
  • Added support for Sign in with Apple.
  • Added support for version 4 of the bit.ly link shortening API.
  • Added new options to prune follows, known IP addresses, known devices, and item markers, and default options for some existing prune options have been updated.
  • Added the ability for Club Owners and Leaders to create and manage static pages within their clubs.
  • Added the ability to show content messages only to staff members (moderators).
  • Added a list of members who reacted to content in the tooltip when hovering on the reaction icon.
  • Added overview statistics pages in the AdminCP.
  • Added the plugin version to the ACP plugin list.
  • Added a type-ahead search option when selecting tags from a closed tag input field that contains more than 20 tags.
  • Added support for non-English searches in Giphy when the site is using a language Giphy supports.
  • Added additional static-type links to the sitemap file.
  • Added the ability to filter by custom profile fields in bulk mail, group promotions and exporting member lists.
  • Added the ability to create custom phrases within the language system.
  • Added the Invision Community Marketplace to the AdminCP.
  • Statistics can now be downloaded as CSV files.
  • Added the ability for Club Owners and Leaders to manage the visibility of the members page.
  • Improved referrals tracking and introduced a global community invite feature.
  • Improved the live meta tag editor.
  • Improved performance of several areas of the software.
  • Improved in-AdminCP upgrader to be able to handle more types of upgrades and improve reliability.
  • Improved "Allowed characters in display names" setting to give pre-defined options.
  • Improved performance of thumbnail generation.
  • Added a setting that determines which comment you see first when opening an item.
  • Added the ability for administrators to force users to reset their passwords.
  • Added pending club invites to the club directory sidebar.
  • Added a setting to disable automatic language detection.
  • Added the ability for members to cancel club join requests.
  • Added the ability to include club content to widgets.
  • Added the ability to include/exclude widgets in clubs.
  • Added an AdminCP statistics page for Clubs.
  • Added search term tracking and a statistics page to monitor search term usage.
  • Added a clarification notice to the edit log on the front end when edit logs are pruned.
  • Added a friendlier error message when uploads fail due to a server problem.
  • Added current percentage completed to progress bars.
  • Added ability to filter reputation given and received statistics in the AdminCP by date.
  • Added a check for the PHP file_uploads configuration directive to the support tool.
  • Added theme settings to set maximum logo width at each device size.
  • Changing the default application will be logged to the ACP Admin Log.
  • Added ability for club leaders to specify rules for a club, and force members to acknowledge them.
  • Added the database name and username to database queries to identify slow queries between multiple installations on a single database server.
  • Removed the separation by app in the block manager.
  • Removed the ability to import profile photos from a remote URL to improve security.
  • Removed the image proxy feature to improve security.
  • Removed Digg and Delicious share links.
  • Removed the "What's New" link from the user menu in the AdminCP if the administrator is restricted and cannot reach the page.
  • Removed the newsletter widget from showing in the sidebar by default on new installations.
  • Improved display name availability check when name contains multiple concurrent spaces.
  • Improved memory usage when uploading large images by handling resizing and rotation in the user's browser, rather than by the server.
  • Improved GeoIP lookup caches to store for longer periods of time.
  • Improved randomization for widgets that order by "random".
  • Improved logging of curl-related errors to include the URL that curl attempted to connect to.
  • Improved host detection for guest page caching.
  • Minor styling updates for embeds.
  • Logging in anonymously is now more reliably tracked across multiple devices.
  • Long quotes will now automatically truncate with a "Read more" link to expand the quote to improve usability when long quotes are used.
  • Updates search compatibility for Elastic Search 7.
  • Upgraded CKEditor to 4.14.1.
  • Flagging a member as a spammer will now remove any profile cover photo they may have uploaded.
  • The clubs map now centers around available clubs rather than showing a whole world view.
  • Changed the redirect targets from clubs, to redirect to a club feature after the feature creation and when a member joines a club.
  • Changed the "Maintenance Tasks Not Running" admin notification to check for two or more tasks that have not ran to reduce false positive notifications in the event a feature is enabled which enables a task which has not ran in a long time.
  • Restored the ability to view a list of members through the advanced search without appending unnecessary extra parameters to the URL.
  • Adjusted certain code to remove reliance on MySQL functionality deprecated as of version 8.0.17.
  • Changed the parser to allow <picture> HTML tags through to prevent errors with RSS imports that may use them.
  • Changed the content deletion process so that reports related to the content are no longer deleted.
  • Added logging out as a controller that can bypass forced account completion when a login handler cannot prepopulate a username or an email address.
  • Added rel="nofollow" to certain links in order to instruct search engines not to follow them.
  • Added the ability to export member reputation points when downloading a member list from the AdminCP.
  • Added a confirmation dialog to the "Restore default streams" button in the AdminCP.
  • Improved Google Maps setup page in AdminCP.
  • The Report Center now properly handles content pending deletion.
  • Updated Google Charts to use the latest API (v47).
  • Improved editing a members secondary group by automatically switching between Checkboxes and a Select menu depending on how many groups are present.
  • Improved the way how traffic run tasks are called.
  • Updated the email failure AdminCP notification to run on login instead of email send.
  • Updated the recommended PHP version to 7.3.
  • Search result snippets are now truncated on the server before being served to the browser to increase efficiency.
  • Tags are now shown in search results/streams on mobile devices.
  • Updated the URL used for Twitter oEmbed requests.
  • Added support for converting words to links as well as acronyms in posting settings.
  • Adjusted Easy Mode theme editor to remove support for gradients and simplify the user interface. Added support for 'invert' to easily create dark themes.
  • Fixed an issue where some nodes may not be available in various areas of the software (for instance, forums not being available to move subforums to when deleting a parent forum, and custom Pages blocks not being available to select in the widget manager).
  • Fixed attachments not being claimed when added to Club Editor custom fields.
  • Fixed an issue where admin-validated post-before-register accounts would not trigger follow notifications to be sent.
  • Fixed an issue where bulk mail content count filters caused an error.
  • Fixed an issue where editing a comment and using a word filter entry configured to hold the content for moderator approval may not actually do so.
  • Fixed an issue where stream filters were not updating when the time period was changed.
  • Fixed an issue where items in the main menu "more" overflow can appear in the wrong order.
  • Fixed public club content not showing in streams and searches for guests.
  • Fixed an issue where anonymous users may be displayed in the "Who's Online" widget.
  • Fixed an issue where the files overview member link targeted the wrong location.
  • Fixed an issue where admin control panel failed mail notifications could show a template error.
  • Fixed an issue where predefined tags would not show in category settings when using a closed system.
  • Fixed an issue where searching PMs would only show 25 results.
  • Fixed an issue where incomplete members may not be cleared out of the database.
  • Fixed an issue where Mapbox geolocation could return invalid location data in some circumstances.
  • Fixed an issue where mass moving/pruning members could return no results.
  • Fixed an issue where choosing to move club content while deleting a club resulted in that content being deleted instead of being moved.
  • Fixed an issue where 'and' could be duplicated in lists of followers.
  • Fixed an issue where the selected security questions during registration may reset if the form reloads with an error.
  • Fixed an issue calculating member's age in some locations.
  • Fixed an issue where groups could not be configured to allow reporting of personal conversations.
  • Fixed an issue where HTML advertisements could be saved without any HTML code, resulting in a PHP notice being triggered when previewing the ad.
  • Fixed an issue where dates can show in the wrong format in some configurations.
  • Fixed an issue where uninstalling an application may leave behind attachments for that application.
  • Fixed an error that can prevent inline notifications from showing up.
  • Fixed an issue where the stream condensed/expanded toggles did not work when visiting the URLs directly.
  • Fixed an issue where multimoderaction actions on ony page would redirect to the first page.
  • Fixed a conflict that can occur when two or more external databases are set up for login handling.
  • Fixed an issue where it was possible to bypass profanity filters when using quick title edit.
  • Fixed an issue where the requirement checker may not highlight issues with a storage configuration if only one exists.
  • Fixed an issue where the wrong file size may be shown in upload errors.
  • Fixed an issue where content types that are not searchable may be shown as filter options in streams.
  • Fixed an issue where the support tool would not clear guest page caches.
  • Fixed an issue where personal conversation replies cause a member's "last post" date to be reset incorrectly.
  • Fixed an issue where it was not possible to comment on a reported status update.
  • Fixed some issues with status update/profile comment submissions that fail due to being too large.
  • Fixed an issue where the default module may not be correctly set when installing a new application.
  • Fixed an issue where meta tags could be added to pages they were not intended for.
  • Fixed an issue where group promotion rules for date joined, last posted and last visited may not match correctly.
  • Fixed an issue where disabling clubs in the settings would still leave the "Allow club moderators" setting visible.
  • Fixed an issue where RSS exports may not show all available areas.
  • Fixed some issues tracking and resetting limits when a per-post attachment limit is applied to a group.
  • Fixed an issue where giphy thumbnails may show distorted if your "Maximum image dimensions to display" setting is set very low.
  • Fixed an issue where guest cache may throw an error if a database issue is encountered.
  • Fixed a potential issue that can occur when upgrading with InnoDB tables when MySQL is set to use MyISAM by default.
  • Fixed an issue where unnecessary profile sitemap files may be processed.
  • Fixed a javascript error that can occur due to lazy loading in some cases.
  • Fixed an issue where the drag handles may not show up correctly when attempting to adjust the tab order on the club nav bar.
  • Fixed an issue where certain URLs may not be fetched as expected.
  • Fixed an issue where members that can hide their own content may not people to hide items when creating them.
  • Fixed an issue where blog entries do not update club last activity time.
  • Fixed an issue where it was not possible to move club content to other clubs when deleting sections.
  • Fixed an issue with certain embeds (such as Spotify) in certain environments.
  • Fixed an issue where the "Flagged as spammer" email notification would be missing the details about who was flagged as a spammer.
  • Fixed Unsubscribe Links not working in some cases when Email Link Tracking is in use.
  • Fixed an issue where resorting hidden content in the Moderator CP redirects you to the report center.
  • Fixed an error viewing reports of content items queued for deletion.
  • Fixed signature images not displaying in the AdminCP when image lazy loading is enabled.
  • Fixed an issue where editing content meta messages will not show existing attachments on the edit form.
  • Updated HTMLPurifier to 4.12.0.
  • Removed the ability for an administrator to override a user's time zone.
  • Centralised RSS importing and added support for image enclosures on export and import.
  • Fixed an issue where multiple YouTube embeds in an editor could lead to the editor wrapper overflowing its bounds.
  • Fixed default country when entering an address being incorrectly detected for some users.
  • Fixed an issue where restoring certain default menu items resulted in missing language strings.
  • Fixed an issue where two moderator groups applying to a single user may allow the user to revoke warnings even if they do not have permission.
  • Fixed an issue where carousel widgets would not be scrollable in certain configurations.
  • Fixed certain content links such as links to direct posts not always taking you to the correct page in a multipage topic.
  • Fixed an issue where setting a limit for the maximum items on a sitemap would include the oldest instead of the newest content.
  • Fixed an issue where a 'flash of unstyled content' may appear in Firefox when lazy-loading embedded content.
  • Fixed an issue in the AdminCP where a tooltip would appear off the edge of the screen where a member had no display name set.
  • Fixed an issue where deleting a reaction would not redirect back to the reputation settings tab.
  • Fixed an issue where terms and tags can be removed from search queries in some circumstances.
  • Fixed an issue where some addresses could be saved with a location unintentionally.
  • Fixed a styling issue with the 'Back Button' in the Menu Manager.
  • Fixed potentially being sent to a random page when splitting comments from one content item to another content item.
  • Fixed an issue where deleting reactions would leave the images on the file system.
  • Fixed some structured markup validation concerns.
  • Fixed an error that can occur for guests who have chosen to use a theme which is subsequently deleted.
  • Fixed an SQL error during certain (intentionally invalid) AdminCP login attempts.
  • Fixed an issue where a database can occur if the login form is submitted with no credentials supplied in specific scenarios.
  • Fixed an issue where clubs may reflect an incorrect last activity date.
  • Fixed an issue where signature options would still show when ignoring users even with signatures disabled.
  • Fixed an issue where the member last visit time may not be set for new members.
  • Fixed an issue where checkbox set custom fields could not be set as searchable.
  • Fixed an issue where an administrator who could manage member moderators or group moderators (but not both) will not see the correct options when adding moderators.
  • Fixed extraneous spaces/newlines displaying on some forms.
  • Fixed an issue where partially uploaded files can be orphaned on disk.
  • Fixed an issue where topic links were not correctly using the user unread/first/last post preference.
  • Fixed an issue where members could be informed they were on mod queue because of a warning that had already expired.
  • Fixed an issue where already pending post before register content is not processed if the feature is disabled.
  • Fixed an error that can occur when a cron-based request results in content being parsed, such as when running tasks via cron following an upgrade from 3.x.
  • Fixed an issue where saving group display name changes with blank values caused an error.
  • Fixed a potential SQL error that can occur when upgrading from IP.Board 3.4.9.
  • Fixed an issue paginating in tables when certain special characters were included in the URL.
  • Fixed a potential error that can occur when uninstalling some third party applications.
  • Fixed an issue with language pack list formats when first adding a new language pack.
  • Fixed an issue where when lazy-loading is enabled, a lightbox would not be available for images that had not yet loaded into the browser.
  • Fixed an issue where the REST API would return an error while fetching a clubs data.
  • Fixed an issue where clicking Back in a browser after navigating to a new page of a table would not load the correct content.
  • Fixed an issue where dropdown menus in the main navigation bar may disappear when moving the mouse cursor.
  • Fixed a styling inconsistency in the AdminCP with the clubs page when clubs are disabled.
  • Fixed an EX0 error that can occur with widgets in specific configurations.
  • Fixed an issue where deleting a comment or review may incorrect update the count on the respective tab or remove the tab altogether.
  • Fixed clicking a tag not working when Friendly URL's were disabled.
  • Fixed an issue where certain columns would not be automatically detected when importing members from a CSV.
  • Fixed an error viewing clubs on PHP 7.4.
  • Fixed an issue where anonymous users may show online to administrators when they are not online.
  • Fixed Twitch embeds broken following an update on Twitch.tv.
  • Fixed an error using advanced table searches on PHP 7.4.
  • Fixed excess whitespace being included in the editor when certain text is used in an editor for a promoted item.
  • Fixed an issue using the "insert existing attachment" feature in the AdminCP in some cases.
  • Fixed some outdated phrasing when unsubscribing from emails.
  • Fixed an issue where the "Keep aspect ratio" option when editing image dimensions in the editor may not default correctly.
  • Fixed an incorrect message showing when banning an account in the AdminCP.
  • Fixed an issue where links in plain text emails could break with click tracking enabled.
  • Fixed editor buttons not replacing multiple instances of a {content} variable.
  • Fixed an inability to edit a post containing a badly embedded quote.
  • Fixed an issue where emoji may still replace in the editor even if the setting is disabled.
  • Fixed background task progress bar reporting incorrectly in some cases.
  • Fixed quicksearch menu closing on the front end when clicking on certain rows instead of the labels directly.
  • Fixed some javascript errors that can occur when the page is updated via AJAX.
  • Fixed an SQL error that can occur during upgrades in some cases.
  • Fixed page title reflecting "undefined" when editing permissions for certain editor buttons in the AdminCP.
  • Fixed some buttons in the AdminCP moving into the page header out of the tab the button belongs to when reloading the page.
  • Fixed the "note for member" field when warning a member being wiped when the reason for the warning is changed.
  • Fixed an issue where the REST API can output other members 'last activity' times regardless of anonymous setting.
  • The "Mobile Nav Background" theme setting has correctly been renamed to "Main Nav Background".
  • Fixed a broken page layout on the Username History page.
  • Attachment titles are no longer excessively cropped vertically.
  • The Reconfirm Terms page has been wrapped in .ipsBox to improve contrast in certain themes.
  • Notifications to the author are no longer sent for linked content inside quotes.
  • Fixed an issue where "Posting" and "Profiles" AdminCP menu items may not show even if the restricted administrator has access to parts of them.
  • Fixed an issue where validating members showed in search results.
  • Fixed an error with Windows that can cause certain date and language string values to be broken.
  • Fixed template disk cache files not being made writable in some environments.
  • Fixed an issue where invalid SMTP email credentials could cause content to be posted twice in some cases.
  • Fixed performance issue sending usage report.
  • Fixed an issue viewing all reactions for individual comments.
  • Removed certain logging when using OAuth2 which was unnecessary and could consume a lot of database space.
  • Fixed an issue where the front session handler may be unintentionally started when using \IPS\Output::i()->sendOutput().
  • Removed the Delete and Flag As Spammer buttons from member rows when filtering on groups.
  • Fixed an issue where the front session handler may be unintentionally started when using \IPS\Output::i()->sendOutput().
  • Fixed an issue where uploading a new emoticon with IN_DEV being enabled would result in an exception with PHP 7.4.
  • Fixed an issue where a previous bug could cause the remote image proxy task to error.
  • Fixed an issue sorting personal conversation IP address lookup results by date in the AdminCP.
  • Fixed birthdays sometimes not showing on profiles.
  • Fixed an issue where profiles of users that have followers disabled would show an error with PHP 7.3.
  • Fixed an issue where newly created club icons do not show when editing.
  • Fixed mobile Twitter links not automatically embedding.
  • Fixed a rare error that can occur when deleting a block using the block manager.
  • Fixed an issue where copying a node (such as a forum) that had content pending moderator approval can result in the new node indicating there is content to approve when it is empty.
  • Fixed an error preventing certain image uploads pasted into the editor from uploading correctly.
  • Fixed an issue where it may not be possible to save the 'exclude groups from leaderboard' setting.
  • Fixed an issue displaying colored emoji in some environments.
  • Fixed an issue where the live meta tag editor wouldn't save the form if only the site title was set without having any further tags.
  • Fixed autocomplete fields not initially expanding to show all text when a value is pasted into the field.
  • Fixed deleting a category, while also deleting children, not deleting child categories further than the first child level.
  • Fixed an issue where new comment notifications could show guests in the commenter list when using post before register.
  • Fixed an issue where club filter options would show in activity streams when no clubs were available.
  • Fixed an issue where it was not possible to complete a password reset if the community was offline and email click tracking was enabled.
  • Fixes an invalid “Thank you for vote” message when voting validation fails.
  • Fixed an issue where deleted comments in certain applications may still show inline to moderators with approval to view them.
  • Fixed an issue where setting up 2FA Security questions would result in an error with PHP 7.4.
  • Fixed an issue where coverphotos set to bottom-align on desktop would show gapping on mobile.
  • Fixed an issue where large images in emails may not behave responsively on all devices.
  • Fixed page title duplicating in the Twitter share box when clicking the Twitter share link.
  • Fixed an undefined variable in an upgrader HTML template.
  • Fixed an issue with carousels not advancing to the next image in some edge cases.
  • Fixed an issue where paginating in a comment feed (e.g. a topic) wouldn't work reliably if an anchor (e.g. #comment) was present in the URL.
  • Fixed an issue where users may be incorrectly prompted about new replies in a topic when navigating to a different page via the "back" button.
  • Fixed an issue in the mobile hamburger menu where sub-items may appear to be 'missing' because the menu is actually scrolled down too far.
  • Fixed issues with submenus sometimes opening off-screen when on small devices or when using an RTL language.
  • Fixed an issue where in certain situations, autocomplete results would be incorrectly positioned on mobile devices.
  • Fixed an issue where hovercards may sometimes display partially off-screen.
  • Fixed an issue where the progress bar can exceed 100% when enabling designer's mode.
  • Fixed an issue where new-style Twitter embeds may appear narrow in some browsers.
  • Fixed an issue where the filesystem datastore directory configuration option may still show if selecting to use Redis for caching.
  • Fixed a minor SEO concern reported by the latest version of Lighthouse.
  • Fixed an issue where files may not be deleted when using S3.
  • Fixed dialog window titles clipping out of view if paginating a table within a dialog.
  • Fixed an error with the UTF8 converter that can occur in certain cases.
  • Fixed # anchor being added to the URL in the address bar when closing the drawer element on mobile.
  • Fixed the members/notifications REST API endpoint returning notifications in the wrong order.
  • Fixed a potential syntax error when performing a MySQL search.
  • Changed upgrades to write current upgrade step data to the database instead of to a temporary file on disk.
  • Changed the support tool to only run database checks against enabled applications.
  • Changed the auto-upgrader to only run database checks against enabled IPS applications.
  • Removed custom theme CSS from AdminCP pages.
  • Removed unnecessary down caret from submenus on the primary navigation bar in some cases.
  • Removed the obscure hash from CSS and JS files to prevent duplicate files that are not always cleaned up.
Calendar

  • Improved performance for specific (common) recurring event patterns.
  • Changed the "Upcoming Events" widget to honor the configured widget cache period (previously we forced the widget to cache for 12 hours).
  • Fixed an issue where event reminders would still send for the original date if an event is edited.
  • Fixed an issue where the "repeat until" end date, if specified, may not reflect the correct date after saving the event.
  • Fixed an issue where creating a recurring even could fail.
  • Fixed an issue where reminders could be sent for events no longer viewable.
  • Fixed an issue with some events showing up incorrectly on the day after they occur, in addition to the correct date.
  • Fixed importing iCal files failing in some cases.
Pages

  • Added page builder widgets to create visually interesting pages.
  • Added support for moving comments on records between the Forums and Pages applications.
  • Added Open Graph tags for non-database pages where appropriate.
  • Tags for Manual HTML pages and Blocks now include custom phrases from the language system, with the ability to add new ones directly from the form.
  • Editor type blocks created in the AdminCP under Pages > Blocks are now translatable for communities with multiple languages.
  • Improved performance of large Pages databases.
  • Improved template management.
  • Added lazyload for YouTube, SoundCloud & Spotify fields.
  • Removed a deprecated option to use a special gateway or index for Pages.
  • Removed a hardcoded limit of 5MB for files uploaded to the media manager.
  • Changed the "Show that the message has been edited" setting to be disabled by default, to keep it consistent with the rest of the suite.
  • Fixed an issue where comment and record attachments could become incorrectly associated, or become editable by other users submitting comments or records.
  • Fixed an issue where hidden records or comments contained a wrong hide reason.
  • Fixed an issue with JSON+LD structured data which can cause Google Webmaster Tools to flag structured data for Pages database entries as invalid.
  • Fixed a potential overflow concern on the database record submission form for smaller devices.
  • Fixed an issue where records may not redirect properly when the wrong casing is used in a static friendly URL.
  • Fixed an issue where records will not redirect properly after being moved when a static friendly URL value is used.
  • Fixed an issue where externally embedded blocks do not work if "Allow community to be embedded in an iframe" is not set to "Anywhere".
  • Fixed an issue where it wasn't possible to use pagination on non-database pages.
  • Fixed an issue where it wasn't possible to set the future publish moderator permission on individual databases.
  • Fixed an issue where the task to remove unneeded sidebar blocks could become frozen.
  • Fixed an issue where the database categories block would show without a border when displayed horizontally.
  • Fixed an issue where block templates would not be set correctly.
  • Fixed an error deleting a database category that contained a subcategory with records.
  • Fixed an issue where duplicate block keys may occur when a specific block key is not supplied.
  • Fixed an issue where menu titles would not correctly use database titles when set as an override.
  • Fixed an issue where ratings may not display correctly if reviews are disabled.
  • Fixed an issue where the sitemap lastMod value may incorrectly be set.
  • Fixed a database error that can occur when upgrading IP.Content from prior to Invision Community 4.x.
  • Fixed an issue where title and content fields would not be presented in the "quick update" form when viewing a Pages record if they were configured to do so.
  • Fixed an issue saving Pages templates when comparing the modified template to the default.
  • Fixed an error when attempting to delete a review response in a Pages database.
  • Fixed Mention notification not sending when updating custom fields for a record while viewing the record.
  • Fixed a bug where the width/height attributes for Youtube fields in databases may not be honored.
  • Fixed an issue where number fields would reflect a value of 0 when no value is supplied.
  • Fixed an issue where a Pages database record may incorrectly appear as authored by the administrator editing the record.
  • Fixed an issue where a select field set as the title field for a database would not require the user to select a non-blank option.
  • Fixed an issue where the sitemap rebuild task could break while trying to build the sitemap for a not existing database.
  • Fixed an issue where creating and editing Page Templates would redirect to a wrong template after saving the recently created template.
  • Fixed an error that can occur in Pages databases when the page the database is on has a custom non-default theme applied.
  • Fixed an issue where the insert into post icon would show for record images even though this is not functional.
  • Removed the ability to edit topics automatically created by a Pages database record.
Commerce

  • Added ability to have trial periods for Packages and Subscription Plans, and take card details upfront if it is a free trial.
  • Added ability to define different tax rates for consumers, businesses and EU VAT-registered businesses.
  • Added ability to mass upgrade/downgrade or cancel purchases of a given product.
  • Added option to update existing purchases when changing tax rate for a product which renews.
  • Improved add address link in client area to load form in a modal.
  • Improved product list in AdminCP to include counts of current purchases and better indicate if the product can be purchased (including its stock level, if applicable) and/or upgraded/downgraded.
  • Improved UI in storefront for products which have renewal terms to make it clearer what the real cost is.
  • Improved UI in storefront when viewing products that has the "Allow users to purchase more than one?" setting disabled that the user has already purchased.
  • Improved how expired subscriptions are handled, prompting user to renew rather than start a new subscription. This also fixes an issue where a user may abuse initial term pricing if it is cheaper than renewals. Users can no longer completely cancel an existing subscription (but can still stop renewals).
  • Improved warning page when deleting a product to clarify the steps which should be taken to retire a product.
  • Improved default invoice timeline settings (by default renewal invoices now sent 12 hours before expiry).
  • Improved the error messages shown when a user attempts to visit an invoice in order to pay it but is not logged in, or is logged in to a different account.
  • Updated PayPal gateway to use new Subscriptions API.
  • Updated Stripe gateway for latest supported currencies and card types.
  • Added a missing language in the Administrator logs for enabling subscriptions.
  • Fixed expiration date of subscription sometimes being lost when upgrading/downgrading plan.
  • Fixed renewal invoices being regenerated if cancelled.
  • Fixed an issue where Stripe payment gateways could only be saved if the webhook created had all available events configured to be sent, instead of just the events we need.
  • Fixed wrong package price being used when generating an invoice in the AdminCP and using a non-default currency.
  • Fixed Stripe webhooks potentially reporting an error.
  • Fixed an issue checking out using Braintree combined with coupons.
  • Fixed support request emails containing not displaying non-latin characters correctly if "Outgoing Email Format" is set to "Normal email".
  • Fixed attachments not being claimed in Editor custom fields for Purchases, Support Requests and Customers.
  • Fixed PayPal Billing Agreements mis-charging for purchases manually renewed early.
  • Fixed customers being able to cancel orders while payment is under review.
  • Fixed an issue where copying product physical settings would cause all values to be reset.
  • Fixed an issue where the estimated tax for a product may be inaccurate, particularly when logging in and out with multiple accounts to test.
  • Fixed an issue where deleting a payment method can cause errors to throw when viewing a transaction made through that method.
  • Fixed an issue where updating a product could fail because of a not existing license or license type.
  • Fixed an issue where referrals may not be counted during guest checkout.
  • Fixed issues saving the Easy Post settings form.
  • Fixed incorrect sorting of product filters in Commerce categories.
  • Fixed an inability to choose any product groups to mass-move products to from within the AdminCP.
  • Fixed an issue where recurring payments through Stripe may not succeed for specific customers who purchased in the past.
  • Fixed an issue where checking out using Stripe may not correctly show the payment completed screen.
  • Fixed an issue where non billing contacts were shown a link to pay invoices.
  • Fixed an issue where required upload custom fields in support requests could be skipped.
  • Fixed an issue where support custom fields could display incorrectly.
  • Fixed an issue where member groups would not be restored when users immediately cancel a subscription if they were manually added to the subscription package.
  • Fixed an error checking out when purchasing a paid file from Downloads with a title length longer than 128 characters.
  • Fixed an issue where copying the product filters field value to other products failed. Copy possibility was removed now.
  • Fixed inconsistent use of "Gift Voucher" vs "Gift Card".
  • Fixed an error that can occur when processing incoming support requests if attachments are linked in them.
  • Fixed a problem formatting currencies in some environments.
  • Fixed an error editing Commerce packages on PHP 7.4.
  • Fixed an issue where the wrong tax rate may be applied to an invoice when manually generating a renewal invoice.
  • Fixed an issue with the Admin Notification for shipments where associated invoices would not be shown.
  • Fixed an untranslated language string when managing addresses during a checkout.
  • Fixed an untranslated date when printing invoices.
  • Fixed an unnecessary API call being made for regular PayPal purchases and refunds.
  • Fixed an issue where it may not be possible to give permission to edit email copy settings to restricted admins.
  • Fixed cancelling/refunding a purchase for a product also deleting child purchases, which would also cause an error when viewing the invoice for the child purchases.
  • Fixed a typo.
  • Fixed an issue where purchases from disabled applications would break the purchases list and the purchase details pages in the ACP and frontend.
  • Removed “Update payment details” button from invoice notifications, which was causing confusion as payment wouldn't actually be reattempted.
  • Subscription package cover photos will not be shown if none of the packages have images.
  • Fixed an issue where the "My Details" menu item shows to guests.
  • Fixed an issue where coupon expiry dates may not save or display correctly when editing.
  • Fixed guests being able to submit responses to reviews on products.
  • Fixed possible uncaught exception if an error occurs when upgrading/downgrading subscription plans.
  • Fixed minor UI issue when trying to mass change / cancel purchases of a product which doesn't have any other products in the same group.
  • Removed the "Associate Purchase" button from support requests in the AdminCP if the administrator is restricted and cannot reach the page.
Converters

  • Added support for converting Blog & Blog Entry categories.
  • Added support for converting vB3/4 Avatar Gallery avatars.
  • Added support for converter Club Pages.
  • Added support for new edit name/date/reason functionality in Calendar, Blog & Downloads.
  • Added support for converting WoltLab Suite Core (3.1) and WoltLab Suite Forum (5.1)
  • Added URL redirect support for two very old vBulletin formats: showthread.php?postid=x and showthread.php?threadid=x.
  • Added a new redirect for Photopost showphoto.php URLs.
  • Added the ability to auto detect the PhpBB avatar salt/hash.
  • Improved performance for XenForo & vBulletin conversions.
  • Updated RSS import conversion methods to support new functionality.
  • Fixed an issue where converting SVG sprites from XenForo would cause the conversion to halt.
  • Fixed a missing language string when converting blog attachments.
  • Fixed current status showing HTML code.
  • Fixed an issue where you may not be prompted for a path when converting Club icons.
  • Fixed an issue where orphaned (without valid category) articles are not converted from vB CMS.
  • Fixed an issue where certain Youtube video embeds may not convert properly from vBulletin.
  • Fixed a potential issue converting inline attachments in vBulletin/XenForo where the inline position may be lost.
  • Fixed attachments and editor autosave behaviour not working correctly when using the bulk submission process.
  • Fixed an edge-case scenario where a conversion would not convert any data.
  • Fixed an error that could occur when rebuilding posts following a conversion.
  • Fixed album descriptions not being parsed following a conversion.
  • Fixed an issue where resuming a conversion that had been interrupted during private message reply conversion, would start from the first reply.
  • Fixed an issue reconverting steps using the converter developer mode.
  • Removed a duplicate language string.
Forums

  • Added ability for Forums created within Clubs to be set so that users can only see the topics they posted (e.g. for a support forum).
  • Added the dateModified property to the structured data that is produced for search engines.
  • Added support for accessing RSS feeds even when guests cannot access the forum.
  • Added an option to mark an individual topic to require moderation for new posts.
  • Exposed some additional configuration options for redirect forums.
  • Improved configuration of topic and post feed widgets to disable forums that cannot be selected.
  • Fixed an issue where deleting a user may leave topics they've posted in forums with "Can view other user's topics" disabled incorrectly showing up in activity streams.
  • Fixed an issue where topics in forums with "Users can view other user's topics" disabled may still see those topics in feed blocks from the forum.
  • Fixed an issue where moved topics may result in the original forum showing as unread indefinitely if a link is left to the new location.
  • Fixed an issue where the ACP - "Popular Now" forum settings couldn't be saved.
  • Fixed an issue where splitting and merging posts may not update popular topic info correctly.
  • Fixed an issue where reputation information may become unassociated with posts when upgrading from 3.4.x.
  • Fixed an issue redirecting certain legacy (3.4.x) topic links following an upgrade to 4.x.
  • Fixed an issue where mass-moving topics from one forum to another from the AdminCP ignores the "last comment" filter option.
  • Fixed some structured data errors, particularly when forums allow ratings to be issued on topics.
  • Fixed an issue where merging links could cause an infinite redirect.
  • Fixed an error message that may display if "Post Before Registering" is disabled and a user attempts to sign in by clicking the button that shows below a topic.
  • Fixed "Start new topic" button not displaying on the index page on mobile for guests when post before registering was enabled.
  • Fixed an issue where an error could be shown when viewing very old topics or the placeholder topic on new installs.
  • Fixed an issue where the pagination wouldn't link to the comments area with disabled JS.
  • Fixed deleting a member not appropriately referencing remote archive databases.
  • Removed a duplicate language string ( 'any_time' ) which can prevent translating this string.
Gallery

  • Added support for accessing RSS feeds even when guests cannot access the Gallery.
  • Added a link to the group settings page and clarifying text for the "Albums" category-level setting.
  • Fixed videos not playing inline when embedded in content.
  • Fixed follow notifications being sent when a member being followed submits images to Gallery despite no notification method being set for following a member.
  • Fixed an issue with editing tags on multiple images consecutively in the lightbox.
  • Fixed EXIF metadata not being read for images in some cases.
  • Fixed a broken AdminCP livesearch keyword pointing to a setting that no longer exists.
  • Fixed an issue toggling the setting on the "show map" form for images in Gallery.
  • Fixed an issue on the ACP - Bandwidth Stats site which would result in an uncaught exception.
  • Fixed a language string clash when both Gallery and Pages are installed which may result in being unable to translate a specific language string.
  • Fixed an issue where editing tags for an image and then immediately attempting to edit the image details would cause the tag field not to load correctly.
  • Removed ability to attach files in image descriptions.
Downloads

  • Added support for accessing RSS feeds even when guests cannot access the Downloads area.
  • Added new 'popular' sort option to REST API for files.
  • Added new /downloads/files/{id}/download endpoint for file downloads.
  • Added new /downloads/files/{id}/buy endpoint for generating invoices.
  • Added multiple items to REST API file response.
  • Added new category setting to determine if a file can have more than one file uploaded at once.
  • Added new 'minimum cost' setting for paid files.
  • Added new 'maximum filesize' per-group setting as an upper cap on submission sizes for the group.
  • Added ability to define where the download disclaimer shows (before purchase, before download or both).
  • Added ability for custom fields to only appear to purchasers of a file.
  • Improved the 'new version' file approval process, versions can now be moderated without hiding the existing version.
  • File topics now get marked read (for the file author) when they are created.
  • Separated new version update notifications from follows.
  • Fixed an issue where Downloads files inserted into editors using "Insert other media" would display "Unavailable" below the filename, instead of the size and download count.
  • Fixed a potential layout issue when editing a file that has screenshots.
  • Fixed attachments not being claimed in Editor custom fields for Files.
  • Fixed an issue where unapproved files could show in latest file info.
  • Fixed an issue where the "Similar Content" widget may not show as many results as configured if you disable a Downloads category.
  • Fixed an issue where moderators would not be notified of new versions requiring approval.
  • Fixed an error saving a category in the AdminCP if the option to post a topic to the forums is enabled but no forum is selected.
  • Fixed an issue where files which have a topic_id associated to it but where the topic doesn't exist anymore, would break the REST API.
  • Fixed an issue rebuilding topics for Downloads categories when using cron-based tasks.
  • Hid certain paid file settings in the AdminCP when accepting paid files is turned off in Downloads.
Blog

  • Added the ability to categorize Blogs and Blog Entries.
  • Added support for accessing RSS feeds even when guests cannot access the blog.
  • Fixed an issue where flagging a member as a spammer would hide/delete entries but not blogs.
  • Fixed an issue where members browsing private blogs could appear in the online user list.
  • Fixed an issue where club blogs could show with the wrong title when embedded elsewhere.
  • Fixed an issue where blog entries would return a wrong dateModified jsonLd date.
  • Fixed an issue where an error can occur on long comments on Blog entries when rebuilding from an upgrade from 3.x.
  • Fixed an issue where blog attachments could break the 'My Attachments' Page.
REST, GraphQL & OAuth

  • Added a GraphQL API to power the Invision Community native apps
  • Added support for Proof Key for Code Exchange by OAuth Public Clients.
  • Added ability to order content items by last updated.
  • Added parentId to node REST API endpoint responses.
  • Added ability to send an X-Authorization header for communities running on a server with PHP in CGI mode, which may not make the Authorization header available. Previously the only alternative was to send the API key in the URL query string, which is undesirable for security.
  • Added parentId to node REST API endpoint responses.
  • Fixed several issues editing, updating and deleting clubs and club members via the REST API.
  • Fixed issue where REST API reference may not show client or member only notices.
  • Fixed Pages REST API create record endpoint not properly refreshing cached information at the category level.
  • Fixed Pages REST API create record endpoint allowing creation of records without a title and body, which results in a broken record to be saved.
  • Fixed the REST API documentation missing some properties which are included in the response when calling a database record.
  • Fixed Forums REST API create forum endpoint ignoring several parameters.
Upgrader

Third-Party / Developer / Designer Mode

  • All automatically created plugin directories contain now an index.html file.
  • Automatically generated hook code contains now the return type and nullable parameters from the parent method.
  • Added a new extension type OverviewStatistics which allows you to add blocks to the Stats > Activity > Overview and Stats > Users > Overview pages in the AdminCP.
  • Added new public method mapUrl() to the Google and Mapbox mapping classes, allowing you to fetch the map URL without the template wrapper.
  • Added ability to pass an instance of \IPS\Db to \IPS\Helpers\Table\Db constructors (and/or override the property after construction) to create tables that query against remote databases.
  • Added support in converter libraries to pass last_vote as an instance of \IPS\DateTime for consistency with other timestamp parameters.
  • Added support to pass a second parameter to contentImages() to ignore permission checks which is useful in places like widgets when "Honor permissions" is disabled.
  • Added support to pass $tab and $after in the following form helper methods: addHeader(), addSeparator(), addMessage(), addHtml(), addMatrix(), and addDummy().
  • Added a minimize method and minimizeAfterReset option to editor JS widget to enable editors to be minimized programatically.
  • Added a showAllNodes option to \IPS\Helpers\Form\Node to force all nodes to display even on the front end.
  • Added a returnFullQuery() method to \IPS\Db\Select which will automatically replace binds so you can see the query that would execute easier.
  • Added option to REST API to include club nodes in the returned list (affects Downloads/Forums/Calendar), defaults to not include club nodes.
  • Added a preSave() method for the ModeratorPermissions extension which can be used to adjust submitted moderator permissions before they are saved.
  • Added events ips.editorMenuOpen and ips.editorMenuClosed to be fired when a mention or emoti
4.5.0 Beta 12 updated :) ,Security Patch