# 1.8.0

- IMPORTANT: Complete new command system
- IMPORTANT: Much more code modularity
- NEW: Added password hashing (#24, #40, #41, #42)
- NEW: Added a complete new login system, which fixed security issue #42
- NEW: Added memberlist command with beatiful representation of registered members and their roles
- NEW: Added direct messages to send private/direct messages to members, instead sending it to everyone
- NEW: Added message counter
- NEW: Added online member count to memberlist
- NEW: Added stbchat plus user badge
- NEW: Added account creation date to user profile
- NEW: Added "Member since" to user profile
- NEW: Added many new commands to help section
- NEW: Added dm activation and disactivation
- NEW: Added strawberry badge
- NEW: Added online/offline/afk status to user profile command
- NEW: Added isOnline func to userinfo + changed string
- NEW: Added strawberry id connection to user profile
- NEW: Added reworked kick command
- NEW: Added changelog command
- NEW: Added user mentioning (If you mention a user (e.g. @someuser), it will be highlighted)
- NEW: Added variable source file for modularity
- NEW: Added automatic user id allocation
- NEW: Added functions source file for modularity
- NEW: Added user creation date to user profile
- NEW: Added Hashtag Placeholder Format Support (HTPF) for chat messages and broadcast command, to send colorized messages or the current time (e.g. #today or #red)
- NEW: Added an (unstable) Bard chat bot
- NEW: Added that bots will no longer be affected of stripping new lines
- NEW: Added custom database wrapper (currently in development)
- NEW: Added Feature/Edition Key for better User Experience
- NEW: Added username changing feature
- NEW: Added password changing feature
- NEW: Added settings command for easier management of user flags (#27)
- NEW: Added server command input, for example updating the server or getting information about the server
- NEW: Removed time class and time functions
- NEW: Removed command alias "/userinfo"
- NEW: Updated /user command so it can now be used without argument to show your user profile
- NEW: Applied repl_htpf function to broadcast command
- NEW: The response url for getting versions from the stbapi will now be the url from src.vars
- NEW: Improved user register system

- MODULARITY: Moved escape_ansi function to functions source file
- MODULARITY: Moved help sections to vars source file
- MODULARITY: Added repl_htpf to replace placeholders from the Hashtag Placeholders Format
- MODULARITY: Removed regen database code "procedure" and created function for database regeneration in functions source file
- MODULARITY: Added init.py file for very specificed "init things"
- MODULARITY: Moved "some" online mode functions so separate file (src/online.py)
- MODULARITY: Added broadcast_all function to functions.py for using the broadcast function in commands
- MODULARITY: Moved afks variable to init
- MODULARITY: Moved users variable to init.py
- MODULARITY: Moved many functions from server.py to src/functions.py
- MODULARITY: Separated clientRegister function from the clientLogin function

- FIX: Fixed wrong time/date formatting for file logging (!!!)
- FIX: Fixed duplicated code which led to formatting errors
- FIX: Fixed wrong formatting with carriage return usage in custom clients
- FIX: sqlite3.ProgrammingError: Recursive use of cursors not allowed + fixed illegal rule of multiple reusing c
- FIX: Removed duplicated cursor creation and db variable assignment
- FIX: re-definition of global db variable now at the top of the clientThread function
- FIX: Removed duplicate import (os & os.path.exists)
- FIX: Fixed closing database when registering a new user
- FIX: Forgot to add to_kick.close() to close the connection between server and client (from kicked client)
- FIX: Fixed memberlist command when offline mode is disabled
- FIX: Fixed illegal ansi usage in dm command (message)
- FIX: Fixed sending dm message to non-existent user
- FIX: Fixed using forbidden \n in message with custom clients
- FIX: Fixed not escaping ansi + stripping \n when logging messages to console
- FIX: Fixed correct arrangement of log messages when leaving the chat
- FIX: Fixed wrong user id allocation (allocated new user id to message count)
- FIX: Fixed showing badges when you dont have badges in user command (displays buggy "None")
- FIX: Fixed allowing ansi escape codes and \n while logging in
- FIX: Fixed not saving log file to server directory when executing server from another directory

- SCAPI: Fixed bug for receiving raw messages (hidden ansi chars)
- SCAPI: Added get_username_by_msg function 
- SCPAI: Rework of command system, now with decorators
- SCAPI: Fixed printing "Message could not be sent" when exiting/stopping the bot
- SCAPI: Unimported readline because it makes problems

- OPTIMIZATION: Removed example database, because the server will now create the database when the database does not exist
- OPTIMIZATION: Moved table_query to top, added new sys argument to regenerate the database
- OPTIMIZATION: Correct names for the database variables
- OPTIMIZATION: Created separate variables for help messages at the top of the code
- OPTIMIZATION: reodered some commands in the code
- OPTIMIZATION: Removed duplicate of code piece (userRoleColor)
- OPTIMIZATION: Test mode will now only be 10 seconds (better for GitHub Actions)

- UPDATE: Updated important information header of server.py file
- UPDATE: Registration updated; will now set msg_count to 0 when registering

- API: Added function to get IP
- API: Added new url endpoint to get versions from our products (e.g. strawberry-chat server/client, ...)