Releases: No767/Kumiko
v0.5.0
✨ Kumiko v0.5.0 ✨
This release focuses just on major backend performances, and rewrites of the core to use Tortoise ORM instead of SQLAlchemy ORM. This update also basically fully rewrites almost all of Kumiko's core features to using Redis caching.
Note that Kumiko will undergo major backend changes, and this release is known to be quite unstable and has not been tested. v0.6 is a full rewrite of the core backend
💥 Breaking Changes 💥
- Dropped support for Alpine-based images and
-alpine
tags. This means v0.4.x will be the last supported version to have Alpine Linux as a base. Debian 11 will now be the new base. See this gist for more info. - Removed MongoDB for Kumiko. The new marketplace system will use PostgreSQL instead. This is done in order to correctly map relations with users, and to merge that feature into using PostgreSQL over MongoDB.
✨ TD;LR
- Migrate from SQLAlchemy ORM to Tortoise ORM
- Kumiko's custom caching library (w/ coredis)
- Removal of old cogs, and old code
- Unit tests
🛠️ Changes
- Subclass Kumiko instead of creating the instance from
discord.Bot
- Replace SQLAlchemy with Tortoise ORM
- Cache GWS Profiles, invs, etc
- Optimize GWS pull command
- Update Python constraints (>=3.8,<4.0)
- Upgrade PostgreSQL Dockerfile versions to 15
- Use Ormsgpack for MessagePack serialization
- Rewrite
contributing.md
and docs to further clarify topics. - Switch to using Python 3.11 for Dockerfiles, and officially support Python 3.11 for Kumiko
- Moved all checkers into tasks
- Rewrite Admin Logs to use Tortoise ORM
- Include caching with Admin Logs
- Rewrite the economy system for the 3rd time in a row
- Ensure that the DB connection is first instantiated when Kumiko starts up
- Export some Tortoise ORM models to Pydantic models for easier serialization and caching
- Use ciso8601 for parsing ISO-8601 datetimes
- Add voice support libs for Dockerfile
- Caching for Marketplace, User profile, and User Inv
✨ Additions
- Kumiko's custom caching library (w/ coredis)
- New delete interface for GWS inv
- MessagePack serialization for Redis
- Vagrant Support
- IPC Support with better-ipc
- Server configs
- Warn command
- Server Configs (with Server Join Handlers)
- Completely rewritten economy system using Tortoise ORM, and with proper SQL and 3nf complaint relations.
- New caching system for Kumiko's economy using Redis
- Use aerich for migrations, and initializing db tables
- Small datetime util to help figure out whether the given datetime is a ISO-8601 datetime or not
- Reconnect/retry logic for DB connections (for PostgreSQL)
- Internal memory cache for Redis connection pools
- Full GWS rewrite
- Finally add unit tests, and code coverage
- Recursive cog loading
- ConnPool system for Redis
➖ Removals
- SQLAlchemy ORM code
- Old SQLAlchemy-based GWSs
- Old GWS Purge Inv View
- Old Library packages (GWS, Admin Logs, Eco)
- Old Economy V2 code
- Remove Jisho, Twitter, and MCSrvStats integration
- Auction House
- Admin Logs
v0.4.0
✨ Kumiko v0.4.0 ✨
This update brings a ton of new things, and a complete overhaul from what things used to be in v0.3.0
. With this update, we have reached over 2000 commits for Kumiko, and merges all commits from upstream Rin v2.2.x. With a stable codebase for the economy system, tons of new features and critical improvements, Kumiko has never been better. In fact, this release of Kumiko fixes almost everything that v0.3.0
had wrong. And for any commits that happened from this release (v0.4.0) to the previous release (v0.3.0), here's the commit difference link: v0.3.0...v0.4.0
. For details for upstream changes from Rin, please refer to the links below (latest point release):
- Rin v2.2.8: https://github.com/No767/Rin/releases/tag/v2.2.8
✨ TD;LR
A ton of new features, including:
- Kumiko's Quests System
- Genshin-based Wish Sim (GWS)
- Kumiko's Auction House
- Basic Admin Commands
- Admin Logs System
And some backend changes w/ Docker support:
- Switch to a Dockerfile system based off of
tini
andalpine
instead of PM2 (Credits for @TheSilkky for developing the Alpine Dockerfile) - Deploy both Alpine and Debian-based Dockerfiles
- Automatic DB schema creator (called the "seeder")
- Improved Docker Compose support + Standalone support
- Docker Compose version bumps w/ Postgres, MongoDB and Redis
🔥 Breaking Changes
- Switched from Pipenv to Poetry
- Remove support for prefixed commands
- Remove legacy help cog
- Remove the use of RabbitMQ
🛠️ Changes
- Swap from SQLAlchemy Core to SQLAlchemy ORM
- Rename the currency from coins to Lavender Petals
- Standardize all datetime as ISO-8601 for all timestamps
- Charge initial fee for selling items on the marketplace
- Audit all service commands from Rin
- Require all DB Coroutines to include URI argument for URI Connection Strings
- Migrate from Env Variables to URI Connection Strings for Marketplace
- Allow for ext envs to be passed through for Docker deployment
- Fix Postgres-Init script (#144)
- Include improvements for Reddit + Waifu cog from Reina
- Use
discord.Member
for avatar cmds inputs instead of usingstr
- Make Debian now the latest
edge
tag - Require input type to be
discord.Member
instead ofstr
in UwU cog - Swap from
github.repository_owner
togithub.actor
to fix GHCR build workflows - Display Pycord version w/ bot info command
- Optimize Dynamic Cog Loader
- Update Docs
- Don't
echo
database schema creations w/ SQLAlchemy - Improved Docker Compose setup (literally just download some stuff, set up the env file, and run)
- Append
eco
to all economy commands - Provide a general exception embed for admin commands
- Completely redid Help command
- Organize Cogs into different directories determined by if the cogs came from Rin or Kumiko
- Display what bot user is being logged into
- Merged all PostgreSQL DBs into one (instead of having them separated)
- Updated
ws_data.sql
andws_data.csv
files - Condensed all Dockerfiles into one main directory
- Move all of the packages into a
Libs
folder within theBot
folder (this is to clean things up) - Condensed down the
/eco-quests view
commands into one command - Change to use general versions for Python Dockerfiles
- Move all of the views into a separate package (
kumiko_ui_components
) - Use views and modals for updating, deleting, and creating quests
- Use views and modals for deleting inventory items for GWS
- Defer the interaction for gws wishes
- Raise the max amount of wishes for the multiple wish to 10
- Use Modals for updating, deleting and creating items in the Marketplace
- Move the models into a separate file and rename models
- Completely optimized a ton of backend stuff with the Marketplace
- Use
discord.utils.utcnow()
instead ofdatetime.utcnow()
for most creation timestamps - Merged all Docker Build workflows into one workflow
- All
edge
tags will be based on Debian 11 instead of Alpine 3.16 - Use Modals for adding, and deleting items from the Auction House
- Selections and bids will be now stored on Redis instead
- Use coredis as the redis client instead of asyncio_redis
- Completely revamp Kumiko's purchasing command and system for the Marketplace
- Use Python 3.10.8 as the default
- If the user profile for GWS isn't there, the wish commands will generate a new one for that user
✨ Additions
- Kumiko's Quests System
- Genshin-based Wish Sim (GWS)
- Kumiko's Auction House (Uses Redis)
- Docker Compose Example + ENV Examples
- Docker Compose Support
- Alpine + Debian Dockerfiles w/
tini
for running Kumiko - Redis for selecting and caching
- Basic Admin Commands
- UwU Commands
- Avatar fetcher commands (#109)
- AH Checker + Quests Checker Cogs
- Add marketplace listing cooldowns
- Basic info commands
- Use Dynamic Cog Loader instead of loading cogs from a list
- Add new self-host guide
- Automatic DB schema creator (called the "seeder")
- Database init scripts for Docker Compose
setup.sh
andstandalone-setup.sh
for both Docker Compose setups and standalone setupswait-for
script within Docker Compose (to wait until PostgreSQL and Redis start accepting connections)- Custom PostgreSQL docker image for Docker Compose
- Admin Logs
- New Help Command
POSTGRES_KUMIKO_DB
env var forstart.sh
- Class descriptions for all cogs
- Use views and modals for updating, deleting, and creating quests
- Use views and modals for deleting inventory items for GWS
- Use Modals for updating, deleting and creating items in the Marketplace
➖ Removals
- Deprecated code using SQLAlchemy Core instead of SQLAlchemy ORM
- DeviantArt Cog (from Rin)
- More old libs
- QRCode Maker Cog
- GWS Banner Commands
- Arch + Ubuntu Dockerfile
kumikoinfo.py
Cogkumikoping.py
Cogkumiko-platform.py
Cog- Unload
advice.py
,blue-alliance.py
,discord-bots.py
,first-frc-events.py
,hypixel.py
,spiget.py
,top-gg.py
, andtwitch.py
Cogs (this is due to the new help system only allowing up to 25 options, and therefore only 25 categories can be shown) - Remove
BLUE_ALLIANCE_API_KEY
,DISCORD_BOTS_API_KEY
,FIRST_EVENTS_FINAL_KEY
,HYPIXEL_API_KEY
,TOP_GG_API_KEY
,TWITCH_API_ACCESS_TOKEN
,TWITCH_API_CLIENT_ID
env vars fromstart.sh
and.env-docker-example
- Remove
POSTGRES_ECO_USERS_DB
,POSTGRES_WS_DB
,POSTGRES_AH_DB
,POSTGRES_QUESTS_DB
, andPOSTGRES_AL_DB
env vars fromstart.sh
and.env-docker-example
- Remove old
exceptions package
- Remove old
WS-Data
folder - Remove unloaded cogs and moved them to a different repo
/eco-quests view ...
commands- Datetime Timeout command
/eco-quests reward
command (too unbalanced and can be easily abused)- Removed unused coroutines in the
eco_main.py
file - Remove Marketplace filters
- RabbitMQ Consumer
- RabbitMQ within Docker Compose and requirements
- AH RabbitMQ Bidder
asyncio_redis
packageaiormq
packageccharet
package- Unused coroutines (this is to reduce the amount of code that Kumiko ships with)
v0.3.0
✨ Kumiko v0.3.0 ✨
This update focuses on Kumiko's Economy system (which was completely rebuilt from the ground up), and upstream commits from Rin v1.4.x, v2.0.x, v2.1.x and dev branch. This update together is probably literally 500+ commits more than Kumiko v0.2.0. For details for upstream changes from Rin, please refer to the following links (latest point releases):
- Rin v1.4.4: https://github.com/No767/Rin/releases/tag/v1.4.4
- Rin v2.0.2: https://github.com/No767/Rin/releases/tag/v2.0.2
- Rin v2.1.0: https://github.com/No767/Rin/releases/tag/v2.1.0
TD;LR
- Rebuilt Kumiko's Economy system from the ground up
- All upstream commits from Rin v1.4.x, v2.0.x, v2.1.x and dev branch
- Migrate all commands to slash commands
Changes
- Rebuilt Kumiko's Economy system from the ground up.
- Switch to using Rin-Exceptions package from PyPi
- Use PM2 for process management (from upstream Rin)
- Require all new items being stored to contain an UUID
- Finished user inv + transaction system
- Full proper exception handling for all commands (including eco commands)
- Search User's ID for Inv Method instead
- Organize eco commands into groups
- Include User signup
- Attempt to redo ban + pronoun cogs
- Use pre-commit hooks instead of format workflow
- Upgrade all Python versions in workflows to 3.10.5
- Bump Node.js to 16.15.1 and Python to 3.10.5 in Kumiko's Dockerfile
- Make sure that the fields for the user inv are correct and set
- Moved User inv from MongoDB to PostgreSQL
- Deploy Kumiko's Docs + contributing guide changes
Additions
- The full rebuild of the economy system
- economy_utils package (used by the economy system)
- Beg command
- Add Task template on GitHub Issues
- Add timeouts to eco-init buttons
- Add user transaction command
- Add command to search via UUID
- Include commands to be able to add items, and remove items from the marketplace
- Add platform cog
- Proper docstrings for all economy_utils coroutines
- Add Regex filters when creating marketplace items
Removals
- Chat, Global, DisQuest, and many many other cogs
- All of the old patches (never worked anyways)
- Old economy files
- Exceptions package (use Rin-Exceptions package from PyPi instead)
- Format workflow
- Arch-Docker Dockerfile
- Removed Unused and unneeded coroutines
v0.2.0
Note that this release of Kumiko is coincided with Rin v1.4.0-dev
TD;LR
- Replace Asyncio with Uvloop (Faster performance)
- Add the beginnings of the economy system
Changes
- Make Reddit Cog Completely Async (This should finally speed up performance)
- Make Waifu-Generator Cog Async
- Use lxml for parsing HTML data instead of the default html parser
- Kinda finished the MangaDex Cog (still need to work on the reader)
- Replace Asyncio with Uvloop (Massive performance gains)
- Rewrite DisQuest to handle methods and queries asynchronously
- Adjust methods for DeviantArt Token Refresher to be async
- Rewrite Pinterest Cog to be Async
- Add Bonk Cmd
- Add Economy System (the base of the economy system)
- Move Formatters to dev-dependencies section within Pipfile
- Require DeviantArt Token Refresher to handle DB connections and queries asynchronously
- Phase out Ujson as the main JSON parser
- Bump Pillow to 9.0.0 to avoid security vulnerabilities
Additions
- Tenor API Support
- Uvloop
- Uptime Cmd
- Mangadex API Support
Removals
- As always, more unused libs
- Ujson
v0.1.0
This is only an alpha release. The source code is stable and updated to match the commits that Rin has. The changes below are marked for Rin v1.3.0
TD;LR
- MangaDex API Support (Experimental)
- Fix DeviantArt Token Refresher Cog
Changes
- Updated Translate Cog to work now
- Use PyCord instead of Discord.py
- Officially once and for all, the DeviantArt Token Refresher Cog is working. (Done through SQLAlchemy instead)
- Bump to Python 3.10.1
- Fix Snyk workflow secrets issue
- Make McSrvStat and MangaDex async to improve performance
- Updated Upstream (Rin)
- Bump lxml from 4.6.4 to 4.6.5 to fix a massive security vulnerability
Additions
- MangaDex API Support (This time all of it is completely asynchronous and http requests handled by AIOHTTP instead. This should make getting the images a lot faster)
- Use PyCord instead
- Codeowners (For faster code review if needed)
Removals
- Disabled missing commands handler (for discords.com verfication)
- EasyBot.py and EasyBot-Plugins submodule
- Discord.py (Discord.py is not maintained anymore)
- Docker Workflow