Skip to content

Latest commit

 

History

History
108 lines (92 loc) · 4.01 KB

CHANGELOG.md

File metadata and controls

108 lines (92 loc) · 4.01 KB

Changelog

All notable changes to this project will be documented in this file.

[unreleased]

🚀 Features

  • Switch over to poise/serenity for Discord.

    Replace twilight with poise/serenity for the Discord connection, which should fix the constant disconnects happening recently.

    This moves over to use Slash Commands on Discord which makes it easier to discover available commands, and avoids typos when executing them (or trying to).

  • Switch over to twitch_api for Twitch.

    Move from the twitch-irc crate to twitch_api, as Twitch recommends using Helix (HTTP API) and EventSub (WebSocket API) over the classic IRC approach.

    This allows to track the stream live status which is the main reason for the move, as this is needed for an upcoming feature.

  • Remove archer again.
  • Remove broken docsearch.
  • Log message on start/stop of a stream.
  • Use SQLite for state storage.
  • Use SQLite for stats storage.

🐛 Bug Fixes

  • Use explicit indexmap removal methods.
  • Don't unwrap when message detection fails.

    An oversight. If the message detection reports an error or nothing was detected, then simply ignore the message instead of unwrapping and crashing the server.

  • Restore root processing chain functionality.

    During the bigger refactor the processing chain was broken in a way that owners can only use owner commands, admins only admin commands and regulars only user commands.

    Fix the behavior to be like before, letting owners access all commands, admins the admin and user commands, and users only user commands (no change here).

  • Name query COUNT(*) column.

    For serde_rusqlite to properly match the column to structs, it must be explicitly named, which is not the case for aggregation functions like COUNT(*).

  • Update existing cmd on conflict.

    When adding a new command, and the command in fact already exists, thus, it's an update, replace the content of the command instead of failing.

  • Reconnect on websocket close.
  • Only create missing subscriptions.

    Trying to create a new event subscription with the same type fails if one already exists (seems to be the case with reconnects). Thus, only create the subs that are missing.

  • Don't split custom cmd content again.

    A refactoring leftover that split the content again (due to the same naming of a variable for the whole message payload, before the refactor).

    This is not needed anymore, and even truncated the content of the content, resulting in unexpected command contents.

🚜 Refactor

  • Redesign handler API.

    Move the handler definitions to a separate module and make the text parsing a separate module. All handler logic operates on defined structs instead now.

  • Use generic version of NonZero.

    Since Rust 1.79 the NonZeroU64 is merely a type alias of the new generic variant NonZero<u64>, so let's switch to it.

  • Clean up derives.

📚 Documentation

  • Generate changelog with git-cliff.

    Use git-cliff to generate some nice looking changelog (as long as the commit messages are somewhat meaningful).

🧪 Testing

  • Avoid real network requests.

    Avoid the network call to https://crates.io in the one and only test that runs it. This avoids failures to random network issues and makes the test run faster.

⚙️ Miscellaneous Tasks

  • (ci) Switch back to official cargo-deny action.
  • Fix the README.md build badge.
  • Fix new clippy lints.
  • Switch to thin LTO.
  • Bump Dockerfile Rust image version.
  • Remove unneeded env var from Dockerfile.
  • Update cargo-deny configuration.
  • (docker) Use consistent keyword casing.
  • (ci) Bump deny GH action to v2.
  • (ci) Update Docker-related GH actions.
  • Remove tracing event for twitch messages.
  • Clean up cargo-deny config.
  • Add justfile for common tasks.
  • Move state module out of folder.
  • Update changelog.