New features in 2.4.0.beta3
Allow customization of robots.txt
This features allows admins to customize/override the content of the robots.txt file at
/admin/customize/robots. That page is not linked to anywhere in the UI – admins have to manually type the URL to access that page:
Send max 200 emails every minute for bulk invites
invite.via_email has been deprecated in favor of
This commit adds a new column
invites table for tracking email sending status.
0 - not required 1 - pending 2 - bulk pending 3 - sending 4 - sent
For normal email invites, invite record is created with
emailed_statusset to ‘pending’.
When bulk invites are sent invite record is created with
emailed_statusset to ‘bulk pending’.
For invites that generates link, invite record is created with
emailed_statusset to ‘not required’.
When invite email is in queue
emailed_statusis updated to ‘sending’
Once the email is sent via
InviteEmailjob the invite
emailed_statusis updated to ‘sent’.
External auth when redeeming invites
This feature (when enabled) will allow for
invite_only sites to require external authentication before they can redeem an invite.
- Created hidden site setting to toggle this
- Enables sending invites with local logins disabled
- OAuth button added to invite form
- Requires OAuth email address to match invite email address
- Prevents redeeming invite if OAuth authentication fails
Allow choice of category when making a PM public
Previously it would default to Uncategorized, which was not ideal on some forums. Now the staff member can immediately decide in which category to move the PM
Allow viewing of raw emails for reviewable queued posts
If a post arrives via email but must be reviewed, we now show an icon that can be clicked to view the raw contents of the email.
This is useful if Discourse’s email parser is acting odd and the user reviewing the post wants to know what the original contents were before approving/rejecting the post.
Watched words improvements
New features has been added in this release.
There are two new buttons. The first allows admins to download watched words per action in a
.txt file, the second button clears all deleted words per action (e.g. block, flag etc.). Plus, when a post is rejected because it contains one or more blocked words, the error message now lists all the blocked words contained in the post.
Please note that this new features also changes the format of the file for importing watched words from
.txt so it becomes inconsistent with the extension of the file when watched words are exported.
Customization of html emails
This feature adds the ability to customize the HTML part of all emails using a custom HTML template and optionally some CSS to style it. The CSS will be parsed and converted into inline styles because CSS is poorly supported by email clients. When writing the custom HTML and CSS, be aware of what email clients support. Keep customizations very simple.
Customizations can be added and edited in Admin > Customize > Email Style.
Since the summary email is already heavily styled, there is a setting to disable custom styles for summary emails called
apply custom styles to digest found in Admin > Settings > Email.
As part of this work, RTL locales are now rendered correctly for all emails.
List category moderators on the about page
A new update for the Category Group Review/Moderation feature. From now on, category moderators will be visible on the About page of the site, along with staff members.
Add support for group members visibility level & Send notification when member was accepted to group.
Another addition to group visibility management. Now there are 5 visibility levels (similar to group visibility)
- public (default)
- logged-in users
- members only
Admins & group owners always have visibility to group members.
Also from now on, notifications will be sent to users who are accepted into a group.
This feature adds support for a
<d-topics-list> tag you can embed in your site that will be rendered as a list of discourse topics. Any attributes on the tag will be passed as filters. For example:
<d-topics-list discourse-url="URL" category="1234"> will filter to category 1234.
To use this feature, enable the
URL is your discourse forum’s URL.
Then include the
<d-topics-list discourse-url="URL"> tag in your HTML document and it will be replaced with the list of topics.
For details see Embedding a list of Discourse Topics in another site
Add a webhook for user notifications
If enabled, this will fire a webhook whenever a user’s notification has been created. This could potentially be a lot of data depending on your forum, and should be used carefully since it includes everything all users will see in their feeds.
These are other improvements to the themes. The first one allows themes and components access to theme assets. This means that inside theme js you can now get the URL for an asset with:
The second improvement helps unlock the ability for themes to defer load larger js payloads. The change is safe as themes are allowed to include inline js anyway.
Site settings for linking with iOS/Android native apps & Incorporate PWA install prompt into Discourse UI
In this release there are new features also for Android and iOS apps.
Now there are two new site settings to add support for iOS Universal Links via an
apple-app-site-association endpoint and for Google Digital Asset Links at the
Moreover we will prevent the native install “mini-info” bar from ever appearing, capture the event that pops with it, and delay it until the user meets our criteria, which currently is trust_level 1.
If the event happens and the user meets our criteria we show a Discourse alert banner proposing the install to the user. Dismissal of the banner is recorded so the user ins’t bothered anymore on the same device.
Login with Discord
We added the functionality of discourse-plugin-discord-auth into core. The plugin will automatically disable itself when core is updated, see: discourse/discourse-plugin-discord-auth@fd08678?w=1.
For setup instructions, visit Configuring Discord Login for Discourse
Improve performance of anonymous cache
Here 2 new features to improve performance:
DISCOURSE_COMPRESS_ANON_CACHE (true|false, default false): this allowsyou to optionally compress the anon cache body entries in Redis, can be useful for high load sites with Redis that lives on a separate server to webs.
DISCOURSE_ANON_CACHE_STORE_THRESHOLD (default 2), only pop entries into redis if we observe them more than N times. This avoids situations where a crawler can walk a big pile of topics and store them all in Redis never to be used. Our default anon cache time for topics is only 60 seconds. Anon cache is in place to avoid the “slashdot” effect where a single topic is hit by 100s of people in one minute.