All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
0.4.2 - 2024-06-17
- Connection menu to allow disconnecting from servers without restarting the client
- Clarify default host/port arguments for
dumdum-server
- Limit client message cache to 1000 per channel
0.4.1 - 2024-04-04
- Write/close timeouts for asyncio client and server
- This should mitigate deadlocks caused by excessive backpressure on both sides of a connection.
- Buffer limits for client and server protocols
- This defaults to 1MiB, but can be customized or disabled via the
buffer_size=
parameter. Upon exceeding the protocol's buffer, thereceive_bytes()
method will raiseBufferOverflowError
indicating that the connection should be terminated.
- This defaults to 1MiB, but can be customized or disabled via the
0.4.0.post1 - 2024-03-30
This release updates the readme to start referring to our new PyPI distribution! 🎉
0.4.0 - 2024-03-30
- Write
.jsonl
client and server logs to a user log directory- Defaults to INFO logs and above, but can be set to DEBUG with
-vv
- Defaults to INFO logs and above, but can be set to DEBUG with
- Add user log directory to
dumdum appdirs
command
- Rename distribution package name to
dum-dum-irc
- Users of older versions must manually uninstall
dum-dum
beforehand, otherwise they may co-exist in the same environment and cause files to be overwritten.
- Users of older versions must manually uninstall
- Refactor
dumdum.server
into a packagemain()
is no longer exported, requiring thedumdum-server
console script to be changed. The package must be reinstalled for this change to apply, otherwisedumdum-server
will raise ImportError.- Move
dumdum.protocol.HighCommand
todumdum.server.ServerState
- Dumdum client improvements:
- Immediately wrap messages when switching between channels
- Show dedicated error message for unknown self-signed certificates
- Dumdum client not cleanly exiting when being keyboard interrupted
0.3.0 - 2024-03-24
Breaking changes were made to the protocol. Connections can now negotiate TLS encryption before proceeding with authentication via a new HELLO message type.
- New event/message types:
ClientEventHello
ClientMessageHello
ServerEventHello
ServerMessageHello
- New
dumdum-server --cert <CERT | CERT:KEY>
argument - New client GUI configuration options:
Use SSL
Certificate (Optional)
- Bump protocol version from
1
to2
- Re-enumerate
ClientMessageType
values:HELLO = 0
AUTHENTICATE = 2
SEND_MESSAGE = 3
LIST_CHANNELS = 4
LIST_MESSAGES = 5
- Re-enumerate
ServerMessageType
values:HELLO = 0
INCOMPATIBLE_VERSION = 1
AUTHENTICATE = 2
SEND_MESSAGE = 3
LIST_CHANNELS = 4
LIST_MESSAGES = 5
- Dumdum client improvements:
- Dynamically wrap message content for larger window sizes
- Automatically scroll message feed
ClientMessageAuthenticate.version
- This has been moved to
ClientMessageHello
- This has been moved to
- Resolve potential deadlock in client GUI when connection terminates before authentication is completed
0.2.1 - 2024-03-21
- Various visual tweaks to the Dumdum client
- Enable DPI awareness on Windows
- Show nicknames beside message content in a larger font
- Non-fatal
asyncio.CancelledError
when closing a server with connected clients
0.2.0 - 2024-03-20
Several breaking changes were made to the protocol and the Sans I/O protocol
implementation. Server
no longer takes a HighCommand
instance.
I/O wrappers will now have to manage their own user state and manually
send the channel list upon receiving the new event, ServerEventListChannels
.
Servers can now also send a list of messages to their clients,
usually after receiving ServerEventListMessages
.
- More test coverage of the protocol
Server.authenticate()
methodServer.list_channels()
methodServerEventListChannels
typeClientEventMessagesListed
typeClientMessageListMessages
typeServerEventListMessages
typeServerMessageListMessages
typeMessage
dataclass with ID field- Message cache to
HighCommand
Reader.read_bigint()
methodsnowflake.create_snowflake()
function
- Bump protocol version from
0
to1
- Rename
Client.REQUIRED_VERSION
toClient.PROTOCOL_VERSION
- Only accept channel name in
Server.send_message()
method - Replace
ServerMessagePost.channel
with.channel_name
- Replace
ServerEventMessageReceived.channel
with.channel_name
- Replace
ClientEventMessageReceived
fields with one message field - Replace
ServerMessagePost
fields with one message field - Replace
Server.send_message()
parameters with one message parameter
Server(hc=)
parameterServer.nick
attribute- I/O wrappers must store this
Server.close()
methodServerEventAuthentication.success
attribute
varchar.dumps()
permitting more data than is allowed bymax_length=
parameter- Non-fatal
TclError
when connecting to a server whose last selected channel has disappeared - Client GUI showing two error messages when authentication fails
0.1.3 - 2024-03-11
- SQLite database in user data directory for persisting settings
- Last selected channel per host/port
- Last address/port/nickname
- Added
dumdum appdirs
command to show the user data directory path
0.1.2 - 2024-03-10
- Usage section to README.md
- Non-fatal
asyncio.CancelledError
when closing client GUI - Non-fatal
tkinter.TclError
when GUI connects to server - Catch
KeyboardInterrupt
in server CLI
0.1.1 - 2024-03-09
- Summary of implementation and protocol in README.md
dumdum
anddumdum-server
console scripts
- Ignore unauthenticated users when broadcasting messages
0.1.0 - 2024-03-09
- Initial protocol implementation
- Authentication
- Nickname conflict prevention
- Channel listing
- Sending messages to channels
dumdum.server
asyncio server CLIdumdum.client
asyncio tkinter GUI client- GitHub workflows for pyright and pytest