2. changelog

2.1. 0.0.2

  • Log User object ID even when account is an admin

  • Log starting directory during initialization

  • Separate listening port in startup logging

  • Disable usedevelop for some tox testenvs

  • Correct reference to main config in walk-through

2.2. 0.0.1

  • Add info on what’s missing and included

  • Add a demo walk-through to the coder guide

  • Recommend the tox-venv plug-in

  • Link API documentation in the coder guide

  • Drop Python 3.4 and add 3.8

  • Update minimum PBR for setup_requires

  • Improve preferences display

  • Support abbreviating portal names when moving

  • Provide normal error if command raises exception

  • Safely log when a command error cannot be sent

  • Correct data type for see_also command facets

  • Show possible abbreviations in help list

  • Correct logged error for missing action function

  • Make command actions implicit

  • Dereference command action functions

  • Test the show result command

  • Correct a TypeError in the show time command

  • Always pass parameters in commands

  • Don’t allow abbreviating administrative commands

  • Show full command name in help output

  • Implicitly support abbreviating commands

  • Allow including time in the active state prompt

  • Escape replacement macros in preferences

  • Test that macros are escaped in communication

  • Use the active state prompt as the default prompt

  • Add a prompt generator method

  • Fix selftest telopt callback for Python 3.4

  • Use ISO 8601 time in logs

  • Test for high-severity vulnerabilities with bandit

  • Test with the bugbear plugin for flake8

  • Fix comparisons for pyflakes 2.1

  • Safely log unknown Telnet options and commands

  • Be explicit about test requirements in tox.ini

  • Switch to passlib.PasswordHash.hash

  • Add support for user preferences

  • Add 2019 to copyright for docs and license

  • Rename command.set to command.c_set

  • Support using tox-venv for testing

  • Rename debug testenv to demo and use sample config

  • Use yamllint –strict when called from tox

  • Move commands into a separate command module

  • Update admin command help for new data model

  • Alphabetize the `help show` subcommand entries

  • Don’t LBYL when creating missing data directories

  • Try to make missing pidfile and logfile parent dir

  • Update copyright dates for files changed in 2018

  • Add navigation links to Sphinx config

  • Reorganize Sphinx config

  • Clarify Python version support in README

  • Generalize copyright headers in files

  • Add AUTHORS file to wheel

  • Remove docutils dep in tox dist testenv

  • Switch to `twine check` in tox testenv:dist

  • Add debug logging for Telnet protocol negotiation

  • Expand logging for User class methods

  • Support clients using CR+NUL to signal EOL

  • Add a “debug” testenv

  • Streamline selftest output

  • Clean up leading space typo in test title

  • Drop Python 3.3 support

  • Add signed artifact URL to Python package metadata

  • Clean up tox.ini

  • Apply correct Python version in tox base envs

  • Test the default example config

  • Add py3 to the default tox env list

  • Run the selftest in base tox testenvs

  • Optionally manage a daemon during selftest runs

  • Resolve included files only once

  • Fix deprecated regex pattern syntax in selftests

  • Clean up at the end of every selftest run

  • Overhaul data reloading

  • Include “docs” in default tox envs list

  • Check readme suitability for PyPI

  • Rename “initial” state to “telopt_negotiation”

  • Test that ANSI input is filtered

  • Only wrap on actual spaces

  • Filter non-ASCII input when not in binary mode

  • Retool word wrapping

  • Include show version in help

  • Clean dist directory in tox dist environment

  • Add version command and diagnostic logging

  • Provide a dist environment for tox

  • Indicate Python3.7 support

  • Note platform in package metadata

  • Add keywords to Python package metadata

  • Include license info in Python packages

  • Update URLs in package metadata

  • Correct metadata entry for README

  • Clean build directory in tox docs environment

  • Update copyright year in LICENSE

  • Add copyright to api.rst

  • Add copyright to .yamllint

  • Add a docs tox env

  • Track doc building dependencies

  • Add Sphinx configuration

  • Include a documentation index

  • Include license text in documentation

  • Include generated changelog in docs

  • Basic API documentation

  • Include the mudpy logo

  • Add client configuration notes

  • Document the data model

  • Add configuration guide

  • Update coder guide for new site redirects

  • Standardize formatting for the coder guide

  • Switch to extensionless README and LICENSE files

  • Reformat README.rst

  • Test that unknown telnet commands are filtered

  • Fix TypeError with IAC escaping

  • Trim readme file

  • Update login and banner art

  • Test sample data style with yamllint

  • Indent block sequences in emitted files

  • Convert mappings and sequences from flow to block

  • Disconnect user on ConnectionResetError

  • Be careful about marking facets modified

  • Use “group” instead of “category”

  • Drop old-style Element support

  • Convert sample data to new style

  • Use new style for menu definitions

  • Convert command Elements to new-style

  • Switch archetypes to new-style Elements

  • Switch internal counters to new-style Element

  • Switch actors to new-style elements

  • Handle connection reset in selftest

  • Make new-style facet deletion more robust

  • Catch Exception when necessary

  • Clearer selftest errors on disconnection

  • Use new-style elements for accounts

  • Fix unhandled exception in show file command

  • Display flags in show files output

  • Clean up a stray comment in find_file

  • Add descriptions to sample datafiles

  • Move sample datafile copyrights into metadata

  • Data nodes starting with “_” are metadata

  • Interpret a “.” prefix as the startdir

  • Overhaul data management to get rid of __control__

  • Error if set command is used on read-only element

  • Refuse to alter read-only elements at runtime

  • Track whether loading is underway

  • Test the set command

  • Use writeable element in show element test

  • Update copyright dates for files changed this year

  • Rename internal:storage to .mudpy.filing

  • Stop unnecessarily stripping quote marks

  • Explicitly configure the root_path in examples

  • Log missing file inclusions as more severe

  • Fix file pathing in daemon mode

  • Rename internal:time to .mudpy.timing

  • Switch example listening port from 6669 to 4000

  • Fix facets method to give new-style relative names

  • Use importlib in place of imp

  • Reduce the log message priority for reload calls

  • Exercise the reload command in tests

  • Switch quoting styles to reduce escaped quotes

  • Use raw strings when escape sequences are needed

  • Correct name of the custom loglevel test

  • Handle ValueError when setting incorrect type

  • Coerce loglevel facet to int when updating

  • Clear vestigial ord() calls in telopt negotiation

  • Stop using vary_rounds with passlib

  • Guard against KeyError on universe.contents index

  • Enable initial admin account in example config

  • Ignore unpacked *.egg directories

  • Modernize coder documentation

  • Add a generic tox env for sdist generation et al

  • Add a suitable test config for the daemon

  • Package the self-test script as an entrypoint

  • Correct filesystem permissions on daemon module

  • Make the self-test script importable

  • Add missing copyright/license notices

  • Support running flake8 under tox

  • Package the daemon executable as an entrypoint

  • Make the executable importable

  • Create a Python package

  • Appease style checks

  • Clean up trailing whitespace in documentation

  • Move documentation files for packaging preparation

  • Move lib/mudpy to mudpy for packaging preparation

  • Rename internal:process to .mudpy.process

  • Rename internal:network to .mudpy.network

  • Rename internal:directions to .mudpy.movement.*

  • Rename internal:logging: to .mudpy.log

  • Update README for recent development

  • Rename internal:limits element to .mudpy.limit

  • Strip extra separators in show element command

  • Fix 8-bit Telnet with Py3K

  • Rename internal:language: to .mudpy.linguistic

  • Implement new style element support

  • Test the show element command

  • Simplify multiline matching in functional tests

  • Fix show element command for Py3K

  • Make escape_macros no-op on nontext values

  • Check that functional tests log no errors

  • Test that the show log command works

  • Fix show log command for Py3K

  • Fix recursive BrokenPipeException on disconnect

  • Switch basic data loader unit from element to node

  • Explicitly invoke Python 3.x in shebang lines

  • Test admin account restrictions

  • More thorough match on chat mode test

  • Test actor movement

  • Mention test session capture log file names

  • Add timing data to test output

  • Test chat mode

  • Add troubleshooting note to test failure output

  • Break outer loop of functional tests on failure

  • Be more explicit with periods in test matches

  • Modularize functional testing

  • Test sentence capitalization

  • Test typo replacements

  • Test implicit punctuation

  • Read pending bytes before proceeding with test

  • Fix punctuation match order and add tests

  • Test interaction between multiple connections

  • Lay groundwork for more thorough functional tests

  • Switch to yaml.safe_load for better security

  • Be more strict about file permission masks

  • Accumulate logs if necessary while loading data

  • Remove stray non-generic references in sample data

  • Switch password handler to passlib’s PBKDF2

  • Write files directly from yaml.dump

  • Remove UTF-8 encoding header from Python files

  • Fix type mismatches in save file rotation

  • Correct avatar inheritance

  • Log missing avatars

  • Accumulate logs during setup

  • Add a .gitignore file

  • Finalize INI to YAML conversion

  • Remove the git2gch utility

  • Clean up parenthetical spacing in bin/mudpy

  • Mark unused import false positives

  • Convert sample data directory index to YAML

  • Support data directory indices in YAML

  • Convert sample prop data file to YAML

  • File read-only check supports YAML

  • Convert sample area data file to YAML

  • Don’t unnecessarily recast lists and dicts

  • Initialize data file contents on creation

  • Convert menu data file to YAML

  • Catch exceptions in YAML menus

  • Convert command data file to YAML

  • Convert archetype data file to YAML

  • Begin the transition from INI to YAML

  • Correct stray use of location

  • Clean up rendering in coder documentation

  • Use area instead of location or room

  • Simplify coder documentation

  • Make exception logging failures more robust

  • Be explicit when show result raises an exception

  • Tighten exceptions for new sockets and reads

  • Fix log spamming on premature socket disconnect

  • Stop trying to rename the daemon process

  • Wrap long lines without using backslashes

  • Clean up docstrings

  • Fix reload to use a copy of datafile keys

  • Remove unused event code

  • Correct copyright date for changelog

  • Drop support for Python 2.x

  • Clean up imports

  • Fix an incorrect TODO comment line

  • Recast to unicode when normalizing on Python 2.x

  • Byte type comparisons on the output queue

  • Import a correct configparser for the interpreter

  • Correct byte types and encoding in test script

  • Use chr instead of unichr

  • Use bytes in process table manipulation

  • Use byte type for passwords hash encoding

  • Handle byte type on sockets

  • Use new 0o notation for octal constants

  • The reload function is in the imp module

  • Use int type instead of long

  • Correct copyright years for change log

  • Recast filters when comparing

  • Work around lack of dict_keys index in catch-all

  • Work around lack of dict_keys index in data loader

  • Use range instead of xrange

  • Use absolute imports in telnet service module

  • Use absolute imports in catch-all module

  • Use absolute imports in data handler module

  • Use absolute imports in package init module

  • Use strings not unicode in telnet service module

  • Use strings not unicode in password module

  • Use strings not unicode in catch-all module

  • Use strings not unicode in data handler module

  • Use strings not unicode in package init module

  • Use strings not unicode in functional test script

  • Use strings not unicode in daemon executable

  • Use strings not unicode in changelog generator

  • Additional style cleanup

  • PEP 8 conformance for package init library

  • PEP 8 conformance for monolithic library

  • PEP 8 conformance for password management library

  • PEP 8 conformance for telnet server library

  • PEP 8 conformance for data handling library

  • PEP 8 conformance for daemon executable script

  • PEP 8 conformance for ChangeLog writer script

  • PEP 8 conformance for test script

  • Back end data storage separation

  • Inline literals are more readable in source form

  • ASCII Scrub

  • Correcting docstring format

  • Correcting minor docstring typos

  • Secure, extensible, forward-compatable passwords

  • Reformatted README for 72 columns

  • Change README for new on-line documentation link

  • New coder guide document

  • Script to generate ChangeLog file from commit log

  • Regression testing script

  • Cosmetic adjustment to disconnect message

  • Proper RFC 1143 Telnet option negotiation queue

  • Clarification in README file

  • New top-level README file

  • Reformat license

  • Annual copyright update

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive