Releases: coralproject/talk
v3.4.0
Features
- Introducing Your Reactions & Replies! 🎉 We now show how many reactions and replies all of your comments have received via the My Profile page
- Better handling of Pre-Mod comments and New comments - the Pre-Mod queue appears whenever there are pre-moderated comments for any reason and disappears again once they've been moderated
Recipes & Plugins
- Introducing the Subscriber Badge recipe (coralproject/talk-recipes#3) - a simple way to connect your newsroom database to Talk to show a badge for commenters when they are also subscribers
- Ignore User is now a plugin (
talk-plugin-ignore-user
) and is available by default alongside Member Since (talk-plugin-member-since
), which are relocated to the brand new Author Menu - Author Menu has 2 new plugin slots:
authorMenuInfos
andauthorMenuActions
- We also have another new plugin slot created for tags on the Author Name,
commentAuthorTags
, which enables new tags and badges to be created there
Dev Support
- When a CLI command is incorrectly entered, the application will not crash with a reference error
- Closest match commands will be suggested when the correct CLI command wasn't found
- Replaces the
node_redis
library withioredis
for its clustering and promise support
Fixes & Optimizations
- Fix bug when determining moderation queues for updates
- Fix issue where replies weren't auto-updating when viewing a Sorted Stream
- Fix issue that was limiting TLD for email verification to only 4 characters
- Fix issue that would cause constant pinging of Auth API if sitting on Talk while logged out
- Fix ignored users' comments showing in Featured Comments
- Fix replies of ignored users still showing without being tombstoned
- "Edit" button now disappears once the comment editing timeframe has run out
- Added tests and optimized queries
v3.3.0
Features
- Introducing Stream Sorting! 🎛️
- Now readers can sort the stream by Oldest, Newest, Most Reacted (Liked, Respected, Loved, etc) and Most Replied. This can be turned on by including these 4 plugins in your
plugins.json
file. More info here: #870 - We've added a Reply badge for comments in the Admin so Moderators know if a comment was a reply
- We've added more icons to the optional Ask A Question space at the top of the comments, so you can also use it for quotes, sources, and announcements.
Recipes & Plugins
- Our Author Name recipe allows you to build your own plugins that leverage the username space, check out more here: https://github.com/coralproject/talk-recipes/tree/master/plugins/author-name
Dev Support
- Better error messaging for ExtendableErrors
- More optimizations and code cleanup to reduce image size, bundle size, and improve performance
Fixes
- Banned Words regex bug fixes
- GraphQL and fragments bug fixes
- Fix incorrect comments showing in My Profile and in Permalink live view
v3.2.0
Features
-
Introducing Report Karma! 🎏
-
Each time a user reports a comment as violating the site guidelines, and the moderator then rejects the comment, their individual Report Karma score goes up by one point. Each time the moderator approves a comment that the user has reported (ie. says that the comment is ok), their score goes down one point.
-
If a user's reports mostly match what moderators reject, their Report status will display to moderators as Reliable in the user information drawer. If a user's reports mostly differ from what moderators reject, their Report status will show as Unreliable.
-
If we don't have enough reports to make a call, or the reports even out, their status is Neutral.
-
Note: Report Karma doesn't include reports of "I don't agree with this comment".
-
The default Report Karma thresholds are:
- -2 and lower -> Unreliable
- -1 to +2 -> Neutral
- +3 and higher -> Reliable
-
You can change these thresholds as environment variables: https://coralproject.github.io/talk/docs/running/configuration/#trust
Optimizations
- Extensive frontend optimizations using shouldComponentUpdate and our GraphQL framework (See full details here: #863)
- Update Apollo
- Remove immutable.js from core
Dev Support
-
Add support for mounting the router on a base path. When the
TALK_ROOT_URL
contains a path component, andTALK_ROOT_URL_MOUNT_PATH
is set toTRUE
, then the router will mount all the paths onto the pathname component of theTALK_ROOT_URL
.Example:
TALK_ROOT_URL=https://my-site.com/api/comments TALK_ROOT_URL_MOUNT_PATH=TRUE
Then the GraphQL endpoint will be mounted at:
https://my-site.com/api/comments/api/v1/graph/ql
-
Adds extensive debugging logs support for any Redis connection originating from Talk, as well as exposing more configuration parameters revolving around reconnection logic. The new Redis configuration options available are:
TALK_REDIS_RECONNECTION_MAX_ATTEMPTS
(optional) - the amount of attempts that a redis connection will attempt to reconnect before aborting with an error. (Default100
)TALK_REDIS_RECONNECTION_MAX_RETRY_TIME
(optional) - the time in string format for the maximum amount of time that a client can be considered "connecting" before attempts at reconnection are aborted with an error. (Default1 min
)TALK_REDIS_RECONNECTION_BACKOFF_FACTOR
(optional) - the time factor that will be multiplied against the current attempt count inbetween attempts to connect to redis. (Default500 ms
)TALK_REDIS_RECONNECTION_BACKOFF_MINIMUM_TIME
(optional) - the minimum time used to delay before attempting to reconnect to redis. (Default1 sec
)
Fixes
- Fix Suspect and Banned words not highlighting when adjoined by punctuation
- Fix Dashboard links which were incorrect
- Fix Ignore User capability from permalink page
- Fix bug with some Configure settings
- Styling fixes
v3.1.0
Plugin Support
-
Add support for Plugins to define and enable new Mod Queues! 🥇 The newly created mod queue can filter by tags, statuses, or comments containing a certain action (e.g. flagged, liked)
modQueues: { newQueueKey: { // Name name: 'My Queue Name', // Material Design icon icon: 'star', // Filter by tags tags: ['MY_TAG'], // Filter by statuses statuses: ['NONE', 'PREMOD', 'ACCEPTED', 'REJECTED'], // Filter by comment containing action_type action_type: 'FLAG', }, },
Example: Add a Featured Queue to the talk-plugin-featured-comments
; simply add this to the plugin's index.js
:
modQueues: {
featured: {
tags: ['FEATURED'],
icon: 'star',
name: 'Featured',
},
},
- Allow passing of config to plugins (#839)
Features
- View More user history
- Auto updating and pagination to My Profile
- Emit events for
ui.AllCommentsPane.viewNewComments
&ui.Comment.showMoreReplies
for 3rd party event tracking
JWT/Cookie Support (ref: #831, #845)
-
Added more docs around JWT's
-
Fixes some bugs with the secrets loading
-
Created new configuration parameters:
TALK_JWT_DISABLE_AUDIENCE
(optional) - whenTRUE
, Talk will not verify or sign JWT's
with an audience (aud
) claim, even if theTALK_JWT_AUDIENCE
config is set. (DefaultFALSE
)TALK_JWT_DISABLE_ISSUER
(optional) - whenTRUE
, Talk will not verify or sign JWT's
with an issuer (iss
) claim, even if theTALK_JWT_ISSUER
config is set. (DefaultFALSE
)TALK_JWT_USER_ID_CLAIM
(optional) - specify the claim using dot notation for where the
user id should be stored/read to/from. Exampleuser.id
would store it like:{user: {id}}
on the claims object. (Defaultsub
)
-
Adds support for changing the cookie's name for any cookie we set related to the auth state by introducing the following new configuration parameters:
TALK_JWT_SIGNING_COOKIE_NAME
(optional) - the default cookie name that is use to set a cookie containing a JWT that was issued by Talk. (Default process.env.TALK_JWT_COOKIE_NAME)
-TALK_JWT_COOKIE_NAMES
(optional) - the different cookie names to check for a JWT token in, seperated by ,. By default, we always use theprocess.env.TALK_JWT_COOKIE_NAME
andprocess.env.TALK_JWT_SIGNING_COOKIE_NAME
for this value. Any additional cookie names specified here will be appended to the list of cookie names to inspect.
-
When a request comes in, it will be verified against the following order:
- Custom cookies named from the list in
TALK_JWT_COOKIE_NAMES
. - Default cookies named
TALK_JWT_COOKIE_NAME
thenTALK_JWT_SIGNING_COOKIE_NAME
. - Query parameter
?access_token={TOKEN}
. - Header:
Authorization: Bearer {TOKEN}
.
- Custom cookies named from the list in
CLI
- Added Domain Whitelisting support to CLI setup
Styles
talk-stream-auth-sign-in-button
andtalk-stream-comment-chevron
- Admin style updates
Fixes
v3.0.0
IMPORTANT: This release contains new plugin prefixes; please test thoroughly before you deploy to a production environment, as you will have to update your plugins.json
and ensure there are no errors. If you run into trouble, log an issue and our team will reach out to help you.
Plugins
- For consistency and ease of understanding, we have renamed all Talk Plugin prefixes from
coral-plugin
totalk-plugin
; we will be usingtalk-plugin
exclusively moving forward and recommend you also use this for your Talk Plugins 🔌
Features
- Talk now supports event tracking via 3rd party systems via an Event Emitter; the events currently provided are those that exist by default from GraphQL and Redux; you can see an example config in
views/article.ejs
:
{
// The argument passed is the event emitter from https://github.com/asyncly/EventEmitter2
events: function(events) {
events.onAny(function(eventName, data) {
// logs all available events.
console.log(eventName, data);
});
},
}
- User Details are available from more places in the Admin (anywhere a username is provided), so moderators can easily get user context when making moderation decisions
- The "New" Comments queue shows new comments that haven't been moderated that might need attention
- Admins and Mods can view the context of rejected and pre-mod comments in the Comment Stream and Permalink pages, but this isn't available to commenters for privacy reasons
- "Don't agree" reporting is no longer listed as a flag, as it doesn't trigger a flag in the Mod Queues
- Moderators can now Feature and Un-Feature comments from the Mod Queues 🌟
Dev Support
- Exposes the
JWT_ALG
as a config param; allows parsing of token from query param - Generates and integrates introspection query results (ref: #772)
events) & remove token from local store when getting a 401 Unauthorized response (ref: #815) - Adds support for disabling the babel-polyfill on the parent embed.js (ref: #818)
- Allows hosting of Talk on a different URL by adding support to the pre-existing
ROOT_URL
param (set viaprocess.env.TALK_ROOT_URL
) to contain path routing information - Supports returning an object on Talk.render to control the embed (currently triggering login / logout and listening to events); also removes the token from local store when getting a 401 Unauthorized response (ref: #815)
Translations
- Talk now supports Brazilian Portuguese! 🇧🇷
Fixes
- Only allow permalinks for comments on a particular asset
- Fix Safari issues for popups
v2.5.0
Plugins
- Introducing Featured Comments! 🌟
- You can now feature comments via
talk-plugin-featured-comments
- Moderators can pick comments (including replies) to feature using the Star button on the stream
- Featured Comments can be set as the default first stream tab by setting
TALK_DEFAULT_STREAM_TAB=talk-plugin-featured-comments
as an ENV variable - A tool tip explains to your readers how comments get featured, so the process is transparent
- Reaction slots are also supported in Featured Comments, meaning you can now include plugins within plugins!
- Also, ignored users are still ignored in Featured Comments
- We removed the Like button from Talk's default plugins; instead by default Talk ships with only the Respect button enabled, as recommended in a study from the Engaging News Project; (you can still enable reaction plugins such as Like or Love by including them in your
plugins.json
file)
Features
- You can now change the way Suspect Words are dealt with by the system; if you include
TALK_DISABLE_AUTOFLAG_SUSPECT_WORDS = TRUE
in your env, Suspect Words won't be flagged automatically and instead are just highlighted
Documentation
- Added docs on how to setup and run Talk using microservices
Fixes
- Rewrote the auth popup functionality to be more stable
- Fix long story titles breaking the Story Search dropdown
v2.4.1
v2.4.0
Introducing... Recipes! 🍳
- Our first Talk recipe gives developers a plugin template to build upon in order to support commenter avatars - check it out!
- You can find all the Talk recipes here: https://github.com/coralproject/talk-recipes
Plugins
- Ability to generate plugins via the CLI (ref: #746)
- Adds support to create Stream Tabs via plugins (ref: #749)
Features
- Allow querying of comments and comment counts by tags
Styling
Updated
commentStream
->talk-embed-stream
talk-stream-tabbar
->talk-embed-stream-tab-bar
talk-stream-comment-count-tab
->talk-embed-stream-comments-tab
talk-stream-profile-tab
->talk-embed-stream-profile-tab
talk-stream-configuration-tab
->talk-embed-stream-configuration-tab
#coralStream
->#talk-embed-stream-container
New
talk-stream-show-all-comments-button
(This is not prefixed withtalk-embed-stream-*
because it is moved to the Stream Component in #749)talk-embed-stream-highlight-comment
(Set when viewing stream using a permalink)coral-plugin-flags-button-flagged
(Will change totalk-plugin-flags-button-flagged
at a later refactor)
Documentation
- Added documentation for creating and managing
tags
- Added documentation for the Talk CLI tool
- Added documentation for our Metadata API
- Added Troubleshooting tips page
- Continued improvements to Plugin documentation
Fixes
- Only show action icons on mobile (e.g. Like, Reply)
- Fix live updates on permalink page
- Only use
setState
once to resolve a console error - Remove some global CSS and fixed styling issues
v2.3.0
Features
-
Support for nesting/threading of comments
-
Support for configuring nesting level using ENV variable
TALK_THREADING_LEVEL
(default is 4 levels) -
Includes styling for up to 4 thread levels:
talk-stream-comment-wrapper-level-${depth} talk-stream-comment talk-stream-comment-level-${depth} talk-stream-highlighted-comment talk-stream-pending-comment
-
Updated CSS classNames
coral-new-comments -> talk-new-comments
Translations
- Talk now supports Français 🇫🇷
CLI
- Add or update your Organization Name via
cli settings change-org-name
Fixes
- Fix a bug with the user history drawer in the Admin
- Flush the redis database before each test to resolve a bug that threw an error because of rate limiting (also changes default redis test database to 1, which differs from the default 0)
v2.2.1
Plugin Support
-
Allow disabling of plugin components via
plugin_config
, e.g.{ "plugin_config": { "coral-plugin-love": { "disable_components": true, } } }
-
Provide
isSlotEmpty(slot: string): boolean
inplugin-api/beta/client/services
-
Don't show login prompt when
login
slot is empty