CHANGELOG.md in stealth-1.1.6 vs CHANGELOG.md in stealth-2.0.0.beta1

- old
+ new

@@ -1,4 +1,76 @@ +# Changelog for Stealth v2.0.0 + +## Enhancements + +* [Controllers] Added support for Dev Jumping. This feature allows developers to jump around flows and states for bot's in development. +* [NLP] Added base classes for `Stealth::Nlp::Result` and `Stealth::Nlp::Client` to be used by NLP drivers. +* [Controllers] Scheduled replies no longer call `controller.route` when they run. Instead we `step_to` to the flow and state directly. This ensures the `route` is reserved for incoming messages. +* [Catch All] Backtrace logging has been improved. The error message is now included first in the backtrace. +* [Logger] The thread's ID (TID) is now included in every logging entry preceding the log type, ie "[facebook]" +* [Interrupt] Interrupt detection has been added. See the docs for more info on this feature. +* [Controllers] When user's flow is set to `catch_all` or `interrupt`, Stealth will ignore incoming messages. If you have interactive states in either of these controllers, you will need to move those interactions to a different controller. +* [Sessions] Sessions can now be cleared by calling `session.clear_session`. Clearing a session removes the key from Redis. +* [Logging] `primary_session`, `previous_session`, and `back_to_session` now explicitly logged +* [Sessions] The session is no longer set on update or stepping witht destination flow and state match the existing session. +* [Scheduled Replies] The `service_message.target_id` is now set for scheduled replies. NOTE: scheduled replies that are already enqueued will NOT have this set. +* [Server] Updated to Puma 4.3 +* [Server] Updated to Sinatra 2.1 +* [Sessions] Added `to_s` for sessions to pretty print the slug. Useful when debugging. +* `send_reples` now supports two additional options for replies: + `send_replies(custom_reply: 'hello/say_hello')` + `send_replies(inline: [])` +* Dynamic delays for SMS platforms do not delay at the beginning of a reply. +* Added support for Bandwidth SMS +* The `ServiceMessage` (current_message) now contains a `target_id`. This can be set by the platform driver to provide more information about the intended target of a message. +* [Controller] Added a `do_nothing` method that prevents `catch_all` from firing when a controller action doesn't send replies nor progresses the session. +* [Replies] If `text` and `speech` replies are specified as an Array, Stealth will now randomize the selected text. +* [Generators] Added sample payload handling to generated bots since it can be tricky. +* [Generators] Added `inflections.rb` to generators since we rely on `ActiveSupport::Inflector` to derive flow and controller names. +* [Sessions] previous_session log entries now appear below current_session entries. +* [Logging] Add option, `Stealth.config.transcript_logging`, to log incoming and outgoing messages. +* [Server] The only HTTP header passed along to `handle_message_job` is now `HTTP_HOST`. +* [Controllers] Added `set_back_to` and `step_back` to allow user specified "redirect back". Useful for multi-state transitions that would otherwise not be possible with just `previous_session`. +* [Configuration] Stealth::Configuration now returns `nil` for a configuration option that is missing. It still returns a `NoMethodError` if attempting to access a key from a parent node that is also missing. +* [Reloading] Bots in development mode now hot reload! It's no longer necessary to stop your local server. +* [Production] Production bots now eager load bot code to improve copy-on-write performance. The `puma.rb` config has been updated with instructions for multiple workers. +* [Flows] You can now specify custom options when defining states. These options can later be accessed via the flow specification. +* [CoreExt] Added a `String#without_punctuation` method. Removes a lot of common punctuation. +* [CoreExt] `String#normalize` no longer removes quotation marks. +* [Controllers] Alpha ordinal checks are now done against a "normalized" string without punctuation. See above. +* [Controllers] `normalized_msg` and `homophone_translated_msg` are now memoized for performance. +* [Errors] `Stealth::Errors::MessageNotRecognized` has been renamed to `Stealth::Errors::UnrecognizedMessage` +* [Controllers] When `handle_message` or `get_match` raise a `Stealth::Errors::UnrecognizedMessage`, the user is first routed to a new `UnrecognizedMessagesController` to perform NLP. If that controller fails to match, the `catch_all` is run as normal. +* [Errors] Client errors now call respective BotController actions: `handle_opt_out` and `handle_invalid_session_id`. Each client is responsible for raising `Stealth::Errors::UserOptOut` or `Stealth::Errors::InvalidSessionId` errors. +* [Controllers] `handle_message` and `get_match` now detect homophones for alpha ordinals (A-Z) +* [Controllers] `handle_message` and `get_match` now ignore single and double quotes for alpha-ordinals +* [CoreExt] Strings now have a `normalize` method for removing padding and quotes +* [Controllers] Improved logging when `UnrecognizedMessagesController` runs. +* [Controllers] State transitions (via `step_to`, `update_session_to`, `step_to_at`, `step_to_in`, and `set_back_to`) now accept a session `slug` argument. +* [Replies] Added support for sub-state replies. `step_to` can now take a `pos` argument that will force any resulting `send_replies` to be sent starting at the `pos` specified. `pos` can also be negative, for example, `-1` will force `send_replies` to send replies starting at (only) the last reply. +* [Replies] Dynamic delays are automatically sent before each reply. This can be disabled by setting `Stealth.config.auto_insert_delays` to `false`. If a delay is already included, the auto-delay is skipped. +* [Controllers] `handle_message` now supports `Regexp` keys. + +## Bug Fixes + +* [Catch All] Errors triggered within CatchAlls no longer trigger a CatchAll. They are simply ignored. This prevents infinite looping scenarios. +* [Interrupt] If CatchAll runs and doesn't `step_to`, it releases the session lock. +* [Controller] Messages are no longer ignored in CatchAll and Interrupt controllers +* [Interrupts] After `send_replies`, we now release the session lock. This ensures replies that send buttons can properly receive responses from them. +* Callbacks specified in child controllers of `BotController` where not being called during `step_to`. While the fix was small, we've bumped the minor release to ensure this fix does not break existing codebases. +* Fixed another bug loading replies from a `custom_reply` path in `send_replies` +* Fixed bug loading replies from a `custom_reply` path in `send_replies` +* Leading dynamic delays in a reply are not sent again on SMS platforms. +* [Sessions] Sessions retrieved when session expiration was enabled would return as an Array rather than a slug. +* [Sessions] previous_session now respects session_ttl values. +* [Catch All] Log output from all catch_all logging now includes the session_id so they can be included in log searches. +* [NLP] Strip out values from single element arrays in the case of custom LUIS List entities. + +## Deprecations + +* [Controllers] current_user_id has now been completely removed since becoming deprecated in 1.1.0. +* [Ruby] MRI 2.4 is no longer supported as we depend on ActiveSupport 6.0 now. Rails 6.0 only supports Ruby MRI 2.5+. + # Changelog for Stealth v1.1.5 ## Enhancements * [Replies] Replies will now always send the `sender_id` that came in to the service drivers. This ensures `current_session_id` hasn't been modified which would cause replies to fail to send.