Skip to content

Releases: coralproject/talk

v4.3.1

10 Apr 18:08
Compare
Choose a tag to compare

Fixes and Enhancements

  • Fixes to Safari + iOS auth issues when using an external auth provider with the embed.login(<token>) method #1509
  • Prompts to save settings on admin page on navigation #1498
  • Duplicate comment content rendering for featured comments and profile #1506
  • Render links in the RTE #1500
  • Fix a bug with the IfSlotNotEmpty component #1503
  • Fixed a bug with webpack loading, plugins can now contain client code when loaded from npm 🎉 #1502
  • Fixed install buttons on install #1494
  • Scraper now includes a user agent header to help identify it #1481
  • Added a link to a missing tutorial #1495
  • Misc doc updates #1492
  • Fix to asset scraping cli #1510
  • Added Finnish translations! (Thanks @kauppvi!) 🇫🇮
  • Improved French translations. (Thanks @cecilebertin and @TheoChevalier!) 🇫🇷

v4.3.0: Notifications and Rich Text

27 Mar 19:20
f83aea0
Compare
Choose a tag to compare

Features

  • Introducing Email Notifications! ⏰

    • You can enable core notifications support via talk-plugin-notifications (server & client)
    • Commenters can manage their email notification settings within the Settings Tab on their My Profile
    • Commenters will need to verify their email to receive notifications
    • Supports SMTP email notification sending & ability to override this if you are using an ESP
    • Supports ability to override email templates
    • Learn more about How to Setup Email Notifications
    • Read Docs and Advanced Configuration
    • Notification Categories available:
      • talk-plugin-notifications-category-reply: Sends a notification if a commenter receives a reply to their comment
      • talk-plugin-notifications-category-staff-reply: Sends a notification if a commenter receives a reply from a staff member
      • talk-plugin-notifications-category-featured: Sends a notification if a commenter's comment is featured
    • Notification Digests available:
      • talk-plugin-notifications-digest-hourly: Digests notifications by the hour
      • talk-plugin-notifications-digest-daily: Digests notifications by the day
  • Introducing Rich Text support for comments! ⌨️

    • You can enable rich text support via this plugin:
      • talk-plugin-rich-text (client & server)
    • Supports Bold, Italic, and Blockquote
    • Supports both stream-side comments and comments displayed in the Admin
    • Ref: #1460

