Skip to content

Latest commit

 

History

History
492 lines (369 loc) · 19.7 KB

CHANGELOG.md

File metadata and controls

492 lines (369 loc) · 19.7 KB

Changelog

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

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Fixed

  • Fix issue where end-of-track is incorrectly signalled when paused #100.
  • Unable to parse Spotify URIs with context parameter #98.

Changed

  • Only log URL/URI parsing on tracing #87.

Fixed

  • Fixed bug with reading update-interval, preventing song files from being used (#72).

Changed

  • Changed more internals to use async locking.
  • Rewrote internal player to use much cleaner abstractions (#67).

Changed

  • Updated version of irc crate we use to no longer build from master.

Changed

  • Project now properly builds on Stable Rust.
  • Switch away from failure to [anywhow] and thiserror for error handling.
  • Commands are now run on separate tasks, leading to better performance and unlocking the ability to write them in a different language in the future.
  • Git version now runs properly. It used to report a User-Agent which caused header parsing to crash since it included a newline (e2745e).
  • Bumped the version of a lot of dependencies.
  • Fixed a bug that causes the bot to crash when it's being restarted and improperly using backoff (c0178f).

Added

Changed

  • Fixed issue where tray icon doesn't work for some Windows versions.

Changed

  • Renamed all irc/ settings to chat/ settings.
  • Authentication must now happen through a remote service, like https://setbac.tv
  • Moved to tokio and associated ecosystem's async/await alpha's.

Added

  • Support for complex object fields in settings configuration.
  • Support for matching a command pattern !command pattern <name> [pattern].
  • Support capture groups in pattern. Like I like (.+) will allow you to use the variable {{1}} for the group.
  • Added !help command to send you to https://setbac.tv/help

Added

  • Show display name when responding to users.
  • Experimental support for viewing chat.
    • Support for only showing first message per user.
  • bypass-cooldowns scope to bypass command and scope cooldowns.
  • Support for ChaosMod 1.3.0.

Changed

  • Switch to moment-timezone for list of timezones in UI.

Changed

  • Make location optional in Settings component (causes blank page).

Changed

  • UI doesn't break on bad semver latest releases.

Changed

  • Don't crash if a user removes a the Twitch connection.
  • Deprecate use of configuration file fully.

Added

  • Added !poll command to run polls.
  • Added !weather command to check the current weather.
  • Notification after stream has ended if you have afterstream messages.

Changed

  • utils::compact_duration now includes days when formatting.
  • Don't use flatMap in since it's not supported in OBS's Browser Source.

Added

  • time/timezone for setting your current time zone.
  • !time command for showing the current time of the streamer (in the specified time zone) #45.
  • system/run-on-startup setting that can configure SetMod to run on system startup.

Added

  • !speedrun game <game> as a preferred alias for !speedrun record.
  • !speedrun personal-bests <user> as a way to query personal bests for a single user.
  • Commands can now use the {{rest}} parameter to expand to anything that comes after the command itself.
  • Introduced the irc/viewer-reward/interval setting to tweak how frequently viewer rewards are posted.

Changed

  • Move most authorization checks to their own scopes (See auth.yaml for details) #48.
    • song/theme
    • song/edit-queue
    • song/list-limit
    • song/volume
    • song/playback-control
    • command/edit
    • theme/edit
    • promo/edit
    • alias/edit
    • countdown
    • gtav/raw
    • water/undo
  • Support temporary grants through !auth permit 5m <user> <scope>. You can only grants scopes that you have #47.
    • For example, to permit posting any links: !auth permit 30s setbactesting chat/bypass-url-whitelist
  • Fix issue where player feedback shuts down first time it's disabled.

Added

  • Notifications for system integration.
  • Added --log-config and --trace switches to give more control over logging.

Changed

  • Fixed player sync on startup not setting state correctly.
  • Fixed issue where Spotify can't be controlled unless it is started before the bot.

Changed

  • Installer can now successfully stop SetMod during upgrades.
  • Fixed issue where non-mods cannot request songs without stream currency enabled even though song/*/min-currency was set to 0.
  • song/*/max-duration is not optional and unset by default, and can be deleted.

Added

  • Added update notification in web UI.

Changed

  • Fixed issue when picking device and simplified how device ID is stored.
  • Fixed issue where delete dialog does not disappear.

Added

  • Added a button to open the setmod log file in systray.
  • Added a button to restart the bot from systray.

Changed

  • Fixed bug with syncing remote player state.
  • Fixed bug with syncing player queue to setbac.tv.
  • Reverted fix for Twitch API, since they fixed it themselves :|.
  • Fixed broken link to player on setbac.tv.

[0.3.0]

Changed

  • Changed where SetMod configuration is expected to be. See Migrating from 0.2 to 0.3 in the README.

Added

  • Added an installer for SetMod which is recommended to use on Windows.

Changed

  • Reduce the number of calls for !speedrun command.
  • Commands can now be quoted to support spaces in arguments.
    • Example: !speedrun game sm64 --category "120 Star"

Changed

  • Fixed bug where new tokens weren't stored locally properly.

Changed

  • Themes are now stored in the database, accessible through the !theme command and the web UI.
  • [player] has been deprecated in favor of player settings.
  • [current_song] has been deprecated in favor of player/song-file settings.
  • [[modules]] configuration has been deprecated in favor of their corresponding setting.
  • Fully deprecated the need for a configuration file. If you want to migrate existing settings, run the bot once with the configuration file, then it can safely be deleted.
  • Add more commands to !gtav and add command-specific overrides through gtav/command-config.

Added

  • Added the ability to scale the maximum volume of a player by a percentage using the following settings:
    • player/spotify/volume-scale
    • player/youtube/volume-scale
  • Pinging and reconnect if connection to Twitch is lost.
  • Tokens can now be removed, and refreshed on the home screen without restarting the bot.
  • Authentication system with different scopes to control permissions. See auth.yaml for more details.
    • This includes the groups: @streamer, @moderator, @subscriber, and @everyone.
  • A UI page to handle Authorization.
  • Load fallback songs from player/fallback-uri.
  • !speedrun command to get records from speedrun.com.

Changed

  • !song request no longer allows one extra request to enter the queue. (#33)
  • Avoid playing the same songs over and over (#35).
  • Fix off-by-one check in currency transfer (!currency give <user> <amount>).
  • Only non-moderator and non-streamer chat bumps the idle counter.
  • URL whitelist is now stored in a setting irc/whitelisted-hosts (#37).
  • Massively improved settings and schema management.
  • Settings are now parsed from chat, meaning they are validated and doesn't have to be JSON.
  • !song request can now search for YouTube videos through !song request youtube:<query>.

Added

  • !admin version to check current setmod-bot package version. (#32)
  • Setting for controlling player feedback in chat (player/chat-feedback).
  • Setting for controlling overlay update interval (player/song-update-interval).
  • !admin settings for reading and writing settings through chat.
  • Introduced the setting player/detached to detach the player. (#27)
  • Confirmation response when performing !song open and !song close. (#36)
  • !admin push <key> <value> to insert values into settings which are collections.
  • !admin delete <key> <value> to delete values from settings which are collections.
  • Group management and the ability to enable and disable commands (!command), aliases (!alias) and promotions (!promo).
    • !<thing> enable <name> - Enable the given command.
    • !<thing> disable <name> - Disable the given command.
    • !<thing> group <name> - Get the current group.
    • !<thing> group <name> <group> - Set the current group.
    • !<thing> clear-group <name> - Remove from all groups.
    • !admin enable-group <group> - Enable all commands, promotions, and aliases belonging to the specified group.
    • !admin disable-group <group> - Disable all commands, promotions, and aliases belonging to the specified group.
  • Experimental support for requesting YouTube songs and associated settings.
  • player/duplicate-duration to enforce a minimum duration between requesting duplicates songs.
  • Added song/*/min-currency, for a minimum currency limit to request songs.
  • Added song/*/subscriber-only and song/subscriber-only to limit song requests to subscribers only.

Changed

  • !song promote now moves the promoted song to the front of the queue instead of swapping positions with the first song in the queue. (#30)

Added

Changed

Added

  • !promo now uses hangout detection determined by the irc/idle-detection/threshold setting.
  • !afterstream command without argument now prints a help message (#26).
  • Added gtav module to interface with ChaosMod. See gtav configuration.
  • Theme songs now can have an end parameter, indicating when it should end.
  • Song requests can be rewarded using the song/request-reward setting.
  • Water reward can be scaled using water/reward%.
  • Viewer reward can be scaled using irc/viewer-reward%.

Changed

  • Fixed bug where Settings frontend would make the value into a string before sending it to backend.

Added

  • Web-based overlay with current song (#22).
  • Player will no longer pause the current song (if it's playing) and will instead synchronize the state of the player with Spotify (#18).
  • Implement !command rename <from> <to>
  • Ability to sync remote state of player with [player] sync_player_interval = "10s" (#18).
  • Much more helpful guidance when using !song incorrectly.
  • Store aliases in the database instead of the configuration. See the alias configuration for more details (#24).
  • Start storing some settings in the database (#19).
    • Bot keeps track of first time it's being started to perform first-time configuration.
  • Promotions through the promotions module. See the promotions configuration for more details (#25).

Changed

  • Cleaned up old cruft in the codebase (gfx module).
  • Moved log configuration to external file (see example log4rs.yaml).
  • No longer raise an error on bad input.
  • UI is now built in React (#23).
    • This adds the -WebRoot option to tools/setmod.ps1 to override where to load files from for development purposes.
  • .oauth2 state is now stored in the database under settings.

Removed

  • Removed !counter in favor of !command with same functionality. Using the {{count}} variable in the template will cause the count to be incremented.
  • [[aliases]] section from configuration. Aliases are now stored in the database. The first time you run the bot it will migrate all the aliases into the database.

Added

  • !water command that can be enabled using as a module through [[modules]] see README.md.
  • Attempt to automatically refresh expired tokens on startup (#21).

Changed

  • Move all locks to parking_lot
  • Improved logic to notify on device configuration.

Added

  • Player now plays music through Spotify's blessed Connect API (#17).
  • !swearjar command that can be enabled using as a module through [[modules]] see README.md.
  • !countdown command that can be enabled using as a module through [[modules]] see README.md.

Changed

  • Remove dependency on bundled .dll files.
  • Deprecated the use of the native player in favor of connect since it's a potential TOS violation (#17).
  • Improved administration UI:
    • Support for selecting Audio Device (does not persist across reboots) (#20).
    • Informing you more clearly when you need to authenticate.
    • Provide hint on how to configure persistent device.

Added

  • !song promote <number> to promote songs to the top of the queue (#2).
  • Optional web page (hosted on setbac.tv) to display current queue (#3) (config: api_url).
  • Support suppressing echoing of current song (config: [player] echo_current_song = false).
  • Show queue position in player view (#8).
  • Support deleting a song at the given position (#7).
  • Moderator action cooldowns (#6).
  • Moderators are automatically picked up through /mods command on IRC (#5).
  • Support for !clip command (#13)
  • Support for !8ball command (#14)
  • !afterstream command now has a cooldown configured through [irc] afterstream_cooldown.
  • !song when to see when your requested song will be playing.
  • Added {{elapsed}} as a variable for current_song.
  • [current_song] update_interval = "5s" to specify how frequently the current song information will be updated. This might be necessary in case {{elapsed}} is used as a variable and you want it to update live.
  • [irc] startup_message = "HeyGuys" to send a message when the bot starts.

Changed

  • Changed configuration format to be TOML and flatten it (see example configuration).
  • Removed HTML escapes from current_song (#4).
  • Fixed !song purge not sending update to setbac.tv (#9).
  • Streamer is immune to cooldown and is always moderator (#10).
  • Changed configuration format to flatten it more (#11).
  • Reduced the number of scopes requested for tokens to a minimum.