Changelog

Releases which require special upgrade steps will be marked with a link to instructions.

Changes for upcoming releases will be listed without a release date - these are available by installing the development branch from github (see Installation for details).

Changelog

2.1.1, 2024-05-19

Changes:

  • Moved telnetlib3 and aiohttp from optional extras to required dependencies to match documentation

2.1.0, 2024-05-18

Features:

  • Added SSL/TLS support to socket server

  • Added support for HTTP and websockets using aiohttp

  • Added support for @server.on for easier event filtering to a server

Internal:

  • Moved mara.clients to mara.server.connections

  • Renamed *Client classes to *Connection

  • Changed server.clients to server.connections

  • Changed ClientEvent.client to ConnectionEvent.connection

Bugfixes:

  • Fixed issue with multiple telnet servers

2.0.0, 2022-11-18

Features:

  • Moved to an asyncio loop

  • Added support for multiple servers

  • Telnet support using telnetlib3

Known issues:

  • Removed contrib modules - will return as a separate package

  • Angel is not implemented yet

Mara 0.6.3 was the last release of version 1 of Mara. Although Version 2 has a similar API, it is a complete rewrite and most user code will need to be updated and refactored.

The key differences are:

  • mara.Service is now mara.App, and now uses asyncio.

  • Servers must be defined and added using add_server

  • Event handlers need to be async. Handler classes have been removed. To capture user data a handler must await event.client.read() instead of calling yield.

  • Timers are now defined as instances.

  • All contrib modules have been removed in version 2. These will be brought back as a separate package.

  • Version 2.0.0 is missing the angel, mara command, and telnet support. These are planned for a future version.

0.7.0, Not released

Feature:

  • Added Protocol to Client

Changes:

  • Client no longer supports telnet by default; must be initialised with the

  • Styles refactored to support different renderers

  • Setting client_buffer_size is now recv_buffer_size and send_buffer_size

  • Flash policy server has been removed

0.6.3, 2018-10-06

Feature:

  • Added Python 3.6 support

Bugfix

  • Corrected packaging

Note: tests are no longer performed for Python 3.2 or 3.3 as they are EOL

0.6.2, 2017-07-25

Bugfix:

  • Corrected docs

  • Corrected manifest

0.6.1, 2016-10-20

Bugfix:

  • Improved password hashing algorithm (merges #5)

  • Fixed empty password handling (merges #6)

Internal:

  • Improved support for custom password hashing algorithms, with support for passwords stored using old algorithms

Thanks to:

  • Marcos Marado (marado) for #5 and #6

0.6.0, 2015-12-20

Feature:

  • Python 3 support (3.2, 3.3, 3.4 and 3.5)

  • Unicode support

Changed:

  • Changed write to accept newline=False kwarg, to control whether the line ends with a newline when the socket is not in raw mode

  • Example echo service now runs in raw mode

  • The command registry can now unregister commands

Internal:

  • Added angel.stop() to terminate angel from threads

  • Fixed angel’s start delay reset when starting a service without a saved state

0.5.0, 2015-12-13

Feature:

  • Added class-based event handlers, with support for use as command functions

  • Added room support

  • Added YAML-based store instantiation

  • Added command aliases

  • Refactored user-related commands from talker example

  • Simplified social command definition and generation

  • Added styles

Removed:

  • Replaced ClientSerialiser with improved Field serialiser

  • Replaced StoreField with improved Field serialiser

  • Removed socials import from contrib.commands, so the code is now only loaded if you specifically want it

Internal:

  • Added client containers

  • Added active to the list of reserved store field names

  • Changed test root dir to examples

0.4.0, 2015-11-21

Feature:

  • Renamed project

  • Added angel to support seamless restarts

Internal:

  • Added root_path setting for more reliable relative paths

0.3.0, 2015-02-16

Feature:

  • Restructured from plugin-based command to framework

0.2.1, 2012-01-20

Feature:

  • Extra commands in plugins

Internal:

  • Better command error handling - now piped to users

  • Plugins now private namespaces with shared dict ‘publics’

0.2.0, 2012-01-18

Feature:

  • Added telnet negotiation

  • Added socials

Internal:

  • Added support for different newline types

  • Split User into User and Client objects

  • Added argument parsing to Command object

0.1.1, 2012-01-16

Internal:

  • Rearranged plugin files to improve clarity

  • Internal: Plugin lists

0.1.0, 2012-01-15

Feature:

  • Events, plugins

  • IRC- and MUD-style chat

Internal:

  • Moved all non-core code into plugins

0.0.1, 2012-01-13

Feature:

  • Initial release of new version in Python