All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project DOES NOT adhere to Semantic Versioning.
2.15.1 - 2024-11-18
- Use the
LOG_LEVEL
environment variable to set the logging level.
- Update the following dependencies:
- Bump aws.smithy.kotlin:http-client-engine-crt-jvm from 1.3.12 to 1.3.23
- Bump io.opentelemetry:opentelemetry-bom from 1.40.0 to 1.44.1
- Bump jda-ktx from 0.11.0-beta.19 to 0.12.0
- Bump jda.version from 5.2.0 to 5.2.1
- Bump kotlin.version from 2.0.20 to 2.0.21
- Bump nrepl:nrepl from 1.2.0 to 1.3.0
- Bump org.postgresql:postgresql from 42.7.3 to 42.7.4
2.15.0 - 2024-11-04
- Database index for Recordings table that includes both ID and Guild ID
- Recording duration is also detected using JAudioTagger by reading the header
PawaConfig
now includesdataDirectory
/save-destination
slash command- Will remove this in favour of a general
/config <subcommand>
style of slash commands
- Will remove this in favour of a general
- Recording Reply embed contains times in Guild's locale so that people can see it in their local time
/recover
command gives reason for recovery failure- Update the following dependencies:
- Bump aws.sdk.kotlin:s3-jvm from 1.2.38 to 1.3.66
- Bump aws.smithy.kotlin:http-client-engine-crt-jvm from 1.2.11 to 1.3.12
- Bump com.fasterxml.jackson.core:jackson-databind from 2.17.1 to 2.18.0
- Bump exposed.version from 0.52.0 to 0.56.0
- Bump io.github.oshai:kotlin-logging-jvm from 6.0.9 to 7.0.0
- Bump io.opentelemetry:opentelemetry-bom from 1.39.0 to 1.40.0
- Bump jda.version from 5.0.0-beta.22 to 5.2.0
- Bump koin.version from 3.5.6 to 4.0.0
- Bump kotlin.version from 2.0.0 to 2.0.20
- Bump log4j.version from 2.23.1 to 2.24.1
- Bump org.apache.maven.plugins:maven-surefire-plugin from 3.2.5 to 3.3.1
- Bump org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm from 1.8.1 to 1.9.0
- Bump org.testcontainers:postgresql from 1.19.8 to 1.20.1
- Bump org.testcontainers:testcontainers from 1.19.8 to 1.20.3
- Bump otel.version from 2.5.0 to 2.8.0
Aliases.kt
dead code.
- Code that uses
JAudioTagger
is wrapped with exception handling
2.14.0 - 2024-07-01
- Show recording expiration date on the Recording reply
- Show a list of speakers in the Recording reply
aws.smithy.kotlin:http-client-engine-crt-jvm
dependencynet.jthink:jaudiotagger
dependency- Add ID3 tag to MP3 with the speakers in the comment section
- Show
autosave
status on/info
- Upgrade build, Dockerfile, and CI to Java 21 LTS
- Update the following dependencies:
- Bump aws.sdk.kotlin:s3-jvm from 1.1.18 to 1.2.38
- Bump aws.smithy.kotlin:http-client-engine-crt-jvm from 1.2.6 to 1.2.9
- Bump com.fasterxml.jackson.core:jackson-databind from 2.17.0 to 2.17.1
- Bump exposed.version from 0.49.0 to 0.52.0
- Bump io.opentelemetry:opentelemetry-bom from 1.37.0 to 1.39.0
- Bump kotest.version from 5.8.1 to 5.9.1
- Bump kotlin.version from 1.9.23 to 2.0.0
- Bump nrepl:nrepl from 1.1.1 to 1.2.0
- Bump org.apache.maven.plugins:maven-compiler-plugin from 3.12.1 to 3.13.0
- Bump org.apache.maven.plugins:maven-shade-plugin from 3.5.2 to 3.6.0
- Bump org.testcontainers:postgresql from 1.19.7 to 1.19.8
- Bump org.testcontainers:testcontainers from 1.19.7 to 1.19.8
- Bump otel.version from 2.3.0 to 2.5.0
- Minor internal change rename
pawa-lite
topawalite
- Disable OTEL instrumentation and integration with SigNoz
- Might add this back in the future but in a more lightweight way
2.13.0 - 2024-04-14
- Show accurate duration of Recording
- Only storing this in the memory data model will need to create migration to store in Database
- Add OTEL instrumentation
- Trying out SigNoz Cloud, currently sending app and db metrics as well as logs
<prefix>test
command to simulate@pawa
performing certain actions like joining a VC then saving.
recover
responds with ephemeral replies only visible to caller- Update the following dependencies:
- Bump aws.sdk.kotlin:s3-jvm from 1.0.48 to 1.1.13
- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.0 to 2.17.0
- Bump commons-io:commons-io from 2.15.1 to 2.16.0
- Bump exposed.version from 0.45.0 to 0.47.0
- Bump io.github.oshai:kotlin-logging-jvm from 5.1.0 to 6.0.9
- Bump io.opentelemetry:opentelemetry-bom from 1.34.0 to 1.37.0
- Bump jda.version 5.0.0-beta.20 to 5.0.0-beta.22
- Bump kotest.version from 5.8.0 to 5.8.1
- Bump kotlin.version from 1.9.22 to 1.9.23
- Bump nrepl:nrepl from 1.1.0 to 1.1.1
- Bump org.clojure:clojure from 1.11.1 to 1.12.0-alpha9
- Bump org.flywaydb:flyway-core from 9.22.1 to 10.11.0
- Required adding org.flywaydb:flyway-database-postgesql runtime dependency
- Bump org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm 1.7.3 to 1.8.0
- Bump org.postgresql:postgresql from 42.7.1 to 42.7.2
- Bump org.testcontainers:postgresql from 1.19.4 to 1.19.7
- Bump org.testcontainers:testcontainers from 1.19.3 to 1.19.7
- Bump otel.version 2.2.0 to 2.3.0
- Remove EventTracer, was remnant from removing Honeycomb
- PawaLite:
/recover
now correctly recovers a recording from a queue file
2.12.0 - 2024-02-13
Recover Recording
message context menu to recover recording from a SessionID in a message- PawaLite:
/autorecord
slash command added
/record
displays an embed, this will replace the original message eventually/recover
run by normal user will send the SessionID and Discord username, the response will also include a server invite.- PawaLite:
/recover
command enabled - PawaLite:
/autosave
on by default - Increase recording limit from 110MB -> 256MB
- pawa will respond in Voice Channel chat if it cannot detect an origin text channel
- Update the following dependencies:
- Bump aws.sdk.kotlin:s3-jvm from 0.27.0-beta to 1.0.48
- Bump caffeine from 3.1.1 to 3.1.6
- Bump com.fasterxml.jackson.core:jackson-databind from 2.15.1 to 2.16.0
- Bump com.github.ben-manes.caffeine:caffeine from 3.1.6 to 3.1.8
- Bump com.github.minndevelopment:jda-ktx from 0.10.0-beta.1 to 0.11.0-beta.19
- Bump commons-io:commons-io from 2.11.0 to 2.15.1
- Bump exposed.version from 0.39.2 to 0.45.0
- Bump flyway-core from 9.14.1 to 9.16.3
- Bump io.insert-koin:koin-core from 3.4.0 to 3.5.0
- Bump jackson-databind from 2.14.2 to 2.15.1
- Bump jda.version 5.0.0-beta.9 to 5.0.0-beta.20
- Bump koin-core from 3.2.0 to 3.4.0
- Bump koin-core-jvm from 3.2.0 to 3.4.0
- Bump koin.version from 3.5.0 to 3.5.3
- Bump kotlin.version from 1.8.10 to 5.8.0
- Bump log4j-core from 2.18.0 to 2.20.0
- Bump log4j-layout-template-json from 2.18.0 to 2.20.0
- Bump log4j.version from 2.20.0 to 2.22.1
- Bump maven-assembly-plugin from 3.4.2 to 3.11.0
- Bump maven-resources-plugin from 3.3.0 to 3.3.1
- Bump maven-surefire-plugin from 3.0.0 to 3.1.0
- Bump microutils:kotlin-logging-jvm from 3.0.5 to 5.1.0
- Bump nrepl:nrepl from 1.0.0 to 1.1.0
- Bump org.apache.maven.plugins:maven-compiler-plugin
- Bump org.apache.maven.plugins:maven-shade-plugin from 3.4.1 to 3.5.1
- Bump org.apache.maven.plugins:maven-surefire-plugin from 3.1.0 to 3.2.5
- Bump org.flywaydb:flyway-core from 9.16.3 to 9.22.1
- Bump org.postgresql:postgresql from 42.6.0 to 42.7.1
- Bump org.testcontainers:postgresql from 1.18.0 to 1.19.4
- Bump org.testcontainers:testcontainers from 1.18.3 to 1.19.3
- Bump postgresql from 1.17.6 to 42.6.0
- Bump slf4j-api from 2.0.0-alpha2 to 2.0.9
- Bump testcontainers from 1.17.6 to 1.18.3
- Bump ulidj from 1.0.1 to 1.0.4
RemoteDatastore
class in exchange for a generic S3 API compatibleS3Datastore
minio
pom dependencyminio
from docker-compose.yml- Honeycomb metrics and the
Honey
tracing class- Remove
honeycomb-opentelemetry-sdk
- Remove
- Errors when sending slash commands from the Voice Channel chat
/autorecord
correctly follows member when switching between Voice Channels
- Bump com.h2database:h2 from 2.1.214 to 2.2.224
- Added
Upgrader.kt
to automatically upgrade H2 DB for PawaLite users
- Added
2.11.1 - 2023-03-01
- Added
/recover
command- This command can help us restore recordings that failed to upload with a Session ID.
- Database migration tests
- Not a feature, but will let us make changes to the database more often.
- Add testcontainers dependencies, this makes it straightforward to run database tests
- Update JDA 4 -> JDA 5 Beta 5
- This was massive change, and will be testing it before updating PawaLite
- Update jda-ktx
- Update the following dependencies:
- Bump flyway-core 9.3.0 -> 9.14.1
- Bump jda.ktx -> 0.10.0.beta.1
- Bump jda.version 4.4.0_352 -> 5.0.0.beta.5
- Bump kotest.version 5.4.2 -> 5.5.4
- Bump kotlin.version 1.7.10 -> 1.8.10
- Bump maven-surefire-plugin 2.22.2 -> 3.0.0-M8
clip
command is now gone from the codebase- This command was supposed to extract a short section from the current recording, but I could never get the implementation quite right, so decided to remove it.
- One 2022-03-01 Discord made a change to the Voice handshake protocol which broke the audio recording feature. More details on the JDA release
2.11.0 - 2022-12-23
/volume
command that works exactly like!volume
/save
command that works exactly like!save
, except that the slash command must reply so it sends a check mark ✔️/stop
command that works exactly like!stop
/record
command that works exactly like!record
/lang
command that works exactly like!lang
/ignore
command that works exactly like!ignore
- Except that you can only ignore one user at time, must run command multiple times
/autosave
command that works exactly like!autosave
/autostop
command that works exactly like!autostop
- Except that the setting can only be changed for one channel at a time
/alias
command that works exactly like!alias
- API layer via the
Pawa
class- This should make it straightforward to add new functionality that can be tested
kotest
testing library
- PawaLite slash commands are now automatically registered upon start
- Slash commands don't seem to respect permissions, this may be an issue in the current version of JDA, will be updating to the latest version in the coming weeks
autostop
can now accept 0 as the threshold which is equivalent tooff
- #44 Recording would get lost if channel didn't have MESSAGE_ATTACH_FILES permissions, now a recording won't start if this permission is missing.
- #54 No more double AutoStop message
2.10.0 - 2022-07-08
!slash
command to manage Slash commands, this is only available to use by me and PawaLite users- Provides an invitation URL for ease of access
- Removes, Adds, and Lists all Slash commands, currently only
/info
added in 2.9.7
- Translations for Filipino 🇵🇭
- Translations for Polish 🇵🇱
- Translations for Hungarian 🇭🇺
- Update Java 11 LTS to 17 LTS
- PawaLite now supports
!status
command. - Update the following dependencies:
- Bump flyway-core from 8.3.0 to 8.5.13
- Bump h2 from 1.4.200 to 2.1.214
- Bump honeycomb-opentelemetry-sdk from 1.1.1 to 1.2.0
- Bump koin-core from 3.1.4 to 3.2.0
- Bump koin-core-jvm from 3.1.4 to 3.2.0
- Bump kotlin-logging-jvm from 2.1.21 to 2.1.23
- Bump kotlin.version from 1.6.10 to 1.7.10
- Bump libhoney-java from 1.4.0 to 1.5.0
- Bump log4j-core from 2.17.0 to 2.18.0
- Bump log4j-layout-template-json from 2.17.2 to 2.18.0
- Bump log4j-slf4j18-impl from 2.17.0 to 2.18.0
- Bump maven-assembly-plugin from 3.3.0 to 3.4.1
- Bump maven-compiler-plugin from 3.8.1 to 3.10.0
- Bump maven-shade-plugin from 3.2.4 to 3.3.0
- Bump minio from 8.3.4 to 8.4.2
- Bump postgresql from 42.3.1 to 42.4.0
- PawaLite cannot upgrade in place for versions after 2.9.8, see User Guide
- If there's an issue creating an MP3 file from a queue file, the queue file would get deleted making it impossible to recover. This is a hack, but it'll work for now...
2.9.8 - 2021-12-25
- Translations for Vietnamese 🇻🇳
- Update the following dependencies:
- Bump JDA from 4.3.0_346 to 4.4.0_352
- Bump caffeine from 3.0.4 to 3.0.5
- Bump flyway-core from 8.0.5 to 8.2.2
- Bump flyway-core from 8.2.1 to 8.3.0
- Bump jackson-databind from 2.13.0 to 2.13.1
- Bump koin-core from 3.1.3 to 3.1.4
- Bump koin-core-jvm from 3.1.3 to 3.1.4
- Bump kotlin-logging-jvm from 2.1.0 to 2.1.20
- Bump kotlin-logging-jvm from 2.1.20 to 2.1.21
- Bump kotlin.version from 1.6.0 to 1.6.10
- Bump libhoney-java from 1.3.1 to 1.4.0
- Bump log4j-slf4j18-impl from 2.14.1 to 2.16.0
- Bump log4j-slf4j18-impl from 2.16.0 to 2.17.0
- Bump maven-shade-plugin.log4j2-cachefile-transformer from 2.14.1 to 2.15
- Bump nrepl from 0.8.3 to 0.9.0
- Remove NanoHTTPD
- No longer in use
- Fix Log4Shell
- Update log4j-core 2.14.1 -> 2.17.0
2.9.7 - 2021-11-19
- Translations for:
- Italian
- German
- Portuguese
- Thai (partial)
- Slash command
/info
to display information about Guild
- REPL class implementation, matlux/jvm-breakglass -> nrepl/nrepl
- PawaLite: Omit 24 hour warning
- Update the following dependencies:
- JDA from 4.3.0_324 to 4.3.0_346
- exposed from 0.17.13 to 0.17.14
- failsafe from 2.4.3 to 2.4.4
- flyway-core from 7.15.0 to 8.0.5
- jackson-databind from 2.12.5 to 2.13.0
- jda-ktx from ea0a1b2 to 1223d5c
- koin-core from 2.2.2 to 3.1.3
- kotlin-logging-jvm from 2.0.11 to 2.1.0
- kotlin.version from 1.5.30 to 1.6.0
- postgresql from 42.2.23 to 42.3.1
- Error about logging on startup
- Any version past 2.0.0-alpha2 is broken for us
2.9.6 - 2021-06-29
- Add beta support for Stage Channels
- Add translations for:
- Indonesian
- Spanish (MX)
- French
- Change activity from "Playing" to "Listening"
- PawaLite: Some commands had issues with the H2 embedded database transactions, so had to adjust code to cache the objects and prevent re-query'ing for them after the database connection had closed.
2.9.5 - 2021-06-11
- Add new command
!lang
, provides a way to change the bot's language- Create a system for adding new languages in the future
- PawaLite: Apply database migrations on startup
- Switch from using UUIDs to ULIDs
- PawaLite: Include binaries necessary for decoding OPUS
- Adding an alias twice in a row would result in an error and would break the alias
2.9.4 - 2021-04-19
- PawaLite: Will not leave voice channel when there's no voice activity.
2.9.3 - 2021-03-28
- PawaLite:
autorecord
command now works! status
command Mainly for debugging purposes and only accessible to me, this shows the status of the shardsignore
command Removes other bots from recording session- Add LibHoney dependency to track events, doesn't contain any user or guild data No tracking for PawaLite
- Show warning when attempting to use
autorecord
- PawaLite:
record
command now also takes an argument that allows caller to record a voice channel without being in it
- Open Graph meta tags now display proper information for links
2.9.2 - 2021-03-01
- Display a warning about saving recording
- Add Caching library to cache database requests for Guild prefix
- PawaLite: Recordings are uploaded using the following format
<voice-channel>-yyyyMMdd'T'HHmmss.SSSZ
e.g.bot-testing-20210302T182001.176-0800
2.9.1 - 2021-01-29
- PawaLite: Replace Embedded Postgres with H2
- This drastically reduces the package size (about 20MB)
- PawaLite: Keep
queue
files, might create congestion, but will make it easier to recover if needed
- PawaLite: No longer needed to exit with Ctrl-C
2.9.0 - 2021-01-18
- PawaLite configuration
- Remove recording limits and warnings