Skip to content

Releases: coralproject/talk

v3.4.0

05 Sep 09:19
Compare
Choose a tag to compare

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 and authorMenuActions
  • 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 with ioredis 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

28 Aug 18:19
Compare
Choose a tag to compare

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

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

21 Aug 16:22
Compare
Choose a tag to compare

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, and TALK_ROOT_URL_MOUNT_PATH is set to TRUE, then the router will mount all the paths onto the pathname component of the TALK_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. (Default 100)
    • 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. (Default 1 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. (Default 500 ms)
    • TALK_REDIS_RECONNECTION_BACKOFF_MINIMUM_TIME (optional) - the minimum time used to delay before attempting to reconnect to redis. (Default 1 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

10 Aug 22:18
Compare
Choose a tag to compare

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) - when TRUE, Talk will not verify or sign JWT's
      with an audience (aud) claim, even if the TALK_JWT_AUDIENCE config is set. (Default FALSE)
    • TALK_JWT_DISABLE_ISSUER (optional) - when TRUE, Talk will not verify or sign JWT's
      with an issuer (iss) claim, even if the TALK_JWT_ISSUER config is set. (Default FALSE)
    • TALK_JWT_USER_ID_CLAIM (optional) - specify the claim using dot notation for where the
      user id should be stored/read to/from. Example user.id would store it like: {user: {id}}
      on the claims object. (Default sub)
  • 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 the process.env.TALK_JWT_COOKIE_NAME and process.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 then TALK_JWT_SIGNING_COOKIE_NAME.
    • Query parameter ?access_token={TOKEN}.
    • Header: Authorization: Bearer {TOKEN}.

CLI

  • Added Domain Whitelisting support to CLI setup

Styles

  • talk-stream-auth-sign-in-button and talk-stream-comment-chevron
  • Admin style updates

Fixes

  • Fix some bugs that were breaking action summaries and Accept/Reject buttons on Admin (#835)
  • Fix bugs with closedAt #808
  • Fix bug with removing tags (#847)

v3.0.0

02 Aug 18:06
Compare
Choose a tag to compare

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 to talk-plugin; we will be using talk-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 via process.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

22 Jul 23:00
Compare
Choose a tag to compare

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

17 Jul 20:45
Compare
Choose a tag to compare

Fixes

  • Update Node version to 7.10.1 for security reasons

v2.4.0

13 Jul 18:01
Compare
Choose a tag to compare

Introducing... 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 with talk-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 to talk-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

07 Jul 16:53
Compare
Choose a tag to compare

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

05 Jul 11:18
Compare
Choose a tag to compare

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 in plugin-api/beta/client/services

  • Don't show login prompt when login slot is empty