Plugin Support 🔌

  • Introducing Plugin Debug! 🐛
    • plugin_config changed to plugins_config (both are still supported, plugin_config is marked as deprecated)

    • Passing debug:true to the plugins_config highlights the slots and when you hover over them you get a tooltip with the name of the slot. This is a simple, interactive and helpful tool to see which slots are available.

      plugins_config: {
        debug: true
      }
    • We've also enabled this in our beta version of Coral DevTools Browser Extension ⚙️

  • Adds slotSize support for Slots; now you can dictate how many plugins are acceptable for a Plugin Slot and the preference will be dictated by their ordering in plugins.json (ref: #1402)

Dev Support

  • Introduces Yarn Workspaces to reduce package size and simplify plugin flow
  • postMessageAPI:
    • Replaces the localStorage events edition of syncing the access tokens with the Window.postMessage API
    • Allows Talk to work flawlessly when 3rd party cookies are disabled/blocked by using cross origin safe communication means
    • Also patches the storage service to use sessionStorage if localStorage is not accessible (like when 3rd party cookies are blocked)
  • Quieter logs on production mode (ref: #1395)
  • Adds pre-commit linting (ref: #1400)
  • Adds a metadata object to the Setting model, we can leverage all current Plugins hooks to let plugin authors have their own configurations for plugins in the administration dashboard (you know, that place with the other <ConfigureCard>s) (ref: #1403)
  • Adds support for CircleCI 2.0 (ref: #1407)
  • Improvements to asset scraping (ref: #1425,
  • Restores the userCreated event (NOTE: External plugins utilizing the Users service's user create methods must adjust their call signatures to pass in the context) (ref: #1441)
  • Uses asset.url as a fallback when asset.title is missing (ref: #1442)
  • Improvements to Slots and GraphQL framework (ref: #1446)
  • CSS loading enhancements:
    • React CSS styling is now extracted into bundle.css and included before Custom CSS which solves priority issues with CSS overwrites
    • Removes hard-source webpack plugin as we ran into cache issues
    • Cachse babel-loader instead branch wide in the CI
    • Webpack output files now include a hash in the filename, which helps dealing with cache issues with an exception forembed.js
    • resolve method is now available in templates, helping to resolve an unhashed filename to the correct one.

Documentation

CLI

  • By popular demand, restores bin/cli users create to our CLI tools
  • Ability to disable jobs via the CLI:
    • You can now run application with ./bin/cli serve --disabled-jobs mailer or yarn start --disabled-jobs mailer to disable the jobs listed (you may specify more than one using a comma to separate them like: yarn start --disabled-jobs mailer,scraper)

Translations

  • Talk now supports Arabic! (thank you to @memz)

Fixes & Enhancements

  • Show banning and suspension time in days and hours
  • Made User Info tooltip in Admin > User History more readable
  • Moved Ignored Users to new Settings Tab on My Profile
  • Blank states for Ignored Users and Comment History in My Profile
  • Improvements to Admin > User History > Account History tab
  • Purges config.auth_token from redux on logout (fixes: #1393)
  • Better styling for permalinked comment (ref: #1406)
  • Adds a username collision test for new external users. Currently if there is already a user of the format _, no one with the same name will be able to sign up using an external SSO like Facebook or Google. This patch checks for collisions, and if found, adds a random number to the end of the username.
  • Fixes a bug when a user tries to logout without having an authenticated request
  • Fixes bug with password reset

v4.2.2

20 Feb 18:56
74d38f1
Compare
Choose a tag to compare

Fixes

  • Fix bug that was preventing live updates in the comment stream
  • Fix styling of Suspend/Ban tooltip in the User drawer
  • Fix translation keys and add German translations for Facebook auth

v4.2.1

17 Feb 00:21
950efba
Compare
Choose a tag to compare

IMPORTANT If you're using our Facebook Auth plugin, talk-plugin-facebook-auth must be added to BOTH client and server plugins for Facebook Auth to work

Fixes

  • Fix typo in Akismet translation file that was causing talk-plugin-akismet to break Talk
  • Fix and clean up Report Details related to Akismet Spam reports and Toxic Comments reports
  • Fix Password Reset and Email Verification email links
  • Fix bug that was not displaying Suspended status or allowing to Unsuspend a commenter

Auth Refactor

  • Decouple auth logic into coral-framework
    • New reducers
      • config
      • auth
    • New HOCs
      • withSignUp
      • withSignIn
      • withResendEmailConfirmation
      • withForgotPassword
      • withSetUsername
  • New Components:
    • Recaptcha
  • Decouple login dialog into its own bundle coral-login
  • Implement admin login on top of new abstractions in coral-framework
  • Implement talk-plugin-auth on top of new abstractions in coral-framework
  • Decouple facebook login from talk-plugin-auth
  • Implement client side implementation of facebook login in talk-plugin-facebook-auth
  • Fixed Recaptcha bug
    • Previously you could only send the form once because the recaptcha response is only valid once
    • Now a new recaptcha response is requested for each form send
  • Implement Recaptcha for the popup login
  • Refactor admin and stream init into bootstrap service
  • Static config is now automatically added to config.static
  • New slots in talk-plugin-auth: authExternalSignIn and authExternalSignUp
  • Expose new auth abstractions in plugin-api

v4.2.0

14 Feb 19:03
0b2cc29
Compare
Choose a tag to compare

IMPORTANT This release contains a patch for a Pym security vulnerability by upgrading to Pym 1.3.2

Features

  • Introducing Draft Comments 🖇 Your comment draft will stay even if you switch Tabs or refresh the page
  • Introducing Akismet Spam Support
    • Enable the plugin using talk-plugin-akismet in your plugins.json file (note: you must have an Akismet account)
    • If commenters enter a comment Akismet flags as spam, they will see this message: "The language in this comment looks like spam. You can edit the comment or submit it anyway for moderator review."
    • If they continue to post the spam-flagged comment, they will see: "Thank you. Our moderation team will review your comment shortly."
    • The comment enters moderation with a "spam" badge
    • For more information about configuring this plugin, please see our Akismet Docs

Translations & i18n

  • Thank you to @hellp's team for contributing a German translation for Talk!
  • Add logic that will fallback to English if a translation key or translation is not available
  • Update Dutch translations for Core and Plugins
  • Add missing translation keys for Core and Plugins
  • Add more translation keys for text that was previously i18n-supported

Enhancements

  • Add ability to Logout from the /admin page for non-admins
  • Add better message if a commenter tries to post while suspended: "Your account is currently suspended. It will be reactivated in [@time]. Please contact us if you have any questions."
  • Fix issue that was not correctly setting TALK_INSTALL_LOCK=

v4.1.0

05 Feb 16:58
869fb9d
Compare
Choose a tag to compare

Upgrading to v4.1.0

If you're moving from 4.0.0 to 4.1.0, a small database migration is required. Upgrade instructions here: https://coralproject.github.io/talk/migration/4.1/

If you're moving from 3.x.x to 4.1.0, please note a database migration and change to your site's embed script is required. Upgrade instructions here: https://coralproject.github.io/talk/migration/4/

Features

  • Introducing... Zen Mode! 🕉️
    • Now moderators can focus on moderating one comment at a time by using the z shortcode while on the Moderate tab
    • Hint: once in Zen Mode, use the other keyboard shortcuts to have a mouse-free moderating experience
  • Improve formatting of comment cards in the Admin
  • UX improvements so that commenters can't reply to comments that have been removed in the time they're writing their comment by alerting them that this is the case

Migration Support

  • Improve migrations to support larger scale migrations

  • Add new flags to the migrations cli:

    $ ./bin/cli migration run --help
    
      Usage: run [options]
    
      runs all pending migrations
    
      Options:
    
        -q, --query-batch-size <n>   change the size of queried 
          documents that are batched at a time (default: 100)
        -u, --update-batch-size <n>  change the size of documents
          that are batched before the update is sent (default: 1000)
        -y, --yes                    will answer yes to all questions
        -h, --help                   output usage information
    

Dev Support

  • Plugins are now relative to the installation directory rather than the current working directory, improving the plugin experience
  • Add an index to the actions collection based on the action_id
  • Error Handling Improvements including
    -withQuery and withMutation now produces an HOC that supports a parameter notifyOnError: boolean which defaults to true. If notifyOnError is true, a notification is shown to the user when the mutation or query has failed.
  • Replace previous moderation array with a more modular approach and replaces pre-git with pre-commit to simplify the development workflow
  • Improve Webpack performance (ref: #1297)
  • Add Dynamic Public path support (ref: #1331)

CLI Support

  • cli users: Improve users delete CLI support
    • Remove old code related to db verifications from user deletion
    • Introduce migration concepts to resolve updating counts
  • cli assets: In situations where URL's need to change, or there is a duplicate comment stream, the best recommendation is to use a combination of CLI tools to rectify the situation (ref: #1290):
    • You can use the ./bin/cli assets list to find assets in the system

    • You can use the ./bin/cli assets merge <srcID> <dstID> to merge two assets by their ID's, moving all comments into the sources ID

    • You can now use ./bin/cli assets rewrite <searchPattern> <replacementPattern> that will use a regex search + replace of urls. This can be extremely useful if you are switching to a new domain, or changing your site from http/https to https-only.

    • The best method to mitigate all of these is to provide a asset specific ID into the embed using the:

      Talk.render(el, {
        // ...
        asset_id: "<myAssetID>",
        // ...
      });
    • You can also use our [Custom Asset ID Plugin](https://github.com/coralproject/talk-plugin-custom-asset-id plugin)

      // Example usage.
      const withBanUser = withMutation(...);
      
      const enhance = compose(
        withBanUser({notifyOnError: false})
      );
      
      export default enhance(MyComponent);

Fixes

  • Fix live updates and counts of Reported Usernames
  • Fix Activity Dot for alerting moderators when there is new Reported Username activity
  • Fix inconsistent mod queue counts and pagination in some edge cases
  • Fix regression with the HTML entities encoding for the auth details when being serialized for HTML/JSON
  • When a plugin fails to install, the process now correctly shuts down with a non-zero exit code
  • Fixes for Reporting flow
  • Fixes for Reporting Username > Changing Username flow
  • Fix copy for Configure tab on stream
  • Fix Accept and Reject buttons not showing in User History Drawer in IE

Translations

  • Thank you to nu.nl for contributing a Dutch translation!

v4.0.0

17 Jan 22:04
08b1cad
Compare
Choose a tag to compare
v4.0.0 Pre-release
Pre-release

IMPORTANT!

Upgrading to 4.0.0 from any previous release requires a database migration and changes to your site's embed code. You will need to follow the instructions here to upgrade. We advise you to test this release thoroughly before deploying to a production environment.

If you have any questions or need assistance, reach out to our team by logging a support ticket.

Features & Enhancements

  • Major refactor of user roles, statuses and attributes to allow for better user management, including banning/unbanning flows, suspending/unsuspending flows, managing flagged usernames/changing of usernames, and managing of roles and role permissions (commenter, staff, moderator, and administrators) (ref: #1154) 💫
  • Improved User Search in the Community page by supporting it via GraphQL (ref: #1244) 🕵️‍

New Plugins

Plugin Support

  • Add doNotStore param for our Toxic Comments plugin
  • Add plugin context to plugin functions to allow access to properties like the current Talk version

Dev Support

  • Refactor of flags/locales so flags are properly translated and managed (ref: #1045)
  • CSS improvements & i18n fixes so emails are properly translated and you can override CSS on the admin pages (ref: #1237)
  • Introduced flag and action caching on a per user basis to save on some of those database queries
  • Add Safari support to Browserstack for cross-browser testing
  • Optimize bundle size by leveraging lodash es6 modules
  • Rewrote package scripts, please visit our technical documentation for updates

Translations

  • Thank you to our amazing community for providing new translations!
    • Traditional Chinese (zh_TW)
    • Simplified Chinese (zh_CN)

Fixes

  • Mark single dangling comments
  • Reflow when switching from single mode to multi mode
  • Scroll to selected comment when switching from single mode to multi mode and vice versa
  • Banning, Suspending, and Rejecting a username updates live on the comment stream for the commenter
  • Styling and copy fixes
  • Firefox specific UI fixes

v3.9.1

20 Dec 23:22
e2cb3fd
Compare
Choose a tag to compare

Fixes & Dev Support

  • Deprecate body-parser in favor of express.json()

  • Previously, we parsed the expiry date using the ms package, yet the services consuming this value assumed seconds; we've adjusted those services to ensure that while the input is parsed from ms, we convert to seconds before using

  • Add support for plugin hooks on the websocket connections to support a plugin like the following:

    const ms = require('ms');
    const clients = new Map();
    
    module.exports = {
      websockets: {
        onConnect: async (params, websocket) => {
          clients.set(websocket, {subscribed: Date.now()});
          console.log(`${clients.size} clients - new client connected`);
        },
        onDisconnect: async (websocket) => {
          if (clients.has(websocket)) {
            const client = clients.get(websocket);
            clients.delete(websocket);
            console.log(`${clients.size} clients - client disconnected after ${ms(Date.now() - client.subscribed)}`);
          }
        },
      },
    };

v3.9.0

19 Dec 20:58
519464c
Compare
Choose a tag to compare

Features

  • Change "Link" copy to "Share" for permalinks
  • Add a confirmation dialogue for Feature in the admin to avoid accidental featuring of comments

Mod Queue Performance Improvements

  • Integrate react-virtualized
  • Infinite scrolling: When approaching end of the queue, new comments are automatically loaded
  • Limit notifications to comments that are close to current scroll position
  • Comments now are never inserted in the middle of the queue, instead these are always appended to the end of the list
  • Introduce dangling comments: Instead of removing a comment mid-queue the comments are marked as dangling and they change their background color to indicate that the status of the comment has been modified by another moderator
  • Automatic queue cleanup: When switching queues dangling comments are removed and large queues are reduced to 100 comments.
  • Better shortcut experience
    • Comments are marked as selected when clicked on (shortcut navigation starts from there)
    • When tabbing, focus reaches a comment it's selected

i18n Dev Support

  • Support new server side plugin for translations:

    When a plugin provides a translations hook, they provide an absolute filename path to the translation yaml file that should be included, example: translations: path.join(__dirname, 'client/translations.yml').

  • Support new TALK_EMAIL_SUBJECT_PREFIX config that allows configuration of the email prefix (Defaults to [Talk])

  • Support sending emails in the default language selected with the TALK_DEFAULT_LANG config

Schema & Connector Plugin Support

  • Add support for plugging into schema level resolve
  • Add support for plugging into graph connectors

End-to-end Testing Support

  • Correct wrong spec in 04_userStatus.js
  • Fix issues with switching window handlers in firefox and edge
  • Configurable timeout for WaitForConditions
    • --timeout parameter in yarn e2e
    • yarn e2e-ci now accepts a E2E_WAIT_FOR_TIMEOUT env
    • Default to 10s
  • yarn e2e-ci now accepts E2E_BROWSERS env with a list of browsers
    • Defaults to chrome,firefox,edge
  • yarn e2e-ci now accepts E2E_DISABLE env
    • If set to true ci will skip e2e

Fixes

  • Fix error when signing in through the Profile tab
  • Fix comments by admins not appearing in stream when Pre-Mod is turned on (as they are auto-approved)
  • Fix load more comments error on User Detail
  • Fix Dialog Component not rendering correctly in browsers without native dialog support

v3.8.3

18 Dec 21:08
a8368eb
Compare
Choose a tag to compare

Fixes & Optimizations

  • Redis Optimization Pass
    • Remove call for commentCount when we already have totalCommentCount
    • Remove job processor cleaner on non-processing nodes
    • Fix some template issues
  • Fix bug with "Load More" not working in User History view